Введение
Язык программирования для промышленных контроллеров
the programming language
Язык программирования Ladder Logic изначально был разработан как способ документирования проектирования и сборки релейных шкафов, используемых в производстве и системах управления технологическими процессами. Каждое устройство в релейном шкафу отображалось символом на лестничной схеме с указанием соединений между ними. Кроме того, на лестничной схеме также отображались внешние устройства, такие как насосы, нагреватели и другие компоненты. Ladder Logic эволюционировал в язык программирования, представляющий программу в виде графической диаграммы, основанной на принципиальных схемах релейной логики. Ladder Logic используется для разработки программного обеспечения для программируемых логических контроллеров (ПЛК), применяемых в системах промышленного управления. Название языка обусловлено тем, что программы, написанные на нем, напоминают лестницы с двумя вертикальными стойками и рядом горизонтальных перекладин между ними. Хотя лестничные схемы когда-то были единственным способом записи программ для программируемых контроллеров, сегодня в стандарте IEC 61131-3 стандартизированы и другие формы (например, в качестве альтернативы графической форме Ladder Logic существует язык Структурированный текст, более похожий на C, также определенный в стандарте IEC 61131-3).
Обзор
Лестничная логика широко используется для программирования ПЛК, когда требуется последовательное управление процессом или производственной операцией. Лестничная логика полезна для простых, но критически важных систем управления или для модернизации старых схем на основе жестко запрограммированных реле. По мере усложнения программируемых логических контроллеров она также стала применяться в очень сложных системах автоматизации. Часто программа лестничной логики используется совместно с программой HMI, работающей на компьютерной рабочей станции. Идея представления последовательной логики управления в виде лестничной диаграммы заключалась в том, чтобы позволить инженерам и техникам на производстве разрабатывать программное обеспечение без дополнительного обучения, необходимого для изучения языка, такого как FORTRAN или другого языка программирования общего назначения. Разработка и обслуживание были упрощены благодаря сходству со знакомыми системами релейного оборудования. Реализации лестничной логики могут обладать характеристиками, такими как последовательное выполнение и поддержка функций управления потоком, что делает аналогию с аппаратным обеспечением несколько неточной. Лестничную логику можно рассматривать как язык, основанный на правилах, а не как процедурный язык. "Ветка" в лестнице представляет собой правило. При реализации с использованием реле и других электромеханических устройств различные правила выполняются одновременно и немедленно. При реализации в программируемом логическом контроллере правила обычно выполняются последовательно программным обеспечением в непрерывном цикле, или "скане". Достаточно быстрое выполнение этого цикла, как правило, много раз в секунду, позволяет добиться эффекта одновременного и немедленного выполнения. Для правильного использования программируемых контроллеров необходимо понимать ограничения порядка выполнения веток.
Сложная логика
Вот пример того, как могут выглядеть две ступени в программе релейной логики. В реальных приложениях может быть сотни или тысячи ступеней. Как правило, сложную релейную логику "читают" слева направо и сверху вниз. По мере оценки каждой строки (или ступени) выходная катушка ступени может подаваться на следующую ступень релейной схемы в качестве входного сигнала. В сложной системе будет множество "ступеней" на релейной схеме, которые нумеруются в порядке их оценки:
Это представляет собой немного более сложную систему для ступени 2. После оценки первой строки выходная катушка "A/C" подается на ступень 2, которая затем оценивается, а выходная катушка "Охлаждение" может быть подана на выходное устройство "Компрессор" или на ступень 3 релейной схемы. Эта система позволяет разбивать и оценивать очень сложные логические схемы.
Ограничения и языки-преемники
Лестничная нотация лучше всего подходит для задач управления, где требуются только двоичные переменные и где взаимосвязь и последовательность двоичных сигналов является основной задачей управления. Как и во всех языках параллельного программирования, последовательный порядок операций может быть неопределённым или неясным; возможны логические гонки, которые могут приводить к непредсказуемым результатам. Чтобы избежать этой проблемы, сложные цепи лучше разбивать на несколько простых шагов. Некоторые производители избегают этой проблемы, явно и полностью определяя порядок выполнения цепи, однако программисты всё равно могут испытывать трудности с полным пониманием сложной семантики. Аналоговые величины и арифметические операции неудобно выражать в лестничной логике, и каждый производитель использует свои способы расширения нотации для решения этих задач. Поддержка массивов и циклов обычно ограничена, что часто приводит к дублированию кода для описания ситуаций, которые в других языках потребовали бы использования индексированных переменных. С ростом мощности микропроцессоров такие нотации, как последовательные функциональные диаграммы и функциональные блок-схемы, могут заменять лестничную логику в некоторых ограниченных приложениях. Некоторые новые ПЛК могут выполнять всё или часть программирования на диалекте, напоминающем BASIC, C или другой язык программирования с привязками, подходящими для среды приложений реального времени.
Популярность
В 2019 году журнал IEEE Spectrum поставил лестничную логику на 50-е место из 52 в рейтинге популярных языков программирования.