Панель оператора язык программирования
Структурированный текст, ST
Язык ST является текстовым языком высокого уровня и очень сильно напоминает Паскаль:
Листинг 2. Пример программы на языке ST
Current:=Current — 10; (*Если V>220 В, то уменьшить ток на 10*)
Current:=50; Speed:= ON;(*Установить ток 50А и включить мотор*)
Язык ST имеет много отличий от языка Паскаль и разработан специально для программирования ПЛК. Он содержит множество конструкций для присвоения значений переменным, для вызова функций и функциональных блоков, для написания выражений условных переходов, выбора операторов, для построения итерационных процессов.
Этот язык предназначен в основном для выполнения сложных математических вычислений, описания сложных функций, функциональных блоков и программ.
Язык релейно-контактных схем, LD
Графический язык релейной логики впервые появился в виде электрических схем, которые состояли из контактов и обмоток электромагнитных реле (Рис. 1).
Рис. 1. Пример программы на языке LD (слева) и ее эквивалент в виде электрической цепи с реле и выключателями (справа)
Такие схемы использовались в автоматике конвейеров для сборки автомобилей до эры микропроцессоров.
Язык релейной логики был интуитивно понятен людям, слегка знакомым с электротехникой и поэтому оказался наиболее распространенным в промышленной автоматике. Обслуживающий персонал легко находил отказ в оборудовании, прослеживая путь сигнала по релейной диаграмме.
Однако язык LD проблематично использовать для реализации сложных алгоритмов, поскольку он не поддерживает подпрограммы, функции, инкапсуляцию и другие средства структурирования программ с целью повышения качества программирования. Эти недостатки затрудняют многократное использование программных компонентов, что делает программу длинной и сложной для обслуживания.
Инкапсуляция (от лат. in capsule — в оболочке) — это заключение данных и функционала в оболочку. В объектно-ориентированном программировании в роли оболочки выступают классы: они не только собирают переменные и методы в одном месте, но и защищают их от вмешательства извне.
Для выполнения арифметических функций в язык LD были добавлены функциональные блоки, которые выполняли операции сложения, умножения, вычисления среднего и т.д.
Сложные вычисления в этом языке невозможны. Недостатком является также то, что только маленькая часть программы умещается на мониторе компьютера или панели оператора при программировании.
Несмотря на указанные недостатки, язык LD относится к наиболее распространенным в мире, хотя используется для программирования только простых задач.
Диаграммы функциональных блоков, FBD
FBD является графическим языком и наиболее удобен для программирования процессов прохождения сигналов через функциональные блоки.
Язык FBD удобен для схемотехников, которые легко могут составить электрическую схему системы управления на «жесткой логике», но не имеют опыта программирования.
Функциональные блоки представляют собой фрагменты программ, написанных на IL, SFC или других языках, которые могут быть многократно использованы в разных частях программы и которым соответствует графическое изображение, принятое при разработке функциональных схем электронных устройств, см. Рис. 2.
Язык FBD может быть использован для программирования функций, функциональных блоков и программ, а также для описания шагов и переходов в языке SFC. Функциональные блоки инкапсулируют данные и методы, чем напоминают объектно-ориентированные языки программирования, но не поддерживают наследование и полиморфизм.
Все то, что во время компиляции или исполнения программы может содержать или обрабатывать значения различных типов — является полиморфным, например:
- переменные, меняющие свое значение на значение другого типа
- объекты, обладающие свойствами, которые могут менять значение текущего типа на значение другого типа
- функции, принимающие аргументы различных типов
Но пожалуй, самое лаконичное определение полиморфизма, можно найти в книге Бенджамина Пирса «Типы в языках программирования»: Термин «полиморфизм» обозначает семейство различных механизмов, позволяющих использовать один и тот же участок программы с различными типами в различных контекстах.
Под контекстом, грубо говоря, понимается набор всех доступных переменных в текущем участке программы.
Типичным применением языка FBD является описание «жесткой логики» и замкнутых контуров систем управления.
Язык функциональных блоков является удобным также для создания и пополнения библиотеки типовых функциональных блоков, которую можно многократно использовать при программировании задач промышленной автоматизации.
К типовым блокам относятся блок таймера, ПИД-регулятора, триггера, генератора импульсов, фильтра, и т. п.
Последовательные функциональные схемы, SFC
SFC называют языком программирования, хотя по сути это не язык, а вспомогательное средство для структурирования программ.
Он предназначен специально для программирования последовательности выполнения действий системой управления, когда эти действия должны быть выполнены в заданные моменты времени или при наступлении некоторых событий. В его основе лежит представление системы управления с помощью понятий состояний и переходов между ними.
Язык SFC предназначен для описания системы управления на самом верхнем уровне абстракции, например, в терминах «Старт», «Наполнение автоклава», «Выполнение этапа № 1», «Выполнение этапа № 2», «Выгрузка из автоклава».
Язык SFC может быть использован также для программирования отдельных функциональных блоков, если алгоритм их работы естественным образом описывается с помощью понятий состояний и переходов.
Например, алгоритм автоматического соединения модема с коммутируемой линией описывается состояниями «Включение», «Обнаружение тона», «Набор номер», «Идентификация сигнала» и переходами «Если длинный — то ждать 20 сек», «Если короткий — перейти в состояние «Набор Номера» и т.д.