1. ТДА16-1 (20.07.16)
Програмовані логічні
контролери стандарту
МЕК 61131
Олександр Пупена (pupena_san@ukr.net)
www.asu.in.ua
17.07.2016 ПЛК pupena_san@ukr.net 1
Програма та місце проведення конференції – за посиланням
2. Місце в загальній архітектурі
17.07.2016 ПЛК pupena_san@ukr.net 2
Інші (не ПЛК) варіанти:
• DCS (інша структура і парадигма)
• PC-base
• пристрої IEC 61499
• конфігуровані локальні/мережні
регулятори
• …
6. Централізований I/O vs розподілений
17.07.2016 ПЛК pupena_san@ukr.net 6
Централізований (модулі I/O) Розподілений (RIO – віддалені модулі I/O)
за місцем ЦПУ ПЛК можливий на відстані, по місцю датчиків/ВМ, або
навіть в полі (IP-67) – зручність монтажу, економія
кабельної продукції
той самий бренд, малий вибір
варіантів, але перевірена сумісність
можливий інший бренд, великий вибір варіантів,
можлива певна несумісність
максимальна швидкість взаємодії з
ЦПУ
можливі великі швидкості (RTE – Real Time
Ethernet)
гаряча заміна дефектних модулів гаряча заміна дефектних модулів
легка заміна дефектних модулів:
вийняв - вставив
легка заміна дефектних модулів (не у всіх
випадках): вийняв старий, змінив перемикачі на
новому, вставив
топологія – зірка (кабелі в один щит) топологія – шина (інколи з відгалуженнями), кільце
(надійність), інколи дерево (AS-i)
діагностування стану діагностування стану
проблематична організація гарячого
резервування
гаряче резервування базується на RIO
7. Розподілені I/O – автомат станів (приклад
Profibus DP)
17.07.2016 ПЛК pupena_san@ukr.net 7
Стан Поведінка
Power_ON /
Reset
DP slave включили або
перевантажили і почалася
внутрішня ініціалізація
WPRM
Wait for
Parameter
DP slave очікує параметри від DP
Master
WCFG
Wait for
Configuration
DP slave очікує телеграму
Check_Configuration від DP Master
DXCHG
Data Exchange
DP slave циклічно обмінюється
даними процесу і за необхідності
відповідає діагностичним запитом
Робота з віддаленими модулями I/O аналогічна до локальних.
8. Фізична структура ПЛК (продовження)
17.07.2016 ПЛК pupena_san@ukr.net 8
Широкий вибір на ринку, в т.ч. за критеріями:
• температурний діапазон
• тип живлення
• IP (ступінь захисту), вібростійкість
• відповідність SIL
• монтажні особливості
• особливості підключення
• архітектурна сумісність з іншими виробниками
• ….
9. Фізична структура ПЛК: резервування
17.07.2016 ПЛК pupena_san@ukr.net 9
140CRP
140CRP
140NOE
140NOE
мережа I/O (адаптована під гаряче резервування)
основний ПЛК резервний ПЛК I/O
I/OI/O
I/O
мережа I/O
11. Конфігурування та програмування
17.07.2016 ПЛК pupena_san@ukr.net 11
Принципи:
• орієнтована на задачі реального часу, циклічне виконання задач
• мінімум програмування, максимум конфігурування
• мінімум помилок (макропрограми, відсутність вказівників, прямого
доступу до пам'яті …)
• захищеність від зависання (сторожові таймери)
• масштабованість, як малі так і великі системи на тому ж ПЛК,
можливість нарощування
• відкритість до зв'язку з засобами інших виробників (стандартизація)
• максимальна універсальність, мінімальний час адаптації до бренду
(стандартизація)
• можливість імпорту/експорту даних, програм
• максимальна зручність і простота налагодження, швидкий пошук
логічних помилок в коді
12. Середовище розробки та виконання,
приклад Unity PRO
17.07.2016 ПЛК pupena_san@ukr.net 12
• Як правило, середовище розробки платне для ПЛК великої та середньої
канальності, безкоштовне для малої канальності
14. Програмні задачі (Task): однозадачне середовище
виконання
17.07.2016 ПЛК pupena_san@ukr.net 14
задача (Task)
основний
час для ОС
час виконання задачі контролюється ОС ПЛК -
не більше ніж T watch dog (сторожовий
таймер), якщо більше – задача аварінйо
зупиняється !
15. Однозадачне виконання: циклічне vs періодичне
17.07.2016 ПЛК pupena_san@ukr.net 15
циклічне
періодичне
- різна тривалість задачі
- без пауз між викликами задачі
- однакова періодичність
виклику задачі
- під час пауз виділяється
більший час ЦПУ на
комунікації
16. Коли опитуються входи і записуються виходи?
17.07.2016 ПЛК pupena_san@ukr.net 16
- обробка входів/виходів, організація задач,
специфічні для різних ПЛК
- якщо опитування входів на початку задачі (образ
процесу), а запис виходів в кінці задачі, то образ
процесу не змінюється протягом виконання задачі,
а виходи оновлюються тільки по закінченню
- деякі ПЛК мають можливість проводити
запис/читання з I/O в будь якому місці програми
(наприклад в S7300/400 - PIW/PQW)
- у деяких ПЛК змішаний підхід - і образ процесу і
пряме звернення
18. Типи задач
17.07.2016 ПЛК pupena_san@ukr.net 18
● CoDeSys
● Cyclic – періодичний виклик
● Freewheeling – ціклічно по колу
● Event – за зміною значення змінної або іншої
програмної події
● External Event – апаратне переривання
S7 1200 (TIA Portal)
Залежить від ПЛК!
M340 (Unity PRO)
20. Програмна структура: POU - Program
Organizational Unit
17.07.2016 ПЛК pupena_san@ukr.net 20
Залежить від ПЛК!
Задача
CoDeSys Unity PRO
POU викликаються в Задачі; POU можуть викликати інші POU; усі POU в
ланцюжку виконуються в контексті тієї ж Задачі
21. Типи POU
17.07.2016 ПЛК pupena_san@ukr.net 21
Залежить від ПЛК!
Unity PRO: Section (ака Program), Function Block, Function/Procedure (тільки
бібліотечні)
22. Адресація каналів
17.07.2016 ПЛК pupena_san@ukr.net 22
Різні підходи прив'язки до каналів:
• топологічна адресація, визначається розміщенням каналу
в структурі (не потребує конфігурування адресації);
• наприклад %I2.4.3 відповідає за значення дискретного входу в 2-
му шасі, 4-й модуль, 3-й канал
• виділення адрес для каналів - mapping (відображення) на
певну область пам'яті (можливо поіменовану) під час
конфігурування;
• наприклад %IW100 може містити значення будь-якого
аналогового входу, куди захоче розробник
• змішане (або, і)
23. Топологічна адресація
17.07.2016 ПЛК pupena_san@ukr.net 23
Залежить від ПЛК!
Різні рівні і кількість в ієрархії:
• адреса PLC, пристрою на шині
• номер шасі
• номер модуля/блока
• номер каналу на модулі
• номер ком. порту
%IW0.1.23.4.5
шасі ком.модуля
ком. модуль
ком. порт
номер пристрою
модуль на пристрої
канал на
модулі
аналоговий вхід
приклад 2
приклад 1
24. Виділення адрес для каналів
17.07.2016 ПЛК pupena_san@ukr.net 24
Залежить від ПЛК!
25. Адресація
17.07.2016 ПЛК pupena_san@ukr.net 25
Залежить від ПЛК!
%IX або %I – область дискретних входів
%IW – область значень аналогових входів (у багатьох ПЛК пересікається з %I)
%QX або %Q – область дискретних виходів
%QW – область значень аналогових виходів (у багатьох ПЛК пересікається з %Q)
%MX або %M – область внутрішніх бітів
%MW – область внутрішніх слів (у багатьох ПЛК пересікається з %MW)
… інші варіанти
• топологічна адресація - %IW0.4.3
• нетопологічна адресація - %IW130
• поіменована адресація через змінні
26. Змінні
17.07.2016 ПЛК pupena_san@ukr.net 26
Залежить від ПЛК!
Типи
• INT (як правило 16-бітний!), UINT, DINT (32-бітний), UDINT
• BOOL
• BYTE
• REAL
• STRING
• ARRAY
• STRUCT (UDT)
• …
Найменування: в деяких ПЛК назви зберігаються тільки в проекті на ПК
(синоніми адрес); в деяких ПЛК змінним не обов'язково явно вказуються
адреси
Область видимості: сильно залежить від ПЛК; в ряді ПЛК усі змінні є
глобальними!
27. Мови
17.07.2016 ПЛК pupena_san@ukr.net 27
LD
ST/SCL
IL/STL
FBD/CFC
SFC/Grafcet
• стандарт IEC 61131-3: ПЛК підтримує як мінімум одну з 5-ти
• «заточені» під різні задачі
• виробники дуже люблять «діалекти», звідси несумісність і різність реалізацій
• мови в ПЛК можуть бути нерівнозначні за можливостями
• деякі середовища дозволяють конвертацію між мовами
28. ST/SCL
17.07.2016 ПЛК pupena_san@ukr.net 28
●ST - Structured Text
● текстова, C/Pascal/Basic подібна
● вирази та інструкції
● доступні умовні розгалуження, цикли
● послідовне виконання
● як правило, найбільш гнучка, люблять програмісти і автоматники
● як правило, присутня в ПЛК середньої та великої канальності
29. IL/STL
17.07.2016 ПЛК pupena_san@ukr.net 29
●IL - Instruction List
● текстова, орієнтовані на список інструкцій
● базуються на акумуляторах
● маленькі інструкції
● в деяких ПЛК єдина мова, інші мови - тільки представлення
● популярна тільки в ряді платформ (STL в S7 300/400, VIPA)
30. LD
17.07.2016 ПЛК pupena_san@ukr.net 30
●LD – Ladder Diagram
● графічна, РКС (релейно-контакнті
схеми)
● орієнтована переважно на
дискретну логіку
● добре сприймається електриками
● послідовне виконання зверху до
низу, зліва – направо
● функціональність сильно залежить
від реалізації
● в багатьох ПЛК (малої
канальності) є єдиною мовою
програмування
32. FBD/CFC
17.07.2016 ПЛК pupena_san@ukr.net 32
●FBD – Function Block Diagram
● графічна, базується на потоках даних
● при нормальній реалізації «заточена» під регулювання, люблять
«регулювальні» автоматники і електронники
● функціональні блоки та функції з’єднуються входами/виходами
● послідовність виконання зверху-вниз, зліва-направо, задається
номером виконання
● в багатьох реалізаціях дуже обмежена (напр. Simatic), звідси часто
дискредитується, але там є CFC
● в деяких ПЛК (малої канальності) є єдиною мовою програмування
33. FBD/CFC і функціональна схема контуру
регулювання
17.07.2016 ПЛК pupena_san@ukr.net 33
Рис. 6.30. Приклад контуру регулювання з використанням
бібліотечних блоків та мови FBD
ПЛК (Програма користувача)
%QW4.1
Аналого-
вий вхід
Аналого-
вий вихід
4-20 мА 4-20 мА
%IW3.3
комунікаційний канал
HMI (операторська панель) або SCADA)
H1
HC1
зада
не
ВМ
25 ºС
TI1
HS1
1.45
25 c
Kp
Ti
дійсне
34. Керування логікою виконання в FBD та LD
17.07.2016 ПЛК pupena_san@ukr.net 34
• EN (Enable) –
можливість
логіки «якщо-
то»
• в деяких
реалізаціях ПЛК
відсутня (але
обов'язкова в IEC
61131-3)
35. SFC/Grafcet
17.07.2016 ПЛК pupena_san@ukr.net 35
●SFC – Sequential Function Chart
● графічна, базується на станах і
переходах
● дуже потужна для керування
періодичними процесами
● ресурсоємна (при повноцінній
реалізації), багато вбудованих
функцій контролю (налаштування
та контроль часу виконання кроку,
сигналізація …)
● добре сприймається технологами в
якості опису технологічного
процесу
37. Бібліотека
17.07.2016 ПЛК pupena_san@ukr.net 37
• включає в себе готові функції,
процедури, функціональні блоки, сильно
спрощує життя розробнику
• програма як взамозвязаний набір
бібліотечних елементів
• часто є критерієм вибору платформи
• більшість сучасних середовищ розробки
для ПЛК середньої і великої канальності
дають можливість розробляти власні
бібліотечні елементи!
• таймери, лічильники, робота з
датою/часом, масивами, перетворення
типів, математичні, регулювання,
керування приводами …
39. Конфігурування, налаштування
17.07.2016 ПЛК pupena_san@ukr.net 39
• багато функцій конфігуруються а не
програмуються
• конфігурація модулів в т.ч. RIO
зберігаються в центральному ЦПУ
40. Інструменти відлагодження програм
17.07.2016 ПЛК pupena_san@ukr.net 40
• анімаційні таблиці змінних (watch)
• анімація програм
• анімаційні графічні екрани
• самописці
• точки зупинки
• …
41. Приклади анімації програм в режимі виконання
17.07.2016 ПЛК pupena_san@ukr.net 41
https://www.youtube.com/watch?v=l1yp_VwcA88
42. Імітатор ПЛК
17.07.2016 ПЛК pupena_san@ukr.net 42
• імітатори ПЛК (simulator) - імітують роботу ПЛК на ПК розробника
• деякі мають можливість з'єднання по TCP/IP -> SCADA+simulator
відлагодження ПЗ АСУТП без наявного обладнання!
• ресурси ПК імітатору дає можливість вбудовувати складну
програмну модель об'єкту на тих же IEC 61131-3
43. Завантаження, зміна
17.07.2016 ПЛК pupena_san@ukr.net 43
• окрім виконавчого проекту, завантаження вихідного коду (не завжди)
• зміна програми без зупинки ПЛК!
• доступ з паролем
• завантаження через зв'язані між собою ПЛК (шлюзування)
• …
44. Діагностика ПЛК
17.07.2016 ПЛК pupena_san@ukr.net 44
• діагностичні індикатори на ЦПУ і модулях
• діагностичні вікна середовища розробки
• діагностичний буфер
• діагностичні функції та змінні
• можливість програмної обробки
• підтримка діагностики на рівні мереж
• інтеграція діагностики з SCADA/HMI
46. Комунікації
17.07.2016 ПЛК pupena_san@ukr.net 46
• fieldbus (промислові мережі)
• рівня розподіленої периферії (RIO, приводи)
• рівня датчиків/ВМ (+ живлення по мережі)
• рівня ПЛК (між ПЛК/SCADA)
• Типові сервіси
• неявний (без програмного ініціювання) обмін I/O для розподіленої
периферії і датчиків:
• конфігурується, діагностується, автомат станів
• максимально наближений до локального I/O
• як правило функціонує методом Polling
• неявний обмін Global Data для розподіленої бази даних:
• для реалізації спільного Application між різними ПЛК одного рівня
• конфігурується, діагностується
• як правило функціонує методом Publisher/Subscriber
• явний обмін повідомленнями читання/запис об'єктів,
відправка/отримання повідомлення (прив'язаний до циклу),
клієнт/сервер
• функції програмування/конфігурування пристрою, діагностичні
функції
47. Комунікації (продовження)
17.07.2016 ПЛК pupena_san@ukr.net 47
• сумісність та обмеження
• підтримка «рідних» протоколів
• модульність: набір за необхідністю потрібної мережі
• підтримка відкритих протоколів: великі бренди підтримують
«великі» протоколи
• «тотальна» підтримка Modbus RTU та Modbus/TCP
• все прямує до Ethernet TCP/IP: TCP/IP, mail, http (WEB Server), ftp,
snmp, dhcp
• до Ethernet TCP/IP йде RTE (Real Time Ethernet), поширені
представники в Україні: Ethernet IP, Profinet.
• прграмісту як правило доступний інтерфейс до Application Layer, тільки
деякі вендори надають інтерфейс Open TCP
• для Ethernet TCP/IP повна відсутність кіберзахисту - все відкрито!
• технологія OPC вирішує проблему сумісності зі SCADA;
• OPC UA – перспективний напрям, реалізація планується на рівні ПЛК
• безпосередня інтеграція в Cloud зараз не підтримується, але можлива
через шлюзування та SCADA
48. Висновки для парадигми ПЛК
17.07.2016 ПЛК pupena_san@ukr.net 48
• на даний момент великий вибір і функціональні можливості
• висока швидкодія
• сучасні не тільки для дискретного керування а і аналогового
регулювання (PAC)
• домінує в Україні, але українські бренди не є домінуючими
• централізований підхід, але є розподілена периферія і
можливість глобальних даних (розподіленої БД) програм
декількох ПЛК
• окремі БД ПЛК та SCADA/HMI (програє в порівнянні з DCS), але
імпорт/експорт тегів навіть лінк зі SCADA/HMI, але як правило
того ж вендора
• не тільки пропрієтарні а і відкриті протоколи, відкритість все
збільшується
• можливість роботи з засобами інших вендорів
49. Висновки для парадигми ПЛК (продовження)
17.07.2016 ПЛК pupena_san@ukr.net 49
• простіше, швидше, надійніше за програмування PC Based, але
потребує певних знань в програмуванні, складніше для
експлуатаційного персоналу КВПіА (програє DCS і кофігурованим
контролерам та регуляторам)
• не таке гнучке в порівнянні PC Based, не дозволяє низькорівневого
програмування
• підтримка єдиного стандарту IEC 61131: перехід на іншу платформу
- адаптація до середовища а не вивчення мови програмування,
базовий перехід можливий через тижневе навчання
• як правило платне середовище розробки, під Windows
• підтримка дуже важливих речей: діагностика, налагоджування,
заливка на льоту …