Молниезащита
Промышленная автоматика
Статьи / Промышленная автоматика / Промышленная сеть Modbus
  26.01.12  |  

Промышленная сеть Modbus

Modbus - это открытый протокол, который поддерживается различными SCADA и УСО, а также различными автономными средствами коммерческого учета энергии и энергоносителей, средствами измерения текущих технологических параметров, автономными средствами  логического управления и регулирования.

        

         11.1.1. Физический уровень Modbus реализуется последовательной передачей сигналов в линиях связи интерфейсов типа «токовая петля», RS 232, RS485 в формате байта: с указанием количества бит данных, наличия бита проверки на четность и числа стоповых бит. Например: 8Р1 – 8 бит данных, бит паритета, один стоповый бит.

         Скорость обмена  устанавливается в зависимости от выбранного типа интерфейса и длины линии связи.

          Наиболее активно в Modbus на физическом уровне используется интерфейс RS485.

          Интерфейс RS-485 предназначен для создания линий связи с многоточечными соединениями. В стандарте RS-485 максимальная нагрузка передатчика определяется 32-мя единичными нагрузками, где под  единичной нагрузкой понимается входной импеданс стандартного приемника RS-485 (12кОм). При этом максимальная длина линии связи составляет до 1200 м. Использование повторителей сигналов позволяет увеличить длину линии связи еще на 1200 м и позволяет добавить еще 32 узла (рис.12.2). И таких цепей-добавлений  через  повторитель может быть несколько.

 

Структура сети  с RS485 c повторителями  сигналов        

                   Рис.11.2.   Структура сети  с RS485 c повторителями  сигналов

            

          Электрические характеристики  RS485 представлены в табл. 11.1.

:                                                                                           Таблица  11.1.

Характеристики

Интерфейс RS-485

Режим работы  

Дифференциальный

Максимальная скорость передачи данных

10 Мбит/с  

Диапазон  выходного сигнала  

От  ± 1.5 В  до ± 5 В  

Максимальный ток короткого замыкания  

250 мА  

Сопротивление нагрузки Tx  

54 Ом  

Чувствительность по входу Rx  

± 200 мВ  

Максимальное входное сопротивление Rx  

12 кОм  

Диапазон напряжений входного сигнала Rx

от -7 В до +12 В  

Уровень логической единицы Rx  

> 200 мВ  

Уровень логического нуля Rx  

< 200 мВ  

 

         Дифференциальная передача сигнала в RS-485 обеспечивает надежную передачу данных в присутствии шумов, т.к. дифференциальные входы  могут подавлять значительные синфазные напряжения. Однако для защиты от помех больших уровней напряжений, которые обычно ассоциируются с электростатическим разрядом, электромагнитным разрядом от электроустановок или от молнии, необходимо принимать дополнительные меры.  

11.1.2.Канальный уровень Modbus поддерживает работу сети с двумя форматами передачи сообщений: ASCII (American Standard Code for Information Interchange) или RTU (Remote Terminal Unit). Смешивание  ре-жимов передачи сообщений в составе одной промышленной сети не до-пускается!

        1) Характеристики форматов передачи сообщений представлены в табл. 11.2:

                                                                                                      Таблица 11.2

Характеристика

Формат ASCII (7-бит)

Формат  RTU(8-бит)

Система кодирования

Используются ASCII

символы 0-9,A-F

8-битовая двоичная система

Стартовые биты

1

1

Биты данных

7 (млад. значащий бит –вперед)

8 (млад. значащий бит –вперед)

Четность

Есть/Нет

Есть/Нет

Стоповые биты

1 или 2

1 или 2

Контрольная сумма

LRC(Longitudinal Redundancy Check).

CRC16   (Cyclical Redundancy Check)

 

  В режиме RTU данные передаются непрерывным потоком в виде 8-ми разрядных двоичных кодов. В режиме ASCII каждый RTU код сначала делится на две 4-х разрядных части (старший и младший), каждая переводится в свой шестнадцатеричный эквивалент (hex), а затем используется в сообщении.

  В режиме ASCII допустима задержка до 1 секунды между двумя соседними символами.

          Бит четности может включаться в формат символа и в режиме RTU, и ASCII.  В режиме RTU это девятый бит в поле данных (8 бит данных + бит четности). В режиме ASCII это восьмой бит данных (7 бит данных + бит четности). Если контроль четности не используется, бит четности не передается. Внимание: все устройства в системе должны быть сконфигурированы одинаково.

         2)  Организация передачи сообщений в Modbus реализуется по принципу «ведущий (MS)- ведомый (SL)», т.е. все циклы обмена инициируются только ведущим устройством –мастером MS.  В Modbus только один  MS, а количество SL-узлов  определяется  в пределах адресной способности сети.

         MS, инициируя взаимодействие с SL, формирует адресуемые сообщения  двух типов:

