Скачиваний:
101
Добавлен:
19.06.2015
Размер:
415.23 Кб
Скачать

САНКТ-ПЕТЕРБУРГСКИЙ

ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

имени В.И. Ульянова (Ленина)«ЛЭТИ».

Лабораторная работа №1

“ Изучение основ программирования логических контроллеров

Выполнили:

Группа: Преподаватель:

Цель работы: изучение основных принципов программирования логических контроллеров.

Задание.

  1. Ознакомиться с основными принципами программирования логических контроллеров.

  2. Создать программу для ПЛК в соответствии с п.1.2-1.9 методических указаний.

  3. Создать программу для ПЛК:

Светофор 1

Светофор 2

1

красный + доп. зеленый

зеленый

2

желтый + красный + доп. зеленый

желтый

3

зеленый

красный + доп. зеленый

4

желтый

желтый + красный + доп. зеленый

5

красный

зеленый

6

желтый + красный

желтый

7

зеленый

красный

8

желтый

желтый + красный

9

желтый/off

желтый/off

  1. Разработать операторскую панель.

  2. Выполнить программу в режиме симулятора

  3. Составить отчет.

Описание модуля 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 бит

Структура и описание кода программы

  1. 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.

  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).

  1. Функциональный блок 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.

  1. Функциональный блок 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: блок–схема программы.

Соседние файлы в папке ЛИСВ Лаб 1