5) Поле данных содержит информацию, необходимую sLi для выпол-нения указанной функции, или содержит данные sLi, собранные для ответа на запрос.
7) Поле контрольной суммы позволяет MS и SL проверять сообще-ние на наличие ошибок. Сообщения с ошибками и SL, и MS игнорируют. В режиме ASCII в поле контрольной суммы используется LRC, а в режиме RTU – CRC.
LRC (Longitudinal Redundancy Check) - контрольная сумма представ-ляется 8-ми разрядным числом, передаваемым двумя ASCII символа (hex). Контрольная сумма образуется путем конвертирования всех символов в двоичные числа, сложением этих чисел без учета переноса, и вычислением дополнительного кода полученного числа. В приемнике LRC заново рас-считывается и сравнивается с полученым LRC. При вычислении LRC двоеточие, CR, LF и любой другой не ASCII символ отбрасывается.
CRC-16 (Cyclic Redundancy Check) рассматривает все сообщение (то-лько биты данных без учета старт/стоповых бит и бит четности) как одно последовательное двоичное число, у которого старший значащий бит пере-дается первым. Сообщение защищается полиномом вида: Х16+Х15+Х2+1.
11.1.3. Пользовательский уровнь Modbus определяет то, каким об-разом с помощью данного интерфейса могут решаться производственные задачи.
1) Система команд, предназначенных для взаимодействия в сети Modbus, представлена в табл. 11.3.
В процессе взаимодействия MS с SL в дополнении к тем ситуациям, когда на канальном уровне индицируется ошибка по контрольной сумме, SL в коде функции может устанавливать значение S=1 при выявлении сле-дующих исключительных пользовательских ситуаций:
– функция в принятом сообщении не поддерживается на данном SL;
– значения в поле данных не допустимы для данного SL;
– адрес в поле данных не допустим для данного SL;
– значения в поле данных не допустимы для данного SL;
– SL не может ответить на запрос или произошла авария;
– SL принял запрос и начал выполнять долговременную операцию про-граммирования;
– сообщение принято без ошибок, но SL в данный момент выполняет долговременную операцию программирования. Запрос необходимо ретран-слировать позднее;
– функция программирования не может быть выполнена.
Т а б л и ц а 11.3.
Код | Название | Действие |
01 | READCOIL STATUS | СЧИТАТЬтекущее состояние (ON/OFF) группы логических ячеек. |
02 | READINPUTSTATUS | СЧИТАТЬтекущее состояния (ON/OFF) группы дискретных входов. |
03 | READHOLDING .REGISTERS | СЧИТАТЬтекущие значения одного/нескольких регистров хранения. |
04 | READ INPUT REGISTERS | СЧИТАТЬтекущие значения одного/нескольких входных регистров. |
05 | FORCE SINGLE COIL | ЗАПИСАТЬсостояниеONилиOFFлогической ячейки. |
06 | FORCE SINGLE REGISTER | ЗАПИСАТЬновые значения в регистр хранения. |
15 | FORCE MULTIPLE COILS | ЗАПИСАТЬ состояние (ON/OFF) нескольких логических ячеек. |
16 | FORCEMULTIPLE REGISTERS | ЗАПИСАТЬновые значения нескольких последовательных регистров. |
17 | REPORT SLAVE I.D. | СЧИТАТЬ тип адресуемогоSLи его рабочее состояние. |
19 | RESET COMMUNI-CATIONS LINK | СБРОС SLв известное состояние после неустранимой ошибки. Сбрасывает счетчик принятых байт. |
11 | FETCH EVENT COUNTER COMMUNICATIONS | Позволяет MSпутем последовательной посылки одного сообщения определить выполнение операции. |
12 | FETCH COMMUNI-CATIONS EVENT LOG | Позволяет MSполучить из журнала связи ин-формацию о каждой передаче. Если передача не выполнена, в журнале фиксируется ошибка. |
13 | PROGRAM | Позволяет MSпрограммироватьSL. |
Остальные коды функций зарезервированы для развития . |
Рассмотрим примеры исполнения функций протокола ( числа пред-ставлены в hex-формате).
2) Чтение данных (функция -03) осуществляется сообщениями в форматах RTU и ASCII в соответствии с табл.11.4.
Т а б л и ц а 11.4.
-
Чтение данных из SL с адресом 06, из 3-х регистров, начиная с адреса 6B.
ЗАПРОС
RTU
ASCII
Заголовок
:
Адрес
0000
0110
0
6
Функция
0000
0011
0
3
Начальный адрес
H.O.
0000
0000
0
0
L.O.
0110
1011
6
В
Количество требуемых регистров
H.O.
0000
0000
0
0
L.O.
0000
0011
0
3
Поле контрольной суммы
0111
0101
8
9
1010
0000
Завершение
CR
LF
ОТВЕТ
RTU
ASCII
Заголовок
:
Адрес
0000
0110
0
6
Функция
0000
0011
0
3
Количество байт данных
0000
0110
0
6
Данные
Регистр 1
H.O
0000
0010
0
2
L.O.
0010
1011
2
B
Регистр 2
H.O.
0000
0000
0
0
L.O.
0000
0000
0
0
Реги-стр 3
H.O.
0000
0000
0
0
L.O.
0110
0011
6
3
Контрольная сумма
CRC
6
1
Завершение
CR
LF
Адресуемый SL посылает: свой адрес, код выполненной функции с указанием S=0/1 и информационное поле, которое содержит: 2 байта, оп-ределяющих количество байт данных. Длина каж-ого регистра данных – 2 байта. Первый байт данных в посылке является старшим, второй – млад-шим. Некоторые SL ограничивают количество регистров, передаваемых за один запрос. В этом случае для получения, большего числа регистров, необходимо выполнить несколько последовательных запросов.
3) Чтение дискретных входов (функция 02) позволяет пользователю получить состояние (ВКЛ/ОТКЛ) дискретных входов 197-218 из SL с деся-тичным адресом 17.
Ответное сообщение включает адрес SL, код функции, количество байт данных, байты данных и поле контрольной суммы. Данные упако-ваны по биту на каждый вход (1 = ON, 0 = OFF). Младший бит первого байта содержит значение первого адресуемого входа, за которым следуют остальные. Если количество запрошенных входов не кратно 8, то осталь-ные биты заполняются нулями. Количество байт данных всегда определяется как количество RTU данных.
Запрос | ||||||
Адрес | Команда
да | Размер поля данных | Контр. сумма | |||
Номер первой ячейки | Количество ячеек | |||||
Ст. байт
| Мл. байт | Ст. байт | Мл. байт | |||
11 | 02 | 00 | С4 | 00 | 16 | 13 |
Данные или буфер под данные - отсутствуют |
Ответ | ||||||
Адрес | Команда
да | Размер поля данных | Поле данных | Контр. сумма | ||
Дискр. входы 197-204 | Дискр. входы 205-212 | Дискр. входы 213-218 | ||||
Кол. байт | Байт 1 | Байт 2 | Байт 3 | |||
11 | 02 | 03 | AC | DB | 35 | 2E |
Статус входов 197…204 =ACh = 1010 1100. Читая слева направо, видим, что входы 204, 202, 200 и 199 в состоянии ON. Все остальные байты данных распаковываются аналогично. Так как было запрошено 22 линии, последний байт данных (35h =0011 0101) содержит только 6 входов (213…218) вместо 8-ми. Два последних бита заполняются нулями.
4) Запись одной ячейки (функция 05) позволяет модифицировать содержание одной логической ячейки. Ячейки нумеруются с нуля (ячейка 1= 0, ячейка 2 = 1 и т.д.). Число FF00h устанавливает ячейку в 1, а число 00 00– в 0. Другие числа не влияют на содержимое ячейки. Функция может использоваться в широковещательном режиме.
Запись «1» в ячейку с адресом 0173:
Адрес | Команда | Размер поля данных | Контр. сумма | |||
Номер первой ячейки | Индикатор/ управление | |||||
Ст. байт | Мл. байт | Ст. байт | Мл. байт
| |||
11 | 05 | 00 | AC | FF | 00 | 3F |
Данные или буфер под данные - отсутствуют |
Ответ: ответное сообщение полностью совпадает с запросом.
- 11. Промышленные сети modbus, can
- 11.1. Промышленная сеть Modbus
- 5) Поле данных содержит информацию, необходимую sLi для выпол-нения указанной функции, или содержит данные sLi, собранные для ответа на запрос.
- 11.2. Промышленная сеть can
- 1) Структура фрейма данных имеет два исполнения: стандартное (рис.11.4.) и расширенное (здесь рассматриваться не будет ).
- Поле данных - содержит до 8-ми байт данных.