Языки программирования плк мэк 61131 + видео обзор

Понимание языков программирования IEC61131-3

Языки программирования плк мэк 61131

Сложность программного обеспечения, возможности PLC/PAC и возможность портировать программный код являются ключевыми факторами при выборе языка программирования контроллера. Около 120 лет назад Марк Твен сказал «есть несколько способов снять шкуру с кошки». Это клише все еще актуально в мире программирования контроллеров.

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

Многие инженеры в области АСУ ТП интересуются возможностями каждого языка программирования. В каких случаях предпочесть тот или иной язык? Какие преимущества и недостатки каждого? В данной статье содержится краткий обзор и сравнение каждого из пяти основных языков программирования контроллеров.

Язык релейно-контактных схем (LD)

Этот язык программирования, изобретенный в США десятилетия назад, получил наиболее широкое распространение. Изначально изобретенный для замены логических схем, выполненных на релейной технике, язык релейно-контактных схем является базовым в США на сегодняшний день, и применяется в 95% всех приложений. Визуально этот язык напоминает последовательность цепей управления, в которой все входы должны быть установлены в значение «истина» для активации одного или нескольких выходов.

Язык релейно-контактных схем получил такое широкое распространение, потому что на нем могут писать практически все программисты в любой стране.

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

Языки программирования плк мэк 61131

Рис. 1. Этот язык напоминает последовательность цепей управления, в которой все входы должны быть установлены
в значение «истина» для активации одного или нескольких выходов.

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

На языке релейно-контактных схем затруднительно реализовывать более сложный функционал ПЛК (программируемый логический контроллер, англ.: PLC), сохраняя парадигму легкой визуализации и понимания. Такие функции как ПИД-регулирование, тригонометрия и анализ данных в приложении реализовать трудно. Другой сложностью является то, что по мере роста объема программы, ее становится сложно читать и интерпретировать, если нет подробнейшей документации. Наконец, реализация полного процесса управления на языке релейно-контактных схем может быть чрезвычайно трудным.

Источник

МЭК 61131-3 (Прадо-Шляпцев)

Содержание

Описание

Стандарт МЭК 61131-3 устанавливает пять языков программирования ПЛК, три графических и два текстовых. Первоначально стандарт назывался IEC 1131-3 и был опубликован в 1993 г., но в 1997 г. МЭК перешел на новую систему обозначений и в названии стандарта добавилась цифра «6». Продвижением стандарта занимается организация PLCopen

IEC 61131-3 — раздел международного стандарта IEC 61131 (также существует соответствующий европейский стандарт EN 61131), описывающий языки программирования для программируемых логических контроллеров.
Программи́руемый логи́ческий контро́ллер (ПЛК) — электронная составляющая промышленного контроллера, специализированного (компьютеризированного) устройства, используемого для автоматизации технологических процессов. В качестве основного режима работы ПЛК выступает его длительное автономное использование, зачастую в неблагоприятных условиях окружающей среды, без серьёзного обслуживания и практически без вмешательства человека.

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

Характеристики системы программирования

Системы программирования, основанные на МЭК 61131-3, характеризуются следующими показателями:

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

Возможностью простой модификации программы и наращивания ее функциональности;

Переносимостью проекта с одного ПЛК на другой;

Возможностью повторного использования отработанных фрагментов программы;

Простотой языка и ограничением количества его элементов.

Виды языков программирования МЭК

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

Графическими языками являются SFC, FBD, LD. Языки IL и ST являются текстовыми.

Принципы языков МЭК

Языки МЭК 61131-3 базируются на следующих принципах:

— Стандарт требует строгой типизации данных. Указание типов данных позволяет легко обнаруживать большинство ошибок в программе до ее исполнения;

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

— Для выполнение операций в определенной последовательности, которая задается моментами времени или событиями, используется специальный язык последовательных функциональных схем ( SFC);

— Стандарт поддерживает структуры для описания разнородных данных. Например, температуру подшипников насоса, давление и состояние «включено-выключено» можно описать с помощью единой структуры «Pomp» и передавать ее внутри программы как единый элемент данных;

— Стандарт обеспечивает совместное использование всех пяти языков, поэтому для каждого фрагмента задачи может быть выбран любой, наиболее удобный, язык;

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

Любой ПЛК работает в циклическом режиме. Цикл начинается со сбора данных с модулей ввода, затем исполняется программа ПЛК и оканчивается цикл выводом данных в устройства вывода. Поэтому величина контроллерного цикла зависит от времени исполнения программы и быстродействия процессорного модуля.

Описание языков МЭК 61131-3

IL (Instruction List) — язык программирования стандарта IEC61131-3. Предназначен для программирования промышленных контроллеров. По синтаксису напоминает ассемблер.

LD (Ladder Diagram)— язык релейной (лестничной) логики.

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

FBD (Function Block Diagram) — графический язык программирования стандарта МЭК 61131-3.

Предназначен для программирования программируемых логических контроллеров (ПЛК). Программа образуется из списка цепей, выполняемых последовательно сверху вниз. Цепи могут иметь метки. Инструкция перехода на метку позволяет изменять последовательность выполнения цепей для программирования условий и циклов.

SFC (Sequential Function Chart) — язык программирования стандарта МЭК61131-3. Предназначен. для программирования промышленных контроллеров. Широко используется в SCADA/HMI пакетах.

SFC — графический язык, предназначенный для написания программ последовательного управления технологическим процессом, описывающий его в форме близкой к диаграмме состояний. Аналогом может служить сеть Петри с разноцветными фишками. В каждом состоянии система выполняет действия (подпрограммы) с определенными модификаторами.

ST (Structured Text) — язык программирования стандарта МЭК61131-3. Предназначен для программирования промышленных контроллеров и операторских станций. Широко используется в SCADA/ HMI/SoftLogic пакетах. По структуре ближе всего к языку программирования Паскаль. Удобен для написания больших программ и работы с аналоговыми сигналами и числами с плавающей точкой.

Источник

Языки программирования плк мэк 61131

Структурированный текст, ST

Язык ST является текстовым языком высокого уровня и очень сильно напоминает Паскаль:

Листинг 2. Пример программы на языке ST

IF Voltage>220 THEN

Current:=50; Speed:= ON;(*Установить ток 50А и включить мотор*)

Язык ST имеет много отличий от языка Паскаль и разработан специально для программирования ПЛК. Он содержит множество конструкций для присвоения значений переменным, для вызова функций и функциональных блоков, для написания выражений условных переходов, выбора операторов, для построения итерационных процессов.

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

Язык релейно-контактных схем, LD

Графический язык релейной логики впервые появился в виде электрических схем, которые состояли из контактов и обмоток электромагнитных реле (Рис. 1).

Языки программирования плк мэк 61131

Такие схемы использовались в автоматике конвейеров для сборки автомобилей до эры микропроцессоров.

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

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

Инкапсуляция (от лат. in capsule — в оболочке) — это заключение данных и функционала в оболочку. В объектно-ориентированном программировании в роли оболочки выступают классы: они не только собирают переменные и методы в одном месте, но и защищают их от вмешательства извне.

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

Сложные вычисления в этом языке невозможны. Недостатком является также то, что только маленькая часть программы умещается на мониторе компьютера или панели оператора при программировании.

Несмотря на указанные недостатки, язык LD относится к наиболее распространенным в мире, хотя используется для программирования только простых задач.

Диаграммы функциональных блоков, FBD

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

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

Функциональные блоки представляют собой фрагменты программ, написанных на IL, SFC или других языках, которые могут быть многократно использованы в разных частях программы и которым соответствует графическое изображение, принятое при разработке функциональных схем электронных устройств, см. Рис. 2.

Языки программирования плк мэк 61131

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

Все то, что во время компиляции или исполнения программы может содержать или обрабатывать значения различных типов — является полиморфным, например:

Но пожалуй, самое лаконичное определение полиморфизма, можно найти в книге Бенджамина Пирса «Типы в языках программирования»: Термин «полиморфизм» обозначает семейство различных механизмов, позволяющих использовать один и тот же участок программы с различными типами в различных контекстах.

Под контекстом, грубо говоря, понимается набор всех доступных переменных в текущем участке программы.

Типичным применением языка FBD является описание «жесткой логики» и замкнутых контуров систем управления.

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

К типовым блокам относятся блок таймера, ПИД-регулятора, триггера, генератора импульсов, фильтра, и т. п.

Последовательные функциональные схемы, SFC

SFC называют языком программирования, хотя по сути это не язык, а вспомогательное средство для структурирования программ.

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

Язык SFC предназначен для описания системы управления на самом верхнем уровне абстракции, например, в терминах «Старт», «Наполнение автоклава», «Выполнение этапа № 1», «Выполнение этапа № 2», «Выгрузка из автоклава».

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

Например, алгоритм автоматического соединения модема с коммутируемой линией описывается состояниями «Включение», «Обнаружение тона», «Набор номер», «Идентификация сигнала» и переходами «Если длинный — то ждать 20 сек», «Если короткий — перейти в состояние «Набор Номера» и т.д.

Источник

ПЛК — что это такое?

Доброго времени суток, уважаемые жители Хабра!
Прочитав пост про программирование ПЛК Siemens серии S7, я залез в поиск по Хабру, и был весьма удивлен, что тема промышленной автоматики вообще, и программирования ПЛК в частности, освещена весьма и весьма скудно. Возьму на себя смелость поделиться своим опытом в данной области, описав базовые принципы программирования ПЛК, в частности, производства компании Beckhoff.

Введение

Я занимаюсь автоматизацией зданий. Сложилось так, что в основном мы строим свои системы на базе ПЛК Beckhoff. Такой выбор был сделан прежде всего потому, что эти контроллеры являются свободно-программируемыми в полном смысле этих слов. Что это значит? Возьмите контроллер TAC Xenta, например, и попробуйте на нем реализовать обмен с внешним устройством через RS232 по собственному протоколу, на уровне «байт послал — байт принял». Не получится, эти контроллеры так не умеют — используйте только те протоколы, которые в них заложил разработчик. А Beckhoff умеет. Но прежде чем лезть в такие дебри, давайте посмотрим на среду разработки? На каком, собственно, языке, мы будем писать?

Стандарт МЭК 61131-3

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

Из не всеми поддерживаемых языков стоит отметить язык CFC (continuous flow chart), Beckhoff его поддерживает. Это дальнейшее развитие языка FBD, одним из наиболее существенных отличий, на мой взгляд, является поддержка явной обратной связи в схемах. Зачем это нужно? Например, вот такой генератор коротких импульсов на CFC будет работать, а на FBD – нет.
Языки программирования плк мэк 61131
Блок TON — это стандартный блок, таймер с задержкой включения. Логика работы: выход Q становится TRUE, когда на входе IN сигнал TRUE в течение не менее времени PT.
Самая популярная, наверное, среда разработки под ПЛК — это CoDeSys. Многие производители берут ее за основу, и либо делают к ней библиотеку для работы со своим ПЛК, либо доделывают среду под себя.

Как работает ПЛК?

