3 1 modbus protocol

30
Промислові мережі та інтеграційні технології Мережі та протокол MODBUS реєстрація [email protected] автор і лектор: Олександр Пупена ([email protected]) зворотній зв’язок по курсу: Інтернет-форум АСУ в Україні (www.asu.in.ua) 30.03.2015 NET - Modbus [email protected] 1

Upload: alexandr-pupena

Post on 15-Jul-2015

164 views

Category:

Engineering


7 download

TRANSCRIPT

Page 1: 3 1 Modbus Protocol

Промислові мережі та інтеграційні технології

Мережі та протокол MODBUS

реєстрація [email protected] автор і лектор: Олександр Пупена ([email protected])

зворотній зв’язок по курсу: Інтернет-форум АСУ в Україні (www.asu.in.ua)

30.03.2015 NET - Modbus [email protected] 1

Page 2: 3 1 Modbus Protocol

Історія Modbus: PLC Modicon

30.03.2015 NET - Modbus [email protected] 2

DO

прикладна програма

Discrete Outputs (Coils) 0x

Discrete Inputs 1x

Input Registers 3x

Output (Holding) Registers 4x

пам'ѐть

DI

AI

AO

PLC Modicon

Створений в 1978 Modicon Inc. (тоді Gould Electronics зараз в складі Schneider Electric) длѐ обміну між ПЛК та іншими пристроѐми по інтерфейсу RS232

Modbus – MODicon BUS

Modicon 984 PLC Memory

Де і коли з'ѐвивсѐ Modbus?

Page 3: 3 1 Modbus Protocol

Історія Modbus: PLC Modicon деталі адресації

30.03.2015 NET - Modbus [email protected] 3

• Кожна область пам'ѐті (0x, 1x, 3x, 4x) починається з 1

• область 0x, 1x (біти) – адресаціѐ побітова • область 3x, 4x (регістри) – адресаціѐ по

словам • область 1x, 3x (входи) – доступна тільки для

читання

DO

прикладна програма

Discrete Outputs (Coils) 0x

Discrete Inputs 1x

Input Registers 3x

Output (Holding) Registers 4x

пам'ѐть

DI

AI

AO

PLC Modicon

000001

000002

100001 100002

300001

300002

400001 400002

У ѐкій послідовності розміщені дані в Modicon?

Page 4: 3 1 Modbus Protocol

пр

икл

адн

а

пр

огр

ама

Ре

аліз

ація

MO

DB

US

Історія Modbus: доступ до даних (data) контролерів Modicon

30.03.2015 NET - Modbus [email protected] 4

ПЛК/ОП/ПК SCADA

читання/запис Coils

читання/запис Holding Registers

читання Discrete Inputs

читання Input Registers

Мережа Modbus

Призначеннѐ – читаннѐ/запис комірок пам'ѐті контролерів Modicon, зчитуваннѐ діагностичних даних

Яке призначеннѐ Modbus?

Page 5: 3 1 Modbus Protocol

Modbus: розвиток та стандартизація

30.03.2015 NET - Modbus [email protected] 5

Розвиток • 1978 – виникненнѐ Modbus (поверх RS-232) • Modbus RTU/ASCII (RS232, RS485 …) • Modbus + (Modbus Plus) • Modbus TCP/IP

Стандартизація • з самого початку – відкритий, став стандартом де-факто • 2005 - Modbus-IDA (зараз Modbus Organization, Inc)

www.modbus.org • 2010 - IEC 61784-5-15 specifies the installation profiles for

CPF 15/1 (MODBUS -TCP) and CPF 15/2 (RTPS). http://webstore.iec.ch/preview/info_iec61784-5-15%7Bed1.0%7Den.pdf

Як розвивавсѐ?

Page 6: 3 1 Modbus Protocol

Мережі на основі протоколу Modbus

30.03.2015 NET - Modbus [email protected] 6

www.Modbus.org

Длѐ всіх мереж спільний протокол прикладного рівнѐ* (Application Layer) – Modbus Protocol

*Протокол прикладного рівнѐ – система правил взаюмодії прикладних процесів (програм).

http://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf

Які мережі?

Page 7: 3 1 Modbus Protocol

