Общие сведения по языкам программирования контроллеров
Языки программирования ПЛК во многом определяются конкретными приложениями, а также требованиями современных сложных распределенных систем управления [11, 12].
Историческое развитие ПЛК привело к возникновению разных решений, связанных с конкретным производителем и в той или иной степени удовлетворяющих общим стандартам (DIN 19239, 19237, 40719 Part 6 и VDI 2880). Однако элементы языков, несмотря на похожесть, у разных производителей отличались, существовали машинно-зависимые особенности языков, которые приходилось учитывать.
Для решения этой проблемы в феврале 1993 года международная организация по стандартизации IEC приняла и выпустила стандарт IEC-61131-3 (МЭК-61131-3), описывающий синтаксис и семантику пяти языков программирования ПЛК [37]. Использование стандартных языков и компьютерных средств программирования позволяет существенно снизить затраты на разработку прикладного программного обеспечения контроллеров и обеспечить его переносимость с одного контроллера на другой. В соответствии с указанным стандартом такими стандартными языками являются три графических языка и два текстовых (в соответствии с рисунком 4.3.1).
Рисунок 4.3.1 – Стандартные языки программирования контроллеров
LD (Ladder Diagram) – вариант класса языков релейно-контактных схем;
FBD (Functional Block Diagram) – аналогичен функциональной схеме электронного устройства с использованием логических элементов;
SFC (Sequential Function Chart) – язык диаграммного типа, аналогичный блок-схемам алгоритмов;
ST (Structured Text) – текстовый высокоуровневый язык общего назначения, по синтаксису напоминает Паскаль;
IL (Instruction List) – текстовый язык низкого уровня, по синтаксису напоминает Ассемблер.
Языки LD и FBD являются данью традициям (т. е. аппаратным аналогам этих языков – релейным схемам и функциональным схемам электронных устройств на базе логических элементов типа И, ИЛИ, НЕ и т. д.).
Язык LD – графический язык, основанный на принципах релейно-контактных схем (элементами релейно-контактной логики являются: контакты, обмотки реле, вертикальные и горизонтальные перемычки и др.) с возможностью использования большого количества различных функциональных блоков.
Язык релейных схем существует со времен Т. Эдисона и адаптирован к ПЛК в начале 70-х годов прошлого века. Впервые появился в пакетах программирования ПЛК компаний Allen-Bradly и Modicon. Символика этого языка была заимствована из проектирования в области электротехники.
Достоинствами языка LD являются: представление программы в виде электрического потока (близок специалистам по электротехнике), наличие простых правил, использование только булевых выражений. Язык LD имеет большой круг пользователей, рационален для ручной оптимизации специфических критических мест кода.
Язык FBD – это полностью графический язык высокого уровня, обеспечивающий управление потоками данных, включающих все типы. Позволяет использовать очень мощные алгоритмы простым вызовом функций и функциональных блоков, имеет большую библиотеку блоков, удовлетворяет непрерывным динамическим процессам, хорош для сложных вещей подобно ПИД-регуляторам (ПИД – пропорционально-интегрально-дифференциальный регулятор, PID-регулятор), массивам и т. д.
FBD заимствует символику булевой алгебры и, так как булевы символы имеют входы и выходы, которые могут быть соединены между собой, FBD более эффективен для представления структурной информации, чем язык релейно-контактных схем.
FBD замечателен для небольших приложений.
Язык IL является языком низкого (машинного) уровня, что существенно облегчает, например, условный или безусловный вызов функциональных блоков и функций, выполнение назначений и условных или безусловных переходов внутри секции, похож на Ассемблер. Язык IL позволяет создавать высокоэффективные и оптимизированные функции. Его можно рекомендовать для написания наиболее критических мест в программе.
Ассемблероподобные языки использовались для программирования компьютеров в 50-е годы XX века и все еще предлагаются некоторыми изготовителями ПЛК, особенно программистами, поддерживающими микроРС. Корни языка IL лежат в языке STEPS компании Siemens. IL можно программировать с помощью любого текстового редактора.
Язык ST является языком высокого уровня (типа Паскаля). Был популярен в середине 70-х годов XX века для сложных компьютерных приложений. Служит для создания процедур со сложной логикой. Может использоваться как в главных программах, так и в теле функции или FBD, а также для описания действий внутри элементов редакторов SFC или Flow Chart. Обладает высокой читабельностью исходного кода: ключевые слова, такие как AND, OR, NOT, IF, THEN, ELSE, WHILE (и т. д.) легко понимаемы; прост в сопровождении, если имена переменных понятны, имеются комментарии, код хорошо структурирован.
Язык SFC предложен в 1979 году (его прототипом является язык Grafcet компании Telemecanique, стандарт IEC 848) как графический язык, предназначенный для описания функций последовательных операций и позволяющий ясно и однозначно определить желаемое поведение системы управления. Отличается строгим математическим определением (каждое операционное состояние может быть декодировано с достаточно малым анализом). Удобен для описания как последовательных процессов, так и пакетных или параллельных процессов, легко комбинируется с другими языками (язык спецификаций). Обеспечивает улучшение понимания оборудования при формировании модели приложения. Обладает развитыми механизмами синхронизации. Использует простые динамические правила.
Диагностика языка SFC позволяет обнаружить ошибки проекта до того, как приложение тестируется в режиме “online”. Интерактивно анимируемый язык SFC также служит для облегчения диагностики оборудования и ошибок системы управления и после ввода в действие. Использование языка SFC как диагностического инструмента может уменьшать среднее время устранения таких неполадок. SFC широко принят как стандарт в Европе.
Языки SFC и ST, в паре составляющие полную и завершенную среду для программирования ПЛК, не всегда удовлетворяют пользователей, например, из-за быстродействия или невозможности доступа к системным ресурсам, что заставляет прибегать к использованию языков типа С, который не входит в стандарт IEC 61131-3 (далее – стандарт).
Стандарт определяет языки программирования, синтаксис, вид объектов, структуру ПО, объявление переменных.
Стандарт описывает детально синтаксис языков программирования, поэтому пользователь найдет один и тот же синтаксис во всех пакетах, поддерживающих стандарт, будь то пакет ISaGRAF компании CJ International или пакет Concept компании Schneider Electric. Графическое представление прикладных программ – это типичная особенность программирования ПЛК. Текстовые языки широко используются при программировании компьютеров.
Программирование логики ведется с применением языков SFC, LD, FBD, IL, ST, а также дополнительных интерактивных редакторов для описания переменных, определений и конфигурации ввода/вывода.
Все языки программирования контроллеров взаимоувязаны – для них стандарт определяет единые модели ПО, связных функциональных блоков и модель собственно программирования. Стандартизированы общие элементы этих языков и, прежде всего, используемые символы, типы данных и переменные. Определены функции и функциональные блоки, их декларации, наборы стандартных функций и функциональных блоков, понятия программ на этих языках. Стандарт определяет и такие общие элементы, как конфигурации, ресурсы, пути доступа, задачи. Все это дает возможность программирования на любом из этих языков с обеспечением генерации кодов единой программы. Языки программирования определены в стандарте таким образом, что допускают разработку приложений на их смеси, которая впоследствии собирается в единую исполняемую программу. Кроме того, стандарт открыт для использования других языков программирования. И, наконец, в стандарте рассмотрена специфика каждого из языков.
Требования к языкам программирования для ПЛК:
· наглядное описание автоматизируемых технологических процессов (ТП) и дальнейшая отладка в терминах исходного описания;
· мобильность – способность к переносу на различные аппаратные и операционные платформы;
· эффективное исполнение программы в реальном времени (РВ).
Наглядность описания определяется характером объекта и следующими задачами по управлению объектом [12]:
1 Задачи параллельной обработки большого числа логических контуров (сотен и тысяч) с обработкой исполнительных действий при наступлении тех или иных событий. В основе логического контура лежит проверка истинности логической функции от нескольких переменных, а событие равнозначно истинности этой функции. Задачи такого рода характерны, например, для таких технологических объектов, как электростанции, химические производства и производства по переработке нефти. Задача адекватно и наглядно описывается системой булевых уравнений. Все языки стандарта, за исключением SFC, хорошо подходят для описания подобных задач, поскольку они или содержат в себе средство представления булевых функций (языки IL, ST), или являются графической формой их отображения (языки LD, FBD).
2 Задачи управления процессом, проходящим в своем развитии через ряд состояний (шагов, стадий). Переход от одного состояния к другому происходит по событиям, формируемым по сигналам датчиков процесса. Такие задачи управления возникают, например, при управлении транспортно-складскими системами, агрегатными станками, робототехническими комплексами, характерны они и для объектов, перечисленных в п. 1, в частности при пуске и останове турбины и др. Задачи данного типа наиболее наглядно представляются автоматными моделями. В стандарте такая модель строится с использованием языка SFC (разметка состояний, логика управления) и любого другого языка (описание действий, связанных с состоянием, и событий, предписывающих смену состояний). Заметим, что подобные задачи могут быть полностью представлены с помощью других языков стандарта, например языка FBD с использованием элементов памяти – триггеров, но в этом случае автоматная модель будет выражена неявно.
3 Задачи автоматического регулирования (ПИД-законы, нечеткое управление и т. д.) встречаются практически везде. Здесь, как правило, используются библиотеки заранее разработанных компонентов – графических блоков для языков LD и FBD и подпрограмм для языков ST и IL.
4 Задачи управления распределенными технологическими объектами, оптимизационные, а также задачи, связанные с интеллектуальным анализом данных. Задачи такого типа решаются в сложных технологических объектах типа химических производств. Здесь в качестве средств адекватного описания могут использоваться языки ST, универсальные типа С, С++, Паскаль, сценарные типа Visual Basic, объектно-ориентированные типа Java.
Мобильность языков, т. е. способность к переносу на различные аппаратные и операционные платформы, может поддерживаться для языков стандарта в случае использования пакета от одного разработчика. Это связано с невозможностью сосуществования в одной разработке программ на одинаковых языках от разных поставщиков, так как требования стандарта IEC 61131-3 носят рекомендательный характер, а значит, приводят к различиям в реализации языков у разных производителей.
Эффективное исполнение в РВ дает ответ, насколько быстро сможет отреагировать система управления (ПЛК) на происшедшее событие. Обычно используется понятие «временной цикл», т. е. заранее задаваемый интервал времени, например, в диапазоне 10-300 мс, в течение которого ПЛК сможет гарантированно отреагировать на входное воздействие. Для обеспечения более быстрой реакции служат так называемые инициативные сигналы, которые обрабатываются по прерыванию (от десятков до сотен микросекунд).
Для широкого круга приложений задача обеспечения требуемого временного цикла решается достаточно легко благодаря высокому быстродействию процессоров, используемых в ПЛК. Например, в контроллерах Modicon применяются процессоры компании Intel от Intel 286 до Pentium. Тем не менее, здесь есть одна проблема: неэффективное использование процессора при управлении объектами, в которых осуществляется в основном обработка логической информации, при которой используется только один разряд из 32. Если найти решение этой проблемы, то, по крайней мере, можно будет понизить класс применяемого процессора, что выгодно по экономическим соображениям.
Согласно требованиям стандарта, непредопределенные объекты должны иметь имя и тип, объявленные программистом, предопределенные объекты распределяются на три зоны: зону памяти (%М), зону входов (%I) и зону выходов (%O). Объектами могут быть: биты (X), байты (В), слова (W), двойные слова (D), «длинные» слова (L) – 64 бита.
Ограничения стандарта: не фиксируется имя задач; размер графического редактора оставляется на выбор пользователя; нет минимального количества функций, готовых к реализации, но если используется имя по стандарту (функциональный блок и т. п.), то оно должно соответствовать стандарту; сервисные утилиты и средства разработки и отладки приложения (редакторы, языки, документирование и т. п.) не определены; нет точных правил выполнения программы (например для функциональных блоков); не описана конвертируемость языков. Сертификат IEC 61131-3 на сегодня не существует, нет определенного «класса соответствия». Каждый разработчик, объявивший свое соответствие норме, должен представить документацию таблиц соответствия, а также список дополнительных расширений.
Преимущества стандарта для конечных пользователей состоят в том, что уменьшается стоимость обучения, пользовательские приложения однородны, структура программ идентична, используются предопределенные объекты и т.п. Разнообразие стандартных языков позволяет каждую функцию приложения запрограммировать наиболее подходящим для данной задачи языком.
Следование стандарту позволяет разработчикам ПЛК обеспечить соответствие разработки техническим требованиям, предъявляемым потребителями, и даже ввести дополнительные функции, что не могут сделать мелкие поставщики ПО.
Изучение методологии проектирования систем автоматического и автоматизированного управления на основе современных информационных технологий, составной частью которых являются языки программирования ПЛК, – необходимый элемент в подготовке специалистов по интегрированным системам управления.
В данном курсе описывается синтаксис языков программирования ПЛК на примере пакета Concept [35, 36, 38].
Типы контроллеров, поддерживающих стандарт: ABB, Allen Bradley, Honeywell, Omron, Moore Products, PEP Modular Computers, Schneider Electric и многих других производителей.
По разным оценкам до 80% PLC-рынка обслуживается программными продуктами, реализующими в той или иной мере этот стандарт.