Описание протокола

<< 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 сервере.