ПЛК — что это такое?
Доброго времени суток, уважаемые жители Хабра!
Прочитав пост про программирование ПЛК 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. А вы говорите, обработка исключений на ПЛК. Ее и в среде разработки-то не всегда нормально могут сделать.
НО! Зато для любителей той тонкой грани, которая отделяет железо от программного обеспечения, софта в просторечии — это очень интересная ветвь ай-ти, правда.
Надеюсь, что этот небольшой обзор будет полезен. Если хабрасообществу будет интересна эта тема, то расскажу про ПЛК подробнее.
What is PLC?
A PLC or programmable logic controller is a special computer that is primarily used by industry for control and regulation purposes. Again and again, you will hear the term PLC for the programmable logic controller. There are some large PLC manufacturers such as Beckhoff, B&R, Wago, etc even if the different manufacturers basically all work in a similar way, there are some specific peculiarities.
Siemens PLC:
Siemens is the market leader among PLC manufacturers. For this reason and because this hardware is required by most system operators anyway, we concentrate largely on this manufacturer.
When is a PLC needed?
You are currently sitting in front of a PC, a laptop, or a smartphone. The individual parts were certainly put together by a machine, the electronic components were tested by a test device and one or the other robot could also have been involved. But what does that have to do with a PLC? Well, the machine or system itself is just an amalgamation of a wide variety of components. So that these components do what they should, we breathe life into the machine with a PLC. Admittedly, this would also work (at least partially) with a pure contactor control, but the costs would far exceed the benefits and since the requirements also change in an ongoing project, such a solution would not be very efficient either, but more on that in a moment.
What else does a PLC need?
In addition to the power supply for the CPU, at least one input and one output module are required. External signals such as buttons or initiators (sensors) are connected to the input module. This 24V signal is converted by the input module into a binary signal consisting of 0s and 1s. Depending on how the PLC program was created, the CPU processes this information, and a binary signal is returned to the output module as a reaction.
However, since only PC-based devices can process 0 and 1 signals, this signal is converted back into a voltage signal by the output module.
A little example
We have a button that is connected to the input module, and when it is pressed we want to make a water pump run. The button was pressed, but the pump is not running.
As already mentioned above, the CPU also needs a user program (PLC program) so that it knows whether and how the signal is to be evaluated.
The PLC program has now been written, loaded into the PLC and the pump is running.
Advantages of a PLC control:
Space-saving and usually cheaper
Changes can be made very flexibly (believe me, changes have to be made all the time)
Faults can be quickly identified and remedied using diagnostic functions
A PLC can be networked with other IT systems (proverb Industry 4.0 and IoT)
Remote maintenance: Changes can be made from the office
Disadvantages of a PLC control:
Programming devices (laptop or similar) and licenses must be purchased
For very simple applications like in our example, a PLC is too expensive
High powers must be switched via relays or contactors
Highly qualified and expensive staff is required
Программируемые логические контроллеры
С чего начиналась промышленная автоматика? А начиналось все с контактно-релейных схем управления промышленными процессами. Кроме жуткого «шелестения», контактно релейные схемы имели фиксированную логику работы, и в случае изменения алгоритма, необходимо основательно переделать монтажную схему Бурное развитие микропроцессорной техники, привели к созданию систем управления технологическими процессами на базе промышленных контроллеров. Но это не означает, что реле изжили себя, у них просто своя ниша для применения. ПЛК – программируемый логический контроллер, представляют собой микропроцессорное устройство, предназначенное для сбора, преобразования, обработки, хранения информации и выработки команд управления, имеющий конечное количество входов и выходов, подключенных к ним датчиков, ключей, исполнительных механизмов к объекту управления, и предназначенный для работы в режимах реального времени. Принцип работы ПЛК несколько отличается от «обычных» микропроцессорных устройств. Программное обеспечение универсальных контроллеров состоит из двух частей. Первая часть это системное программное обеспечение. Проводя аналогию с компьютером можно сказать, что это операционная система, т.е. управляет работой узлов контроллера, взаимосвязи составляющих частей, внутренней диагностикой. Системное программное обеспечение ПЛК расположено в постоянной памяти центрального процессора и всегда готово к работе. По включению питания, ПЛК готов взять на себя управление системой уже через несколько миллисекунд. ПЛК работают циклически по методу периодического опроса входных данных.
Рабочий цикл ПЛК включает 4 фазы:
1. Опрос входов
2. Выполнение пользовательской программы
3. Установку значений выходов
4. Некоторые вспомогательные операции (диагностика, подготовка данных для отладчика, визуализации и т. д.). Выполнение 1 фазы обеспечивается системным программным обеспечением. После чего управление передается прикладной программе, той программе, которую вы сами записали в память, по этой программе контроллер делает то что вы пожелаете, а по ее завершению управление опять передается системному уровню. За счет этого обеспечивается максимальная простота построения прикладной программы – ее создатель не должен знать, как производится управление аппаратными ресурсами. Необходимо знать с какого входа приходит сигнал и как на него реагировать на выходах Очевидно, что время реакции на событие будет зависеть от времени выполнения одного цикла прикладной программы. Определение времени реакции – времени от момента события до момента выдачи соответствующего управляющего сигнала – поясняется на рисунке: Обладая памятью, ПЛК в зависимости от предыстории событий, способен реагировать по-разному на текущие события. Возможности перепрограммирования, управления по времени, развитые вычислительные способности, включая цифровую обработку сигналов, поднимают ПЛК на более высокий уровень в отличие от простых комбинационных автоматов. Рассмотрим входа и выхода ПЛК. Существует три вида входов дискретные, аналоговые и специальные
Один дискретный вход ПЛК способен принимать один бинарный электрический сигнал, описываемый двумя состояниями – включен или выключен. Все дискретные входы (общего исполнения) контроллеров обычно рассчитаны на прием стандартных сигналов с уровнем 24 В постоянного тока. Типовое значение тока одного дискретного входа (при входном напряжении 24 В) составляет около 10 мА. Аналоговый электрический сигнал отражает уровень напряжения или тока, соответствующий некоторой физической величине, в каждый момент времени. Это может быть температура, давление, вес, положение, скорость, частота и т. д. Поскольку ПЛК является цифровой вычислительной машиной, аналоговые входные сигналы обязательно подвергаются аналого-цифровому преобразованию (АЦП). В результате, образуется дискретная переменная определенной разрядности. Как правило, в ПЛК применяются 8 — 12 разрядные преобразователи, что в большинстве случаев, исходя из современных требований по точности управления технологическими процессами, является достаточным. Кроме этого АЦП более высокой разрядности не оправдывают себя, в первую очередь из-за высокого уровня индустриальных помех, характерных для условий работы контроллеров. Практически все модули аналогового ввода являются многоканальными. Входной коммутатор подключает вход АЦП к необходимому входу модуля. Стандартные дискретные и аналоговые входы ПЛК способны удовлетворить большинство потребностей систем промышленной автоматики. Необходимость применения специализированных входов возникает в случаях, когда непосредственная обработка некоторого сигнала программно затруднена, например, требует много времени. Наиболее часто ПЛК оснащаются специализированными счетными входами для измерения длительности, фиксации фронтов и подсчета импульсов. Например, при измерении положения и скорости вращения вала очень распространены устройства, формирующие определенное количество импульсов за один оборот – поворотные шифраторы. Частота следования импульсов может достигать нескольких мегагерц. Даже если процессор ПЛК обладает достаточным быстродействием, непосредственный подсчет импульсов в пользовательской программе будет весьма расточительным по времени. Здесь желательно иметь специализированный аппаратный входной блок, способный провести первичную обработку и сформировать, необходимые для прикладной задачи величины.
Вторым распространенным типом специализированных входов являются входы способные очень быстро запускать заданные пользовательские задачи с прерыванием выполнения основной программы – входы прерываний. Дискретный выход также имеет два состояния – включен и выключен. Они нужны для управления: электромагнитных клапанов, катушек, пускателей, световые сигнализаторы и т.д. В общем сфера их применения огромна, и охватывает почти всю промышленную автоматику. Конструктивно ПЛК подразделяются на моноблочные, модульные и распределенные. Моноблочные имеют фиксированный набор входов выходов В модульных контроллерах модули входов – выходов устанавливаются в разном составе и количестве в зависимости от предстоящей задачи
В распределенных системах модули или даже отдельные входа-выхода, образующие единую систему управления, могут быть разнесены на значительные расстояния
Языки программирования ПЛК
- Sequential Function Chart (SFC) – язык последовательных функциональных блоков;
- Function Block Diagram (FBD) – язык функциональных блоковых диаграмм;
- Ladder Diagrams (LАD) – язык релейных диаграмм;
- Statement List (STL) – язык структурированного текста, язык высокого уровня. Напоминает собой Паскаль
- Instruction List (IL) – язык инструкций., это типичный ассемблер с аккумулятором и переходам по метке.
Язык LAD или KOP (с немецкого Kontaktplan) похожи на электрические схемы релейной логики. Поэтому инженерам не знающим мудреных языков программирования, не составит труда написать программу. Язык FBD напоминает создание схем на логических элементах. В каждом из этих языков есть свои минусы и плюсы. Поэтому при выборе специалисты основываются в основном на личном опыте. Хотя большинство программных комплексов дают возможность переконвертировать уже написанную программу из одного языку в другой. Так как некоторые задачи изящно и просто решаются на одном языке, а на другом придется столкнуться с некоторыми трудностями
Наибольшее распространение в настоящее время получили языки LAD, STL и FBD.
Большинство фирм изготовители ПЛК традиционно имеют собственные фирменные наработки в области инструментального программного обеспечения. Например такие как «Concept» Schneider Electric, «Step 7» Siemens.
Программный комплекс CoDeSys
Открытость МЭК стандартов привели к созданию фирм занимающихся исключительно инструментами программирования ПЛК.
Наибольшей популярностью в мире пользуются комплекс CoDeSys. CoDeSys разработан фирмой 3S. Это универсальный инструмент программирования контроллеров на языках МЭК, не привязанной к какой-либо аппаратной платформе и удовлетворяющим всем современным требованиям.
Основные особенности:
— полноценная реализация МЭК языков
— встроенный эмулятор контроллера позволяет проводить отладку проекта без аппаратных средств. Причем эмулируется не некий абстрактный контроллер, а конкретный ПЛК с учетом аппаратной платформы
— встроенные элементы визуализации дают возможность создать модель объекта управления и проводить отладку, т.е. дает возможность создавать человеко-машинного интерфейса (HMI)
— очень широкий набор сервисных функции, ускоряющий работу программиста
— существует русская версия программы, и русская документация
Литература:
Современные технологии промышленной автоматизации: учебник / О. В. Шишов. Саранск : Изд-во Мордов. ун-та, 2007. – 273 с. ISBN 5-7103-1123-5
Теги:
sulika
Опубликована: 2012 г.
0
0
Вознаградить Я собрал 0 0
Оценить статью
- Техническая грамотность
При подготовке материала использовались источники:
https://habr.com/ru/articles/139425/
https://buraqq.medium.com/what-is-plc-86739d5d4480
https://cxem.net/promelectr/promelectr5.php