Язык релейных диаграмм LD и его применение


Руководство пользователя

Название Руководство пользователя
страница 30/49
Дата публикации 23.03.2013
Размер 4.58 Mb.
Тип Руководство пользователя

userdocs.ru > Информатика > Руководство пользователя

B.6Язык релейных диаграмм (LD)

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

Правая вертикальная силовая шина

Горизонтальная линия связи

Вертикальная линия связи

Множественные линии соединения (все соединенные вместе)

Контакт связанный с переменной

Виток связанный с переменной

B.6.1Силовые рельсы и соединительные линии

LD диаграмма ограничена справа и слева вертикальными линиями, которые называются левым силовым рельсом и правым силовым рельсом соответственно.

Символы LD диаграммы связаны с силовыми рельсами и другими символами при помощи соединительных линий. Соединительные линии могут быть горизонтальными или вертикальными.

Каждый отрезок линии имеет состояние ^ TRUE или FALSE . Отрезки, соединенные напрямую имеют одно и то же булевское состояние. Любая горизонтальна линия, соединенная с левым вертикальным рельсом имеет состояние TRUE.
^

B.6.2Множественные соединения

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

^ Левое множественное соединение объединяет более чем одну горизонтальную линию, соединенную с вертикальной линией и одну горизонтальную линию подходящую с правой стороны. Булевское состояние правого конца — это логическое ИЛИ(OR) всех левых концов.

(* Пример множественного левого соединения*)

(* состояние правого конца (v1 OR v2 OR v3) *)

^ Правое множественное соединение объединяет одну горизонтальную линию, соединенную с вертикальной линией с левой стороны и более чем одну горизонтальную линию подходящую с правой стороны. Булевское состояние левого конца распространяется на все правые концы.
(* Пример множественного ПРАВОГО соединения*)

output2 := input1;
^ Множественное соединение слева и справа объединяет более чем одну горизонтальную линию соединенную с вертикальной линией с левой стороны и более чем одну горизонтальную линию подходящую с правой стороны. Булевское состояние каждого правого конца — это логическое ИЛИ(OR) всех левых концов.
(*Пример множественного ЛЕВОГО и ПРАВОГО соединения *)

output1 := input1 OR input2;

output2 := input1 OR input2;

output3 := input1 OR input2;
^

B.6.3Основные контакты и витки языка LD

Для представления контактов используются символы:

— Контакт с определением фронта
Для представления витков используются символы:

— Виток с определением фронта
Имя переменной пишется над этими графическими символами:

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

Состояние линии соединения на правом конце — это логическое И(AND) состояния левого конца и значения переменной контакта.
(* Пример использования ПРЯМЫХ *)

output1 := input1 AND input2;

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

Состояние линии соединения на правом конце — это логическое И(AND) состояния левого конца и отрицания значения переменной контакта.
(* Пример использования ИНВЕРТИРОВАННЫХ контактов*)

output1 := NOT (input1) AND NOT (input2);
Контакт с определением переднего фронта

Этот контакт позволяет производить логические операции между состоянием линии и логической переменной.

Состояние линии соединения на правом конце принимает значение TRUE, когда значение на левом конце — TRUE и значения переменной контакта меняется с FALSE на TRUE. Во всех остальных случаях оно устанавливается равным FALSE.
(* Пример использования контактов ПЕРЕДНЕГО ФРОНТА*)

output1 := input1 AND (input2 AND NOT (input2prev));

(* input2prev — значение input2 на предыдущем цикле *)

Контакт с определением заднего фронта

Этот контакт позволяет производить логические операции между состоянием линии и логической переменной.

Состояние линии соединения на правом конце принимает значение TRUE когда значение на левом конце — TRUE и значения переменной контакта меняется с TRUE на FALSE. Во всех остальных случаях оно устанавливается равным FALSE.

output1 := input1 AND (NOT (input2) AND input2prev);

(* input2prev — значение input2 на предыдущем цикле *)

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

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

Соответствующее имя может быть именем программы (только для подпрограмм). Это соответствует присвоению возвращаемой величины подпрограммы.

Инвертированный виток дает логический выход отрицания состояния линии соединения.

Переменной витка приписывается отрицание значение состояния левой линии соединения. Состояние левого соединения распространяется на правое соединение. Правое соединение может быть связано с правым вертикальным силовым рельсом.

Соответствующая логическая переменная должна быть выходом или внутренней.

Соответствующее имя может быть именем программы (только для подпрограмм). Это соответствует присвоению возвращаемой величины подпрограммы.

output1 := NOT (input1);

SET виток дает логический выход состояния линии соединения.

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

Соответствующая логическая переменная должна быть выходной или внутренней.

RESET виток дает логический выход состояния линии соединения.

Соответствующая переменная принимает значение FALSE, когда состояние левой линии связи становится равным TRUE. Переменная удерживает это состояние до тех пор, пока она не будет инвертирована витком SET. Состояние левого соединения распространяется на правое соединение. Правое соединение может быть связано с правым вертикальным силовым рельсом.

Соответствующая логическая переменная должна быть выходной или внутренней.

Виток с определением переднего фронта

“Положительный” виток дает логический выход состояния линии соединения. Этот тип витка имеется только в “быстром” релейном редакторе (Quick ladder).

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

Соответствующая логическая переменная должна быть выходной или внутренней.

IF (input1 and NOT(input1prev)) THEN

(* input1prev — значение input1 на предыдущем цикле *)

Виток с определением заднего фронта

“Отрицательный” виток дает логический выход состояния линии соединения. Этот тип витка имеется только в “быстром” релейном редакторе (Quick ladder).

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

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

IF (NOT(input1) and input1prev) THEN

(* input2prev — значение input2 на предыдущем цикле *)
^

B.6.4Оператор RETURN

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

Если левый конец линии соединения имеет состояние TRUE, то программы завершается, не выполняя уравнения введенные в следующих строках программы.

Замечание: Если LD программа — это подпрограмма, то ее имя должно быть связано с выходным витком, чтобы установить возвращаемое значение.

If Not (manual_mode) Then RETURN; End_if;

result := (input1 OR input3) AND input2;
^

B.6.5Прыжки и метки

Метки, условные и безусловные прыжки, могут быть использованы для управления выполнением диаграммы. Никаких символов к правому концу символа метки и прыжка подключать нельзя. Используются следующие обозначения:
>>LAB прыжок на метку «LAB»

LAB: определение метки «LAB»
Если линия связи слева от символа прыжка находится в состоянии TRUE , исполнение программы переходит на соответствующую метку.

OTHER: ld input2

END: (* конец программы *)
^

B.6.6Блоки в LD

Используя Быстрый LD редактор, вы подключаете функциональные блоки к логическим линиям. Функция, в действительности, может быть оператором, функциональным блоком или функцией. Так как блоки не всегда имеют логические входы и/или логические выходы, введение блоков в LD диаграммы приводит к добавлению нескольких новых параметров EN, ENO в интерфейс блока. Параметры EN, ENO не добавляются, если вы используете FBD/LD редактор, и вы можете подключить переменные требуемого типа.

В некоторых операторах, функциях или функциональных блоках первый вход не булевский. Так как первый вход всегда должен быть подключен к шине, на первую позицию автоматически вводится другой вход, называемый “EN”. Блок выполняется только тогда, когда вход EN равен TRUE. Ниже представлен пример оператора сравнения и эквивалентный код на ST:

IF rung_state THEN

q := (value1 > value 2);

(* продолжить шину с состоянием q *)

Выход «ENO»

В некоторых операторах, функциях или функциональных блоках первый выход не булевский. Так как первый выход всегда должен быть подключен к шине, на первую позицию автоматически вводится другой выход, называемый “ENO”. Выход ENO всегда имеет то же значение, что и первый вход блока. Ниже представлен пример функционального блока AVERAGE и эквивалентный код на ST:

AVERAGE(rung_state, Signal, 100);

(* продолжить шину с состоянием eno*)

параметры «EN» и «ENO»

В некоторых случаях требуются EN и ENO. Ниже представлен пример с арифметическим оператором и эквивалентный код на ST:

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Язык лестничной (релейной) логики в ПЛК: что это и как программировать

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

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

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

Эта лестничная логическая диаграмма имеет три ступени. Программа «сканируется» или запускается процессором слева направо и сверху вниз. Символы, размещенные во всех ступеньках, на самом деле являются графическими инструкциями. Имена этих инструкций:

  • XIC (проверяем, если замкнуто)
  • XIO (проверяем, если разомкнуто)
  • OTE (выход активируется)

Посмотрите на первую ступеньку, обратите внимание на первые два входа I: 1/1 и I: 1/2. Символ имеет состояние XIC, а I обозначает, что это вход. Эта инструкция представляет физический вход, имеющийся на одной из плат дискретного ввода. I: 1 означает, что эта входная плата помещена в слот 1, непосредственно рядом с процессором. / 1 указывает интересующий бит. Входные платы имеют более одного канала, и если инструкция указывает / 1, то эта инструкция обращается к каналу 1.

Второй вход представляет канал 2 на той же плате. Инструкция XIC означает true (истина), если контакт замкнут. То есть, эта инструкция будет истинна, если контакт устройства ввода, которое оно представляет, будет замкнут. Если инструкция истинна, она подсвечивается зеленым цветом. Единственный способ подачи напряжения на выход – это путь истинных инструкций, который можно проследить от левой стороны лестницы до правой. Следовательно, вывод на ступеньке будет истинным, потому что существует путь истинных инструкций I: 1/1 и I: 1/2. Это фактически операция «И». Выход в этом случае B: 0/1, фактически является внутренним битом, хранящимся в памяти ПЛК. Вот почему для «вывода» он помечен B вместо O. Эти внутренние биты отлично работают, когда требуется реализовать определенное состояние или набор входов без фактического включения физического выхода.

На второй ступени мы имеем третий вход, обозначенный I: 1/3, и наш внутренний бит теперь используется с вводной инструкцией вместо вывода.

Эти два входа расположены параллельно и представляют собой условие «ИЛИ». O: 2/1 – это выходная инструкция, которая представляет канал 1 на физической плате дискретного вывода, помещенной в слот 2. Эта вторая ступень может быть перезаписана без внутреннего бита, заменив B: 0/1 двумя входами из очереди. Таким образом, вывод O: 2/1 будет истинным, если I: 1/3 истинно ИЛИ если оба I: 1/1 И I: 1/2 истинны. Это основная структура всех программ логических схем.

Третья ступень вводит инструкцию XIO. Инструкция XIO лучше описывается как истинная, если контакт разомкнут.

XIO будет истинна, только если подключенный к нему вход разомкнут. В случае внутренних битов эта инструкция верна, если внутренний бит выключен. Поэтому, поскольку I: 1/1 и I: 1/2 оба разомкнуты, инструкции XIO, представляющие эти входы, являются ложными. XIO, представляющая I: 1/3, истинна, потому что устройство ввода, которое оно представляет, разомкнуто. Без пути истинных инструкций слева направо вывод на третью ступень, O: 2/2, выключен.

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

Эта программа использует два переключателя уровня, подключенных к баку, для активации двух насосов, которые должны начинать работу один за другим, а не одновременно. Обратите внимание, что те же два входа XIC управляют как насосом A, так и B. Однако внутренний бит используется с XIC для управления насосом A и с XIO для управления насосом B. Если ступень 0000 истинна, насос A «защелкивается» с помощью команды триггера.

Если ступень 0001 истинна, насос B «защелкнется». Как только инструкция триггера истинна, выход остается включенным до тех пор, пока не будет активирована дополнительная команда разблокировки. Последняя ступень управления переключает насос, используя инструкцию XOR.

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

Программирование ПЛК

Особенности языка LAD в CodeSys

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

Рассмотрим отличия написания программы для ПЛК и микроконтроллера. Для примера возьмем простейшую задачку для МК — мигающий светодиод. Подозреваю, что все начинали знакомство с МК именно с этой задачи. Алгоритм будет следующим

  1. Записать в порт лог. 1.
  2. Временная задержка
  3. Записать в порт лог.0.
  4. Временная задержка
  5. Переход по метке на начало программы.

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

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

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

Реализуем данный алгоритм на практике ниже, а теперь рассмотрим основные особенности LAD (Ladder Diagram) языка.

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

— нормально разомкнутый контакт

— нормально замкнутый(инверсный) контакт

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

Любому контакту ставится в соответствие логическая переменная, определяющая его состояние. Если нормально замкнутый контакт замкнут, то ИСТИНА, если размокнут – Ложь, для инверсного наоборот, он замкнут когда переменная имеет значение ЛОЖЬ. Имя переменной пишется над контактом и служит его названием.

Последовательно соединенные контакты равносильны логической операции И, а параллельно-монтажное ИЛИ. Инверсный контакт равносилен операции НЕ. Параллельное соединение обмоток допускается, а последовательное нет. Обмотка реле также может быть инверсной, тогда она копирует в соответствующую логическую переменную инверсное состояние цепи.

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

Любая переменная в рамках одной цепи имеет одно и то же значение. Если даже реле в цепи изменит переменную, то новое значение поступит на контакты только в следующем цикле. Цепи расположенные выше получают новое значение переменной сразу, а цепи расположенные ниже – только в следующем цикле. Строгий порядок выполнения очень важен, и благодаря ним LAD- диаграмма сохраняет устойчивость при наличии обратных связей.

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

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

Давайте составим нашу первую программу на LAD в среде CoDeSys. CoDeSys можно скачать в интернете, достаточно воспользоваться поисковиком

После установки, выбираем создать новый проект, и CoDeSys попросит выбрать целевую платформу для ПЛК. Указание целевой платформы необходимо, чтобы среда знала, для какого типа контроллера пишется программа. Выбираем 3S CodeSyS Sp PLCWinNT V2.4 и жмем OK.

Имя проекта оставляем по умолчанию, язык выбираем LD

Интерфейс программы на русском языке, и интуитивно понятен. При наведении на элемент всплывает имя. Советую рассмотреть все элементы, а также пункты главного меню.

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

Вместо вопросительных знаков пишем имя нашей переменной, например SB, и нажимаем Enter, выходит окно объявление переменной, выбираем Bool и нажимаем OК.

Рассмотрите, какие типы можно выбрать, а также какие классы переменных.

Давайте, реализуем программы для мигания светодиодом, а если говорить в общем, то программа для генератора одиночных импульсов

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

Пока IN равен FALSE, выход Q = FALSE, выход ET = 0. При переходе IN в TRUE выход Q устанавливается в TRUE и таймер начинает отсчет времени на выходе ET до достижения длительности, заданной PT. Далее счетчик не увеличивается. Таким образом, выход Q генерирует импульс длительностью PT по фронту входа IN.

Временная диаграмма работы TP:

Для вставки TP, на панели элементов выбираем:

И у нас всплывает ассистент выбора функционального блока.

Скачайте файл проекта, и давайте рассмотрим как он работает.

В начальный момент X= False , поэтому инверсный контакт X замкнут и таймер T2 запущен, выход Q= True, поэтому цепь включена. А так как обмотка в цепи инверсная, значит она копирует инверсное состояние цепи в X , и X остается False, после переполнения таймера Q = False , и инверсная обмотка переводит X в True. После этого запускается T1, после переполнения скидывает X в False и все повторяется. Переменная X является выходом генератора. Таймер T2 устанавливает паузу, а T1 длительность импульса.

Компилируем проект Проект -> Компилировать

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

Выход генератора можно поглядеть с помощью цифрового трассировщика, для этого переходим на вкладку Ресурсы в нижнем левом углу

Выбираем Цифровой трассировщик -> Дополнение -> Настройка трассировки, выйдет следующее окно

Цикличность записи поставим Вручную, нажимаем на менеджер и выбираем переменные X(Bool)

Нажимаем Ok . Выбираем перо для нашей переменной

Выбираем в онлайн Подключение, нажимаем Старт , далее Дополнительно -> Начать трассировку, также выберите пункт Автоматическая трассировка

Рассмотрим еще один пример управление двигателем с электронной коммутацией обмоток статора
Саму программу представлять не буду, скачайте проект. А об алгоритме работы расскажу.

Все таймеры запускаются по сигналу старт. Каждый таймер отмеряет момент окончания фазы. Переменные Y1-Y3 являются выводами соответствующей фазы управления. Каждый выход включается в том случае, если таймер еще не переполнен и выключен предыдущий выход. Последняя цепь, является цепью автоматического перезапуска.

Медведев А.Е., Чупин А.В. Автоматизация производственных процессов — файл n1.doc

приобрести
Медведев А.Е., Чупин А.В. Автоматизация производственных процессов
скачать (16971.9 kb.)
Доступные файлы (1):

n1.doc 26927kb. 02.11.2009 09:47 скачать
    Смотрите также:
  • Силин Р.И. Автоматизация производственных процессов в машиностроении (Документ)
  • Медведев А.Е. Правила выполнения схем автоматизации технологических процессов и оборудования (Документ)
  • Лапшенков Г.И., Полоцкий Л. М — Автоматизация производственных процессов в химической промышленности (Документ)
  • Шувалов В.В., Огаджанов Г.А., Голубятников В.А. Автоматизация производственных процессов в химической промышленности (Документ)
  • Лекции по автоматизации производственных процессов (Лекция)
  • Пищухин А.М. Теоретические основы выбора средств автоматизации технологических процессов (Документ)
  • Чупин А.В., Пачкин С.Г. Автоматизация пищевых производств (Документ)
  • Широков Л.А. Автоматизация производственных процессов и АСУ ТП в пищевой промышленности (Документ)
  • Иванова Г.В. Автоматизация технологических процессов (Документ)
  • Вопросы к ГОСу специальность АТП (Шпаргалка)
  • Булатов Ю.И. Рабочая программа Автоматизация технологических процессов для специальности 2101 Автоматизация технологических процессов и производств (Документ)
  • Капустин Н.М. Автоматизация производственных процессов в машиностроении (Документ)

n1.doc

Язык релейных диаграмм (LD)
Язык LD представляет собой графическую интерпретацию процесса разработки релейно-контактных схем управления. Первоначально на языке LD программировались контроллеры производства компании Allen Bradley. Ввиду его удобства и значительного количества пользователей, обладающих навыками проектирования логических систем на базе реле и контакторов, язык LD был введен в стандарт IEC 61131-3 и в настоящее время является одним из наиболее распространенных язы­ков программирования ПЛК. Этот язык наиболее удобен для программирования небольших задач дискретной логики, поэтому многие контроллеры младших классов имеют язык LD в качестве основного для разработки программ управления.

