modbus_client --debug -mrtu -b19200 -pnone -s2 /dev/ttyMOD1 -a100 -t0x03 -r46165 -c3
Opening /dev/ttyMOD1 at 19200 bauds (N, 8, 2)
[64][03][B4][55][00][03][3B][DE]
Waiting for a confirmation...
<64><03><06><13><1F><14><17><0B><16><12><4C>
SUCCESS: read 3 of elements:
Data: 0x131f 0x1417 0x0b16
Устройство отвечает, данные верные.
Формат данных такой (это время и дата):
Не могу понять, как создать шаблон из такого запроса или что выбирать в веб-конфигураторе, чтобы хотя бы значения отобразились в топиках. wiki читал, всё равно не понятно.
(Устройство болидовское)
Вам нужно читать работать именно с датой и временем? Здесь есть сложность - надо читать три регистра, в шаблоне это не прописать (пока). Я проверил на С2000-ПП (это он же?) - при попытке чтения одного, двух или четырех регистров С2000-ПП выдает ошибку.
Устройство C2000КДЛ-Modbus, но я не думаю, что там сильные отличия от С2000-ПП.
Дата и Время для примера, я хочу научится работать с несколькими регистрами. Читал документацию, пробовал различные варианты через wirenboard - не получилось, запросил помощь через форум.
Да, через консольную утилиту три регистра читаются без проблем, попытка прочитать их по одному выдаёт ошибку - действительно. Как и многие другие, где и 6 регистров есть. Вопрос в управлении и визуализации этих данных механизмами самого wirenboard.
C2000-КДЛ-Modbus, насколько я понимаю, это C2000-КДЛ + C2000-ПП в одном корпусе. Получить данные от устройства можно двумя способами.
В один регистр пишем, что нам надо, из другого читаем данные. Этот режим в шаблоне wb-mqtt-serial не описать.
Те данные, которые хранятся в памяти устройства, можно прочитать непосредственно. Этот режим описан в п.6.12.3.3 руководства по эксплуатации C2000-КДЛ-Modbus. Использовать этот режим вам ничего не мешает. Шаблон, который я привел выше, как раз для этого режима.
Еще учитывайте, что устройство часто возвращает ошибку 6 в ответ на запрос просто потому, что в этот момент занято опросом устройств, висящих на ДПЛС, и ответить не может.
Тут не совсем так. Например нужно получить значение с “устройства 100”.
В modbus регистр “адрес” (с адресом x) пишем 100. И периодически читаем его, пока из него и читаться не будет записанное 100 (индикатор того что данные готовы).
После этого в регистре “данные” (с адресом y) будет искомое значение.
Сейчас serial это не умеет ну и логика для разных устройоств - разная, ее целесообразнее реализовать как раз прямым доступом к порту, сейчс пишу “общий пример”.