Показать сообщение отдельно
Старый 28.03.2008, 11:58   #133
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Не совсем понимаю, что имеется под словами "сегнетик меняет его на другой"

Думаю, если в NI OPC есть отдельный диапазон для строковых данных, то этот сервер либо модбас вообще не знает, либо не совсем с ним совместим. Дело в том, что строковых данных в модбасе нет. Только биты и шеснадцатибитные регистры.

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

В модбасе есть два типа адресации: правильная и через диапазоны.

Выделяются четыре диапазона: входные биты, выходные биты, входные регистры, выходные регистры.

В правильной адресации тип данных определяется функциями чтения/записи, адреса в диапазоне 0..65535 (0000h..FFFFh).

В диапазонной тип данных определяется первой цифрой "адреса", сам адрес в десятичном виде в диапазоне 1..9999 - т.е. смещён на единицу от нормальных адресов. Плюс к этому, адреса выше 9999 недоступны.

Итого получается "псевдоадрес" вида 1xxxx, 2xxxx, 3xxxx и 4xxxx.

Часть серверов и устройств позводяют задавать диапазон не 1..9999, а 1..65536 - это сделано для того, чтобы охватить _весь_ диапазон адресов.

У них получается "псевдоадрес" вида 1xxxxx, 2xxxxx, 3xxxxx и 4xxxxx.

Если NI OPC не умеет задавать весь диапазон или переключаться в правильную адресацию, то это повод сменить сервер, благо их куча как платных, так и бесплатных

PS. SMH2010 и Pixel работают в правильной (реальной) адресации. Адреса в карте памяти - в шеснадцатиричном виде.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием