Стартовая страница › Форумы › Ошибки в работе › Некорректная запись modbus регистров v6 RC1
- В этой теме 29 ответов, 3 участника, последнее обновление 1 год, 5 месяцев назад сделано Mikhail.
-
АвторСообщения
-
08.11.2022 в 12:32 #259137inУчастник
Создал шаблон modbus устройства (ОВЕН ТРМ1032), шаблон прилагаю.
https://disk.yandex.ru/d/lFGRFrFHaWUcQQ
В группе элементов есть группа с 32-мя элементами, у разных элементов разная размерность (ushort или float), т.е. некоторые элементы занимают 1 байт, некоторые два.
Добавил каналы, завел в табличное представление. Через веб отправляю команду на запись регистра, и иногда пишется совсем не тот регистр, что должен. Связано это судя по всему с тем, что некоторые элементы занимают два байта вместо одного.
В случае моего шаблона при попытке записи регистра «554» в журнале линии есть запрос:
Отправка (8): 30 06 02 10 00 3C 8D 87
что означает запись регистра 547. Смещение соответствует количеству двухбайтных регистров, предшествующих 554-ому.08.11.2022 в 12:51 #25914manjey73УчастникНачинать с 0 или Начинать с 1. Этот момент проверьте на одной переменной новым шаблоном. Других вариантов ошибки тут как бы не должно быть
08.11.2022 в 12:52 #25915manjey73Участник30 Slave address 0x30 (48)
06 Function code 0x06 (6) — Write Single Register
02 10 Register address Physical: 0x0210 (528)
Logical: 0x0211 (529)
00 3C Register value 0x003C (60)
8D 87 CRC 0x8D87 (36231)Тут вы как бы один регистр пишите и совсем не 547-й
Может вы добавляли параметры и не обновили данные на сервере или у WEB ?
- Этот ответ был изменен 1 год, 5 месяцев назад от manjey73.
08.11.2022 в 12:55 #259177inУчастникОшибся, не то вставил. Вот команда, которая отправляется на устройство: 30 06 02 23 00 34 7C 4E
Все верно, я пишу один регистр (ushort).
Насчет «Начинать с 0/1» уже пробовал — ничего не меняется.
Идет именно смещение адреса регистра внутри группы.
Чем дальше регистр от начала — тем больше он смещается.08.11.2022 в 13:00 #259187inУчастникПробовал все удалить, передать конфигурацию и заново добавлять каналы, представления и т.д. и опять таки передавать конфигурацию — ничего не меняется.
08.11.2022 в 14:14 #25923MikhailМодераторДобрый день!
Сделайте, пожалуйста, скриншот настроек шаблона, укажите желаемый пакет и фактический пакет.08.11.2022 в 15:03 #259277inУчастникСкриншот настроек: https://disk.yandex.ru/i/Gfu222CWAlTERg
Желаемый пакет: 30 06 02 2A 00 34 AC 4C
Фактич. пакет: 30 06 02 23 00 34 7C 4E08.11.2022 в 15:38 #25928manjey73УчастникА через Куммуникатор подать команду ?
09.11.2022 в 13:27 #25935MikhailМодераторДа, желаемый и фактический адреса не совпадают. При этом в шаблоне отображается желаемый адрес 554.
Проверю более детально и напишу в эту тему.09.11.2022 в 14:45 #25939MikhailМодераторСкопируйте, пожалуйста, из журнала линии связи Коммуникатора все строки, которые относятся к отправке команды на регистр «Уставка температуры контура отопления, Точка №3».
09.11.2022 в 15:10 #25940MikhailМодераторПопробуйте обновление. Скопируйте файлы в ScadaComm\Drv , предварительно остановив Коммуникатор.
09.11.2022 в 15:11 #259417inУчастникВот что до обновления:
2022-11-09 17:12:29 Команда устройству [7] trm1032v2 vokz31a
Команда «Уставка температуры контура отопления, Точка №3»
Отправка (8): 30 06 02 23 00 34 7C 4E
Приём (2/2): 30 06
Приём (6/6): 02 23 00 34 7C 4E
OK09.11.2022 в 15:15 #259427inУчастникВот так после обновления:
2022-11-09 17:16:30 Команда устройству [7] trm1032v2 vokz31a
Команда «Уставка температуры контура отопления, Точка №3»
Отправка (8): 30 06 02 2A 00 34 AC 4C
Приём (2/2): 30 06
Приём (6/6): 02 2A 00 34 AC 4C
OK
Теперь все корректно работает, спасибо!
Думал я что-то не так делаю)10.11.2022 в 06:37 #259477inУчастникМожно узнать в чем заключалась проблема? Я верно предположил что это связано с размерностями элементов?
10.11.2022 в 12:18 #259497inУчастникЕще возникла проблема с записью float элементов:
Есть вот такой элемент в группе (Смещение графика). Тип float, порядок 2301
https://disk.yandex.ru/i/sUonycKkxU2PuQ
Когда пытаюсь его записать (значение 2,0) — коммуникатор направляет устройству вот такой пакет:2022-11-10 14:00:13 Команда устройству [3] ТРМ1032 Вокзальная 31А Команда "Смещение графика" Отправка (10): 30 06 02 2E 00 00 40 00 FD 3B Приём (2/2): 30 86 Приём (3/3): 03 53 AE Ошибка устройства: [03] ILLEGAL DATA VALUE!
На что устройство ругается, т.к. онлайн парсер выдает ошибку «Expected data package size is 8 bytes».
Т.е. коммуникатор пытается функцией «06» записать сразу два регистра.
После этого я решил добавить множественную команду:
https://disk.yandex.ru/i/rO6OXCiqTBO2GQ
При попытке записи такой командой коммуникатор отправляет следующий пакет:2022-11-10 14:08:17 Команда устройству [3] ТРМ1032 Вокзальная 31А Команда "Смещение" Отправка (13): 30 10 02 2E 00 02 04 00 00 00 00 92 A7 Приём (2/2): 30 10 Приём (6/6): 02 2E 00 02 24 58 OK
Т.е. пишет 4 байта вместо необходимых двух. Зачем — непонятно
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.