Как сделать подпрограмму в codesys

Обновлено: 07.07.2024

Примеры простых программ для ПЛК в CodeSys на языке релейных диаграмм

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

Ранее по этой теме мы рассматривали несколько типовых решений в программах для ПЛК, которые могут использоваться для управления электродвигателями: Схемы пуска электродвигателя на языке лестничных диаграмм LD для ПЛК

Примеры простых программ для ПЛК в CodeSys на языке релейных диаграмм

В этой подборке рассмотрена автоматизация следующих процессов:

Автоматическая система для отбрасывания бутылок;

Автоматический выбор цвета краски;

Автоматизация вентиляционной системы.

Идеи и иллюстрации технологических технологических процессов взяты с сайта InstrumentationTools .

Все программы написаны в CodeSys на языке релейных диаграмм, в англоязычном варианте это язык Ladder Diagram, сокращенно LD.

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

Автоматическая система для отбрасывания бутылок

Принцип работы: данная система позволяет отбрасывать упавшие бутылки, которые затрудняют процесс производства.

Схема технологического процесса:

Автоматическая система для отбрасывания бутылок

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

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

Программа на языке релейных диаграмм для ПЛК в CodeSys автоматической системы отбраковки бутылок:

Программа на языке релейных диаграмм для ПЛК в CodeSys автоматической системы отбраковки бутылок

Программа в режиме эмуляции:

Программа в режиме эмуляции

Описание работы программы:

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

Процесс сброса бутылки:

Процесс сброса бутылки

Автоматический выбор цвета краски

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

Схема технологического процесса:

Автоматический выбор цвета пигмента

Здесь мы должны заполнить различные краски в банке согласно требованию. Итак, рассмотрим 3 типа краски разных цветов (желтый, синий и зеленый). Два клапана используются для подачи краски.

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

Селекторный переключатель используется для выбора цвета в системе, а переключатель ON/OFF используется для остановки системы.

Программа для ПЛК в CodeSys:

Программа для ПЛК в CodeSys

Описание работы программы:

Когда переключатель ВКЛ/ВЫКЛ (I2.0) находится в положении ВКЛ и нажата кнопка START, загорается лампа CYCLEON. Если цикл включен и выбрана краска желтого цвета ( YELLOWPIGMENTSELECTION ), клапан управления желтого цвета ( YELLOWCONTROLVALVE ) будет включен. Если цикл включен и выбрана краска синего цвета (BLUEPIGMENTSELECTION), клапан управления синим цветом (BLUECONTROLVALVE) будет включен. Если выбрана краска зеленого цвета (GREENPIGMENTSELECTION), оба клапана будут включены, а краска станет зеленого цвета.

Программа в режиме эмуляции (заполнение бутылки краской зеленого цвета):

Программа в режиме эмуляции

Автоматизация движения механизма в функции пути

Курс по программированию контроллеров:

Автоматизация вентиляционной системы

Программа ПЛК для системы управления вентиляторами для промышленности.

Во время работы системы должны работать любые два вентилятора из трех. Для запуска любых двух вентиляторов - скажем, вентилятора 2 и вентилятора 3 - для каждого предусмотрены отдельные кнопки запуска и остановки.

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

Это простой пример блока управления вентиляторами, используемый в промышленности.

Автоматизация вентиляционной системы

Программа для ПЛК в CodeSys:

Программа для ПЛК в CodeSys

Продолжение программы

В программе используется схема запуска цикла - катушка CYCLEK. Его можно запустить, нажав START, и остановить, нажав STOP. Главный выключатель (MS) должен быть включен.

Когда цикл включен (CYCLEK) и неисправностей вентилятора 2 и вентилятора 3 нет, то вентилятор 2 (FAN2) и вентилятор 3 (FAN3) будут включены. Если вентилятор 2 или вентилятор 3 неисправен, то будет запущен вентилятор 1 (FAN1).

В системе, если какие-либо два вентилятора из трех неисправны, то лампа индикации неисправности (FIND) начнет мигать с частотой 5 Гц. Для этого нужно использовать специальный таймер, но чтобы не усложнять программу ограничимся пока в ней отдельным контактом. Индикаторные лампы для вентилятора 1, вентилятора 2 и вентилятора 3 включаются в соответствии с сигналом неисправности.

Программа в режиме эмуляции (случай поломки вентилятора 3):

Программа в режиме эмуляции

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

Structured Text


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

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

А теперь давайте вспомним ту самую Standard.lib из CODESYS. В ней как раз реализованы МЭК-овские неблокирующие таймеры. Я взял ее за основу и портировал функции таймеров и триггеров в библиотечный код Arduino (С++). Т.е. попытался приблизить Arduino к классическому ПЛК.

Ниже я приведу краткое описание портированных функциональных блоков (FB) CODESYS и их аналоги в моей библиотеке plcStandardLib, все временные диаграммы верны для новой библиотеки Arduino. Подробнее описание исходных блоков можно посмотреть, например, в русскоязычной справке по CODESYS.

В Arduino IDE:


Временная диаграмма работы TON:


В Arduino IDE:

Очень похоже на TON, для краткости:


