Your comments

Токены имеются для сети Modbus RTU
нас интересуют токены для устройства конкретного.

Также и с Coil и Holding Write Function это для сети устройств, а должно быть по каждому устройству, а точнее по каждой переменной. Но это надо обсуждать.

Токены в сети не в сети устройство Modbus, это надо для передачи в верхний уровень.
Также другие токены от устройства, как у Вас сейчас реализовано на остальных драйверах: Status, Online и пр.
Функции используемые для обращения к регистрам. В вики у Вас написано, что сервер автоматически переключается с fc5 и fc6 на fc15 и fc16 в случае возврата ошибки 01, но если устройство не возвращает ошибку, то не происходит переключения. Для этого и надо сделать выбор нужного параметра. Так как у некоторых устройств будет один вариант команды, а у других другой, также может быть разный вариант команд для разных регистров. 

Коллеги, добрый день.
Можно также в этой доработке сделать Tokenы для устройств Modbus и также учесть изменение функций для переменных, а не в целом для устройства. Эти вопросы также задавались в поддержку.

Владимир.

В драйвере нужно реализовать следующие типы "word size":

  • Word(16 bit) signed
  • Word(16 bit) unsigned
  • Dword(32 bit) signed
  • Dword(32 bit) unsigned

Word(16 bit) signed - будем получать значения -32768 .. 32767

Word(16 bit) unsigned - будем получать значения 0 .. 65535

Dword(32 bit) signed - будем получать значения -2147483648 .. 2147483647

Dword(32 bit) signed - будем получать значения 0 ... 4294967295


То есть для каждого канала и фидбека может бы назначен соответствующий тип "word size".

Коллеги, я понимаю, что скриптом я могу обработать данные, полученные. И сформировать то что мне нужно. Хорошо, если это будет 1 скрипт, а если это будет 500 переменных и обработка каждой скриптом, считаю это немного утопичной идеей. 

Хочется просто получить правильные значения. С возможностью выбора первого или второго варианта для Word(16 bit).

Сейчас этого функционала нет, но на дальнейшее он очень нужен. Избавляет от дополнительных скриптов и дополнительного кодирования, и, как следствие, экономит время разработчика.

Владимир, шаблоны, это не то.

Если мы получаем значение 16 бит, в котором у нас прихоят 2 поля данных старший байт (первые 8 бит) и младший байт (вторые 8 бит), и нам их надо правильно обработать.

То в этой ситуации нам нужно очень точно обработать данны. Чтобы получить нужную информацию.

Например мы получили число 28155, когда мы его разложим на старший и младший байт то получим 109 и 251 соответственно. При этом мы получаем нужный нам код из данного числа.

Но вот если мы получим число на входе отрицательное, тогда получается не то, что нам надо.

пример - зачение -1349 = старший -6, что ничему не соответствует и младший 187 такого кода в системе передающей также нет!
То есть обработать не получиться(((

Коллеги, добрый день.

Действительно любое устройство Modbus RTU передает значение как есть и уже на принимающем оборудовании выбирается, каким образом обрабатывать.

То есть на контроллере или в СКАДА системе мы будем выбирать данный регистр знаковый или беззнаковый, от этого будет зависеть какое значение мы получим.

Либо это будет от 0 до 65535, либо это будет от -32768 до 32768.

В протоколе не предусмотрена передача типа переменной, это обрабатывает принимающая сторона.

То есть в драйвере должна быть предусмотрена возможность выбора, какое значение получать из Holding Register Word 16bit лтбо это будет знаковое, либо беззнаковое.

Скажу так. Если TOP сегмент, то вариант 2N - 100% лучший.

Если бюджет - BAS-IP в полне устроит.

При работе с домофонами 2N мы используем для отображения видео режим подключения камеры.

При этом мы указываем следующие параметры отображения:
URI - https://192.168.0.209/api/camera/snapshot?width=640&height=480&source=internal
используем режим получения snapshot для более быстрого отображения.
Настройки домофона - Service->HTTP API->Camera API







Какая у Вас структура на объекте? Если есть Logic Machine, то это можно реализовать на этом контроллере. Как вариант можно рассмотреть Kamailio для этих целей, но как он конфигурируется не подскажу. Есть решение у Embedded System LM http://openrb.com/sip-server-on-logicmachine/

Дополнительных настроек этого сервера выполнять не нужно. Просто прописываете в клиенте нужный номер и ip адрес сервера и все.