Программа ПЛК работает циклично. Время цикла может быть от единиц миллисекунд до единиц секунд, в зависимости от задач, которые на этот ПЛК возложены. Большинство ПЛК позволяют задавать время цикла разработчику программы, однако в некоторых моделях такой возможности нет. Многие ПЛК, в частности Beckhoff, позволяют в одной программе создать более одной циклически выполняемой задачи, и задать приоритет для этих задач. Что нам дает эта возможность?
Представим ситуацию: ПЛК управляет вентиляционной установкой, и к нему подключена панель управления через RS232. Температура в помещениях меняется не быстро, и запускать алгоритм управления вентиляцией чаще, чем раз в 50 — 100 мс просто нет смысла. Зато панель оператора опрашивает контроллер постоянно, и задержка ответа ПЛК более 10 мс уже выражается в «притормаживании» интерфейса пользователя, а при задержке 20 мс у нас переполнится аппаратный буфер COM-порта. Наличие нескольких задач позволяет нам решить эту проблему красиво: пусть «быстрая» задача работает с COM-портом, и вызывается каждые 2 мс, а «медленная» реализует логику работы вентиляции, и вызывается каждые 50 мс. Все работает хорошо, панель оператора не тормозит, пользователь доволен.

А что у этих железок внутри?

Языки программирования плк мэк 61131
А вот другой вариант — голова Beckhoff серии CX9000 (слева на фото) с набором модулей ввода-вывода.

Помимо всего прочего, на голове еще имеется некая шина, позволяющая объединять ПЛК в сеть, а зачастую еще и менять его программу через эту же сеть. Какая это будет сеть — зависит от ПЛК. Это могут быть и незнакомые тем, кто не сталкивался с промышленными сетями EIA-485, Profibus, CAN, а может быть и вполне привычный Ethernet. Именно через эту сеть, называемую fieldbus, и осуществляется подключение ПЛК к верхнему уровню — к СКАДА-системе, например. На фото выше хорошо видны 2 разъема 8P8C на голове Beckhoff’а — это Ethernet, а у Carel сверху слева видны (плоховато, правда) 2 разъема 6P4C — так они сделали RS-485. У этого интерфейса, к сожалению, нет общепринятого разъема.

Так все же, как под него программы писать-то?

Вообще, это тема не статьи, а целой книги. Но расскажу то, что увидел на личном опыте, и пусть это будет ложкой дегтя.
Для профессиональных программистов освоение ПЛК во многом покажется деградацией. ООП? Их нет у нас, есть только структуры, перечисления, и некое подобие класса, которое называется «функциональный блок». Что такое Private, Public и прочее, тоже можно забыть сразу — не пригодится. Из любого места вашей программы можно получить доступ к любому другому месту.
Динамическое выделение памяти? Их нет у нас совсем. Не уверен, сколько тебе пришлют данных? Выделяй буфер с запасом, и забудь про эту память — освободить ее не получится. Либо проявляй чудеса скорости и обрабатывай данные на лету, если успеешь уложиться в заданное время цикла.
Исключения? Да что вы… видел я одно чудо, которое намертво висло при выполнении конструкции вида:

Понятно, что переполнение, не влазит foo * bar в 16 бит, но зачем же виснуть-то? Да еще так, что ничего, кроме сброса по питанию не помогает.
Среда разработки? Не у всех CoDeSys, многим хочется пооригинальничать и написать что-нить свое. Одна из таких самописных сред вылетала с runtime error при попытке записать число 86400 в 16-битный INT. А вы говорите, обработка исключений на ПЛК. Ее и в среде разработки-то не всегда нормально могут сделать.

НО! Зато для любителей той тонкой грани, которая отделяет железо от программного обеспечения, софта в просторечии — это очень интересная ветвь ай-ти, правда.

Надеюсь, что этот небольшой обзор будет полезен. Если хабрасообществу будет интересна эта тема, то расскажу про ПЛК подробнее.

Источник

Energy
education

сайт для тех, кто хочет изучать энергетику

Метрология и автоматизация

Языки программирования плк мэк 61131

Программируемый логический контроллер

Программируемый логический контроллер — электронная составляющая промышленного контроллера, используемого для автоматизации технологических процессов.

10. Системы программирования ПЛК на языках МЭК 61131-3

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

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

