Не активен флаг xNewRequest блока MB_SerialSlave при прослушке сети Modbus RTU.
Господа, помогите разобраться в вопросе. Есть два устройства Овен ПЛК100 K.L (Slave) и панель Овен ИП320 (Master), общающиеся по сети Modbus RTU. Естественно никаких исходников программ на них нет.
Прослушал сниффером сеть, подобрал настройки (скорость, четность, все дела).
Интересующие меня данные имеют вид:
Tx: 02 03 00 1E 00 02 A4 3E
Rx: 02 03 04 F8 2F 00 04 C8 59
Если подключаюсь взамен панели ИП320 ноутбуком с MasterOPC, то все прекрасно работает, качество связи хорошее, пакеты не теряются, контрольные суммы все корректные.
Пробую к этой же сети, подключить панель СПК110 и настроить один ее порт для постоянной прослушки общения ПЛК100 и ИП320.
Пример кода:
Код:
PROGRAM PLC_PRG
VAR
fbComControl: OCL.COM_Control;
fbMbSerialSlave: OCL.MB_SerialSlave;
awSlaveData: ARRAY [0..15] OF WORD;
awSpyData: ARRAY [0..10] OF WORD;
awNeedData: ARRAY [0..10] OF WORD;
IF fbMbSerialSlave.xNewRequest THEN
xNewRequestCounter := xNewRequestCounter + 1;
IF fbMbSerialSlave.stRequestInfo.usiSlaveId = 2 AND
fbMbSerialSlave.stRequestInfo.eFuncCode = OCL.MB_FC.READ_HOLDING_REGISTERS AND
fbMbSerialSlave.stRequestInfo.uiDataAddr = 16#1E
THEN
После запуска приложения флаг xNewRequest не взводится, так и остается равным FALSE. А точнее, в пяти процентах случаев, он пару раз взводится и зависает - счетчик xNewRequestCounter показывает 2.
Но если я подключаюсь еще и ноутбуком с MasterOPC в ту же сеть (то есть в сети находятся четыре устройства: ПЛК100, ИП320, СПК110 и ноутбук), то есть в сети получается два мастера, то счетчик xNewRequestCounter начинает работать. В сети при этом естественно появляются коллизии, но сам факт интересный.
Что пробовал делать:
1) Менял fbMbSerialSlave.usiSlaveIdна 1, 2, 255, произвольное значение.
2) Менять местами провода A и B.
3) Изменять размеры буферов awSpyData и awSlaveData.
4) Выставлять в настройках задачи MainTask, где крутится обработка ком порта, приоритет в 0 и интервал в 5, включать сторожевой таймер.
Версия таргета СПК110 3.5.14.30.
Версия библиотеки OwenCommunication 3.5.11.7.
11.06.2026, 20:11
Евгений Кислов
Добрый день.
Свяжитесь, пожалуйста, со мной в понедельник утром (см. контакты в подписи).
Подготовьте удаленный доступ.