– Тип 1:  кадр запроса  с адресом  i-того ведомого устройства SL i  -  кадр ответа. При этом MS посылает SL запрос и ждет на него ответ в течение временного интервала tс. Длительность интервала задается пользователем. Если в течение этого временного интервала MS получит ответ, то сразу же может формировать следующее обращение к этому же или другому SL. Если на заданном временном интервале tс ответное сообщение не будет получено, то MS цикл обмена данными считает не завершенным. Дальнейшее поведение MS определяется пользовательской программой.

– Тип 2:   один кадр широковещательного запроса всех SL без ответа. В этом случае широковещательные сообщения выполняются с адресом SL=0. При этом одновременно запрашиваются все SL и по этой причине ответного сообщения  от   SL не требуется.

3) Структура кадра сообщения в Modbus не зависит от направления передачи:

 

Адрес ведомого устройства SL (в том числе адрес общего запроса - 0)

Код команды ( функции -считать, запись и т.д.)

Размер поля данных

Данные или Буфер под данные

Контрольный CRC-код

 

            Кадровая синхронизация  при передаче сообщения осуществляется:

–  в режиме ASCII – передачей символа двоеточия ‘:’, указывающего на начало кадра, символов возврата каретки (CR) и перевода строки (LF), указывающих на конец кадра и готовность к приему ответного сообщения.

    

                          Формат кадра сообщения в режиме ASCII

Начало кадра

Адрес

Функция

Данные

Контрольная сумма

 

 

        :

2 символа

16-бит

2 символа

16 бит

N * 4 символа

N * 16 бит

2 символа

16 бит

CR

LF

 

– в режиме RTU - отслеживанием времени между приемом символов. Если прошло время, равное периоду следования 3.5 символов, а кадр не был завершен или не поступило нового символа, то устройство очищает кадр и предполагает, что следующий принимаемый байт - это адрес SL  в новом  сообщении.

 

                 Формат кадра сообщения в режиме RTU

Т1 Т2 Т3

Адрес

Функция

Данные

Контрольная сумма

Т1 Т2 Т3

8 бит

8 бит

N * 8 бит

16 бит

 

4) Поле адреса следует сразу за началом кадра и состоит из одного 8-ми разрядного символа в режиме RTU или 2-х символов в режиме ASCII. Эти биты указывают адрес SLi устройства, которое должно принять посланное MS сообщение  и ответить на него. Когда SLi посылает ответ, то адрес SLi информирует MS о том, от какого устройства пришло ответное сообщение. В широковещательном режиме с адресом SL =0: все SL интерпретируют такое сообщение как требование  выполнить определенное действие, без посылки подтверждения.

          5) Поле функции  содержит код функции, который указывает адресуемому SLi какое действие  должно быть выполнено, а также диагностический бит S –старший бит поля функции, который определяет ответное сообщение следующим образом: S=0, если ответное сообщение SLi повторяет запрос или в случае нормального сообщения; S=1, если  ответное сообщение не нормальное (ошибочное, недостоверное):

 

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

   b7

   b6

   b5

   b4

   b3

   b2

   b1

   b0

   S

                 Код функции  Modbus

S=0  -   все нормально;  S=1  признак  недостоверности, ошибки


            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

READ COIL

STATUS

СЧИТАТЬ текущее состояние (ON/OFF) группы  логических ячеек.

02

READ INPUT STATUS

СЧИТАТЬ текущее состояния (ON/OFF) группы дискретных входов.

03

READ HOLDING .REGISTERS

СЧИТАТЬ текущие значения одного/нескольких регистров хранения.

04

READ INPUT REGISTERS

СЧИТАТЬ текущие значения одного/нескольких входных регистров.

05

FORCE  SINGLE COIL

ЗАПИСАТЬ  состояние ON или OFF логической ячейки.

06

FORCE  SINGLE  REGISTER

ЗАПИСАТЬ  новые  значения  в  регистр хранения.

15

FORCE  MULTIPLE COILS

ЗАПИСАТЬ состояние (ON/OFF) нескольких  логических ячеек.

16

FORCE MULTIPLE 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

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

 

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

 




Другие статьи:

AS-i. Промышленная сеть AS-i
HART. Промышленная сеть HART
Промышленные сети АСУТП