<< Click to Display Table of Contents >> Navigation: Modbus Universal MasterOPC Server > Руководство по языку Lua 5.1 > Примеры и полезности > Реализация протокола RNet > Описание протокола |
С помощью функции server.SendAndReceiveDataByMask() можно выполнять запросы не только Modbus или DCON протоколу, но и реализовать собственные протоколы. Для реализации собственного протокола необходимо самостоятельно производить подсчет контрольной суммы, передавать ее в прибор и анализировать при ответе.
Для примера рассмотрим поддержку протокола Rnet. Это протокол фирмы "Контравт", предназначенный для опроса многоканальных измерителей-регуляторов. Описание протокола можно найти на официальном сайте https://www.contravt.ru/?id=1661
Кадр протокола состоит из следующих полей:
Название поля |
Условное обозначение |
Длина поля (байт) |
Примечания |
Поле сетевого адреса прибора |
DEV |
1 |
Сетевой номер прибора |
Поле адреса канала прибора |
CHA |
1 |
Номер канал прибора. Нумерация идет с нуля |
Поле адреса регистра |
REG |
1 |
Регистр канала |
Поле команды |
CMD |
1 |
00 – чтение регистра, 01 - запись |
Поле типа данных |
TYP |
1 |
Тип регистра |
Поле данных |
DATA |
1..32 |
Данные |
Поле контрольной суммы |
CRC |
1 |
Циклический код вычисляемый по специальному алгоритму |
Для чтения состояния регистра от OPC нужно послать следующий набор команд:
DEV CHA REG RD CRC
Если запрос будет принят, то прибор ответит:
DEV CHA REG RD TYP DATA CRC
Для примера будет опрашивать прибор "Метакон 562", первый канал, будем опрашивать измеренное значение – оно имеет номер регистра 0x01.