Программы, написанные на языке LD, состоят из последовательности ступеней, которые выполняются ПЛК последовательно, слева направо (рис. 3.5).

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

Набор графических элементов языка LD включает:

  • Входы/выходы ПЛК (кнопки, датчики, реле, индикаторные лампы и т.д.);
  • Стандартные управляющие системные функции (таймеры, счетчики и т.д.);
  • Арифметические, логические и специальные операции;
  • Внутренние переменные ПЛК.

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

Графические элементы языка LD можно условно разделить на базовые элемен­ты, функциональные и операционные блоки. Каждый базовый элемент занимает одну ячейку (одну строку по высоте и одну колонку по ширине). Блоки могут зани­мать несколько ячеек. Базовые элементы и блоки языка LD приведены
в табл. 3.1.

Базовые элементы и блоки языка LD

Наименование Элемент/Блок Символ Функция
Элементы
условий
Нормально откры­тый контакт –| |– Контакт замкнут, когда битовая переменная, которая управляет им, равна 1
Нормально закры­тый контакт –|/|–

Контакт замкнут, когда битовая переменная, которая управляет им, равна 0
Контакты, срабаты­вающие по перепаду –|P|– Возрастающий перепад: контакт замкнут, когда битовая перемен­ная, которая управляет им, изме­няется с 0 до 1
–|N|– Убывающий перепад: контакт замкнут, когда битовая переменная, которая управляет им, изменяет­ся с 1 до 0

Продолжение табл. 3.1

Наименование Элемент/Блок Символ Функция
Элементы
связи
Горизонтальные связи ______ Используются для соединения элементов условий и элементов действия, расположенных последовательно между двумя шинами питания
Вертикальные свя­зи | Используются для параллельного соединения элементов действия и условий
Коротко-круговые соединения _ˉˉˉ|__ Используются для соединения двух объектов, использующих разные связи
Элементы
действия
Прямая обмотка –( )– Устанавливает соответствующий битовый объект в значение, рав­ное результату, полученному в проверочной зоне
Обратная обмотка –(/)– Устанавливает соответствующий битовый объект в значение, рав­ное инверсии от результата, полу­ченного в проверочной

Продолжение табл. 3.1

Наименование Элемент/Блок Символ Функция
Устанавливающая обмотка –(S)– Устанавливает соответствующий битовый объект в 1, когда резуль­тат, полученный в проверочной зоне, равен 0
Сбрасывающая обмотка –(R)– Сбрасывает соответствующий би­товый объект в 0, если результат, полученный в проверочной зоне, равен 1
Условный переход к другой ступени >> %Li Обеспечивает соединение с поме­ченной строкой, причем послед­няя может быть расположена до или после текущей ступени
Обмотка вызова подпрограммы –(C)– Позволяет подсоединиться к под­программе, если результат, полу­ченный в проверочной зоне, ра­вен 1

Продолжение табл. 3.1

Наименование Элемент/Блок Символ Функция
Возврат из
подпрограммы
Зарезервировано для подпро­грамм, позволяет возвращаться в вызывающий модуль, когда результат, полученный в прове­рочной зоне, равен 1
Останов

программы

Останов выполнения программы, когда результат, полученный в проверочной зоне, равен 1
Проверочные элементы Блоки:
Таймер
Счетчик
Одновибратор
Регистр
Контроллер
барабана
Каждый из блоков стандарт­ной функции использует вхо­ды/выходы, через которые обеспечиваются связи с другими графическими элементами
Вертикальный блок сравнения Позволяет сравнивать два опе­ранда. В зависимости от результа­та соответствующий вход прини­мает значение, равное 1. Размер: 2 колонки/4 строки

Окончание табл. 3.1

Наименование Элемент/Блок Символ Функция
Горизонтальный блок сравнения «Compare» Позволяет сравнивать два операнда. Выход принимает значение, рав­ное 1, если при сравнении получен истинный результат. (Блок может содержать до 4096 символов). Раз­мер: 2 колонки/1 строка
Элемент


дей­ствия

Операционный блок «Operate» Выполняет арифметические, логические и другие операции и ис­пользует синтаксис языка структурированного текста. (Блок мо­жет содержать до 4096 символов). Размер: 4 колонки/1строка

Ступень содержит до 7-ми строк и до 11-ти колонок, разделенных на две зоны – проверочную и зону действий. Каждая ступень может быть снабжена меткой и озаглавлена комментарием. Метки могут быть использованы для идентификации ступени внутри программного объекта (головной программы, подпрограммы и т.д.), но не являются обязательными. Метки имеют синтаксис %Li (где i от 0 до 999) и располагаются в левом верхнем углу перед шиной питания. Каждая метка может присваиваться только одной ступени в пределах данного программного объекта. Система сканирует ступени в том порядке, как они были введены, независимо от порядка нумерации меток.

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

Ступень изображается в форме, похожей на релейные диаграммы. Простейшие проверочные элементы и элементы действия занимают одну строку и одну колонку ступени. Все линии контактов начинаются от левой шины питания и должны закан­чиваться на правой шине питания. Проверочные операции всегда располагаются в колонках с 1 по 10. Операции действия всегда располагаются в колонке 11. Пред­полагается, что между шинами питания протекает ток, который имеет следующее направление:

– по горизонтальным связям – слева направо;

– по вертикальным связям – в обоих направлениях.

Проверочная зона содержит: контакты, которые могут быть помечены любым, ранее определенным битовым объектом; функциональные блоки; блоки сравнения. Возрастающие и убывающие фронты могут быть связаны только входными и вы­ходными битовыми объектами и внутренними битами.

Зона действий содержит: прямые, инверсные, фиксирующие и инверсно-фикси­рующие обмотки, которые могут быть помечены любым битовым объектом; запи­санные пользователем операционные блоки; другие элементы действия (Call, Jump, Halt, Return).

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

Операционные блоки всегда расположены в зоне действий. Внутри блока запи­сывается фраза на языке ST. Операционный блок должен быть присоединен непо­средственно к правой «шине» питания.

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

В соответствии с указанным порядком исполнения система:

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

– Выполняет рабочие действия, соответствующие функциям, функциональным блокам и подпрограммам;

– Обеспечивает битовые объекты, соответствующие обмоткам (выходы модулей ввода/вывода обновляются в конце сканирования);

– Переходит к другой помеченной ступени в данном программном модуле (перехо­ды к другой ступени >>%Li), возвращается в вызывающий модуль или останавливает программу .
Язык функциональных блоковых диаграмм (FBD)
Язык функциональных блоков (Function Block Diagrams) позволяет создать программу прак­тически любой сложности на основе стандартных функциональных блоков (арифметические, тригонометричес­кие, логические блоки, РID-регуляторы, блоки, описывающие некоторые законы управления, мультиплексоры
и т.д.). Все программирова­ние сводится к «склеиванию» готовых компонентов (блоков). Каждый функциональный блок представляет собой прямоугольник, внутри которого имеется обозначение функции, выполняемой блоком.

При программировании используются следующие формальные правила языка FBD:

  • Функциональные блоки могут располагаться произвольно
    в поле программы;
  • Не может быть несоединенных входов и выходов функционального блока;
  • Соединение блоков может выполняться также при помощи ссылок с определен­ными именами;
  • Функциональные блоки выполняются слева направо, сверху вниз;
  • На входе функционального блока может быть константное выражение, любая внутренняя или входная переменная контроллера; выходная переменная;
  • На выходе блока может быть любая внутренняя или выходная переменная ПЛК.

В табл. 3.2 представлены основные функциональные блоки языка FBD.
Таблица 3.2

Некоторые функциональные блоки языка FBD

Наименование Обозначение Описание
1. Функции двоичного типа NOT Логическое отрицание
AND Логическая

конъюнкция

OR Логическая

дизъюнкция

XOR Исключающее ИЛИ
SET Присвоение

переменной

RESET Обнуление переменной
2. Функции управления RETURN Возврат из

подпрограммы

GOTO Безусловный переход
CALL Вызов подпрограммы
TSTART
TSTOP
GSTART
GSTOP
3. Арифметические функции ADD Сложение
SUB Вычитание
DIV Деление
MUL Умножение

Окончание табл. 3.2

Наименование Обозначение Описание
4. Функции сравнения = Равно
<> Не равно
> Больше
Больше или равно

Выполняемая операция Изображение Описание
Обнаружение перепада сигнала In Двоичная переменная Out примет зна­чение TRUE тогда и только тогда, ко­гда переменная In изменит свое состо­яние
П-регулятор Рассогласование между текущим зна­чением величины Val и заданием Ref домножается на коэффициент Km и используется в качестве управляюще­го воздействия

Окончание табл. 3.3

Выполняемая операция Изображение Описание
Ограничение нижнего предела делителя In

П рограмма обеспечивает деление переменной Sampl на значение переменной Val. Переменная делителя Val снизу ограничена значением Vmin. Переменная Error принимает значение TRUE, если Val

Наименование Фирма-производитель
1 InTouch «Wonderware», США
2 Genesis32 «Iconics», США
3 iFIX «Intellution», США
4 Trace Mode «AdAstra», Россия
5 Real Flex «BJ Software Systems (BJSS)», США
6 Cimplicity «GE Fanuc», США – Япония
7 WinCC «Siemens», Германия
8 Citect «CI Technology», Австралия
9 IMAGE «Numpha Soft», Финляндия – Россия
10 MasterSCADA «ИнСАТ», Россия
11 VNS «ИнСАТ», Россия
12 КРУГ 2000 «КРУГ», Россия
13 WizFactory «PC Soft International Inc.»,
США – Израиль
14 Elipse Windows «Elipse Software LTDA», Бразилия
15 Genie 3.0 «Advantech», Тайвань
16 MOSCAD «Motorola», США
17 CKAT-M «Центрпрограммсистем», Россия
18 КАСКАД АО «Элара», Россия
19 VIORD microSCADA «ФИОРД», Россия
20 Phocus «Jade Software»
21 МИКСИС (MIKSys) «МИФИ», Россия

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

  • Технические характеристики;
  • Стоимостные характеристики;
  • Эксплуатационные характеристики.

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

Программно-аппаратные платформы для SCADA-систем

Операционная система Компьютерная платформа
DOS/MS Windows IBM PC
OS/2 IBM PC
SCO UNIX IBM PC
VMS VAX
AIX RS6000
HPUX HP 9000
MS Windows/NT Системы с Windows/NT, реализованные, в основном, на РС-платформе

В то же время, в таких SCADA-системах, как RealFlex и Sitex основу программной платформы принципиально составляет единственная операционная система реального времени QNX.

Подавляющее большинство SCADA-систем реализовано на MS Windows платформах. Именно такие системы предлагают наиболее полные и легко наращиваемые MMI-средства. Большинство разработчиков приоритетным считают дальнейшее развитие своих SCADA-систем на платформе Windows NT. Некоторые фирмы, до сих пор поддерживающие SCADA-системы на базе операционных систем реального времени (ОСРВ), начали менять ориентацию, выбирая системы на платформе Windows NT. Все более очевидным становится применение ОСРВ, в основном, во встраиваемых системах, где они действительно хороши. Таким образом, основным полем, где сегодня разворачиваются главные события глобального рынка SCADA-систем, стала MS Windows NT на фоне все ускоряющегося сворачивания активности в области MS DOS, MS Windows 3.xx/95,98.

При выборе SCADA-систем необходимо провести анализ имеющихся в них средств сетевой поддержки. Одной из основных черт современного мира систем автоматизации является их высокая степень интеграции. В любой из них могут быть задействованы объекты управления, исполнительные механизмы, аппаратура, регистрирующая и обрабатывающая информацию, рабочие места операторов, серверы баз данных и т.д. Очевидно, что для эффективного функционирования в этой разнородной среде SCADA-система должна обеспечивать высокий уровень сетевого сервиса. Желательно, чтобы она поддерживала работу в стандартных сетевых средах (ARCNET, ETHERNET и т.д.) с использованием стандартных протоколов (NETBIOS, TCP/IP и др.), а также обеспечивала поддержку наиболее популярных сетевых стандартов из класса промышленных интерфейсов (PROFIBUS, CANBUS, LON, MODBUS и т.д.). Этим требованиям в той или иной степени удовлетворяют практически все рассматриваемые SCADA-системы, с тем только различием, что набор поддерживаемых сетевых интерфейсов, конечно же, разный.

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

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

Для специалиста-разработчика системы автоматизации, так же как и для специалиста-технолога, чье рабочее место создается, очень важен графический пользовательский интерфейс. Функционально графические интерфейсы SCADA-систем весьма похожи. В каждой из них существует графический объектно-ориентированный редактор с определенным набором анимационных функций. Используемая векторная графика дает возможность осуществлять широкий набор операций над выбранным объектом, а также быстро обновлять изображение на экране, используя средства анимации.

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

Современные SCADA-системы не ограничивают выбора аппаратуры нижнего уровня, так как предоставляют большой набор драйверов или серверов ввода-вывода и имеют хорошо развитые средства создания собственных программных модулей или драйверов новых устройств нижнего уровня. Сами драйверы разрабатываются с использованием стандартных языков программирования. Вопрос, однако, в том, достаточно ли только спецификаций доступа к ядру системы, поставляемых фирмой-разработчиком
в штатном комплекте (система Trace Mode), или для создания драйверов необходимы специальные пакеты (системы FactoryLink, InTouch), или же разработку драйвера нужно заказывать у фирмы-разработчика.

Многие компании занимаются разработкой драйверов, ActiveX-объектов и другого программного обеспечения для SCADA-систем. Этот факт очень важно оценивать при выборе SCADA-пакета, поскольку это расширяет область применения системы непрофессиональными программистами (нет необходимости разрабатывать программы с использованием языков С или Basic).

При оценке стоимости SCADA-систем нужно учитывать следующие факторы:

  • Стоимость программно-аппаратной платформы;
  • Стоимость системы;
  • Стоимость освоения системы;
  • Стоимость сопровождения.

Показатели этой группы критериев наиболее субъективны. Это тот самый случай, когда лучше один раз увидеть, чем семь раз услышать. К этой группе можно отнести:

  • Удобство интерфейса среды разработки – «Windows – подобный интерфейс», полнота инструментария и функций системы;
  • Качество документации – ее полнота, уровень русификации;
  • Поддержка со стороны создателей – количество инсталляций, дилерская сеть, обучение, условия обновления версий и т.д.

Если предположить, что пользователь справился и с этой задачей – остановил свой выбор на конкретной SCADA-системе, то далее начинается разработка системы контроля и управления, которая включает следующие этапы:

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

3.4.3. SCADA-система Trace Mode

Trace Mode – это 32-разрядная SCADA-система, имеющая сертификат Госстандар­та РФ и широкое распространение в России и странах СНГ. Trace Mode является интегрированной SCADA/HMI и SoftLogic системой, когда разработка приложений для операторских станций и контроллеров производится в рамках одного проек­та на базе единого ПО. За счет использования принципов автопостроения проекта сокращаются время его разработки и стоимость.

Архитектура системы Trace Mode – это клиент-серверная архитектура с исполь­зованием общей модели объектов DCOM для ОС Windows NT/2000/XP. Основу Trace Mode составляет мощный сервер и БД реального времени. Связь с клиентски­ми модулями, приложениями SCADA-систем, УСО и СУБД осуществляется через стандартные интерфейсы DCOM, OPC, HTTP, DDE, TCOM, ActiveX, SQL/ODBC.

Основные функции системы TraceMode 5:

  • Модульная структура с числом каналов от 128 до 64 000Ч16;
  • Встроенная поддержка российских контроллеров Ремиконт, Ломиконт, Ш711, КРУИЗ, МФК, ЭК2000 и др.;
  • Поддержка международного стандарта на средства программмирования контрол­леров IEC 61131-3;
  • Библиотека драйверов контроллеров фирм RockwellAutomation, Siemens, Schneider Electric, Moeller, PEP, FisherRosemount
    и др.;

Средства программирования PCbase контроллеров MIC2000, ROBO, Lagoon, TREI и др.;

  • Встроенная система более 150 алгоритмов АСУТП, в том числе алгоритмы фильтрации, ПИ- и ПИД-регулирования, нечет-кое и позиционное регулирова­ние, ШИМ-преобразование и др.,
    а также адаптивная настройка регуляторов;
  • Открытость для встраивания пользовательских алгоритмов и форм отображения ActiveX;
  • Возможность резервирования локальных сетей, датчиков, архивов с автомати­ческим восстановлением после сбоя.

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

Благодаря автопостроению, разработка АСУ ТП сводится
к следующему:

  • В рабочем поле Редактора базы каналов размещаются иконки (объекты) контроллеров и операторских станций;
  • Указываются число сигналов ввода-вывода и наличие информационного обмена между узлами;
  • Запускается автопостроение, которое автоматически формирует базы каналов проекта.

Разработка графического интерфейса осуществляется с помощью Редактора представления данных (аналогичного Редактору базы каналов), который позволяет создавать мнемосхемы технологических объектов и динамические объекты (гистограммы, тренды, бегущие дорожки и пр.). Библиотека объектов включает емкости, теплообменники, кнопки и др. Пользователь может на языке VisualBasic (VB) напи­сать собственные формы как ActiveX и встроить их в TraceMode. Возможна отладка проекта из редактора TraceMode в режиме реального времени.

По протоколам TCP/IP, IPX/SPX, DCOM, DDE/NetDDE, OPC и др. осуществ­ляется связь с офисными приложениями Excel, Access, MS SQL Server, Oracle, SyBase, BaseStar, R/3, программами ПАРУС и ГАЛАКТИКА на уровне АСУП.

Основу ПО диспетчерского уровня управления составляют модули реального времени (МРВ). МРВ Trace Mode – это сервер реального времени, осуществляющий прием данных с контроллеров, управление процессом, визуализацию информации, расчет ТЭП, ведение ар­хивов (с дискретностью 0,001 с).

Trace Mode содержит средства для разработки АРМ руководителя с помощью модулей Supervisor, которые предоставляют руководителю всю необходимую инфор­мацию о параметрах
и состоянии технологического процесса.

