logo search
АИУС / АИУС / Лекция 11

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) рассматривает все сообщение (то-лько биты данных без учета старт/стоповых бит и бит четности) как одно последовательное двоичное число, у которого старший значащий бит пере-дается первым. Сообщение защищается полиномом вида: Х16152+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

Данные или буфер под данные - отсутствуют

Ответ: ответное сообщение полностью совпадает с запросом.