Программа для программирования плк
Как и было описано, в первой статье, ПЛК осуществляет циклическое чтение входов, выполнение прикладной программы и запись выходов. Потому написание программы для ПЛК отличается от традиционного написания программы для микроконтроллеров и ПК. К программам для ПЛК предъявляются жесткие требования по надежности, одно дело зависает текстовый редактор, а другое дело программа, управляющая ядерным реактором. Другое не менее важное требование – это своевременное реагирование на событие. А что значит, во время не прореагировать на событие в промышленности? Это значит потерять контроль над технологическим процессом. Что в некоторых случаях, примером с реактором, приведет к непоправимым последствиям.
Рассмотрим отличия написания программы для ПЛК и микроконтроллера. Для примера возьмем простейшую задачку для МК - мигающий светодиод. Подозреваю, что все начинали знакомство с МК именно с этой задачи. Алгоритм будет следующим
- Записать в порт лог. 1.
- Временная задержка
- Записать в порт лог.0.
- Временная задержка
- Переход по метке на начало программы.
По данному алгоритму программа на ПЛК работать не будет, она содержит бесконечный цикл. А в ПЛК вся прикладная программа выполняется от начала до конца в каждом рабочем цикле, и любая программа должна отдавать управление системной программе. Поэтому при такой организации алгоритма наш ПЛК зависнет. Даже если и убрать, переход по метке на начало, программа не будет работать, так как нам хочется. Порт всегда будет в состоянии лог.0, так как физическая установка выходов производиться только после выполнения всей прикладной программы. И поэтому промежуточные состояния это всего лишь программные переменные в памяти, и на аппаратной части она ни как не отображаются.
В дополнение задержку времени тоже хорошо бы организовать с помощью таймера, периодически проверяя его значение, а не ожидать в пустую пока это время пройдет, наверняка для контроллера найдется другая более важная работа.
С учетом выше сказанного, правильный алгоритм будет выглядеть следующим образом:
1. Проверить таймер, если время паузы вышло, то
а) инвертировать выход
б) начать новый отсчет
2. Конец программы
Реализуем данный алгоритм на практике ниже, а теперь рассмотрим основные особенности LAD (Ladder Diagram) языка.
Релейная схема представляет собой две вертикальные шины, между ними расположены горизонтальные цепи образованные контактами и обмотками реле. Пример на рисунке:
- нормально разомкнутый контакт
- нормально замкнутый(инверсный) контакт
- обмотка реле
Количество контактов цепи может быть разным, а обмотка одна.
Любому контакту ставится в соответствие логическая переменная, определяющая его состояние. Если нормально замкнутый контакт замкнут, то ИСТИНА, если размокнут – Ложь, для инверсного наоборот, он замкнут когда переменная имеет значение ЛОЖЬ. Имя переменной пишется над контактом и служит его названием.
Последовательно соединенные контакты равносильны логической операции И, а параллельно-монтажное ИЛИ. Инверсный контакт равносилен операции НЕ. Параллельное соединение обмоток допускается, а последовательное нет. Обмотка реле также может быть инверсной, тогда она копирует в соответствующую логическую переменную инверсное состояние цепи.
Идея релейных схем, такова, что все цепи работают параллельно, т.е. ток во все цепи подается одновременно. Но мы знаем, что программу процессор выполняет последовательно, и мы не можем это сделать одновременно. Так и в LAD программа выполняется последовательно слева направо, сверху вниз. Но цикл процессора мал, поэтому и получается эффект параллельности.
Любая переменная в рамках одной цепи имеет одно и то же значение. Если даже реле в цепи изменит переменную, то новое значение поступит на контакты только в следующем цикле. Цепи расположенные выше получают новое значение переменной сразу, а цепи расположенные ниже – только в следующем цикле. Строгий порядок выполнения очень важен, и благодаря ним LAD- диаграмма сохраняет устойчивость при наличии обратных связей.
Хоть это и противоречит аналогии LAD с релейными схемами, порядок выполнения LAD- программы можно нарушить с помощью меток и переходов. Это ухудшает читаемость программе, и в них бывает сложно разобраться, но как говориться если очень хочется, то можно. Для этого желательно разбить программу на модули, и делать переходы между модулями.
Возможности LAD программы можно расширить, вставляя функциональные блоки. Вставлять можно все стандартные функциональные блоки, которые содержаться в МЭК. Описание для функциональных блоков можно найти в справке.
Давайте составим нашу первую программу на LAD в среде CoDeSys. CoDeSys можно скачать в интернете, достаточно воспользоваться поисковиком
После установки, выбираем создать новый проект, и CoDeSys попросит выбрать целевую платформу для ПЛК. Указание целевой платформы необходимо, чтобы среда знала, для какого типа контроллера пишется программа. Выбираем 3S CodeSyS Sp PLCWinNT V2.4 и жмем OK.
Имя проекта оставляем по умолчанию, язык выбираем LD
Интерфейс программы на русском языке, и интуитивно понятен. При наведении на элемент всплывает имя. Советую рассмотреть все элементы, а также пункты главного меню.
Для добавления элемента в программу необходимо левой кнопкой мыши кликнуть в рабочее поле программы и потом ЛКМ кликнуть на элемент, который вы хотите поместить в программу. Например, нормально разомкнутый контакт, у вас должно получиться следующее.
Вместо вопросительных знаков пишем имя нашей переменной, например SB, и нажимаем Enter, выходит окно объявление переменной, выбираем Bool и нажимаем OК.
Рассмотрите, какие типы можно выбрать, а также какие классы переменных.
Давайте, реализуем программы для мигания светодиодом, а если говорить в общем, то программа для генератора одиночных импульсов
Для реализации программы используем функциональные блок таймер TP. Таймер TP – этой таймер одиночного импульса с заданной по входу PT длительностью.
Пока IN равен FALSE, выход Q = FALSE, выход ET = 0. При переходе IN в TRUE выход Q устанавливается в TRUE и таймер начинает отсчет времени на выходе ET до достижения длительности, заданной PT. Далее счетчик не увеличивается. Таким образом, выход Q генерирует импульс длительностью PT по фронту входа IN.
Временная диаграмма работы TP:
Для вставки TP, на панели элементов выбираем:
И у нас всплывает ассистент выбора функционального блока.
Скачайте файл проекта, и давайте рассмотрим как он работает.
В начальный момент X= False , поэтому инверсный контакт X замкнут и таймер T2 запущен, выход Q= True, поэтому цепь включена. А так как обмотка в цепи инверсная, значит она копирует инверсное состояние цепи в X , и X остается False, после переполнения таймера Q = False , и инверсная обмотка переводит X в True. После этого запускается T1, после переполнения скидывает X в False и все повторяется. Переменная X является выходом генератора. Таймер T2 устанавливает паузу, а T1 длительность импульса.
Компилируем проект Проект -> Компилировать
В пункте онлайн выбираем Режим эмуляции , а затем Подключение и Старт. И видим, наша схема начинает переключаться, цепь где «протекает ток» выделяется синим цветом. Также в области объявления переменных видим текущее значение переменных.
Выход генератора можно поглядеть с помощью цифрового трассировщика, для этого переходим на вкладку Ресурсы в нижнем левом углу
Выбираем Цифровой трассировщик -> Дополнение -> Настройка трассировки, выйдет следующее окно
Цикличность записи поставим Вручную, нажимаем на менеджер и выбираем переменные X(Bool)
Нажимаем Ok . Выбираем перо для нашей переменной
Выбираем в онлайн Подключение, нажимаем Старт , далее Дополнительно -> Начать трассировку, также выберите пункт Автоматическая трассировка
Рассмотрим еще один пример управление двигателем с электронной коммутацией обмоток статора
Саму программу представлять не буду, скачайте проект. А об алгоритме работы расскажу.
Все таймеры запускаются по сигналу старт. Каждый таймер отмеряет момент окончания фазы. Переменные Y1-Y3 являются выводами соответствующей фазы управления. Каждый выход включается в том случае, если таймер еще не переполнен и выключен предыдущий выход. Последняя цепь, является цепью автоматического перезапуска.
Прикрепленные файлы:
sulika Опубликована: 2012 г. 0 0
Вознаградить Я собрал 0 0
Консольная программа для считывания, изменения и записи содержимого памяти микроконтроллеров архитектуры AVR, применяющая технологию внутрисхемного программирования. Есть русифицированные графические оболочки. Freeware
Мощная среда разработки с открытым исходным кодом, созданная с целью написания программ для микроконтроллеров серии AVR от компании Atmel. Freeware
Среда разработки программного кода для микроконтроллеров серии AVR компании Atmel на языке, подобном стандартному Бейсику. Freeware (бесплатная с ограничением на код 4 кБ) и Shareware
IDE для AVR микроконтроллеров. Из основных достоинств CodeVisionAVR можно отметить то, что он не слишком сложен для самостоятельного освоения, поддерживает все многочисленное семейство микроконтроллеров AVR, формирует емкий и результативный программный код. Платная, есть бесплатная Evaluation-версия с ограничением на код 4 кБ.
Инструмент для разработки и отладки программного кода, а также моделирования работы радиотехнических устройств на базе AVR микроконтроллеров. Freeware
Среда разработки, выполненная на базе открытой системы Arduino IDE и предназначенная специально для контроллеров PIC32 от компании Microchip Technology.
Небольшой, но весьма эффективный бесплатный программный пакет для прошивки PIC-микроконтроллеров различных серий. Есть русский язык.
Простое программное обеспечение для прошивки PIC-микроконтроллеров, отличающееся стабильностью, качеством и скоростью программирования. Freeware
Бесплатная высокоинтегрированная программная среда, предназначенная для разработки кода микроконтроллеров архитектуры ARM и др.
Среда разработки, представляющая собой набор утилит для выполнения полного комплекса мероприятий по написанию программного обеспечения для микроконтроллеров различных семейств. Платная, но есть демоверсия с рядом ограничений, в т.ч. на размер кода - не более 32 КБ.
Многофункциональная среда разработки приложений на языках C, C++ и ассемблере для целого ряда микроконтроллеров от различных производителей. Среда разработки платная, но бесплатная версия с ограничениями на размер кода в зависимости от микроконтроллера.
Один из передовых графических языков программирования для микроконтроллеров. Поддержка русского языка. Платная, но есть бесплатная версия с ограничениями и только для микроконтроллеров PIC.
Бесплатная графическая среда программирования для разработки приложений под микроконтроллеры с архитектурой AVR от отечественных разработчиков.
Мощнейшая среда разработки программ для микроконтроллерных устройств, включающая редактор кода, компилятор, отладчик, программные и аппаратные библиотеки, использующие готовые функции. Программа платная. Есть бесплатная версия с ограничениями.
Мощная среда разработки приложений на языке Паскаль для различных архитектур микроконтроллеров. Программа платная. Есть бесплатная версия с ограничениями на размер кода (до 4096 байт).
Среда разработки программ на языке Бейсик для микроконтроллеров различных производителей. Программа платная от 199$. Есть бесплатная версия с ограничениями на размер кода (до 4096 байт).
Программа для создания и отладки кода, написанного на языке программирования BASIC, под PIC-микроконтроллеры. Программа платная 50$. MicroCode Studio – облегченный, бесплатный вариант с ограничением на кол-во строк кода.
Одна из самых популярных бесплатных оболочек для программирования, поддерживающая огромное число микроконтроллеров, ППЗУ и адаптеров различной конструкции. На русском языке.
Нетребовательная и многофункциональная программа - программатор, предназначенная для работы с микроконтроллерами и постоянными запоминающими устройствами с последовательным доступом различных производителей. На русском языке.Freeware.
Графическая оболочка для программы AVRdude, включающая в себя простой и функциональный AVR fuse-калькулятор. Freeware.
Графическая оболочка для популярной программы AVRDUDE, использующейся при прошивке микроконтроллеров компании Atmel. Freeware.
Надеюсь, что заинтересовавшиеся, прочитав первую часть, установили себе Beremiz и пролистали руководство пользователя. Тогда у читателя совершенно закономерно должен был возникнуть вопрос: а как и кому Beremiz может быть полезен?
Очевидно, что полезен он тем инженерам-программистам, которые программируют ПЛК, поддерживаемые Beremiz. Разумеется, что они и так о ней знают и целевой аудиторией быть не могут.
Тем не менее, благодаря ряду возможностей, Beremiz может быть полезен и иной аудитории. Об этих возможностях далее.
Тем не менее, благодаря ряду возможностей, Beremiz может быть полезен и иной аудитории. Об этих возможностях далее.
1. Использование компьютера в качестве ПЛК
Beremiz позволяет любой компьютер использовать в качестве ПЛК. Для запуска на ALT Linux есть значок запуска: Разработка/Beremiz-service.
Для запуска на других системах, нужно перейти в директорию с Beremiz и запустить Beremiz_service.py
После запуска появится индкатор в трее:
Как видно на скриншоте, при помощи этого индикатора можно запускать и останавливать ПЛК. Сменить имя ПЛК, IP-адрес, номер порта, рабочую директорию, куда загружается исполняемая программа. И наконец можно запустить консоль python для отладки и WX GUI Inspector для отладки уже HMI, написанного на wxWidget.
Теперь рассмотрим как подключаться к ПЛК, запущенному на компьютере. Запускаем Beremiz и открываем или создаём проект. Заходим в свойства проекта, щёлкнув мышкой дважды по значку проекта (значок PLC и имя Start на скриншоте) и заходим на вкладку «Конфигурация». URI системы исполнения указываем как PYRO://ip_адрес: номер_порта. Для ПЛК, запущенного на этой же машине запись будет как на картинке ниже. Также на этой вкладке необходимо выбрать в качестве целевой платформе ту операционную систему, на которой запущен ПЛК. Доступны варианты: Linux, Win32, Xenomai (Real-time OS + Linux для не реал-тайм приложений) и Generic (просто генерируется IEC-код на языке ST). Для всех платформ кроме Generic можно задать компилятор и компоновщик с флагами. Дефолтный компилятор gcc должен нас устроить. Правда не знаю, как там на Windows может нужно путь до gcc указать.
После того как проект настроен сохраняем его, собираем и коннектимся с ПЛК, нажав на соответствующий значок. После чего передаём программу ПЛК. После этого мы можем запустить программу или из среды Beremiz или на том компьютере, где запущена среда исполнения при помощи индикатора beremiz-service. После чего можно уже и отладкой заняться, как на скриншоте ниже.
Если нужно просто отладить программу, то нет необходимости запускать программный ПЛК, а можно просто в качестве URI системы исполнения указать: LOCAL:// А если ничего не указать, то при попытке коннекта появится вот такое диалоговое окно:
В этом диалоговом окне можно:
— Попытаться найти ПЛК автоматом, нажав кнопку Обновить
— Запустить локальный ПЛК и подключиться к нему, нажав кнопку Локальный
— Добавить IP-адрес, на котором запущен ПЛК.
Таким образом, Beremiz может быть интересен:
1. Тому, кто хочет научиться программировать на языках IEC 61131-3. Beremiz полностью соответствует стандарту, бесплатен, кроссплатформен и позволяет использовать в качестве ПЛК любой компьютер.
2. Для прототипирования проектов. В нём можно отладить базовую логику проекта ещё до выбора ПЛК.
3. Для разработчиков, которые хотят использовать персональный компьютер в качестве ПЛК. Ничего фантастического здесь нет. Использование ОС Linux с реал-тайм ядром или же Xenomai даёт гарантированное время исполнения цикла, так что ПК может выступать в качестве полноценного ПЛК. Сложность здесь одна, это отсутствие заготовок для устройств ввода-вывода. Необходимо писать плагины для использования плат ввода-вывода. Но никто не запрещает подключать устройства ввода-вывода по modbus.
Но и этими людьми целевая аудитория не ограничивается.
2. Проект YAPLC для микроконтроллеров
- YAPLC/RTE — минималистичная среда выполнения программмных ПЛК;
- YAPLC/IDE — расширения для Beremiz, позволяющие создавать приложения YAPLC/RTE;
- YaPySerial — динамическая библиотека для подключения к ПЛК с YAPILC-RTE;
- GNU ARM Embedded Toolchain — набор инструментов разработчика на Си/Си++ для микроконтроллеров Cortex-Mx;
- stm32flash — загрузчик для микроконтроллеров STM32;
- FreeModbus — стек ModBus;
- libopencm3 — библиотека драйверов периферии для микроконтроллеров с ядрами Cortex-Mх;
- FreeModbus и libopencm3 нужны для сборки прошивки YAPLC/RTE.
Теперь коротко разберём, как подключаться к плате STM32F4DISCOVERY (сразу оговорюсь, что у меня этой платы нет, у меня есть образец NUC-243, но я буду рад если кто-нибудь в комментариях отпишется, работает ли эта инструкция). Итак, заходим в свойства проекта на вкладку конфигурация. URI системы исполнения для Linux YAPLC:///dev/ttyUSB0 Для Windows URI:YAPLC://COM28 А в качестве целевой платформы выбираем YAPLC.
В комментариях попробую ответить на возникшие вопросы и проблемы.
И наконец есть ещё один вариант использования Beremiz.
Проект OpenPLC
Думаю у многих есть Arduino или Raspberry, так что можете попробовать.
Только это уже не Beremiz. Beremiz базируется на PLCOpenEditor. В остальном это независимые проекты.
Надеюсь, что обзор возможного применения Beremiz будет кому-нибудь да полезен.
Комментарии ( 16 )
Beremiz позволяет любой компьютер использовать в качестве ПЛК. Для запуска на ALT Linux есть значок запуска: Разработка/Beremiz-service.
А как у этого дела с реалтаймовостью? Похожее решение от сименса работает внутри RTOS, которая запускается совместно с виндой (WinRTX вроде), а в Beremiz?
А как у этого дела с реалтаймовостью? Похожее решение от сименса работает внутри RTOS, которая запускается совместно с виндой (WinRTX вроде), а в Beremiz?
Реал-таймовость зависит от ОС, на которой запускается Beremiz. На Windows и Linux с не реал-тайм ядром её, разумеется, не будет. Для реал-таймовости нужен дистрибутив Linux с ядром preempt-rt. К сожалению, в ALT Linux этого ядра нет в репозитории.
Например, YAPLC использует FreeRTOS в качестве ОСРВ. Можно сделать ПЛК вообще без ОС, тогда его реакция будет зависеть от того, насколько эффективно сделана обработка ввода-вывод и как часто вызывается цикл ПЛК.
В Beremiz нет каких-то привязок к ОСРВ на целевой платформе, просто есть несколько доступных и готовых к использованию платформ.
Немного попутал. Именно YAPLC не использует FreeRTOS, но есть другие ПЛК на основе Beremiz, которые используют.
Прежде всего ты попутал то, что вопрос касался исключительно реалтаймововсти «сфот-ПЛК» на обычном ПК с Beremiz.
Мы делаем контроллер, программируемый на Beremiz'е на базе FreeRTOS. Удалось добиться точности в районе 5 мс, в перспективе доведем до 1 мс.
Beremiz — это интегрированная среда разработки для ПЛК с открытым исходным кодом, которая полностью соответствует стандарту МЭК-61131-3. Beremiz опирается на открытые стандарты, которые не зависят от целевых устройств. Так что вы можете превратить любой процессор в ПЛК. Также Beremiz включает инструменты для создания HMI и подключения ваших программ PLC к наблюдению, базам данным или полевым шинам.
Введение
Для программирования ПЛК используются 5 языков, описанных стандартом МЭК 61131-3:
LD — релейно-контактные схемы;
FBD — функциональные блоковые диаграммы;
SFC — последовательностные функциональные диаграммы;
ST — структурированный текст;
IL (Instruction List) — список инструкций.
Тем не менее ведущие производители ПЛК используют собственные варианты этих языков, несовместимых с этим стандартом. Например, у фирмы Siemens это соответственно языки:
LAD, FBD, SFC, SCL, STL. Исключением являются компании, использующие в качестве сред программирования ISAGRAF и Codesys. Обе эти среды полностью соответствуют стандарту МЭК 61131-3.
Но и ISAGRAF и Codesys накладывают ограничение на аппаратную платформу. Сам производитель ПЛК не может внести изменения в исходный сред исполнения для портирования их на новую аппаратную платформу.
Beremiz же являясь свободным программным обеспечением, может быть модифицирован производителем ПЛК для работы на новой аппаратной платформе. Гибкость в изменении существующих и добавлении новых компонентов достигается с помощью языка Python (и соответствующих библиотек для пользовательского интерфейса, работы с сетью и т.д.) и xsd (XML Schema) файлов, применяемых для описания компонентов среды разработки: модулей работы с компиляторами целевой архитектуры, плагинов внешних источников данных и т.д.
Особенности Beremiz
Среда разработки Beremiz позволяет работать в конфигурационном режиме и в режиме исполнения прикладной программы. В конфигурационном режиме происходит создание прикладной программы, написание алгоритмов и логики её основных программных модулей и их связывание с внешними модулями УСО (устройство связи с объектом). В режиме исполнения прикладная программа передаётся на целевое устройство и может быть запущена с режимом отладки и без отладки.
Основными компонентами Beremiz являются:
— редактор PLCOpen для текстовых (IL и ST) и графических языков (FBD, LD, SFC) стандарта IEC 61131-3;
компилятор MatIEC, преобразующий логику и алгоритмы программных модулей (из которых состоит прикладная программа), описанных на языках стандарта IEC 61131-3, в эквивалентный С-код;
— механизм плагинов, позволяющий связывать внешние источники данных, такие как модули УСО (их параметры, состояния), SCADA-системы с логикой и алгоритмами программных модулей;
— средства отладки прикладной программы в режиме исполнения;
— элементы для создания человеко-машинного интерфейса управления прикладной программой.
Таким образом Beremiz преобразует LD, FBD, SFC или IL в код на ST, а MatIEC конвертирует ST в C. Код С компилируется на конечную платформу.
Установка и запуск
Для Windows и ALT Linux есть соответствующие значки запуска в меню Пуск. А для остальных дистрибутивов Linux запускать из каталога beremiz исполняемый файл BeremizIDE.py
Языки программирования ПЛК и программная платформа автоматизации CoDeSys
Возьмем для примера простейшую задачу: необходимо включить пресс через 1 секунду после одновременного удержания оператором двух кнопок в нажатом состоянии. Таким образом, мы гарантируем, что обе руки оператора заняты и даем ему время на контроль готовности машины. Самое простое решение это соединить контакты обеих кнопок последовательно и поставить электронное реле с таймером. Если таймер допускает регулировку времени задержки, то подобная схема обеспечит некоторую гибкость системы, впрочем не слишком высокую.
Любые дополнительные условия, например требование контроля последовательности нажатий кнопок поставит нас в затруднительную ситуацию - мы будем вынуждены изменить схему, введя дополнительные реле. Это не является сложной проблемой при условии, что такая необходимость возникает крайне редко.
Но в условиях конкурентного производства время выхода нового продукта на рынок имеет решающее значение и поэтому когда речь идет о гибком автоматизированном производстве, переналадка оборудования должна выполняться быстро, с минимальными затратами.
Дополнительной проблемой является увеличение сложности системы управления по мере развития производства и появления дополнительных функций (усложнения алгоритма работы).
Любой специалист по автоматизации сталкивался также с проблемой построения системы управления для оборудования в той предметной области, которая ему недостаточно знакома: отсутствие четкой постановки задачи, появление новых условий по мере внедрения оборудования может сделать невозможной успешную реализацию проекта.
Необходимо было создать управляющее устройство, алгоритм работы которого можно было бы менять, не переделывая монтажную схему системы управления, и в результате возникла логичная идея заменить системы управления с «жесткой» логикой работы (совокупность реле, регуляторов, таймеров и т.д.) на автоматы с программно заданной логикой работы. Так родились программируемые логические контроллеры (ПЛК). Впервые ПЛК были применены в США для автоматизации конвейерного сборочного производства в автомобильной промышленности (1969 г.).
Поскольку в определении «программируемый логический контроллер» главным являлось «программируемый», то практически сразу возник вопрос, как программировать ПЛК?
Алгоритмические языки программирования компьютеров того времени были ориентированы на решение вычислительных задач. Профессия программиста считалась исключительно редкой и трудной, таких специалистов не было ни на одном производстве. Идеальным вариантом могла бы стать автоматическая трансляция принципиальных схем релейных автоматов в программы для ПЛК.
Почему бы и нет? Так в ПЛК появился язык релейно-контактных схем (РКС или LD в английских источниках Ladder Diagram). Специалист-технолог мог “перерисовать” схему управления на дисплее программирующей станции ПЛК. Естественно схема изображалась не графически а посредством условных символов.
Например, описанная выше задача могла бы быть запрограммирована так:
Слева и справа в такой программе мы видим вертикальные шины питания, соединенные горизонтальными цепями. Цепи могут состоять их контактов и некоторых дополнительных элементов (например, таймер) соединенных параллельно или последовательно. Справа каждая цепь заканчивается обмоткой реле. Контакты этого реле могут в свою очередь присутствовать в других цепях. Таким образом, можно составить достаточно сложную схему аналогичную по функциональности реальной релейной схеме.
Первые программирующие станции представляли собой весьма громоздкие устройства, транспортируемые силами нескольких человек. Тем не менее, ПЛК активно начали заменять еще более громоздкие и главное обладающие “жесткой” логикой шкафы релейной автоматики.
Физически ПЛК представляет собой один или несколько блоков, имеющих определенный набор выходов и входов, для подключения датчиков и исполнительных механизмов (см. рис.1).
Логика его работы описывается программно и выполняется встроенным микропроцессором. В результате, абсолютно одинаковые ПЛК могут выполнять совершенно разные функции. Для изменения алгоритма работы не требуется каких либо переделок аппаратной части.
Рис. 1. Принцип работы ПЛК
Развитие электроники привело к потрясающей миниатюризации ПЛК. Сегодня существуют миниатюрные программируемые контроллеры, оснащенные небольшим дисплеем и встроенными возможностями программирования, подобные контроллеры получили название программируемых реле. Типовые задачи программируемых реле - очень простые локальные системы, имеющие до десятка входов и несколько силовых релейных выходов.
Написать более сложную программу с помощью встроенного пульта непросто. Аналогично мы легко можем набрать текст SMS на клавиатуре сотового телефона, но даже ввод нескольких страниц текста, не говоря уже о больших объемах, представляется проблематичным. Для этого существуют персональные компьютеры (PC), предоставляющие гораздо более комфортабельные условия работы человека.
Один современный ПЛК способен заменить десятки регуляторов, сотни таймеров и тысячи реле. Используя PC запрограммировать такую систему совсем не сложно. Применение PC в качестве программирующей станции ПЛК является сегодня доминирующим решением. Это не только упрощает программирование, но и решает задачи архивирования проектов, подготовки документации, визуализации и моделирования. Компьютер дает удобный универсальный инструмент как для программирования простейших локальных задач на ПЛК, так и для АСУ ТП.
Обратите внимание что, говоря о программировании ПЛК, мы все время возвращаемся к тому, как сделать этот процесс простым и удобным для человека. Казалось бы, однажды запрограммированный ПЛК будет работать годами и не очень важно будет ли его программа выглядеть красиво, главное чтобы она хорошо работала.
К сожалению, это не так. Необходимость изменения программы в ПЛК возникает регулярно иногда и непредвиденно. Поэтому, написана она должна быть так, чтобы любой человек, а не только ее автор мог в ней быстро разобраться и оперативно внести необходимые доработки. Говорить о том, что программы написаны для ПЛК, не вполне корректно.
Все программы написаны человеком и предназначены для чтения человеком. Любые инструменты программирования дают в конечном итоге микропроцессору инструкции в его машинных кодах. Для него нет разницы, на каком языке написана программа.
Упомянутый выше язык LD был изобретен в США в период релейной автоматизации. В Европу мода на ПЛК пришла несколько позднее, когда релейные шкафы были уже успешно заменены на шкафы с логическими микросхемами. Поэтому возникла необходимость изобретения других языков программирования понятных новому поколению инженеров.
Так в Германии появились языки простых текстовых инструкций напоминающих ассемблер (IL). Во Франции возникли графические языки функциональных блоковых диаграмм (FBD) и высокоуровневые диаграммы описания этапов и условий переходов (Графсет, современный SFC). Применялись также языки, используемые для программирования компьютеров (Pascal, Basic). В конце семидесятых годов сложилась крайне сложная ситуация.
Каждый изготовитель ПЛК (в том числе и в СССР) разрабатывал собственный язык программирования, поэтому ПЛК разных производителей были программно несовместимы, кроме того существовала проблема аппаратной несовместимости. Замена ПЛК на продукт другого изготовителя превратилась в огромную проблему. Покупатель ПЛК был вынужден использовать изделия только одной фирмы либо тратить силы на изучение разных языков и средства на приобретение соответствующих инструментов.
В итоге в 1979 году в рамках Международной Электротехнической Комиссии (МЭК) была создана специальная группа технических экспертов по проблемам ПЛК. Ей была поставлена задача выработать стандартные требования к аппаратным средствам, программному обеспечению, правилам монтажа, тестирования, документирования и средствам связи ПЛК.
В 1982 году был опубликован первый черновой вариант стандарта, который получил наименование МЭК 1131. Ввиду сложности получившегося документа, было решено разбить его на несколько частей, вопросам программирования посвящена третья часть стандарта “Языки программирования ПЛК”.
Поскольку с 1997 года МЭК перешел на 5 цифровые обозначения, в настоящее время правильное наименование международной версии части стандарта посвященной языкам программирования ПЛК – МЭК 61131-3. Рабочей группой МЭК было принято достаточно оригинальное решение. Из всего многообразия существовавших на момент разработки стандарта языков программирования ПЛК были выделены 5 языков, получивших наибольшее распространение.
Спецификации языков были доработаны, так что стало возможным использовать в программах написанных на любом из этих языков стандартизованный набор элементов и типов данных. Такой подход МЭК не раз подвергался критике, но время доказало правильность этого решения.
Реализация подобного подхода позволила привлечь к программированию одного и того же ПЛК специалистов различных областей знаний (и что особенно важно – различной квалификации): специалистов по релейной автоматике (и даже электриков), программирующих в LD, специалистов в области полупроводниковой схемотехники и автоматического регулирования для которых привычен язык FBD, программистов, имеющих опыт написания программ для компьютеров на языке ассемблера (ему соответствует язык IL для ПЛК), на языках высокого уровня (язык ST), даже далекие от программирования специалисты-технологи получили свой инструмент программирования – язык SFC.
Structured Text
Представляем книгу по Structured Text (ST) МЭК 61131-3. Автор - Сергей Романов
Книга "Изучаем Structured Text МЭК 61131-3": Ссылка на книгу
Хотя внедрение МЭК систем программирования и не позволило полностью отказаться от услуг профессиональных программистов (впрочем такая цель и не ставилась), но зато позволило снизить требования к квалификации и соответственно затраты на оплату труда программистов ПЛК. Стандартизация языков позволила (по крайней мере, частично) решить проблему зависимости пользователя ПЛК от конкретного изготовителя.
Все современные ПЛК оснащаются средствами МЭК 61131-3 программирования, что упрощает работу пользователям контроллеров (можно использовать ПЛК различных фирм без затрат на переучивание) и одновременно снимает ряд проблем для изготовителей ПЛК (можно использовать компоненты ПЛК других изготовителей).
Стандарт существенно расширил возможности на рынке труда специалиста, занимающегося программированием ПЛК. Подобно тому как автомеханик, имеющий стандартный набор инструментов, может браться за ремонт любого узла (кроме нестандартных) машины любой фирмы, так и специалист, изучивший языки МЭК 61131-3 сможет разобраться с программой любого современного ПЛК. Это позволило уменьшить как зависимость фирмы от специалиста по программированию ПЛК, так и специалиста от фирмы.
На сегодняшний день лидирующие позиции на рынке МЭК систем программирования занимает комплекс CoDeSys немецкой компании 3S-Smart Software Solutions GmbH. Его применяют 190 компаний во всем мире, большинство из этих компаний - ведущие изготовители оборудования и/или систем промышленной автоматизации.
В России ПЛК с CoDeSys хорошо известны специалистам, диапазон продукции, выпускаемой под управлением этих ПЛК огромен CoDeSys включает 5 специализированных редакторов для каждого из стандартных языков программирования:
Список Инструкций (IL),
Функциональные блоковые диаграммы (FBD),
Релейно-контактные схемы (LD),
Структурированный текст (ST),
Последовательные функциональные схемы (SFC).
Редакторы поддержаны большим числом вспомогательных инструментов, ускоряющих ввод программ. Это ассистент ввода, автоматическое объявление переменных, интеллектуальная коррекция ввода, цветовое выделение и синтаксический контроль при вводе, масштабирование, автоматическое размещение и соединение графических элементов.
В одном проекте можно совмещать программы, написанные на нескольких языках МЭК либо использовать один из них. Никаких особых требований по выбору языка нет. Он обусловлен исключительно личными предпочтениями.
В России наиболее популярен язык ST. Это текстовый язык, представляющий собой несколько адаптированный Паскаль. Второе место по популярности занимает графический язык FBD, далее следует язык LD. Помимо средств подготовки программ, CoDeSys включает встроенный отладчик, эмулятор, инструменты визуализации и управления проектом, конфигураторы ПЛК и сети.
Воплощением еще одной неожиданной идеи, коллективно сформированной пользователями CoDeSys, стало добровольное объединение изготовителей ПЛК, поддерживающих CoDeSys, в некоммерческую организацию CoDeSys Automation Alliance (САА). Суть идеи в том, чтобы превратить изготовителей средств промышленной автоматизации, поддерживающих CoDeSys, в партнеров (насколько это возможно на конкурентном рынке) и нейтрализовать последствия конкуренции между изготовителями для пользователей ПЛК.
Вместо намеренного создания технических препятствий, не позволяющих пользователям легко использовать продукты другой компании, члены САА целенаправленно принимают меры призванные обеспечить совместимость своих продуктов.
Пользователь может быть уверен, что его прикладная CoDeSys-программа будет работать в любом контроллере любой компании являющейся членом САА. Пользователь может быть уверен, что используемые им инструменты (CoDeSys) проверены тысячами пользователей во всем мире. Пользователь всегда может обсудить свои затруднения и получить реальную помощь от широкого круга коллег, имевших опыт решения подобных задач.
Читайте также: