Си б А
Рисунок 15. Внешний видДлицевой панели контроллера с запущенной программой
После загрузки и запуска программы можноИпроверить ее работоспособность. Как было задумано, тумблерами, подсоединенными к первому и второму дискретным входам ПЛК (сверху, см. рисунок 15) задаются исходные данные для логических операций (в программе обозначены, как A и B). Первый дискретный выход (в программе обозначен, как С) соответствует результату логического умножения A и B, второй дискретный выход (обозначен, как D) соответствует результату логического сложения A и B, а третий дискретный выход соответствует результату инверсии A. Устанавливая тумблеры в разных комбинациях, можно, наблюдая результаты, составить таблицы истинности для логических операций.
16
На рисунке 15 видно, что при первом тумблере, (соответствует переменной A) задающем логический нуль, и втором тумблере (соответствует переменной B), задающем логическую единицу, результат логического умножения (переменная C – первый дискретный выход) будет нулевым, результат логического сложения (переменная D –
Свторой дискретный выход) – будет равен единице, также единице бу-
дет равна переменная E в которую программно заносится инвертированная переменная A.
помощью запрограммированного таким образом ПЛК можно
постро ть табл цы ст нности основных логических операций. шенияИтак, в процессе постановки данной задачи и реализации ее ре-
был получен опыт ра оты с программируемым логическим контроллером усвоены и описаны основные приемы работы со средой разработчбка основные принципы программирования на языке
Ladder Diagram стандарта МЭК.
А Д И
17
Лабораторная работа №2 ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ LD. ТАЙМЕРЫ, СЧЕТЧИКИ И ДЕТЕКТОРЫ ФРОНТОВ
Общие сведения о программе и программировании для ПЛК
СВ предыдущей лабораторной работе была составлена простая программа на простом в освоении языке программирования стандарта МЭК – Ladder Diagram, при этом рассматривались основные приемы работы со средой ез подро ностей о том, каким образом программа
Цель работы: освоить основные принципы программирования на языке LD, в том ч сле, использование типовых функциональных
блоков: таймеров, счетчиков, детекторов фронтов.
себе ределенного действияА.
выполняется, как устроены внутри более сложные проекты, и какие еще дополн тельные средства существуют для повышения удобства
пр ложен й. |
|
разработки |
|
Известно, что м кропроцессор в работе выполняет заданную |
|
последовательность машинных команд; последовательность обычно |
|
имеет начало и конец и кодирует в |
выполнение процессором оп- |
В случае, когда ПЛК управляет устройством, требуется, чтобы ПЛК работал до тех пор, пока устройство не будет остановлено по команде оператора, то есть фактически требуетсяДчтобы программа без команды останова, поданной извне, могла выполняться бесконечно долго.
Из курса информатики известно, что основные алгоритмические структуры бывают трех видов: последовательные (линейные) условия (ветвления) и циклы. Последовательная структура представляет собой простую цепочку команд, которые выполняютсяИпроцессором подряд от начала и до конца, при ветвлении одни команды выполняются при истинности определенного утверждения, другие – при его ложности, а когда выполняется цикл – определенная последовательность команд постоянно повторяется, пока не будет истинным (или ложным) определенное утверждение. Таким образом, можно сделать вывод, что при определенных условиях циклы могут выполняться бесконечно, и можно предположить, что в основе программ для ПЛК должна лежать циклическая алгоритмическая структура.
18
Так оно и есть: цикл выполнения программы в ПЛК реализован непосредственно в его встроенном программном обеспечении, и пользователю не
приходится заботиться о непрерывности выполнения программы. Проект для ПЛК описывает внутреннее алгоритмическое содержимое этого внешнего цикла, а с помощью определенных настроек проекта можно задать особенности циклического выполнения программы: например, выполняется ли один оборот цикла за строго определенное время, или следующий цикла начинается непосредственно сразу после окончания текущего.
СПЛК можно узнать з лекционного курса. Данные (числа, символы, строки, логическ е значен я, т. д.) при программировании на языках стандарта МЭК хранятся в переменных, как и при программировании на многих других языках. Для спользован я переменные объявляются в программе (в верхней
Особенности орган зации циклического исполнения программы на
обозначения адрес не указываетсяА, им отводится место в первой подходящей по
экрана, между словами VAR и END VAR). Возможные типы перемен-
ных и прав ла задан я значений приведены в лекционном материале.
В с стеме CoDeSys имеется два вида переменных: адресные, |
|
части |
|
или безадресные. Адресные переменные связаны со строго опреде- |
|
ленной ячейкой в памяти ПЛК, положение которой задается в виде |
|
специального |
. При ъявлении безадресных переменных |
размеру свободной о ласти так называемой динамической памяти. Адресные переменные предназначены для того, чтобы связывать их со входами, выходами, статическимиДячейками памяти, которые могут быть использованы для передачи данных по протоколам связи (см. лекции), а безадресные – для внутреннего использования. Адресные переменные более доступны для внешних устройств, в то время как с безадресными переменными проще работать программисту.
Далее для ввода и вывода будут использоватьсяИадресные, а для обработки данных – безадресные переменные. Безадресные переменные наравне со всеми остальными доступны в визуализациях.
Адресные переменные можно объявить двумя способами, один из которых продемонстрирован в предыдущей лабораторной работе. Второй способ заключается в том, что переменную, связанную с выходом можно объявить вместе со всеми остальными (внутренними) переменными в верхней части экрана программы (рисунок 19, переменные OUTER_SENSOR, INNER_SENSOR, RESET_BUTTON и LIGHT). В данной работе (и во многих по-
следующих) будет избран именно второй способ объявления переменных, так как при его использовании все задействованные имена переменных видны одновременно, это удобно при программировании.
19
Проект в системе «CoDeSys» состоит из отдельных программ (основной из которых является программа PLC_PRG), функций и функциональных блоков. Подробнее это будет рассматриваться на стр. 38, в одной из следующих лабораторных работ. Здесь будет нужна только та информация, что функциональный блок имеет свой набор переменных, который существует вместе с пе-
Сременными использующей его программной единицы, например, если использовать функциональный блок в основной программе, то значения всех входов и выходов функц онального блока не будут теряться, пока выполняется программа. У каждого функц онального блока свой набор переменных, и поэтому функциональный блок сам перед использованием объявляется как переменная. Как это про сход т, будет видно далее, в процессе выполнения работы.
уществует на ор типовых функциональных блоков, реализующий функции, часто спользуемые в программировании ПЛК. Это счетчики, тай-
меры детекторы фронтов. В случае ПЛК «ОВЕН» они находятся в стандартной библ отеке подпрограмм, входящей в комплект CoDeSys, который можно
с оф ц ального сайта компании «ОВЕН». К этим блокам относятся |
|
загрузить |
|
таймеры (TON, TOF), счетчики(CTU, CTD, CTUD), детекторы фронтов |
|
(R_TRIG, F_TRIG). Далее удут рассмотрены задачи на использование этих |
|
функциональных |
. Информация о работе данных блоков присутствует в |
блоков
файле помощи программногоАпакета «CoDeSys», а также они рассматриваются в лекционном материале.
Задача 1. Демонстрация работы реверсивного счетчика и детекторовДфронтов
Создать на языке LD программу, которая увеличивает на 1 значение целой переменной при наличии положительного фронта на дискретном входе %IX0.0 и уменьшает на 1 значение этой переменной при наличии отрицательного фронта на входе %IX0.1.
Общий вид программы на языке LD представленИна рисунке 16. Для регистрации фронтов использованы детекторы фронтов R TRIG и F TRIG, для работы с целой переменной используется реверсивный счетчик CTUD.
На вход CLK детектора фронтов подается дискретный сигнал: информация с дискретного входа, значение логической переменной, или логического выражения. Выход Q детектора фронта устанавливается в единицу в том случае, если входное значение блока изменилось по сравнению со значением в предыдущем цикле, единичное значение сохраняется в течение одного цикла. R_TRIG выдает единицу, когда ноль на входе сменяется единицей, F_TRIG выдает единицу, когда единица на входе сменяется нулем.
20