Программы для программирования различных плк. Программирование плк на языках стандарта мэк

Программируемые логические контроллеры (ПЛК)

До появления твердотельных логических схем разработка систем логического управления основывались на электромеханических реле. По сей день реле не устарели в своем предназначении, но все же в некоторых своих прежних функциях они заменены контроллером.

В современной промышленности существует большое количество различных систем и процессов, требующих автоматизации, но теперь такие системы редко проектируются из реле. Современные производственные процессы нуждаются в устройстве, которое запрограммировано на выполнение различных логических функций. В конце 1960-х годов американская компания «Bedford Associates» разработала компьютерное устройство, названное MODICON (Modular Digital Controller). Позже название устройства стало названием подразделения компании, спроектировавшей, сделавшей и продавшей его.

Другие компании разработали собственные версии этого устройства, и, в конце концов, оно стало известно как ПЛК, или программируемый логический контроллер . Целью программируемого контроллера, способного имитировать работу большого количества реле, была замена электромеханических реле на .

ПЛК имеет набор входных клемм, с помощью которых можно контролировать состояние датчиков и выключателей. Также имеются выходные клеммы, которые сообщают «высокий» или «низкий» сигнал индикаторам питания, электромагнитным клапанам, контакторам, небольшим двигателям и другим самоконтролируемым устройствам.

ПЛК легки в программировании, так как их программный язык напоминает логику работы реле. Так обычный промышленный электрик или инженер-электрик, привыкший читать схемы релейной логики, будет чувствовать себя комфортно и при программировании ПЛК на выполнение тех же функций.

Подключение сигналов и стандартное программирование несколько отличаются у разных моделей ПЛК, но они достаточно схожи, что позволяет разместить здесь «общее» введение в программирование этого устройства.

Следующая иллюстрация показывает простой ПЛК, а точнее то, как он может выглядеть спереди. Две винтовые клеммы, обеспечивающие подключение для внутренних цепей ПЛК напряженим до 120 В переменного тока, помечены L1 и L2.

Шесть винтовых клемм, расположенных с левой стороны, обеспечивают подключение для входных устройств. Каждая клемма представляет свой входной канал (Х). Винтовая клемма («общее» подключение) расположенная в левом нижнем углу обычно подключается к L2 (нейтральная) источника тока напряжением 120 В переменного тока.

Внутри корпуса ПЛК, связывающего каждую входную клемму с общей клеммой, находится оптоизолятор устройства (светодиод), который обеспечивает электрически изолированный «высокий» сигнал для схемы компьютера (фототранзистор интерпретирует свет светодиода), когда 120-тивольтный переменный ток устанавливается между соответствующей входной клеммой и общей клеммой. Светодиод на передней панели ПЛК дает возможность понять, какой вход находится под напряжением:

Выходные сигналы генерируются компьютерной схемотехникой ПЛК, активируя переключающее устройство (транзистор, тиристор или даже электромеханическое реле) и связывая клемму «Источник» (правый нижний угол) с любым помеченным буквой Y выходом. Клемма «Источник» обычно связывается с L1. Так же, как и каждый вход, каждый выход, находящий под напряжением, отмечается с помощью светодиода:

Таким образом, ПЛК может подключаться к любым устройствам, таким как переключатели и электромагниты.

Основы программирования ПЛК

Современная логика системы управления установлена в ПЛК посредством компьютерной программы. Эта программа определяет, какие выходы находятся под напряжением и при каких входных условиях. Хотя сама программа напоминают схему логики реле, в ней не существует никаких контактов переключателя или катушек реле, действующих внутри ПЛК для создания связей между входом и выходом. Эти контакты и катушки мнимые. Программа пишется и просматривается с помощью персонального компьютера, подключенного к порту программирования ПЛК.

Рассмотрим следующую схему и программу ПЛК:

Когда кнопочный переключатель не задействован (находится в не нажатом состоянии), сигнал не посылается на вход Х1. В соответствие с программой, которая показывает «открытый» вход Х1, сигнал не будет посылаться и на выход Y1. Таким образом, выход Y1 останется обесточенным, а индикатор, подключенный к нему, погасшим.

Если кнопочный переключатель нажат, сигнал будет отправлен к входу Х1. Все контакты Х1 в программе примут активированное состояние, как будто они являются контактами реле, активированными посредством подачи напряжения катушке реле, названной Х1. В этом случае открытый контакт Х1 будет «закрыт» и отправит сигнал к катушке Y1. Когда катушка Y1 будет находиться под напряжением, выход Y1 осветится лампочкой, подключенной к нему.

Следует понимать, что контакт Х1 и катушка Y1 соединены с помощью проводов, а «сигнал», появляющийся на мониторе компьютера, виртуальный. Они не существуют как реальные электрические компоненты. Они присутствуют только в компьютерной программе - часть программного обеспечения - и всего лишь напоминают то, что происходит в схеме реле.

Не менее важно понять, что компьютер, используемый для написания и редактирования программы, не нужен для дальнейшего использования ПЛК. После того, как программа была загружена в программируемый контроллер, компьютер можно отключить, и ПЛК самостоятельно будет выполнять программные команды. Мы включаем монитор персонального компьютера в иллюстрации для того, чтобы вы поняли связь между реальными условиями (замыкание переключателя и статусы лампы) и статусы программы (сигналы через виртуальные контакты и виртуальные катушки).

Истинная мощь и универсальность ПЛК раскрывается, когда мы хотим изменить поведение системы управления. Поскольку ПЛК является программируемым устройством, мы можем изменить, команды, которые мы задали, без перенастройки компонентов, подключенных к нему. Предположим, что мы решили функцию «переключатель - лампочка» перепрограммировать наоборот: нажать кнопку, чтобы выключить лампочку, и отпустить ее, чтобы включить.

Решение такой задачи в реальных условиях заключается в том, что выключатель, «открытый» при нормальных условиях, заменяется на «закрытый». Программное ее решение - это изменение программы так, чтобы контакт Х1 при нормальных условиях был «закрыт», а не «открыт».

На следующем изображении вы увидите уже измененную программу, при не активизированном переключателе:

А здесь переключатель активизирован:

Одним из преимуществ реализации логического контроля в программном обеспечении, в отличие от контроля с помощью оборудования, является то, что входные сигналы могут быть использованы такое количество раз, какое потребуется. Например, рассмотрим схему и программу, разработанной для включения лампочки, если хотя бы два из трех переключателей активизированы одновременно:

Чтобы построить аналогичную схему, используя реле, потребуются три реле с двумя открытыми контактами при нормальных условиях, каждый из которых должен быть использован. Однако используя ПЛК, мы можем без добавления дополнительного оборудования запрограммировать столько контактов для каждого «Х» входа, сколько нам хотелось бы (каждый вход и выход должен занимать не больше, чем 1 бит в цифровой памяти ПЛК) и вызывать их столько раз, сколько необходимо.

Кроме того, так как каждый выход ПЛК занимает не более одного бита в его памяти, мы можем вносить контакты в программу, приводя Y выход в не активизированное состояние. Для примера возьмем схему двигателя с системой контроля начала движения и остановки:

Переключатель, подключенный к входу Х1, служит кнопкой «Старт», в то время как переключатель, подключенный к входу Х2 - кнопкой «Стоп». Другой контакт, названный Y1, подобно печати в контакте, позволяет контактору двигателя оставаться под напряжением, даже если отпустить кнопку «Старт». При этом вы можете увидеть, как контакт Х2, «закрытый» при нормальных условиях, появится в цветном блоке, показывая тем самым, что он находится в «закрытом» («электропроводящем») состоянии.

Если нажать кнопку «Старт», то по «закрытому» контакту Х1 пройдет ток ток и он отправит 120 В переменного токак к контактору двигателя. Параллельный контакт Y1 также «закроется», тем самым замкнув цепь:

Если мы теперь нажмем кнопку «Старт», контакт Х1 перейдет в «открытое» состояние, но двигатель будет продолжать работать, потому что замкнутый контакт Y1 все еще будет держать катушку под напряжением:

Чтобы остановить двигатель, нужно быстро нажать кнопку «Стоп», которая сообщит напряжение входу Х1 и «открытому» контакту, что приведет к прекращению подачи напряжения к катушке Y1:

Когда вы нажали кнопку «Стоп», вход Х1 остался без напряжения, вернув тем самым контакт Х1 в его нормальное «закрытое» состояние. Двигатель ни при каких условиях не станет работать снова, пока вы снова не нажмете кнопку «Старт», потому что печать в контакте Y1 была потеряна:

Очень важна отказоустойчивая модель устройств контроля ПЛК, так же, как и в устройствах контроля электромеханического реле. Нужно всегда учитывать влияние ошибочно «открытого» контакта на работу системы. Так, например, в нашем случае, если контакт Х2 будет ошибочно «открыт», то не будет никакой возможности остановить двигатель!

Решением этой проблемы является перепрограммирование контакта Х2 внутри ПЛК и фактическое нажатие кнопки «Стоп»:

Когда кнопка «Стоп» не нажата, вход ПЛК Х2 находится под напряжением, т.е. контакт Х2 «закрыт». Это позволяет двигателю начать работу, когда контакту Х1 сообщается ток, и продолжать работу, когда кнопка «Старт» отпущена. Когда вы нажимаете кнопку «Стоп», контакт Х2 переходит в «открытое» состояние и двигатель прекращает работу. Таким образом, вы можете увидеть, что функциональной разницы между этой и предыдущей моделью нет.

Тем не менее, если входной контакт Х2 был ошибочно «открыт», вход Х2 может быть остановлен нажатием кнопки «Стоп». В результате двигатель немедленно отключается. Эта модель безопаснее, чем предыдущая, где нажатие кнопки «Стоп» сделает невозможным остановку двигателя.

В дополнение к входам (Х) и выходам (Y) в ПЛК есть возможность использовать «внутренние контакты и катушки. Они используются так же, как и промежуточные реле, применяемые в стандартных релейных схемах.

Чтобы понять принцип работы «внутренних» схем и контактов, рассмотрим следующую схему и программу, разработанную по принципу трех входов логической функции AND:

В данной схеме, лампа горит, до тех пора пока какая-либо из кнопок не нажата. Для того чтобы выключить лампу следует нажать все три кнопки:

В этой статье, посвященной программируемым логическим контроллерам, иллюстрирована лишь небольшая выборка их возможностей. Как компьютер ПЛК может выполнять и другие расширенные функции с гораздо большей точностью и надежностью, чем при использовании электромеханических логических устройств. Большинство ПЛК имеют больше шести входов и выходов. Следующая иллюстрация показывает один из ПЛК компании Allen-Bradley:

С модулями, каждый из которых имеет 16 входов и выходов, этот ПЛК имеет возможность управлять десятком устройств. Помещенный в шкаф управления ПЛК занимает мало места (для электромеханических реле, выполняющих те же функции, понадобилось бы гораздо больше свободного пространства).

Одно из преимуществ ПЛК, которое просто не может быть продублировано электромеханическим реле, является удаленный мониторинг и управление через цифровые сети компьютера. Поскольку ПЛК - это ничего больше, чем специализированный цифровой компьютер, он может легко «общаться» с другими компьютерами. Следующая фотография - графическое изображение процесса заполнения жидкостью (насосная станция для муниципальной очистки сточных вод), контролируемого ПЛК. При этом сама станция расположена в нескольких километрах от монитора компьютера.

Перевод с английского - Юлия Сурта.

Одним из ключевых назначений автоматизации является наблюдение за изменением состояния объекта и способность контролировать этот процесс. Снижение процессов изменений приводит к повышению производительности и эффективности. Машинное зрение и управление движением помогают уменьшить изменения и добавить гибкости в современные системы автоматизации. В свою очередь, увеличение гибкости и функциональных возможностей систем автоматического регулирования может поставить некоторые более старые системы на грань возможностей обработки.

В настоящее время программируемые логические контроллеры ПЛК являются нормой в системах автоматизации. Часто к стоимости новых технологий добавляются возможности модернизации оборудования и/или дополнительные возможности по внедрению новых операционных систем. Однако, добавление устройств управление движением или пользовательских модулей ввода в программируемый логический контроллер ПЛК, также может значительно отразится на стоимости всего оборудования.

Относительные затраты, расширяемость, функциональность, а также реализация пользовательских опций – требования к современным промышленным контроллерам. Поскольку запросы к скорости обработки данных, памяти, мощности в последнее время значительно увеличились, сможет ли ПЛК и далее оставаться основным средством автоматизации производственных систем?

Процесс управления

В простейшей своей форме процесс управления состоит из трех основных компонентов – датчика, контроллера, исполнительного механизма. Датчик собирает информацию об управляемом объекте и передает ее контроллеру, который обрабатывает полученные данные и выдает сигнал управления исполнительному механизму. Такая конструкция носит название системы с замкнутым контуром или с обратной связью.

Например, мониторинг газов и температура в азотной печи может играть важную роль для термической обработки, а данные о влажности в помещении или вибрациях не иметь вообще никакого отношения к процессу термической обработки. Добавление последних данных в систему автоматического управления не принесет абсолютно никакой пользы, а только усложнит ее и увеличит стоимость. Можем сделать вывод, что сложность приобретает решающее значение, так как она снижает затраты на проектирование, программирование узлов, устранение неполадок, а также позволяет избежать установки компонентов, которые не несут практической пользы.

После сбора датчиками, информация поступает в контроллер, который играет роль «мозга». Он будет обрабатывать полученную информацию на основании алгоритмов и программ, заданных ему программистом. Если значение не будет укладываться в границы установленных пределов, то контроллер пошлет сигнал на исполнительный механизм для исправления ошибки, и так будет происходить пока ошибка не войдет в допустимые границы. Исполнительный механизм – это мышцы системы автоматического регулирования (САУ). Именно он будет оказывать физическое воздействие на контролируемую систему. Исполнительными механизмами для САУ могут быть различные электроприводы, гидроприводы, пневмоприводы и другие механизмы.

«Контроллер осведомлен о происходящем и может принимать решения. ПЛК бесспорно лидирующая фигура в промышленной автоматизации» — говорит Matteo Dariol, инженер Bosch Rexroth. «Аббревиатура содержит «программируемый логический», так как в начале электронной революции в 1960-1970хх годах управляющие устройства начали строиться с помощью дискретных электронных компонентов. До этого изменение спецификации проекта приводило к перепроектированию и реинжинирингу всей логики управления вместе с изменением физических элементов устройств управления. С появлением программируемого логического контроллера ПЛК усилия по изменению алгоритма управления практически полностью заключаются только в изменении программного обеспечения».

Современные ПЛК являются вполне надежными устройствами, а их языки программирования стандартизированы. Среды разработки программного обеспечения для программируемых логических контроллеров пока не имеют общих единых стандартов, так как все основные игроки рынка электронных компонентов предлагают свои собственные уникальные решения. Программирование, а также поиск и устранение неисправностей в ПЛК может быть даже легче, чем в персональном компьютере ПК, который каждый из нас, казалось бы, знает очень хорошо. Программируемый логический контроллер ПЛК имеет модульную структуру и возможность подключения различных модулей в зависимости от требований проекта: дополнительные порты ввода/вывода, модули безопасности, а также конкретные коммуникационные и это лишь несколько примеров.

Модульная конструкция дает программируемым логическим контроллерам основное преимущество – расширяемость. Есть и другие преимущества, такие как стоимость, простота устройства и прочность конструкции. Такие элементы САУ как реле, периодически нужно осматривать и проводить замену, и тут появляется еще одно преимущество ПЛК – минимум движущихся механических частей. Существуют возможности интеграции с более сложными системами, например с ПК контроллером.

Ограничения ПЛК

ПЛК имеет ограниченную память, программное обеспечение и периферийные возможности, по сравнению с персональным компьютером ПК. Управление движением (например, робототехника или сложная автоматизированная система) требует огромного количества входов/выходов, требующих дополнительных модулей управление ПЛК или внешней электроники. Тем не менее, стоит отметить, что компьютер способен обрабатывать гораздо большее количество информации, причем быстрее, что может значительно уменьшить физический размер и обеспечить необходимую вычислительную мощность для внедрения систем машинного зрения, управления движением и обеспечить быструю обработку больших потоков данных. Постоянный рост обрабатываемой информации связан с постепенным внедрением некоторыми компаниями промышленных интернет вещей IIoT в производственные линии и промышленные объекты, которые требуют больших вычислительных мощностей.

Оригинальные производители оборудования (англ. original equipment manufacturer OEM) способны увеличить производительность оборудования, позволяя машинам одновременно выполнять несколько операций. Максимально интенсивные И/ИЛИ вычисления критически важных процессов, запущенных одновременно, может привести к перегрузке программируемого логического контроллера. Для уменьшения времени обработки критически важных процессов машины могут использовать несколько вычислительных платформ. Как правило, они включают в себя один или несколько контроллеров движения и один или более наблюдающий процессор, который поддерживает интерфейс оператора для программирования, информации работы машины, сбора данных, функции техподдержки. Однако, использование нескольких процессоров является более дорогим. Новое программное обеспечение, ориентированное на платформы ПК, может помочь решить данную проблему, хотя…

ПК не так надежен и ему трудно «выживать» в промышленных условиях, таких как повышенная запыленность и влажность. Использования ПК с боле сложным программным обеспечением или большим количеством программных опций, занимает гораздо больше времени для обучения обслуживающего персонала. Усовершенствованное программное обеспечение может потребовать наличие программиста для проведения технического обслуживания, а также выполнение ремонтных работ и установки обновлений. Программное обеспечение ПЛК может быть базовым, но имеющие свои проверенные временем стандартные языки, которые могут обеспечить долговечность устройства, несмотря на его скорость и линейный характер.

ПЛК обычно используют в отрасли стандартный набор языков программирования (МЭК 61131-3), в том числе LAD диаграммы. LAD диаграммы строятся по аналогии с электрическими схемами, что позволяет значительно упростить обучение персонала, проведения технического обслуживания и ремонта. В большинстве случаев вполне возможно обойтись без программиста. Другой язык из стандарта МЭК 61131-3 — структурированный текст, который похож на язык «высокого уровня». Тем не менее, использование других нестандартных языков высокого уровня, таких как C ++ или Visual Basic, может быть трудно с ПЛК. Только в последнее время новые программные инструменты позволяли пользователям общаться с ПЛК так, как если бы это был обычный ПК.

Последовательная программа ПЛК сканирует все инструкции в каждом цикле. Цикл сканирования занимает примерно 10 мс или чуть больше. После завершения выполнения всех инструкций программа переходит к следующему сканированию. Если инструкция не выполняется в установленное время, то это вызывает сообщение об ошибке и выполнение программы прекращается. Это программное обеспечение жесткого времени может ограничивать продолжительность программы и любые входные сигналы с частотой менее 100 Гц.

Например, если необходимо обрабатывать сигнал от датчика скорости с номинальными оборотами 1200 об/мин (частота сигнала 1200/60 = 200 Гц), микроконтроллер на базе ПЛК не может корректно измерять скорость используя такой вход. Необходима интеграция специального модуля с декодером или счетчиком на интегральных микросхемах, который преобразует сигнал от датчика в нормально-обрабатываемый микроконтроллером. Такие преобразовательные модули часто используются во многих системах. Также стоит отметить и необходимость модулей вывода на примере управление соленоидом с частотой работы ШИМ в 10 кГц. Для управления таким устройством с помощью ПЛК необходим модуль вывода с ШИМ генератором. Добавление таких модулей увеличивает стоимость системы в 2-3 раза.

Следующее поколение ПЛК

Новая система имеет название программируемого контроллера автоматизации (агл. programmable automation controller (PAC)) способного решить некоторые проблемы ПЛК. Некоторые специалисты утверждают, что программируемый контроллер автоматизации (ПКА) более коммерческое название, но это не совсем так. К сожалению, существуют некоторые различие между их определениями, а с технологической точки зрения принципиальные различия между ними найти довольно трудно.

ПКА, как правило, включают в себя функциональные возможности ПЛК. Оба являются цифровыми устройствами, но ПКА предоставляет расширенные возможности программирования и часто имеют более расширенную функциональность, память и периферические способности. ПКА предлагает более сложные архитектурные системы в случае необходимости большей связности вводов/выводов. Более того, он имеет обычно встроенные возможности передачи данных из памяти на USB накопитель, а также часто присутствует возможность прямого взаимодействия с базами данных.

Дополнительные возможности программного обеспечения звучит, конечно, хорошо, однако стоит отметить, что не все ПКА могут поддерживать стандартные языки МЭК 61131-3, что может привести к дополнительным проблемам при программировании и обслуживании.

Существуют различные модели этих устройств. ПКА могут предлагать модели сосредоточенные на системах машинного зрения или другие, предназначенные для одновременного контроля нескольких процессов. Выбор модели или технологии должны учитывать и требования будущего (модернизация и расширение производства), и стандарты (например, безопасности). Планирование может продлить срок службы контроллера путем удовлетворения будущих потребностей, но также и заложить фундамент под использования промышленных интернет вещей IIoT и децентрализованного управления.

ПЛК все еще актуальны, однако, развитие систем машинного зрения, динамических роботизированных процессов и управления движением, стремление к большей автоматизации производства с использованием IIoT, требуют от программируемого логического контроллера значительно большей мощности обработки данных или памяти, которые он не в состоянии обеспечить. Децентрализованная технология может помочь расширить устаревшую линейку путем предложения продуктов типа SoCs и FPGAs, которые обрабатывают информацию непосредственно на самом датчике. Это означает, что добавление сложного процесса к существующей линии может не требовать обязательной установки дорогого ПКА, но будет необходима группа интеллектуальных датчиков, способных самостоятельно хранить и обрабатывать данные своих измерений.

Возможно ли применение обеих вариантов?

Еще более запутывает дискуссию о ПЛК и ПКА то, что возможно построение системы управления без любого из них. Сеть интеллектуальных датчиков и программного обеспечения можно комбинировать для устранения или большей децентрализации программируемых контроллеров во всех цехах предприятия. SoCs является одной из технологий, которые могут децентрализовать процесс. Однако, не стоит забывать, что слишком много протоколов на одном SoCs может привести к увеличению количества циклов проверки, необходимых для проверки процесса или его части, что вызовет режим, аналогичный перегрузке программируемого логического контроллера.

Более того, существует целый ряд технологий, позволяющих совместную работу программируемых логических контроллеров, технологий децентрализации, программируемых контроллеров автоматизации, для максимально эффективной работы предприятия. Необходимо предпринять несколько основных шагов для определения, какие технологии, возможно, будут необходимы.

«Во-первых, нужно понять, какие факторы важны для успешного выполнения операций и уровень устаревания, который допустим для устройства или линии» — говорит Джули Робинсон, менеджер по маркетингу, Rockwell Automation. «После того, как риски определены, пользователи должны разработать стратегию для смягчения и, в конечном счете, устранения этого риска, и планировать первое обновление работы ячеек. Некоторые факторы, влияющие на эти изменения, включают в себя:

  • Совмещение будущих потребностей производства или улучшение текущей производительности;
  • Соответствие последним требованиям безопасности и нормативным документам;
  • Повышение гибкости производственных систем для эффективного расширения производства или обновления оборудования;
  • Повышение эффективности использования активов за счет сокращения простоев;
  • Повышение мер безопасности производства и сохранности оборудования;

Также пользователи должны понимать, какие изменения вносились в оборудование в течении нескольких лет работы завода или фабрики, что должно отображаться на схемах и чертежах.

Точная документация на устаревшее оборудование очень сильно поможет в интеграции нового оборудования. А если децентрализованная платформа уже интегрирована, то документация становится еще более важной. Децентрализованные контроллеры показали меньшее время при установке нового оборудования. В традиционной, централизованной системе, инженеры или обслуживающий персонал должны подключатся к программируемому логическому контроллеру для обнаружения проблем и скачки управляющей программы в случае необходимости. Хорошо спроектированная система должна быть простой в эксплуатации, обслуживании, а также масштабируемой.

Для того, чтобы произвести подключение к децентрализованной системе, специалисты не должны физически ходить «вокруг устройства». Для устранения этой проблемы обслуживающие оборудование компании стараются соединять по несколько систем, которые технологически совместимы. Часто это означает интеграцию старых систем с новыми технологиями и программным обеспечением.

В настоящее время очень малый процент хочет вкладывать в модернизацию работающего оборудования, если оно только не безнадежно устарело. Тем более решения о модернизации в будущем закладываются при проектировании оборудования, а часто проектированием различного оборудования занимается не одна компания, и в будущем при модернизации могут возникать конфликты.

Прежде чем выбрать оптимальную технологию для вашего оборудования важно понимать, что данная технология должна быть совместима с вашими целями не только сейчас, но и в будущем, и предлагает необходимые функции без излишней сложности. Для многих компаний трудно, и в некоторых случаях бессмысленно, содержать экспертов в каждой области, именно поэтому в последнее время начинает набирать обороты промышленные интернет вещей IIoT.

Термины и определения

Разница между ПЛК и ПКА может проникать и в другие технологии. Например, системы на кристалле (СнК), с английского System-on-a-Chip (SoC), встроенные компьютеры (embedded PC) и программируемая пользователем вентильная матрица (FPGA) предлагают собой некоторые технологии, которые способны заменять или расширять возможности программируемых логических контроллеров. Тем не менее, для некоторых технологий пока не существует устоявшихся определений, и ученые спорят о более правильном описании их. Но мы постараемся привести некоторые основные определения.

Программируемый логический контроллер ПЛК

Представляет собой цифровой компьютер, предназначенный для автоматизации промышленных систем. Он специально разрабатывался для работы в жестких условиях эксплуатации, таких как температурные диапазоны, давление, электрические шумы, вибрации и другие неблагоприятные факторы промышленной среды. Он имеет наиболее важную особенность, которая, собственно, и привело его к такой популярности – это жесткая система реального времени.

Режим реального времени

Многие понимают режим реального времени как выполнение задачи «как можно скорее». Но это не так. Система реального времени гарантирует, что все входы, выходы и вычислительные процессы будут обрабатываться за какой-то фиксированный промежуток времени, часто упоминаемый в технической литературе как дедлайн (с англ. deadline – предельный срок). В системах жесткого реального времени нарушение дедлайнов приравнивается к отказу системы. В свою очередь мягкая система реального времени допускает небольшие превышение дедлайнов, но только тогда, когда это приводит к допустимому снижению качества работы системы. Например, видеоконференция. Небольшое запаздывание звука или видео не приведет к катастрофическим последствиям.

При компиляции программы ПЛК, он рассчитывает, есть ли необходимые ресурсы для выполнения пользовательских инструкций, после чего переходит к выполнению поставленной задачи в нужный срок.

Программируемый контроллер автоматизации ПКА

Представляет собой цифровой компьютер, включающий в себя функциональные возможности ПЛК. Программируемый контроллер автоматизации понятие относительно недавнее, появившееся в начале 2000-х. В большинстве случаев ПКА представляет собой эволюцию программируемого логического контроллера. ПЛК является мостом между электрической автоматизацией, построенной на реле, и электромеханической программируемой автоматизацией, где акцент делается на программное обеспечение операций (определение, данное 40 лет назад).

Мягкая система реального времени(softPLC)

Как упоминалось выше, мягкая система реального времени не дает гарантии своевременного выполнения поставленной задачи. По этому, их не применяют для систем управления движением. Вместо этого softPLC предпочтительны для подключения связей завод-цех, человеко-машинных интерфейсов, систем диспетчерского контроля и сбора данных (SCADA). Вполне возможно, для некоторых ПКА быть SoftPLC.

Встраиваемые ПК

Встраиваемый промышленный компьютер это не компьютер общего назначения. Он разработан и оптимизирован для одного пользовательского приложения. Все его компоненты, как правило, размещены на одной плате, включая и микроконтроллеры или микропроцессоры, шины ввода/вывода, память и другие пользовательские микросхемы. Устройство включает в себя даже программное обеспечение или прошивку (прошивка обычно находится в ПЗУ или памяти только для чтения). Встроенные ПК (embedded PC) действительно пересечение между аппаратным и программным обеспечением, поскольку существует тесная взаимосвязь между этими двумя частями – одна не может работать без другой. Проекты с использованием встраиваемых ПК могут реагировать на потребности жесткого или мягкого режима реального времени.

