1. Історія

ClassicLadder — це безкоштовна реалізація інтерпретатора сходових схем, випущена під ліцензією LGPL. Її автор — Марк Ле Дуарен.

Він описує початок проєкту на своєму вебсайті:

Я вирішив запрограмувати мову драбини спочатку тільки для тестових цілей, у лютому 2001 року. Було заплановано, що я повинен буду брати участь у створенні нового продукту після того, як залишу підприємство, на якому працював на той час. І я думав, що наявність мови Ladder у цих продуктах може бути гарним варіантом, який варто врахувати. Тож я почав писати перші рядки коду для обчислення сходинки з мінімальними елементами та динамічного відображення її в Gtk, щоб перевірити, чи працює моя перша ідея щодо реалізації всього цього.

І оскільки я швидко виявив, що це досить добре просувається, я продовжив працювати зі складнішими елементами: таймером, кратними сходинками тощо…

Вуаля, ось ця робота… і навіть більше: я продовжую додавати нові функції з того часу.

— Марк Ле Дуарен, з "Genesis" на вебсайті ClassicLadder

ClassicLadder було адаптовано для роботи з HAL від LinuxCNC та наразі розповсюджується разом із LinuxCNC. Якщо виникнуть /проблеми/помилки, будь ласка, повідомте про них проєкту LinuxCNC.

2. Вступ

Ляддерна логіка або мова програмування Ladder — це метод малювання електричних логічних схем. Зараз це графічна мова, дуже популярна для програмування програмованих логічних контролерів (PLCs). Спочатку вона була винайдена для опису логіки, побудованої на реле. Назва походить від того, що програми на цій мові нагадують драбини з двома вертикальними «рейками» і серією горизонтальних «сходинок» між ними. У Німеччині та інших країнах Європи рейли зазвичай малюють горизонтально вздовж верхньої та нижньої частин сторінки, а сходинки — вертикально зліва направо.

Програма в логіці драбини, також звана діаграмою драбини, схожа на схему набору релейних ланцюгів. Логіка драбини корисна тим, що завдяки своїй схожості її можуть зрозуміти і використовувати без додаткового навчання інженери та технічні фахівці різних спеціальностей.

Ланцюгова логіка широко використовується для програмування PLCs, де необхідне послідовне управління процесом або виробничою операцією. Ланцюгова логіка корисна для простих, але критично важливих систем управління або для переробки старих дротових релейних схем. У міру вдосконалення програмованих логічних контролерів вона також стала використовуватися в дуже складних системах автоматизації.

Логіку драбини можна розглядати як мову, засновану на правилах, а не як процедурну мову. «Сходинка» в драбині представляє правило. При реалізації за допомогою реле та інших електромеханічних пристроїв різні правила «виконуються» одночасно і негайно. При реалізації в програмованому логічному контролері правила зазвичай виконуються послідовно за допомогою програмного забезпечення в циклі. Швидке виконання циклу, зазвичай багато разів на секунду, забезпечує ефект одночасного і негайного виконання.

Логіка сходів виконує такі загальні кроки для роботи.

  • Зчитування вхідних даних

  • Розв’яжіть логіку

  • Оновити виходи

3. Приклад

Найпоширенішими компонентами сходової схеми є контакти (входи), зазвичай вони бувають або NC (нормально замкнуті), або NO (нормально розімкнуті), та котушки (виходи).

  • нормально-поворотний контакт images/ladder_action_load.png

  • контакт NC images/ladder_action_loadbar.png

  • котушка (вихід) images/ladder_action_out.png

Звичайно, повноцінна мова сходинок містить багато інших компонентів, але розуміння їх допоможе вам зрозуміти загальну концепцію.

Драбина складається з однієї або кількох сходинок. Ці сходинки є горизонтальними доріжками (що представляють дроти) з компонентами на них (входами, виходами та іншими), які оцінюються зліва направо.

Цей приклад є найпростішим сходинкою:

images/example_link_contact_coil.png

Вхід зліва, B0, нормально відкритий контакт, підключений до котушки (виходу) праворуч, Q0. Тепер уявіть, що до крайнього лівого кінця подається напруга, оскільки вхід B0 стає істинним (наприклад, вхід активовано або користувач натиснув контакт NO). Напруга має прямий шлях до котушки (виходу) праворуч, Q0. Як наслідок, котушка Q0 (вихід) перейде з 0/вимкнено/неправда до 1/увімкнено/правда. Якщо користувач відпустить B0, вихід Q0 швидко повернеться до 0/вимкнено/неправда.

4. Базова схема фіксації ввімкнення/вимкнення

На основі наведеного вище прикладу припустимо, що ми додаємо перемикач, який замикається, коли котушка Q0 активна. Так відбувається в реле, де котушка може активувати контакти перемикача, або в контакторі, де часто є кілька невеликих допоміжних контактів на додаток до великих трифазних контактів, які є основною особливістю контактора.

Оскільки цей допоміжний перемикач приводиться в дію котушкою Q0 у нашому попередньому прикладі, ми надамо йому той самий номер, що й котушці, яка його приводить у дію. Це стандартна практика, якої дотримуються у всьому програмуванні релейних схем, хоча спочатку може здатися дивним бачити перемикач з тим самим номером, що й котушка. Тож назвемо цей допоміжний контакт Q0 і підключимо його до контакту «кнопки» B0 з нашого попереднього прикладу.

Давайте розглянемо це:

images/example_link_contact_coil2.png

Як і раніше, коли користувач натискає кнопку B0, котушка Q0 вмикається. А коли котушка Q0 вмикається, вмикається перемикач Q0. Тепер відбувається цікава частина. Коли користувач відпускає кнопку B0, котушка Q0 не зупиняється, як це було раніше. Це відбувається тому, що перемикач Q0 цієї схеми фактично утримує кнопку користувача натиснутою. Отже, ми бачимо, що перемикач Q0 все ще утримує котушку Q0 у включеному стані після відпускання кнопки «старт».

Цей тип контакту на котушці або реле, що використовується таким чином, часто називають «утримуючим контактом», оскільки він «утримує» котушку, з якою він пов’язаний. Іноді його також називають «герметичним» контактом, і коли він активний, кажуть, що ланцюг «герметичний».

На жаль, наша схема поки що має мало практичного застосування, оскільки, хоча ми маємо кнопку «включення» або «запуску» у вигляді кнопки B0, у нас немає можливості вимкнути цю схему після її запуску. Але це легко виправити. Все, що нам потрібно, це спосіб перервати подачу живлення на котушку Q0. Тому додамо нормально закриту (NC) кнопку безпосередньо перед котушкою Q0.

Ось як це виглядатиме:

images/example_link_contact_coil3.png

Тепер ми додали кнопку «вимкнути» або «зупинити» B1. Якщо користувач натискає її, контакт від ланки до котушки розривається. Коли котушка Q0 втрачає живлення, вона опускається до 0/вимкнено/неправда. Коли котушка Q0 вимикається, вимикається і перемикач Q0, тому «утримуючий контакт» розривається, або ланцюг «розривається». Коли користувач відпускає кнопку «стоп», контакт від щаблі до котушки Q0 відновлюється, але щабель вимкнений, тому котушка не вмикається знову.

Ця схема використовується вже протягом десятиліть практично на всіх машинах, що мають трифазний двигун, керований контактором, тому було неминуче, що її почнуть застосовувати програмісти драбинок/ПЛК. Це також дуже безпечна схема, оскільки якщо одночасно натиснути кнопки «старт» і «стоп», завжди перемагає функція «стоп».

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