Для систем автоматизации, не связанных с АСУ ТП, используются программы LabVIEW, MatLab, HP-VEE и др., ориентированные на автоматизацию эксперимента, измерений или математическую обработку их результатов. Для простых задач или широко тиражируемых приложений бывает экономически эффективно использовать заказное программирование на С++ или Visual Basic с применением покупных ActiveX элементов, снижающих трудоемкость разработки.

Стандарт МЭК 61131-3 устанавливает пять языков программирования ПЛК, три графических и два текстовых. Первоначально стандарт назывался IEC 1131-3 и был опубликован в 1993 г. но в 1997 г. МЭК (IEC) перешел на новую систему обозначений и в названии стандарта добавилась цифра «6». Продвижением стандарта занимается организация PLCopen (http://www.plcopen.org).

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

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

Графическими языками являются SFC, FBD, LD. Языки IL и ST являются текстовыми.

В стандарт были введены несколько языков (а не один) для того, чтобы каждый пользователь мог применить наиболее понятный ему язык. Программисты чаще выбирают язык IL (похожий на ассемблер) или ST, похожий на язык высокого уровня Паскаль; специалисты, имеющие опыт работы с релейной логикой, выбирают язык LD, специалисты по системам автоматического управления (САУ) и схемотехники выбирают привычный для них язык FBD.

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

Языки МЭК 61131-3 базируются на следующих принципах:

Любой ПЛК работает в циклическом режиме. Цикл начинается со сбора данных с модулей ввода, затем исполняется программа ПЛК и оканчивается цикл выводом данных в устройства вывода. Поэтому величина контроллерного цикла зависит от времени исполнения программы и быстродействия процессорного модуля.

Язык релейно-контактных схем, LD

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

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

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

Несмотря на указанные недостатки, язык LD относится к наиболее распространенным в мире, хотя используется для программирования только простых задач.

Список инструкций, IL

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

В основе языка лежит понятие аккумулятора и переходов по меткам. Пример программы на зыке IL с комментариями приведен в листинге 4. Начинается программа с загрузки в аккумулятор значения переменной. Дальнейшие шаги программы состоят в извлечении содержимого аккумулятора и выполнении над ним ограниченного числа допустимых действий (их в языке всего 24).

Структурированный текст, ST

Язык ST является текстовым языком высокого уровня и очень сильно напоминает Паскаль:

Язык ST имеет много отличий от языка Паскаль и разработан специально для программирования ПЛК. Он содержит множество конструкций для присвоения значений переменным, для вызова функций и функциональных блоков, для написания выражений условных переходов, выбора операторов, для построения итерационных процессов. Этот язык предназначен в основном для выполнения сложных математических вычислений, описания сложных функций, функциональных блоков и программ.

Диаграммы функциональных блоков, FBD

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

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

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

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

Функциональные блоки стандартов МЭК 61499 и МЭК 61804

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

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

Особенностью функциональных блоках в МЭК 61499 является возможность управления событиями и большая степень обобщения функциональных блоков. Стандарт МЭК 61499 может использоваться совместно с МЭК 61131-3 как средство описания базовых типов функциональных блоков для программирования ПЛК, а внутренне описание ФБ выполняется с помощью языков МЭК 61131-3.

Одной из существенных особенностей МЭК 61499 является ориентация на системы, в которых функциональные блоки управляются событиями, в то время как традиционные системы автоматизации строятся обычно на базе тактирования или управления по временному расписанию. Событийное управление использовано потому, что в распределенных системах оно является более общим. Любая система с тактированием может быть представлена в виде системы с событийным управлением, но обратное не всегда верно

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

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

Каждый функциональный блок имеет свои функциональные характеристики, которые определяются комбинацией внутренних данных, состояний и алгоритмов, а также функциональными возможностями ресурсов устройства. Ресурс – это функциональный элемент, содержащийся в физическом устройстве и независимо управляющий его операциями, а также обеспечивающий различные сервисы для приложений, включая планирование и выполнение алгоритмов. Ресурс может быть создан, сконфигурирован, стартован, удален и т.д. без воздействия на другие ресурсы в устройстве. Функциями ресурса являются прием данных и событий через входные интерфейсы, обработка и выдача их через выходные интерфейсы.

Третьим стандартом, развивающим представление о функциональных блоках, является МЭК 61804. Он содержит спецификацию (детализацию) требований к распределенным системам управления, построенным на основе функциональных блоков. МЭК 61804 конкретизирует абстрактные определения, данные в МЭК 61499. Он добавляет в МЭК 61499 описания параметров и функций, выполняемых функциональными блоками, которые могут быть реализованы в физических устройствах.

Стандарт определяет минимальный набор функциональных блоков, который может быть необходим для индустриальных приложений. Набор состоит из двух частей: сложные функциональные блоки (ПИД-регулятор, селектор для схем голосования, инкрементный сумматор, таймер, интегратор) и простые (вычисление тригонометрических функций, модуля, суммирования, усреднения, блоки арифметических операций, блоки Булевых функций и т. п.).

Одним из наиболее широко применяемых спецификаций стандарта МЭК 61804 является описание языка EDDL (Electronic Device Description Language), который является дальнейшим развитием методов генерации GSD файла в сетях Profibus и разрабатывался с поддержкой организации Fieldbus Foundation.

Описанию функциональных блоков для систем автоматизации зданий посвящен стандарт ISO 16484-3.

Последовательные функциональные схемы, SFC

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

Программное обеспечение

Программирование ПЛК на описанных выше языках МЭК 61131-3 осуществляется с помощью специализированного программного обеспечения, которое разрабатывается производителями ПЛК или фирмами, специализирующимися на создании ПО для систем автоматизации. Наиболее известными в мире являются системы CoDeSys фирмы 3S (www.3s-software.com) и ISaGRAF фирмы ICS Triplex (www.isagraf.com).

CoDeSys (Controller Development System) представляет собой комплекс программ для проектирования прикладного программного обеспечения, отладки в режиме эмуляции и загрузки программы в ПЛК. Основными частями системы являются среда разработки программы и среда ее исполнения (CoDeSys SP), которая находится в ПЛК.

В CoDeSys входят графические и текстовые редакторы для всех пяти языков МЭК 61131-3. Этот комплекс полностью реализует требования стандарта и дополнительно вводит ряд оригинальных расширений, самым удобным из которых является объектно-ориентированные программирование. Однако расширениями языка можно не пользоваться, чтобы сохранить требования к совместимости языков, предъявляемое к открытым системам.

В одном проекте может быть использовано несколько контроллеров разных производителей. Каждый из них может программироваться как независимое устройство или с учетом их взаимодействия в промышленной сети. Проект состоит из нескольких приложений, распределенных по нескольким контроллерам. В одном ПЛК может существовать несколько независимых приложений.

Программа, написанная на языках МЭК, компилируется системой CoDeSys в машинный код, оптимизированный для заданной аппаратной платформы. Компилятор выдает диагностические сообщения как на этапе компиляции, так и на этапе ввода операторов языка.

Машинный код, сгенерированный компилятором CoDeSys, загружается в ПЛК, после чего разработчик имеет возможность использовать широкий набор функций для быстрой и эффективной отладки приложения. Текущие значения переменных видны непосредственно в редакторах программ. Программу можно выполнять по шагам или по контроллерным циклам. Можно задавать точки останова программы, просматривать стек вызовов, подготавливать связные наборы значений переменных и загружать их одной командой.

При отсутствии реального контроллера отладку программы можно выполнять с помощью встроенного программного эмулятора.

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

После изменения программы во время отладки перекомпилируются только измененные части программы. Их можно подгружать в контроллер без остановки выполнения прикладной программы. Эта возможность системы называется «горячим обновлением» кода.

Программируемое устройство соединяется с CoDeSys через вспомогательный программный компонент – шлюз связи, который использует протокол TCP/IP. Шлюз работает на компьютере программиста или удаленно, например, через интернет или сеть Ethernet. Контроллер подключается компьютеру через любой последовательный канал или сеть. Добавив драйвер, изготовитель ПК может поддержать свой оригинальный протокол связи.

Общение ПЛК со SCADA осуществляется с помощью стандартного ОРС сервера.

Для того, чтобы ПЛК можно было программировать с помощью CoDeSys, в контроллере должна быть установлена система исполнения. Установку системы выполняет изготовитель контроллера. Изготовитель обеспечивает также поддержку всех модулей ПЛК, поэтому конечный пользователь может сосредоточиться на разработке только прикладной программы.

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

Помимо средств программирования, CoDeSys имеет встроенную систему визуализации, которая применяется для операторского управления, а также моделирования на этапе разработки. Визуализацию можно запустить на компьютере, графической панели ПЛК или встроенном в контроллер web-сервере.

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

Комплекс программирования CoDeSys построен по компонентной технологии Microsoft на базе автоматизации. Поэтому изготовитель ПЛК может включить в комплекс свои собственные компоненты, от конфигуратора оригинальной сети до собственного языка программирования ПЛК.

Для систем, связанных с безопасностью, CoDeSys имеет библиотеку функциональных блоков PLCopen Safety, систему исполнения для оборудования с дублированием и специализированное расширение среды программирования. При внезапном отключении питания CoDeSys автоматически сохраняет значения переменных во флеш-памяти или в ОЗУ с батарейным питанием.

ISaGRAF. Система ISaGRAF фирмы ICS Triplex (www.isagraf.com) также состоит из среды разработки и среды исполнения. Среда исполнения может функционировать практически на любой операционной системе и любой аппаратной платформе, включая персональный компьютер. Среда разработки поддерживает все пять зыков МЭК 61131-3 и функциональные блоки МЭК 61499, имеет средства для редактирования, компиляции, документирования, управления библиотеками, архивирования, моделирования системы при отсутствии реального ПЛК и отладки с подключенным ПЛК.

Комплекс программ ISaGRAF первый на рынке использовал новый стандарт МЭК 61499 для программирования распределенных систем управления.

Связь между SCADA пакетом и контроллером, запрограммированным с помощью ISaGRAF, осуществляется с помощью стандартного ОРС сервера.

Среда исполнения создается и загружается в контроллер производителем ПЛК и является независимой от исполняемой в ней программы пользователя.

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

Администратор сайта: Колосов Михаил
email:
Copyright © 2011-2021. All rights reserved.

Источник

Видео

IEC 61131-3 Structured Text оператор IF

IEC 61131-3 Structured Text оператор IF

Представляю книгу по Structured Text (ST) МЭК 61131-3

Представляю книгу по Structured Text (ST) МЭК 61131-3

Программирование ПЛК. Как понять язык LADDER за 5 минут!

Программирование ПЛК. Как понять язык LADDER за 5 минут!

Основы программирования контроллеров за 5 минут

Основы программирования контроллеров за 5 минут

Программирование ПЛК (программируемых логических контроллеров). Введение.

Программирование ПЛК (программируемых логических контроллеров). Введение.

Программирование Omron. Начало

Программирование Omron. Начало

5 ХУДШИХ языков программирования, которые не стоит учить!

5 ХУДШИХ языков программирования, которые не стоит учить!

#4 - Structured Text // Функция или функциональный блок?

#4 - Structured Text // Функция или функциональный блок?

Программирование µPAC-7186EX на языках МЭК 61131-3. SCADA TRACE MODE 6

Программирование µPAC-7186EX на языках МЭК 61131-3. SCADA TRACE MODE 6

Программирование ПЛК в ONI PLR Studio часть 1

Программирование ПЛК в ONI PLR Studio часть 1
Поделиться или сохранить к себе:
Добавить комментарий

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