Стартовая страница › Форумы › Взаимодействие с устройствами › Modbus › Нестандартные команды MODBUS
Помечено: Нестандартные команды MODBUS
- В этой теме 26 ответов, 6 участников, последнее обновление 7 месяцев, 4 недели назад сделано sergey_narva.
-
АвторСообщения
-
09.04.2024 в 19:39 #32027manjey73Участник
Тогда почему CRC переставлены местами в нестандартной команде?
Вообще написать драйвер для отправки любого набора байт не проблема.
Но что делать с ответами на команды?
Проверка crc, какого-то ответа от прибора?09.04.2024 в 19:45 #32028manjey73УчастникВсе нормально с crc, это просто в тексте косяк, согласно примеров все правильно.
09.04.2024 в 19:48 #32029JurasskParkУчастник09.04.2024 в 19:49 #32030manjey73УчастникДрайвер для отправки любого набора байт в сом порт могу сделать, это не проблема.
Проблема в получении ответа.
Если посылку можно сделать универсальной, то вот разбор вряд ли, так как у разных устройств он разный.Ну либо как Михаил написал, чисто мини драйвер для конкретной задачи и только делать.
10.04.2024 в 12:34 #32048MikhailМодераторС помощью драйвер DrvTester можно отправить любой набор байт. Затем считать ответ, не разбирая его. Из описания драйвера:
Команды ТУ: 1, SendStr - отправить строку; 2, SendBin - отправить бинарные данные.
Вам нужна команда SendBin. Добавьте устройство типа DrvTester стандартным образом и попробуйте отправить команду через Администратор. Если не заработает, отправляйте журнал линии связи и скриншоты.
10.04.2024 в 12:50 #32054manjey73УчастникОх ты. А считать ответ в строку (массив каналов) DrvTester может?
Тогда уже что бы не прилетело, можно ведь и скриптами разложить на байты и обработать ответ, любой, уже средствами scada и скриптов.11.04.2024 в 13:37 #32075MikhailМодераторНа данный момент считанная строка только отображается. Идея поместить данные в каналы хотя бы в бинарном виде хорошая.
11.04.2024 в 21:37 #32097sergey_narvaУчастник11.04.2024 в 21:37 #32098sergey_narvaУчастник- Этот ответ был изменен 8 месяцев назад от sergey_narva.
- Этот ответ был изменен 8 месяцев назад от sergey_narva.
11.04.2024 в 21:45 #32101sergey_narvaУчастникВоспользовался подсказкой, спасибо jurasskpark, попробовал реализовать через DrvModbus. Через администратор отправил через команду данные
80 11
получил следующее12.04.2024 в 12:00 #32124manjey73Участник@sergey_narva в первом случае вы забыли про контрольную сумму судя по всему
CRC-16 (Modbus) 0x0000 так точно.- Этот ответ был изменен 7 месяцев, 4 недели назад от manjey73.
12.04.2024 в 12:44 #32126sergey_narvaУчастникСамое интересное, как оказалось, конкретно для PZEM004T V3.0 совершенно без разницы какие данные предаются в 0x42. По любому происходит обнуление регистра подсчета энергии. В ответ получаем пакет полностью совпадающий с переданным. Если смотреть по документации, принятый пакет, с большой долей вероятности, не совпадет с переданным только в случае неисправности «железа» (микросхемы).
Т.е.пакет 0x01 0x42 0x80 0x11
ответ 0x01 0x42 0x80 0x11
приводит к обнулению регистра подсчета энергии (это пакет без данных — адрес устройства, функциональный код, CRC), также как и пакеты с данными:пакет 0x01 0x42 0x00 0x00 0xA1 0xCC
ответ 0x01 0x42 0x00 0x00 0xA1 0xCCпакет 0x01 0x42 0x80 0x11 0x00 0x00
ответ 0x01 0x42 0x80 0x11 0x00 0x00ну и так далее.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.