УДК 004.418

Языки программирования контроллеров. Особенности применения языков FBD, LD.

Ахмерова Алия Ниязовна – старший преподаватель кафедры Систем автоматизации и управления технологическими процессами Казанского национального исследовательского технологического университета.

Аннотация: В статье рассмотрены языки FBD и LD международного стандарта МЭК 61131 для программируемых логических контроллеров. Приведены факторы, влияющие на выбор языка программирования. Рассмотрена реализация программного кода одной и той же задачи на  двух графических языка стандарта МЭК 61131 - LD и FBD в среде CoDeSys.

Ключевые слова: Программируемые логические контроллеры, стандарт МЭК-61131, FBD, LD, CoDeSys.

Современные ПЛК (программируемые логические контроллеры) являются ключевым элементом системы управления объектом.  Для создания пользовательской программы, задающей алгоритм работы ПЛК, используются специальные языки программирования, регламентированные стандартом МЭК 61131. Так же существуют международный стандарт IEC 61131 и соответствующий европейский стандарт EN 61131. Сам стандарт включает в себя как общие понятия, которые уже применяются при  программировании ПЛК, так и дополнительные новые методы программирования, а так же  определяет архитектуру, параметры аппаратных средств, организацию коммуникационной подсистемы [1].

МЭК 61131 представляет собой  международный  стандарт, состоящий из 9 частей, для программируемых контроллеров и связанных с ними периферийных устройств.

В разделе МЭК 61131-3 «Контроллеры программируемые. Часть 3. Языки программирования» приводится описание синтаксиса и обозначений пяти регламентированных языков программирования логических контроллеров: FBD (диаграммы функциональных блоков), LD (релейно-контактные схемы или релейные диаграммы) ST (структурированный текст), IL (список инструкций), SFC (последовательные функциональные схемы).

МЭК 61131-3 является скорее руководством для программирования ПЛК, а не жестким набором правил, которые необходимо неукоснительно соблюдать.

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

На сегодняшний день существуют различные инструментальные среды разработки программ для контроллеров. К инструментальным средам программирования  на языках МЭК 61131-3 относятся: ISaGRAF, CoDeSys, MULTIPROG, SIMATIC STEP 7, OpenPCS, SOFTLOGIC, Concept и др.

Рассмотрим особенности применения  базовых языков программирования FBD и LD в среде CoDeSys.

LD – «релейные диаграммы» – графический язык, в основе которого лежат принципы работы релейно-контактных схем с возможностью использования различных функциональных блоков при подключении соответствующих библиотек. Язык LD использует жесткую логику, т.е. принимает только два значения «ложь» и «истина», где 0 – «ложь», а 1 – «истина». Символика языка была заимствована из проектирования в области электротехники.

Объектами языка программирования LD являются контакты, катушки и FFB (функции и функциональный блоки), с помощью которых задается структура секции ПЛК. Эти объекты взаимосвязаны через фактические параметры или связи.

Внешний вид  LD-секции представлен в виде ступеней. На рисунке 1 приведен фрагмент программы управления освещением в помещении в редакторе LD в CoDeSys.

 

Рисунок 1. Фрагмент программы в редакторе LD.

Вертикальная линия слева в рабочей области представляет собой «провод с высоким потенциалом», а вертикальная линия          справа – «нулевой провод». Между ними располагаются горизонтальные линии, именуемые контактными цепями. Слева по горизонтальным линиям располагаются «коммутаторы электрического тока», соответствующие входным переменным логического типа и дискретным входам. Справа располагаются «потребители электрического тока», соответствующие выходным переменным логического типа и дискретным выходам [3].

Как видно из рисунка 1, язык релейно-контактных схем идеален для простых программ, описывающих дискретную логику. В частности, перемещение объектов. Но для обработки «непрерывных» процессов с множеством аналоговых переменных язык LD не подходит.

В данном случае дискретные входы содержат информацию, поступающую с датчиков, т.е. текущие условия, базовая программа анализирует эти входы и подает соответствующие сигналы на выходы.   В редакторе LD  могут быть использованы таймеры, счетчики, детекторы передних фронтов, некоторые базовые сравнения или математические операции, но нет возможности использовать сложные функции, к которым можно отнести ПИД-регулирование, тригонометрия, анализ данных,  сохраняя при этом читаемость и компактность кода программы, а так же парадигму легкой визуализации.

Другим недостатком является то, что по мере роста объема программного кода, становится сложно читать и интерпретировать сам код из чего следует, что реализация процесса управления от и до на языке релейно-контактных схем  - трудная задача [2].

На рисунке 2 приведен фрагмент программы управления освещением в помещении, реализованной уже  в редакторе FBD.

 

Рисунок 2. Фрагмент программы в редакторе FBD.

Язык FBD – «язык функциональных блок-схем» – графический язык программирования, созданный для описания процессов прохождения сигналов и обеспечивающий управление потоками данных всех типов.

Язык FBD похож на электрические схемы, поэтому удобен для не имеющих опыта логического программирования инженеров-схемотехников, которые могут с легкостью составить электрическую схему системы управления на базе «жесткой логики». FBD подходит для управления непрерывными процессами и процессами регулирования.

При программировании на данном языке применяются наборы стандартных библиотек, а так же могут быть использованы собственные функциональные блоки, написанные на языке FBD, на других языках стандарта МЭК 61131-3 или же на языке С. Подобные блоки могут быть многократно использованы в разных частях программы. FBD заимствует символику булевой алгебры.

К преимуществам языка FBD относятся простота создания, наглядность, четкая последовательность, легкая структура команд, надежный и быстрый код. Язык FBD использует такие же команды, как и LD, но сама схема визуально более понятна пользователю, не обладающему знаниями релейной логики.

Язык функциональных блок-схем идеально подходит для  создания простых пользовательских программ с использованием цифровых входов и выходов,  может применяться в любых приложениях наряду с языком релейных диаграмм или вместо него.

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

Также при создании программы на языке FBD требуется предварительная проработка программы в виде четкого прописывания  алгоритма работы перед тем, как начать писать код, так как потом будет достаточно сложно внести      изменения [2].

Вывод: Каждый из выше рассмотренных языков имеет свои достоинства и недостатки. Если необходимо решить задачу с применением  цифровых входов/выходов или же реализовать алгоритм управления для базовых процессов, то подходят оба языка. В то же время LD обеспечивает легкость смены кода впоследствии, в отличие от FBD. Последний, в свою очередь, подходит для работы с непрерывными процессами.

Список литературы

  1. И.В. Елькин, П.В. Кустарев, Научно-технический вестник,4, 55-62 (2003).
  2. Понимание языков программирования IEC61131-3: [Электронный ресурс] / – Режим доступа: https://www.proasutp.com/articles/plc/understanding _the_iec61131_3_programming_languages.html), свободный.
  3. А.А. Игонин, А.Н. Крючков, В.Н. Илюхин, А.Г. Гимадиев Лабораторный практикум по программируемым логическим контроллерам / А.А. Игонин, – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2011. - 75 с.