Обмен по протоколу ModbusPlus

Драйвер обмена работает с любыми платами (PCI, ISA, PCMCIA) ModbusPlus производства Schneider Electric. Для функционирования драйвера нужна библиотека NETLIB.DLL. Эта библиотека автоматически устанавливается в процессе установки Windows-драйвера (MBX Driver) платы ModbusPlus. Windows-драйвер входит в комплект поставки плат ModbusPlus Schneider Electric.

Возможна работа с платами других производителей. Для этого производитель должен поставлять 32-битную библиотеку NETLIB.DLL. Библиотека должна находиться в системном каталоге Windows (\WINDOWS\SYSTEM или \WINDOWS\SYSTEM32).

Кроме атрибутов, общих для всех источников/приемников (см. Редакторы источников (приемников) , а также Шаблоны каналов обмена ), в редакторе шаблона канала обмена по данному протоколу задаются следующие атрибуты:

   Адрес – однобайтовое число (задается в десятичном виде). 6 младших битов этого числа задают адрес контроллера в сети ModbusPlus (0 соответствует адресу 1 в сети ModbusPlus, 63 – адресу 64). Мосты и маршрутизация не поддерживаются. Старший бит настройки Адрес задает номер используемого порта адаптера (сетевой платы ModbusPlus) (0 или 1). Например, для чтения из  контроллера с адресом 3 через порт 1 адаптера настройка Адрес должна быть равна 130 (128+2);

   Область – команда ModbusPlus из числа реализованных в драйвере (1 байт). Команда выбирается из списка (см. ниже);

   Смещение – смещение первого читаемого регистра относительно начала группы (2 байта). Этот параметр задается в десятичном виде (0 - 65535). Например, если нужно прочитать 10 out-регистров с 00001 по 000010, Смещение=0, Счетчик=10. Если нужно прочитать один регистр 40002, Смещение=1, атрибут Счетчик игнорируется;

   Счетчик – количество регистров для чтения/записи (1 байт). Этот параметр имеет смысл только для команд чтения/записи дискретных (однобитовых) регистров 0х и 1х. Регистры 3х и 4х читаются (или в них записывается значение) всегда по одному. Настройка Счетчик  задается в десятичном виде (1 – 16).

В драйвере реализованы следующие команды  ModbusPlus (число в скобках соответствует десятичному коду команды; в командах 03, 04, 06 атрибут Счетчик игнорируется):

   Read0х (01) – считать состояние группы дискретных out-регистров. По этой команде можно получить  состояние от 1 до 16 дискретных (однобитовых) регистров 0х. Самый младший разряд полученного числа соответствует первому регистру. При запросе менее 16 регистров неиспользуемые разряды заполняются нулями. Если запрошено более 16 регистров, получены будут только первые 16;

   Read1x (02) – то же, что Read0x, но для in-регистров 1x (однобитовых);

   Write0x (15) – записать в 0х однобитовые out-регистры (правила такие же, как для команды Read0x);

   Read4x (03) – считать один 4x out-регистр (16 бит);

   Read3x (04) – считать один 3x in-регистр (16 бит);

   Write4x (06) – записать в один 4х out-регистр (16 бит);

   Force0x (05) – установить/сбросить один 0x out-регистр (однобитовый). Нулевое значение, записываемое в канал, соответствует сбросу регистра. Отличное от 0 значение соответствует установке регистра;

   ReadExcpt (07) – считать out-регистры (однобитовые) 00001-00008, при этом полученное число лежит в диапазоне 0-255. Младший бит соответствует регистру 00001, старший – регистру 00008.