Trace Mode позволяет создавать резервированные многоуровневые АСУ ТП мас­штаба предприятия на базе ведущих сетевых ОС с обменом по протоколу NetBios, NetBEUI, IPX/SPX, TCP/IP. Сетевые комплексы допускают структурирование с выделением следующих уровней: контроллерного, диспетчерского
и административ­ного (рис. 3.6).

Оформление отчетов о ходе технологического процесса осуществляется с помо­щью Сервера документирования. Сервер принимает данные от удаленных модулей и обрабатывает их в соответствии со сценариями. Готовые отчеты могут быть за­писаны
в файл, выведены на печать, экспортированы в СУБД или представлены в Internet. Для обмена информацией по сети Internet используется Web-сервер Trace Mode. Технология тонкого клиента позволяет осуществлять визуализацию процесса, формировать тренды и алармы, формировать управляющие воздействия с помощью Web-броузера.

Рис. 3.6. Структура многоуровневой АСУ ТП предприятия
на базе SCADA-системы Trace Mode
Trace Mode поддерживает технологии телеуправления через GSM и SMS. GSM-активатор для Windows NT предоставляет пользователям на сотовые телефоны от­четы тревог, позволяет передавать с сотового телефона команды управления, полу­чать информацию по запросу с сотового телефона.

Пример визуализации технологического процесса гидрирования бензола и его управления показан на нескольких экранных формах, созданных в среде SCADA-система Trace Mode (рис. 3.7–3.11). На рис. 3.8 показана мнемосхема технологического процесса, а на рис. 3.9, 3.10, 3.11 – экранные формы для настройки регуляторов. После щелчка по кнопке, расположенной в строке «Настройка регуляторов» (см. рис. 3.6), на экран выводится рис. 3.9.

Рис. 3.7. Окно выбора статуса рабочей станции и выполняемой задачи

Рис. 3.8. Мнемосхема процесса гидрирования бензола

Рис. 3.9. Экранная форма выбора регуляторов

После щелчка по кнопке соответствующего регулирующего устройства он замещается экраном его настройки (рис. 3.10).

Рис. 3.10. Экранная форма настройки регулятора
В нем можно изменять настройки регулятора, вводить ограничение на изменение сигнала задания и выхода на клапан, определить зону нечувствительности. На графике отображаются изменения параметра, задания и выходного сигнала на клапан.

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

Рис. 3.11. Экранная форма просмотра графиков

Для управления регулирующими клапанами необходимо щелкнуть по символу соответствующего клапана. В результате этого появится окно (рис. 3.12).

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

Блок индикаторов отражает состояние ограничения соответственно задания и выходного сигнала регулятора. При назначенном ограничении соответствующий индикатор зажигается красным цветом.

Кнопка является одновременно индикатором состояния. Щелчок по кнопке переключает регулятор в автоматический режим, а кнопка принимает вид .

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

Кнопки (меньше) и (больше) служат для изменения в режиме Авт. величины задания регулятору, а в режиме Дист. – величины выходного сигнала, поступающего на клапан. Кнопки с одной стрелкой увеличивают (уменьшают) величины на 1 %, а с двумя стрелками – на 10 %.

Для управления отсечным клапаном необходимо щелкнуть по символу соответствующего клапана. В результате этого появится окно (рис. 3.13).

Рис. 3.13. Окно управления отсечным клапаном
Для клапанов, имеющих сигнализацию конечного положения, предусмотрен индикатор , отражающий состояние клапана закрыто (красный) или открыто (зеленый).

Пакет Genie 3.0 является инструментальной средой для создания ПО систем сбо­ра данных и оперативного диспетчерского управления (SCADА), исполняемого в среде Windows 3.х/95/98. Применяется для проектирования небольших АСУ ТП масштаба участка или цеха. Genie имеет модульно-ориентированную, открытую, ин­тегрированную архитектуру (рис. 3.14). Открытость архитектуры позволяет легко реализовать взаимодействие Genie
с другими приложениями для совместного доступа к данным
в реальном масштабе времени. Управление всеми данными Genie в реальном масштабе времени, а также хранение и обработку данных осуществляет Центр об­работки данных (Date Center). Пакет состоит из двух основных программных моду­лей: Построитель стратегии GENIE (GENIE.EXE) и Исполнительная среда GENIE (GWRUN.EXE). Построитель стратегии используется для проектирования и тести­рования проектов (стратегий), а Исполнительная среда – только для исполнения стратегий. Стратегия – это совокупность одной или нескольких задач вместе с одной или большим количеством экранных форм, а также одним сценарием. Простейшая стратегия имеет одну задачу с одной экранной формой и не имеет основного сце­нария. Задача, экранная форма
и основной сценарий являются тремя основными элементами проектирования стратегий.

Рис. 3.14. Архитектура SCADА-системы Genie 3.0
Экранная форма представляет собой набор элементов отображения и элементов управления. Элементы отображения – это график, текстовая строка, индикатор и др. К элементам управления относятся кнопка, аналоговый, движковый или инкрементный регулятор.

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

Построитель стратегий GENIE предоставляет пользователю для проектирования АСУ ТП четыре различных редактора:

  • Редактор задач (Task Designer);
  • Редактор форм отображения (Display Designer);
  • Редактор отчетов ( Report Designer);
  • Редактор сценариев ( Script Designer).

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

Редактор задач (Task Designer) предназначен для реализации прикладных алгоритмов создаваемой системы. Разработка системы сводится к размещению поль­зователем функциональных блоков в окне задачи и установлению между ними свя­зей, определяемых алгоритмом обработки данных. Genie 3.0 обеспечивает возмож­ность разработки и одновременного исполнения до 8 задач. Более сложная задача может быть разбита на несколько простых задач меньшего объема, что упрощает процесс разработки и увеличивает производительность при исполнении, поскольку при каждом сканировании должно быть обработано меньшее число функциональ­ных блоков.

Редактор форм отображения (Display Designer) предназначен для созда­ния динамических графических форм отображения, связанных с исполняемой стра­тегией сбора данных и управления. При необходимости создания графического ин­терфейса оператора возможно использование специальных инструментов рисования и элементов отображения, таких как насосы, клапаны, круги, прямоугольники, сег­менты и т.п. Кроме того, пользователь может конфигурировать цвета и размеры указанных графических примитивов. Также Genie предоставляет команды «Сгруп­пировать» и «Разгруппировать», позволяющие объединять графические примитивы в единое изображение.

Редактор отчетов (Report Designer) предназначен для разработки и генера­ции отчетов. Пользователь может разрабатывать формат отчета с использованием специального инструмента табличной формы и определять расписание для автома­тической печати отчета. К другим функциям Редактора отчетов относятся: сбор данных, конфигурирование формата отчетов, генерация отчетов событий, генера­ция отчетов тревог.

Редактор сценариев (Script Designer) предназначен для управления задача­ми, вычислениями и анализом данных в реальном масштабе времени. Genie предо­ставляет средства разработки программных сценариев, совместимых с языком Visual Basic. По­скольку Visual Basic является одним из самых популярных и простых для изучения языков программирования, его наличие в пакете позволяет значительно упростить и повысить эффективность разработки проекта с использованием Genie.

Центр обработки данных (DateCenter) является набором библиотек дина­мической компановки (DLL-библиотек) и предназначен для хранения и обработки данных, связанных с работой стратегии под управлением исполнительной среды Genie. Центр обработки данных поддерживает три способа взаимодействия пакета Genie с другими Windows-приложениями:

  • Интерфейс прикладного программирования (СAPI);
  • Механизм динамического обмена данными (DDE);
  • Механизм связывания и внедрения объектов (OLEAutomation).

Для взаимодействия Genie с аппаратными средствами в реальном масшта­бе времени используются драйверы ввода-вывода (I/ODrivers). Драйверы ввода-вывода поддерживают все аппаратные средства промышленной автоматизации фир­мы Advantech, включая модули сбора данных и управления ADAM
и др., РС-совместимый модульный контроллер MIC-2000, устройства удаленного сбора дан­ных и управления серий ADAM-4000 и ADAM-5000/485, а также устройства ADAM-5000/CAN промышленной шины CAN с протоколом DeviceNet.

Программирование ПЛК на языке LD.

    Полина Аверкиева 3 лет назад Просмотров:

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

2 Контакт обозначается может быть инвертируемым. Такой контакт с помощью символа / и передает состояние «ON», если значение переменной ЛОЖЬ. LD позволяет: -выполнять последовательное соединение контактов; -выполнять параллельное соединение контактов; — применять нормально разомкнутые или замкнутые контакты; — использовать переключаемые контакты; — записывать комментарии; — включать Set / Reset-выходы; — переходы; — включать в диаграмму функциональные блоки; — управлять работой блоков по входам EN. Порядок выполнения работы Из ПРИЛОЖЕНИЯ 1 по заданию преподавателя выбирается вариант технологической схемы. На основании заданной технологической схемы и описания технологического процесса разработать: технологические требования к схеме управления; принципиальную электрическую схему автоматического управления технологической установкой; прикладную программу для ПЛК. дать описание работы принципиальной схемы. 2

3 Схема и программа должна предусматривать: запуск всех машин и механизмов в последовательности, направленной против движения продукта; остановку всех машин и механизмов в последовательности, совпадающей с направлением движения продукта; остановку поточных линий по команде «рабочий стоп» с целью очистки тракта; режим пуско-наладочных работ; звуковой или световой сигнал при пуске сложных технологических установок; аварийное отключение (при аварийном отключении одной из машин, должны остановится без выдержки времени все машины, работающие на ее загрузку, а с выдержкой времени все машины работающие на отгрузку). Составление прикладной программы. 1. При создании программы используется среда программирования CoDeSys V2.3 (далее CoDeSys). Перед созданием проекта пользователь, используя утилиту InstallTarget в составе CoDeSys, устанавливает для применяемого контроллера файл целевых задачи (Target,файл), который обеспечивает программный доступ к ресурсам ПЛК. 2. Создание проекта программы 3

4 При создании проекта используется язык релейных диаграмм LD (Ladder Diagram), реализующий структуры, подобные электрическим цепям в коммутационной автоматике. Пользователь запускает CoDeSys последовательным выбором приложений: Пуск Все программы 3S Software CoDeSys V2.3 CoDeSys V2.3. Новый проект открывается из главного меню: File New. В открывшемся окне PLC150.U-L, (рис.1) выбирается тип контроллера, выбор подтверждается нажатием клавиши ОК. Рисунок 1.1- Окно конфигурации «Target Settings» программы После выбора проекта выводится экранная форма, задающая тип, имя и язык программирования первичного компонента New POU, главной программы контроллера. Необходимо выбрать язык программирования LD, установив флаги в позициях, указанных на рис

5 Рисунок 1.2- Вид окна «New POU» с отмеченными параметрами Примечание. Имя главной программы PLC_PRG и ее тип менять нельзя. После подтверждения выбора нажатием клавиши ОК откроется окно нового проекта с именем по умолчанию Untitled. В нем присутствует одна вкладка POUs. Весь проект хранится в одном файле, имя которого отображается в заголовке окна. Для ввода имени файла во второй строке меню быстрого запуска активизируется клавиша записи и в появившейся форме указывается имя файла: например, LD, проект 1.pro. 3. Параметры входов и выходов контроллера Цепям контроллера, используемым в разрабатываемой электрической схеме, присваиваются имена переменных. В дальнейшем эти имена используются в программе для работы с конкретным входом или выходом контроллера. Для присвоения имени какому-либо ресурсу ввода/вывода контроллера необходимо на вкладке ресурсов (Resources) Организатора объектов CoDeSys запустить утилиту PLC Configuration (Конфигуратор ПЛК). 5

6 В появляющейся иерархической структуре дереве Конфигурации ПЛК пользователь открывает папки (модули) входов (Discrete input) и выходов (Discrete output) ПЛК, и именует необходимые каналы. Перед адресом указывается имя (идентификатор переменной) для цепей входов и выходов схемы созданного проекта. Именование канала (входа или выхода) производится следующим образом: двойным щелчком манипулятора «мышь» при курсоре, установленном в начале строки названия канала, осуществляется переход в режим редактирования и вводится имя переменной канала. Экранная форма, представленная иллюстрируют выполненные пользователем именования каналов при использовании четырех входов (IX0.0.4, IX0.0.5, IX0.0.6, IX0.0.7) и одного выхода (QX1.0). 6

7 Рисунок 1.3- Экранная форма для именования входов и выходов при работе программы с цепями ПЛК 4. Создание программы на языке LD При написании программы в рабочей зоне вкладки POUs последовательно вводятся типы компонентов и их обозначения, как это представлено на рис

8 Рисунок 1.4. Пример программы на языке LD Пользователь при составлении виртуальной схемы может следовать приведенной ниже инструкции. Инструкция по созданию программы: 1) создание нормально замкнутого контакта: в контекстном меню выбрать команду Contact (negated) или нажать кнопку на панели инструментов. Символы вопросов (рис. 1.5 (а)) необходимо заменить именем, например SA1. Описывать переменную в данном случае не требуется, так как она уже была указана в окне PLC(Configuration и связана с конкретным дискретным входом; Рисунок Создание нормально замкнутого (а) и разомкнутого (б) контактов 2) создание нормально разомкнутого контакта делается аналогичным образом, только используется команда контекстного меню Contact или кнопка на панели инструментов (рис.1.5(б)); 3) функциональный блок: из контекстного меню выбирается команда Function Block, в появившемся окне «Input Assistant» (рис.1.6) из раздела Standard Function Blocks в библиотеке с именем STANDARD.LIB в папке Timer выбирается вид таймера TON (FB). На схеме перед входом PT указывается время задержки 8

9 в формате T#3s. Над блоком вводится имя, например DD1 и на клавиатуре нажимается клавиша «стрелка вправо» подтверждаются свойства функционального блока; Рисунок Выбор таймера 5) указание выхода цепи: в контекстном меню выбирается команда Coil или нажимается кнопка на панели инструментов. На схеме появляется условное обозначение обмотки реле. Символы вопросов замещаются именем. 6. Запись программы в контроллер Настройка соединения ПК с ОВЕН ПЛК для загрузки и проверки работы программы в автономном режиме производится следующим образом. Для информационного обмена ПК с ОВЕН ПЛК используется кабель программирования, входящий в комплект поставки. Им соединяются СОМ(порт компьютера и порт Debug RS,232 контроллера (на лицевой панели). 9

10 Для настройки канала соединения из основного меню CoDeSys выбирается команда Online-Communication parameters. В диалоговом меню командой New открывается диалоговое окно, в котором соединению присваивается имя (например, COM) и выбирается (из перечня) вид соединения Serial (RS232). Выбор подтверждается нажатием клавиши ОК. После указанных действий в окне коммуникационных параметров появляется канал соединения с именем COM. В зоне настроек (Value) для параметра Baudrate устанавливается значение (бит/сек скорость соединения с компьютером). Значение может быть изменено двойным щелчком левой кнопки манипулятора «мышь» на значении. Для сохранения нового значения в окне курсором мыши выбор подтверждается нажатием клавиши ОК. Программное соединение с ОВЕН ПЛК включается из главного меню CoDeSys командой Online — Login. При этом флаг перед строкой меню Simulation Mode должен быть снят. Как только система устанавливает связь с ОВЕН ПЛК, появляется запрос на подтверждение загрузки новой программы, пользователь подтверждает загрузку: Да. После завершения записи проекта в оперативную память ОВЕН ПЛК, запуск работы программы осуществляется выбором команды Online — Run (или нажатием на лицевой панели ОВЕН ПЛК кнопки ). Управлять работой ОВЕН ПЛК можно при помощи переключателей. ЛАБОРАТОРНАЯ РАБОТА 2 10

11 Программирование ПЛК на языке ST. Цель работы: Изучить принципы составления прикладных программ для промышленных логических контроллеров на языке ST пакета CoDeSys. 1. Общие сведения. Язык ST (Structured Text) это язык высокого уровня. Синтаксически ST представляет собой несколько адаптированный язык Паскаль. Вместо процедур Паскаля в ST используются компоненты программ стандарта МЭК. На основе ST можно создавать гибкие процедуры обработки данных. Основой ST-программы служат выражения. Результат вычисления выражения присваивается переменной при помощи оператора «:=», как и в Паскале. Каждое выражение обязательно заканчивается точкой с запятой «;». Выражение состоит из переменных констант и функций, разделенных операторами: ivarl := 1 + ivar2 / ABS(iVar2); Стандартные операторы в выражениях ST имеют символьное представление, например математические действия: +, -, *, / операции сравнения и т.д. Помимо операторов, элементы выражения можно отделять пробелами и табуляциями для лучшего восприятия. Таблица 1 — Операторы в ST 11

