<< Click to Display Table of Contents >> Navigation: Modbus Universal MasterOPC Server > Руководство по языку Lua 5.1 > Примеры и полезности > Реализация протокола DCON > Описание протокола |
Протокол DCON является простым, открытым, символьным протоколом обмена по сетям RS-232, RS-422 и RS-485. Протокол был разработан фирмой Advantec и в настоящий момент активно применяется в устройствах многих производителей (Advantec, ICP DAS, ОВЕН, Контравт).
К недостаткам протоколам можно отнести отсутствие единого стандарта (подобного стандарту Modbus), поэтому реализация одних и тех же функций у разный производителей может отличаться.
Структура запроса у протокола DCON выглядит следующим образом:
Команда (1 символ) |
Данные |
Контрольная сумма (2 символа) |
Символ CR ("перевод каретки") |
Команда – это определенный символ, который указывает модулю на тип запроса. Например, символ "#" указывает что выполняется запрос чтения аналогового входа или значения счетчика, символ "@" указывает что выполняется запрос состояния дискретных входов. Типы и предназначение команд может отличаться у разных производителей.
Адрес – адрес устройства на шине к которому выполняется запрос. Адреса могут быть от "00" до "FF". Адрес 0 – широковещательный.
Данные для передачи – предназначены для передачи данных в устройство (например включение выхода) или, например, для указания номера аналогового ввода при поканальном считывании. Данный элемент запроса может отсутствовать – например, при считывании всех каналов аналогового модуля ввода или при считывании маски состояния дискретных входов.
Контрольная сумма – два символа, подсчитанных на основе значений всех символом запроса, за исключением символа "возврат каретки".
Символ CR ("возврат каретки") – флаг окончания кадра запроса/передачи.
Структура ответа у протокола DCON выглядит следующим образом:
Команда (1 символ) |
Данные |
Контрольная сумма (2 символа) |
Символ CR ("перевод каретки") |
Команда – содержит символ корректности ответа. Например, если запрос к модулю аналогового ввода (команда "#") прошел успешно, то будет возвращен символ ">". Если же возникла ошибка (некорректный номер канала, неподдерживаемая функция), то прибор вернет символ "?". Типы и предназначение символов корректности ответа у разных производителей могут отличаться.
Данные – полученные от прибора данные. Структура данных может отличаться у разных производителей.
В качестве примера мы рассмотрим поддержку 8-канального модуля аналогового ввода МВ110-8АС, фирмы ОВЕН. Описание устройства можно найти на официальном сайте производителя:
http://www.owen.ru/catalog/25995284
Мы будем производить считывание показаний всех входов. Для этого применяется команда "#". Пример посылки запроса выглядит следующим образом:
#AA[CHK](cr)
Где, АА – адрес модуля, [CHK] – контрольная сумма.
Если запрос будет выполнен корректно, то прибор вернет данные в следующем формате:
>(данные)[CHK](cr)
Пример такого ответа будет выглядеть так:
>+100.23+34.050+124.56+07.331-101.45+1038.9-50.501+05.880[CHK](cr).
Как мы видим вначале идет символ ">", который сообщает что запрос был выполнен корректно и данные получены. Затем идет восемь блоков по семь символов в каждом. Каждый блок – это измеренное значение в канале модуля. Блок содержит символ отрицательного и положительного числа. Затем следует измеренное значение в виде числа с плавающей запятой. Положение разделительной точки меняется в зависимости от результата измерения.
Если в каком-либо из каналов была ошибка измерения (например обрыв датчика), то прибор возвращает значение "-999.90".
После блоков с данными следует контрольная сумма и перевод каретки.
Аналогичная структура запроса и ответа используется и во множестве других модулей аналогового ввода – ОВЕН МВА, ICP DAS I-7017, I-7018 и других.
Реализуем опрос данного модуля в нашем OPC сервере.