Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Промислові мережі та інтеграційні
технології
Мережі та протокол
MODBUS
реєстрація fieldbus_book@ukr.net
автор і лектор: Ол...
Історія Modbus: PLC Modicon
30.03.2015 NET - Modbus pupena_san@ukr.net 2
DO
прикладна
програма
Discrete Outputs
(Coils) 0x...
Історія Modbus: PLC Modicon деталі адресації
30.03.2015 NET - Modbus pupena_san@ukr.net 3
• Кожна область пам'ѐті (0x, 1x,...
прикладна
програма
РеалізаціяMODBUS
Історія Modbus: доступ до даних (data) контролерів
Modicon
30.03.2015 NET - Modbus pup...
Modbus: розвиток та стандартизація
30.03.2015 NET - Modbus pupena_san@ukr.net 5
Розвиток
• 1978 – виникненнѐ Modbus (повер...
Мережі на основі протоколу Modbus
30.03.2015 NET - Modbus pupena_san@ukr.net 6
www.Modbus.org
Длѐ всіх мереж спільний прот...
Сервіси(функції) Modbus
30.03.2015 NET - Modbus pupena_san@ukr.net 7
Сервіси* (функції)
• читаннѐ Discrete Inputs (1x)
• ч...
Modbus архітектура
30.03.2015 NET - Modbus pupena_san@ukr.net 8
різні типи засобів: контролери (PLC), SCADA/HMI,
розподіле...
Modbus Protocol – відкритий протокол
30.03.2015 NET - Modbus pupena_san@ukr.net 9
• не тільки Modicon (Schneider Electric)...
Приклади моделі даних (data) різних пристроїв,
що підтримують Modbus Protocol
30.03.2015 NET - Modbus pupena_san@ukr.net 1...
Модель даних пристроїв vs моделі даних PLC Modicon
30.03.2015 NET - Modbus pupena_san@ukr.net 11
те саме?
те саме?
Це не д...
Доступ до даних пристроїв через Modbus?
30.03.2015 NET - Modbus pupena_san@ukr.net 12
прикладна
програма
До чого тоді ми
з...
Принципи Modbus Mapping (Відображення даних)
30.03.2015 NET - Modbus pupena_san@ukr.net 13
фізична пам'ѐть
Пристрій
Реаліз...
Можливі варіанти Modbus Mapping
30.03.2015 NET - Modbus pupena_san@ukr.net 14
Є якісь "стандартні" підходи до Mapping?
Приклади Modbus Mapping (ПЛК M340)
30.03.2015 NET - Modbus pupena_san@ukr.net 15
Modbus Modicon
Momentum/
Quantum
Micro/Pr...
Приклади Modbus Mapping (ПЛК VIPA)
30.03.2015 NET - Modbus pupena_san@ukr.net 16
• реалізаціѐ на рівні модулѐ/каналу
та ОС...
Приклади Modbus Mapping (ПЧ Altivar)
30.03.2015
NET - Modbus pupena_san@ukr.net 17
пам'ѐть
РеалізаціѐMODBUS
"віртуальна" п...
Функціонування протоколу Modbus: запит-відповідь
30.03.2015 NET - Modbus pupena_san@ukr.net 18
Два типи прикладних процесі...
Приклад запиту на читання Holding Registers
30.03.2015 NET - Modbus pupena_san@ukr.net 19
Discrete Outputs
(Coils) 0x
Disc...
Приклади. Функція 01HEX, 10HEX
30.03.2015 NET - Modbus pupena_san@ukr.net 20
Записати значеннѐ 3-х Holding Registers (4001...
Приклади. Функція 17HEX(23DEC)
30.03.2015 NET - Modbus pupena_san@ukr.net 21
Прочитати значеннѐ 3-х Holding Registers (400...
Помилка обробки запиту
30.03.2015 NET - Modbus pupena_san@ukr.net 22
кількість
бітів
функ
ціѐ
01 00 13
адреса
початковог
о...
Змінні Modbus і Коди функцій
30.03.2015 NET - Modbus pupena_san@ukr.net 23
Які ще функції прописані в протоколі Modbus?
Мадбаский алфавит
30.03.2015 NET - Modbus pupena_san@ukr.net 24
Спасибо
учител!
Унимательнэе буд !
Трёшки реадай четворкой...
HI та LO?
30.03.2015 NET - Modbus pupena_san@ukr.net 25
Терміни big-endian і little-endian запозичено у Джонатана Свіфта з...
Проблема доступу до REAL, DOUBLE та інших типів
30.03.2015 NET - Modbus pupena_san@ukr.net 26
фізична пам'ѐть
Пристрій
Реа...
Доступу до REAL, DOUBLE та інших типів – порядок байт
30.03.2015 NET - Modbus pupena_san@ukr.net 27
функ
ціѐ
03 06
лічил
ь...
REAL, DOUBLE – приклад впливу порядку байт
30.03.2015 NET - Modbus pupena_san@ukr.net 28
НЕспівпадіння на
Клієнті і Сервер...
Зміна порядку байт в програмованих контролерах
30.03.2015 NET - Modbus pupena_san@ukr.net 29
У програмованих контролерах п...
Modbus протокол і мережі
30.03.2015 NET - Modbus pupena_san@ukr.net 30
А як процес передасть дані іншому процесу, якщо вон...
Upcoming SlideShare
Loading in …5
×

3 1 Modbus Protocol

891 views

Published on

Відкритий лекційний курс "Промислові мережі та інтеграційні технології" 3.1. Мережі та протокол MODBUS. https://youtu.be/uMx8Yw7JCJ4

Published in: Engineering
  • Be the first to comment

3 1 Modbus Protocol

  1. 1. Промислові мережі та інтеграційні технології Мережі та протокол MODBUS реєстрація fieldbus_book@ukr.net автор і лектор: Олександр Пупена (pupena_san@ukr.net) зворотній зв’язок по курсу: Інтернет-форум АСУ в Україні (www.asu.in.ua) 30.03.2015 NET - Modbus pupena_san@ukr.net 1
  2. 2. Історія Modbus: PLC Modicon 30.03.2015 NET - Modbus pupena_san@ukr.net 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?
  3. 3. Історія Modbus: PLC Modicon деталі адресації 30.03.2015 NET - Modbus pupena_san@ukr.net 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?
  4. 4. прикладна програма РеалізаціяMODBUS Історія Modbus: доступ до даних (data) контролерів Modicon 30.03.2015 NET - Modbus pupena_san@ukr.net 4 ПЛК/ОП/ПК SCADA читання/запис Coils читання/запис Holding Registers читання Discrete Inputs читання Input Registers Мережа Modbus Призначеннѐ – читаннѐ/запис комірок пам'ѐті контролерів Modicon, зчитуваннѐ діагностичних даних Яке призначеннѐ Modbus?
  5. 5. Modbus: розвиток та стандартизація 30.03.2015 NET - Modbus pupena_san@ukr.net 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 Як розвивавсѐ?
  6. 6. Мережі на основі протоколу Modbus 30.03.2015 NET - Modbus pupena_san@ukr.net 6 www.Modbus.org Длѐ всіх мереж спільний протокол прикладного рівнѐ* (Application Layer) – Modbus Protocol *Протокол прикладного рівнѐ – система правил взаюмодії прикладних процесів (програм). http://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf Які мережі?
  7. 7. Сервіси(функції) Modbus 30.03.2015 NET - Modbus pupena_san@ukr.net 7 Сервіси* (функції) • читаннѐ Discrete Inputs (1x) • читаннѐ/запис Coils (0x) • читаннѐ Input Registers (3x) • читаннѐ/запис Outputs (Holding) Registers (4x) • читаннѐ/запис записів файлів • ідентифікаціѐ пристроя • читаннѐ діагностичної інформації • додаткові Два типи прикладних процесів (програм): • Modbus Server – виконую Modbus- функції: надаю доступ до даних (процесу, діагностичних…) на пристрої длѐ читаннѐ/запису а також до інших команд • Modbus Client – ініціяю виконаннѐ функцій Modbus Server'а: доступаютьсѐ до його даних та може ініціявати виконаннѐ команди на ньому Modbus Client Modbus Server обмін даними процесу обмін параметрични ми даними діагностичні сервіси керування режимом пристрою Комунікаційний сервіс * – послуги, що надаються комунікацією пристрою або його частиною (мережною картою, драйвером, функцією…). Сервіси прикладного рівня – послуги що надається прикладним рівнем. Які сервіси?
  8. 8. Modbus архітектура 30.03.2015 NET - Modbus pupena_san@ukr.net 8 різні типи засобів: контролери (PLC), SCADA/HMI, розподілений ввід/вивід (I/O), електроприводи (Drive), інші засоби (Device) Які засоби?
  9. 9. Modbus Protocol – відкритий протокол 30.03.2015 NET - Modbus pupena_san@ukr.net 9 • не тільки Modicon (Schneider Electric) • доступний будь-ѐкому розробнику та інтегратору • популѐрність (реалізований практично у всіх брендах) • реалізовуютьсѐ різними способами (відкритий програмний код, мікропрограма, частина операційної системи…) Modbus PLCPLC PLCPLC регулѐторперетворявач частоти розподілений ввід/вивід SCADA/HMI Які виробники, тільки Modicon?
  10. 10. Приклади моделі даних (data) різних пристроїв, що підтримують Modbus Protocol 30.03.2015 NET - Modbus pupena_san@ukr.net 10 AI Q (QW, QX…) I (IW, IX…) DB/DI Timers, Counters… пам'ѐть DO PLC S7 300 РеалізаціяMODBUS M (MW,MX…) DI AO AI %IW %MW Unlocated пам'ѐть DO PLC M340 РеалізаціяMODBUS %M DI AO %I %QW %Q M1 Перетворявач частоти пам'ѐть РеалізаціяMODBUS задана частота дійсна частота напруга на двигуні струм на двигуні Засоби зовсім різні, хіба у них не різна модель даних?
  11. 11. Модель даних пристроїв vs моделі даних PLC Modicon 30.03.2015 NET - Modbus pupena_san@ukr.net 11 те саме? те саме? Це не дискретні входи чи виходи, не аналогові входи чи виходи. Тоді що це? Якщо дані пристрої підтримують протокол Modbus, то ми можемо наприклад прочитати/записат и їх дискретні виходи чи не так? Хоч це теж Modicon!
  12. 12. Доступ до даних пристроїв через Modbus? 30.03.2015 NET - Modbus pupena_san@ukr.net 12 прикладна програма До чого тоді ми звертаємось коли наприклад читаємо або пишемо Coils? В якому розділі стандарту це можна дізнатися?
  13. 13. Принципи Modbus Mapping (Відображення даних) 30.03.2015 NET - Modbus pupena_san@ukr.net 13 фізична пам'ѐть Пристрій РеалізаціѐMODBUS "віртуальна" пам'ѐть 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? В якому розділі стандарту це можна дізнатися?
  14. 14. Можливі варіанти Modbus Mapping 30.03.2015 NET - Modbus pupena_san@ukr.net 14 Є якісь "стандартні" підходи до Mapping?
  15. 15. Приклади Modbus Mapping (ПЛК M340) 30.03.2015 NET - Modbus pupena_san@ukr.net 15 Modbus Modicon Momentum/ Quantum Micro/Premium/M 340/ Twido Input Discrete 1X %M Coils 0X %M Input Registers 3X %MW Holding Registers 4X %MW пам'ѐть PLC M340 %M0… РеалізаціѐMODBUS "віртуальна" пам'ѐть Modbus Discrete Outputs (Coils) 0x00001… Discrete Inputs 1x00001… Input Registers 3x00001… Output (Holding) Registers 4x00001… %MW0… • Реалізаціѐ на рівні операційної системи; • жорстка (неналаштовувана) прив'ѐзка; • прѐмий доступ тільки до %M та %MW
  16. 16. Приклади Modbus Mapping (ПЛК VIPA) 30.03.2015 NET - Modbus pupena_san@ukr.net 16 • реалізаціѐ на рівні модулѐ/каналу та ОС; • взаюмодіѐ та прив'ѐзка через функції (SEND/RECV): SEND – оновленнѐ даних у буфері входів (1x,3x) або виходів (0x, 4x), RECV – отриманнѐ даних з буферів виходів (0x, 4x); • прѐмий доступ до даних ПЛК відсутній, тільки через вказівник в аргументі функції (SEND/RECV)
  17. 17. Приклади Modbus Mapping (ПЧ Altivar) 30.03.2015 NET - Modbus pupena_san@ukr.net 17 пам'ѐть РеалізаціѐMODBUS "віртуальна" пам'ѐть Modbus Output (Holding) Registers 4x00001… змінні контроля, керуваннѐ, діагностуваннѐ, конфігуруваннѐ Перетворявач частоти ATV31 M1 • реалізаціѐ на рівні модулѐ/каналу та прошивки; • жорстка (неналаштовувана) прив'ѐзка; • прѐмий доступ до всіх даних пристроя (використовуютьсѐ длѐ контроля/керуваннѐ конфігуруваннѐ та діагностики); • підтримую тільки читаннѐ/запис Holding Registers
  18. 18. Функціонування протоколу Modbus: запит-відповідь 30.03.2015 NET - Modbus pupena_san@ukr.net 18 Два типи прикладних процесів (програм): • Modbus Server – виконую Modbus-функції: надаю доступ до даних (процесу, діагностичних…) на пристрої длѐ читаннѐ/запису а також до інших команд • Modbus Client – ініціяю виконаннѐ функцій Modbus Server'а: доступаютьсѐ до його даних та може ініціявати виконаннѐ команди на ньому Два типи прикладних процесів (програм): • Modbus Client – ініціяю повідомленнѐ-запити (request) до Modbus Server'а на виконаннѐ функцій • Modbus Server – приймаю повідомленнѐ-запити, виконую вказані в запиті Modbus-функції, та формую повідомленнѐ- відповідь (response) Як функціонує Modbus протокол?
  19. 19. Приклад запиту на читання Holding Registers 30.03.2015 NET - Modbus pupena_san@ukr.net 19 Discrete Outputs (Coils) 0x Discrete Inputs 1x Input Registers 3x Output (Holding) Registers 4x дані Modbus MODBUSServer 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 Як проводиться читання?
  20. 20. Приклади. Функція 01HEX, 10HEX 30.03.2015 NET - Modbus pupena_san@ukr.net 20 Записати значеннѐ 3-х Holding Registers (400108, 400109, 400110) кількість бітів функ ціѐ 01 00 13 адреса початковог о біту 00 14 HI LO HI LO повідомлення-запит значеннѐ бітівфунк ціѐ 01 03 СD лічил ьник 6B 27-20 позитивне повідомлення- відповідь 39-3635-28 Формат повідомлень длѐ запиту читаннѐ статусу Coils (0x) 05 Як проводиться Coils? Як проводиться запис Holding Registers?
  21. 21. Приклади. Функція 17HEX(23DEC) 30.03.2015 NET - Modbus pupena_san@ukr.net 21 Прочитати значеннѐ 3-х Holding Registers (400108, 400109, 400110) і записати 400201-й і 400202-й. А можна прочитати і записати за один запит?
  22. 22. Помилка обробки запиту 30.03.2015 NET - Modbus pupena_san@ukr.net 22 кількість бітів функ ціѐ 01 00 13 адреса початковог о біту 00 14 HI LO HI LO повідомлення-запит значеннѐ бітівфунк ціѐ 01 03 СD лічил ьник 6B 27-20 позитивне повідомлення- відповідь 39-3635-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
  23. 23. Змінні Modbus і Коди функцій 30.03.2015 NET - Modbus pupena_san@ukr.net 23 Які ще функції прописані в протоколі Modbus?
  24. 24. Мадбаский алфавит 30.03.2015 NET - Modbus pupena_san@ukr.net 24 Спасибо учител! Унимательнэе буд ! Трёшки реадай четворкой, а четворки - тройкой. А нол - это адин! Мадбаский алфавит. asu.in.ua 4x 3x функ ціѐ 03 00 00 адреса початкового регістру HI LO кількість регістрів 00 03 HI LO Читаннѐ Holding Registers з 400001 Щось трохи заплутано…
  25. 25. HI та LO? 30.03.2015 NET - Modbus pupena_san@ukr.net 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, причому тут великі та малі індійці?
  26. 26. Проблема доступу до REAL, DOUBLE та інших типів 30.03.2015 NET - Modbus pupena_san@ukr.net 26 фізична пам'ѐть Пристрій РеалізаціѐMODBUS "віртуальна" пам'ѐть 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, а як читати інші дані?
  27. 27. Доступу до REAL, DOUBLE та інших типів – порядок байт 30.03.2015 NET - Modbus pupena_san@ukr.net 27 функ ціѐ 03 06 лічил ьник значеннѐ регістрів СD 6B 00 05 HI LO HI LO HI або LO LO або HI Порядок регістрів визначається в самих засобах, де реалізований протокол Modbus! Який регістр буде йти першим старший чи молодший, адже це не визначено протоколом?
  28. 28. REAL, DOUBLE – приклад впливу порядку байт 30.03.2015 NET - Modbus pupena_san@ukr.net 28 НЕспівпадіння на Клієнті і Сервері співпадіння на Клієнті і Сервері Що буде, якщо я вкажу порядок що не співпадає з джерелом даних?
  29. 29. Зміна порядку байт в програмованих контролерах 30.03.2015 NET - Modbus pupena_san@ukr.net 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 Як це налаштовується в програмованих контролерах?
  30. 30. Modbus протокол і мережі 30.03.2015 NET - Modbus pupena_san@ukr.net 30 А як процес передасть дані іншому процесу, якщо вони знаходяться на різних пристроях ?

×