Материал: ModbusProtocol-VKT7

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

ВКТ-7

Реализация протокола Модбас

с. 6

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

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

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

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

Запрос:

Адрес;

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

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

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

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

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

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

Контрольная сумма (КСст.б) (старший байт); Структура запроса на чтение приведена на рисунке.

 

 

 

 

 

 

 

А

0х03 НА (ст.б) НА (мл.б) КР (ст.б) КР (мл.б) КС (мл.б) КС (ст.б)

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

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

Ответ:

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

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

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

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

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

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

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

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

 

 

 

Данные

 

 

А

0х03

КБ

КС (мл.б) КС (ст.б)

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

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

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

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

ВКТ-7

Реализация протокола Модбас

с. 7

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

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

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

 

 

 

 

А

0х83

КО КС (мл.б) КС (ст.б)

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

Запрос:

Адрес;

0х10;

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

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

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

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

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

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

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

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

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

 

 

 

 

 

 

 

 

 

А

0х10 НА (ст.б) НА (мл.б) КР (ст.б) КР (мл.б) КБ

Данные

КС (мл.б) КС (ст.б)

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

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

Ответ:

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

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

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

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

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

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

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

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

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

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

 

 

 

 

 

 

 

А

0х10 НА (ст.б) НА (мл.б) КР (ст.б) КР (мл.б) КС (мл.б) КС (ст.б)

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

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

ВКТ-7

Реализация протокола Модбас

с. 8

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

код ошибки;

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

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

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

 

 

 

 

А

0х90

КО КС (мл.б) КС (ст.б)

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Запрос на запись перечня элементов для чтения

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

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

ВКТ-7

Реализация протокола Модбас

с. 9

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

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

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

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

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

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

Пример:

Нужно записать массив из 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-текущие значения;

ВКТ-7

Реализация протокола Модбас

с. 10

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

6-свойства.

Пример:

Frame [0 ] = 0x00;

Frame [1 ] = 0x10; Frame [2 ] = 0x3F; Frame [3 ] = 0xFD; Frame [4 ] = 0x00; Frame [5 ] = 0x00; Frame [6 ] = 0x02;

Frame [7 ] = тип значений; Frame [8 ] = 0x00;

Frame [9 ] = CheckSum l; Frame [10] = CheckSum h;

Готовый вариант запроса: (тип значений– суточный архив)

0x00 0x10 0x3f 0xfd 0x00 0x00 0x02 0x01 0x00 0x71 0x42

Прибор присылает ответ в виде стандартного подтверждения записи. Возможный код ошибки - 2 (несуществующий тип значений).

4.4Запрос на запись даты

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

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

Дата передается в формате VT_DATA_RAP (описание в Приложении Б). Пример:

Frame [0 ] = 0x00;

Frame [1 ] = 0x10; Frame [2 ] = 0x3F; Frame [3 ] = 0xFB; Frame [4 ] = 0x00; Frame [5 ] = 0x00; Frame [6 ] = 0x04; Frame [7 ] = день; Frame [8 ] = месяц; Frame [9 ] = год; Frame [10] = час;

Frame [11] = CheckSum l; Frame [12] = CheckSum h;

Готовый вариант запроса: (30 января 2003г. 0 часов)

0x00 0x10 0x3f 0xfb 0x00 0x00 0x04 0x1e 0x01 0x03 0x00 0xfa 0xaf

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

3 – в архиве отсутствуют данные за эту дату.

Источник: https://studfile.net/preview/16521248/