<< Click to Display Table of Contents >> Navigation: Modbus Universal MasterOPC Server > Руководство по языку Lua 5.1 > Примеры и полезности > Формирование расширенного Modbus запроса > Описание устройства |
Поскольку Modbus является открытым протоколом, многие фирмы расширяют стандарт собственными функциями. Например, фирма ICP DAS использует собственную функцию 0х46 с несколькими подфункциями для настроек модулей M-серии. Реализовать обмен с такими устройствами можно с помощью скриптов - используя функцию server.SendAndReciveDataByMask.
В качестве примера рассмотрим датчик температуры и влажности МАВ-ТС100 фирмы "Микрофор".
http://www.microfor.ru/products/catalog/mav_ts/
Данный датчик предназначен для измерения температуры и передачи этих данных по протоколу Modbus. Считывание измеренного значения температуры осуществляется при помощи функции 0х19. Данная функция не является стандартной, и не поддерживается ни одним OPC сервером. Команда имеет следующий формат.
Посылка:
Назначение команды |
Посылаемое значение |
номер преобразователя |
0x01 |
идентификатор команды |
0x19 |
адрес регистра, старший байт |
0x02 |
адрес регистра, младший байт |
0x00 |
контрольная сумма, младший байт |
Crc_lo |
контрольная сумма, старший байт |
Crc_hi |
Ответ:
Назначение команды |
Принимаемое значение |
номер преобразователя |
0x01 |
идентификатор команды |
0x19 |
содержимое регистра, старший байт |
0x09 |
содержимое регистра, младший байт |
0xF5 |
контрольная сумма, младший байт |
Crc_lo |
контрольная сумма, старший байт |
Crc_hi |
Для получения значения температуры необходимо опросить два регистра - 0x200 и 0x202. Из значений этих двух регистров и нужно получить значение температуры в формате float. Считанные значения представляются как 32-х битное число, причем старшие 16 бит считываются из регистра 0x200, а младшие 16 бит – из регистра 0x202. Затем, полученное 32-х битное число преобразуется в число с плавающей запятой следующим образом:
Разряд |
31 (MSB) |
...... |
24 |
23 |
22 |
..... |
0 (LSB) |
|
е.7 |
...... |
е.0 |
Знак |
m.22 |
..... |
m.0 |
|
Экспонента (от -126 до +127) |
|
Мантисса (от 0 до 222) |
Данный способ представления вещественного числа соответствует стандарту IEEE 754, за исключением того, что бит знака находится на 23 позиции вместо 31. Такой тип представления принят производителями микроконтроллеров – компаниями Texas Instruments и Microchip.
В последующих топиках будет детально разобрано создание скрипта для опроса данного устройства. Скачать конфигурацию можно по ссылке, конфигурация называется Микрофор.mbp.