Принципы программирования ПЛК
В данном обзоре рассмотрим ряд вопросов, связанных с программированием современных логических контроллеров (ПЛК или PLC). Поскольку контроллеры разных производителей имеют различную конфигурацию, функционал и программные среды, будут приведены общие принципы и приемы разработки программ для ПЛК.
Техническое задание
Создание и утверждение технического задания (ТЗ) – очень важная часть разработки ПО. От грамотно составленного ТЗ зависит, насколько эффективно будет вестись разработка.
Опытные программисты знают, что программа не пишется за один раз. Как правило, софт корректируется и приближается итерациями к конечному варианту в соответствии с пожеланиями конструкторов, инженеров, электриков, механиков и технологов. Поэтому очень важно на этапе составления ТЗ плотно взаимодействовать со всеми заинтересованными специалистами, которые подписывают ТЗ, а по окончании принимают работу.
Периферия
В первую очередь составляется список всех дискретных входов и выходов контроллера. Также указываются аналоговые входы/выходы при их наличии.
Входы и выходы логического контроллера — это начальные и конечные точки работы алгоритма, поэтому нужно четко представлять, как должно функционировать оборудование, под которое пишется программа.
Для решения некоторых стандартных задач можно не писать программу, а воспользоваться специализированными периферийными модулями, например, модулями обработки сигналов от тензодатчиков или от инкрементального энкодера, специализированным ПИД-регулятором и проч. В результате алгоритм работы существенно упростится, а быстродействие всей системы в целом увеличится.
Необходимо собрать подробную информацию о том, как работает тот или иной датчик, какие сигналы он выдает, например, какой выход у датчика – нормально открытый или нормально закрытый. Есть ряд нюансов, связанных с аварийным или ручным управлением выходными сигналами, например, некоторые приводы могут требовать коррекции временной задержки.
Помехоустойчивость
Важно помнить о возможных проблемах, связанных с максимальным выходным током, противо-ЭДС и различными помехами, поскольку все это скажется на стабильной работе программы и оборудования в целом.
В сложном оборудовании, где применяются преобразователи частоты, коммутируются силовые цепи и действуют мощные электромагнитные поля — эти факторы необходимо предусмотреть, чтобы минимизировать их отрицательное влияние на ПЛК. Об этом обычно подробно говорится в инструкции по установке логического контроллера.
Для повышения помехоустойчивости необходимо применять программные средства. Например, обязательным является использование сторожевого таймера, который «приводит в чувство» ПЛК при его «зависании».
Также необходимо учитывать возможное накопление ошибок, искажение поступаемых на входы данных и другие нарушения в работе программы. Для этого нужно вводить программные блоки по проверке и коррекции данных и программы. Например, несмотря на то, что при включении реверсивного пускателя используется аппаратная защита (блокировка) от одновременного включения встречных направлений, такая же защита должна быть реализована и программно.
Проблемы совместимости программы с аппаратной частью
Возможно, в процессе работы выяснится, что аппаратная часть контроллера не соответствует поставленной задаче. Например, не хватает входов или выходов, памяти или быстродействия.
Проблема с нехваткой входов или выходов легко решается приобретением дополнительных периферийных модулей. Они подключаются к центральному модулю (который имеет свои входы и выходы), обмен данных происходит по внутренней шине.
С памятью и быстродействием решить вопрос просто не получится, поэтому перед приобретением «железа» нужно обкатать программу в программном эмуляторе, который есть в каждой среде программирования.
Языки программирования и среды разработки
У каждого производителя имеется своя среда программирования, «заточенная» под конкретные модели ПЛК. Однако производители пришли к соглашению, что будут использовать унифицированные языки программирования, подходящие для разных контроллеров.
Наиболее простым и наглядным языком программирования ПЛК, входящим в каждую среду разработки является язык релейных схем LD (Ladder Diagram), максимально приближенный к функциональным электрическим схемам. Его любят использовать программисты, изначально хорошо разбирающиеся в электронике.
Другой язык, имеющий обширный функционал – FBD (Function Block Diagram), который относится к графическим языкам программирования. В FBD используются законченные блоки, имеющие определенные функции. Блоки поставляются со средой программирования или создаются программистом. Существуют и другие языки (6 стандартных), но их описание выходит за рамки данной статьи.
В программных средах разработки обычно имеется большой набор готовых библиотек элементов, подпрограммы стандартных процедур и шаблонов. Также среда разработки должна обязательно включать в себя программный эмулятор, позволяющий всесторонне проверить работоспособность программы перед ее переносом на реальный контроллер.
Среды разработки разных производителей могут включать в себя разные элементы, и за каждый из них необходимо платить. Например, Siemens предлагает множество версий программной среды, которые значительно отличаются по функционалу и цене. Другой производитель – Delta – имеет полностью открытое полнофункциональное ПО, которое можно бесплатно скачать с официального сайта.
Порядок подготовки и составления программ для программируемых контроллеров
Функции управления оборудованием определяются технологией и организацией процесса. Поэтому в целом они достаточно специфичны и индивидуальны для каждого агрегата или участка. Однако ставя и решая задачу разработки эффективного, мобильного и гибкого программного обеспечения систем автоматизации, сложные функции управления обычно представляют в виде набора простых элементарных действий типа “включить», “отключить», “реализовать выдержку времени” и др.
С этих позиций большинство функций управления может быть условно сведено к двум, достаточно общим для любых задач — логической и регулирующей. Первая из них известна как типовой алгоритм “время-действие», а вторая — “время-параметр». Наиболее общее представление таких типовых функций управления технологическим оборудованием приведено на рис. 1, a и б.
Рис. 1. Типовые функции управления технологическим оборудованием
На основе анализа количественных характеристик реализуемых функций управления в каждом конкретном примере технологического оборудования могут быть сформулированы технические требования к программируемому логическому контроллеру (ПЛК) как средству управления по точности, быстродействию, числу параллельно решаемых задач, объему памяти, составу периферийного оборудования, средствам диалога и т.д.
Стандарт МЭК 61131-3 описывает 5 языков программирования, явившихся результатом изучения наиболее удачных фирменных разработок мировых лидеров рынка ПЛК:
- язык релейно-контактных схем (РКС) или релейных диаграмм LD (Ladder Diagram),
- язык функциональных блоков и диаграмм (ФБД), FBD (Function Block Diagram),
- язык IL (Instruction list) – типичный ассемблер с аккумулятором и переходами по меткам,
- язык ST (Structured Text) является текстовым языком высокого уровня,
- SFC (Sequential Function Chart) диаграммы. Своим происхождением SFC обязан сетям Петри.
Языки ПЛК весьма оригинальны и существенно отличаются от известных языков программирования для компьютеров.
Стандарт не обязывает разработчиков ПЛК реализовывать все языки программирования. Обычно небольшие фирмы-изготовители ПЛК реализуют несколько или один единственный язык. Во многом приоритет использования того или иного языка программирования зависит от исторически сложившихся традиций в отрасли или сферы применения.
Стандартизация языков программирования и модели ПЛК привела к появлению специализированных фирм, занятых проектированием систем программирования для ПЛК, которые обеспечивают переход от языка программирования к машинному языку на различных уровнях:
- при вводе программы;
- при визуализации;
- при изменении или перемещении отдельной команды или зоны программы;
- при выявлении синтаксических ошибок и сигнализации оператору.
Для выполнения этих задач система программирования может успешно работать в локальном режиме, т. е. независимо от контроллера. Это дает возможность программисту писать программу, находясь в любом удобном месте, а не в производственном цехе, т. е. в обстановке более благоприятной для творческого процесса. Возможность моделирования значительно облегчает процесс отладки программы и улучшает организацию труда.
Основные этапы подготовки и составления программ для программируемых контроллеров заключаются в следующем:
1. Определите, что должна делать управляемая система (объект управления), цели управления и другие дополнительные функции, выполняемые системой управления, последовательность выполняемых операций исполнительных механизмов с привязкой ко времени и к состоянию датчиков и устройств управления.
2. Составьте алгоритм работы программы в графическом виде.
3. Определите, какие модули требуются для подключения датчиков, устройств управления, исполнительных механизмов, средств сигнализации и другой аппаратуры, необходимой в управлении объектом.
При выборе модулей проведите анализ параметров сигналов входа/выхода (уровни напряжений и тока) и функциональных возможностей модулей. Обратите внимание на возможность применения интеллектуальных модулей, которые могут выполнять предварительную обработку входных сигналов и некоторые функции локального управления, что позволит значительно уменьшить сложность программирования.
4. Составьте схему или таблицу подключения к модулям контроллера всех входных и выходных устройств объекта управления и аппаратуры, используемой в процессе управления.
5. Составьте программу на одном из языков программирования ПЛК, которая реализует заданную последовательность операций, их взаимосвязь и отрабатывает возможные аварийные ситуации.
6. Проверьте программу на синтаксические ошибки и откорректируйте их, а затем на ошибки выполнения и тоже внесите соответствующие исправления.
7. Запишите программу и все требуемые рабочие параметры в контроллер.
8. После того как система управления будет полностью собрана, проверьте программу в реальном процессе управления и, если необходимо, проведите более точную настройку.
9. Запишите две копии окончательной программы и храните их в разных местах.
Телеграмм канал для тех, кто каждый день хочет узнавать новое и интересное: Школа для электрика
Если Вам понравилась эта статья, поделитесь ссылкой на неё в социальных сетях. Это сильно поможет развитию нашего сайта!
Не пропустите обновления, подпишитесь на наши соцсети: