Програмування ПЛК: мови МЕК 61131-3.
У 1993 р. Міжнародна електротехнічна комісія випустила світ стандарт МЕК 61131-3. Цей міжнародний стандарт входить до групи МЕК 61131 стандартів, які охоплюють різні аспекти використання ПЛК. Декларовані цілі
МЕК 61131-3 – стандартизація існуючих мов ПЛК [1], а точніше, базова платформа для такої роботи у національних комітетах стандартизації.
Уніфікація сотні існуючих версій мов – справа благородна, і такі зусилля можна було б однозначно вітати, якби не деякі
обставини, що супроводжують цей процес.
ПЛК як ядро систем автоматики. Специфіка задачі та передумови створення
На сучасному етапі як ядро будь-якої системи промислової автоматизації використовується ПЛК, до якого з боку об'єкта автоматизації підключаються датчики та виконавчі органи. Через датчики ПЛК надходить інформація про поточний стан об'єкта, а через виконавчі органи ПЛК може змінювати стан керованого об'єкта. Ця базова схема може ускладнюватись. Наприклад, ПЛК можуть підключатися до АРМ оператора для супервізорного управління або БД для накопичення інформації та інтеграції в АСУ підприємства. Оскільки всі ПЛК будуються з урахуванням цифрової техніки, природно передбачаються деякі мовні засоби програмування. Причому через специфіку завдання алгоритмічні мови програмування, такі як Сі, Паскаль, Сі++, не годяться з цією метою.
Специфіка автоматизації передбачає наявність власне системи управління, що включає датчики зворотного зв'язку та органи управління, і зовнішнього (стосовно системи управління) середовища, на яке система управління впливає через органи управління, - об'єктауправління - технічної системи, що реалізує деяку виробничу технологію. Впливи - або, іншими словами, реакція системи управління - визначаються алгоритмом управління залежно від подій на об'єкті управління, інформація про які надходить через датчики зворотного зв'язку. Для цифрових систем ця обставина обумовлює циклічність керуючого алгоритму за схемою: зчитування стану вхідних сигналів через датчики – їх обробка та формування вихідних сигналів – видача вихідних сигналів на виконавчі органи. Подію передбачає алгоритмічні зміни програми і набору оброблюваних нею вхідних/вихідних сигналів залежно від подій, що відбуваються на об'єкті.
Алгоритм управління передбачає синхронізацію свого виконання з фізичними процесами у зовнішньому середовищі, що зумовлює необхідність розвиненої служби часу та активну роботу з тимчасовими об'єктами: затримками, паузами, таймаутами.
Інша характерна особливість алгоритмів управління -логічний паралелізм, що відображає існування множини паралельно протікають процесів в об'єкті управління. (Оскільки події, що відбуваються у різних компонентах системи, виникають незалежно й у довільній послідовності, то спроба задати реакцію системи єдиним блоком означає комбінаторний перебір великої кількості варіантів та невиправдане зростання складності опису). Логічний паралелізм передбачає наявність у алгоритмі управління незалежних чи слабко залежних частин – логічно відокремлених потоків управління.
Оскільки програми пишуться людиною і виключно для людини, то через особливості людської психіки мови повинні бути прості у вивченні. Крім того, мови повинні надавати механізми структуризації алгоритму(у нашому випадку – мовні засоби організації спільного функціонування логічно паралельних частин) та механізми абстрагування (у нашому випадку – понятійний перехід від датчиків та виконавчих органів до цільового технологічного процесу). Тобто. програма повинна бути організована у вигляді доступних для огляду, інформаційно-ізольованих компонентів, можливо ієрархічно вкладених один в одного, і
на певному рівні ієрархії програмування має вестись у природних термінах технологічного процесу.
Перелічені обставини зумовлюють розробку спеціалізованих мов промислової автоматизації.
Міжнародна електротехнічна комісія.
Мета створення стандарту на мови програмування ПЛК
Міжнародна електротехнічна комісія – це міжнародний орган стандартизації, який створює базові стандарти для подальшої адаптації у національних комітетах. Цікавий факт, яким можуть пишатися громадяни України. У становленні та роботі цієї комісії брав активну участь СРСР, тому українська – це одна з трьох офіційних мов МЕК. Щодо стандартизації мов, що використовуються для програмування ПЛК, то ця проблема назріла давно. До кінця 80-х десяток базових концепцій на практиці було представлено
більше сотні варіацій. Їхня уніфікація обіцяла відчутний економічний ефект. Для вирішення цієї проблеми було створено робочу групу, що складається з представників провідних гравців на ринку автоматизації, яка розпочала роботу.
Через те, що загальноприйнятого підходу до програмування ПЛК не існувало (і не існує досі), членам комісії не вдалося домовитись про єдину мову. Тому було прийнято компромісне рішення – включити до стандарту мови, які використовуються у фірмах,представникам яких пощастило опинитися у членах групи. Серед мов-“щасливців” виявились:
• SFC (Sequential Function Chart) – графічна мова, яка використовується для опису алгоритму у вигляді набору пов'язаних пар: крок (step) та перехід (transition). Крок є набір операцій над змінними. Перехід - набір логічних умовних виразів, що визначає передачу управління до наступної пари крок-перехід. На вигляд опис на мові SFC нагадує добре відомі логічні блок-схеми алгоритмів, хоча ідеологічно SFC близький до мереж Петрі. SFC має можливість розпаралелювання алгоритму. Однак SFC не має засобів для опису кроків та переходів, які можуть бути виражені лише засобами інших мов стандарту. Походження: Grafcet (Telemechanique-Groupe Schneider).
LD (Ladder Diagram) – графічна мова, стандартизований варіант класу мов релейно-контактних схем. Логічні висловлювання цією мовою описуються як реле, які широко застосовувалися у сфері автоматизації у 60-х роках. Через свої обмежені можливості мову доповнено привнесеними засобами: таймерами, лічильниками тощо. Походження: різні варіанти мови релейно-контактних схем (Allen-Bradley, AEG Schneider Automation, GE-Fanuc, Siemens).
• FBD (Functional Block Diagram) – графічна мова, по суті схожа на LD: замість реле в цій мові використовуються функціональні блоки. Алгоритм роботи деякого пристрою, виражений засобами цієї мови, нагадує функціональну схему електронного пристрою: елементи типу "логічне І", "логічне АБО" і т.п., з'єднані лініями. Коріння мови з'ясувати складно,
проте більшість фахівців сходяться на думці, що це ні що інше, як перенесення ідей мови релейно-контактних схем іншу елементну базу.
• ST ( Structured Text ) – текстова високорівнева мова загального призначення, за синтаксисом орієнтована Паскаль. Не має самостійного значення: використовується лише спільно з SFC. Походження: Grafcet (Telemechanique - Groupe Schneider).
• IL (Instruction List) – текстова мова низького рівня. Виглядає як мова асемблера, що його походженням: для деяких моделей ПЛК фірми Siemens є мовою асемблера. В рамках стандарту IEC 1131-3 архітектура конкретного процесора не прив'язана. Не має самостійного значення: використовується лише спільно з SFC. Походження - STEP 5 (Siemens).
Мова програмування LD
Ladder Diagram (LD, LAD, РКС) - мова релейної (сходової) логіки.
Застосовуються також назви:
* мова релейно-контактної логіки
* мова програмування релейно-сходової логіки стандарту МЕК 61131-3.
Призначений для програмування промислових контролерів (ПЛК). Синтаксис мови зручний заміни логічних схем, виконаних на релейної техніці. Орієнтований на інженерів з автоматизації, які працюють на промислових підприємствах. Забезпечує наочний інтерфейс логіки роботи контролера, що полегшує не тільки завдання власне програмування та введення в експлуатацію, а й швидкий пошук неполадок у обладнанні, що підключається до контролера. Є найпоширенішою мовою програмування для ПЛК США, дуже поширена в усіх країнах світу.
Програма мовою релейної логіки має наочний та інтуїтивно зрозумілий інженерам-електрикам графічний інтерфейс, що представляє логічні операції, як електричний ланцюг із замкнутими та розімкненими контактами. Перебіг або відсутність струму вцього ланцюга відповідає результату логічної операції (true - якщо струм тече; false - якщо струм не тече).
Основними елементами мови є контакти, які можна уподібнити парі контактів реле або кнопки. Пара контактів ототожнюється з логічною змінною, а стан цієї пари - зі значенням змінної.
Розрізняються нормально замкнуті та нормально розімкнені контактні елементи, які можна зіставити з нормально замкнутими та нормально розімкненими кнопками в електричних ланцюгах.
* Нормально розімкнений контакт розімкнуто при значенні false, призначеній йому змінною і замикається при значенні true.
* Нормально замкнутий контакт, навпаки, замкнутий, якщо змінна має значення false, і розімкнуть, якщо змінна має значення true.
Підсумок логічного ланцюжка копіюється в цільову змінну, яка англійською називається coil. Це слово має безліч технічних значень (нитка розжарювання лампи, обмотка реле або електродвигуна тощо). Тут же узагальнений образ виконавчого устрою, тому в українськомовній документації зазвичай говорять про вихід ланцюжка, хоча можна зустріти й приватні значення терміну coil, наприклад, котушка.
Конкретні версії мови реалізуються зазвичай у межах програмних продуктів, до роботи з певними типами ПЛК. Часто такі реалізації містять команди, що розширюють безліч стандартних команд мови, що викликане бажанням виробника повніше врахувати бажання замовника, але у результаті призводять до несумісності програм, створених для контролерів різних типів.
Основні серії ПЛК компанії Thinget
Основні серії, що постачаються на ринки 3-ї - бюджетний, стандартний і розширений типи. Основні їх відмінності – це набори функцій, що підтримуються, що підключаєтьсяпериферії та природно ціна. Розглянемо табличку: