Показать сообщение отдельно
Старый 08.08.2013, 10:22   #13
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 102
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Модбас через TCP

Цитата:
Сообщение от ATS Посмотреть сообщение
Соответствует пакету Modbus RTU и Modbus поверх TCP
Modbus-RTU он не может соответствовать, т.к. поле данных обрамлено служебными полями TCP.

А вот "Modbus поверх TCP" - вполне. Т.к. налицо инкапсуляция.

Но тут нарушено главный принцип: устройства по оба конца провода должны играть по одним и тем же правилам. Контроллер ждёт Modbus-TCP и скармливать ему что-либо иное априори не имеет смысла.



Цитата:
Сообщение от ATS Посмотреть сообщение
Для протокола Modbus TCP выглядит следующим образом:
ид транзакции | ид протокола | длина пакета | адрес slave | код функции | данные

где
ид транзакции - два байта, обычно нули
ид протокола - два байта, нули
длина пакета - два байта - длина следующей за этим полем части пакета
адрес slave - адрес подчинённого устройства, к которому адресован запрос. Обычно игнорируется, если соединение установлено с конкретным устройством. Может использоваться, если соединение установлено с бриджом, который выводит нас, например, в сеть RS485.

Поле контрольной суммы в Modbus TCP отсутствует.
Ну вот вы и разобрались. Осталось только понять, при чём тут виртуальный COM-порт и зачем было его упоминать в самом первом сообщении

Вы ставили в пример бридж MOXA DE-311, для которого (как и для других бриджей) "Modbus поверх TCP" и придуман Понятное дело, что в этом случае он становится "Виртуальным СОМ-портом", т.к. драйвер всё приходящее в себя тупо запихивает в пакет TCP, приняв который MOXA DE-311 не менее тупо его выпихивает себе на разъём безо всякой обработки.

Но контроллер-то не бридж. И ему не нужно ничего никуда выпихивать.



Цитата:
Сообщение от ATS Посмотреть сообщение
Ответ однозначный - контроллер Modbus поверх TCP пока не поддерживает
Этот же вывод можно было сделать просто прочитав описание контроллера


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 08.08.2013 в 10:33
Arsie сейчас на форуме   Ответить с цитированием