Практическая работа 1 Разработка системы управления и программирование ПЛК на языке LD.

Презентация:



Advertisements
Похожие презентации
Контроллеры для систем вентиляции и кондиционирования.
Advertisements

ГОУ НПО «Профессиональное училище 34», г. Краснокаменск, Забайкальский край, преподаватель Ермолин А.П., 12 слайдов, 3 курс, 2012г. Предмет: «Техническое.
Выполнил: Булак В.С.. Электропривод-это электромеханическое устройство для электрификации и автоматизации рабочих процессов. Электропривод-это электромеханическое.
Язык релейных диаграмм(LD) Графический язык Программа состоит из схем Использовался для программирования практически всех классических ПЛК Удобен для программирования.
Интерфейсы цифроаналоговых преобразователей. Цифровые интерфейсы выполняют функцию связи управляющих входов ключей ЦАП с источниками цифровых сигналов.
Текст программы. Алгоритм программы 1. Настройка системных регистров и портов. 2. Опрос кнопок. 2.1 Проверка состояний переменных, хранящих значения длительности.
Организация циклов Компьютер может заданное число раз выполнить одни и те же действия с разными данными. Повторяющиеся действия в программировании называются.
Тема: Хлеборезательные машины Преподаватель: Оспанов С.Қ.
Обучение, ориентированное на конкретное применение Официальный дилер.
Ф1 Ф3 Ф2 Д1 Д2 Д3 ЭР1 ЭКСВ Р ОГРАНИЧИТЕЛЬ Резонансный усилитель Дешифратор ЭР2 УС Щелкните мышью.
БелЭМН Комплексные РЗА двух- и трехобмоточных трансформаторов 110 кВ.
Введение в автоматное программирование А. А. Шалыто Санкт-Петербургский государственный университет информационных технологий, механики и оптики 2009 г.
Файловый тип данных Turbo Pascal Операции для работы с файлами 11 класс.
Как управлять поворотом направленных антенн и как индицировать их положение? Сельсин датчик – сельсин приемник Набор герконов – набор светодиодов Переменный.
CleanTime 40 B УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ Инструкция.
Презентация на тему: «Программирование циклических структур». Составила: учитель информатики Чура Н.А. Составила: учитель информатики Чура Н.А.
Использование анимационных эффектов и ссылок при создании презентаций.
Тема урока: «Разветвляющиеся алгоритмы». Цели урока: 1.познакомиться с алгоритмической структурой ветвление; 2.изучить полную и неполную формы команды.
АЛГОРИТМЫ РАЗВЕТВЛЕННОЙ СТРУКТУРЫ Условие задания: Определить попадает ли точка с заданными координатами (x, y) в круг заданного радиуса r. 1.
6.6. Анеморумбометр М-63м. Канал измерения мгновенной и максимальной скорости ветра. Триггер, как элемент электронных схем. Триггер – это схема на двух.
Транксрипт:

Практическая работа 1 Разработка системы управления и программирование ПЛК на языке LD

Постановка задачи Продукт с помощью загрузочного транспортера 1 попадает в бункер 2. Транспортер работает до тех пор, пока вес продукта в бункере не станет больше заданного. Затем транспортер 1 останавливается, срабатывает задвижка 3 и включается транспортер 4. После разгрузки бункера, задвижка закрывается, транспортер 4 останавливается и загрузка начинается вновь.

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

Разработка принципиальной схемы Транспортеры будут приводится в движение нереверсивными асинхронными электроприводами (двигатели M1 и M2). Защита всех цепей осуществляется автоматическим выключателем SF1. Тепловая защита двигателей – тепловыми реле KK1 и КК2. Подача напряжения питания на двигатели производится магнитными пускателями KM1 и KM2. Контроль вращения роторов (и движения транспортеров) выполняется с помощью реле контроля скорости SR1 и SR2.

Разработка принципиальной схемы Электропривод задвижки – реверсивный. Подача питания на двигатель осуществляется двумя магнитными пускателями КМ3 и КМ4. Привод снабжен концевыми выключателями SQ1 и SQ2, срабатывающими в положениях «закрыто» и «открыто» соответственно.

Схема управления пускателями (ручное управление, пуско-наладочные работы) Автоматический выключатель SF2 защищает цепи управления. Переключатель SA1 – для выбора режима управления (ручн. – авт.). Пуск транспортеров производится кнопками SB2 и SB4. Команды на закрытие и открытие задвижки - кнопками SB5 и SB6. Все пусковые кнопки шунтируются контактами пускателей. Кнопки SB1, SB3 останавливают транспортеры. Задвижка останавливается в крайних положениях концевыми выключателями SQ1 и SQ2. Для пускателей KM3 и КМ4 предусмотрена взаимная блокировка для предотвращения одновременного срабатывания. Цепи пускателей включают контакты тепловых реле.

Управление пускателями от контроллера Контроллер управляет пускателями через свои дискретные выходы релейного типа. Выходы сгруппированы. В автоматическом режиме управления напряжение фазы подается на общий группы.

Сигнализация Дискретным выходом DO5 контроллер включает световую (лампа HL1) и звуковую (ревун) сигнализацию.

Входные цепи Контроллер имеет встроенный источник питания для питания дискретных входов. Измерительный преобразователь (весы) – генераторного типа

Полная схема

Разработка программы Входные и выходные переменные в CoDeSys объявляются и «привязываются» к реальным входам контроллера во вкладке Resource, в пункте PLC Configuration. Типы и количество входов и выходов зависят от контроллера.

Глобальные переменные Мы будем строить имитационную систему (которую, однако, очень легко переделать в реальную), поэтому входные и выходные переменные объявим как глобальные: (*Входы:*) shiber_opened: BOOL:=FALSE; (* «шибер открыт», дискретный вход 1 *) shiber_closed: BOOL:=FALSE; (* «шибер закрыт», дискретный вход 2 *) speed2: BOOL:=FALSE; (* сигнал с РКС привода второго транспортера, дискретный вход 3*) speed1:BOOL:=FALSE; (* сигнал с РКС привода первого транспортера, дискретный вход 4*) weight:REAL:=0; (* вес продукта 0…100%, аналоговый вход 4…20 мА *) (*Выходы:*) motor1:BOOL:=FALSE; (* включить привод первого транспортера, дискретный выход 1 *) motor2: BOOL:=FALSE; (* включить привод второго транспортера, дискретный выход 2 *) shiber_open: BOOL:=FALSE; (* включить привод шибера на открытие, дискретный выход 3 *) shiber_close: BOOL:=FALSE; (* включить привод шибера на открытие, дискретный выход 4 *) signal: BOOL:=FALSE; (* сигнализация, дискретный выход 5 *)

Экран визуализации кнопка запуска-останова (с фиксацией) управляет глобальной переменной Start_process кнопка «быстрого» останова, управляет переменной Stop_now кнопка ввода заданного веса, управляет переменной ref_weight имитация срабатывания РКС (нефиксируемая кнопка), управляет переменной speed1_to имитация срабатывания РКС, управляет переменной speed2_to

Экран визуализации подсветка первого транспортера управляется переменными motor1 и speed1 подсветка второго транспортера управляется переменными motor2 и speed2 имитация срабатывания концевиков «открыто» и «закрыто», управляют переменными shiber_opened_to и shiber_closed_to визуализация движения шибера, управляются переменными shiber_open и shiber_close шкала веса

Экран визуализации управление шкалой веса посредством переменных weight_plus и weight_minus «сброс» аварии, переменная ok визуализация светового и звукового оповещателей, используется при пусках транспортеров и при аварии, управляется переменной signal шкала веса

