ТРИМ
Протокол обмена
(руководство по программированию)
2.574.007 Д
СОДЕРЖАНИЕ
1.3.4 Поле контрольной суммы (КС) 4
2.1 Команда 0х03. Считать значения регистров настроек 5
2.2 Команда 0х04. Считать информацию регистров данных 6
2.3 Команда 0x10. Установить значение регистров настроек 7
3 ТИПЫ ПЕРЕМЕННЫХ и структуры данных 8
3.3 Структура программы регулирования 10
Приложение А СОДЕРЖАНИЕ РЕГИСТРОВ ПАМЯТИ ПРИБОРА 13
Приложение Б Коды ошибок прибора 22
Настоящий протокол обмена 2.574.007 Д является приложением к 2.574.007 РЭ и содержит описание модификации протокола MODBUS для связи измерителя-регулятора ТРИМ (далее просто прибор) с персональным компьютером.
В описании переменных протокола во всем документе применяются следующие сокращения:
0хYY – адрес в шестнадцатиричной системе исчисления. Например 0х3А соответствует десятичному числу 58.
Запись 0x1AB LO, означает, что указанный параметр содержится в младшем (LO) байте регистра 0x1AB. Запись 0x1AB HI, означает, что указанный параметр содержится в старшем (HI) байте регистра 0x1AB.
Протокол обмена предназначен для связи между приборами, объединенными в сеть с организацией обмена по принципу «MASTER - SLAVE» («Ведущий – ведомый»). При этом лишь MASTER может инициировать операции, называемые ЗАПРОС. SLAVE на ЗАПРОС формируют сообщение ОТВЕТ.
Обмен осуществляется в режиме последовательной передачи. Параметры последовательного обмена должны быть одинаковы для всех приборов в сети MODBUS и иметь следующий формат: 1 старт-бит, 8 бит данных, 1 стоп-бит.
Протокол MODBUS определяет структуру сообщений ЗАПРОС и ОТВЕТ. Каждый байт в сообщении посылается как два знака ASCII. Главным преимуществом данного режима является то, что он позволяет иметь различные интервалы времени между посылками, без появления ошибки.
Формат Сообщения
Формат сообщения представлен на рисунке 1. Любой байт адреса, команды или данных представляется в виде двух ASCII знаков: в числе 0х62 знаки «6» и «2» представляются и передаются, как 0х36 и 0х32.
Старт | Адрес | Команда | Данные | КС | Стоп |
1 знак | 2 знака | 2 знака | N знаков | 2 знака | 2 знака |
Сообщения начинаются маркером начала сообщения - знаком двоеточия (:) (0х3A), заканчиваются маркером конца сообщения - двумя байтами (0хD и 0хA).
Поле адреса содержит два знака. Адреса SLAVE находятся в десятичном диапазоне 0-127. Адрес 0 присваивается SLAVE, которые должны отвечать на ЗАПРОС с любым адресом.При формировании запроса MASTER в поле адреса сообщения устанавливает адрес запрашиваемого SLAVE, в ответе в поле адреса возвращается адрес SLAVE.
Поле команд содержит два знака - код команды. В ЗАПРОСЕ поле кода команды указывает устройству SLAVE, какое действие предпринять. В ОТВЕТЕ поле команды служит для подтверждения приема ЗАПРОСА. В случае приема без ошибок поле команды повторяет код команды.
При ошибке поле команды содержит признак ошибки, сформированный, как код команды, в старшем бите которого значение 1, дополнительно в поле данных ОТВЕТА помещается уникальный код ошибки.
Коды ошибок приведены в приложении Б.
Например, в поле команды запроса содержится код команды
03h (0000 0011 b) – “Считать информацию регистров настроек”.
Если SLAVE без ошибок принял ЗАПРОС, то в поле адреса ОТВЕТА повторяется исходный код команды 03 (0000 0011 b), в случае ошибки
ОТВЕТ содержит признак ошибки и код ошибки (см. рисунок 2).
ОТВЕТ | |
Название поля | |
Поле адреса SLAVE | 0х5 (0000 0101 b) |
Поле команды | 0х83 (1000 0011 b) |
Поле данных | 0х20 (0010 0000 b) |
КС | --- |
Рисунок 2 - Структура ОТВЕТА в случае ошибки
Поле данных содержит:
· в ЗАПРОСЕ – дополнительную информацию, которую использует SLAVE для выполнения команды.
· В ОТВЕТЕ, при отсутствии ошибок – запрашиваемые данные, в случае ошибки – код ошибки (смотри - рисунок 2).
а)сложить все байты в сообщении, за исключением маркеров начала и конца сообщения в однобайтном поле, исключая перенос.
б)выполнить операцию “дополнение до единицы” (вычесть полученное значение из числа 0хFF).
в)выполнить операцию “дополнение до двух”, прибавив число 01 к полученному результату п.б). Пример такой операции показан в таблице1.
Таблица 1
Адрес | 02h | 0000 0010 b |
Поле команды | 01h | 0000 0001 b |
Поле данных 1 | 00h | 0000 0000 b |
Поле данных 2 | 00h | 0000 0000 b |
Поле данных 3 | 00h | 0000 0000 b |
Поле данных 4 | 08h | 0000 1000 b |
Результат п.1) | 0Bh | 0000 1011 b |
Результат п.2) | F4h | 1111 0100 b |
КС (Результат п.3) | F5h | 1111 0101 b |
2.1 Команда 0х03. Считать значения регистров настроек
Команда 0х03 служит для чтения регистров настроек.
ЗАПРОС определяет адрес SLAVE, начальный адрес и число регистров настроек, значение которых необходимо считать.
Адреса регистров настроек приведены в приложении А (таблица А1).
На рисунке 3 приведен пример “ЗАПРОСА” на чтение регистров настроек 2-4 SLAVE c адресом 17 (0х11).
ЗАПРОС | |
Название поля | |
Адрес SLAVE | 0х11 |
Код команды | 0x03 |
Начальный адрес HI | 0x00 |
LO | 0x01 |
Число регистров HI | 0x00 |
LO | 0x03 |
КС | -- |
Рисунок 3 - Структура ЗАПРОСА команды 03.
ОТВЕТ содержит адрес SLAVE, код команды, поле регистров настроек и число байт в поле регистров настроек. Содержимое регистра является шестнадцатиразрядным числом (два байта). На рисунке 4 приведен пример “ОТВЕТА” на ЗАПРОС.
ОТВЕТ | |
Название поля | |
Адрес SLAVE | 0x11 |
Код команды | 0x03 |
Число байт | 0x06 |
Регистр настроек 02h HI | 0x00 |
LO | 0x0A |
Регистр настроек 03h HI | 0x00 |
LO | 0x0B |
Регистр настроек 04h HI | 0x00 |
LO | 0x0C |
КС | -- |
Рисунок 4 – Структура ОТВЕТА команды 03
Команда 0х04. Считать информацию регистров данных
Команда 0х04 служит для чтения регистров данных.
ЗАПРОС определяет адрес “SLAVE”, начальный адрес и число регистров данных, значения которых необходимо считать. Адреса регистров данных приведены в приложении А (таблица А2). На рисунке 5 приведен пример запроса на считывание регистров данных 2-4 “SLAVE” c адресом
17 (0х11).
ЗАПРОС | |
Название поля | |
Адрес SLAVE | 0х11 |
Код команды | 0х04 |
Начальный адрес HI | 0х00 |
LO | 0х01 |
Число регистров HI | 0х00 |
LO | 0х03 |
КС | -- |
Рисунок 5 - Структура “ЗАПРОСА” команды 0x04.
ОТВЕТ содержит адрес “SLAVE”, код команды, поле регистров данных и число байт в поле регистров данных. Содержимое регистра является шестнадцатиразрядным числом и содержит два байта.
На рисунке 6 приведен пример “ОТВЕТА” на “ЗАПРОС”.
ОТВЕТ | |
Название поля | |
Адрес SLAVE | 0х11 |
Код команды | 0х04 |
Число байт | 0х06 |
Регистр данных 02h HI | 0х00 |
LO | 0х0А |
Регистр данных 03h HI | 0х00 |
LO | 0х0B |
Регистр данных 04h HI | 0х00 |
LO | 0х0C |
КС | -- |
Рисунок 6 - Структура “ОТВЕТА” команды 0х04