3 1 modbus protocol
TRANSCRIPT
Промислові мережі та інтеграційні технології
Мережі та протокол MODBUS
реєстрація [email protected] автор і лектор: Олександр Пупена ([email protected])
зворотній зв’язок по курсу: Інтернет-форум АСУ в Україні (www.asu.in.ua)
30.03.2015 NET - Modbus [email protected] 1
Історія 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?
Історія 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?
пр
икл
адн
а
пр
огр
ама
Ре
аліз
ація
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?
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
Як розвивавсѐ?
Мережі на основі протоколу 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
Які мережі?
Сервіси(функції) 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
обмін даними процесу
обмін параметрични
ми даними
діагностичні сервіси
керування режимом пристрою
Комунікаційний сервіс * – послуги, що надаються комунікацією пристрою або
його частиною (мережною картою, драйвером, функцією…). Сервіси прикладного
рівня – послуги що надається прикладним рівнем.
Які сервіси?
Modbus архітектура
30.03.2015 NET - Modbus [email protected] 8
різні типи засобів: контролери (PLC), SCADA/HMI, розподілений ввід/вивід (I/O), електроприводи (Drive), інші засоби (Device)
Які засоби?
Modbus Protocol – відкритий протокол
30.03.2015 NET - Modbus [email protected] 9
• не тільки Modicon (Schneider Electric) • доступний будь-ѐкому розробнику та інтегратору • популѐрність (реалізований практично у всіх
брендах) • реалізовуютьсѐ різними способами (відкритий
програмний код, мікропрограма, частина операційної системи…)
Modbus
PLC PLC PLC PLC
регулѐтор перетворявач частоти
розподілений ввід/вивід
SCADA/HMI
Які виробники, тільки Modicon?
Приклади моделі даних (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
задана частота
дійсна частота
напруга на двигуні
струм на двигуні
Засоби зовсім різні, хіба у них не різна модель даних?
Модель даних пристроїв vs моделі даних PLC Modicon
30.03.2015 NET - Modbus [email protected] 11
те саме? те саме?
Це не дискретні входи чи виходи,
не аналогові входи чи виходи.
Тоді що це?
Якщо дані пристрої підтримують протокол Modbus, то ми можемо наприклад прочитати/записати їх дискретні виходи чи не так?
Хоч це теж Modicon!
Доступ до даних пристроїв через Modbus?
30.03.2015 NET - Modbus [email protected] 12
прикладна програма
До чого тоді ми звертаємось коли наприклад читаємо або пишемо Coils? В якому розділі стандарту це можна дізнатися?
Принципи 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?
В якому розділі стандарту це можна дізнатися?
Можливі варіанти Modbus Mapping
30.03.2015 NET - Modbus [email protected] 14
Є якісь "стандартні" підходи до Mapping?
Приклади 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
Приклади Modbus Mapping (ПЛК VIPA)
30.03.2015 NET - Modbus [email protected] 16
• реалізаціѐ на рівні модулѐ/каналу та ОС;
• взаюмодіѐ та прив'ѐзка через функції (SEND/RECV): SEND – оновленнѐ даних у буфері входів (1x,3x) або виходів (0x, 4x), RECV – отриманнѐ даних з буферів виходів (0x, 4x);
• прѐмий доступ до даних ПЛК відсутній, тільки через вказівник в аргументі функції (SEND/RECV)
Приклади Modbus Mapping (ПЧ Altivar)
30.03.2015
NET - Modbus [email protected] 17
пам'ѐть
Реа
ліз
аціѐ
MO
DB
US
"віртуальна" пам'ѐть Modbus
Output (Holding) Registers
4x00001…
змінні контроля, керуваннѐ,
діагностуваннѐ, конфігуруваннѐ
Перетворявач частоти ATV31 M1
• реалізаціѐ на рівні модулѐ/каналу та прошивки;
• жорстка (неналаштовувана) прив'ѐзка;
• прѐмий доступ до всіх даних пристроя (використовуютьсѐ длѐ контроля/керуваннѐ конфігуруваннѐ та діагностики);
• підтримую тільки читаннѐ/запис Holding Registers
Функціонування протоколу 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 протокол?
Приклад запиту на читання 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
Як проводиться читання?
Приклади. Функція 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?
Приклади. Функція 17HEX(23DEC)
30.03.2015 NET - Modbus [email protected] 21
Прочитати значеннѐ 3-х Holding Registers (400108, 400109, 400110) і записати 400201-й і 400202-й.
А можна прочитати і записати за один запит?
Помилка обробки запиту
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
Змінні Modbus і Коди функцій
30.03.2015 NET - Modbus [email protected] 23
Які ще функції прописані в протоколі Modbus?
Мадбаский алфавит
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
Щось трохи заплутано…
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, причому тут великі та малі індійці?
Проблема доступу до 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, а як читати інші дані?
Доступу до 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!
Який регістр буде йти першим старший чи молодший, адже це не визначено протоколом?
REAL, DOUBLE – приклад впливу порядку байт
30.03.2015 NET - Modbus [email protected] 28
НЕспівпадіння на Клієнті і Сервері
співпадіння на Клієнті і Сервері
Що буде, якщо я вкажу порядок що не співпадає з джерелом даних?
Зміна порядку байт в програмованих контролерах
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
Як це налаштовується в програмованих контролерах?
Modbus протокол і мережі
30.03.2015 NET - Modbus [email protected] 30
А як процес передасть дані іншому процесу, якщо вони знаходяться на різних пристроях ?