Временная диаграмма работы TOF:


В Arduino IDE:

Очень похоже на TON, для краткости:


Временная диаграмма работы TP:


Функциональный блок R_TRIG генерирует импульс по переднему фронту входного сигнала. Выход Q равен FALSE до тех пор, пока вход CLK равен FALSE. Как только CLK получает значение TRUE, Q устанавливается в TRUE. При следующем вызове функционального блока выход сбрасывается в FALSE. Таким образом, блок выдает единичный импульс при каждом переходе CLK из FALSE в TRUE.

Пример CODEDESYS на языке ST:

В Arduino IDE:

Функциональный блок F_TRIG генерирует импульс по заднему фронту входного сигнала.
Выход Q равен FALSE до тех пор, пока вход CLK равен TRUE. Как только CLK получает значение FALSE, Q устанавливается в TRUE. При следующем вызове функционального блока выход сбрасывается в FALSE. Таким образом, блок выдает единичный импульс при каждом переходе CLK из TRUE в FALSE.

В Arduino IDE:

RS_TRIG — функциональный блок RS-триггер / SR_TRIG — функциональный блок SR-триггер

Переключатель с доминантой выключения, RS-триггер:


Переключатель с доминантой включения:

Во встраиваемых системах обычно нет необходимости в программировании пользователем. Соответственно, не должно быть нужды и в МЭК-языках. Большинство разработчиков встраиваемых систем слышали о CODESYS, но, как правило, относятся к нему с изрядным скепсисом. В их понимании МЭК-системы программирования применимы только для ПЛК. В статье предпринята попытка разобраться, справедливо ли такое мнение.

В системах промышленной автоматизации базовым интеллектуальным элементом является программируемый логический контроллер (ПЛК) [1, 2, 3, 6, 7]. С точки зрения программирования главная особенность ПЛК состоит в том, что для работы с ним не требуется образование в области информатики. Инструменты и языки программирования ПЛК должны быть максимально просты и в то же время эффективны. Упрощение использования не должно повлечь за собой ограничение круга решаемых задач.

CODESYS

Рис. Эволюционный набор для PLC Core модулей SYSTEC с системой исполнения и визуализацией CODESYS V3

Создание качественного транслятора языка программирования высокого уровня является сложной и трудоемкой задачей. Для графических языков объем работы увеличивается за счет необходимости создания соответствующего графического редактора и отладчика. Поэтому задача поддержать несколько разных языков в одной программной среде стала серьезной проблемой для многих изготовителей ПЛК. В итоге это привело к возникновению компаний, специализирующихся на создании универсальных сред программирования на языках МЭК. Одной из наиболее успешных оказалась немецкая 3S-Smart Software Solutions GmbH со своим комплексом CODESYS.

CODESYS включает в себя редакторы и трансляторы для всех пяти стандартных языков с рядом существенных расширений. Он также поддерживает значительное число специализированных отладочных и сервисных функций. На сегодня CODESYS — мировой лидер среди МЭК-комплексов. С его помощью ежегодно программируется более полумиллиона контроллеров. После долгих лет горячих споров 18.01.2013 г. была одобрена третья редакция стандарта МЭК 61131-3. В нее вошли оригинальные объектно-ориентированные расширения языков МЭК [4], впервые реализованные в комплексе CODESYS V3. Таким образом, CODESYS создал новый международный стандарт. Описанию его составляющих, приемам эффективной работы и практике применения посвящено несколько книг и множество статей [1, 3, 6, 7, 8, 9].

Аспекты программиста

Чаще всего программисты встраиваемых систем противопоставляют CODESYS интегрированным компиляторам языка С/C++. Попробуем сравнить их технически (результаты сравнения приведены в таблице).

Аспекты руководителя

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

Проблема правильной организации работ

CODESYS

Рис. Самолетный тягачком пании TREPEL. Вместо обычных рычагов управления он оснащен встраиваемым панельным PC c CODESYS компании Janz Tec

CODESYS выручает благодаря свойствам 2 и 5 (см. таблицу). Нижним уровнем, включая установку системы исполнения CODESYS, занимаются системные программисты. Прикладной проект делается в CODESYS специалистами по прикладной области. Благодаря 4, им не требуется специальное образование. Системный и прикладной уровни четко разделены, как и требования к их исполнителям. При необходимости сопровождение ПО может быть передано заказчику. Специалистам заказчика достаточно пройти двухдневные учебные курсы.

Проблема развития универсальности системы и расширения рынка сбыта

CODESYS


Рис. Пульт управления яхтой, разработанный компанией Exor

Проблема интеграции с устройствами других компаний

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

Проблема замены ПЛК встраиваемой системой

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

Установка к CODESYS

Для того чтобы устройство программировалось в CODESYS, в нем предварительно должна быть установлена так называемая система исполнения CODESYS Control. Она включает планировщик задач, загрузчик, функции отладки, обслуживает полевые сети, ввод/вывод и т. д. Именно благодаря ей МЭК-программа оказывается аппаратно-независимой. Набор ресурсов, которые должна обслуживать система исполнения, отличается у разных контроллеров. Речь идет не только о микроконтроллере, но и об устройстве в целом. По этой причине нельзя просто скопировать систему исполнения с одного устройства на другое. Она всегда требует некоторой индивидуальной адаптации. Все существующие встраиваемые системы с CODESYS созданы одним из трех способов:

По требованию российских заказчиков Beck создала специальное исполнение чипов с расширенным температурным диапазоном (–40 °С). Существует исполнение для энергетики с поддержкой коммуникационной библиотеки МЭК 61850.

Первый путь выбирают крупные изготовители встраиваемых систем. Он оправдан при выпуске от нескольких сотен изделий в год и выше. В странах ЕС все более развивается практика заказа разработки. По числу применений в России лидирует технология Beck IPC@CHIP. В любом случае среда программирования CODESYS поставляется бесплатно. Никаких ограничений в функционале и числе установок в ней не предусмотрено. В CODESYS имеется встроенный эмулятор контроллера. Это позволяет начать работу без приобретения аппаратных средств.


Заключение

Сегмент встраиваемых систем в суммарном годовом объеме применений CODESYS ежегодно увеличивается. CODESYS применяется во встраиваемых контроллерах компаний Bosh, Rolls-Royce Marine, Praxis, CC Systems, Moba и др. Это далеко не опытные прототипы, речь идет о десятках тысяч изделий. Примеры нескольких применений показаны на фотографиях.

CODESYS v3

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

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

Особенности ПО для программирования и конфигурирования ПЛК CODESYS

В соответствии со стандартом МЭК 61131-3 CODESYS поддерживает 5 языков программирования:

  • IL (Instruction List) – язык, по синтаксису схожий с языком низкого уровня Ассемблер.
  • ST (Structured Text) – текстовый язык, похожий на Pascal.
  • LD (Ladder Diagram) – язык релейно-лестничных схем.
  • FBD (Function Block Diagramm) — язык функциональных блоков.
  • SFC (Sequental Function Chart) – язык диаграмм, похожих на блок-схемы.

Кроме этих языков CODESYS включает в себя еще один язык – CFC (Continuous Function Chart). Он похож на FBD, но позволяет располагать функциональные блоки свободно на экране и задавать порядок их выполнения.

Первая версия CODESYS увидела свет в 1994 году. С тех пор CODESYS обрел огромную популярность среди пользователей и производителей ПЛК. На данный момент сотни производителей выпускают тысячи моделей контроллеров на базе CODESYS.

CODESYS очень удобен для программиста.

  • Тот, кто раньше делал релейные схемы, легко сможет их адаптировать для ПЛК в языке LD.
  • Программисты высокого уровня по достоинству оценят язык ST, который для них будет понятным и доступным.
  • Разветвленные алгоритмы с четкой последовательностью действий удобно реализовывать с помощью SFC.
  • А если человек ни разу не сталкивался с программированием, то возможно стоит начать с FBD или CFC.

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

Описание ПО для программирования и конфигурирования ПЛК CODESYS

CODESYS – это не только среда программирования — это целый комплекс средств по работе с промышленным оборудованием. Он включает собственный OPC-сервер, графический редактор для создания визуализаций, менеджер рецептов, лог аварий и многое другое. На данный момент выпускаются контроллеры на базе двух версий CODESYS: версия 2 и версия 3.

CODESYS v2 поддерживается производителем только в режиме исправления ошибок. Новые функции в него уже не добавляются. Тем не менее, функционала CODESYS v2 достаточно для подавляющего большинства задач. К тому же он требует меньше ресурсов ПЛК и компьютера.

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

Основные отличия СODESYS v3 от v2:

И это лишь немногие изменения, которые принесла третья версия CODESYS. Таким образом, CODESYS v3 аккумулировал в себе многие тенденции современной промышленной автоматизации и продолжает регулярно обновляться, обзаводясь всё новыми и новыми функциями.

О тенденциях в промышленных сетях

Всемирная популярность протокола Modbus обусловлена несколькими причинами:

  • Протокол является полностью открытым, его спецификация доступна всем. При этом нет необходимости в специальных интерфейсных микросхемах для реализации.
  • Реализация Modbus очень проста на программном уровне.
  • Дешевая среда передачи (обычная витая пара).
  • Высокая надежность передачи данных благодаря использованию в каждой посылке контрольной суммы.

При разработке протокол был рассчитан на потребности и вычислительные возможности оборудования того времени. Многие актуальные для сетей нынешнего времени вопросы учтены не были:

  • Это низкая пропускная способность шины.
  • Отсутствие какой-либо начальной инициализации системы. Пользователю вручную придется настраивать каждое устройство перед включением его в сеть (а именно задавать ему адрес, скорость обмена и т.д.).
  • Дешевая среда передачи (обычная витая пара).
  • В стандарте четко прописано использование только двух типов данных: BOOL и WORD. Соответственно, при передаче других типов данных зачастую возникают разночтения между устройствами разных производителей.

Стремление к развитию промышленных сетей привело в появлению в 2003 году стандарта EtherCAT.

Основой EtherCAT является технология Ethernet, что позволяет использовать все преимущества данной технологии.

Читайте также: