Ответы в темах
-
АвторСообщения
-
7in
УчастникОбе рассматриваемые ошибки больше не возникают. Запись float работает корректно в обоих случаях.
Спасибо!
Неужели до меня никто не сталкивался с подобными проблемами?7in
УчастникЭто была первоочередная проблема.
При попытке её обойти вылезла другая — если создать команду (множественную) с типом float — то всегда через неё пишутся нули вне зависимости от того, что я пытаюсь записать. Если нужны скриншоты/файл шаблона — выложу чуть позже.7in
УчастникШаблон прежний (не изменялся) — из первого сообщения данной темы.
Проблема с элементом «Смещение графика конт 1»:
<Elem type="float" byteOrder="2301" readOnly="false" isBitMask="false" tagCode="558" name="Смещение графика конт 1" />
Проблема заключается в том, что при попытке записи такого элемента коммуникатор направляет некорректный запрос устройству: пытается функцией для записи одного регистра записать сразу два.7in
Участникто есть изначально 00 00 00 00 00 00 40 00 и хвост пропадает…
Попробовал записать значение «1,1» — там хвоста с нулями быть не должно т.к. в hex оно выглядит как 0x9a9999999999f13f
Однако в журнале коммуникатора все равно одни нули
7in
УчастникДолжен вот такой пакет передаваться:
30 10 02 2E 00 02 04 00 00 40 00 A3 677in
УчастникЧисло float состоит из 4 байт и занимает 2 адреса Модбас.
Действительно все верно. Только почему то нули одни пишутся, а не передаваемое значение.
7in
УчастникТогда вот что отправляет:
Отправка (17): 30 10 02 2E 00 04 08 00 00 00 00 00 00 00 00 28 44
Это если у множественной ставить.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 байта вместо необходимых двух. Зачем — непонятно
7in
УчастникМожно узнать в чем заключалась проблема? Я верно предположил что это связано с размерностями элементов?
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
Теперь все корректно работает, спасибо!
Думал я что-то не так делаю)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
OK7in
УчастникСкриншот настроек: https://disk.yandex.ru/i/Gfu222CWAlTERg
Желаемый пакет: 30 06 02 2A 00 34 AC 4C
Фактич. пакет: 30 06 02 23 00 34 7C 4E7in
УчастникПробовал все удалить, передать конфигурацию и заново добавлять каналы, представления и т.д. и опять таки передавать конфигурацию — ничего не меняется.
7in
УчастникОшибся, не то вставил. Вот команда, которая отправляется на устройство: 30 06 02 23 00 34 7C 4E
Все верно, я пишу один регистр (ushort).
Насчет «Начинать с 0/1» уже пробовал — ничего не меняется.
Идет именно смещение адреса регистра внутри группы.
Чем дальше регистр от начала — тем больше он смещается.7in
УчастникУстановил драйвер на 6.0.0~rc1 — Работает!
https://disk.yandex.ru/d/_UA3RPpecwL4kw
В ближайшее время займусь добавлением всех необходимых параметров для считывания, и соответственно проверю стабильность работы.
После этого постараюсь сформулировать как должны работать команды на запись.
Еще раз большое спасибо. -
АвторСообщения