PDA

Просмотр полной версии : Странная modbus-адресация (?)



Khanas
04.07.2023, 11:27
Добрый день. Стоит задача управления кондиционером и фанкойлом через вот такой шлюз-конвертер modbus.
В инструкции к шлюзу указано, что он поддерживает данные типа coil (1 бит) и holding registers (16 бит). Ок.
Только вот дальше, в перечне адресов типа holding registers, адреса 3, 7...10 имеют тип данных Unsigned Word и по идее дробные, и по своей сути есть имеют тип REAL (или 2 WORD), то есть должны занимать по два регистра.
Но в инструкции все параметры идут подряд, а не через 1 регистр.
Может, я чего-то не понимаю?
Может кто по собственному опыту сказать: могут ли резервные адреса 11...19 (см. приложение) являться вторыми word`ами?

И проверить никак нельзя, т.к. без подключенного кондиционера шлюз бездействует.

melky
04.07.2023, 11:38
И что вас смущает?, берем адрес 7, получаем целое число со знаком и делим его на 10, так как указано 0,1 градус. То есть 102 получили, значит там 10,2 градуса.
И так далее.
Интересно, что за кондиционеры и как подключается к ним шлюз? RS485 или иное?

Увидел RS485, предположительно по описанию регистров интерфейс XYE и протокол у кондеев Мидеевский. Можно попробовать прочитать их напрямую, без всяких шлюзов.

Евгений Кислов
04.07.2023, 11:38
Добрый день.


Unsigned Word и по идее дробные, и по своей сути есть имеют тип REAL (или 2 WORD)

Я думаю, это целые значения (1 WORD).
См. столбец Unit.
Например, если в регистре 7 значение 525, то это будет соответствовать 52.5 (потребуется выполнить в ПЛК конвертацию в REAL и последующее деление на 10).

imaex
04.07.2023, 11:43
и по идее дробные, и по своей сути есть имеют тип REAL (или 2 WORD), то есть должны занимать по два регистра.


По какой идее и почему должны? Если верить бумажке, то температуры там передаются в "попугаях", где 1 "попугай" = 0.1 градусу по Цельсию.
Такое сплошь и рядом встречается, когда вещественные числа передаются как целые. Например, значение 273 в целочисленном регистре может означать 27.3 градуса.

Khanas
04.07.2023, 11:49
Наружный блок BLC_O/out-36HN1_21Y.

Khanas
04.07.2023, 11:50
Всем спасибо за ответы! Буду знать :D
Про деление знал, но меня сбил с толку тип unsigned word и unit 0.1C

melky
04.07.2023, 12:18
Khanas тут больше документация шлюза бы помогла, куда он цепляется у кондиционера. На шину АВ между блоками?

Khanas
04.07.2023, 15:49
Khanas тут больше документация шлюза бы помогла, куда он цепляется у кондиционера. На шину АВ между блоками?

https://cdn.etm.ru/ipro/1747/324494_ballu_manual_blc_mb_20y.pdf

В шлюзе два порта RS485. Один порт для контроллера, а к другому цепляются внешний и внутренние блоки шлейфом.
Просто по проекту так сделано, ничего с этим не поделаешь.

Евгений Кислов
10.03.2024, 11:31
0000h-0001h unsigned dword
000Eh signed word
Не подскажете как читать в ПР200 эти адреса и какие настройки во вкладке прибор надо ставить в программе owen logic?

Задайте ваш вопрос в разделе про OwenLogic:
https://owen.ru/forum/forumdisplay.php?f=63

kondor3000
10.03.2024, 11:33
0000h-0001h unsigned dword
000Eh signed word
Не подскажете как читать в ПР200 эти адреса и какие настройки во вкладке прибор надо ставить в программе owen logic?

unsigned dword, это 32 битное целочисленное, типа DWORD (UDINT), адрес 0 (занимает 2 регистра)
000Eh signed word - это 16 битное ( 1 регистр), знаковое целочисленное, типа INT, адрес 14 ( переводится калькулятором в режиме программист), так как в Лоджике нет знакового целочисленного,
то придётся после приёма, конвертировать во Float. Например -1 будет приниматься как 65535, нужен макрос конвертации.