
Лабораторная работа № 12
Тема: Программирование Zelio Logic на языке релейно-контактной логики Ladder.
Цель: Обзор языка Ladder, использующегося контроллером Zelio Logic, понять, как оперировать с ним и принцип его обработки по элементам, выучить основные операторы (инструкции), разобраться, как использовать программный редактор Zelio Soft, чтобы создавать приложения на языке Ladder.
Краткие теоретические сведения
Язык Ladder является графический языком. Он может использоваться для описания релейных диаграмм, а также различных процессов. Создание схем на языке Ladder производится с использованием базовых графических символов: контактов, катушек, блоков. Ladder является самым распространённым языком программирования для программируемых логических контроллеров. На рис.1 представлен пример программы на языке релейно-контактной логики.
Рис.1. Вид схемы на языке Ladder
Условно рабочую область программы Zelio Soft можно разделить на 2 части: область построения диаграммы и область комментариев.
Графические элементы, с использованием которых выполняется построение схемы, содержат в себе входные/выходные контакты (кнопки, дискретные датчики, катушки, ЖКИ), функции автоматизации (таймеры, счетчики, компараторы), логические операторы, а также внутренние переменные, представляющие собой реле. Каждая функция автоматизации (блок) характеризуется входными данными (действие), выходными данными (состояния) и дополнительными параметрами, которые определяют логику работы определенного блока. Для каждой строки диаграммы можно добавить комментарий.
Ladder-сеть располагается в зоне между первым контактом (Contact1) и сердечником (Coil). В этой области располагаются контакты, с помощью которых организуется активация катушки (Coil) (функция автоматизации или выходные сигналы модуля). Каждое действие сопровождается изменением состояния определенного блока. Заголовки этих колонок выделены желтым цветом. В таблице 1 представлены обозначения блоков, используемых при построении диаграмм.
Таблица 1. Описание блоков языка Ladder
Название |
Символ Ladder |
Обозначение на схеме |
Описание |
Нормально открытый контакт (Normally Open) |
|
|
Контакт замыкается, когда контролирующая его катушка переходит в активное состояние. |
Нормально закрытый контакт (Normally Closed) |
|
|
Контакт размыкается, когда контролирующая его катушка переходит в активное состояние. |
Горизонтальное соединение |
|
|
Используется для соединения блоков в различных ячейках последовательно. |
Вертикальное соединение |
|
|
Используется для создания параллельных соединений блоков. |
Обычный сердечник (Active On (Contactor) State) |
|
|
На катушке появляется напряжение, если контакты, к которому она подключена, замкнут. |
Импульсный сердечник (Active On (Impulse Relay) State) |
|
|
На катушке появляется напряжение, если контакт, к которому она подключена, изменяет свое состояние (аналог T-триггера). |
Установить или зафиксировать катушку (Latch Activation (SET)) |
|
|
На катушке появляется напряжение, если контакты, к которому она подключена, замыкается. На катушке остается, напряжение, даже если контакт разомкнется |
Сбросить или разомкнуть катушку (Latch Deactivation (RESET)) |
|
|
С катушки снимается напряжение, если контакты, к которому она подключена, замыкается. Катушка остается разомкнутой, даже если контакт размыкается. |
На языке программирования LADDER (лестничная логика) можно записывать программы длиной до 120 строк. В каждой строке можно добавить пять контактов и одну катушку. Каждая программа может использовать до 16 таймеров, 16 счётчиков, один быстрый счётчик (1 кГц), 8 компараторов счётчиков, 8 часов и 18 дополнительных слов памяти. Существует и возможность программировать Zelio Logic 2 на языке программирования LADDER прямо на модуле без ПК и использовать кнопки на дисплее как дополнительные вводы.
Каждый графический элемент (блок) занимает одну ячейку на диаграмме. Ladder-сеть должна иметь по крайней мере одну катушку в последней колонке (Coil). Если в диаграмме используется действие S (SET action), как правило, должно использоваться действие R (RESET Action). Исключение составляют случаи, когда необходимо зафиксировать случаи возникновения аварийных ситуаций до тех пор, пока пользователь не выполнит какие-либо действия по устранению причин аварии. Функция сброса (RESET) имеет более высокий приоритет, чем функция установки (SET), если на оба входа поступает сигнал одновременно.
Построенная Ladder-сеть выполняет коммутацию напряжения с левой части диаграммы (высокий уровень), к правой части (низкий уровень). Замкнутые или разомкнутые контакты образуют логическую цепочку, по которой сигнал передается от входных контактов к выходным. С помощью функций автоматизации выполняется управление состоянием контактов.
После того, как выбран модуль, для которого будет создаваться программа, откроется главное окно программы, и в строке состояния (рис.2) будет отображаться тип выбранного модуля.
Рис.2. Строка состояния программы
Также на этой панели указано количество использованных в программе строк. На панели расположена кнопка «Program Configuration», нажав на которую откроется диалоговое окно настроек проекта, представленное на рис.3.
Рис.3. Окно настроек проекта
Это окно содержит 3 закладки. На первой закладке (Properties) указываются название проекта, имя автора, номер версии и комментарии. На второй закладке (Configuration) устанавливается периодичность выполнения программы, состояние сторожевого таймера, который используется дл защиты процессора от зависания (по умолчанию неактивный – Inactive), а также тип аппаратной фильтрации входных сигналов. На третьей закладке устанавливается формат представления даты.
Область построения диаграммы разделена на строки и столбцы, в которых располагаются функциональные блоки. Пунктиром обозначены линии, на которых могут быть расположены соединения между блоками.
Для построения схемы используются функциональные блоки:
8 или 10 таймеров различного типа с запуском по импульсу или по фронту (временные интервалы от 0,001 с до 100 ч);
8 счетчиков (от 0000 до 9999);
8 аналоговых компараторов с 7 видами сравнения;
4 часовых блока:
– установка текущего времени из главного меню;
– быстрая смена времени года;
– время сохраняется до 72 часов при отключении электроэнергии;
– возможность комбинирования каналов в течение суток в зависимости от дня недели;
28 вспомогательных реле;
разнообразные виды управляющих катушек: стандартные, с дистанционным переключателем, с памятью на включение и выключение;
защита паролем от изменения установок задержки;
возможность отображения значения вместо текущего времени.
На панели инструментов блоки сгруппированы по функциональному назначению. Для того, чтобы отобразить список доступных блоков, следует навести курсор мыши на изображение группы блоков (рис.4).
Рис.4. Функциональные блоки для построения схемы
На рисунке обозначены:
1 – аналоговые и дискретные входы модуля;
2 – кнопки передней панели модуля;
3 – вспомогательные реле;
4 – выходные контакты модуля;
5 – таймеры;
6 – счетчики;
7 – компараторы счетчиков;
8 – аналоговые компараторы;
9 – функции роботы со временем;
10 – функции работы с ЖК дисплеем;
11 – управление подсветкой ЖКИ;
12 – переход на зимнее/летнее время.
При наведении мыши на изображение иконки, появится список доступных блоков (рис.5), при этом иконка подсветиться желтым цветом.
Рис.5. Список блоков группы Discrete Inputs
Колонка Comment позволяет ввести комментарии для каждого из элементов.
Для размещения
блока на диаграмме необходимо его
выделить и перетащить в нужную ячейку,
удерживая при этом левую кнопку мыши
нажатой. Если при размещении блока в
ячейку появится символ
,
значит, в указанной ячейке блок размесить
нельзя. Например, нельзя размещать
переключатели в столбце Coil, и катушки
в столбцах Contact1-Contact5.
Для создания соединений достаточно нажать один раз левую кнопку мыши на пунктирной линии. Для удаления соединения необходимо повторно нажать на нем левую кнопку мыши.
Пример 1. Разработать программу, которая при появлении высокого уровня на входе I1 модуля, замыкает контакты реле Q1, а при появлении высокого уровня на входе I2 модуля, размыкаются контакты реле Q2. Если на входах I1 и I3 будут сигналы высокого уровня, замыкаются контакты реле Q3.
Решение. Для решения поставленной задачи обходимо собрать схему, показанную на рис.6.
Рис.6. Реализация алгоритма
В столбце Contact 1 необходимо разместить блоки дискретных входов I1, I2, I3, которые расположены на палитре Discrete Inputs (рис.5). Из контекстного меню блока I2, которое появится при нажатии правой кнопки мыши, выбрать пункт Normally Closed (нормально закрытые контакты). Изменить тип контакта можно выделив его и нажав на клавишу «Пробел». При появлении сигнала лог.1 на входе I2 модуля, этот контакт разомкнется. Так организуется инверсия. В столбце Coil следует расположить блоки дискретных выходов Q1, Q2 и Q3, которые находятся на палитре Discrete Outputs. Необходимо выбрать катушку с обычным сердечником (Active On (Contactor) State). Это блок с изображением символа «[» (рис.7).
Рис.7. Палитра Discrete Outputs
Использованные в схеме блоки будут подсвечены на палитре серым цветом. Если блок уже расположен на схеме, его нельзя повторно использовать. Также в этой палитре расположены другие типы катушек, описанные в табл.1.
Для того, чтобы отследить состояние выходного реле Q1, из палитры Discrete Outputs следует взять блок контакта Q1, который замыкается, если на катушке Q1 появится высокий уровень сигнала, и расположить его в третьей строке диаграммы, последовательно с контактом дискретного входа I3, который замкнется при появлении на одноименном входе сигнала лог.1. Затем выполняется создание соединений путем однократного нажатия левой кнопки мыши на пунктирных линиях. На диаграмме в левом верхнем углу отображается название блока, по которому можно определить его связь с катушкой. Так, контакт Q1 (третья строка столбца Contact2) связан с катушкой [Q1 (первая строка столбца Coil) и повторяет её состояние. При появлении сигнала высокого уровня на катушке [Q1, контакт Q1 замкнется, а при появлении сигнала низкого уровня на катушке [Q1, контакт Q1 разомкнется. В схеме можно использовать любое количество контактов, связанных с катушками. При этом, при активации катушки все контакты, связанные с ней, изменят свое состояние (замкнуться или разомкнуться в зависимости от типа контакта).
Для проверки работы алгоритма необходимо перейти в режим Симуляции (Simulation), нажав на кнопку с изображением буквы «S» в правом верхнем углу программы, а затем нажать на кнопку «Run» чтобы запустить процесс моделирования (рис.8). Для возврата в режим редактирования схемы необходимо нажать на кнопку «Stop», а затем нажать на кнопку с изображением карандаша, линейки и треугольника.
Рис.8. Кнопки изменения режима работы программы
В режиме симуляции в нижней части окна программы появятся кнопки Show/Hide Inputs, Show/Hide Zx Keys, Show/Hide Outputs и Show/Hide the Simulation Time Controller. Нажатие на любую из этих кнопок приведет к открытию диалогового окна, где будут расположены кнопки и индикаторы, с помощь которых можно моделировать входные сигналы и наблюдать за выходными (рис.9).
Рис.9. Окно программы в режиме моделирования
Нажатие на кнопки в окне Discrete Inputs имитирует изменение уровней сигналов на дискретных входах модуля. На рисунке показано, что нажатые кнопки I1 и I2 в диалоговом окне Discrete Inputs вызвали замыкание одноименных контактов в схеме. В диалоговом окне Discrete Outputs высокий уровень сигнала на каком-либо из выходов показан светящейся лампочкой (Q2 на рис.9). Высокий уровень сигнала присутствует только на катушке [Q2, поэтому в диалоговом окне Discrete Outputs светиться только лампочка Q2, Кроме того, на схеме проводники, по которым передается сигнал высокого уровня, подсвечиваются красным цветом, а проводники, с низким уровнем сигнала – синим. Также можно моделировать процесс нажатия пользователем на дискретные кнопки, которые расположены на лицевой панели блока. В рассмотренном примере кнопки не используются. Изменить состояние контакта можно и без использования описанных диалоговых окно. Для этого достаточно в режиме симуляции нажать на изображении контакта, и он изменит свое состояние.
С помощью диалогового окна, показанного на рис.10, можно ускорить процесс моделирования либо установить промежуток времени, в течении которого будет выполняться процесс моделирования. Это удобно, если в программе содержаться таймеры с достаточно большими задержками.
Рис.10. Окно изменения скорости моделирования
Пример 2. Разработать программу, которая реализует логические функции «И» (входы I1,I2, выход Q1), «ИЛИ» (входы I3, I4, выход Q2), «ИСКЛ.ИЛИ» (входы I5, I6, выход Q3), «И-НЕ» (входы I1, I2, выход Q4), «ИЛИ-НЕ» (входы I3, I4, выход Q5), «НЕ» (вход I6, выход Q6).
Решение. Для решения поставленной задачи необходимо собрать схему, показанную на рис.11. В колонке Contact 1 следует расположить блоки дискретных входов. Для реализации операции логической операции «И» необходимо соединить блоки дискретных входом последовательно. Только при наличии сигналов высокого уровня на входах I1 и I2 соответствующие контакты будут замкнуты, и на дискретном выходе Q1 появится сигнал высокого уровня, который вызовет замыкание контактов реле модуля. Для реализации логической операции «ИЛИ» дискретные входы I3 и I4 следует соединить параллельно. При появлении лог.1 на любом из ходов, или на обоих входах одновременно, на дискретном выходе Q2 появится высокий уровень сигнала.
Рис.11. Схема реализации логических функций
Для того, чтобы реализовать логические функции «И-НЕ», «ИЛИ-НЕ», из палитры Discrete Output следует взять блок Contact для выходов Q1 и Q2, разместить их в свободных ячейках, как показано на схеме. Эти контакты следует сделать нормально закрытыми. Если на катушках Q1 и Q2 не будет напряжения, контакты будут замкнуты. Если на этих катушках появится сигнал высокого уровня, контакты разомкнутся (т.е. реализуется инверсия). При изменении типа контакта на нормально замкнутый, в его обозначении будут строчные буквы (q1, q2).
Реализация логической функции «ИСКЛ. ИЛИ» реализуется путем параллельного соединения блоков дискретных входов I5 и I6 (строки 004 и 005), и последовательного включения нормально замкнутого контакта m1 (строка 004), который управляется вспомогательной катушкой M1. Вспомогательную катушку и соответствующий контакт можно найти на палитре Auxiliary Relays. В свою очередь, катушка М1 управляется состоянием дискретных входов, блоки которых соединяются последовательно (строка 006). При появлении сигналов высокого уровня только на одном из дискретных входов (I5 или I6), на дискретном выходе появится сигнал высокого уровня. Если же на обоих дискретных входах I5 и I6 будет лог.1., это вызовет появление высокого уровня сигнала на катушке M1, что вызовет размыкание контакта m1 и установкой низкого уровня на выходе Q3. Таким образом реализуется функция «ИСКЛ. ИЛИ». На рис.12 показана схема, реализующая те же функции, но представленная в нотации языка релейно-контактной логики LADDER.
Рис.12. Схема реализации логических функций в нотации языка LADDER
Для того, чтобы изменить формат представления схемы, в меню Display следует установить флажок напротив отметки Ladder symbol или Electrical Symbol.
Вспомогательные реле (Auxiliary Relays M1-MV) работают аналогично дискретным выходам Q1-Q8. Отличие состоит в том, что вспомогательные реле не имеют физических выходов в модуле. Фактически, их можно ассоциировать с переменными в традиционных языках программирования. Они могут быть использованы для сохранения состояния и использоваться для управления контактами, управляемыми этими реле.
На передней панели интеллектуальных модулей Zelio Logic расположены 4 кнопки. При создании программ можно использовать эти кнопки для управления ходом выполнения программы. На палитре Zx Keys расположены блоки дискретных кнопок Z1-Z4, которые можно добавить в схему. На схеме кнопка представляет собой контакт – нормально открытый или нормально закрытый. При нажатии пользователем на кнопку нормально открытый контакт замыкается, а нормально закрытый контакт размыкается. На рис.13 представлена сема, в которой используются кнопки Z1 и Z2. При нажатии на кнопку Z1, выходное реле Q1 модуля замыкается. При нажатии на кнопку Z2 выходное реле Q2 модуля размыкается.
Рис.13. Использование дискретных кнопок в схеме
Контакты реле Q1 будут замкнуты до тех пор, пока удерживается нажатой кнопка Z1. При отпускании этой кнопки контакты реле разомкнутся. Контакты реле Q2 будут разомкнуты до тех пор, пока удерживается нажатой кнопка Z2. Состояние выхода Q3 будет изменяться каждый раз при нажатии на кнопку Z3, т.е. при изменении её состояния.
Вспомогательные реле обозначаются буквой М и на диаграмме обозначаются символом катушки. Имеется четыре типа вспомогательных реле:
1. [M – реле включено, если на него подается сигнал высокого уровня. В противном случае реле отключено. Под включенным состоянием реле подразумевается, что контакт, управляемые катушкой, будут замкнут, если он нормально разомкнут, и разомкнут, если контакт нормально замкнут. Если на катушку не поступает сигнал, контакт находится в нормальном состоянии.
2.
–
реле включается и отключается импульсным
сигналом (по аналогии с Т-триггером).
3. SM – реле включается, если на катушку поступает сигнал высокого уровня и остается во включенном состоянии даже если сигнал с катушки снимается;
4. RM – реле выключается, если на катушку поступает сигнал высокого уровня и остается в выключенном состоянии;
Каждая катушка может одновременно управлять несколькими контактами, как нормально замкнутыми, так и нормально разомкнутыми. Для того, чтобы использовать вспомогательные реле указанных типов, из палитры Auxiliary Relays, которая представлена на рис.14, следует выбрать необходимый блок и расположить его на диаграмме.
Рис.14. Блоки вспомогательных реле
Пример 3. Разработать программу, работающую по следующему алгоритму. При нажатии на кнопки Z1 и Z2, на выходе Q1 появляется сигнал высокого уровня. Этот сигнал управляет вспомогательным импульсным реле М1. Контакт реле m1 (нормально замкнутый) управляет состоянием выхода Q2. При нажатии на кнопку Z3 замыкается реле М2, а при нажатии на кнопку Z4, реле М2 размыкается. Контакт реле М2 передает сигнал с дискретного входа I1 на дискретный выход Q3.
Решение. На рис.15 представлена схема, реализующая описанный алгоритм.
Рис.15. Пример использования вспомогательных реле
Перейдя в режим симуляции можно проверить работу схемы. Для фиксации положения кнопок Z1 и Z2 в контекстном меню этих блоков следует выбрать команду Force and Maintain. В появившемся диалоговом окне (рис.16) установить флажок напротив метки ON/Actif.
Рис.16. Изменение состояния кнопки
На рис. 17 показано окно программы в режиме моделирования (симуляции).
Рис.17. Вид схемы в режиме моделирования
Как видно из схемы, контакт m1 разомкнут, даже если на реле М1 сигнал не подается (реле М1 изменяет состояние только при изменении управляющего сигнала – контакт Q1). Контакт М2 замкнут, т.к. реле М2 сохраняет свое состояние даже при отсутствии сигнала на входе (SET Action). Для размыкания контакта М2 следует нажать на кнопку Z4.
Использование счетчиков.
Счетчики используются для подсчета импульсов, причем счет может происходить как на увеличение значения счетчика, так и на уменьшение. Значение счетчика может быть установлено в начальное (preset) или нулевое (zero) значение. Это определяется настройками блока счетчика, которые расположены на палитре Counters (рис.6). На рис.18 представлена палитра с блоками счетчиков.
Рис.18. Палитра блоков счетчиков
Блоки С1-СG представляют собой контакты, управляемые счетчиком. Контакт замыкается (или размыкается) при достижении счетчиком величины preset. Если значение preset равно 0, то на выходе счетчика устанавливается высокий уровень, если значение счетчика больше 0. Этот сигнал изменяет состояние связанного с ним контакта. Контактов, управляемых счетчиком, может быть несколько, причем разных типов – нормально разомкнутых или нормально замкнутых.
На схеме счетчик представлен в виде катушки и обозначается СС1-ССG. Для того, чтобы расположить счетчик на диаграмме, необходимо навести курсор мыши на изображение буквы «С», и удерживая нажатой левую кнопку мыши, перетащить блок в нужную ячейку колонки Coil. Эта катушка представляет собой счетный вход счетчика. При изменении сигнала, подаваемого на катушку, будет изменяться значение счетчика на 1 в сторону увеличения. Для того, чтобы уменьшить значение счетчика на 1, на диаграмме необходимо расположить блок, управляемый направлением счета (Counting Direction, DC1-DCG). Подав на катушку направления счета высокий, а затем импульс на счетный вход, значение счетчика уменьшится на 1. Если блок направления счета не используется, то по умолчанию установлено направление счета на увеличение значения счетчика. На схеме вход направления счета обозначается CD1-CDG. Для того, чтобы сбросить счетчик, на диаграмме необходимо расположить блок Initialization, который обозначен на палитре (рис.18) буквой «R» (RC1-RCG). При подаче высокого уровня на катушку сброса, значение счетчика примет величину preset, либо установится в 0. Это зависит от настроек, выполненных с помощью диалогового окна настроек счетчика (рис.19). Для вызова этого окна необходимо дважды нажать левую кнопку мыши на изображении блока счетчика.
Рис.19. Окно настроек счетчика
В окне настроек счетчика устанавливается значение импульсов (поле Pulses), после которых на выходе счетчика появится высокий уровень сигнала. Также указывается условие срабатывания – на выходе счетчика установится сигнал высокого при достижении значения preset либо при достижении 0. Значение preset устанавливается в поле pulses и может принимать значения от 0 до 32767. Второе условие срабатывает при обратном счете. Так, для показанных на рис.19 настроек, после подачи сигнала инициализации на счетчик, значение счетчика станет равным 5. В режиме обратного счета, при достижении счетчиком значения 0, на катушке появится сигнал высокого уровня, и положения контактов, связанных со счетчиком, изменятся.
Функция Latching (защелка) используется для сохранения значения счетчика в случае исчезновения питания модуля. После восстановления питания, счетчик инициализируется предыдущим значением.
На рис.20 представлен пример использования счетчика в диаграмме. При подаче импульсов на вход I1 модуля, значение счетчика увеличивается, поскольку импульсы поступают на катушку СС1 (счетный вход). Если на входе I2 присутствует высокий уровень сигнала, то на катушку направления счета DC1 поступает лог.1 (счетчик переходит в реверсный режим счета). В таком режиме, при подаче импульсов на вход I1, значение счетчика будет уменьшаться. При нажатии на кнопку Z1 на вход инициализации счетчика RC1 поступит сигнал высокого уровня и счетчик примет значение 5. При достижении счетчиком значения 0 (в режиме обратного счета), контакт С1, связанный с выходом счетчика, замкнется, и на выходе Q1 появится лог.1. Как видно из рисунка, каждый из входов счетчика представлен в виде катушки. Подавая или снимая напряжение с этих катушек, выполняется управление режимом работы счетчика по описанному выше алгоритму.
Рис.20. Пример использования счетчика
Диаграммы, представленные на рис.21 и рис.22 поясняют работу счетчика в прямом и реверсном режимах.
Рис.21. Работа счетчика в прямом режиме
На рисунках обозначено Current counter value – текущее значение счетчика, Preset value – значение предустановки, Initialization R – сигнал на входе Initialization (катушка CR1), Counting Direction D – сигнал на входе Counting Direction (катушка CD1), Output – сигнал на выходе счетчика, который управления состоянием связанных с ним контактов.
Рис.22. Работа счетчика в реверсном режиме
При достижении счетчиком минимального (Low saturation) или максимального значений (High saturation), он насыщается и дальнейших изменений значения счетчика не происходит.