12 Операция Выражение в скобках Вызов функции Возведение в степень Замена знаков Числовое дополнение Умножение Деление Абсолютная величина Сложение Вычитание Сравнение Неравенство Равенство Логическое И Логическое исключающее ИЛИ Логическое ИЛИ Обозначение (Выражение) Имя функции параметров) Приоритет Самый высокий (список EXPT NOT * / MOD + , = <> = AND XOR OR Самый низкий Основные типовые конструкции в ST Оператор присваивания Перед оператором присваивания находится операнд (переменная или адрес), которому присваивается значение выражения, стоящего после оператора присваивания. Пример: Var1: = Var2 * 10; После выполнения этой операции Var1 принимает значение в десять раз большее, чем Var2. Вызов функционального блока в ST Функциональный блок вызывается с помощью имени экземпляра функционального блока и списка входных параметров с присваиванием 12

13 данных в круглых скобках. В следующем примере вызывается таймер с параметрами IN и PT. Значение выходной переменной Q присваивается переменной А. К выходной переменной можно обратиться с помощью имени экземпляра функционального блока, точки, следующей за ним и имени выходной переменной: CMD_TMR (IN: = %IX5, PT: = 300); A: =CMD_TMR.Q Оператор выбора IF Оператор выбора позволяет выполнить различные группы выражений в зависимости от условий, выраженных логическими выражениями. Полный синтаксис оператора IF (если) выглядит так: IF THEN [ ELSIF THEN ; ELSIF THEN ; ELSE ; ] END_IF Если ИСТИНА, то выполняются выражения первой группы — . Прочие выражения пропускаются, альтернативные условия не проверяются. Часть конструкции в квадратных скобках является необязательной и может отсутствовать. Если ЛОЖЬ, то одно за другим проверяются условия ELSIF. Первое истинное условие приведет к 13

14 выполнению соответствующей группы выражений. Прочие условия ELSIF анализироваться не будут. Групп ELSIF может быть несколько или не быть совсем. Если все логические выражения дали ложный результат, то выполняются выражения группы ELSE, если, она есть. Если группы ELSE нет, то не выполняется ничего. В простейшем случае оператор IF содержит только одно условие: IF breset THEN ivarl := 1; ivar2 := 0; END_IF Оператор множественного выбора CASE Оператор множественного выбора CASE позволяет выполнить различные группы выражений в зависимости от значения одной целочисленной переменной или выражения. Синтаксис: CASE OF : ; , значение 3> : ; ..оначение 5> : ; [ ELSE ; ] END_CASE Если значение выражения совпадает с заданной константой, то выполняется соответствующая группа выражений. Прочие условия не 14

15 анализируются ( : ;). Если несколько значений констант должны соответствовать одной группе выражений, их можно перечислить через запятую ( , : ;). Диапазон значений можно определить через две точки ( .. : ;). Группа выражений ELSE является необязательной. Она выполняется при несовпадении ни одного из условий ( ;). Пример: CASE byleft/2 OF 0,127: breset := TRUE; Varl :=0; : Varl :- 1; ELSE Varl := 2; END_CASE Значениями выбора CASE могут быть только целые константы, переменные использовать нельзя. Одинаковые значения в альтернативах выбора задавать нельзя, даже в диапазонах. Цикл FOR С помощью FOR можно программировать повторяющиеся процессы. Синтаксис: FOR := ТО [BY ] DO 15

16 Перед выполнением цикла счетчик получает начальное значение. Далее тело цикла повторяется, пока значение счетчика не превысит конечного значения. Счетчик увеличивается в каждом цикле. Начальное и конечное значения и шаг могут быть как константами, так и выражениями. Счетчик изменяется после выполнения тела цикла. Поэтому если задать конечное значение меньшее начального, то при положительном приращении цикл не будет выполнен ни разу. При одинаковых начальном и конечном значениях тело цикла будет выполнено один раз. Часть конструкции BY в скобках необязательна, она определяет шаг приращения счетчика. По умолчанию счетчик увеличивается на единицу в каждой итерации. В качестве счетчика можно использовать переменную любого целого типа. Пример: Varl := 0; FOR cw := 1 ТО 10 DO Varl := Varl + 1; END_FOR Данный цикл будет выполнен 10 раз и соответственно Varl будет иметь значение 10. Шаг изменения счетчика итераций может быть и отрицательным. Начальное условие в этом случае должно быть больше конечного. Цикл будет закончен, когда значение счетчика станет меньше конечного значения. Цикл FOR исключительно удобен для итераций с заранее известным числом повторов. Для построения правильного цикла достаточно соблюдать два 16

17 простых формальных требования: не изменяйте счетчик цикла и условие окончания в теле цикла. Счетчик и переменные образующие конечное условие в цикле, можно использовать только для чтения; не задавайте в качестве конечного условия максимальное для типа переменной счетчика значение. Так, если для однобайтного целого без знака задать константу 255, то условие окончания не будет выполнено никогда. Цикл станет бесконечным. Циклы WHILE и REPEAT Циклы WHILE и REPEAT обеспечивают повторение группы выражений, пока верно условное логическое выражение. Если условное выражение всегда истинно, то цикл становится бесконечным. Синтаксис WHILE: WHILE DO END_WHILE Условие в цикле WHILE проверяется до начала цикла. Если логическое выражение изначально имеет значение ЛОЖЬ, тело цикла не будет выполнено ни разу. Пример: ci := 64; WHILE ci > 1 DO Varl := Varl + 1; ci := ci/2; END_WHILE Синтаксис REPEAT: REPEAT UNTIL 17 END_REPEAT

18 Правильно построенный цикл WHILE или REPEAT обязательно должен изменять переменные, составляющие условие окончания в теле цикла, постепенно приближаясь к условию завершения. Если этого не сделать, цикл не закончится никогда. 2. Порядок выполнения работы Из ПРИЛОЖЕНИЯ 2 по заданию преподавателя выбирается вариант технологической схемы. На основании заданной технологической схемы и описания технологического процесса разработать: технологические требования к схеме управления; таблицу сигналов; прикладную программу для ПЛК. дать описание работы принципиальной схемы. В таблицу сигналов вносятся: порядковый номер переменной; имя переменной (не должно содержать пробелов и кириллицы); тип переменной (дискретный, аналоговый); класс переменной (локальная, глобальная); адрес (для внутренних переменных не заполняется). Пример заполнения таблицы параметров. Наименование Имя Тип 18 Класс Адрес

19 п/п параметра 1. Температура воздуха Тemp_1 2. Кнопка «Пуск» SB1 3. аналог. дискр. глобал. %IB0 локал. — Создание проекта программы. При создании проекта используется язык структурированного текста ST, реализующий структуры, подобные структурам языка Pascal. Пользователь запускает CoDeSys последовательным выбором приложений: Пуск Все программы 3S Software CoDeSys V2.3 CoDeSys V2.3. Новый проект открывается из главного меню: File New. В открывшемся окне (рис. 2.1) выбирается тип контроллера, PLC150.U-L, выбор подтверждается нажатием клавиши ОК. Рисунок 2.1-Окно конфигурации «Target Settings» программы После выбора проекта выводится экранная форма, задающая тип, имя и язык программирования первичного компонента New POU, главной программы контроллера. Необходимо выбрать язык программирования ST, установив флаги в позициях, указанных на рис.2. 19

20 Рисунок 2.2- Вид окна «New POU» с отмеченными параметрами Примечание. Имя главной программы PLC_PRG и ее тип менять нельзя. После подтверждения выбора нажатием клавиши ОК откроется окно нового проекта с именем по умолчанию Untitled. 4. Параметры входов и выходов. Параметры входов и выходов контроллера задаются на вкладке ресурсов (Resources) Организатора объектов CoDeSys с помощью утилиты PLC Configuration (Конфигуратор ПЛК) (ЛР 1 п.3). 5. Создание программы на языке ST При написании программы в рабочей зоне вкладки POUs вводится текст, состоящий из имен переменных и операторов (Таблица 1). При необходимости используются приведенные выше конструкции IF,FOR, CASE, WHILE и REPEAT. В тексте программы необходимо учесть технологические требования, предъявляемые к системе управления. 20

21 ЛАБОРАТОРНАЯ РАБОТА 3 Программирование ПЛК на языке IL. Цель работы: Изучить принципы составления прикладных программ для промышленных логических контроллеров на языке IL пакета CoDeSys. 1. Общие сведения Язык IL (Instruction list) дословно список инструкций. Это типичный ассемблер с аккумулятором и переходами по меткам. Набор инструкций стандартизован и не зависит от конкретной целевой платформы. Поскольку IL самый простой в реализации язык, он получил очень широкое распространение. Наибольшее влияние на формирование современного IL оказал язык программирования STEP контроллеров фирмы Siemens, Язык IL позволяет работать с любыми типами данных, вызывать функции и функциональные блоки, реализованные на любом языке. Таким образом, на IL можно реализовать алгоритм любой сложности, хотя текст будет достаточно громоздким. В составе МЭК-языков IL применяется при создании компактных компонентов, требующих тщательной проработки, на которую не жалко времени. При работе с IL гораздо адекватнее, чем с другими языками, можно представить, как будет выглядеть оттранслированный код. Благодаря чему, IL выигрывает там, где нужно достичь наивысшей эффективности. К компиляторам это относится в полной мере. В системах исполнения с интерпретатором промежуточного кода выигрыш не столь значителен. Текст на IL это текстовый список последовательных инструкций. Каждая инструкция записывается на отдельной строке. Инструкция может включать 4 поля, разделенные пробелами или знаками табуляции: 21

22 Метка: Оператор Операнд Комментарий Метка инструкции не является обязательной, она ставится только там, где нужно. Оператор присутствует обязательно. Операнд необходим почти всегда. Комментарий — необязательное поле, записывается в конце строки. Ставить комментарии между полями инструкции нельзя. Пример ILпрограммы: МЕТКА1: LD AND S Sync Start Q (*пример IL*) Для лучшего восприятия строки IL выравнивают обычно в колонки по полям. Редактор CoDeSys выравнивает текст автоматически. Помимо этого, редактор «налету» выполняет синтаксический контроль и выделение цветом. Так, корректно введенные операторы выделяются голубым цветом. Аккумулятор Абсолютное большинство инструкции IL выполняют некоторую операцию с содержимым аккумулятора. Операнд, конечно, тоже принимает участие в инструкции, но результат опять помещается в аккумулятор. Например, инструкция SUB 10 отнимает число 10 от значения аккумулятора и помещает результат в аккумулятор. Команды сравнения сравнивают значение операнда и аккумулятора, результат сравнения ИСТИНА или ЛОЖЬ вновь помещается в аккумулятор. Команды перехода на метку способны анализировать аккумулятор и принимать решение — выполнять переход или нет. Аккумулятор IL является универсальным контейнером, способным сохранять значения переменных любого типа. 22

23 В аккумулятор можно поместить значение типа BOOL, затем INT или REAL, транслятор не будет считать это ошибкой. Такая гибкость не означает, что аккумулятор способен одновременно содержать несколько значений разных типов. Только одно, причем тип значения также фиксируется в аккумуляторе. Если операция требует значение другого типа, транслятор выдаст ошибку. В стандарте МЭК вместо термина «аккумулятор» используется термин «результат» (result). Так, инструкция берет «текущий результат» и формирует «новый результат». Тем не менее почти все руководства по программированию различных фирм широко используют термин «аккумулятор». Переход на метку Программа на IL выполняется подряд, сверху вниз. Для изменения порядка выполнения и организации циклов применяется переход на метку. Переход на метку может быть безусловным JMP выполняется всегда, независимо от чего-либо. Условный переход JMPC выполняется только при значении аккумулятора ИСТИНА. Переход можно выполнять как вверх, так и вниз. Метки являются локальными, другими словами, переход на метку в другом POU не допускается. Переходы нужно организовывать достаточно аккуратно, чтобы не получить бесконечный цикл: Скобки Последовательный порядок выполнения команд IL можно изменять при помощи скобок. Открывающая скобка ставится в инструкции после операции. Закрывающая скобка ставится в отдельной строке. Инструкции, заключенные в скобки, выполняются в первую очередь. Результат вычисления инструкций в скобках помещается в дополнительный 23

24 аккумулятор, после чего выполняется команда, содержащая открывающую скобку. Например: LD ST LD MUL SUB ) ST 1 Counter 5 (2 1 y LD MUL SUB ST (*y = 5* (2-1) = 5*) y (*y = 5 * 2-1 = 9*) Скобки могут быть вложенными. Каждое вложение требует организации некоего временного аккумулятора. Это вызывает неоднозначность при выходе из блока скобок командами JMP, RET, CAL и LD. Применять эти команды в скобках нельзя. Модификаторы Добавление к мнемонике некоторых операторов символов модификаторов «С» и «N» модифицирует смысл инструкции. Символ «N» (negation) вызывает диверсию значения операнда до выполнения инструкции. Операнд должен быть типов BOOL, BYTE, WORD или DWORD. Символ «С» (condition) добавляет проверку условий к командам перехода, вызова и возврата. Команды JMPC, CALC, RETC будут выполняться только при значении аккумулятора ИСТИНА. Добавление символа ‘N’ приводит к сравнению условия с инверсным значением аккумулятора. Команды JMPCN, CALCN, RETCN будут выполняться только при значении аккумулятора ЛОЖЬ. Модификатор «N» без «С» не имеет смысла в данных операциях и не применяется. 24

25 Операторы Стандартные операторы IL с допустимыми модификаторами представлены в таблице: Оператор Модификатор LD N ST S N R AND OR XOR NOT ADD SUB MUL DIV MOD GT GE QE NE LE LT JMP CAL RET N, ( N, ( N, ( ( ( ( ( ( ( ( ( ( ( ( CN CN CN Описание Загрузить значение операнда в аккумулятор Присвоить значение аккумулятора операнду Если аккумулятор ИСТИНА, установить логический операнд (ИСТИНА) Если аккумулятор ИСТИНА, сбросить логический операнд (ЛОЖЬ) Поразрядное И Поразрядное ИЛИ Поразрядное ИЛИ Поразрядная инверсия аккумулятора Сложение Вычитание Умножение Деление Деление по модулю > => = <> 26 аппаратных платформ реализуют различные подмножества дополнительных операторов. 2. Порядок выполнения работы Из ПРИЛОЖЕНИЯ 2 по заданию преподавателя выбирается вариант технологической схемы. На основании заданной технологической схемы и описания технологического процесса разработать: технологические требования к схеме управления; таблицу сигналов; прикладную программу для ПЛК. дать описание работы прикладной программы. В таблицу сигналов вносятся: порядковый номер переменной; имя переменной (не должно содержать пробелов и кириллицы); тип переменной (дискретный, аналоговый); класс переменной (локальная, глобальная); адрес (для внутренних переменных не заполняется). Пример заполнения таблицы параметров. п/п Наименование параметра Имя 26 Тип Класс Адрес

27 1. Температура воздуха Тemp_1 2. Кнопка «Пуск» SB1 3. аналог. дискр. глобал. %IB0 локал. — Создание проекта программы. При создании проекта используется язык структурированного текста ST, реализующий структуры, подобные структурам языка Pascal. Пользователь запускает CoDeSys последовательным выбором приложений: Пуск Все программы 3S Software CoDeSys V2.3 CoDeSys V2.3. Новый проект открывается из главного меню: File New. В открывшемся окне (рис. 3.1) выбирается тип контроллера, PLC150.U-L, выбор подтверждается нажатием клавиши ОК. Рисунок 3.1-Окно конфигурации «Target Settings» программы После выбора проекта выводится экранная форма, задающая тип, имя и язык программирования первичного компонента New POU, главной программы контроллера. Необходимо выбрать язык программирования IL, установив флаги в позициях, указанных на рис

28 Рисунок 3.2- Вид окна «New POU» с отмеченными параметрами Примечание. Имя главной программы PLC_PRG и ее тип менять нельзя. После подтверждения выбора нажатием клавиши ОК откроется окно нового проекта с именем по умолчанию Untitled. 4. Параметры входов и выходов. Параметры входов и выходов контроллера задаются на вкладке ресурсов (Resources) Организатора объектов CoDeSys с помощью утилиты PLC Configuration (Конфигуратор ПЛК) (ЛР 1 п.3). 5. Создание программы на языке IL При написании программы в рабочей зоне вкладки POUs вводится текст, состоящий из имен переменных меток, операторов, операндов, комментариев. В тексте программы необходимо учесть технологические требования, предъявляемые к системе управления. ЛАБОРАТОРНАЯ РАБОТА 4 28

29 Программирование ПЛК на языке FBD. Цель работы: Изучить принципы составления прикладных программ для промышленных логических контроллеров на языке FBD пакета CoDeSys. 1. Общие сведения FBD это графический язык программирования. Он работает с последовательностью цепей, каждая из которых содержит логическое или арифметическое выражение, вызов функционального блока, переход или инструкцию возврата. Диаграмма FBD строится из компонентов, отображаемых на схеме прямоугольниками. Входы POU изображаются слева от прямоугольника, выходы справа. Внутри прямоугольника указывается тип POU и наименования входов и выходов. Для экземпляра функционального блока его наименование указывается сверху, над прямоугольником. В графических системах программирования прямоугольник компонента может содержать картинку, отражающую его тип. Размер прямоугольника зависят от числа входов и выходов и устанавливается графическим редактором автоматически. Рисунок 4.1- Пример графического представления экземпляра функционального блока PID Программа в FBD не обязательно должна представлять большую единую схему. Как и в LD, диаграмма образуется из множества цепей, которые выполняются одна за другой. 29

30 В CoDeSys все цепи одного POU отображаются в едином графическом окне, пронумерованные и разделенные горизонтальными линиями (рис. 2). Значения переменных, вычисленные в одной цепи, доступны последующих цепях сразу в том же рабочем цикле. Рисунок Диаграмма FBD из двух цепей Соединительные линии Прямоугольники POU в FBD соединены линиями связи. Соединения имеют направленность слева направо. Вход блока может быть соединен с выходом блока, расположенного слева от него. Помимо этого, вход может быть соединен с переменной или константой. Соединение должно связывать переменные или входы и выходы одного типа. В отличие от компонента переменная изображается на диаграмме без прямоугольной рамки. Ширина соединительной линии в FBD роли не играет. Стандарт допускает использование соединительных линий разной ширины и стиля для соединений разного типа. Порядок выполнения FBD 30 в

31 Выполнение FBD-цепей идет слева направо, сверху вниз. Блоки, расположенные левее, выполняются раньше. Блок начинает вычисляться только после вычисления значений всех его входов. Дальнейшие вычисления не будут продолжены до вычисления значений на всех выходах. Другими словами, значения на всех выходах графического блока появляются одновременно. Вычисление цепи считается законченным только после вычисления значений на выходах всех входящих в нее элементов. В некоторых системах программирования пользователь имеет возможность свободно передвигать блоки с сохранением связей. В этом случае ориентироваться нужно исходя из порядка соединений. Редактор FBD CoDeSys автоматически расставляет блоки в порядке выполнения. Инверсия логических сигналов Инверсия логического сигнала в PBD изображается в виде окружности на соединении, перед входом или переменной. Инверсия не является свойством самого блока и может быть легко добавлена или отменена непосредственно в диаграмме. Метки, переходы и возврат Порядок выполнения FBD-цепей диаграммы можно принудительно изменять, используя метки и переходы, точно так же, как и в релейных схемах. Метка ставится в начале любой цепи, являясь, по сути, названием данной цепи. Цепь может содержать только одну метку. Имена меток подчинены общим правилам наименования идентификаторов МЭК. Графический редактор автоматически нумерует цепи диаграммы. Эта нумерация применяется исключительно для документирования и не может заменять метки. Переход обязательно связан с логической переменной и 31

32 выполняется, если переменная имеет значение ИСТИНА. Для создания безусловного перехода используется константа ИСТИНА, связанная с переходом. Оператор возврата RETURN можно использовать в FBD так же, как и переход на метку, т. е. в связке с логической переменной. Возврат приводит к немедленному окончанию работы программного компонента и возврату на верхний уровень вложений. Для основной программы это начало рабочего цикла ПЛК. 2. Порядок выполнения работы Из ПРИЛОЖЕНИЯ 2 по заданию преподавателя выбирается вариант технологической схемы. На основании заданной технологической схемы и описания технологического процесса разработать: технологические требования к схеме управления; таблицу сигналов; прикладную программу для ПЛК. дать описание работы прикладной программы. В таблицу сигналов вносятся: порядковый номер переменной; имя переменной (не должно содержать пробелов и кириллицы); тип переменной (дискретный, аналоговый); класс переменной (локальная, глобальная); адрес (для внутренних переменных не заполняется). 32

33 Пример заполнения таблицы параметров. п/п Наименование параметра Имя 1. Температура воздуха Тemp_1 2. Кнопка «Пуск» SB1 3. Тип аналог. дискр. Класс Адрес глобал. %IB0 локал. — Создание проекта программы. При создании проекта используется язык структурированного текста ST, реализующий структуры, подобные структурам языка Pascal. Пользователь запускает CoDeSys последовательным выбором приложений: Пуск Все программы 3S Software CoDeSys V2.3 CoDeSys V2.3. Новый проект открывается из главного меню: File New. В открывшемся окне (рис.1) выбирается тип контроллера, PLC150.U-L, выбор подтверждается нажатием клавиши ОК. Рисунок Окно конфигурации «Target Settings» программы После выбора проекта выводится экранная форма, задающая тип, имя и язык программирования первичного компонента New POU, главной программы контроллера. Необходимо выбрать язык программирования FBD, установив флаги в позициях, указанных на рис.2. 33

34 Рисунок Вид окна «New POU» с отмеченными параметрами Примечание. Имя главной программы PLC_PRG и ее тип менять нельзя. После подтверждения выбора нажатием клавиши ОК откроется окно нового проекта с именем по умолчанию Untitled. 4. Параметры входов и выходов. Параметры входов и выходов контроллера задаются на вкладке ресурсов (Resources) Организатора объектов CoDeSys с помощью утилиты PLC Configuration (Конфигуратор ПЛК) (ЛР 1 п.3). 5. Создание программы на языке FBD При написании программы в рабочей зоне вкладки POUs вводится текст, состоящий из имен переменных меток, операторов, операндов, комментариев. В тексте программы необходимо учесть технологические требования, предъявляемые к системе управления. 34

35 ЛАБОРАТОРНАЯ РАБОТА 5 Программирование ПЛК на языке SFC. Цель работы: Изучить принципы составления прикладных программ для промышленных логических контроллеров на языке SFC пакета CoDeSys. 1. Общие сведения SFC это графический язык, который позволяет описать хронологическую последовательность различных действий в программе. Для этого действия связываются с шагами (этапами), а последовательность работы определяется условиями переходов между шагами. 35

36 Рисунок Пример SFC диаграммы Любая SFC-схема составляется из элементов, представляющих шаги и условия переходов (рис.5.1). Шаги показаны на схеме прямоугольниками. Реальная работа шага (действия) описывается в отдельном окне системы программирования и не отражается на диаграмме. О назначении шага SFC говорит только его название или, если этого не достаточно, краткое текстовое описание (комментарий). Шаги на схеме могут быть пустыми, что не вызывает ошибки при компиляции проекта. Пустые шаги являются нормой при применении программирования сверху вниз, характерного для SFC. Определить действия, соответствующие шагу, можно в любое время. Нет ничего удивительного, если пустые шаги останутся и в законченном проекте. Задачей пустого шага является ожидание перехода. Переходы Ниже шага на соединительной линии присутствует горизонтальная черта, обозначающая переход. Условием перехода может служить логическая переменная, логическое выражение, константа или прямой адрес. Переход выполняется при соблюдении двух условий: 1) переход разрешен (соответствующий ему шаг активен); 2) условие перехода имеет значение TRUE. Простые условия отображаются непосредственно на диаграмме справа от черты, обозначающий переход. В CoDeSys на диаграмме можно записывать только выражения на языке ST. Для громоздких условий применяется другой подход. Вместо условия на диаграмме записывается только идентификатор перехода. Само же условие описывается в отдельном 36

37 окне с применением языка IL, ST, LD или FBD. Переменные или прямые адреса используются в условии перехода только для чтения. В условном выражении перехода нельзя вызывать экземпляры функциональных блоков и использовать операцию присваивания. Признаком того, что идентификатор перехода на диаграмме является отдельно реализованным условием, а не простой логической переменной, служит закрашенный угол перехода. В качестве условия перехода может быть задана логическая константа. Если задано TRUE, то шаг будет выполнен однократно, за один рабочий цикл, далее управление перейдет к следующему шагу. Если задано условие FALSE, то шаг будет выполняться бесконечно. Начальный шаг Каждая SFC-схема начинается с шага, выделенного графически двойными вертикальными линиями или по всему периметру. Это начальный шаг. Наименование начального шага может быть произвольным (по умолчанию Init). Начальный шаг присутствует обязательно, хотя и может быть пустым. Параллельные ветви Несколько ветвей SFC могут быть параллельными. Признаком параллельных ветвей на схеме является двойная горизонтальная линия. Каждая параллельная ветвь начинается и заканчивается шагом. То есть условие входа в параллельность всегда одно, условие выхода тоже одно на всех. Параллельные ветви выполняются теоретически одновременно. В жизни это означает — в одном рабочем цикле, слева направо. Условие перехода, завершающее параллельность, проверяется только в случае, если в каждой параллельной ветви активны последние шаги. Альтернативные ветви 37

38 Несколько ветвей SFC могут быть альтернативными ветвями. Признаком альтернативных ветвей на схеме является одинарная горизонтальная линия. Каждая альтернативная ветвь начинается и заканчивается собственным условием перехода. Проверка альтернативных условий выполняется слева направо. Если верное условие найдено, то прочие альтернативы не рассматриваются. В альтернативных ветвях всегда работает только одна из ветвей, поэтому ее окончание и будет означать переход к следующему за альтернативной группой шагу. При создании альтернативных ветвей желательно задавать взаимоисключающие условия. В этом случае вероятность допустить ошибку при анализе или в процессе доработки диаграммы значительно ниже. Переход на произвольный шаг В общем случае SFC-схема выполняется сверху вниз. Стандартом допускается создание переходов на произвольный шаг. Для этого применяются соединительные линии с промежуточными стрелками или поименованные переходы. То есть переход выполняется на шаг, имя которого указано под стрелкой. В англоязычных источниках переход на произвольный шаг называется «прыжок» (jump). Прыжок из одной ветви параллельного блока наружу вызывает эффект размножения маркера. Прыжок внутрь параллельного блока нарушает параллельность ветвей. Подобных трюков необходимо избегать. 2. Порядок выполнения работы Из ПРИЛОЖЕНИЯ 2 по заданию преподавателя выбирается вариант технологической схемы. На основании заданной технологической схемы и описания технологического процесса разработать: технологические требования к схеме управления; таблицу сигналов; 38

39 прикладную программу для ПЛК; дать описание работы прикладной программы. В таблицу сигналов вносятся: порядковый номер переменной; имя переменной (не должно содержать пробелов и кириллицы); тип переменной (дискретный, аналоговый); класс переменной (локальная, глобальная); адрес (для внутренних переменных не заполняется). Пример заполнения таблицы параметров. п/п Наименование параметра Имя 1. Температура воздуха Тemp_1 2. Кнопка «Пуск» SB1 3. Тип аналог. дискр. Класс Адрес глобал. %IB0 локал. — Создание проекта программы. При создании проекта используется язык структурированного текста ST, реализующий структуры, подобные структурам языка Pascal. Пользователь запускает CoDeSys последовательным выбором приложений: Пуск Все программы 3S Software CoDeSys V2.3 CoDeSys V2.3. Новый проект открывается из главного меню: File New. В открывшемся окне (рис.5.1) выбирается тип контроллера, PLC150.U-L, выбор подтверждается нажатием клавиши ОК. 39

40 Рисунок Окно конфигурации «Target Settings» программы После выбора проекта выводится экранная форма, задающая тип, имя и язык программирования первичного компонента New POU, главной программы контроллера. Необходимо выбрать язык программирования SFC, установив флаги в позициях, указанных на рис.5.2. Рисунок Вид окна «New POU» с отмеченными параметрами Примечание. Имя главной программы PLC_PRG и ее тип менять нельзя. После подтверждения выбора нажатием клавиши ОК откроется окно нового проекта с именем по умолчанию Untitled. 4. Параметры входов и выходов. Параметры входов и выходов контроллера задаются на вкладке ресурсов (Resources) Организатора объектов CoDeSys с помощью утилиты PLC Configuration (Конфигуратор ПЛК) (ЛР 1 п.3). 5. Создание программы на языке SFC 40

41 При написании программы в рабочей зоне вкладки POUs вводится текст, состоящий из имен переменных меток, операторов, операндов, комментариев. В тексте программы необходимо учесть технологические требования, предъявляемые к системе управления. ПРИЛОЖЕНИЕ 1 Задание 1. Линия дозации продукта Продукт с помощью загрузочного транспортера 1 попадает в бункер 2. Транспортер работает до тех пор, пока вес продукта в бункере не станет больше заданного. срабатывает задвижка 3 Затем транспортер 1 останавливается, и включается транспортер 4. После разгрузки бункера, задвижка закрывается, транспортер 4 останавливается и загрузка начинается вновь. Задание 2. 41

42 Тепловая пушка Воздух вентилятором 1 прогоняется через тепловую пушку. В зависимости от уставки температурывключается определенное колличество нагревательных элементов 2. Следует учесть, что нагревательные элементы не должны работать при выключенном вентиляторе. 3-измеритель температуры. Задание 3 Водонагревательная установка Вода через заливной клапан 1 заполняет ёмкость до определенного уровня, измеряемого датчиком уровня 2. Вода ТЭНом 5 нагревается до заданной температуры, измеряемой датчиком температуры 3, и сливается через сливной клапан 4. Задание 4. 42

43 Теплогенератор При нажатии на кнопку пуск, звучит предупредительная сигнализация и запускается основной вентилятор теплого воздуха 1. После запуска основного вентилятора, включается топливный вентилятор 2 для продувки (10 с). Затем включается топливный соленоидный клапан 3 и топливная смесь закачивается в камеру сгорания (5 с). Срабатывает запальная свеча 4 (4 с). Реле пламени 5 контроллирует наличие пламени. Если пламя не появилось в течечние 5 с., процесс розжига выполняется еще раз (с продувки воздухом 15с.). При повторном незапуске агрегата включается продувка 1мин. и аварийная сигнализация. При нормальном запуске агрегата, система должна контролировать температуру воздуха на выходе термопреобразователем 6 и изменять скорость вращения топливного вентилятора 2. При остановке агрегата, продувка должна осуществляться до тех пор, пока температура не упадет ниже Тmin. Задание 5. 43

44 Описание технологического процесса Зерно через задвижку 1 поступает на дробилку 2 и далее на транспортер смеситель 5. Сюда же поступают переработанные в мойкекорнерезке 4 корнеплоды (3 транспортер нарезанных корнеплодов). Транспортером смесителем 5 смесь загружается Предусмотреть совместную и раздельную в работу смеситель линий зерна 6. и корнеплодов. Задание Описание технологического процесса Зерно из бункера через задвижку 1 поступает на транспортер 2 и далее в дробилку 3. Измельченное зерно норией 4 подается на шнековый 44

45 транспортер 5 и далее либо в бункер 8 либо в бункер 9. Линия должна отключиться при заполнении одного из бункеров. Режим работы электродвигателей поточной линии кратковременный. Задание Описание технологического процесса Из завальной ямы 1 семечки через задвижку 2 норией подаются на шнековый транспортер и затем через задвижку 5 и 6 заполняют бункера 7 и 8. Из бункеров 7 и 8 через задвижки 9 и 10 семечки поступают на наклонный транспортер 11, который заполняет жим12. После жима масло из накопительной емкости насосом 13 подается в емкость 18. Жмых после отжима поступает на транспортер 14 и далее норией 15 загружается в накопительный бункер 16. Режим работы двигателей кратковременный. 45

46 Задание Описание технологического процесса Зерно поступает на транспортер 4 через одну из задвижек 1,2 или 3 или все вместе (выбор задвижки производится оператором) и далее либо в тележку 7 либо на дробилку 5 и далее в бункер 6. Схема должна отключаться при срабатывании датчика уровня в бункере 6 или при срабатывании датчика давления под тележкой. Задание

47 Описание технологического процесса Зерно из завальной ямы через заслонку 1 норией 2 подается на дробилку 3, где оно измельчается. Измельченное зерно через заслонку 4 загружается в бункер 5. Предусмотреть отключение схемы в рабочем порядке и при срабатывании датчиков уровня. Двигатели технологической схемы работают в кратковременном режиме. Задание Описание технологического процесса Технологическая линия состоит из линии переработки зерна и линии переработки корнеплодов. В состав линии переработки зерна входят задвижка 1 в завальной яме, нория 2, дробилка 3. Линия переработки корнеплодов содержит бункер нерезаных корнеплодов 6, задвижку бункера7, мойку корнерезку 8, транспортер измельченных корнеплодов 5. Продукты с обеих линий поступают на транспортер смеситель 4 и далее 47

48 загружаются в тележку 9. Предусмотреть раздельную и совместную работу линий переработки зерна и корнеплодов. Задание Описание технологического процесса Зерно из завальной ямы норией 1 подается на триерный блок3. Очищенное зерно норией 4 загружается в бункер 5. Предусмотреть работу линии с очисткой зерна и без очистки. Задание Описание технологического процесса 48

49 Зерно через заслонку 1 норией 2 подается на метательный транспортер3. Задание Описание технологического процесса Зерно из бункера 1 через заслонку 2 шнековым транспортером 3 подается на мельницу 4. Продукт помола норией 5 подается в бункер 6. Предусмотреть отключение линии при заполнении бункера по сигналу датчика уровня. Задание Описание технологического процесса 49 4

50 Продукт из бункера 1 шнековым дозатором корма 3 подается в бункер дозатор кормораздатчика 4. Предусмотреть отключение линии при срабатывании датчика уровня в бункере дозаторе 4. Для исключения образования сводов при хранении корма предусматривается вибратор 2. Задание Описание технологического процесса Корнеплоды из бункера 5 через электромагнитную заслонку 6 поступают на скребковый транспортер 4 ТК-5Б, который производит загрузку корнеклубнемойки 3. Измельченные корнеплоды шнековым транспортером 2 ШЗС-40 загружаются в смеситель 1. Задание Описание технологического процесса 50

51 При открытии заслонки 1 продукт норией 2 подается в дробилку 3. Измельченный продукт из дробилки через заслонку 4 заполняет бункер 5. Предусмотреть отключение линии при заполнении бункера по сигналу датчика уровня. Задание Описание технологического процесса Зерно из бункера 1 через заслонку 2 шнековым транспортером 3 подается на дробилку 4. Измельченный продукт транспортером 5 через электромагнитные заслонки 6, 7, 8 загружается в один из бункеров. Выбор бункера осуществляется оператором. 51

52 Задание Описание технологического процесса Глина из завальной ямы 1 транспортером подается на камневыделительные вальцы 3. Далее глина будет проходить через гладкие вальцы 4 и поступать в глиномешалку 5. Глина прессом 6 выдавливается и поступает на резательный механизм 7. 52

53 ЗаданиеS19. Промежуточна я емкость K SL1 SL 2 E K YA6 YA5 SP1 YA4 YA3 в YA7 моечную YA 1 YA2 Описание технологического процесса SP1 Система поения воды должна предусматривать следующие режимы работы: подача воды в систему поения без подогрева в летний период; подача в систему поения подогретой воды в зимний период; подача подогретой воды в моечную. В летний период вода поступает электромагнитные клапаны YA1, YA2, YA3. 53 в систему поения через

54 В зимний период вода через заслонку YA6 при закрытой заслонке YA3 вода поступает в водонагреватель ЕК1. Водонагреватель включается при его заполнении. Контроль за уровнем воды в водонагревателе осуществляется манометрическими датчиками уровня. Когда вода достигает заданной температуры, водонагреватель отключается, включается насос и подает воду в систему поения через открытую заслонку YA5. Контроль за давлением воды в системе осуществляется с помощью датчиков давления SP1,SP2. Аналогичным образом система работает в том случае, если подогретую воду необходимо подавать в моечную. Отличие состоит в том, что вода в моечную поступает через заслонку YA7 при закрытой заслонке YA5. Задание 20. М1 EК 1 Описание технологического процесса Разработать схему управления отопительно-вентиляционной установкой. Подача воздуха осуществляется в вентилятором. отопительно-вентиляционную В холодное время года систему воздух подогревается калорифером. Теплый воздух в помещение попадает через систему воздуховодов. В том случае, если температура воздуха в помещении понижается двигатель вентилятора переходит на пониженную частоту вращения. 54

55 Задание Описание технологического процесса Продукт на платформенный раздатчик корма 3 подается загрузочным транспортером 2 и шнековым дозатором корма из бункера 1. Платформенный раздатчик начинает движение после того, как на него падает первая порция корма. При этом транспортер 3 движется вправо. При наезде на конечный выключатель SQ1 корм сбрасывается в кормушки и транспортер останавливается. Обратное движение платформенного раздатчика начинается через одну-две секунды, при этом происходит заполнение второй половины платформенного раздатчика. Через выдержку времени должно произойти отключение шнекового дозатора корма, а остатков корма на загрузочном транспортере 2 должно хватить для заполнения оставшейся части фронта кормления. При наезде на конечный выключатель SQ2 происходит сбрасывание корма во вторую половину 55

56 кормушек и отключение всей схемы. Сброс корма в кормушки производится плужковыми сбрасывателями. СОДЕРЖАНИЕ 1. Лабораторная работа 1. Программирование ПЛК на языке LD 1 2. Лабораторная работа 2. Программирование ПЛК на языке ST Лабораторная работа 3. Программирование ПЛК на языке IL Лабораторная работа 4. Программирование ПЛК на языке FBD Лабораторная работа 5. Программирование ПЛК на языке SFC 34 Приложение

57 ЛИТЕРАТУРА 1. Петров И.В., Стандартные Дьяконов языки и В.П. приемы Программируемые прикладного контроллеры. проектирования./ И.В.Петров, В.П.Дьяконов. М.: СОЛОН-Пресс И.Г.Минаев, В.В.Самойленко Программируемые логические контроллеры. Ставрополь: Изд-во «АГРУС», Руководство пользователя по программированию ПЛК в CoDeSys S — Smart Software Solutions GmbH, ПК Пролог

Язык релейных диаграмм LD и его применение

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

Какие программы может выполнять промышленный контроллер? Ответ прост: практически любые. Современный контроллер свободно программируем, т.е. предоставляет разработчику возможность создавать пользовательские программы произвольной структуры без ограничений их функциональности, будь то программа управления пастеризатором на молочном комбинате или управление колонной ректификации на НПЗ. По сути, единственным ограничением здесь может быть объем свободных ресурсов контроллера.

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

Современные средства разработки чрезвычайно функциональны и предлагают разработчику множество возможностей:

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 прост в освоении, и при этом позволяет разрабатывать сложнейшие алгоритмы автоматизированного управления без каких-либо специфических знаний других языков программирования.

Язык лестничной диаграммы 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 – Катушка обнаружения задних фронтов

Ld язык программирования

Язык релейных диаграмм LD и его применение

Язык релейных или лестничных диаграмм LD (от англ. Ladder Diagram) представляет собой простой в обращении, графический язык разработки. В его основе лежат релейно-контактные схемы, поэтому элементами логики здесь выступают: обмотки реле, контакты реле, горизонтальные и вертикальные перемычки.

Пары контактов реле или кнопки — вот основные логические переменные языка LD, при этом состояние переменных — это есть ни что иное, как состояние контактов: разомкнутое или замкнутое.

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

Как таковой, язык релейных схем существовал еще во времена Томаса Эдисона, и лишь в начале 1970-х он был адаптирован для первых ПЛК. В самом начале данный язык появился в пакетах программирования ПЛК компаний Modicon и Allen-Bradly, причем символика была заимствована именно из электротехнической области.

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

В Соединенных Штатах например, язык релейных диаграмм — самый распространенный язык для программирования ПЛК. Он также широко распространен по всему миру. Написанная программа выглядит интуитивно понятно, так что любой инженер-электрик сможет легко ее прочитать и понять, ведь логические операции здесь представляются в виде электрической цепи с разомкнутыми и замкнутыми контактами.

Результат логической операции «ЛОЖЬ» или «ИСТИНА» в общем случае имеет под собой соответствующее состояние цепи: если ток течет — «ИСТИНА», «true», если тока нет — «ЛОЖЬ», «false».

Достоинства и недостатки языка LD

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

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

Как выглядит программа на LD

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

В языке LD для каждого контакта имеет место логическая переменная, которая и определяет состояние контакта. Для нормально-разомкнутого контакта переменная принимает значение «ИСТИНА» когда контакт замкнут, или принимает значение «ЛОЖЬ», когда контакт разомкнут. Надпись над контактом — это имя переменной и одновременно название контакта.

При последовательном соединении нескольких контактов логика равноценна операции «И». Параллельно соединенные контакты воспроизводят логическую операцию «монтажное ИЛИ». Цепь замкнута «ON», разомкнута — «OFF», что сказывается на состоянии обмотки реле и на значении логической переменной применительно к обмотке — «ЛОЖЬ» или «ИСТИНА».

-(/)- катушка реле инверсная

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

Для инверсных контактов (нормально-замкнутых -|/|- ) характерно значение переменной «ИСТИНА», когда контакт разомкнут, и значение переменной «ЛОЖЬ» — когда контакт замкнут. Работа такого контакта эквивалентна логической операции НЕ. Комбинацией инверсного и прямого контакта получается переключающий контакт.

Кроме того, как видите, обмотки реле также могут быть инверсными, что означает, что логическая переменная принимает инверсное значение по отношению к состоянию цепи: ток течет — «ЛОЖЬ», тока нет — «ИСТИНА».

Пример использования языка LD:

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

Еще один очень распространенный язык программирования ПЛК:

Язык функциональных блоковых диаграмм (FBD)

Мы планируем развивать эту тему здесь:

Обучение применению и программированию ПЛК

Ladder Diagram

Ladder Diagram (англ. LD, англ. LAD, рус. РКС) — язык релейной (лестничной) логики.

Применяются также названия:

  • язык релейно-контактной логики
  • релейные диаграммы
  • релейно-контактные схемы (РКС)
  • язык программирования релейно-лестничной логики стандарта МЭК 61131-3.

Пример логического выражения на LD

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

Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течёт; ложь — если ток не течёт).

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

Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.

  • ─┤ ├─ Нормально разомкнутый контакт разомкнут при значении ложь, назначенной ему переменной и замыкается при значении истина.
  • ─┤/├─ Нормально замкнутый контакт, напротив, замкнут, если переменная имеет значение ложь, и разомкнут, если переменная имеет значение истина.
  • ─()─ Итог логической цепочки копируется в целевую переменную, которая называется катушка (англ. coil). Это слово имеет обобщённый образ исполнительного устройства, поэтому в русскоязычной документации обычно говорят о выходе цепочки, хотя можно встретить и частные значения термина, например катушка реле.

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

Дизъюнкции AvB соответствует схема, составленная из двух параллельно-соединенных контактов А и В.

Конъюнкции А&В соответствует схема, составленная из двух последовательно соединенных контакт А и В.

Отрицанию высказывания А соответствует размыкающий контакт А, управляемый тем же устройством, что и контакт А

В 1910 физик Эренфест П.С. указал на возможность применения алгебры логики при создании релейно-контактных схем. В 1938 Клод Шэннон написал книгу «Символический анализ релейно-контактных схем».

Язык релейно-контактных схем (LD)‌

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

Структура команды на языке релейно-контактных схем показана на рисунке 11.1.

Рисунок 11.1 – Структура команды

11.1 Основные команды‌

Команда (LD) нормально открытый контакт

Прочитав этот сигнал, контроллер начинает постоянно проверять состояние входа, норме которого указан программистом. (Далее для простоты изложения будут указаны конкретные номера, они выбраны произвольно). И как только контролер определяет изменение состояния входа (X1), с выключено на включено, следует включение выхода (Y1). Данный символ может относиться не только к физическим входам контроллера, а также и к внутренним (вспомогательным) реле. Число и ограничения по использованию внутренних реле определяется только возможностями контроллера.

Команда (LDI) нормально закрытый контакт

Прочитав этот сигнал, контроллер начинает постоянно проверять состояние входа (X2). И как только контроллер определяет изменение состояния входа (X2), с включено на выключено, следует включение выхода (Y1). Данный символ может относиться не только

к физическим входам контроллера, а также и к внутренним (вспомогательным) реле. Логика работы соответствует таблице 11.1.

Таблица 11.1 – Таблица логического состояния входов

LD нормально открытый контакт

LDI – нормально закрытый контакт

Команда (OUT) инициализация Выхода

Прочитав эту команду, контроллер изменит состояние выхода (Y1), с выключено на включено. Так же, как и в случае с входами данный символ может относиться не только к физическим выходам контроллера, но и к внутренним (вспомогательным) реле. Число и ограничения по использованию внутренних реле определяется только возможностями контроллера. Логика работы соответствует таблице 11.2.

Таблица 11.2 – Таблица логического состояния выходов

Примечание:

Избегайте двойной записи выходов (double coil) , так как это может привести к помехам при отработке программы.

Пример двойной записи приведен на рисунке 11.2 а – ошибочная, б – верная запись:

Рисунок 11.2 – Пример двойной записи выхода

Исходим из того, что вход X1 включен (сигнал «1»), а вход X2 отключен (сигнал «0»).

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

Эта программная последовательность имеет следствием то, что когда выключится X1, Y3 останется включенным, при условии, что был включен Х2.

Для исправления такой ошибки, необходимо использовать оператор «ИЛИ». (см. далее)

Y0 будет в состоянии «истина», когда вход Х0 будет включен («истина») , т.е. замкнут.

Y0 будет в состоянии «истина», когда вход Х0 будет включен («истина») , т.е. замкнут.

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

Рисунок 11.3 – Зависимость

отработки выходов от значения входов

Отработка зависимости выходов от значения входов показана на рисунке 11.3:

Команды логических связей процесса (AND/ANI/OR/ORI)

Команда (AND) логическое умножение

Операция логического умножения. В языках программирования и языках запросов обозначается символами

Рисунок 11.4 Логическое умножение

AND, И, & и другими способами. Результатом операции является «истина», если оба операнда принимают значение

«истина», и «ложь» – в остальных случаях. Пример записи команды показан на рисунке 11.4.

Команда (ANI) – отрицание логического умножения

По аналогии с предыдущим операндом результатом операции является «истина», если Х0 будет замкнут, и Х1 – разомкнут, т.е. оба входа примут значение «истина», в остальных случаях Y0 будет

«ложь». Пример записи команды показан на рисунке 11.5.

Рисунок 11.5 – Отрицание логического умножения

Команда (OR) логическое сложение

ского сложения. В языках программирования и языках запросов обозначается символами OR и другими способами. Результатом операции является «истина», если оба или один из операндов принимают значение «истина», и «ложь» – в остальных случаях. Пример записи команды показан на рисунке 11.6.

Рисунок 11.6 – Логическое сложение

Команда (ORI) отрицание логического сложения

Аналогично предыдущему варианту. Пример записи команды показан на рисунке 11.7.

Рисунок 11.7 – Отрицание логического сложения

Команды (LDP) и (LDF) – управление по фронтам входных сигналов‌

При необходимости использовать фронты сигналов входов (передний или задний) сигнал входа будет иметь вид

Команда LDP (управление по переднему фронту)

Команда LDF (управление по заднему фронту)

Пример использования управления по фронтам сигналов показан на рисунке 11.8.

Рисунок 11.8 – Управления по фронтам сигналов

Внутреннее реле М100 (меркер) включается на время включения X1 или при положительном фронте X0 (моменте его включения).

Выход Y0 включается при отрицательном фронте X0 (моменте его отключения).

Пример, объясняющий функциональность команд прямой установки и сброса, показан на рисунке 11.9.

Состояние сигнала операнда с помощью «SET/RST» команд (включение/выключение) может устанавливаться непосредственно.

С помощью «SET/RST» могут устанавливаться в «1»/»0″ (включаться/выключаться) соответствующие операнды, например: Y (выход) , M (внутреннее реле) или S (состояние шагов).

Также «RST» применяется для обнуления регистров и счетчиков.

Рисунок 11.9 – Команды прямой установки

Примечание: команда «RST» преобладает над командой

Команда (INV) – Инверсия результата обработки

Инвертирует состояние сигнала результата стоящей впереди команды. Полученный согласно обработки сигнал «1», после инверсии становится «0», и соответственно наоборот «0» становится «1».

Команда (NOP) – Пустая строка в программе

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

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

Команда (END) – конец программы

Окончание программы ПЛК и переход к началу программы (шаг 0). Каждая программа ПЛК должна завершаться командой

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

Программирование внутреннего реле‌

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

Рисунок 11.10 – Пример программы для ПЛК

Таблица 11.3 дает представление о том, как контроллер хранит полученные значения в регистрах

Таблица 11.3 – Пример состояния регистров входов и выходов ПЛК

Регистр входов (Х0…Х15)

Регистр выходов (Y0…Х15)

Регистр входов:

− в регистре X1 находится значение «0» (бит «0»), то есть вход (X1) – выключен;

− в регистре X2 находится значение «1» (бит «1») следовательно, вход (X2) – включен.

Регистр выходов:

− в регистре Y1 находится значение «0» (Бит «0»), то есть выход (Y1) – выключен.


В действительности во всех остальных ячейках находится значение «0», но они не отображены, чтобы сосредоточиться на примере.

Рассмотрим то, как изменятся значения в регистрах после того, как включится выключатель – вход (X1). Значения регистров выходов приведены в таблице 11.4.

Рисунок 11.11 – Реакция выхода на изменение состояния входа

Таблица 11.4 – Пример состояние регистров входов и выходов ПЛК

Регистры входов (Х0…Х15)

Регистры выходов (Y0…Х15)

Согласно схемы после включения входа (Х1) включился и выход (Y1) – электродвигатель заработал и технологический процесс пошёл. Рисунок 11.11 иллюстрирует это.

Таблица 11.5 описывает все возможные состояния для двух входов и одного выхода.

Входы ( Х1/Х2 ) Выход

( Y1 ) Значение врегистра

LDI ( X2 ) OUT ( Y1)

Таблица 11.5 – Таблица возможных состояний входов и выходов ПЛК

Из таблицы 11.5 можем видеть, что контроллер выполнит операцию включения выхода (Y1) тогда, когда вход (X1) и вход (X2) будут в состоянии «истина».

Данный пример показывает (рисунок 11.12), как работает логика «AND» («И»), т. е. выход (Y1) изменит свое состояние «0» на

«1» тогда и только тогда, когда вход (X1) и вход (X2) будут в состоянии «истина». Во всех остальных случаях выход (Y1) будет в состоянии «0», т. е. «выкл.».

Рисунок 11.12 – Пример работы логики «И»

Использование внутреннего реле (меркера) – контроль уровня.

Предположим нам необходимо постоянно поддерживать определенный уровень в баке с водой (рисунок 11.13). Для решения необходимо:

датчик верхнего уровня – вход (X2) (переходит в состояние

«включено», когда уровень воды падает);

датчик нижнего уровня – вход (X1) (переходит в состояние

«включено», когда уровень воды падает);

насос – выход (Y1).

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

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

Включение насоса при достижении нижнего уровня;

Выключение насоса при достижении верхнего уровня.

Рисунок 11.13 – Схема программы для

Рисунок 11.14 – Бак

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

Когда вода опустится ниже уровня второго датчика, то оба входа (вход (X1) и вход (X2)) изменят свое состояние с «0» на «1», за этим последует изменение состояния внутреннего реле M1 с «0» на

«1» и включение насоса.

Когда вода поднимется до уровня второго датчика, то вход (X2) будет в состоянии «1», а вход (X1) изменит свое состояние с «1» на

«0», и в результате насос будет продолжать работать, так как внутреннее реле будет в состоянии «1» до тех пор, пока вода не достигнет уровня верхнего датчика и не изменит состояние входа (X2) с

«1» на «0». За этим последует изменение состояния регистра M1 с

«1» на «0» и выключение насоса.

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

Программирование счетчика. Команда COUNTER‌

Счетчик – самое простое устройство в контроллере, так как предназначен только для одного – считать. Конечно, в реальности в зависимости от модели контроллер может поддерживать различные варианты использования данной функции:

суммирующие счётчики (прямой счет 1, 2, 3 …);

обратные счётчики (счет вниз 3, 2, 1 …);

 счет вверх-вниз (счет вниз 1, 2, 3, 4, 5, 4, 3, 2, 3, 4, 5 …).

Возможность использования того или другого типа счетчика относится только к возможностям конкретной модели контроллера.

Дополнительно счетчики делятся по способу обработки импульсов на два основных типа:

Программные – напрямую зависят от быстродействия контроллера и не могут работать быстрее скорости обработки двух программных циклов (при использовании программного счетчика допускается, что быстродействии счетчика не превышает «Времени цикла обработки» Х2. В противном случае необходимо использовать высокоскоростные аппаратные счетчики);

Аппаратные – не зависят от быстродействия контроллера и могут работать быстрее времени обработки одного программного

цикла (с частотой до 100 кГц). Мы можем считать, что данный тип счетчиков физически существует;

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

Для правильного использования счетчиков необходимо определить для себя всего 3 вещи:

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

До какого значения мы собираемся считать импульсы.

Диапазон, в котором может считать контролер 0 … 32.767, -32.768 …

-32.768, 0 … 65535, … зависит только от конкретной модели контроллера;

По какому условию мы можем остановить счет.

Команда (OUT Сn Кm) – Инициализация счетчика.

С – обозначение счетчика;

n – число от 1 до 256 – номер счетчика;

К – обозначение константы;

m – число от 1 2.147.483.648, до которого будет вестись счет.

Например, при n = 1, m = 3 :

Вспомним наш первый пример и попробуем решить следующую задачу. Пусть насос (выход (Y1)) включится только после того, как мы три раза включим-выключим вход (X2) (см. рисунок 11.14).

То есть при включении входа (X1) – счетчик (С1) установится в значение «0»;

Первое нажатие на вход (X2) – счетчик (С1) сравнит «1» = К3 («3») – если нет, то запомнит «1»;

Второе нажатие на вход (X2) – счетчик (С1) прибавит «1», сравнит «2» = К3(«3») – если нет, то запомнит «2»;

Третье нажатие на вход (X2) – счетчик (С1) прибавит «1» сравнит «3» = К3(«3») – если да, то сменит состояние С1 с «0» на «1» и насос заработает;

Повторное включение Входа (X1) – счетчик (С1) установится в значение «0» и цикл начнется с начала.

Рисунок 11.15 – Схема и диаграмма работы счетчика

Программирование таймера. Команда TIMER‌

Попробуем классифицировать, какими бывают таймеры:

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

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

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

Что мы должны определить для себя – это всего лишь 2 вещи:

Какой из входов запустит таймер;

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

С того момента, когда все команды перед символом таймера примут значение – «истина», таймер начинает отсчёт времени и по

достижении установленного значения переключит состояния выхода с «включено» на «выключено» или наоборот. В любой момент времени работы таймера есть возможность отображать его текущее состояние. Диапазон, в котором может работать контроллер (0 … 32.767, -32.768 … -32.768, 0 … 65535) зависит только от конкретной модели контроллера.

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

Команда (OUT Tn Кm) – Инициализация таймера.

Т – обозначение таймера;

n – число от 1 до 256-номер таймера;

m – число от 1 до 32768, до которого будет вестись

Например, при n = 1, m

Пример 1: Таймер с задержкой по включению.

Вспомним наш пример с уровнем воды в баке и решим следующую задачу: пусть насос (выход (Y1)) включится через три секунды после включения входа (X1). Схема работы контроллера показана на рисунке 11.16.

Вход (X1) включился – таймер (Т1) начал отсчет времени;

Прошло три секунды – выход (Y1) включился;

Вход (X1) выключился – выход (Y1) выключился.

Вход (X1) включился – таймер (Т1) начал отсчет времени;

Прошло три секунды – выход (Y1) включился;

Вход (X1) выключился – выход (Y1) выключился.

Рисунок 11.16 – Схема и временная диаграмма программирования таймера с задержкой по включению

Понятно, что шаг мог бы быть и 0,1 мс или 0,01 мс и т. д. Аналогично работает таймер с задержкой по выключению.

Пример 2: Таймер с накоплением

Рисунок 11.17 – Схема и временная диаграмма программирования таймера с накоплением

Пусть насос (выход (Y1)) включится только после того, как вход (X1) отработает цикл включено-выключено-включено, общей длительностью 6 секунд. Схема работы контроллера показана на рисунке 11.17.

Вход (X1) включился – таймер (Т1) начал отсчет времени;

Прошло три секунды – выход (X1) выключился;

Таймер запомнил время работы входа(X1) – t1 = 3 с;

Вход (X1) включился – таймер (Т1) продолжил отсчет времени, как только T = t1 + t2 = 6 с, то выход (Y1) включился;

Вход (X2) включился – таймер (Т1) изменил свое состояния с

«1» на «0» и выход (Y1) выключился.

Пример 3: Таймер с памятью

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

Рисунок 11.18 – Схемы и временные диаграммы

работы таймера с памятью

Теперь вернемся немного назад и вспомним, как работает контроллер – что такое быстродействие? Конечно, если использовать таймер с шагом 1 секунда, то можно не беспокоиться, но когда используются таймеры, которые работают с шагом от 0,001 секунды, просто необходимо помнить о быстродействии контроллера.

Рассмотрим два типичных случая, в которых обычно не учитывается погрешность при использовании таймера:

погрешность по входу;

погрешность по выходу.

Погрешность по входу (рисунок 11.19) означает, что с момента, когда включится вход (X1), до начала работы таймера пройдет время, равное:

tВып.прог  2  tВх  tВых  tПогр.по Вых.

Рисунок 11.19 – Временная диаграмма погрешности таймера по входу

Погрешность по выходу (рисунок 11.20) означает, что с момента, когда выключится вход (X1), до начала работы таймера пройдет время, равное

tВып.прог  2  tВх  tВых  tПогр.по Вых.

Рисунок 11.20 – Временная диаграмма погрешности таймера по выходу

Таким образом, если контроллер имеет tЦикла обработки = 5 мк и поддерживает работу таймера с шагом 1 мсек., то минимальный шаг,

с которым может корректно работать таймер контроллера, должен быть больше, чем 10 мсек. В действительности, кроме «программной погрешности», мы должны принимать во внимание и существование

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

Программирование одиночных импульсов. Команды (PLF) и (PLS)‌‌

Генерация одного импульса – опознание фронта сигнала независимо от продолжительности входного сигнала для включения соответствующего операнда (выхода Y или внутреннего реле M). Операнд остается включенным на протяжении одного цикла программы (скана).

PLS – генерация одиночного импульса по возрастающему фронту входного сигнала.

PLF – генерация одиночного импульса по cпадающему фронту входного сигнала.

Пример применения однократных импульсов показан на рисунке 11.21:

Рисунок 11.21 – Схема и временная диаграмма применения команды

При возрастании входного сигнала на входе X0 с «0» до «1» (возрастающий фронт) внутреннее реле М0 благодаря «PLS»команде получает импульс (включается на время одного цикла программы). С помощью этого импульса по контакту реле М0 включается выход Y0. Лишь когда на входе X1 пройдет смена сигнала с «1» на «0» (падающий фронт), выход Y0 снова отключится (см. рисунок 11.21).

Язык релейных диаграмм LD (Тема)

Язык LD представляет собой графическую интерпретацию процесса разработки релейно-контактных схем управления. Первоначально на языке LD программировались контроллеры производства компании Allen Bradley. Ввиду его удобства и значительного количества пользователей, обладающих навыками проектирования логических систем на базе реле и контакторов, язык LD был введен в стандарт IEC 61131-3 и в настоящее время является одним из наиболее распространенных язы­ков программирования ПЛК. Этот язык наиболее удобен для программирования небольших задач дискретной логики, поэтому многие контроллеры младших классов имеют язык LD в качестве основного для разработки программ управления.

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

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

Набор графических элементов языка LD включает:

· Входы/выходы ПЛК (кнопки, датчики, реле, индикаторные лампы и т.д.);

· Стандартные управляющие системные функции (таймеры, счетчики и т.д.);

· Арифметические, логические и специальные операции;

· Внутренние переменные ПЛК.

Рис. Пример программы на языке LD

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

Графические элементы языка LD можно условно разделить на базовые элемен­ты, функциональные и операционные блоки. Каждый базовый элемент занимает одну ячейку (одну строку по высоте и одну колонку по ширине). Блоки могут зани­мать несколько ячеек. Базовые элементы и блоки языка LD приведены далее.

Таблица. Базовые элементы и блоки языка LD

Нормально откры­тый контакт

Контакт замкнут, когда битовая переменная, которая управляет им, равна 1

Нормально закры­тый контакт

Контакт замкнут, когда битовая переменная, которая управляет им, равна 0

Контакты, срабаты­вающие по перепаду

Возрастающий перепад: контакт замкнут, когда битовая перемен­ная, которая управляет им, изме­няется с 0 до 1

Убывающий перепад: контакт замкнут, когда битовая переменная, которая управляет им, изменяет­ся с 1 до 0

Используются для соединения элементов условий и элементов действия, расположенных последовательно между двумя шинами питания

Используются для параллельного соединения элементов действия и условий

Используются для соединения двух объектов, использующих разные связи

Устанавливает соответствующий битовый объект в значение, рав­ное результату, полученному в проверочной зоне

Устанавливает соответствующий битовый объект в значение, рав­ное инверсии от результата, полу­ченного в проверочной

Устанавливает соответствующий битовый объект в 1, когда резуль­тат, полученный в проверочной зоне, равен 0

Сбрасывает соответствующий би­товый объект в 0, если результат, полученный в проверочной зоне, равен 1

Условный переход к другой ступени

Обеспечивает соединение с поме­ченной строкой, причем послед­няя может быть расположена до или после текущей ступени

Обмотка вызова подпрограммы

Позволяет подсоединиться к под­программе, если результат, полу­ченный в проверочной зоне, ра­вен 1

Возврат из
подпрограммы

Зарезервировано для подпро­грамм, позволяет возвращаться в вызывающий модуль, когда результат, полученный в прове­рочной зоне, равен 1

Останов выполнения программы, когда результат, полученный в проверочной зоне, равен 1

Блоки:
Таймер
Счетчик
Одновибратор
Регистр
Контроллер
барабана

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

Вертикальный блок сравнения

Позволяет сравнивать два опе­ранда. В зависимости от результа­та соответствующий вход прини­мает значение, равное 1. Размер: 2 колонки/4 строки

Горизонтальный блок сравнения «Compare»

Позволяет сравнивать два операнда. Выход принимает значение, рав­ное 1, если при сравнении получен истинный результат. (Блок может содержать до 4096 символов). Раз­мер: 2 колонки/1 строка

Операционный блок «Operate»

Выполняет арифметические, логические и другие операции и ис­пользует синтаксис языка структурированного текста. (Блок мо­жет содержать до 4096 символов). Размер: 4 колонки/1строка

Ступень содержит до 7-ми строк и до 11-ти колонок, разделенных на две зоны – проверочную и зону действий. Каждая ступень может быть снабжена меткой и озаглавлена комментарием. Метки могут быть использованы для идентификации ступени внутри программного объекта (головной программы, подпрограммы и т.д.), но не являются обязательными. Метки имеют синтаксис %Li (где i от 0 до 999) и располагаются в левом верхнем углу перед шиной питания. Каждая метка может присваиваться только одной ступени в пределах данного программного объекта. Система сканирует ступени в том порядке, как они были введены, независимо от порядка нумерации меток.

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

Ступень изображается в форме, похожей на релейные диаграммы. Простейшие проверочные элементы и элементы действия занимают одну строку и одну колонку ступени. Все линии контактов начинаются от левой шины питания и должны закан­чиваться на правой шине питания. Проверочные операции всегда располагаются в колонках с 1 по 10. Операции действия всегда располагаются в колонке 11. Пред­полагается, что между шинами питания протекает ток, который имеет следующее направление:

– по горизонтальным связям – слева направо;

– по вертикальным связям – в обоих направлениях.

Проверочная зона содержит: контакты, которые могут быть помечены любым, ранее определенным битовым объектом; функциональные блоки; блоки сравнения. Возрастающие и убывающие фронты могут быть связаны только входными и вы­ходными битовыми объектами и внутренними битами.

Зона действий содержит: прямые, инверсные, фиксирующие и инверсно-фикси­рующие обмотки, которые могут быть помечены любым битовым объектом; запи­санные пользователем операционные блоки; другие элементы действия (Call, Jump, Halt, Return).

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


Операционные блоки всегда расположены в зоне действий. Внутри блока запи­сывается фраза на языке ST. Операционный блок должен быть присоединен непо­средственно к правой «шине» питания.

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

В соответствии с указанным порядком исполнения система:

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

– Выполняет рабочие действия, соответствующие функциям, функциональным блокам и подпрограммам;

– Обеспечивает битовые объекты, соответствующие обмоткам (выходы модулей ввода/вывода обновляются в конце сканирования);

– Переходит к другой помеченной ступени в данном программном модуле (перехо­ды к другой ступени >>%Li), возвращается в вызывающий модуль или останавливает программу .

Простая автоматизация: программируемые реле Easy

Здравствуйте, уважаемое сообщество!
На Хабре уже много сказано слов о различных устройствах автоматизации, начиная от простых Arduino, заканчивая промышленными многопроцессорными системами. Я же хочу закрасить очередное белое пятно на карте хабро-автоматики статьей о промежуточных устройствах — программируемых реле, на примере микропроцессорных устройств Easy производства корпорации Eaton (Moeller).
Прошло уже достаточно много времени с моего первого знакомства с данным типом устройств, но по-прежнему, эти «электронные малыши» остаются незаменимыми помощниками для реализации широкого спектра инженерных и бытовых задач.

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

Теория

Реле, как основной оператор программирования

Исходя из названия описываемого класса устройств, основным оперируемым элементом будет являться реле.
Реле — электромеханическое устройство, предназначенное для коммутации электрических цепей при заданных изменениях электрических или неэлектрических входных величинах. Классическое реле имеет катушку управления x, и группу контактов, реализующих выходную функцию y=f(x).
При подаче управляющего напряжения на вход катушки контакты изменяют свое первоначальное состояние на инверсное.
Группа контактов может содержать два основных типа контактов: нормально открытые контакты и нормально закрытые контакты.
Нормально открытый контакт — контакт, находящийся в разомкнутом состоянии при отсутствии напряжения на катушке управления.
Нормально закрытый контакт — контакт, находящийся в замкнутом состоянии при отсутствии напряжения на катушке управления.
Таким образом можно записать два основных типа функций, реализуемых с помощью реле:
y(x) = x — для нормально-открытых контактов;
y(x) = x̅ — для нормально-закрытых контактов.
Остальные типы функций, реализуемых с помощью реле, основываются на придании контактной группе дополнительных свойств. Функции и типы контактов реле показаны на рисунке ниже.

1 — катушка реле (управляющая цепь), 2 — нормально открытый контакт, 3 — нормально закрытый контакт, 4 — нормально открытый контакт с замедлителем при срабатывании, 5 — нормально открытый контакт с замедлителем при возврате, 6 — нормально открытый контакт импульсный, 7 — нормально открытый контакт без самовозврата, 8 — нормально закрытый контакт без самовозврата, 9 — нормально закрытый контакт с замедлителем при срабатывании, 10 — нормально закрытый контакт с замедлителем при возврате.

Элементы теории дискретных автоматизированных устройств

Под дискретным автоматизированным устройством понимают управляющее устройство, осуществляющее переработку априорной и текущей информации в управляющую, причем носителями всех перечисленных составляющих информации являются дискретные по уровню и во времени сигналы. Это означает, что состояние сигнала каждого входа (выхода) автоматизированного устройства характеризуется двумя уровнями: минимальным, условно обозначаемым «0», и максимальным, обозначаемым «1».
Составление структурной схемы управления по заданным условиям ее работы называют синтезом. Определение условий работы схемы или ее отдельных элементов по имеющейся структуре называют анализом схем управления.
Схемы на релейных и бесконтактных элементах можно составлять двумя способами.
Первый способ опытный, широко используемый в практике логического составления релейно-контакторных схем. Исходя из заданных условий работы отдельных частей рабочей машины, составляют принципиальную схему системы автоматики. Аналогично составляют бесконтактные аналоги релейно-контактных схем, в которых заданные условия работы схемы выражаются в виде функций алгебры логики. При этом целесообразно провести минимизацию любой контактной или бесконтактной схемы, построенной таким опытным способом. Минимизация схем проводится на основе законов алгебры логики.
Второй способ построения (синтеза) схем основан на более полном использовании теории алгебры логики и принципов формализации реальных условий работы схемы автоматики. В этом случае исходят из заданных условий работы, составляя соответствующие таблицы состояний (карты функций), где отмечают комбинации аргументов и значений функций (выходных сигналов) в виде логических «1» и «0». Основная задача синтеза заключается в определении такой формы выражения искомой логической функции, которую можно реализовать с применением минимального числа возможно более простых элементов. Синтез релейных схем управления сводится к составлению структурной формулы (аналитического выражения), описывающей логические функции, которые должны выполняться данным устройством. Затем анализируют полученную алгебраическую формулу и составляют графическое начертание схемы.
Разбор полного курса теории логики и синтеза схем выходит за рамки данной статьи, все заинтересовавшиеся данной тематикой могут подробно ознакомиться с предметом, используя ссылки на литературу (в конце статьи).
Давайте рассмотрим процесс создания схемы управления на простом примере из жизни.

Синтез релейно-контакторной схемы управления на примере
Постановка задачи

Необходимо разработать систему управления освещением офисного помещения в соответствии со следующими условиями:
Дано
Офисное помещение с одной группой основного освещения (люминесцентные лампы) и одной группой дежурного и фонового освещения.
Шторы-жалюзи с электроприводом.
Необходимо

  1. По окончанию рабочего дня (18:15) обеспечить отключение группы основного освещения и обеспечить включение дежурного освещения. Если жалюзи остались закрытыми — обеспечить их открытие.
  2. Перед началом рабочего дня (8:45) обеспечить отключение дежурного освещения.
  3. При недостаточном природном освещении, обеспечить включение основного освещения по сигналу с датчика затемнения, при условии, что жалюзи открыты.
  4. Обеспечить включение фонового освещения при закрытых жалюзи. Если было включено основное освещение — выключить его.
  5. При включении фонового освещения предусмотреть автоматическое опускание жалюзи.
  1. Датчик освещенности имеет бинарный выход, настраиваемый на определенный порог освещенности. При недостаточной освещенности — контакт замыкается.
  2. Система привода жалюзи имеет контакты, информирующие о граничных положениях.
Решение

Давайте в первую очередь определим соответствия входных и выходных сигналов проектируемой системы переменным. Условимся обозначать все входные сигналы переменными I с соотв. индексом, а все выходные сигналы – переменными Q с соотв. индексом.
Входные переменные:
I1 — сигнал датчика освещенности.
I2 — сигнал верхнего положения жалюзи.
I3 — сигнал нижнего положения жалюзи.
I4 — сигнал включения фонового освещения.
Выходные переменные:
Q1 — включение/выключение основной группы освещения.
Q2 — включение/выключение дежурного освещения.
Q3 — включение/выключение фонового освещения.
Q4 — поднятие жалюзи.
Q5 — опускание жалюзи.
Переменные времени:
T1 — достижение времени окончания рабочего дня.
T2 — достижение времени начала рабочего дня.
Далее —разобьем нашу задачу на условные части и составим логические функции для каждой из частей.

  1. Конец рабочего дня
    1. Выключаем основной свет: Q1=not(T1)
    2. Включаем дежурный свет: Q2=T1
    3. Открываем жалюзи, если закрыты: Q4=not(I2)⋅T1
  2. Начало рабочего дня
    1. Выключаем дежурный свет: Q2=not(T2)
  3. Контроль уровня освещенности
    1. Включение основного света по датчику освещенности, с проверкой, открыты ли жалюзи: Q1=I1⋅ I2⋅not(T1)⋅T2
  4. Управляем фоновым освещением
    1. Включение фонового освещения при закрытых жалюзи: Q3=I3
    2. Отключим основное освещение при закрытых жалюзи Q1=not(I3)
  5. Управление жалюзи в зависимости от включенного фонового освещения
    1. При включении фонового освещения опустить жалюзи, если не конец рабочего дня: Q5=I4⋅not(I3) ⋅not(T1)⋅T2

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

Железо

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

Вверху устройства расположены:

  • клеммы для подключения питания;
  • клеммы цифровых входов устройства;
  • клеммы аналоговых входов (0..10 В).

Внизу устройства расположены:

  • клеммы релейных (или транзисторных) выходов устройства.

На фронтальной панели расположены:

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

По напряжению и типу питания программируемые реле делятся на:

  • устройства с питанием 12, 24 В (DC);
  • устройства с питанием 24, 110-220 В (AC).
Цифровые входы

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

  • устройства с входами 12, 24 В (DC);
  • устройства с входами 24, 110-220 В (AC).

В зависимости от типа программируемого реле Easy, один и более цифровых входов могут быть использованы как «быстрые счетчики» — для подсчета импульсов с частотой до 3 кГц.

Аналоговые входы

Для обработки аналоговых сигналов, таких как, сигналы температурных датчиков, датчиков скорости ветра, внешних потенциометров, программируемые реле Easy имеют на борту два и более аналоговых входа 0..10 В (DC).
Нужно заметить, что аналоговые входы предусмотрены только на устройствах с питанием 12 В (DC), 24 В (AC, DC).

Релейные и транзисторные выходы

Для коммутации выходных сигналов в программируемых реле Easy предусмотрены 4 и более выходов. Выходы устройств бывают двух типов:

  • транзисторные выходы, обеспечивающие возможность коммутации небольших нагрузок до 0,5 А;
  • релейные выходы, обеспечивающие коммутацию нагрузок до 8 А (AC1).

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

Аналоговые выходы

Программируемые реле серии Easy800 имеют на борту аналоговый выход (0..10 В).

Экран

Встроенный экран предназначен для отображения текстовой (в устройствах серии Easy500, 700, 800) и графической (в устройствах серии MFD-Titan) информации.

Коммуникации и масштабируемость системы

Ethernet – возможность подключения посредством модуля расширения, реализующего функции OPC-сервера. Для всей линейки устройств.
Profibus, CANopen, DeviceNet, As-i – возможность подключения посредством модулей расширения. Для устройств серии Easy700, Easy800.
Easy-net – возможность соединения программируемых реле в сеть. Для устройств Easy800, MFD-Titan.

Для устройств серии Easy700, Easy800 доступны модули расширения, позволяющие увеличить количество входов и выходов устройств. Модули расширения могут иметь крепление встык, посредством переходника, либо, устанавливаться удаленно (до 100 м). Удаленная установка удобна в том случае, если, например, вы реализуете систему управления двумя помещениями.
К одному программируемому реле Easy может быть подключен только один модуль расширения.
Программируемые реле серии Easy800 имеют на борту интерфейс Easy-net, позволяющий объединить до 8-ми устройств в единую сеть, при этом к каждому из устройств может быть подключен модуль расширения. Таким образом возможна организация системы с количеством входов/выходов до 328.

Линейка программируемых реле Easy

Программируемые реле Easy представлены устройствами серий Easy500, Easy700, Easy800 и MFD-Titan.

Программируемые реле серии Easy500

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

Основные характеристики программируемых реле серии Easy500

  • Напряжение питания и напряжение цифровых входов: 24 В и 100 – 240 В AC, 12 В и 24 В DC.
  • 8 цифровых входов.
  • 2 аналоговых входа: 0 — 10 V (0 – 1023 bit), в версиях с питанием 12 В, 24 В DC и 24 В AC.
  • 4 релейных выхода: 8 A, или 4 транзисторных выхода: 24 В DC/0.5 A.
  • 128 «строк программы» с 3-мя контактами и 1-й катушкой.
  • Реле серии Easy500 не имеют возможности подключения модулей расширения.
Программируемые реле серии Easy700

Устройства, сочетающие в себе все преимущества устройств Easy500-й серии, с возможностью подключения дополнительных блоков расширения: аналоговых и цифровых входов/выходов, коммуникационных модулей и тп.
Данная серия программируемых реле Easy оптимальна для решения достаточно сложных задач автоматизации, с возможностью управления большим количеством сигналов (линий). Также, устройства идеальны для применения в проектах, предполагающих дальнейшее расширение возможностей системы управления с минимальными затратами.

Основные характеристики программируемых реле серии Easy700

  • Напряжение питания и напряжение цифровых входов: 24 В и 100 – 240 В AC, 12 В и 24 В DC.
  • 12 цифровых входов.
  • 4 аналоговых входа: 0 — 10 V (0 – 1023 bit), в версиях с питанием 12 В, 24 В DC и 24 В AC.
  • 6 релейных выхода: 8 A, или 8 транзисторных выходов: 24 В DC/0.5 A.
  • 128 «строк программы» с 3-мя контактами и 1-й катушкой.
  • Возможность подключения блоков расширения.
Программируемые реле серии Easy800

Продвинутая, и наиболее функциональная серия устройств Easy, позволяющая реализовать гибкое решение практически любой задачи бытовой и промышленной автоматизации. Устройства серии Easy800 могут быть расширены дополнительными модулями расширения функционала и коммуникаций.
Наряду со стандартными функциями, представленными в easy500/700, такими как многофункциональные реле, импульсные реле, счетчики, аналоговые компараторы, таймеры, часы реального времени и энергонезависимая память, easy800 дополнительно содержит ПИД-регуляторы, арифметические блоки, блоки масштабирования значений и многие другие функции. Также возможность объединения в сеть до 8 устройств, делает easy800 самым мощным программируемым реле на электротехническом рынке.
При решении комплексных задач, программируемые реле Easy800 могут быть объединены в одну общую сеть устройств EasyNet.

Основные характеристики программируемых реле серии Easy800:

  • Напряжение питания и напряжение цифровых входов: 24 В и 100 – 240 В AC, 12 В и 24 В DC.
  • 12 цифровых входов.
  • 4 аналоговых входа: 0 — 10 V (0 – 1023 bit), в версиях с питанием 12 В, 24 В DC и 24 В AC.
  • 6 релейных выхода: 8 A, или 8 транзисторных выходов: 24 В DC/0.5 A.
  • 256 «строк программы» с 4-мя контактами и 1-й катушкой.
  • Интегрированный интерфейс EasyNet для соединения устройств в сеть (до 8-ми устройств).
  • Возможность подключения блоков расширения.

Практика

Выбор устройства

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

  1. Определим количество цифровых входов. Мы имеем 4 входные переменные I1..I4, поэтому достаточно наличие в устройстве 4-х входов.
  2. Определим напряжение питания и тип цифровых входов. Так как мы планируем применять программируемое реле для бытовых нужд, с питанием внутридомовой сети 220 В, 50 Гц, то наиболее подходящее устройство будет с аналогичными требованиями к питанию и значениям напряжения цифровых входов – 220 В, 50 Гц.
  3. Определим типы и количество выходных контактов. Для управления 5-ю выходными переменными нам необходимо выбрать устройство с соответствующим количеством выходов. Так выходы программируемого реле должны обеспечивать коммутацию внутриофисных источников света и других силовых устройств, то нам необходимо наличие релейных выходов.

Воспользовавшись каталогом программируемых реле, выбираем тип устройства, наиболее подходящий для наших целей: EASY719-AC-RC10.
Выбранное реле имеет на борту:

  • 12 цифровых входов (220 В, 50 Гц);
  • 6 релейных выходов (коммутация нагрузки до 8 А);
  • часы реального времени;
  • питание устройства – 110-220 В, 50 Гц.
Среда разработки

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

  • контакты и катушки отображаются в соответствии со стандартами МЭК;
  • контакты и катушки отображаются в соответствии со стандартами ГОСТ;
  • контакты и катушки отображаются согласно стандарту ANSI.

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

Программирование

Процесс написания программы для программируемого реле Easy сводится к «отрисовке» релейно-контакторной схемы соединения в соответствии с полученными логическими функциями и определения необходимых параметров, таких как, постоянные времени, значения таймеров и т.п.
Запустим Easy-Soft и создадим новый проект.
Выберем необходимый тип устройства из списка слева и перетащим его в окно проекта. При этом появится меню выбора версии устройства. Из выпадающего списка следует выбрать версию 10-хххххххх – это соответствует устройствам с поддержкой кириллицы.

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

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

Недельный таймер предназначен для инициации каких-либо действий на протяжении недели, в зависимости от установленных временных границ. Таймер имеет 4 независимых канала A, B, C, D. Каждый из каналов может быть сконфигурирован на определенные временные промежутки. Например, в нашем случае, конфигурация недельного таймера обеспечивает его срабатывание с понедельника по воскресенье, с 18-45 до 8-45.
Вы будете правы, если заметите, что в нашем примере используется офисное помещение, рабочие дни которого, обычно, с понедельника по пятницу.
Итоговая релейно-контакторная схема нашего примера

Отладка

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

Прошивка

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

Подключение и сборка системы управления

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

  • 8 А активной нагрузки (AC1) для устройств с релейными выходами;
  • 0,5 А — для устройств с транзисторными выходами.

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

Заключение

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

Полезная информация

Wikipedia – алгебра логики.
Wikipedia – карты Карно – методы минимизации булевых функций.
Wikipedia – реле.
Документация на программируемые реле серии Easy500, Easy700.
Документация на программируемые реле серии Easy800.
Центр обучения по реле Easy – множество примеров по применению программируемых реле Easy (на русском языке).
Программное обеспечение для реле Easy (в т.ч., на русском языке).
Сайт производителя.
Каталог программируемых реле Easy.
Easy — это просто. Учебное пособие. О.А. Андрющенко, В.А. Водичев.
Некоторые ссылки на документацию приведены не с сайта производителя, а с сайта моей компании, так как после слияния корпораций Eaton и Moeller ведется реконструкторизация внутренних ресурсов, и ссылки на документацию бывают недоступными.
UPD 1. Добавлена литература — учебное пособие для студентов ВУЗов. Примеры, лабораторные работы.
UPD 2. Да, эти устройства можно программировать непосредственно с встроенной клавиатуры. Большие программы, конечно, не очень удобно набирать, но для оперативного редактирования схем — вполне можно использовать эту возможность.
UPD 3. Хаброюзер ShadowHacker подсказывает, что корректнее в терминах электротехники/электроники употреблять выражение «нормально разомкнутый контакт» и «нормально замкнутый контакт». В статье оставлю первоначальную терминологию по причине того, что в русскоязычной документации и каталогах к устройству употребляются термины «нормально закрытый контакт» и «нормально открытый контакт».

Релейные диаграммы (LD)

Язык LD – графический язык, основанный на принципах релейно-контактных схем (элементами релейно-контактной логики являются: контакты, обмотки реле, вертикальные и горизонталь­ные перемычки и др.) с возможностью использования большого количества различных функциональных блоков.

Язык релейных схем существует со времен Т. Эдисона и адап­тирован к ПЛК в начале 70-х годов прошлого века. Впервые поя­вился в пакетах программирования ПЛК компаний Allen-Bradly и Modicon. Символика этого языка была заимствована из проек­тирования в области электротехники.

Достоинствами языка LDявляются: представление программы в виде электрического потока (язык близок специалистам по электротехни­ке), наличие простых правил, использование только булевых выра­жений. Язык LDимеет большой круг пользователей, рационален для ручной оптимизации специфических критических мест кода.

Цепи

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

В LD каждому контакту ставится в соответствие логическая переменная, определяющая его состояние. Если контакт замкнут, то переменная имеет значение ИСТИНА. Если разомкнут — ЛОЖЬ. Имя переменной пишется над контактом и фактически служит его названием.

Последовательное соединение контактов или цепей равноценно логической операции И. Параллельное соединение образует монтажное ИЛИ.

Цепь может быть либо замкнутой (ON), либо разомкнутой (OFF). Это как раз и отражается на обмотке реле и соответственно на значении логической переменной обмотки (ИСТИНА/ЛОЖЬ).

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

Сопоставление обозначений базовых элементов LD и обозначений ЕСКД приведено в таблице. 7.1

Таблица. 7.1 Обозначений базовых элементов LD и ЕСКД

LD ЕСКД Обозначение
-| |- Нормально разомкнутый контакт
-|/|- Нормально замкнутый контакт
-( )- Обмотка реле

Контакт может быть инверсным — нормально замкнутым. Такой контакт обозначается с помощью символа -|/|- и замыкается, если значение переменной ЛОЖЬ. Инверсный контакт равнозначен логической операции НЕ.

Переключающий контакт образуется комбинацией прямого и инверсного контактов

Обмотки реле также могут быть инверсными, что обозначается символом -(/)-. Если обмотка инверсная, то в соответствующую логическую переменную копируется инверсное значение состояния цепи.

Общие сведения о языке LD¶

LD (Ladder Diagram) – графический язык, основанный на принципах релейно-контактных схем (элементами релейно-контактной логики являются: контакты, обмотки реле, вертикальные и горизонтальные перемычки и др.) с возможностью использования большого количества различных функциональных блоков. Достоинствами языка LD являются: представление программы в виде электрического потока (близко специалистам по электротехнике), наличие простых правил, использование только булевых выражений. На рис. 6.1 приведён пример программы на языке LD (слева) и ее эквивалент в виде электрической цепи с реле и выключателями (справа).

Рис. 6.1 – Программа на языке LD (слева) и ее эквивалент в виде электрической (справа)

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

Объекты языка программирования LD обеспечивают средства для структурирования программного модуля в некоторое количество контактов, катушек. Эти объекты взаимосвязаны через фактические параметры или связи.

Порядок обработки индивидуальных объектов в LD-секции определяется потоком данных внутри секции. Ступени, подключенные к левой шине питания, обрабатываются сверху вниз (соединение к левой шине питания). Ступени внутри секции, которые не зависят друг от друга, обрабатываются в порядке размещения.

Основные конструкции языка

Слева и справа схема на языке LD ограничена вертикальными линиями – шинами питания. Между ними расположены цепи, образованные контактами и катушками реле, по аналогии с обычными электронными цепями. Слева любая цепь начинается набором контактов, которые посылают слева направо состояние «ON» или «OFF», соответствующие логическим значениям TRUE или FALSE. Каждому контакту соответствует логическая переменная (типа BOOL). Если переменная имеет значение TRUE, то состояние передается через контакт. Иначе – правое соединение получает значение выключено (“OFF”).

Контакты могут быть соединены параллельно, тогда соединение передает состояние «логическое ИЛИ». Если контакты соединены последовательно, то соединение передаёт «логическое И».

Контакт может быть инвертируемым. Такой контакт обозначается с помощью символа |/| и передает состояние “ON”, если значение переменной FALSE.

Язык LD позволяет:

  • выполнять последовательное соединение контактов;
  • выполнять параллельное соединение контактов;
  • применять нормально разомкнутые или замкнутые контакты;
  • использовать переключаемые контакты;
  • записывать комментарии;
  • включать Set/Reset-выходы (Установка/Сброс);
  • переходы;
  • включать в диаграмму функциональные блоки;
  • управлять работой блоков по входам EN.

Контактом является LD-элемент, который передаёт состояние горизонтальной связи левой стороны горизонтальной связи на правой стороне. Это состояние – результат булевой AND-операции состояния горизонтальной связи с левой стороны с состоянием ассоциированной переменной или прямого адреса. Контакт не изменяет значения связанной переменой или прямого адреса.

Для нормальных контактов (см. рис. 6.2) состояние левой связи передается в правую связь, если состояние связанного логического фактического параметра TRUE. Иначе, состояние правой связи FALSE.

Рис. 6.2 – Нормальный контакт

Для инверсных контактов (см. рис. 6.3) состояние левой связи передается в правую связь, если состояние связанного логического фактического параметра FALSE. Иначе, состояние правой связи TRUE.

Рис. 6.3 – Инверсный контакт

В контактах для обнаружения нарастания фронта (см. рис 6.4) правая связь устанавливается в состояние TRUE, если переход связанного фактического параметра происходит из FALSE в TRUE, и в то же время состояние левой связи TRUE. Иначе, состояние правой связи FALSE.

Рис. 6.4 – Контакт для обнаружения нарастания фронта

В контактах для обнаружения спада фронта (см. рис. 6.5) правая связь устанавливается в состояние TRUE, если переход связанного фактического параметра происходит из True в False, и состояние левой связи True в то же время. Иначе, состояние правой связи FALSE.

Рис. 6.5 – Контакт для обнаружения спада фронта

Катушка является LD-элементом, который передаёт состояние горизонтальной связи на левой стороне неизменяемым горизонтальной связи на правой стороне. В этом процессе состояние связанной переменной или прямого адреса будет сохранено.

В нормальных катушках (см. рис. 6.6) состояние левой связи передается в связанный логический фактический параметр и в правую связь.

Рис. 6.6 – Нормальная катушка

В инвертирующей катушке (см. рис. 6.7) состояние левой связи копируется в правую связь. Инвертированное состояние левой связи копируется в связанный логический фактический параметр. Если связь находится в состоянии FALSE, тогда правая связь тоже будет находиться в состоянии FALSE, и связанный логический фактический параметр будет находиться в состоянии TRUE.

Рис. 6.7 – Инвертирующая катушка

В катушке установки (см. рис. 6.8) состояние левой связи копируется в правую связь. Связанный логический фактический параметр устанавливается в состояние TRUE, если левая связь имеет состояние TRUE, иначе он не изменяется. Связанный логический фактический параметр может сбрасываться только катушкой сброса.

Рис. 6.8 – Катушка установки

В катушке сброса (см. рис. 6.9) состояние левой связи копируется в правую связь. Связанный логический фактический параметр устанавливается в состояние FALSE, если левая связь имеет состояние TRUE, иначе он не изменяется. Связанный логический фактический параметр может устанавливаться только катушкой установки.

Рис. 6.9 – Катушка сброса

В катушке обнаружения нарастания фронта (см. рис. 6.10) состояние левой связи копируется в правую связь. Связанный фактический параметр типа данных BOOL будет установлен в состояние TRUE для цикла программы, если произошел переход левой связи из FALSE в TRUE.

Рис. 6.10 – Катушка обнаружения нарастания фронта

В катушке обнаружения спада фронта (см. рис. 6.11) состояние левой связи копируется в правую связь. Связанный фактический параметр типа данных BOOL будет установлен в состояние TRUE для цикла программы, если произошел переход левой связи из TRUE в FALSE.

Рис. 6.11 – Катушка обнаружения спада фронта

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

Левая шина питания соответствует единичному сигналу. Ступени, подключённые к левой шине питания, обрабатываются сверху вниз (соединение к левой шине питания).

Пример программы на языке LD

Пример представляет собой реализацию логического выражения:

При создании LD диаграмм можно использовать только переменные типа BOOL. Добавим новый контакт и привяжем его к имени A (имени переменной). Далее добавляется шина питания слева, шина питания справа, нормальный контакт, инверсный контакт и нормальная катушка. Нормальный контакт ассоциируется с переменной A, инверсный контакт с переменой B, нормальная катушка с переменной C. Далее это всё последовательно соединяется (см. рис. 6.12), и результатом является программа, написанная на языке LD, реализующая логическое выражение:

Рис. 6.12 – Пример LD диаграммы, реализующей логическое выражение C = A AND NOT B

Каждый электрик должен знать:  Диодные тиристоры (динисторы)
Добавить комментарий