Контроллер — управляющее устройство, применяемое в промышленности, на транспорте, в других отраслях и в быту, для автоматического управления оборудованием по заданному алгоритму. Контроллеры широко используются для управления технологическими процессами, поддержания физических параметров объекта управления на заданном уровне и схожих по содержанию задач.
Одним из самых перспективных типов контроллеров на сегодняшний день является электронный программируемый логический контроллер (ПЛК), алгоритмы работы которого описываются программно, хранятся во внутренней памяти контроллера и выполняются встроенным в ПЛК микропроцессором. Взаимодействие электронного контроллера с объектом управления происходит посредством входящих и исходящих электрических сигналов.
Программируемые логические контроллеры имеют относительно простую для понимания архитектуру и широко применяются во встраиваемых системах, системах автоматического контроля, защиты и управления. Конструктивно это, как правило, довольно компактное устройство, состоящее из одного или нескольких соединенных между собой электронных модулей, содержащих разъемы для подачи на контроллер питания и подключения внешних входных и выходных электрических линий, позволяющих контроллеру взаимодействовать с внешним миром.
Программирование ПЛК (программируемых логических контроллеров). Введение.
Программное обеспечение ПЛК
Современный ПЛК имеет развитый комплекс программных средств, состоящих из системного программного обеспечения ПЛК, предоставляемого производителем контроллера и сторонних или собственных программных средств, предназначенных для разработки, отладки и записи в контроллер пользовательских программ.
Системное программное обеспечение ПЛК, состоящее из операционной системы с интегрированным в нее набором драйверов, отвечает за выполнение контроллером пользовательского приложения, обслуживает низкоуровневую систему ввода-вывода контроллера, интерфейсы передачи данных, управляет распределением памяти, режимами энергопотребления, таймерами, осуществляет обработку ошибок, позволяя пользователю, разрабатывающему приложение, полностью сосредоточиться на алгоритмической части решения прикладной задачи.
Средства разработки и отладки пользовательских программ позволяют создавать и корректировать программы, реализующие алгоритмы работы контроллера, моделировать на ПК процесс выполнения программы контроллером, наблюдать за промежуточными результатами вычислений, а также записывать программное обеспечение в контроллер.
Как работает ПЛК
Перед применением ПЛК, в него необходимо загрузить системное ПО и пользовательскую программу, разработанную для решения конкретной прикладной задачи. Все программное обеспечение ПЛК обычно располагается в энергонезависимой памяти и защищено от повреждения в случае сброса питания. Изменение кода прикладной программы в памяти ПЛК может быть выполнено пользователем многократно.
Типовая схема работы ПЛК может быть описана следующим образом.
К внешним каналам ввода контроллера подключаются датчики, к каналам вывода — исполнительные механизмы. На контроллер подается питание и его системное ПО начинает циклически исполнять пользовательское приложение.
Программирование ПЛК. Как понять язык LADDER за 5 минут!
Цикл выполнения приложения состоит из следующих, последовательных этапов:
- системное ПО контроллера считывает состояние каждого входного канала контроллера и записывает его во внутреннюю память контроллера;
- системное ПО контроллера, последовательно, команда за командой, выполняет всё пользовательское приложение: каждая исполняемая команда приложения считывает из внутренней памяти необходимые ей данные, производит с ними вычисления и записывает результаты своих расчетов во внутреннюю память контроллера;
- системное ПО контроллера получает из внутренней памяти те значения, которые необходимо отобразить на выходе контроллера, и переводит выходные каналы в соответствующее состояние, после чего, весь цикл выполнения повторяется с начала.
Рассмотренный подход к архитектуре среды исполнения пользовательской программы, дает возможность реализовать логически параллельное исполнение контроллером нескольких задач в рамках одной пользовательской программы, позволяя автоматизировать управление несколькими одновременно происходящими процессами используя единственный ПЛК.
Программирование без программиста
Одной из базовых идей, лежащих в основе использования ПЛК, является упрощение системы программирования и повышение наглядности языковых средств до уровня, доступного для понимания техническому специалисту хорошо знающему и непосредственно эксплуатирующему оборудование, но не обладающему специальными знаниями в области разработки программного обеспечения.
Такой специалист, получив простой и понятный инструмент выражения своих знаний об алгоритмах управления процессами, находящимися в его ведении, во многих случаях будет способен самостоятельно реализовать и отладить программу ПЛК, а при необходимости перенастроить параметры работы оборудования и своевременно изменить программу управления.
Зачастую качество программы ПЛК созданной таким специалистом оказывается выше, чем программы, написанной по его заданию профессиональным программистом не знакомым со всеми особенностями работы автоматизируемого процесса.
СМОТРИ ТАКЖЕ
- Программируемый логический контроллер CANNY 7
- Программируемый логический контроллер CANNY 7.2 Duo
- Программируемый логический контроллер CANNY 5.3 Pico
- Архитектура ПЛК
- Структура ПО контроллера
- Среда исполнения функциональных диаграмм
Источник: canny.ru
ПЛК — что это такое?
Доброго времени суток, уважаемые жители Хабра!
Прочитав пост про программирование ПЛК Siemens серии S7, я залез в поиск по Хабру, и был весьма удивлен, что тема промышленной автоматики вообще, и программирования ПЛК в частности, освещена весьма и весьма скудно. Возьму на себя смелость поделиться своим опытом в данной области, описав базовые принципы программирования ПЛК, в частности, производства компании Beckhoff.
Введение
Я занимаюсь автоматизацией зданий. Сложилось так, что в основном мы строим свои системы на базе ПЛК Beckhoff. Такой выбор был сделан прежде всего потому, что эти контроллеры являются свободно-программируемыми в полном смысле этих слов. Что это значит?
Возьмите контроллер TAC Xenta, например, и попробуйте на нем реализовать обмен с внешним устройством через RS232 по собственному протоколу, на уровне «байт послал — байт принял». Не получится, эти контроллеры так не умеют — используйте только те протоколы, которые в них заложил разработчик. А Beckhoff умеет. Но прежде чем лезть в такие дебри, давайте посмотрим на среду разработки? На каком, собственно, языке, мы будем писать?
Стандарт МЭК 61131-3
Промышленные ПЛК программируются на языках стандарта МЭК 61131-3. Всего этих языков 5, некоторые производители добавляют свои. Языки друг на друга совсем не похожи, и, наблюдая за коллегами, могу предположить, что выбор того или иного языка связан прежде всего с тем, чем человек занимался до того, как он пришел в эту отрасль.
- IL, instruction list, список инструкций. Похож на ассемблер. Не видел никого, кто его использовал бы, но подозреваю, что олдскульные кодеры, пробивавшие перфокарты по памяти, оценят.
- LD, ladder diagram. Визуальный язык, для тех, кто занимался разработкой схем релейной автоматики.
- ST, structured text. Более всего напоминает «классические» языки программирования, чем-то похож на Паскаль. Оттого ценится теми, кто до ПЛК занимался программированием на других языках и платформах, в частности — мной.
- FBD, functional block diagram. Этакая блок схема, любим прежде всего технологами, решившими податься в программирование, за свою наглядность.
- SFC, sequential function chart. Графический язык, больше ничего не скажу. Ни разу не видел, чтоб его использовали.
Из не всеми поддерживаемых языков стоит отметить язык CFC (continuous flow chart), Beckhoff его поддерживает. Это дальнейшее развитие языка FBD, одним из наиболее существенных отличий, на мой взгляд, является поддержка явной обратной связи в схемах. Зачем это нужно? Например, вот такой генератор коротких импульсов на CFC будет работать, а на FBD – нет.
Блок TON — это стандартный блок, таймер с задержкой включения. Логика работы: выход Q становится TRUE, когда на входе IN сигнал TRUE в течение не менее времени PT.
Самая популярная, наверное, среда разработки под ПЛК — это CoDeSys. Многие производители берут ее за основу, и либо делают к ней библиотеку для работы со своим ПЛК, либо доделывают среду под себя.
Как работает ПЛК?
Программа ПЛК работает циклично. Время цикла может быть от единиц миллисекунд до единиц секунд, в зависимости от задач, которые на этот ПЛК возложены. Большинство ПЛК позволяют задавать время цикла разработчику программы, однако в некоторых моделях такой возможности нет. Многие ПЛК, в частности Beckhoff, позволяют в одной программе создать более одной циклически выполняемой задачи, и задать приоритет для этих задач. Что нам дает эта возможность?
Представим ситуацию: ПЛК управляет вентиляционной установкой, и к нему подключена панель управления через RS232. Температура в помещениях меняется не быстро, и запускать алгоритм управления вентиляцией чаще, чем раз в 50 — 100 мс просто нет смысла. Зато панель оператора опрашивает контроллер постоянно, и задержка ответа ПЛК более 10 мс уже выражается в «притормаживании» интерфейса пользователя, а при задержке 20 мс у нас переполнится аппаратный буфер COM-порта. Наличие нескольких задач позволяет нам решить эту проблему красиво: пусть «быстрая» задача работает с COM-портом, и вызывается каждые 2 мс, а «медленная» реализует логику работы вентиляции, и вызывается каждые 50 мс. Все работает хорошо, панель оператора не тормозит, пользователь доволен.
А что у этих железок внутри?
Тут все очень и очень зависит от производителя. Кто-то делает свою embedded-платформу на RISC-процессоре (например, отечественный «Овен») — этот подход очень популярен. Beckhoff же пошли по другому пути — на их ПЛК установлена Windows CE 5.0 (а если обновить с официального сайта прошивку — то 6.0), или же Windows XP Embedded, а PLC-задача работает как служба. Достаточно интересный контраргумент для любителей рассказывать о нестабильности Windows.
Но это «голова» контроллера, а ведь ему еще нужны входы и выходы, чтобы общаться с внешним миром. Тут есть два подхода:
- Можно сделать «все в одной коробке» — голова, некий набор входов / выходов, несколько вариантов конфигурации — вот тут у нас входов побольше, тут поменьше, тут голова помощнее, тут послабее. Так делают, например, Carel, и много кто еще. На маленьком проекте такой подход себя в чем-то, может быть, и оправдывает.
- Но лично мне кажется, что большую гибкость дает другой подход. Голова отдельно, и к ней по шине подключается наборный «хвост» из модулей ввода-вывода. Мы ставим те модули, которые нам нужны, и в том количестве, которые нам нужно. Так делают Beckhoff и Siemens, например.
Вот так выглядит внешне подход «все в одной коробке». На фото Carel pCO3.
А вот другой вариант — голова Beckhoff серии CX9000 (слева на фото) с набором модулей ввода-вывода.
Помимо всего прочего, на голове еще имеется некая шина, позволяющая объединять ПЛК в сеть, а зачастую еще и менять его программу через эту же сеть. Какая это будет сеть — зависит от ПЛК. Это могут быть и незнакомые тем, кто не сталкивался с промышленными сетями EIA-485, Profibus, CAN, а может быть и вполне привычный Ethernet.
Именно через эту сеть, называемую fieldbus, и осуществляется подключение ПЛК к верхнему уровню — к СКАДА-системе, например. На фото выше хорошо видны 2 разъема 8P8C на голове Beckhoff’а — это Ethernet, а у Carel сверху слева видны (плоховато, правда) 2 разъема 6P4C — так они сделали RS-485. У этого интерфейса, к сожалению, нет общепринятого разъема.
Так все же, как под него программы писать-то?
Вообще, это тема не статьи, а целой книги. Но расскажу то, что увидел на личном опыте, и пусть это будет ложкой дегтя.
Для профессиональных программистов освоение ПЛК во многом покажется деградацией. ООП? Их нет у нас, есть только структуры, перечисления, и некое подобие класса, которое называется «функциональный блок». Что такое Private, Public и прочее, тоже можно забыть сразу — не пригодится. Из любого места вашей программы можно получить доступ к любому другому месту.
Динамическое выделение памяти? Их нет у нас совсем. Не уверен, сколько тебе пришлют данных? Выделяй буфер с запасом, и забудь про эту память — освободить ее не получится. Либо проявляй чудеса скорости и обрабатывай данные на лету, если успеешь уложиться в заданное время цикла.
Исключения? Да что вы… видел я одно чудо, которое намертво висло при выполнении конструкции вида:
foo, bar: int; baz: real; foo := 2000; bar := 2000; baz := INT_TO_REAL (foo * bar);
Понятно, что переполнение, не влазит foo * bar в 16 бит, но зачем же виснуть-то? Да еще так, что ничего, кроме сброса по питанию не помогает.
Среда разработки? Не у всех CoDeSys, многим хочется пооригинальничать и написать что-нить свое. Одна из таких самописных сред вылетала с runtime error при попытке записать число 86400 в 16-битный INT. А вы говорите, обработка исключений на ПЛК. Ее и в среде разработки-то не всегда нормально могут сделать.
НО! Зато для любителей той тонкой грани, которая отделяет железо от программного обеспечения, софта в просторечии — это очень интересная ветвь ай-ти, правда.
Надеюсь, что этот небольшой обзор будет полезен. Если хабрасообществу будет интересна эта тема, то расскажу про ПЛК подробнее.
Источник: habr.com
Программирование ПЛК
Для того, чтобы автоматизировать процессы управления на промышленных объектах, были созданы специальные устройства – программируемые логические контроллеры (ПЛК).
13 июля 2022
Благодаря развитой системе входов/выходов они легко и быстро управляют разными подключенными устройствами и значениями: от температуры и давления до измерения длительности и фиксации фронтов. Несмотря на обширный функционал и высокую производительность, взаимодействие с контроллерами для пользователя максимально упрощено. В этой статье мы рассмотрим основные принципы работы такого оборудования, а также способы программирования контроллеров различных марок.
Что такое ПЛК: устройство и принцип работы
- ходы – порты, через которые поступает важнейшая информация для дальнейшей обработки и корректировки работы. В любом аппарате реализованы три вида таких элементов: дискретные, аналоговые и специальные. Один дискретный вход в 1 бит способен воспринимать лишь один бинарный сигнал. Полученные биты можно читать и изменять из оперативной памяти устройства. Аналоговые входы служат для передачи значений температуры, давления, веса, положения, скорости перемещения или частоты оборотов. Специальные используются при трудностях в получении сигналов – с их помощью можно измерять длительность, фиксировать фронты, подсчитывать импульсы;
- центральный блок, куда входит центральный процессор, память и система коммуникаций. Каждый элемент может иметь различные параметры – в зависимости от этого будут изменяться выполняемые задачи. Так, для создания межсетевых шлюзов и управления в малопроизводительных ПЛК подойдут 8-разрядные микропроцессоры. МП могут быть также очень мощными, включая двухъядерные и четырехъядерные;
- выходы – также делятся на несколько типов. Нагрузкой для дискретных выходов может стать силовой пускатель, лампа, соленоид, индикатор, пневматический клапан, реле. Аналоговые выходы преобразуют числовые значения в непрерывные сигналы, чтобы запустить процессы в подключённом оборудовании. Специальные формируют частотно-импульсные или широтно-импульсные сигналы, управляют специфической техникой.
Не менее важным аппаратом при автоматизации промышленных процессов является сенсорная панель оператора (популярные производители: KInco, Овен, Siemens). С её помощью можно быстро получать всю необходимую информацию от контроллера. Так, она запускает/останавливает оборудование, помогает выбирать режимы работы, вводить новые рецептуры, следить за изменениями в значениях от датчиков. Её довольно легко купить как в Москве, так и в любых других городах России.
Принцип работы ПЛК заключается в периодическом опросе входных данных. Огромное значение для функционирования имеет системное ПО контроллера – оно управляет работой узлов, обеспечивает взаимосвязь составляющих частей, проводит внутреннюю диагностику. ПО располагается в постоянной памяти и готово к работе через несколько миллисекунд после включения.
После того, как опрос входов закончился, начинается работа пользовательской программы: контроллер делает всё, что от него хотят. После этого управление устройством переходит вновь на системный уровень: устанавливаются значения выходов и проходят вспомогательные операции.
Одним из ведущих производителей панелей оператора и контроллеров является компания KInco – китайская корпорация, соединяющая в своей продукции бюджетную стоимость и оптимальное качество. Производством подобного оборудования занимаются и отечественные производители: подбирать устройства необходимо при совместимости их параметров.
За счёт продуманной технологии, соответствующих драйверов, наличия системного программного обеспечения программистам нет необходимости узнавать внутреннее устройство контроллера – это значительно облегчает программирование.
Общие сведения о программировании
С первого взгляда может показаться, что программировать контроллеры – очень трудно. Однако для простой и комфортной разработки программ уже созданы все необходимые условия.
Стандарт МЭК-61131-3
Долгое время технологам и программистам не удавалось прийти к компромиссу и разработать оптимальные программы для автоматизации промышленных систем: ни один из них не мог поделиться необходимой информацией просто и понятно. В связи с этим были созданы специальные технологические языки программирования, которые стали доступны инженерам и технологам.
Международная Электротехническая Комиссия разработала стандарт МЭК-61131-3, в котором соединены все передовые достижения в области технического программирования. На сегодняшний день он поддерживает 5 языков.
Sequential Function Chart (SFC)
Этот графический язык программирования позволяет написать программы последовательного управления технологическим процессом при помощи близких к диаграммам состояний. Большое распространение получил в SCADA/HMI пакетах. В качестве основы для языка используются:
- состояния (может быть активно сразу несколько) – в них выполняются определённые действия;
- переходы с заранее заданными логическими условиями;
- альтернативное/параллельное ветвление алгоритма, при котором возможны переходы из начального к другим состояниям при определённых условиях;
- остановка процесса.
Function Block Diagram (FBD)
Основой для программы является список цепей, выполняющихся сверху вниз. Специалист может использовать как готовые библиотечные блоки, так и собственные (обязательно написаны на FBD или других языках стандарта). Под блоками подразумевается подпрограмма, функция или функциональный блок (различные математически операции, таймеры, условия, счётчики).
С помощью этого языка можно создать быстрый и надёжный код – простота внутренней структуры команд и жёсткая последовательность помогают инженерам быстрее разобраться в основных принципах. В то же время существует множество дополнительных реализаций с расширениями/ограничениями.
Ladder Diagrams (LАD)
Язык релейно-контактной логики, полностью ориентированный на инженеров автоматизации. Логические операции представляются в виде электрической цепи с замкнутыми или разомкнутыми контактами. Если ток протекает – это обозначает истину, если же нет – ложь. Здесь также присутствует огромное разнообразие иных версий, которые расширяют стандартные наборы команд. Однако с этим важно быть осторожным: реализации часто могут приводить к несовместимости программ с контроллерами различного типа.
Statement List (STL)
В отличие от трёх предыдущих, STL представляет собой текстовый язык программирования. Его используют для того, чтобы создавать операторные части логического блока. В его основе лежат команды, а также адреса, на которые они действуют. В целом, язык схож с Ассемблером и подходит для более сложных кодов/программ.
Instruction List (IL)
В основе этого языка, так же, как и в Ассемблере, лежат переходы по меткам и аккумулятор. С его помощью можно описать функции, функциональные блоки и программы, шаги и переходы. Простота и особенности не позволяют использовать его для реализации сложных алгоритмов с множеством разветвлений. Однако с ним легко взаимодействовать и создавать оптимизированные коды для реализации критических секторов программ.
В целом, все программные языки схожи с логикой функционирования обычных реле – это облегчает работу программистам.
Среды программирования для разных ПЛК
Для того, чтобы пользователи могли максимально пользоваться инструментами языков МЭК, была создана специальная среда программирования CoDeSys. Она удовлетворяет всем современным требованиям: предлагает возможности для визуализации, имеет бесплатную лицензию, переведена на русский язык (с учётом документации). Именно в этой среде разрабатываются программы для ПЛК Овен.
Некоторые производители могут самостоятельно создавать среды программирования для своей продукции. Рассмотрим несколько из них.
Siemens
Siemens – одна из старейших немецких компаний (дата основания – 1847 год), выпускающая товары в сфере энергетического оборудования, электротехники, специализированных услуг в сфере промышленности. Программирование выпускаемых ими контроллеров происходит в специальных средах. Одна из них, TIA Portal, позволяет разрабатывать конфигурации, отлаживать компоненты систем, налаживать коммуникационные сети, организовывать панели операторов.
В большинстве случаев процесс программирования начинается только после монтажа и настройки контроллера. Перед началом работы необходимо разобраться с тем, где расположены входы и выходы. Далее начинается построение блоков – своеобразных функций, которые преобразуют полученную информацию от входов в нужные данные на выходе.
Примером самого простого блока являются логические операции. Блоки соединяются между собой при помощи специальных элементов – таким образом, получается готовая схема. После её внедрения в логический контроллер включается режим программирования, где и организуется нужная программа.
Delta
Для того, чтобы запрограммировать ПЛК Delta, следует воспользоваться специальным пакетом WPLSoft – в нём соединены языки LD, SFC и IL. Весь процесс происходит построчно, пользователь последовательно создаёт ступенчатые диаграммы, которые составляют общую программу.
Он доступен практически любому специалисту как по своему простому функционалу, так и по техническим характеристикам: для его работы не нужно большое количество ресурсов персонального компьютера.
Schneider Electric
Schneider Electric представляет широкое разнообразие сред программирования для своего оборудования: coStruxure Machine Expert, EcoStruxure Machine Expert HVAC, Unity Pro, Zelio Soft. Готовые программы чаще всего применяются в вентиляционном/упаковочном оборудовании, системах кондиционирования, конвейерных линиях и станках и др.
Mitsubishi
Одну из самых многофункциональных и мощных сред программирования предлагает для своих клиентов компания Mitsubishi – пользователям доступна среда GX Works2 нового поколения. Она поддерживает довольно большое количество языков: IL, LD, SFC, LD, FBD, ST.
Продвинутая среда значительно расширяет возможности программистов. С её помощью они могут задавать параметры функциональных модулей, использовать различные библиотечные блоки, проще и быстрее проводить диагностику/отладку.
В зависимости от выбранного программного обеспечения и оборудования программирование может сильно отличаться: в некоторых случаях для работы потребуется компилятор и программатор, в некоторых процесс будет происходить автоматически. В любом случае важно ознакомиться с приложенной к аппарату инструкцией – производители подробно объясняют все особенности создания программ.
Источник: climatplc.ru