PDA

Просмотр полной версии : Modbus/RTU



Milchuk
11.04.2007, 17:24
При испытаниях ПЛК150 столкнулся с проблемой: связь с устройством по Modbus/RTU работает до скорости 38400, выше - контроллер не воспринимает ответ. (ошибка 81). На осциллограмме выглядит всё по стандарту.
Вопрос в том, какое отклонение частоты приёмо-передатчиков допускается на больших скоростях в случае с ПЛК150? По стандарту Modbus/RTU (раздел 3.2.) отклонение на передачу 1%, на приём - 2%.
Вопрос второй: где найти описание команд 0х70 и 0х71?

Филоненко Владислав
12.04.2007, 08:51
1. Смотрите ваше устройство, мы испытывали на приборах нескольких производителей, все работает. Для мастера ModBus не ставьте параметр Framing time в настройках порта больше 0. Отклонение частоты стандартизуется для ассинхронного последовательного интерфейса (USART), а не для протокола ModBus.
2. Это команды для байтового обмена по заказу одного из наших клиентов. Никакое др. устройство их не поймет.

Прохожий
12.04.2007, 11:26
Отклонение частоты стандартизуется для ассинхронного последовательного интерфейса (USART), а не для протокола ModBus.


Тут Вы не совсем правы. Открываем документ "Modbus over serial line. Specification & Implementation guide. V1.0" и на стр. 12 в разделе 3.2 Data Signaling Rates читаем: "Every implementation baud rate must be respected better then 1% in transmission situation, and must accept an error of 2% in reception situation". Т. е. скорость передачи должна быть не хуже 1% от примененной скорости, а приемник должен уверенно работать при ошибке скорости в 2%.



2. Это команды для байтового обмена по заказу одного из наших клиентов. Никакое др. устройство их не поймет.

Действительно, эти команды (0х70 и 0х71) находятся в области User-Defined Function Codes согласно документу "Modbus Application Protocol Specification V1.1a" и не имеют гарантии уникальности.
В связи с этим, можно ли понимать Ваши слова так, что протокол в части этих команд, принадлежит исключительно Вашему клиенту и недоступен широкой публике?
Дело в том, что байтовый обмен часто значительно упрощает жизнь, а "любое др. устройство" можно и научить... Был бы протокол.

Филоненко Владислав
12.04.2007, 12:24
Чтение (0x70)
10 70 00 07 05 CRC CRC

Ответ

10 70 00 07 05 xx xx xx xx xx CRC CRC

Адрес устр.
команда
номер байта (2 байта)
кол-во в байтах
CRC - 2 байта

Запись (0x71)

10 71 00 03 01 xx CRC CRC

Адрес устр.
команда
номер байта (2 байта)
кол-во в байтах
данные (N байт)
CRC - 2 байта

Ответ

10 71 00 03 01 CRC CRC