Язык релейных диаграмм (LD) — PLC
Язык релейных диаграмм (LD)
Язык релейных или релейно-контактных схем (РКС) – графический язык, реализующий структуры электрических цепей. Лучше всего LD подходит для построения логических переключателей, но достаточно легко можно создавать и сложные цепи — как в FBD. Кроме того, LD достаточно удобен для управления другими компонентами POU.
Диаграмма LD состоит из ряда цепей.
Слева и справа схема ограничена вертикальными линиями — шинами питания. Между ними расположены цепи, образованные контактами и обмотками реле, по аналогии с обычными электронными цепями. Слева любая цепь начинается набором контактов, которые посылают слева направо состояние «ON» или «OFF», соответствующие логическим значениям ИСТИНА или ЛОЖЬ. Каждому контакту соответствует логическая переменная. Если переменная имеет значение ИСТИНА, то состояние передается через контакт. Иначе правое соединение получает значение выключено («OFF»).

Пример релейной диаграммы
Контакт
Контакты обозначаются двумя параллельными линиями и могут иметь состояния «ON» или «OFF». Эти состояния соответствуют значениям ИСТИНА или ЛОЖЬ. Каждому контакту соответствует логическая переменная. Если значение переменной ИСТИНА, то контакт замкнут. Контакты могут быть соединены параллельно, тогда соединение передает состояние «ON», когда хотя бы одна из ветвей передает «ON».Если контакты соединены последовательно, то для того, чтобы соединение передало «ON», необходимо, чтобы оба контакта передавали «ON». Это соответствует электрической параллельной и последовательной схеме. Контакт может быть инвертируемым. Такой контакт обозначается с помощью символа |/| и передает состояние «ON», если значение переменной ЛОЖЬ.
Обмотка
В правой части схемы может находиться любое количество обмоток (реле), которые обозначаются круглыми скобками (). Они могут соединяться только параллельно. Обмотка передает значение соединения слева направо и копирует его в соответствующую логическую переменную. В целом цепь может быть либо замкнутой (ON), либо разомкнутой (OFF). Это как раз и отражается на обмотке и соответственно на логической переменной обмотки (ИСТИНА/ЛОЖЬ). Обмотки также могут быть инверсными (в примере — %QX3.0). Если обмотка инверсная (обозначается символом
Функциональные блоки в LD
Кроме контактов и обмоток, в LD можно использовать функциональные блоки и программы. Они должны иметь логические вход и выход и могут использоваться так же, как контакты.
SET и RESET обмотка
Обмотки могут быть с «самофиксацией» типов SET и RESET. Обмотки типа SET обозначаются буквой «S» внутри круглых скобок (S). Если соответствующая этой обмотке переменная принимает значение ИСТИНА, то она навсегда (до сброса R) сохраняет его. Обмотки типа RESET обозначаются буквой R. Если соответствующая переменная принимает значение ЛОЖЬ, то она навсегда (до установки S) сохраняет его.
LD в качестве FBD
Весьма вероятно, что при работе с LD вы захотите с помощью контакта управлять другими POU. Во-первых, можно использовать обмотку для передачи значения глобальной переменной, которая будет использоваться в другом месте. Кроме того, можно вставить вызов прямо в схему LD. Такой POU может быть оператором, функцией, программой или функциональным блоком, который имеет добавочный вход, обозначаемый EN. Вход EN всегда логического типа, и POU выполняется, только когда значение EN=ИСТИНА. POU встраивается в схему параллельно обмоткам, и вход EN соединяется ответвлением. Использование таких POU делает LD схему похожей на FBD схему.

Функциональный блок на языке LD
Мой блог находят по следующим фразам
8 Язык лестничной диаграммы ld
Язык LD (Ladder Diagram) – графический язык, основанный на принципах релейно-контактных схем (элементами релейно-контактной логики являются: контакты, обмотки реле, вертикальные и горизонтальные перемычки и др.) с возможностью использования большого количества различных функциональных блоков. Язык релейных схем существует со времен Т. Эдисона и адаптирован к ПЛК в начале 70-х годов прошлого века. Символика этого языка была заимствована из проектирования в области электротехники.
Достоинствами языка LD являются: представление программы в виде электрического потока (близок специалистам по электротехнике), наличие простых правил, использование только булевых выражений. Он имеет большой круг пользователей, рационален для ручной оптимизации специфических критических мест кода.
Структура LD-секции соответствует ступеням для действий переключателей реле.
Объекты языка программирования LD обеспечивают средства для структурирования организационной единицы ПЛК (секции) в некоторое количество контактов, катушек и FFB. Эти объекты взаимосвязаны через фактические параметры или связи.
Порядок обработки индивидуальных объектов в LD-секции определяется потоком данных внутри секции. Ступени, подключенные к левой шине питания, обрабатываются сверху вниз (соединение к левой шине питания). Ступени внутри секции, которые не зависят друг от друга, обрабатываются в порядке размещения.
Теоретически каждая секция может содержать любое число объектов, которые означают любое число входов и выходов. Однако желательно подразделить всю программу на ряд логически модулей, т. е. на различные секции.
Секции LD могут быть преобразованы в FBD-секции с помощью команды меню File → Export… → Program: IEC-Text для экспорта в языки ST или IL, затем они могут быть импортированы командой меню File → Import… → Program: IEC-Text. Преобразование FBD-секций в LD-секции невозможно.
На рисунке 8.1 приведен общий вид секции в редакторе LD.
Рисунок 8.1 – Изображение секции LD
Элементы языка LD
Контакты. Контактом является LD-элемент, который передает состояние горизонтальной связи левой стороны горизонтальной связи на правой стороне. Это состояние – результат булевой AND-операции состояния горизонтальной связи с левой стороны с состоянием ассоциированной переменной или прямого адреса. Контакт не изменяет значение связанной переменной или прямого адреса.
Для нормально разомкнутых контактов (рисунок 8.2) состояние левой связи передается в правую связь, если состояние связанного логического фактического параметра ON. Иначе, состояние правой связи OFF.
Рисунок 8.2 – Нормально разомкнутый контакт
Для нормально замкнутых контактов (рисунок 8.3) состояние левой связи передается в правую связь, если состояние связанного логического фактического параметра OFF. Иначе, состояние правой связи ON.
Рисунок 8.3 – Нормально замкнутый контакт
В контактах для определения положительных переходов (рисунок 8.4) правая связь устанавливается в состояние ON, если переход связанного фактического параметра происходит из OFF в ON, и в то же время состояние левой связи ON. Иначе, состояние правой связи OFF.
Рисунок 8.4 – Контакт для определения положительных переходов
В контактах для определения отрицательных переходов (рисунок 8.5) правая связь устанавливается в состояние ON, если переход связанного фактического параметра происходит из ON в OFF, и состояние левой связи ON в то же время. Иначе, состояние правой связи OFF.
Рисунок 8.5 – Контакт для определения отрицательных переходов
Катушки. Катушка является LD-элементом, который передает состояние горизонтальной связи на левой стороне неизменяемым горизонтальной связи на правой стороне. В этом процессе состояние связанной переменной или прямого адреса будет сохранено.
В катушках (рисунок 8.6) состояние левой связи передается в связанный логический фактический параметр и в правую связь.
Катушки обычно следуют за контактами или блоками EFB, но они могут также сопровождаться контактами.
Рисунок 8.6 – Катушка
В инвертирующей катушке (рисунок 8.7) состояние левой связи копируется в правую связь. Инвертированное состояние левой связи копируется в связанный логический фактический параметр. Если связь находится в состоянии OFF, тогда правая связь тоже будет находиться в состоянии OFF и связанный логический фактический параметр будет находиться в состоянии ON.
Рисунок 8.7 – Инвертирующая катушка
В катушке установки (рисунок 8.8) состояние левой связи копируется в правую связь. Связанный логический фактический параметр устанавливается в состояние ON, если левая связь имеет состояние ON, иначе он не изменяется. Связанный логический фактический параметр может сбрасываться только катушкой сброса.
Рисунок 8.8 – Катушка установки
В катушке сброса (рисунок 8.9) состояние левой связи копируется в правую связь. Связанный логический фактический параметр устанавливается в состояние OFF, если левая связь имеет состояние ON, иначе он не изменяется. Связанный логический фактический параметр может устанавливаться только катушкой установки.
Рисунок 8.9 – Катушка сброса
В катушке для определения положительных переходов (рисунок 8.10) состояние левой связи копируется в правую связь. Связанный фактический параметр типа данных BOOL будет установлен в состояние ON для цикла программы, если произошел переход левой связи из OFF в ON.
Рисунок 7810 – Катушка обнаружения передних фронтов
В катушке для определения отрицательных переходов (рисунок 8.11) состояние левой связи копируется в правую связь. Связанный фактический параметр типа данных BOOL будет установлен в состояние ON для цикла программы, если произошел переход левой связи из ON в OFF.
Рисунок 8.11 – Катушка обнаружения задних фронтов
Использование блоков FFB в языке LD.
FFB будут редактироваться, только если, по крайней мере, один булев вход соединен с левой шиной питания. Если FFB не имеет булева входа, должен использоваться EN вход FFB. Если FFB должен быть выполнен по условию, булев вход может быть предварительно соединен через контакты или другие FFB.
Каждый FFB без булевой связи с левой шиной питания вызовет сообщение об ошибках при загрузке в ПЛК. На рисунке 8.12 приведен пример использования FFB в языке LD.
Рисунок 8.12 – Использование блоков FFB в редакторе LD
Если при вызове FFB значение EN равно ”0”, алгоритмы, определенные FFB не будут выполняться. В этом случае, значение ENO автоматически устанавливается в ”0”.
Если при вызове FFB значение EN равно ”1”, алгоритмы, определенные FFB, будут выполнены. После того, как эти алгоритмы выполнились без ошибки, значение ENO автоматически устанавливается в ”1”. Если происходит ошибка во время выполнения этих алгоритмов, ENO будет установлен в ”0”.
Поведение выхода FFB не зависит от FFB, вызываемого без EN/ENO или с EN=1.
EFB AND_BOOL, NOT_BOOL, OR_BOOL, R_TRIG и F_TRIG недоступны в LD. Их функциональные возможности реализуются с помощью контактов. EFB MOVE не может использоваться с типом данных BOOL.
Фактические параметры. Когда программа выполняется, через фактические параметры пересылаются значения из процесса или от других фактических параметров до контакта или на вход FFB. После обработки эти значения перемещаются к фактическим параметрам катушек и выходов FFB. В контактах и катушках фактические параметры могут быть прямыми адресами, локализованными (размещенными) переменными или нелокализованными (неразмещенными) переменными. На входах/выходах FFB фактические параметры могут быть прямыми адресами, размещенными переменными, неразмещенными переменными, константами или литералами.
Для контактов и катушек типом данных фактического параметра должен быть тип данных BOOL. На входах/выходах FFB типы данных фактических параметров должны соответствовать типу данных ввода/вывода. Единственным исключением являются обобщенные входы/выходы FFB, где тип данных определяется формальным параметром.
Связь. Связями являются соединения между контактами, катушками и блоками FFB. Несколько связей могут быть соединены с контактом, катушкой или выходом FFB. Пункты любого такого соединения отмечаются жирной точкой.
Типы данных соединенных входов/выходов должны совпадать.
Связи могут быть отредактированы в режиме Select. Разрешается перекрытие другими объектами.
При размещении контактов и катушек горизонтальные связи автоматически связываются со смежными, несвязанными контактами или катушками, если контакты или катушки и входы/выходы FFB находятся на той же самой вертикали. Связь с шиной питания будет установлена, только если контакт помещен поблизости. Если катушка или контакт помещены на уже существующую горизонтальную связь, она будет автоматически разорвана, и контакт или катушка вставлены (это не применимо к команде Move). При размещении фактических параметров они могут накладываться на другой объект, но не нарушать рамки фрейма секции. Если соединение с другим объектом установлено через одну связь, эта связь будет проверена. Если соединение не разрешено, то появляется сообщение и связь не будет сгенерирована.
При удалении контактов или катушек любые присоединенные контакты или катушки будут также удалены. Те же самые условия используются здесь при их размещении.
Связи не могут использоваться для конфигурации контуров, потому что невозможно однозначно определите порядок обработки в секции. Контуры должны быть созданы с помощью фактических параметров.
Горизонтальные связи автоматически устанавливаются после размещения.
Частным случаем связи является вертикальная связь. Вертикальная связь используется как логическое ИЛИ. Эта форма связывания по ИЛИ позволяет связать 32 входа (контакта) и 64 выхода (катушек, связей).
Интерактивные функции. Редактор LD предлагает два режима анимации:
Эти режимы также доступны при отображении DFB-блока.
Режим анимации выбранных объектов отображает текущее сигнальное состояние выбранных контактов, катушек, связей, переменных, многоэлементных переменных и литералов в окне редактора и активизируется командой меню Online → Animate selected.
Если левая шина питания, контакт, катушка, связь красного цвета, то левая шина питания, контакт, катушка, связь (двоичная) соответственно имеют значение 0.
Если левая шина питания, контакт, катушка, связь зеленого цвета, то левая шина питания, контакт, катушка, связь (двоичная) соответственно имеют значение 1.
Связь желтого цвета передает многоэлементную переменную (отображение значений вызывается двойным щелчком: мыши по связи).
Переменная с желтым фоном – многоэлементная переменная (отображение значений с двойным щелчком на переменной).
Числовое значение на входе/выходе FFB (желтый фон) – текущее значение переменных.
Числовое значение на связи (желтый фон) – значение, в настоящее время передаваемое связью.
При выборе числового значения на входе/выходе FFB будут отображаться имя переменной, ее прямой адрес (если он имеется) и комментарий.
Выбранные объекты остаются выбранными даже после подачи другой команды Animate selected, чтобы поддержать эти объекты для будущего чтения или для простого изменения объектной распечатки.
Сигнальные состояния двоичных связей могут также отображаться с помощью команды Online → Animate booleans.
Пример 8.1. Решить задачу примера 7.1 на языке LD. Решение на языке LD представлено на рисунке 8.13, на рисунке 8.14 представлено окно редактора переменных.
Рисунок 8.13 – Решение на языке LD
Рисунок 8.14 – Окно редактора переменных
Языки программирования плк (plc) — Asutpp
Контролер – это управляющее устройство. Действительно функциональным он становится только тогда, когда вы создаете и запускаете программу по его использованию.
Отсюда вытекает главная задача программируемого логического контролера – исполнение программы, которая осуществляет руководство технологического процесса.
Какой набор программ доступен для ПЛК? В принципе любой набор возможен. Главное, чтобы размер свободных ресурсов, данного инструмента, вам был не помехой. Разработчик получает широкие возможности по написанию программ.
Что же необходимо, чтобы осуществить программирование контроллера? Во – первых нужен программист, который бы досконально разбирался в данном вопросе. Во – вторых необходим сам компьютер и конечно пакет разработки.
Функционал средств разработки
Обычно пакет разработки поставляется за дополнительную плату. Хотя в принципе часто встречается, что данный пакет уже изначально включен в программное обеспечение по инсталляции.
Какой функционал предлагает среда разработки?
- Большой набор библиотек, программные блоки, определенные процедуры и готовые шаблоны.
- Инструментарий для проверки, тестированию и запуску программы на компьютере минуя контроллер.
- Также предложен инструмент для автоматизации документирования программы, которая была создана, в пределах принятых стандартов.
И наконец необходимо отметить главное достоинство – это поддержка порядка шести языков программирования. Единственным недостатком является то, что совместимость программ реализована на низком уровне. Производители ПЛК не пришли к унификации и каждый выпускает, данное устройство, со своей программной средой.
Виды языков программирования для ПЛК
LD (Ladder) – это среда разработки, которая основана на графике. Своего рода, она представляет собой подобие релейной схемы. Разработчики данного стандарта считают, что использование такого вида программной среды существенно облегчает переобучение инженеров релейной автоматики на ПЛК.
К главным недостаткам, данного языка программирования, можно отнести неэффективность при обработке процессов с большим количеством аналоговых переменных, так как он построен для представления процессов с дискретным характером.
FBD ( Диаграмма Функциональных Блоков) – здесь также используется графическое программирование. Образно говоря, FBD определяет собой некую множественность функциональных блоков, которые имеют соединения между собой (вход и выход).
Данные связи являются переменными и выполняют пересылку между блоками. Каждый блок в отдельности может представлять определенную операцию( триггер, логическое “или” и т.д.). Переменные задаются с помощью определенных блоков, а цепи выхода могут иметь связи с конкретными выходами контроллера или связи с глобальными переменными.
SFC ( Sequential Function Chart) – может использоваться с языками ST и IL, он также основан на графике. Принцип его построения близок к образу конечного автомата, данное условие относит его к самым мощным языкам программирования.
Технологические процессы, в данном языке, построены по типу определенных шагов. Структура шагов состоит из вертикали, которая идет сверху вниз. Каждый шаг – это конкретные операции. Описать операцию можно не только с помощью SFC, но и с помощью ST и IL.
Как только шаг выполнен, то идет действие по передачи управления следующему шагу. Переход между шагами может быть двух видов. Если на шаге выполнено какое – то условие и дальнейшим действием является переход на следующий шаг, значит – это условный переход. В случае же, если происходит полное выполнение всех условий на данном шаге и только потом осуществляется переход на следующий шаг, то-это безусловный переход.
Недостатком SFC можно считать, что в процессе работы может быть активировано несколько шагов, не в параллельных потоках. Поэтому необходим глобальный контроль со стороны программиста.
ST ( Структурированный Текст) – относится к языкам высокого уровня и имеет много сходного с Pascal и Basic.
ST позволяет интерпретировать более шестнадцати типов данных и имеет возможность работать с логическими операциями, циклическими вычислениями и т.д.
Небольшим недостатком можно определить отсутствие графической среды. Программы представлены в виде текста и данное условие усложняет освоение технологии.
IL ( Список Команд) – язык подобен Ассемблеру, обычно используется для кодировки блоков по отдельности. Плюсом является то, что данные блоки имеют большую скорость работы и низкую требовательность к ресурсам.
CFC ( Continuous Flow Chart) – относится к языкам высокого уровня. В принципе – это явное продолжение языка FBD.
Процесс проектирования состоит из использования готовых блоков и размещения их на экране. Далее происходит их настройка и размещения соединений между ними.
Каждый блок – это управление определенным технологическим процессом. Здесь идет основной уклон на технологический процесс, математика уходит на второй план.
Пример программы на языке LD релейных диаграмм (гирлянда) — PLC
Пример программы на языке LD релейных диаграмм (гирлянда)
Январь 09, 2011 Arman
Условия задачи очень и очень просты. Программа управляет режимом работы 3-х цветной гирлянды, переключая цвета последовательно через заданный временной интервал.
Чему можно научиться: работа с языком LD, установка параллельно и последовательно реле и катушек, работа с функциональным блоком таймера задержки; использование цикла ПЛК в алгоритме программы; определение булевых и временных переменных; установка и сброс дискретных сигналов (S, R).
Оборудование, на котором предпочтительно реализовывать – программируемое реле (пример сделан в режиме эмуляции).

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

Раздел переменных

Кадры визуализации

Программа ПЛК

Программа ПЛК, запущенная на исполнение
Мой блог находят по следующим фразам
Языки программирования контроллеров. Особенности применения языков FBD, LD.
УДК 004.418
Ахмерова Алия Ниязовна – старший преподаватель кафедры Систем автоматизации и управления технологическими процессами Казанского национального исследовательского технологического университета.
Аннотация: В статье рассмотрены языки FBD и LD международного стандарта МЭК 61131 для программируемых логических контроллеров. Приведены факторы, влияющие на выбор языка программирования. Рассмотрена реализация программного кода одной и той же задачи на двух графических языка стандарта МЭК 61131 — LD и FBD в среде CoDeSys.
Ключевые слова: Программируемые логические контроллеры, стандарт МЭК-61131, FBD, LD, CoDeSys.
Современные ПЛК (программируемые логические контроллеры) являются ключевым элементом системы управления объектом. Для создания пользовательской программы, задающей алгоритм работы ПЛК, используются специальные языки программирования, регламентированные стандартом МЭК 61131. Так же существуют международный стандарт IEC 61131 и соответствующий европейский стандарт EN 61131. Сам стандарт включает в себя как общие понятия, которые уже применяются при программировании ПЛК, так и дополнительные новые методы программирования, а так же определяет архитектуру, параметры аппаратных средств, организацию коммуникационной подсистемы [1].
МЭК 61131 представляет собой международный стандарт, состоящий из 9 частей, для программируемых контроллеров и связанных с ними периферийных устройств.
В разделе МЭК 61131-3 «Контроллеры программируемые. Часть 3. Языки программирования» приводится описание синтаксиса и обозначений пяти регламентированных языков программирования логических контроллеров: FBD (диаграммы функциональных блоков), LD (релейно-контактные схемы или релейные диаграммы) ST (структурированный текст), IL (список инструкций), SFC (последовательные функциональные схемы).
МЭК 61131-3 является скорее руководством для программирования ПЛК, а не жестким набором правил, которые необходимо неукоснительно соблюдать.
Благодаря наличию нескольких текстовых и нескольких графических языков, пользователь может выбрать наиболее удобный для него язык. На выбор так же влияет специфика решаемой задачи.
На сегодняшний день существуют различные инструментальные среды разработки программ для контроллеров. К инструментальным средам программирования на языках МЭК 61131-3 относятся: ISaGRAF, CoDeSys, MULTIPROG, SIMATIC STEP 7, OpenPCS, SOFTLOGIC, Concept и др.
Рассмотрим особенности применения базовых языков программирования FBD и LD в среде CoDeSys.
LD – «релейные диаграммы» – графический язык, в основе которого лежат принципы работы релейно-контактных схем с возможностью использования различных функциональных блоков при подключении соответствующих библиотек. Язык LD использует жесткую логику, т.е. принимает только два значения «ложь» и «истина», где 0 – «ложь», а 1 – «истина». Символика языка была заимствована из проектирования в области электротехники.
Объектами языка программирования LD являются контакты, катушки и FFB (функции и функциональный блоки), с помощью которых задается структура секции ПЛК. Эти объекты взаимосвязаны через фактические параметры или связи.
Внешний вид LD-секции представлен в виде ступеней. На рисунке 1 приведен фрагмент программы управления освещением в помещении в редакторе LD в CoDeSys.
Рисунок 1. Фрагмент программы в редакторе LD.
Вертикальная линия слева в рабочей области представляет собой «провод с высоким потенциалом», а вертикальная линия справа – «нулевой провод». Между ними располагаются горизонтальные линии, именуемые контактными цепями. Слева по горизонтальным линиям располагаются «коммутаторы электрического тока», соответствующие входным переменным логического типа и дискретным входам. Справа располагаются «потребители электрического тока», соответствующие выходным переменным логического типа и дискретным выходам [3].
Как видно из рисунка 1, язык релейно-контактных схем идеален для простых программ, описывающих дискретную логику. В частности, перемещение объектов. Но для обработки «непрерывных» процессов с множеством аналоговых переменных язык LD не подходит.
В данном случае дискретные входы содержат информацию, поступающую с датчиков, т.е. текущие условия, базовая программа анализирует эти входы и подает соответствующие сигналы на выходы. В редакторе LD могут быть использованы таймеры, счетчики, детекторы передних фронтов, некоторые базовые сравнения или математические операции, но нет возможности использовать сложные функции, к которым можно отнести ПИД-регулирование, тригонометрия, анализ данных, сохраняя при этом читаемость и компактность кода программы, а так же парадигму легкой визуализации.
Другим недостатком является то, что по мере роста объема программного кода, становится сложно читать и интерпретировать сам код из чего следует, что реализация процесса управления от и до на языке релейно-контактных схем — трудная задача [2].
На рисунке 2 приведен фрагмент программы управления освещением в помещении, реализованной уже в редакторе FBD.
Рисунок 2. Фрагмент программы в редакторе FBD.
Язык FBD – «язык функциональных блок-схем» – графический язык программирования, созданный для описания процессов прохождения сигналов и обеспечивающий управление потоками данных всех типов.
Язык FBD похож на электрические схемы, поэтому удобен для не имеющих опыта логического программирования инженеров-схемотехников, которые могут с легкостью составить электрическую схему системы управления на базе «жесткой логики». FBD подходит для управления непрерывными процессами и процессами регулирования.
При программировании на данном языке применяются наборы стандартных библиотек, а так же могут быть использованы собственные функциональные блоки, написанные на языке FBD, на других языках стандарта МЭК 61131-3 или же на языке С. Подобные блоки могут быть многократно использованы в разных частях программы. FBD заимствует символику булевой алгебры.
К преимуществам языка FBD относятся простота создания, наглядность, четкая последовательность, легкая структура команд, надежный и быстрый код. Язык FBD использует такие же команды, как и LD, но сама схема визуально более понятна пользователю, не обладающему знаниями релейной логики.
Язык функциональных блок-схем идеально подходит для создания простых пользовательских программ с использованием цифровых входов и выходов, может применяться в любых приложениях наряду с языком релейных диаграмм или вместо него.
Но при реализации сложной задачи с применением специальных входов и функций программный код может разрастись, включив в себя большое число секций, и, таким образом, потерять свою наглядность.
Также при создании программы на языке FBD требуется предварительная проработка программы в виде четкого прописывания алгоритма работы перед тем, как начать писать код, так как потом будет достаточно сложно внести изменения [2].
Вывод: Каждый из выше рассмотренных языков имеет свои достоинства и недостатки. Если необходимо решить задачу с применением цифровых входов/выходов или же реализовать алгоритм управления для базовых процессов, то подходят оба языка. В то же время LD обеспечивает легкость смены кода впоследствии, в отличие от FBD. Последний, в свою очередь, подходит для работы с непрерывными процессами.
Список литературы
- И.В. Елькин, П.В. Кустарев, Научно-технический вестник,4, 55-62 (2003).
- Понимание языков программирования IEC61131-3: [Электронный ресурс] / – Режим доступа: https://www.proasutp.com/articles/plc/understanding _the_iec61131_3_programming_languages.html), свободный.
- А.А. Игонин, А.Н. Крючков, В.Н. Илюхин, А.Г. Гимадиев Лабораторный практикум по программируемым логическим контроллерам / А.А. Игонин, – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2011. — 75 с.
Интересная статья? Поделись ей с другими:
ЛАБОРАТОРНАЯ РАБОТА №2 ПОСТРОЕНИЕ СИСТЕМ ЛОГИЧЕСКОГО УПРАВЛЕНИЯ НА ЯЗЫКЕ LD (LADDER DIAGRAM)
Цель работы:Знакомство со структурой проекта на языке LD, создание анимационной таблицы, разработка операторского экрана (экрана реального времени).
Основные теоретические сведения
Язык программирования LD (релейно – контактных схем) является графическим языком программирования контроллеров. Редактор LD используется для программирования лестничных диаграмм, в соответствии со стандартом MЭК 61131-3.
Рисунок 2.1 Редактор языка LD в Unity Pro
Структура программы LD соответствует ступени переключения реле. Левая шина питания расположена в левой части редактора LD. Левая шина питания соответствует фазе (L проводник) ступени. При программировании LD, также как для ступени, «обрабатываются» только те объекты LD, которые соединены с источником питания, т.е. соединены с левой шиной питания. Правая шина питания соответствует нейтральному проводу.
Свойства программы LD:
1. Секция LD содержит 11-64 столбцов и 17-2000 строк.
2. Программы LD являются ориентированными на ячейки, т.е. только один объект может быть помещен в одну ячейку.
3.Последовательность обработки отдельных объектов в программе LD определена потоком данных в пределах секции. Сети, подключенные к левой шине питания, обрабатываются сверху вниз. Отдельные сети внутри секции обрабатываются в порядке их расположения (сверху вниз).
4. Проверка синтаксиса и семантики выполняется сразу после ввода оператора. Результат проверки отображается цветным текстом и объектами.
5. Синтаксически или семантически неверные секции могут быть сохранены.
Таблица 2.1 Условные обозначения элементов языка LD
Пример решения задачи на языке LD
Необходимо запрограммировать кнопку, при нажатии которой, будет загораться индикатор.
Решение данной задачи можно разделить на несколько этапов:
1. Создание таблицы переменных.
2. Разработка программы в редакторе LD.
3. Создание анимационной таблицы.
4. Разработка операторского экрана (экрана реального времени).
1 шаг. Создается новый проект в среде программирования Unity Pro, на следующем этапе, конфигурируется ПЛК (лабораторная работа 1).
2 шаг.В браузере проекта, в разделе Program Section необходимо создать новую секцию на языке LD.
3 шаг. Далее в разделе Variables & FB Instances Elementary Variables создается таблица переменных. Для данной задачи она будет выглядеть следующим образом:
4 шаг.В редакторе LD собирается схема. Основными элементами которой будет нормально открытый контакт и катушка.
5 шаг. Необходимо создать анимационную таблицу, которая показывает текущее состояние переменной.
Доступ к анимационной таблице можно получить несколькими способами. Первым способом можно с помощью нажатия левой кнопки мыши выделить все элементы релейно-контактной схемы в редакторе LD и в раскрывшемся контекстном меню выбрать раздел Initialize Animation Table.
Вторым способом можно открыть анимационную таблицу через браузер проекта. В разделе Animation Table New Animation Table.
6 шаг. На данном этапе осуществляется разработка экрана оператора. Для этого необходимо в браузере проекта найти раздел Operator Screens, нажать правой кнопкой мыши и в раскрывшемся контекстном меню выбрать вкладку New Screen. Далее на панели инструментов выбрать кнопку Push button и разместить в рабочем поле редактора. Двойным щелчком мыши раскрыть элемент для подключения переменной. В разделе Control Variable вставить раннее созданную переменную kn (рисунок 2).Далее в разделе Сontrol element style поставить галочку на функции With Latching. Название кнопки можно подписать в окне Text . Необходимо переключить вкладку на Animation, далее поставить галочку в разделе Animated Object (рисунок 2.3).
Рисунок 2.2 Программирование свойств объекта Push Button
Рисунок 2.3 Подключение анимации к объекту Push Button
Аналогичным образом осуществляется программирование индикатора. Его можно создать с помощью элемента Ellipse на панели инструментов. Растянуть в рабочем поле до необходимых размеров, внутри задать цвет линий, заливки и подключить переменную ind, при этом выставив бит на 1.
7 шаг. Данный этап заключается в отладке программы, построении приложения для проверки наличия ошибок. Эта операция осуществляется с помощью кнопки Build на панели инструментов. В случае, если после анализа не обнаружены ошибки необходимо установить соединение с контроллером в режиме эмулятора. Для этого нажать на кнопку Simulation Mode Connect Transfer Project to PLC. Итоговая программа показана на рисунке 2.4. Управление можно осуществлять как через операторский экран, при этом при нажатии кнопки kn будет загораться индикатор, так и через окно редактора языка LD присвоив значение 1 нормально открытому контакту kn. Данную операцию можно осуществить нажав правой кнопкой мыши на контакт и в раскрывшемся меню выбрать раздел Set value Set to 1. При этом в анимационной таблице поменяется значение переменных kn и ind с 0 на 1 .
Рисунок 2.4 Результат работы программы в среде программирования Unity Pro.
Пример работы комибинированной программы на языке LD c использованием функционального блока
Необходимо разработать программу по управлению режимом работы трехцветной гирлянды, осуществляя переключение цветов в заданный интервал времени.
1 шаг.В новом проекте создается секция на языке LD, для установки заданного интервала времени, необходимо использовать функциональный блок таймер, доступ к которому можно осуществить через функцию FFB Input Assistant. Для этого необходимо нажать правой кнопкой мыши на рабочем поле редактора LD и выбрать соответсвующий раздел контектсного меню, другой вариант возможен благодаря панели инструментов, на которой есть пиктограмма с данной функцией или при нажатии комбинации клавиш Ctrl+I.
Рисунок 2.5 Доступ к помощнику по работе с функциональными блоками FFB Input Assistant
Далее появится окно, в котором необходимо выбрать нужный функциональный блок. Если разработчик программы знает его название заранее, то он может его вписать в первую графу FFB type, в нашем случае необходим счетчик TON, в противном случае пользователь может зайти в библиотеку функциональных блоков и выбрать необходимый, нажав на кнопку с тремя точками, которая расположена справа от окна ввода. Ниже описаны входы и выходы функционального блока, а так же их тип. После осуществления данной операции нажимаем OK, подтверждая выбранный блок.
Рисунок 2.6 Выбор функционального блока
2 шаг. Необходимо создать программу в рабочем поле LD. Контакты, которые отвечают за запуск цикла устанавливаются согласно логике программы, при этом их необходимо подключить к таймеру, который будет обеспечивать задержку появления цвета в несколько секунд. Программа показана на рисунке 2.7.
Рисунок 2.7 Программа по переключению цветов гирлянды
3 шаг. Необходимо создать анимационную таблицу, для отслеживания текущего состояния переменных, а так же управления элементами.
4 шаг.Операторский экран демонстрирует цветовое переключение гирлянды в интервале 2 секунды.Так женеобходимо разместить кнопки по запуску работы механизма на экране (рисунок 2.8). Элементы гирлянды создаются с помощью фигуры Elipse на панели инструментов редактора.
Рисунок 2.8 Операторский экран программы по управлению трех цветной гирляндой
Рисунок 2.9 Результат работы программы по управлению трехцветной гирляндой
2.4 Порядок выполнения лабораторной работы №2. Решение задач на языке LD.
Очень часто в системах автоматики необходимо организовать пуск и стоп с помощью кнопок без фиксации, т.е. организовать самоблокировку выхода. Примеры некоторых из них приведены ниже.
Задача 1Самоблокировка выхода с приоритетом «Стоп».
При нажатии кнопки start, сигнал проходит через нормально замкнутую кнопку stop и вызывает замыкание катушки ind (индикатор), при этом замыкается связанный входной контакт ind. При нажатии кнопки stop цепь разомкнется и катушка (выход) ind отключится. Поэтому данную схему называют приоритетом Стопа.
Задача 2Самоблокировка выхода с приоритетом «Старт».
При нажатии кнопки start, сигнал проходит через нормально замкнутую кнопку stop и вызывает замыкание катушки ind. При этом замыкается связанный входной контакт ind. При нажатии кнопки stop цепь не разомкнется и катушка (выход) ind останется включенной. Поэтому данную схему называют приоритетом «Старта».
Необходимо реализовать данные задачи в программе Unity Pro.
Cхема логического управления для задачи 1 на языке LD:
Cхема логического управления для задачи 2 на языке LD:
2.5 Оформление отчета по результатам выполненных работ. Отчет должен включать:
— Решение задачи 1,2.
— Пояснения к каждому пункту задания.
— Выводы по результатам практикума.
— Пакет прикладных программ с результатами работы.
Литература. 2 осн. [1- 6]
2.6 Контрольные вопросы
1. Охарактеризуйте язык лестничной диаграммы LD.
2. Что такое катушка в языке LD?
3. Что такое контакт в языке LD?
4. Для чего служат связи? Какие связи различают в языке LD?
ЛАБОРАТОРНАЯ РАБОТА №3 РАЗРАБОТКА ПРОЕКТА НА ЯЗЫКЕ FBD (FUNCTION BLOCK DIAGRAM)
Цель работы:Знакомство со структурой проекта на языке FBD. Работа с основными функциональными блоками, понятиями и определениями. Получение навыков разработки приложений на языке функциональных блоков.
Главная Информация Основные языки программирования контроллеров PLCОсновные языки программирования контроллеров PLC
Главная задача ПЛК – это выполнение прикладной программы управления технологическим процессом. Очевидно, что незапрограммированный контроллер – это всего лишь пустая железяка, не приносящая никакой пользы человечеству.
Какие программы может выполнять промышленный контроллер? Ответ прост: практически любые. Современный контроллер свободно программируем, т.е. предоставляет разработчику возможность создавать пользовательские программы произвольной структуры без ограничений их функциональности, будь то программа управления пастеризатором на молочном комбинате или управление колонной ректификации на НПЗ. По сути, единственным ограничением здесь может быть объем свободных ресурсов контроллера.
Что нужно, чтобы запрограммировать ПЛК? Грамотный специалист. Во-вторых, персональный компьютер или портативный программатор, подключенный к контроллеру по сети. В-третьих, программный пакет разработки, поставляемый, как правило, за дополнительную плату. Иногда среда разработки входит в состав комплексного ПО для инсталляции и эксплуатации всей системы управления.
Современные средства разработки чрезвычайно функциональны и предлагают разработчику множество возможностей:
1. Разнообразные программные библиотеки, функциональные блоки, готовые процедуры и шаблоны. Использование предподготовленных компонентов сильно ускоряет процесс разработки программного обеспечения для ПЛК.
2. Инструменты для отладки, тестирования и симуляции прикладной программы. Последние позволяют выполнять программу ПЛК на персональном компьютере без загрузки в реальный контроллер.
3. Инструменты для автоматизированного документирования разработанной программы в соответствие с принятыми стандартами.
Но у программиста есть и более мощный инструмент. Дело в том, что современные средства разработки прикладного ПО для промышленных контроллеров, как правило, поддерживают до шести разных языков программирования.
Существует международный стандарт IEC 61131, разработанный Международной Электротехнической Комиссией (МЭК, IEC) и состоящий из восьми частей. Наиболее интересной является третья часть, IEC 61131-3, описывающая языки программирования ПЛК. Первоначальной целью стандарта IEC 61131-3 была унификация языков программирования ПЛК и предоставление разработчикам ряда аппаратно-независимых языков, что, по замыслу создателей стандарта, обеспечило бы простую переносимость программ между различными аппаратными платформами и снимало бы необходимость изучения новых языков и средств программирования при переходе разработчика на новый ПЛК.
К сожалению, цели в полном объеме достигнуты не были. Каждый производитель ПЛК сопровождает свой продукт собственной средой программирования, которая, как правило, не совместима с другими, да и о кросс-платформенности программного кода можно забыть. Тем не менее, в части описания языков программирования стандарт IEC 61131 остается чрезвычайно актуальным и является ориентиром для большинства разработчиков ПЛК.
Какие языки используются для программирования промышленных контроллеров? Ниже приведен краткий обзор языков стандарта.
Язык LD
Язык LD (LAD, Ladder) является графическим языком разработки, программа на котором представляет собой аналог релейной схемы. Пример программы на данном языке приведен на рис. 1. По идеи авторов стандарта, такая форма представления программы облегчит переход инженеров из области релейной автоматики на ПЛК.
К недостаткам данного языка можно отнести то, что по мере увеличения количества «реле» в схеме она становится сложнее для интерпретации, анализа и откладки. Еще один недостаток языка LD заключается в следующем: язык, построенный по аналогии с релейными схемами, может быть эффективно использован только для описания процессов, имеющих дискретный (двоичный) характер; для обработки «непрерывных» процессов (с множеством аналоговых переменных) такой подход теряет смысл.
Рис. 1. Язык релейных диаграмм LD.
Язык FBD
Язык FBD (Functional Block Diagram, Диаграмма Функциональных Блоков) является языком графического программирования, так же, как и LD, использующий аналогию с электрической (электронной) схемой. Программа на языке FBD представляет собой совокупность функциональных блоков (functional flocks, FBs), входа и выхода которых соединены линиями связи (connections). Эти связи, соединяющие выхода одних блоков с входами других, являются по сути дела переменными программы и служат для пересылки данных между блоками. Каждый блок представляет собой математическую операцию (сложение, умножение, триггер, логическое “или” и т.д.) и может иметь, в общем случае, произвольное количество входов и выходов. Начальные значения переменных задаются с помощью специальных блоков – входов или констант, выходные цепи могут быть связаны либо с физическими выходами контроллера, либо с глобальными переменными программы. Пример фрагмента программы на языке FBD приведен на рис. 2.
Практика показывает, что FBD является наиболее распространенным языком стандарта IEC. Графическая форма представления алгоритма, простота в использовании, повторное использование функциональных диаграмм и библиотеки функциональных блоков делают язык FBD незаменимым при разработке программного обеспечения ПЛК. Вместе с тем, нельзя не заметить и некоторые недостатки FBD. Хотя FBD обеспечивает легкое представление функций обработки как «непрерывных» сигналов, в частности, функций регулирования, так и логических функций, в нем неудобным и неочевидным образом реализуются те участки программы, которые было бы удобно представить в виде конечного автомата.
Рис.2. Функциональная схема FBD.
Язык SFC
Язык последовательных функциональных схем SFC (Sequential Function Chart), использующийся совместно с другими языками (обычно с ST и IL), является графическим языком, в котором программа описывается в виде схематической последовательности шагов, объединенных переходами. Язык SFC построен по принципу, близкому к концепции конечного автомата, что делает его одним из самых мощных языков программирования стандарта IEC 61131-3. Пример программы на языке SFC приведен на рис. 3.
Наиболее простым и естественным образом на языке SFC описываются технологические процессы, состоящие из последовательно выполняемых шагов, с возможностью описания нескольких параллельно выполняющихся процессов, для чего в языке имеются специальные символы разветвления и слияния потоков (дивергенции и конвергенции, в терминах стандарта IEC 61131-3).
Шаги последовательности располагаются вертикально сверху вниз. На каждом шаге выполняется определенный перечень действий (операций). При этом для описания самой операции используются другие языки программирования, такие как IL или ST.
Действия (операции) в шагах имеют специальные классификаторы, определяющие способ их выполнения внутри шага: циклическое выполнение, однократное выполнение, однократное выполнение при входе в шаг и т.д. В сумме таких классификаторов насчитывается девять, причем среди них есть, например, классификаторы так называемых сохраняемых и отложенных действий, заставляющие действие выполняться даже после выхода программы из шага.
После того, как шаг выполнен, управление передается следующему за ним шагу. Переход между шагами может быть условным и безусловным. Условный переход требует выполнение определенного логического условия для передачи управления на следующий шаг; пока это условие не выполнено программа будет оставаться внутри текущего шага, даже если все операции внутри шага уже выполнены. Безусловный переход происходит всегда после полного выполнения всех операций на данном шаге. С помощью переходов можно осуществлять разделение и слияние ветвей последовательности, организовать параллельную обработку нескольких ветвей или заставить одну выполненную ветвь ждать завершения другой.
Как и любому другому языку, SFC свойственны некоторые недостатки. Хотя SFC может быть использован для моделирования конечных автоматов, его программная модель не совсем удобна для этого. Это связано с тем, что текущее состояние программы определяется не переменной состояния, а набором флагов активности каждого шага, в связи с чем при недостаточном контроле со стороны программиста могут оказаться одновременно активными несколько шагов, не находящихся в параллельных потоках.
Еще одно неудобство языка связано с тем, что шаги графически располагаются сверху вниз, и переход, идущий в обратном направлении, изображается в неявной форме, в виде стрелки с номером состояния, в которое осуществляется переход.
Рис. 3. Язык последовательных функциональных схем SFC.
Язык ST
Язык ST (Structured Text, Структурированный Текст) представляет собой язык высокого уровня, имеющий черты языков Pascal и Basic. Данный язык имеет те же недостатки, что и IL, однако они выражены в меньшей степени. Пример программы на языке ST приведен на рис. 4.
С помощью ST можно легко реализовывать арифметические и логические операции (в том числе, побитовые), безусловные и условные переходы, циклические вычисления; возможно использование как библиотечных, так и пользовательских функций. Язык также интерпретирует более 16 типов данных.
Язык ST может быть освоен технологом за короткий срок, однако текстовая форма представления программ служит сдерживающим фактором при разработке сложных систем, так как не дает наглядного представления ни о структуре программы, ни о происходящих в ней процессах.
Рис. 4. Язык структурированного текста ST.
Язык IL
Язык IL (Instruction List, Список Команд) представляет собой ассемблероподобный язык, достаточно несложный по замыслу авторов стандарта, для его практического применения в задачах промышленной автоматизации пользователем, не имеющим, с одной стороны, профессиональной подготовки в области программирования, с другой стороны, являющимся специалистом в той или иной области производства. Однако, как показывает практика, такой подход себя не оправдывает.
Ввиду своей ненаглядности, IL практически не используется для программирования комплексных алгоритмов автоматизированного управления, но часто применяется для кодирования отдельных функциональных блоков, из которых впоследствии складываются схемы FBD или CFC. При этом IL позволяет достичь высокой оптимальности кода: программные блоки, написанные на IL, имеют высокую скорость исполнения и наименее требовательны к ресурсам контроллера.
Язык IL имеет все недостатки, которые присущи другим низкоуровневым языкам программирования: сложность и высокую трудоемкость программирования, трудность модификации написанных на нем программ, малую степень «видимого» соответствия исходного текста программы и решаемой задачи.
Пример программы на языке IL приведен на рис. 5.
Рис. 5. Язык инструкций IL.
Многие производители инструментальных средств, опирающиеся на стандарт IEC, не ограничиваются поддержкой рассмотренных выше пяти языков стандарта. Можно выделить, как минимум, еще один язык визуального программирования, который довольно популярен среди разработчиков.
Язык CFC
Язык CFC (Continuous Flow Chart) – еще один высокоуровневый язык визуального программирования. По сути, CFC – это дальнейшее развития языка FBD. Этот язык был специально создан для проектирования систем управления непрерывными технологическими процессами.
Проектирование сводится к выбору из библиотек готовых функциональных блоков, их позиционированию на экране, установке соединений между их входами и выходами, а также настройке параметров выбранных блоков. В отличие от FBD, функциональные блоки языка CFC выполняют не только простые математические операции, а ориентированы на управление целыми технологическими единицами. Так в типовой библиотеке CFC блоков находятся комплексные функциональные блоки, реализующие управление клапанами, моторами, насосами; блоки, генерирующие аварийные сигнализации; блоки PID-регулирования и т.д. Вместе с тем доступны и стандартные блоки FBD. Унаследовав от FBD саму концепцию программирования, язык CFC в наибольшей степени ориентирован на сам технологический процесс, позволяя разработчику абстрагироваться от сложного математического аппарата.
Рис. 6. Среда проектирования на языке CFC системы Simatic PCS7.
CFC прост в освоении, и при этом позволяет разрабатывать сложнейшие алгоритмы автоматизированного управления без каких-либо специфических знаний других языков программирования.
Казанцев Андрей
Наверх