Введение
Я занимаюсь автоматизацией зданий. Сложилось так, что в основном мы строим свои системы на базе ПЛК Beckhoff. Такой выбор был сделан прежде всего потому, что эти контроллеры являются свободно-программируемыми в полном смысле этих слов. Что это значит? Возьмите контроллер TAC Xenta, например, и попробуйте на нем реализовать обмен с внешним устройством через RS232 по собственному протоколу, на уровне «байт послал - байт принял». Не получится, эти контроллеры так не умеют - используйте только те протоколы, которые в них заложил разработчик. А Beckhoff умеет. Но прежде чем лезть в такие дебри, давайте посмотрим на среду разработки? На каком, собственно, языке, мы будем писать?
Стандарт МЭК 61131-3
Промышленные ПЛК программируются на языках стандарта МЭК 61131-3 . Всего этих языков 5, некоторые производители добавляют свои. Языки друг на друга совсем не похожи, и, наблюдая за коллегами, могу предположить, что выбор того или иного языка связан прежде всего с тем, чем человек занимался до того, как он пришел в эту отрасль.
  1. IL, instruction list, список инструкций. Похож на ассемблер. Не видел никого, кто его использовал бы, но подозреваю, что олдскульные кодеры, пробивавшие перфокарты по памяти, оценят.
  2. LD, ladder diagram. Визуальный язык, для тех, кто занимался разработкой схем релейной автоматики.
  3. ST, structured text. Более всего напоминает «классические» языки программирования, чем-то похож на Паскаль. Оттого ценится теми, кто до ПЛК занимался программированием на других языках и платформах, в частности - мной.
  4. FBD, functional block diagram. Этакая блок схема, любим прежде всего технологами, решившими податься в программирование, за свою наглядность.
  5. 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.
Но это «голова» контроллера, а ведь ему еще нужны входы и выходы, чтобы общаться с внешним миром. Тут есть два подхода:
  1. Можно сделать «все в одной коробке» - голова, некий набор входов / выходов, несколько вариантов конфигурации - вот тут у нас входов побольше, тут поменьше, тут голова помощнее, тут послабее. Так делают, например, Carel , и много кто еще. На маленьком проекте такой подход себя в чем-то, может быть, и оправдывает.
  2. Но лично мне кажется, что большую гибкость дает другой подход. Голова отдельно, и к ней по шине подключается наборный «хвост» из модулей ввода-вывода. Мы ставим те модули, которые нам нужны, и в том количестве, которые нам нужно. Так делают 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. А вы говорите, обработка исключений на ПЛК. Ее и в среде разработки-то не всегда нормально могут сделать.

НО! Зато для любителей той тонкой грани, которая отделяет железо от программного обеспечения, софта в просторечии - это очень интересная ветвь ай-ти, правда.

Надеюсь, что этот небольшой обзор будет полезен. Если хабрасообществу будет интересна эта тема, то расскажу про ПЛК подробнее.

Итак, вы решили изучать программирование ПЛК (Программируемых Логических Контроллеров). С чего стоит начать изучение программирования контроллеров? Какие учебные материалы искать, стоит ли заниматься этим самостоятельно или лучше пойти на курсы, сколько времени займёт обучение и насколько оно будет сложным? Доступно ли программирование ПЛК всем или для этого нужно быть программистом? Как быстро стоит переходить от теории к практике? Мы подготовили ответы на эти и другие вопросы.

1. Для того чтобы начать изучать программирование ПЛК, быть программистом вовсе не обязательно. Достаточно иметь так называемый логический склад ума. Если вы любили математику и информатику в школе - скорее всего, у вас всё получится.
2. Однако определённые навыки и понимание машинной логики все же необходимы. Если вы изучали в школе или институте основы программирование на Паскале, Бейсике или Ассемблере - это значительный плюс.
3. Первые шаги в программировании ПЛК можно и даже лучше всего делать самостоятельно, это позволит изучить основы в комфортном для себя темпе. Учебных материалов о ПЛК и их программировании достаточно много в интернете, а приблизительный план для самостоятельного обучения вы можете найти в этой статье.
4. А вот сразу после изучения основ следует обратить своё внимание на профессиональные курсы и руководства. От своего имени особо рекомендуем видеокурс по Simatic Step 7, который можно купить на сайте http://step7-kurs.ru. Этот курс как нельзя лучше подходит для новичков, в то же время Simatic Step 7 используется для разработки систем автоматизации для ПЛК Simatic - одних из самых популярных и востребованных на сегодня контроллеров.
5. После того как вы сделаете свои первые шаги step 7 - милости просим на специализированные форумы: здесь вы сможете не только «задачки порешать», но и уже начинать подыскивать работу или стажировку.
6. Время, необходимое для изучения программирования ПЛК, - параметр индивидуальный. Однако в любом случае это займёт у вас гораздо меньше времени, чем попытки освоить Java или C#.

Темы, которые стоит изучить самостоятельно до того, как вы приступите к изучению профессиональных курсов (т. е. на этапе самообучения):

1. Требования техники безопасности при работе с ПЛК . Хотя в начале обучения вам, возможно, будет казаться, что эта тема вам не нужна - все же потратьте некоторое время и изучите ТБ работы с ПЛК. Пригодится обязательно.
2. Назначение, функции, принципы работы и конструкция ПЛК . Условия, в которых работают ПЛК и требования к ним. Если вы раньше занимались радиотехническим конструированием - эта тема не составит для вас особого труда.
3. История ПЛК . Необязательная, но весьма интересная часть.
4. Знакомство с основными языками программирования ПЛК согласно стандарту МЭК-61131-3: Sequential Function Chart (SFC), Function Block Diagram (FBD), Ladder Diagrams (LАD), Statement List (STL), Instruction List (IL).
5. Знакомство со средой разработки , лучше всего - с двумя-тремя наиболее популярными. Например, это могут быть CoDeSys и Simatic Step 7.
6. Изучение методики программирования ПЛК . Структуризация программы, вызов подпрограмм, задание циклов и времени работы программы.
7. Основные команды (операторы) . К этому моменту вы уже должны были определиться с языком программирования и средой разработки, наиболее симпатичной лично вам.
8. Функции и функциональные блоки .
9.Примеры кода работающих программ.
10. Практикум . При написании собственных программ переходите от элементарных задач к более сложным. На этом этапе нет ничего плохого в том, чтобы использоваться в своих программах части чужого кода, однако старайтесь со временем уменьшать их количество (в процентном выражении).