Сервіси(функції) Modbus

30.03.2015 NET - Modbus [email protected] 7

Сервіси* (функції) • читаннѐ Discrete Inputs (1x) • читаннѐ/запис Coils (0x) • читаннѐ Input Registers (3x) • читаннѐ/запис Outputs (Holding) Registers (4x) • читаннѐ/запис записів файлів • ідентифікаціѐ пристроя • читаннѐ діагностичної інформації • додаткові

Два типи прикладних процесів (програм): • Modbus Server – виконую Modbus-

функції: надаю доступ до даних (процесу, діагностичних…) на пристрої длѐ читаннѐ/запису а також до інших команд

• Modbus Client – ініціяю виконаннѐ функцій Modbus Server'а: доступаютьсѐ до його даних та може ініціявати виконаннѐ команди на ньому

Modbus Client Modbus Server

обмін даними процесу

обмін параметрични

ми даними

діагностичні сервіси

керування режимом пристрою

Комунікаційний сервіс * – послуги, що надаються комунікацією пристрою або

його частиною (мережною картою, драйвером, функцією…). Сервіси прикладного

рівня – послуги що надається прикладним рівнем.

Які сервіси?

Page 8: 3 1 Modbus Protocol

Modbus архітектура

30.03.2015 NET - Modbus [email protected] 8

різні типи засобів: контролери (PLC), SCADA/HMI, розподілений ввід/вивід (I/O), електроприводи (Drive), інші засоби (Device)

Які засоби?

Page 9: 3 1 Modbus Protocol

Modbus Protocol – відкритий протокол

30.03.2015 NET - Modbus [email protected] 9

• не тільки Modicon (Schneider Electric) • доступний будь-ѐкому розробнику та інтегратору • популѐрність (реалізований практично у всіх

брендах) • реалізовуютьсѐ різними способами (відкритий

програмний код, мікропрограма, частина операційної системи…)

Modbus

PLC PLC PLC PLC

регулѐтор перетворявач частоти

розподілений ввід/вивід

SCADA/HMI

Які виробники, тільки Modicon?

Page 10: 3 1 Modbus Protocol

Приклади моделі даних (data) різних пристроїв, що підтримують Modbus Protocol

30.03.2015 NET - Modbus [email protected] 10

AI

Q (QW, QX…)

I (IW, IX…)

DB/DI

Timers, Counters…

пам'ѐть DO

PLC S7 300

Ре

аліз

ація

MO

DB

US

M (MW,MX…)

DI

AO

AI

%IW

%MW

Unlocated

пам'ѐть

DO

PLC M340

Ре

аліз

ація

MO

DB

US

%M

DI

AO

%I

%QW %Q

M1

Перетворявач частоти

пам'ѐть

Ре

аліз

ація

MO

DB

US

задана частота

дійсна частота

напруга на двигуні

струм на двигуні

Засоби зовсім різні, хіба у них не різна модель даних?

Page 11: 3 1 Modbus Protocol

Модель даних пристроїв vs моделі даних PLC Modicon

30.03.2015 NET - Modbus [email protected] 11

те саме? те саме?

Це не дискретні входи чи виходи,

не аналогові входи чи виходи.

Тоді що це?

Якщо дані пристрої підтримують протокол Modbus, то ми можемо наприклад прочитати/записати їх дискретні виходи чи не так?

Хоч це теж Modicon!

Page 12: 3 1 Modbus Protocol

Доступ до даних пристроїв через Modbus?

30.03.2015 NET - Modbus [email protected] 12

прикладна програма

До чого тоді ми звертаємось коли наприклад читаємо або пишемо Coils? В якому розділі стандарту це можна дізнатися?

Page 13: 3 1 Modbus Protocol

Принципи Modbus Mapping (Відображення даних)

30.03.2015 NET - Modbus [email protected] 13

фізична пам'ѐть

Пристрій

Реа

ліз

аціѐ

MO

DB

US

"віртуальна" пам'ѐть Modbus

Discrete Outputs (Coils) 0x

Discrete Inputs 1x

Input Registers 3x

Output (Holding) Registers 4x

читаннѐ Discrete Inputs

читаннѐ Input Registers прикладна програма

область 1

область 2

область 4

