Материал: ModbusProtocol-VKT7_ТЕД3

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ВКТ-7

Реализация протокола МОДБАС

с. 6

 

 

 

Кадр Modbus состоит из следующих элементов:

поля адреса;

поля функции;

поля данных;

контрольной суммы.

Ниже рассмотрено более подробно назначение отдельных полей:

адрес – 8-разрядное число в диапазоне 0-99 (сетевой номер прибора), служащее для правильной адресации запроса получателю. На запрос с нулем в качестве сетевого адреса ответит любой прибор (кроме приборов со встроенным адаптером RS-485) – так называемый широковещательный запрос. Его можно применять только при подключении точка-точка, то есть при подключению к компьютеру одного прибора;

Примечание При использовании вычислителей со встроенным адаптером RS-485, настроенным на расширенный режим адресации, первым байтом посылки (до поля «Адрес») должен быть байт «расширенный адрес». Для всех вычислителей со встроенным адаптером RS-485 независимо от режима адресации не допускается использование адреса 0.

функция – 8 разрядное значение. При передаче сообщения от ведущего к ведомому поле функции задает последнему действие, которое он должен выполнить. При ответе ведомого значение поля функции указывает, произошел ли обмен нормально или возникло исключение. В нормальном ответе используется тот же код функции, что и в запросе. Возникновение исключения приводит к передаче ответа с кодом функции, в котором старший бит установлен, а остальные биты такие же, как в коде функции запроса. При связи с вычислителем ВКТ- 7 используются два кода функций: 0x03 (чтение) и 0x10 (запись);

данные — это последовательность 8-разрядных чисел. Поле данных сообщений, передаваемых ведущим ведомому, содержит предназначенную последнему дополнительную информацию, зависящую от кода функции. Дополнительная информация содержится в двух служебных элементах, каждый из которых представлен двумя 8-разрядными числами. Первый из этих служебных элементов – «Начальный адрес», второй – «Количество реги-

стров». Более подробная структура кадров запроса и ответа будет рассмотрена для каждой функции отдельно;

контрольная сумма — 16-разрядное поле, необходимое для контроля целостности кадра. Рассчитывается по алгоритму Crc16 (см. Приложение А).

2.1Отступления от требований стандарта Modbus в протоколе в ВКТ-7

Все поля в кадрах Modbus, имеющие длину более 1-го байта, должны передаваться в следующем порядке: сначала младший байт, затем старший. Это требование не относится к полям «Начальный адрес» и «Количество регистров». Они должны передаваться в следующем порядке: сначала старший байт, затем младший байт;

Поле «Количество регистров» не анализируется прибором при обработке запроса и может быть установлено в произвольное значение, если иное не оговорено специально при описании запроса;

Граница кадра определяется фиксированным интервалом тишины длительностью 62.5 мс или по переполнению входного буфера длиной 264 байта.

ВКТ-7

Реализация протокола МОДБАС

с. 7

 

 

 

3 Структура запросов/ответов в сетевом протоколе Modbus

В данном разделе поясняется структура запросов/ответов, используемых при получении данных из тепловычислителя ВКТ-7. Конкретные значения полей кадров Modbus приведены в разделе «Возможные варианты запросов».

Корректная работа по протоколу Modbus возможно только с приборами, имеющими версию ПО 1.5 и более.

3.1Структура запросов/ответов для операции 0х03 («чтение»)

Запрос:

Адрес;

Функция – 0х03;

Начальный адрес (НАст.б) (старший байт);

Начальный адрес (НАмл.б) (младший байт);

Количество регистров (КРст.б) (старший байт);

Количество регистров (КРмл.б) (младший байт);

Контрольная сумма (КСмл.б) (младший байт);

Контрольная сумма (КСст.б) (старший байт);

Структура запроса на чтение приведена на рисунке.

 

 

 

 

 

 

 

А

0х03 НА (ст.б)

НА (мл.б) КР (ст.б)

КР (мл.б) КС (мл.б)

КС (ст.б)

Значения полей «Начальный адрес» и «Количество регистров» для конкрет-

ных запросов будут приведены ниже.

Ответ:

В случае успешного обмена вычислитель присылает ответ следующего формата:

адрес (значение, скопированное из запроса);

функция (значение, скопированное из запроса).

количество байт данных (КБ);

секция данных длиной «количество байт данных»;

Контрольная сумма (младший байт);

Контрольная сумма (старший байт).

Структура ответа на команду чтения приведена на рисунке.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А

0х03

КБ

Данные

КС (мл.б)

КС (ст.б)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если при обработке запроса возникло какое-либо исключение, то вычислитель устанавливает в поле функции старший бит. Это означает, что следует проанализировать код исключения, расположенный в следующем байте (расшифровка кодов ошибок приведена ниже для каждого запроса в отдельности). Ответ вычислителя с кодом ошибки имеет следующий формат:

адрес (значение, скопированное из запроса);

функция (значение, скопированное из запроса, с установленным старшим битом);

код ошибки (КО);

Контрольная сумма (младший байт);

Контрольная сумма (старший байт).

Структура ответа на команду чтения при возникновении исключения приведена на рисунке.

А

0х83

КО КС (мл.б)

 

КС (ст.б)

ВКТ-7

Реализация протокола МОДБАС

с. 8

 

 

 

3.2Структуразапросов/ответов для операции 0х10 («запись»)

Запрос:

Адрес;

0х10;

Начальный адрес (старший байт);

Начальный адрес (младший байт);

Количество регистров (старший байт);

Количество регистров (младший байт);

Количество записываемых байт данных;

Записываемые данные;

