Да, будет.
Вид для печати
У меня пара вопросов.
1. Использование этой библотеки ускорит обмен данными? Как я понял часто ссылаются что при использовании конфигурации ПЛК работает медленно, и что нужно использовать код, что бы ускорить работу. Или это каксается только мастера? У меня примерно 200 регистров всего но скорость с заметным запозданием.
2. Разумно будет вынести работу этой бибилиотеки в отдельную программу и подуключить ее отедльно в задачу по отдельному циклу? У меня все передаваемые переменные все равно глобальные.
3. Уберет ли эта библиотека ограничение по памяти L или M? Как я понял ограничение именно на окличество регистров в конфигурации, а если их передавать библиотекой то ограничения нет. Правильно?
Добрый день!
Скорость обмена по Modbus зависит (в порядке уменьшения влияния):
1) Время передачи запроса\ответа
Зависит от скорости обмена. Чем выше скорость - тем быстрее идет опрос.
Выбранная скорость должна поддерживаться во всех устройствах сети.
Приборы ОВЕН поддерживают скорости от 9600 до 115200 бод.
2) Количество запросов на устройство.
Предпочтительнее опрашивать все необходимые регистры групповым запросом, чем по одному регистру за раз.
3) Таймаут ожидания ответа (сколько времени ПЛК ждет ответа от модуля до того, как посчитает, что модуль не ответил);
При хорошем качестве сети
3.1) для скорости обмена 9600 бод стоит задавать не менее 500мс
3.2) для скорости обмена 115200 бод стоит задавать не менее 50мс
4) Время между фреймами
Пауза между получением ответа на предыдущий запрос и отправкой следующего
Перепроверьте, возможно Вам стоит поднять скорость обмена или объединить единичные запросы в групповой.
Поскольку в CODESYS 2.3 многозадачность невытесняющая (задачи выполняются последовательно) то особого смысла в этом нет.
Более подробно о задачах, приоритетах и порядке их выполнения в CODESYS 2.3 можно почитать в справке.
К сожалению у меня только англоязычная версия установлена, поэтому выдержка на английском:
Скрытый текст:
Да, лицензия ограничивает объем памяти ввода\вывода и не распространяется на обмен из кода программы.
Спасибо за ответы. Я наверно не правильно выразился. Да я понимаю что влияет на скорость обмена. Вопрос был по скорости работы самого ПЛК. Есть темы которые говорят что ПЛК медленно читает данные или передает, и поддержка ОВЕН советует делать опросы из кода а не через конфигурацию и ссылаются что конфигурация работает медленне. То есть речь идет не о самой скорости передачи данных, а о скорости работы ПЛК. Видимо обработка данных занимает больше времени если это конфигурация.
Эта рекомендация относится только к Modbus-Master'у. Т.к. ПЛК (при настройке обмена через конфигурацию) не умеет отправлять групповые запросы.
Поэтому время опроса всех регистров (не скорость работы ПЛК) больше по сравнению с обменом через библиотеки (библиотеки умеют работать с групповыми запросами).
прошу прощения за возможный офф-топ.
А есть или были ли попытки сделать на TCP/IP?
Добрый день.
Сейчас работа в режиме Modbus TCP Slave в наших ПЛК поддержана только через конфигурацию.
Библиотека для работы в этом режиме в CODESYS 2.3 пока что не планируется.
На форуме можно найти библиотеки, реализованные другими пользователями, возможно они подойдут. Но их придется поискать.
Написал в личку, дублирую сюда.
Панель СП310 мастер отправляет скриптом:
void send() {
WORD setpoints[3];
setpoints[0]=PSW[500];
setpoints[1]=PSW[501];
setpoints[2]=PSW[502];
Writes(PLC, 1, MODBUS_RTU_REGS_4X, 0, 3, setpoints);
}
ПЛК154 принимает(через конфигуратор все ОК), через библиотеку корректно не работает, вот код:
TYPE SLAVE_DATA :
STRUCT
v1: WORD;
v2: WORD;
v3: WORD;
END_STRUCT
END_TYPE
PROGRAM PLC_PRG
VAR
stComSettings: COMSETTINGS;
stSlaveData: SLAVE_DATA;
fbRtuSlave: MB_RTU_SLAVE;
END_VAR
stComSettings.Port := 4;
stComSettings.dwBaudRate := 115200;
stComSettings.byParity := 0;
stComSettings.byStopBits := 0;
fbRtuSlave(xEnable := TRUE, stComSettings := stComSettings, usiSlaveAddress:= 1, pSlaveBuffer := ADR(stSlaveData), uiSlaveBufferSize := SIZEOF(stSlaveData));
Сначала проверьте через библиотеку читает панель данные с ПЛК или нет. Потом пробуйте писать.