Контролер – это управляющее устройство. Действительно функциональным он становится только тогда, когда вы создаете и запускаете программу по его использованию.

Отсюда вытекает главная задача программируемого логического контролера – исполнение программы, которая осуществляет руководство технологического процесса.

Какой набор программ доступен для ПЛК? В принципе любой набор возможен. Главное, чтобы размер свободных ресурсов, данного инструмента, вам был не помехой. Разработчик получает широкие возможности по написанию программ.

Что же необходимо, чтобы осуществить программирование контроллера? Во – первых нужен программист, который бы досконально разбирался в данном вопросе. Во – вторых необходим сам компьютер и конечно пакет разработки.

Функционал средств разработки

Обычно пакет разработки поставляется за дополнительную плату. Хотя в принципе часто встречается, что данный пакет уже изначально включен в программное обеспечение по инсталляции.

Какой функционал предлагает среда разработки?

  1. Большой набор библиотек, программные блоки, определенные процедуры и готовые шаблоны.
  2. Инструментарий для проверки, тестированию и запуску программы на компьютере минуя контроллер.
  3. Также предложен инструмент для автоматизации документирования программы, которая была создана, в пределах принятых стандартов.

И наконец необходимо отметить главное достоинство – это поддержка порядка шести языков программирования. Единственным недостатком является то, что совместимость программ реализована на низком уровне. Производители ПЛК не пришли к унификации и каждый выпускает, данное устройство, со своей программной средой.

Виды языков программирования для ПЛК

  • Язык LD

LD (Ladder) – это среда разработки, которая основана на графике. Своего рода, она представляет собой подобие релейной схемы. Разработчики данного стандарта считают, что использование такого вида программной среды существенно облегчает переобучение инженеров релейной автоматики на ПЛК.

К главным недостаткам, данного языка программирования, можно отнести неэффективность при обработке процессов с большим количеством аналоговых переменных, так как он построен для представления процессов с дискретным характером.

  • Язык FBD

FBD (Диаграмма Функциональных Блоков) – здесь также используется графическое программирование. Образно говоря, FBD определяет собой некую множественность функциональных блоков, которые имеют соединения между собой (вход и выход).

Данные связи являются переменными и выполняют пересылку между блоками. Каждый блок в отдельности может представлять определенную операцию(триггер, логическое “или” и т.д.). Переменные задаются с помощью определенных блоков, а цепи выхода могут иметь связи с конкретными выходами контроллера или связи с глобальными переменными.

  • Язык SFC

SFC (Sequential Function Chart) – может использоваться с языками ST и IL, он также основан на графике. Принцип его построения близок к образу конечного автомата, данное условие относит его к самым мощным языкам программирования.

Технологические процессы, в данном языке, построены по типу определенных шагов. Структура шагов состоит из вертикали, которая идет сверху вниз. Каждый шаг – это конкретные операции. Описать операцию можно не только с помощью SFC, но и с помощью ST и IL.

Как только шаг выполнен, то идет действие по передачи управления следующему шагу. Переход между шагами может быть двух видов. Если на шаге выполнено какое – то условие и дальнейшим действием является переход на следующий шаг, значит – это условный переход. В случае же, если происходит полное выполнение всех условий на данном шаге и только потом осуществляется переход на следующий шаг, то-это безусловный переход.

  • Язык ST

ST (Структурированный Текст) – относится к языкам высокого уровня и имеет много сходного с Pascal и Basic.

ST позволяет интерпретировать более шестнадцати типов данных и имеет возможность работать с логическими операциями, циклическими вычислениями и т.д.

Небольшим недостатком можно определить отсутствие графической среды. Программы представлены в виде текста и данное условие усложняет освоение технологии.

  • Язык IL

IL (Список Команд) – язык подобен Ассемблеру, обычно используется для кодировки блоков по отдельности. Плюсом является то, что данные блоки имеют большую скорость работы и низкую требовательность к ресурсам.

  • Язык CFC

CFC (Continuous Flow Chart) – относится к языкам высокого уровня. В принципе – это явное продолжение языка FBD.

Процесс проектирования состоит из использования готовых блоков и размещения их на экране. Далее происходит их настройка и размещения соединений между ними.

Каждый блок – это управление определенным технологическим процессом. Здесь идет основной уклон на технологический процесс, математика уходит на второй план.

Статьи по теме: