Некорректная запись modbus регистров v6 RC1

Стартовая страница Форумы Ошибки в работе Некорректная запись modbus регистров v6 RC1

Просмотр 15 сообщений - с 1 по 15 (из 30 всего)
  • Автор
    Сообщения
  • #25913
    7in
    Участник

    Создал шаблон modbus устройства (ОВЕН ТРМ1032), шаблон прилагаю.
    https://disk.yandex.ru/d/lFGRFrFHaWUcQQ
    В группе элементов есть группа с 32-мя элементами, у разных элементов разная размерность (ushort или float), т.е. некоторые элементы занимают 1 байт, некоторые два.
    Добавил каналы, завел в табличное представление. Через веб отправляю команду на запись регистра, и иногда пишется совсем не тот регистр, что должен. Связано это судя по всему с тем, что некоторые элементы занимают два байта вместо одного.
    В случае моего шаблона при попытке записи регистра «554» в журнале линии есть запрос:
    Отправка (8): 30 06 02 10 00 3C 8D 87
    что означает запись регистра 547. Смещение соответствует количеству двухбайтных регистров, предшествующих 554-ому.

    #25914
    manjey73
    Участник

    Начинать с 0 или Начинать с 1. Этот момент проверьте на одной переменной новым шаблоном. Других вариантов ошибки тут как бы не должно быть

    #25915
    manjey73
    Участник

    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.
    #25917
    7in
    Участник

    Ошибся, не то вставил. Вот команда, которая отправляется на устройство: 30 06 02 23 00 34 7C 4E
    Все верно, я пишу один регистр (ushort).
    Насчет «Начинать с 0/1» уже пробовал — ничего не меняется.
    Идет именно смещение адреса регистра внутри группы.
    Чем дальше регистр от начала — тем больше он смещается.

    #25918
    7in
    Участник

    Пробовал все удалить, передать конфигурацию и заново добавлять каналы, представления и т.д. и опять таки передавать конфигурацию — ничего не меняется.

    #25923
    Mikhail
    Модератор

    Добрый день!
    Сделайте, пожалуйста, скриншот настроек шаблона, укажите желаемый пакет и фактический пакет.

    #25927
    7in
    Участник

    Скриншот настроек: https://disk.yandex.ru/i/Gfu222CWAlTERg
    Желаемый пакет: 30 06 02 2A 00 34 AC 4C
    Фактич. пакет: 30 06 02 23 00 34 7C 4E

    #25928
    manjey73
    Участник

    А через Куммуникатор подать команду ?

    #25935
    Mikhail
    Модератор

    Да, желаемый и фактический адреса не совпадают. При этом в шаблоне отображается желаемый адрес 554.
    Проверю более детально и напишу в эту тему.

    #25939
    Mikhail
    Модератор

    Скопируйте, пожалуйста, из журнала линии связи Коммуникатора все строки, которые относятся к отправке команды на регистр «Уставка температуры контура отопления, Точка №3».

    #25940
    Mikhail
    Модератор

    Попробуйте обновление. Скопируйте файлы в ScadaComm\Drv , предварительно остановив Коммуникатор.

    #25941
    7in
    Участник

    Вот что до обновления:
    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
    OK

    #25942
    7in
    Участник

    Вот так после обновления:
    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
    Теперь все корректно работает, спасибо!
    Думал я что-то не так делаю)

    #25947
    7in
    Участник

    Можно узнать в чем заключалась проблема? Я верно предположил что это связано с размерностями элементов?

    #25949
    7in
    Участник

    Еще возникла проблема с записью 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 байта вместо необходимых двух. Зачем — непонятно

Просмотр 15 сообщений - с 1 по 15 (из 30 всего)
  • Вы должны авторизироваться для ответа в этой теме.