PDA

Просмотр полной версии : PLC63 собенности modbus ascii



kfvniiz
13.12.2013, 01:28
Потребовалось чтобы PLC63 был ведомым (slave) и использовал протокол modbus ascii со следующими настройками: 9600,7E1. Настроил соответствующим образом модуль RS-485[FIX] в PLC Configurator.
Согласно документации все должно было работать. Однако OPC сервер Lectus (что я использовал для тестов такого режима) начал ругаться на ошибки CRC. Перебор настроек связи показал, что похоже в PLC63 имеются какие то особенности при использовании длины слова равной 7 битам (хотя до конца еще не разобрался т.к. не было времени на тесты).

Собственно возникает вопрос допускается ли использование длины слова равной 7 битам для протокола modbus ascii, если не использовать библиотеки, а воспользоваться модулем RS-485 в PLC Configurator?

И попутно вопрос не в тему: в руководстве программиста для ПЛК63 и ПЛК73 описывается тип LREAL однако при попытке его использования CoDeSys говорит что он не поддерживается. Это так и должно быть?

kfvniiz
13.12.2013, 19:24
И так эксперименты показали что дело даже не в длине слова! Для простоты настроил следующие параметры связи 9600, 8N1, протокол modbus ascii.
Вот запрос от OPC сервера:
":01 03 01 50 00 01 AA CR LF "
А вот ответ PLC63:
":01 03 02 00 64 FA CR LF "
Давайте посчитаем LRC:
для запроса от OPC: sum8=0x01+0x03+0x01+0x50+0x00+0x01=0x56; LRC= (0xFF-0x56)+1=AA
для ответа от PLC63: sum8=0x01+0x03+0x02+0x00+0x64=0x6A; LRC=(0xFF-0x6A)+1=96
Получается что при приеме запроса PLC63 рассчитывает правильное LRC для пакета (иначе бы пакет был отброшен), а вот в ответе на запрос шлет неверное значение LRC!

Версия прошивки PLC63: 2.12.10.0c, CoDeSys 2.3.9.41

kfvniiz
16.12.2013, 17:53
Хотелось бы услышать ответ разработчиков PLC63: смогли ли они воспроизвести эффект с расчетом LRC? Если да будут ли они его исправлять или может быть уже есть прошивка где он исправлен?