область 3

область n

Modbus Mapping

Modbus Mapping (Відображення) – зв'ѐзуваннѐ реальних даних пристроя до "віртуальних" даних Modbus

Modbus Mapping длѐ пристроїв не визначене в протоколі, і робиться виробником пристрою довільно (читай документація до пристроя)

До чого тоді ми звертаємось коли наприклад читаємо або пишемо Coils?

В якому розділі стандарту це можна дізнатися?

Page 14: 3 1 Modbus Protocol

Можливі варіанти Modbus Mapping

30.03.2015 NET - Modbus [email protected] 14

Є якісь "стандартні" підходи до Mapping?

Page 15: 3 1 Modbus Protocol

Приклади Modbus Mapping (ПЛК M340)

30.03.2015 NET - Modbus [email protected] 15

Modbus Modicon Momentum/Quantum

Micro/Premium/M340/ Twido

Input Discrete

1X %M

Coils 0X %M

Input Registers

3X %MW

Holding Registers

4X %MW

пам'ѐть

PLC M340

%M0…

Реа

ліз

аціѐ

MO

DB

US

"віртуальна" пам'ѐть Modbus

Discrete Outputs (Coils) 0x00001…

Discrete Inputs 1x00001…

Input Registers 3x00001…

Output (Holding) Registers 4x00001…

%MW0…

• Реалізаціѐ на рівні операційної системи; • жорстка (неналаштовувана) прив'ѐзка; • прѐмий доступ тільки до %M та %MW

Page 16: 3 1 Modbus Protocol

Приклади Modbus Mapping (ПЛК VIPA)

30.03.2015 NET - Modbus [email protected] 16

• реалізаціѐ на рівні модулѐ/каналу та ОС;

• взаюмодіѐ та прив'ѐзка через функції (SEND/RECV): SEND – оновленнѐ даних у буфері входів (1x,3x) або виходів (0x, 4x), RECV – отриманнѐ даних з буферів виходів (0x, 4x);

• прѐмий доступ до даних ПЛК відсутній, тільки через вказівник в аргументі функції (SEND/RECV)

Page 17: 3 1 Modbus Protocol

Приклади Modbus Mapping (ПЧ Altivar)

30.03.2015

NET - Modbus [email protected] 17

пам'ѐть

Реа

ліз

аціѐ

MO

DB

US

"віртуальна" пам'ѐть Modbus

Output (Holding) Registers

4x00001…

змінні контроля, керуваннѐ,

діагностуваннѐ, конфігуруваннѐ

Перетворявач частоти ATV31 M1

• реалізаціѐ на рівні модулѐ/каналу та прошивки;

• жорстка (неналаштовувана) прив'ѐзка;

• прѐмий доступ до всіх даних пристроя (використовуютьсѐ длѐ контроля/керуваннѐ конфігуруваннѐ та діагностики);

• підтримую тільки читаннѐ/запис Holding Registers

Page 18: 3 1 Modbus Protocol

Функціонування протоколу Modbus: запит-відповідь

30.03.2015 NET - Modbus [email protected] 18

Два типи прикладних процесів (програм): • Modbus Server – виконую Modbus-функції: надаю доступ до даних (процесу, діагностичних…) на пристрої длѐ

читаннѐ/запису а також до інших команд • Modbus Client – ініціяю виконаннѐ функцій Modbus Server'а: доступаютьсѐ до його даних та може ініціявати

виконаннѐ команди на ньому

Два типи прикладних процесів (програм): • Modbus Client – ініціяю повідомленнѐ-запити (request) до

Modbus Server'а на виконаннѐ функцій • Modbus Server – приймаю повідомленнѐ-запити, виконую

вказані в запиті Modbus-функції, та формую повідомленнѐ-відповідь (response)

Як функціонує Modbus протокол?

Page 19: 3 1 Modbus Protocol

Приклад запиту на читання Holding Registers

30.03.2015 NET - Modbus [email protected] 19

Discrete Outputs (Coils) 0x

Discrete Inputs 1x

Input Registers 3x

Output (Holding) Registers 4x

дані Modbus

MO

DB

US

Se

rve

r

Modbus Client

Необхідно прочитати значеннѐ Holding Registers з 400108 по 400110 (3 шт)

1.Запит Кліюнт у до Серверу:

функ

ціѐ

03

читати Holding Registers

00 6B

адреса

початкового

регістру

HI LO

*починаячи з 107

кількість

регістрів

00 03

HI LO

3 штуки

2.Відповідь від Серверу до Кліюнту: відповідь на читаннѐ Holding Registers

функ

ціѐ

03

передая 6 байт

06

лічил

ьник

дані

значеннѐ регістрів

СD 6B

400108-й 400109-й

00 05 00 64

400110-й

*адресаціѐ регістрів починаютьсѐ з 1, але в запиті з 0

1

2

Як проводиться читання?

Page 20: 3 1 Modbus Protocol

Приклади. Функція 01HEX, 10HEX

30.03.2015 NET - Modbus [email protected] 20

Записати значеннѐ 3-х Holding Registers (400108, 400109, 400110)

кількість

бітів

функ

ціѐ

01 00 13

адреса

початковог

о біту

00 14

HI LO HI LO

повідомлення-запит

значеннѐ бітів функ

ціѐ

01 03

СD

лічил

ьник

6B

27-20

позитивне повідомлення-

відповідь

39-36 35-28

Формат повідомлень длѐ запиту читаннѐ статусу Coils (0x)

05

Як проводиться Coils?

Як проводиться запис Holding Registers?

Page 21: 3 1 Modbus Protocol

Приклади. Функція 17HEX(23DEC)

30.03.2015 NET - Modbus [email protected] 21

Прочитати значеннѐ 3-х Holding Registers (400108, 400109, 400110) і записати 400201-й і 400202-й.

А можна прочитати і записати за один запит?

Page 22: 3 1 Modbus Protocol

Помилка обробки запиту

30.03.2015 NET - Modbus [email protected] 22

кількість

бітів

функ

ціѐ

01 00 13

адреса

початковог

о біту

00 14

HI LO HI LO

повідомлення-запит

значеннѐ бітів функ

ціѐ

01 03

СD

лічил

ьник

6B

27-20

позитивне повідомлення-

відповідь

39-36 35-28

05

Якщо вдале виконання функції

– код функції повторюється у

повідомленні-відповіді Код Назва Опис

01 ILLEGAL FUNCTION Прийнѐтий код функції не може бути оброблений на Сервері

02 ILLEGAL DATA

ADDRESS Адреса даних вказана в запиті не доступна даному Серверу .

03 ILLEGAL DATA

VALUE

Величина, вміщена в полі даних запиту ѐвлѐютьсѐ не допустимоя величиноя длѐ Серверу .

04 SLAVE DEVICE

FAILURE

Невиправна помилка мала місце поки Сервер намагавсѐ виконати дія запиту.

05 ACKNOWLEDGE

Сервер прийнѐв запит і оброблѐю його, але необхідний певний час. Цѐ відповідь захищаю Кліюнта від генерації помилки тайм-ауту.

06 SLAVE DEVICE BUSY Сервер зайнѐтий обробкоя команди, Кліюнт повинен повторити запит пізніше.

07 NEGATIVE

ACKNOWLEDGE Невдалий програмний запит (длѐ функцій 13 і 14).

08 MEMORY PARITY

ERROR

Сервер хоче читати розширену пам’ѐть, але знайшов помилку паритету.

функ

ціѐ

81 02

код

поми

лки

ERR

відповідь з

помилкою

Якщо НЕвдале виконання функції –

код_функції_у_ відповіді = код_функції_в+запиті + 80HEX

01HEX + 80HEX = 81HEX

А може бути, що запит не обробиться?

ILL DATA

ADDR

Page 23: 3 1 Modbus Protocol

Змінні Modbus і Коди функцій

30.03.2015 NET - Modbus [email protected] 23

Які ще функції прописані в протоколі Modbus?

Page 24: 3 1 Modbus Protocol

Мадбаский алфавит

30.03.2015 NET - Modbus [email protected] 24

Спасибо учител!

Унимательнэе буд ! Трёшки реадай четворкой,

а четворки - тройкой. А нол - это адин!

Мадбаский алфавит. asu.in.ua

4x

3x

функ

ціѐ

03 00 00

адреса

початкового

регістру

HI LO

кількість

регістрів

00 03

HI LO

Читаннѐ Holding Registers з 400001

Щось трохи заплутано…

Page 25: 3 1 Modbus Protocol

HI та LO?

30.03.2015 NET - Modbus [email protected] 25

Терміни big-endian і little-endian запозичено у Джонатана Свіфта з його сатиричного твору «Мандри Гуллівера», де описуятьсѐ держави Ліліпутіѐ і Блефуску, що вели між собоя протѐгом багатьох років війни через розбіжності з приводу того, з ѐкого кінцѐ слід розбивати варені ѐйцѐ («гострого» чи «тупого» кінцѐ («little-» and «big-endians»)).

функ

ціѐ

03 06

лічил

ьник

значеннѐ регістрів

СD 6B 00 05 00 64

HI LO HI LO HI LO

http://uk.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B1%D0%B0%D0%B9%D1%82%D1%96%D0%B2

Motorola-формат

Наприклад Simatic S7-300/400

Intel-формат

Наприклад Modicon M340/Premium

Порядок передачі байтів для регістрів визначений протоколом Modbus - спочатку HI потім LO (big-Endian)!

Що таке HI і LO, навіщо мені про них знати? Чому саме big-endian і little-endian, причому тут великі та малі індійці?

Page 26: 3 1 Modbus Protocol

Проблема доступу до REAL, DOUBLE та інших типів

30.03.2015 NET - Modbus [email protected] 26

фізична пам'ѐть

Пристрій

Реа

ліз

аціѐ

MO

DB

US

"віртуальна" пам'ѐть Modbus

Discrete Outputs (Coils) 0x

Discrete Inputs 1x

Input Registers 3x

Output (Holding) Registers 4x

REAL0…

DINT…

• REAL (4 байти) • REAL8 (8 байт) • DINT/UDINT/DWORD (4 байти) • STRING • ARRAY • STRUCTURE • …

HI

функ

ціѐ

03 06

лічил

ьник

два підрѐд регістри –

ѐк одне значеннѐ

СD 6B 00 05

LO HI LO

Для зчитування REAL, DINT, UDINT, DWORD запитують підряд два регістри.

HI або LO LO або HI

Який регістр буде йти першим старший чи молодший, адже це не визначено протоколом?

У моделі пам'яті Modbus немає таких даних!

Я розумію як читати та писати BOOL, INT/UINT, а як читати інші дані?

Page 27: 3 1 Modbus Protocol

Доступу до REAL, DOUBLE та інших типів – порядок байт

30.03.2015 NET - Modbus [email protected] 27

функ

ціѐ

03 06

лічил

ьник

значеннѐ регістрів

СD 6B 00 05

HI LO HI LO

HI або LO LO або HI

Порядок регістрів визначається в самих засобах, де реалізований протокол Modbus!

Який регістр буде йти першим старший чи молодший, адже це не визначено протоколом?

Page 28: 3 1 Modbus Protocol

REAL, DOUBLE – приклад впливу порядку байт

30.03.2015 NET - Modbus [email protected] 28

НЕспівпадіння на Клієнті і Сервері

співпадіння на Клієнті і Сервері

Що буде, якщо я вкажу порядок що не співпадає з джерелом даних?

Page 29: 3 1 Modbus Protocol

Зміна порядку байт в програмованих контролерах

30.03.2015 NET - Modbus [email protected] 29

У програмованих контролерах порѐдок байт зміняютьсѐ програмно перед відправкоя чи післѐ прийому. Можна використати функції IEC-61131-3 ROR та ROL a_word:=ROL(2#0001_0010_0000_1111,4) -> 2#0010_0000_1111_0001

функ

ціѐ

03 06

лічил

ьник

значеннѐ регістрів

СD 6B 00 05

HI LO HI LO

HI або LO LO або HI

Simatic S7-300/400 Modicon M340

Як це налаштовується в програмованих контролерах?

Page 30: 3 1 Modbus Protocol

Modbus протокол і мережі

30.03.2015 NET - Modbus [email protected] 30

А як процес передасть дані іншому процесу, якщо вони знаходяться на різних пристроях ?