Языки программирования ПЛК
Как и любая другая микропроцессорная система, программируемые логические контроллеры требуют предварительного задания алгоритма своей работы. Благодаря этому, возможно использовать одно и то же оборудование для совершенно разных задач. При этом, к программированию контроллеров предъявляются особые требования. В первую очередь эти требования нацелены на легкое освоение ПЛК специалистами в области электротехники. Такой подход привел к разработке уникальных языков программирования, ориентированных на решение задач автоматизации.
На сегодняшний день можно выделить две большие ветви языков, используемых при внедрении ПЛК. Первая ветвь – классические языки высокого уровня, из которых наиболее часто используется C/C++. Данные языки прочно закрепились в PC‑based контроллерах, и практически не встречаются в других типах систем. Обладая широкими возможностями и гибкостью при создании программ, они в свою очередь предъявляют высокие требования к программистам. Разработчики программ должны знать понимать не только в работе автоматики, но и внутреннее устройство контроллеров, работу операционных систем и т.п. При этом языки высокого уровня позволяют относительно просто реализовывать масштабные задачи, связанные со сложной обработкой информации и неспецифическими для ПЛК функциями.
Вторая группа описывается стандартом МЭК-61131. В ее состав включены 5 языков, ориентированных на программирование логических контроллеров:
- IL (Instruction List) – Список инструкций – текстовый низкоуровневый язык описания релейно-контакторных схем. В настоящее время исключен из стандарта.
- LD (Ladder Diagram) – Лестничные диаграммы – графический язык, реализующий подход, ангалогичный релейно-контакторным схемам. Иногда обозначается как LAD
- FBD (Function Block Diagram) – Функциональные блочные диаграммы – графический язык, в основе которого лежит функциональный блок. Данный блок выполняет какую-либо функцию и содержит входа и выхода.
- SFC (Sequential Function Chart) – Последовательностные диаграммы – графический язык на основе математического аппарата сетей Петри.
- ST (Structured Text) – Структурированный текст – текстовый паскалеподобный язык.
В каждой конкретной системе программирования может быть реализована только часть из приведенных пунктов. В настоящее время наибольшее распространение получил язык лестничных диаграмм. Это произошло благодаря тому, что программа на этом языке практически один в один повторяет принципиальные электрические схемы релейно-контакторных устройств. Подобный подход облегчает освоение программирования ПЛК специалистами в области электротехники и упрощает переход от традиционных, к микропроцессорным системам управления. Среди недостатков данного языка следует отметить громоздкость программ, реализующих какие-либо сложные алгоритмы.
Другие языки также имеют свои преимущества и недостатки. Так список инструкций можно представить как текстовое описание тех же релейно-контакторных схем. Он позволяет обойтись без графического интерфейса, но более сложен в освоении, и дает еще более громоздкую программу. Последовательностные диаграммы отлично подходят для процессов, имеющих строго заданную последовательность состояний и переходов между ними. Среди недостатков следует отметить высокую абстрактность и относительно редкую реализацию. Функциональные блочные диаграммы ориентированы на базовые логические функции и отлично воспринимаются специалистами в области цифровой электроники. По простоте и другим особенностям этот язык сопоставим с лестничными диаграммами, но имеет несколько иные принципы программирования. Самым сложным, но при этом и самым гибким языком оказывается Структурированный текст. Он построен на основе языка Паскаль, имеет хорошую структурированность и легко позволяет реализовывать сложные задачи. К сожалению, для освоения этого языка недостаточно знаний только в какой-то области электротехники или электроники.
Выбор конкретного языка программирования ПЛК зачастую не зависит от пользователя, а выполнен производителями оборудования. Кроме того, каждый производитель обычно вносит свои особенности в реализацию стандартных языков, что требует предварительного изучения любой системы. По этой же причине рассмотрение языков лучше вести в привязке к конкретному оборудованию. Также нельзя рекомендовать освоение какого-либо одного языка. Как показывает практика, наилучшие результаты можно получить, только комбинируя несколько разных подходов в решении задачи. Особенно это относится к сложным процессам, включающим не только логические, но и математические задачи.