Смекни!
smekni.com

Измерители-регуляторы малогабаритные (стр. 1 из 4)

ТРИМ

Протокол обмена

(руководство по программированию)

2.574.007 Д

СОДЕРЖАНИЕ

1 ПРОТОКОЛ MODBUS 3

1.1 Введение 3

1.2 Формат сообщения 3

1.3 Маркер начала сообщения 3

1.3.1 Поле адреса 4

1.3.2 Поле команды 4

1.3.3 Поле данных 4

1.3.4 Поле контрольной суммы (КС) 4

1.3.5 Пример расчета КС 4

2 КОМАНДЫ 5

2.1 Команда 0х03. Считать значения регистров настроек 5

2.2 Команда 0х04. Считать информацию регистров данных 6

2.3 Команда 0x10. Установить значение регистров настроек 7

3 ТИПЫ ПЕРЕМЕННЫХ и структуры данных 8

3.1 Типы переменных 8

3.1.1 Тип float 8

3.1.2 Тип int 9

3.1.3 Тип byte 9

3.2 Структура записи архива 9

3.3 Структура программы регулирования 10

Приложение А СОДЕРЖАНИЕ РЕГИСТРОВ ПАМЯТИ ПРИБОРА 13

Приложение Б Коды ошибок прибора 22

Настоящий протокол обмена 2.574.007 Д является приложением к 2.574.007 РЭ и содержит описание модификации протокола MODBUS для связи измерителя-регулятора ТРИМ (далее просто прибор) с персональным компьютером.

В описании переменных протокола во всем документе применяются следующие сокращения:

YY – адрес в шестнадцатиричной системе исчисления. Например 0х3А соответствует десятичному числу 58.

Запись 0x1AB LO, означает, что указанный параметр содержится в младшем (LO) байте регистра 0x1AB. Запись 0x1AB HI, означает, что указанный параметр содержится в старшем (HI) байте регистра 0x1AB.

1 ПРОТОКОЛ MODBUS

Введение

Протокол обмена предназначен для связи между приборами, объединенными в сеть с организацией обмена по принципу «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 знака

Рисунок 1 - Формат сообщения

Маркер начала сообщения

Сообщения начинаются маркером начала сообщения - знаком двоеточия (:) (0х3A), заканчиваются маркером конца сообщения - двумя байтами (0хD и 0хA).

1.3.1Поле адреса

Поле адреса содержит два знака. Адреса SLAVE находятся в десятичном диапазоне 0-127. Адрес 0 присваивается SLAVE, которые должны отвечать на ЗАПРОС с любым адресом.При формировании запроса MASTER в поле адреса сообщения устанавливает адрес запрашиваемого SLAVE, в ответе в поле адреса возвращается адрес SLAVE.

1.3.2 Поле команды

Поле команд содержит два знака - код команды. В ЗАПРОСЕ поле кода команды указывает устройству 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 - Структура ОТВЕТА в случае ошибки

1.3.3 Поле данных

Поле данных содержит:

· в ЗАПРОСЕ – дополнительную информацию, которую использует SLAVE для выполнения команды.

· В ОТВЕТЕ, при отсутствии ошибок – запрашиваемые данные, в случае ошибки – код ошибки (смотри - рисунок 2).

1.3.3 Пример расчета КС

а)сложить все байты в сообщении, за исключением маркеров начала и конца сообщения в однобайтном поле, исключая перенос.

б)выполнить операцию “дополнение до единицы” (вычесть полученное значение из числа 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 КОМАНДЫ

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 - Структура “ОТВЕТА” команды 04