ВалерийЛ
Junior Member / Новичок
Участник № / Member № 1664
отправлено / posted
Связь по Modbus (стандарт)в принципе проверили - работает нормально. Но есть один прибор, тоже вроде с Modbus, но с ним связь установить не удалось. Выяснилось, что в нем при обработке переставлены местами байты CRC, естественно он не отвечает на запросы (CRC ведущего и ведомого никогда не совпадут). Исправить ошибку не представляется возможным(есть несколько причин, по крайней мере в ближайшее время). Как можно просто и быстро решить проблему? Можно ли в вашей стандартной библиотеке Modbus сделать небольшое изменение и добавить ее в систему (как драйвер дополнительный или что лучше добавить опцию при настройке источников или com-порта по типу CRC16).
Сообщения / Posts 5 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
1) Для ModBus всегда используется CRC16. Не совсем понятно, что нужно еще сделать? 2) Неверная интерпретация байтов - это ошибка микропрограммы изделия. Как они вообще его еще кому-то продают? Не думаю, что идея модификации нашего драйвера будет поддержана, однако - рекомендую обратиться с официальным запросом по адресу hotline@adastra.ru
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ВалерийЛ
Junior Member / Новичок
Участник № / Member № 1664
отправлено / posted
Спасибо за ответ. Да,все в стандарте работает. Да, есть ошибка в изделии. Но все-таки пока это нужно принять как есть. А нужно в данном случае формировать запросы с измененными CRC (поменять местами младший и старший байты по отношению к стандарту)и принимать ответ соответственно тоже с измененным CRC. А хотелось в идеале получить обновление стандартной библиотеки Modbus с дополнительной опцией, например доп.флаг "поменять байты CRC" в настройках com-порта по типу CRC16. Вот кстати выдержка из справки:CRC16 – если этот флаг установлен, команда записи по M-LINK дополнительно защищается CRC16, а при приеме ответов по M-LINK вычисляется дополнительная контрольная сумма. Чтобы данный механизм работал, флаг CRC16 должен быть установлен как для порта узла M-LINK MASTER, так и для порта узла M-LINK SLAVE. При обмене с контроллером ADAM по порту с установленным флагом CRC16 выполняется дополнительная проверка ответов контроллера. Т.е. доп. функция, не используемая в настройках по стандарту. Это к п.1 ответа. А вообще рекомендацию понял. Спасибо
Сообщения / Posts 5 | Из / From: Украина
| IP / IP: IP адрес / IP address |