Контрольная сумма (младший байт);

Контрольная сумма (старший байт).

Структура запроса на запись приведена на рисунке.

А 0х10 НА (ст.б) НА (мл.б) КР (ст.б) КР (мл.б) КБ Данные КС (мл.б) КС (ст.б)

Значения полей «Начальный адрес» и «Количество регистров» для конкрет-

ных запросов будут приведены ниже.

Ответ:

В случае успешного обмена вычислитель присылает ответ следующего формата:

адрес (значение, скопированное из запроса);

функция (значение, скопированное из запроса);

Начальный адрес (старший байт; значение, скопированное из запроса);

Начальный адрес (младший байт; значение, скопированное из запроса);

Количество регистров (старший байт; значение, скопированное из запроса);

Количество регистров (младший байт; значение, скопированное из запроса);

Контрольная сумма (младший байт);

Контрольная сумма (старший байт).

Структура ответа на команду записи приведена на рисунке.

 

 

 

 

 

 

 

А

0х10 НА (ст.б)

НА (мл.б) КР (ст.б)

КР (мл.б) КС (мл.б)

КС (ст.б)

Если при обработке запроса возникло какое-либо исключение, то вычислитель устанавливает в поле функции старший бит. Это означает, что следует проанализировать код исключения, расположенный в следующем байте (расшифровка кодов приведена ниже для каждого запроса в отдельности). Ответ вычислителя с кодом ошибки имеет следующий формат:

адрес (значение, скопированное из запроса);

функция (значение, скопированное из запроса, с установленным старшим битом);

код ошибки;

Контрольная сумма (младший байт);

Контрольная сумма (старший байт).

Структура ответа на команду записи при возникновении исключения приведена на рисунке.

А

0х90

КО КС (мл.б)

 

КС (ст.б)

ВКТ-7

Реализация протокола МОДБАС

с. 9

 

 

 

4 Возможные варианты запросов

Во всех примерах запросов будет использоваться:

сетевой адрес, равный нулю;

Frame – массив элементов типа char;

CheckSum l – младший байт контрольной суммы,

CheckSum h – старший байт контрольной суммы.

4.1Запрос на чтение перечня активных элементов данных

Запрос предназначен для получения перечня активных элементов и определения размера элементов в байтах. Размер элемента нужен для того, чтобы из принятого пакета данных «взять» необходимое количество байт.

Начальный адрес = 0x3FFC; Количество регистров = 0х0000.

Пример:

Frame [0] = 0x00; Frame [1] = 0x03; Frame [2] = 0x3F; Frame [3] = 0xFC; Frame [4] = 0x00; Frame [5] = 0x00; Frame [6] = CheckSum l; Frame [7] = CheckSum h;

Готовый вариант запроса:

0x00 0x03 0x3f 0xfc 0x00 0x00 0x88 0x3f

Перечень активных элементов является массивом структур. Структура имеет два поля:

условный адрес элемента (4 байта) (см. ниже перечисление, описывающее все элементы данных);

размер элемента в байтах (2 байта).

4.2Запрос на запись перечня элементов для чтения

Запрос предназначен для того, чтобы указать вычислителю значения каких именно элементов данных следует присылать в ответ на запрос «Чтение данных…». После успешного выполнения этого запроса прибор будет присылать значения только для тех элементов данных, логические адреса которых присутствовали в записанном перечне.

Перечень элементов для чтения, также как и перечень активных элементов, является массивом структур. Структуры имеют такие же поля, как и в перечне активных элементов. Перечень элементов для чтения формируется из перечня активных элементов.

Начальный адрес = 0x3FFF; Количество регистров = 0х0000.

Поле условного адреса в элементе массива должно быть сформировано следующим образом:

«условный адрес» | 0x40000000,

Примечание Символ «|» означает операцию побитового «ИЛИ».

ВКТ-7

Реализация протокола МОДБАС

с. 10

 

 

 

Значение поля размера данных в записываемом элементе массива должно быть равно значению поля размера данных из элемента массива, полученного при чтении перечня активных элементов (для соответствующей величины) (о формировании поля размера данныхдля «свойств» читайте в пункте «Получение «свойств»»).

Пример:

Нужно записать массив из N элементов (размер элемента равен 4+2 = 6 байт).

Frame [0 ] = 0x00;

Frame [1 ] = 0x10; Frame [2 ] = 0x3F; Frame [3 ] = 0xFF; Frame [4 ] = 0x00; Frame [5 ] = 0x00; Frame [6 ] = 6*N;

Frame [7 ] = младший байт элемента;

………..

Frame [12] = старший байт элемента;

………..

Frame [6*N+7] = CheckSum l; Frame [6*N+8] = CheckSum h;

Готовый вариант запроса:

(запись массива для чтения из двух элементов: t1(ТВ1) и V1(ТВ1))

0x00 0x10 0x3f 0xff 0x00 0x00 0x0c 0x00 0x00 0x00 0x40 0x02 0x00 0x03 0x00 0x00 0x40 0x04 0x00 0xa2 0x5c

Прибор присылает ответ в виде стандартного подтверждения записи. Возможные коды исключений:

5 – размер массива больше максимально возможного;

2 – задан несуществующий элемент.

4.3Запрос на запись типа значений

Запрос предназначен для того, чтобы указать вычислителю, значения какого типа следует присылать в ответ на запрос «Чтение данных…».

Начальный адрес = 0x3FFD; Количество регистров = 0х0000 Возможные типы значений:

0-часовой архив;

1-суточный архив;

2-месячный архив;

3-итоговый архив;

4-текущие значения;

5-итоговые текущие;

6-свойства.