ЛИСВ Лаб 1 / лаба1
.doc
САНКТ-ПЕТЕРБУРГСКИЙ
ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
имени В.И. Ульянова (Ленина)«ЛЭТИ».
Лабораторная работа №1
“ Изучение основ программирования логических контроллеров”
Выполнили:
Группа: Преподаватель:
Цель работы: изучение основных принципов программирования логических контроллеров.
Задание.
-
Ознакомиться с основными принципами программирования логических контроллеров.
-
Создать программу для ПЛК в соответствии с п.1.2-1.9 методических указаний.
-
Создать программу для ПЛК:
№ |
Светофор 1 |
Светофор 2 |
1 |
красный + доп. зеленый |
зеленый |
2 |
желтый + красный + доп. зеленый |
желтый |
3 |
зеленый |
красный + доп. зеленый |
4 |
желтый |
желтый + красный + доп. зеленый |
5 |
красный |
зеленый |
6 |
желтый + красный |
желтый |
7 |
зеленый |
красный |
8 |
желтый |
желтый + красный |
|
|
|
9 |
желтый/off |
желтый/off |
-
Разработать операторскую панель.
-
Выполнить программу в режиме симулятора
-
Составить отчет.
Описание модуля WAGO 750-530
WAGO 750-530 представляет собой 8-канальный дискретный выходной модуль постоянного тока 24 В (см. рисунок 1).
Рисунок 1
Модуль имеет 8 выходных каналов, занимая в ширину всего 12мм. Модуль предназначен для управления нагрузками постоянного тока 24 В. Выходной сигнал имеет положительную полярность. Все выходы защищены от короткого замыкания, и гальванически изолированы от внутренней шины с помощью оптопар. Технические параметры модуля указаны в таблице.
Число выходов |
8 |
Потребление тока (внутреннее) |
25 мА |
Напряжение шины разводки питания |
Пост. 24 В ( –15 % ... +20 %) |
Тип нагрузки |
резистивная, индуктивная, лампы |
Частота переключения (макс.) 2 кГц |
2 кГц |
Выходной ток |
0.5 A защищен от короткого замыкания |
Потребление тока (тип. внешняя цепь) |
15 мА /модуль+нагрузка |
Напряжение изоляции |
500 В система/питание |
Внутренняя размерность данных |
8 бит |
Структура и описание кода программы
-
PLC_PRG- это главный исполняемый программный компонент проекта (рис.2).
Рисунок 2.
В данном случае используем язык CFC (Continuous Function Chart) диаграмма непрерывной функции. Язык CFC не использует цепи, но дает возможность свободно размещать компоненты и соединения.
Основной исполняемый модуль характеризуется следующим набором входов/выходов(рис.2).
Входной параметр IN определяет запуск светофора. Выходные параметры L1_yellow, L1_red, L1_dgreen, L2_green, L2_yellow, L2_red, L2_dgreen определяют состояния сигналов первого и второго светофоров в каждый момент времени.
Блок-схема программы приведена в приложении 1.
-
Программу на языке SFC с именем SEQUENCE. Данная программа реализует алгоритм перехода состояний светофоров из одного состояния в другое в соответствии с автоматом состояний (рис.4). Модуль SEQUENCE реализует корректное управление первым и вторым светофорами (рис. 3).
Рисунок 3
Входная переменная START инициализирует запуск механизма управления светофорами на перекрестке. В соответствии с автоматом состояний формируются значения выходных параметров переменных SIGNAL1 и SIGNAL2, которые определяют состояния светофоров в каждый момент времени.
Рисунок 4. Автомат состояний.
Таблица 1: таблица состояний.
№ |
Светофор 1 |
Светофор 2 |
С0 |
off |
off |
С1 |
красный + доп. зеленый |
зеленый |
С2 |
желтый + красный + доп. зеленый |
желтый |
С3 |
зеленый |
красный + доп. зеленый |
С4 |
желтый |
желтый + красный + доп. зеленый |
С5 |
красный |
зеленый |
С6 |
желтый + красный |
желтый |
С7 |
зеленый |
красный |
С8 |
желтый |
желтый + красный |
|
|
|
С9 |
желтый/off |
желтый/off |
Язык последовательных функциональных схем (SFC)
SFC – это графический язык, который позволяет описать хронологическую последовательность различных действий в программе. Для этого действия связываются с шагами (этапами), а последовательность
работы определяется условиями переходов между шагами.
В качестве примера рассмотрим часть программы SEQUENCE (рис.5).
Рисунок 5
Как видно из примера язык SFC представляет собой набор последовательных шагов(действий) с условиями перехода. Для каждого шага и условия перехода можно создать функцию. В нашем случае мы функции для каждого шага мы опсисываем на языке IL (Instruction list) дословно – список инструкций. Каждая инструкция начинается с новой строки и содержит оператор и, в зависимости от типа операции, один и более операндов, разделенных запятыми. Перед операндом может находиться метка, заканчивающаяся двоеточием (:). Комментарий должен быть последним элементом в строке. Между инструкциями могут находиться пустые строки.
Пример шаг1(step1):
LD 5 (записываем значение 5 в аккумулятор)
ST SIGNAL1 (значение из аккумулятора записываем в переменную Signal1)
LD 1 (записываем значение 5 в аккумулятор)
ST SIGNAL2 (значение из аккумулятора записываем в переменную Signal2)
CAL DELAY(TIME_IN:=SHT) (запускаем функциональный блок WAIT с входной переменной TIME_IN равной значению переменной типа время SHT).
-
Функциональный блок WAIT будет работать таймером, задающим длительность стадий TRAFFICSIGNAL. Этот функциональный блок должен иметь входную переменную TIME типа TIME и генерировать на выходе двоичную (Boolean) переменную, которую мы назовем OK. Данная переменная должна принимать значение TRUE, когда желательный период времени закончен.
Предварительно мы устанавливаем эту переменную в FALSE в конце строки объявления (но до точки с запятой) " := FALSE ".
Теперь нам нужен генератор времени POU TP. Он имеет два входа (IN, PT) и два выхода (Q, ET). TP делает следующее:
Пока IN установлен в FALSE, ET будет 0 и Q будет FALSE. Как только IN переключится в TRUE, выход ET начнет отсчитывать время в миллисекундах. Когда ET достигнет значения заданного PT, счет будет остановлен. Тем временем выход Q равен TRUE, пока ET меньше PT. Как только ET достигнет
значения PT, выход Q снова переключится в FALSE.
Функциональный блок WAIT написан на языке IL и имеет следующий вид:
LD ZAB.Q
JMPC MARK
CAL ZAB(IN:=FALSE)
LD TIME_IN
ST ZAB.PT
CAL ZAB(IN:=TRUE)
JMP END
MARK:
CAL ZAB
END:
LDN ZAB.Q
ST OK
RET
Сначала проверяется, установлен ли Q в TRUE (возможно, отсчет уже запущен), в этом случае мы не трогаем установки ZAB, а вызываем функциональный блок ZAB без входных переменных - чтобы проверить, закончен ли период времени.
Иначе мы устанавливаем переменную IN ZAB в FALSE и одновременно ET в 0 и Q в FALSE. Таким образом, все переменные установлены в начальное состояние. Теперь мы устанавливаем необходимое время TIME переменной PT и вызываем ZAB с IN:=TRUE. Функциональный блок ZAB теперь будет работать, пока не достигает значения TIME и не установит Q в FALSE. Инвертированное значение Q будет сохраняться в переменной OK после каждого выполнения WAIT. Как только Q станет FALSE, OK примет значение TRUE.
-
Функциональный блок TRAFFICSIGNAL
Данный блок реализует установку сигнала светофора в зависимости от входного значения STATUS(рис.6).
Рисунок 6
Функциональный блок TRAFFICSIGNAL написан на языке FBD – это графический язык программирования. Он работает с последовательностью цепей, каждая из которых содержит логическое или арифметическое выражение, вызов функционального блока, переход
или инструкцию возврата.
Таблица 2. Состояния переменной STATUS.
-
STATUS
Цвет
1
зеленый
2
желтый
3
красный
4
желтый+ красный
5
красный + доп. зеленый
6
желтый + красный + доп. зеленый
7
off
Пример кода функционального блока TRAFFICSIGNAL.
Рисунок 7
Когда переменная STATUS принимает значение 1 выходная переменная GREEN принимает значение TRUE. Все остальные выходные переменные принимают значение FALSE. Как видно из рисунка 7 если STATUS принимает значение 4 то переменные RED и YELLOW принимают значение TRUE, что значит что у нас загорится желтый и красный сигнал светофора.
Вывод:
В ходе выполнения лабораторной работы мы ознакомились с основными принципами программирования логических контроллеров(ПЛК) в программной среде WAGO I/O PRO 32. Изучили основные принципы программирования на языках МЭК ( SFC, IL, FBD, CFC ).
Также мы самостоятельно создали программу для ПЛК в соответствии с заданием преподавателя. Сделали виртуальную операторскую панель и запустили программу в режиме симулятора с целью проверки корректности работы программы. Подключили микроконтроллер WAGO с модулем WAGO 750-530 к выходам которого подсоединили макет светофоров и после загрузки программы в контроллер наблюдали работу светофоров в соответствии с заданием.
Приложение 1: блок–схема программы.