Глобальные переменные Итого, дополнительные глобальные переменные: ref_weight:REAL:=80; (*заданный вес (кнопка ввода) *) weight_plus:BOOL:=FALSE; (* увеличить вес (имитация) *) weight_minus: BOOL:=FALSE; (* уменьшить вес (имитация) *) speed1_to:BOOL:=FALSE; (* имитация срабатывания РКС первого транспортера *) speed2_to: BOOL:=FALSE; (* имитация срабатывания РКС второго транспортера *) shiber_opened_to: BOOL:=FALSE; (* имитация срабатывания концевика «открыто» *) shiber_closed_to: BOOL:=FALSE; (* имитация срабатывания концевика «закрыто» *) Start_process:BOOL:=FALSE; (* запуск цикла *) ok:BOOL:=FALSE; (* выход из аварии *) Stop_now: BOOL:=FALSE; (* немедленная остановка *)

«Обслуживание» визуализации Обслуживание визуализации состоит в преобразовании «имитационных» сигналов в «реальные» и вызове программы управления. Разделение программ обслуживания и управления позволит легко перенести последнюю на целевую платформу. Выполним обслуживание в главной программе PLC_PRG, которую напишем на языке ST: (*Увеличение веса кнопками*) IF weight_plus=TRUE THEN weight:=weight+5; ELSIF weight_minus=TRUE THEN weight:=weight-5; END_IF

«Обслуживание» визуализации (*Формирование сигналов РКС*) (*РКС замыкает контакт, когда попросили кнопкой и двигатель запущен*) IF (speed1_to AND motor1) THEN speed1:=TRUE; END_IF (*РКС размыкает контакт, когда двигатель выключен*) IF NOT motor1 THEN speed1:=FALSE; END_IF (*аналогично для второго РКС*) IF (speed2_to AND motor2) THEN speed2:=TRUE; END_IF IF NOT motor2 THEN speed2:=FALSE; END_IF

«Обслуживание» визуализации (*Формирования сигналов концевых выключателей*) (*Сигнал формируется, если попросили кнопкой во время открытия*) IF (shiber_opened_to AND shiber_open) THEN shiber_opened:=TRUE; END_IF (*Сигнал снимается при движении шибера в обратную сторону*) IF shiber_close THEN shiber_opened:=FALSE; END_IF (*аналогично для сигнала о полном закрытии шибера*) IF (shiber_closed_to AND shiber_close) THEN shiber_closed:=TRUE; END_IF IF shiber_open THEN shiber_closed:=FALSE; END_IF rele; (*а это вызов программы управления!*)

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

Запоминание состояний На LD запоминание состояний естественным образом производится с помощью отдельных битов (булевых переменных): PROGRAM rele VAR loading: BOOL:=FALSE; unloading: BOOL:=FALSE; alarm: BOOL:=FALSE; Одновременно может быть установлен только один из трех битов или неустановлен ни один (покой).

Управление процессом кнопками Если в состоянии покоя нажата кнопка Start Process и не нажата STOP NOW!, начинаем загрузку. В любом случае при нажатии STOP NOW! переходим в режим «авария».

Режим «загрузка» В режиме «загрузка» происходит счет времени. Результат заносится в переменную loading_time типа TIME. Таймер «срабатывает» по истечению 25 сек и обнуляет переменную to_load_t (разрешение на загрузку по времени). Таким образом в течение 25 сек. to_load_t=TRUE и загрузка может продолжаться. Если по каким-либо причинам загрузка затянулась более, чем на 25 сек., это свидетельствует об аварии.

Режим «загрузка» Шибер нужно закрыть не более чем через 5 сек. после начала загрузки, после чего не более, чем за 5 сек., нужно запустить первый транспортер. Загрузка должна продолжаться, пока вес меньше заданного.

Режим «загрузка» Шибер закрывается если не истекло 5 сек. после начала загрузки и пока он не закрыт. Для запуска двигателя требуется, чтобы 1) время загрузки не истекло; 2) вес был меньше заданного; 3) время на запуск не истекло, либо истекло и РКС сработал; 4) шибер был закрыт.

Режим «загрузка» Если есть приказ (motor1_start), запустить двигатель через 1 сек. (в это время дается предупредительный сигнал). Когда вес достигнет заданного, сбросить состояние loading и установить состояние unloading (разгрузка).

Режим «загрузка» Переход в режим «авария» (alarm) осуществляется если: 1) истекло максимально допустимое время загрузки; 2) прошло 10 сек. с момента начала загрузки, а РКС не сработал; 3) прошло 5 сек. с момента начала загрузки, а шибер не закрыт.

Режим «разгрузка» В режиме «разгрузка» происходит счет времени. Результат заносится в переменную unloading_time типа TIME. Таймер «срабатывает» по истечению 25 сек и обнуляет переменную to_unload_t (разрешение на разгрузку по времени). Таким образом в течение 25 сек. to_unload_t=TRUE и разгрузка может продолжаться. Если по каким-либо причинам загрузка затянулась более, чем на 25 сек., это свидетельствует об аварии.

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

Режим «разгрузка» Второй транспортер останавливается спустя 3 сек. после того, как вес снизится до нуля (для его очистки). Для запуска двигателя транспортера требуется, чтобы 1) время разгрузки не истекло; 2) не было приказа на его остановку (stop=FALSE); 3) время на запуск не истекло, либо истекло и РКС сработал.

Режим «разгрузка» Если есть приказ (motor2_start), запустить двигатель через 1 сек. (в это время дается предупредительный сигнал). Открывать шибер нужно если: 1)второй транспортер работает; 2)время для открытия шибера (10 сек. с момента начала разгрузки) не истекло ; 3)шибер еще не открыт.

Режим «разгрузка» Если сформирована команда остановить двигатель второго транспортера (stop2=TRUE) и есть команда продолжить процесс (кнопка Start Process нажата) установить режим «загрузка» и сбросить режим «разгрузка». Если кнопка Start Process не нажата сбросить режим «разгрузка» и перейти, тем самым, в режим ожидания.

Режим «разгрузка» Переход в режим «авария» (alarm) осуществляется если: 1) истекло максимально допустимое время разгрузки; 2) прошло 5 сек. с момента начала разгрузки, а РКС не сработал; 3) прошло 10 сек. с момента начала разгрузки, а шибер не открыт.

Режим «авария» Сброс режима «авария» производится кнопкой «OK». При переходе в режим «авария», мгновенно даются команды на остановку подающего транспортера и закрытие шибера и спустя 5 сек. – на остановку разгрузочного транспортера.

Управление сигнализацией Сигнализация срабатывает в следующих случаях: 1)в режиме загрузки перед пуском подающего транспортера (когда дана команда на пуск, но выдержка времени перед пуском не закончена); 2)в режиме разгрузки перед пуском разгрузочного транспортера (когда дана команда на пуск, но выдержка времени перед пуском не закончена); 3)в режиме «авария».

Полный список локальных переменных VAR loading: BOOL:=FALSE; (*режим загрузка*) unloading: BOOL:=FALSE; (*режим разгрузки*) alarm: BOOL:=FALSE; (*режим авария*) timer: TON; (*таймер загрузки*) loading_time: TIME; (*время загрузки*) to_load_t: BOOL; (*разрешение на загрузку по времени*) time_more_1: BOOL; (*время на закрытие шибера или запуск второго транспортера истекло*) time_more_2: BOOL; (*время на запуск первого транспортера или на открытие шибера истекло*) to_load_w: BOOL; (*разрешение на загрузку по весу*) motor1_start: BOOL; (*команда на пуск первого транспортера*) timer1: TON; (*таймер запуска первого транспортера*)

Полный список локальных переменных timer2: TON; (*таймер разгрузки*) unloading_time: TIME; (*время разгрузки*) to_unload_t: BOOL; (*разрешение на разгрузку по времени*) to_unload_w: BOOL; (*разрешение на разгрузку по весу*) timer3: TON; (*таймер остановки второго транспортера*) stop2: BOOL; (*команда остановки второго транспортера*) motor2_start: BOOL; (*команда пуска второго транспортера*) timer4: TON; (*таймер пуска второго транспортера*) timer5: TON; (*таймер остановки второго транспортера при аварии*) END_VAR