Пожалуйста, рассмотрите возможность добавить поддержку Modbus UDP master/slave для ПЛК и Modbus UDP slave для модулей ввода-вывода.
Всё в рамках актуальной спецификации Modbus, меняется (добавляется) только транспортный протокол - UDP.
Вид для печати
Пожалуйста, рассмотрите возможность добавить поддержку Modbus UDP master/slave для ПЛК и Modbus UDP slave для модулей ввода-вывода.
Всё в рамках актуальной спецификации Modbus, меняется (добавляется) только транспортный протокол - UDP.
Если честно, я не понимаю тех, кто это разработал.... Завернуть TCP в UDP не составляет особого труда для сетевого оборудования вроде.
А что происходит тут?, к Modbus TCP необходимо добавить снова CRC как в RTU чтобы проверять пакеты протокола?
перевод
ну и смысл велосипеда?Цитата:
В этом вся прелесть, по сути, мы ничего не изменили в спецификации прикладного уровня Modbus (и TCP), кроме способа передачи сообщений.
Это означает, что специфичный для IP заголовок (называемый MBAP в спецификации) точно такой же, как и для Modbus/TCP. Он имеет длину 7 байт и состоит из следующих полей:
идентификатор вызова (2 байта), используемый для сопряжения транзакций; ранее называвшийся идентификатором транзакции идентификатор
протокола (2 байта), по умолчанию равен 0 для Modbus; зарезервирован для будущих расширений
длина (2 байта), количество байтов всех следующих байтов
идентификатор единицы измерения (1 байт), используемый для идентификации удаленное устройство, расположенное в сети, отличной от TCP/IP
Также ничего не изменилось в отношении возможных сетевых настроек. На самом деле они не соответствуют спецификации; возможно настроить системы с несколькими ведущими или реализовать двунаправленную связь (т.е. иметь узлы, которые являются ведущими и ведомыми одновременно). Однако пользователь должен хорошо осознавать, что это влечет за собой последствия
Да легко:
https://icp-das.ru/collections/io-mo...dbus+UDP+Slave
Единственное, что я не совсем понимаю - зачем модулю в/в нужно быть мастером?
Мсье знает толк. В извращениях. :eek:
В Вашем изложении - никакого.
А так, в своей практике я единственный раз сталкивался с ситуацией, когда пришлось перейти с tcp на udp. Правда, тот случай никакого отношения к modbus tcp/udp не имеет. Просто китайский конвертер последовательного порта по необъяснимым для меня причинам отказался работать по tcp.
я в вейнтековской панели всегда ставлю галку передавать по UDP, когда работаю с протоколом modbusTCP
Очень показательный пример - на него я и рассчитывал.
Открываем мануал на любой из модулей (например - ET-7026):
https://insat.ru/products/icpdas/PET...ET-7026_RE.pdf
Термин "UDP" в нем встречается 10 раз (1 раз - в оглавлении) и нигде не соседствует с "Modbus".
Если прочитать чуть внимательнее - то окажется, что по UDP (не Modbus UDP, а по какому-то сервисному "протоколу" поверх UDP) происходит обновление прошивки модуля:
Вложение 66751
Вложение 66752
Не очень-то и "легко" получилось, верно?
imaex ну давайте сначала. Одно из различий Modbus TCP от RTU заключается в том, что из пакета Modbus убрали CRC, возложив это на TCP стек, то есть устройство, принимая TCP пакет уже знает, что пакет битый или не битый и уже нет необходимости проверять пакет непосредственно Modbus протокола.
в UDP нет контрольных сумм насколько помню. То есть изобретая протокол Modbus UDP потребуется вернуть обратно CRC протокола, чтобы устройство точно знало, что пакет не битый...
И тем самым все сведется на нет...
Хотя вроде какой-то базовый функционал проверки целостности есть... Вот что будет делать устройство, если получит неполный пакет?