Разработка HMI для системы управления складским краном на базе PLC Modicon M340 и операторской панели Magelis
Курсовая работа, 27 Октября 2013, автор: пользователь скрыл имя
Описание работы
Создать систему управления подъемным краном склада на базе PLC Modicon M340, используя операторскую панель Magelis. В проекте должно присутствовать моделирование пути, анимированная панель управления для операторской панели.
Содержание работы
1. Постановка задачи..……………………………………………………….3
2. Техническое задание…………...………….……….……………………..3
3. Функциональная спецификация……………………………………........4
4. Диаграмма разгона-торможения крана.…………..…….……....…….....5
5. Проектирование аппаратной части..……………………………..………6
6. Проектирование программной части..…………………………..………7
7. Таблица переменных..…………………………..…………………...…8-9
8. Скрипты..…………………………..………………………….…...…10-13
9. Примеры работы программы..…..………………………….………..…14
10. Заключение……………………..………………………….………..…15
Файлы: 1 файл
Управлени краном.docx
— 166.06 Кб (Скачать файл)САНКТ-ПЕТЕРБУРГСКИЙ
ФАКУЛЬТЕТ ТЕХНИЧЕСКОЙ КИБЕРНЕТИКИ
КАФЕДРА САУ
Курсовая работа
«Разработка HMI для системы управления складским краном на базе PLC Modicon M340 и операторской панели Magelis»
Проверил: Щербина А.Н.
Выполнил: студент гр.4083/11
Дегтярев Д.С.
САНКТ-ПЕТЕРБУРГ 2010 г.
Содержание
1. Постановка задачи..……………………………………………………….
2. Техническое задание…………...………….……….…………………
3. Функциональная спецификация……………………………………....
4. Диаграмма разгона-торможения крана.…………..…….……....…….....5
5. Проектирование аппаратной части..……………………………..………6
6. Проектирование программной части..…………………………..………7
7. Таблица переменных..…………………………
8. Скрипты..…………………………..………………………
9. Примеры работы программы..…..…
10. Заключение……………………..…………………………
Постановка задачи
Создать систему управления подъемным краном склада на базе PLC Modicon M340, используя операторскую панель Magelis. В проекте должно присутствовать моделирование пути, анимированная панель управления для операторской панели.
Техническое задание
- Склад представляет собой помещение в форме параллелепипеда, длиной 100 метров, шириной 37 метров и высотой 12 метров. Предполагается складирование кубических объектов таким образом, чтобы по длине помещалось 47 объектов, по ширине 16 и по высоте 6
- Кран представляет собой грузоподъемный механизм, который ездит по направляющим вдоль и поперек склада. Кран предназначен для складирования в автономном режиме, приема изделий
- Погрешность установки изделия не должна превышать 5мм
- Ускорение крана не должно превышать норм, принятых для складских кранов
- Реализовать два режима управления краном: автоматический и ручной.
- Реализовать регулирование скорости движения приводом крана для осуществления плавного старта и останова.
- Реализовать аварийную остановку крана и светозвуковую сигнализацию при серьезных неисправностях
- Система должна быть работоспособна в диапазоне температур от -40 до 60 градусов Цельсия
- После запуска программа должна автоматически определить местоположение крана исходя из заданных параметров расстояния
- Контроллер системы управления размещен на расстоянии >150 метров от рабочей станции оператора
- Связь управляющего контроллера с компьютером оператора осуществляется по сети Ethernet.
- Монтаж и техническая наладка производится в соответствии с функциональной схемой, которая представлена в данном проекте
Функциональная спецификация
- Реализовать данный проект на ПЛК Modicon M340, с использованием операторской панели Magelis
- В системе должно быть реализовано два режима управления: автоматический и ручной. В автоматическом режиме задаются точки позиционирования при складировании и приеме груза и далее без участия оператора выполняется манипулирование грузов. В ручном режиме выполняется независимое управление по любой координате перемещения крана (груза). Задание позиции выполняется по номеру ячейки или по пути перемещения
- Предусмотреть влияние «рывка» на изделие. При рывке ускорение крана резко возрастает, что приводит к возникновению аварийно-опасной ситуации. Необходимо скомпенсировать явления рывка путем плавного пуска и останова
- Обычно для связи контроллера с операторской панелью используются промышленные шины и сети (ModBus, ProfiBus, Ethernet). Современное состояние HMI, контроллеров и интерфейсов преобразователей частоты таково, что для реализации моего варианта с отображением процесса на панели Magelis целесообразно выбрать Ethernet. Для связи будем использовать блоки удлинителей, обеспечивающие надежное соединение на расстоянии до 13 километров
- Для лучшего понимания задачи я построил диаграмму разгона-торможения крана, которая приведена на следующем листе
Диаграмма разгона-торможения крана
На диаграмме представлены зависимости пути, скорости, ускорения и рывка от времени (S(t), V(t), a(t), r(t) соответственно). Все время «поделено» на отрезки , которые обозначены
Общая формула для вычисления перемещения крана на любом отрезке времени будет выглядеть так:
Проектирование аппаратной части
Для реализации курсовой работы мною была выбрана операторская панель Magelis XBTGT4000 series, диагональю 7.5 дюймов и разрешением экрана 640х480 пикселей. Общую схему подключения панели к ПЛК можно представить так:
Проектирование программной части
Вся программная часть курсовой работы была создана в программе Vijeo Designer, которая является средой разработки для операторских панелей Magelis.
Основная задача, которая стояла передо мной – это создать визуализацию работы складского крана. Для это я создал три рабочих панели: «Меню», «Управление краном» и «Настройки».
На каждой панели дублируются:
- Кнопки «Пуск/стоп» и «Аварийный останов»
- Кнопки перехода на другие панели
Панель «Меню» содержит:
- Выбор режима управления (автоматический и ручной)
- Кнопку синхронизации на случай если был аварийный останов
- Область, где отображается текущее положение крана
Панель «Управление краном» содержит:
- Область задания координат («По координате», «По ячейке», «Сброс координат»)
- Область ручного управления краном с отображением текущего положения крана, его состоянием (двигается, ждет реакции оператора), отдельную кнопку «Пуск/стоп» для ручного режима
Панель «Настройки» содержит:
- Область задания максимальных параметров (скорости, ускорения, рывка)
Таблица переменных
№ |
Имя тега |
Тип |
Его описание, комментарий |
1 |
a |
real |
Величина ускорения в данный момент времени |
2 |
auto |
bool |
Режим управления (автоматический или ручной) |
3 |
By_box_mess |
bool |
Вывод всплывающего окна, если выбор координат «По ячейке» |
4 |
done |
bool |
Вывод всплывающего окна, если кран завершил работу |
5 |
error |
bool |
Вывод всплывающего окна, если не введены параметры крана |
6 |
go |
bool |
Запуск крана, если введенные параметры устраивают пользоват. |
7 |
Kran_ready |
bool |
Состояние крана («готов», «не готов») |
8 |
Open_go |
bool |
Вывод всплывающего окна перед запуском крана |
9 |
Ostanov |
bool |
Аварийный останов |
10 |
Rasst_mes |
bool |
Вывод всплывающего окна, если выбор координат «По координате» |
11 |
rivok |
real |
Величина рывка в данный момент времени |
12 |
s |
real |
Величина перемещения крана в данный момент времени |
13 |
Sbros |
bool |
Сброс введенных координат |
14 |
Show_correct |
bool |
Вывод всплывающего окна, если введенный параметрв верны |
15 |
Speed |
real |
Максимальное значение скорости (вводится пользователем) |
16 |
Start |
bool |
Пуск крана |
17 |
Start_Manual |
bool |
Ручной пуск крана |
18 |
Synhronize |
bool |
Синхронизация крана |
19 |
T |
real |
Величина времени (переменная, по которой идет счетчик) |
20 |
T1 |
real |
Время, за которое был пройден первый отрезок из диаграммы |
21 |
T2 |
real |
Время, за которое был пройден второй отрезок из диаграммы |
22 |
T3 |
real |
Время, за которое был пройден третий отрезок из диаграммы |
23 |
T4 |
real |
Время, за которое был пройден четвертый отрезок из диаграммы |
24 |
T5 |
real |
Время, за которое был пройден пятый отрезок из диаграммы |
25 |
T6 |
real |
Время, за которое был пройден шестой отрезок из диаграммы |
26 |
T7 |
real |
Время, за которое был пройден седьмой отрезок из диаграммы |
27 |
Uskor |
real |
Максимальное значение ускорения (вводится пользователем) |
28 |
V |
real |
Величина скорости в данный момент времени |
29 |
X_dest |
real |
Координата Х (вводится пользователем) |
30 |
X_move |
bool |
Движение крана по оси Х |
31 |
X1 |
real |
Величина координаты Х в данный момент времени |
32 |
X1_1 |
real |
Путь по Х, который пройден за первый отрезок из диаграммы |
33 |
X2_1 |
real |
Путь по Х, который пройден за второй отрезок из диаграммы |
34 |
X3_1 |
real |
Путь по Х, который пройден за третий отрезок из диаграммы |
35 |
X4_1 |
real |
Путь по Х, который пройден за четвертый отрезок из диаграммы |
36 |
X5_1 |
real |
Путь по Х, который пройден за пятый отрезок из диаграммы |
37 |
X6_1 |
real |
Путь по Х, который пройден за шестой отрезок из диаграммы |
38 |
X7_1 |
real |
Путь по Х, который пройден за седьмой отрезок из диаграммы |
39 |
Y |
real |
Величина координаты Y в данный момент времени |
40 |
Y_dest |
real |
Координата Y (вводится пользователем) |
41 |
Y_move |
bool |
Движение крана по оси Y |
42 |
Y1_1 |
real |
Путь по Y, который пройден за первый отрезок из диаграммы |
43 |
Y2_1 |
real |
Путь по Y, который пройден за второй отрезок из диаграммы |
44 |
Y3_1 |
real |
Путь по Y, который пройден за третий отрезок из диаграммы |
45 |
Y4_1 |
real |
Путь по Y, который пройден за четвертый отрезок из диаграммы |
46 |
Y5_1 |
real |
Путь по Y, который пройден за пятый отрезок из диаграммы |
47 |
Y6_ |
real |
Путь по Y, который пройден за шестой отрезок из диаграммы |
48 |
Y7_1 |
real |
Путь по Y, который пройден за седьмой отрезок из диаграммы |
49 |
Z |
real |
Величина координаты Z в данный момент времени |
50 |
Z_dest |
bool |
Координата Z (вводится пользователем) |
51 |
Z_move |
bool |
Движение крана по оси Z |
52 |
Z1_1 |
real |
Путь по Z, который пройден за первый отрезок из диаграммы |
53 |
Z2_1 |
real |
Путь по Z, который пройден за второй отрезок из диаграммы |
54 |
Z3_1 |
real |
Путь по Z, который пройден за третий отрезок из диаграммы |
55 |
Z4_1 |
real |
Путь по Z, который пройден за четвертый отрезок из диаграммы |
56 |
Z5_1 |
real |
Путь по Z, который пройден за пятый отрезок из диаграммы |
57 |
Z6_1 |
real |
Путь по Z, который пройден за шестой отрезок из диаграммы |
58 |
Z7_1 |
real |
Путь по Z, который пройден за седьмой отрезок из диаграммы |
Для того, чтобы правильно моделировать движение крана, программу нужно писать в контроллере, а не в среде Vijeo Designer.
Для построения диаграммы разгона-торможения крана из контроллера нам надо будет взять переменные «X», «Y», «Z», и «t». Кроме этого, нужны будет переменные, отвечающие за «Пуск/стоп», «Аварийный останов» и т.д.
Скрипты
Для моделирования работы крана я использовал триггер, который с шагом 0,1 секунда вычисляет текущее значение координат X,Y,Z.
К сожалению, этот шаг работы триггера очень велик для точного расчета координаты, поэтому это ведет к «пропуску» значений и большим погрешностям. Лучше всего писать код в контроллере, а потом из контроллера посылать значения в операторскую панель.
Скрипт – «По условию» - (Start==1||Start_manual==1)&&
Данный скрипт вычисляет время t1,t2,t4,v,x2_1 перед запуском программы:
t1.write(uskor.getFloatValue()
v.write(rivok.getFloatValue()*
t2.write((speed.getFloatValue(
x1.write(rivok.getFloatValue()
x2_1.write(uskor.
t4.write((x_dest.
open_go.write(1); // вызываем всплывающее окно перед запуском крана
Скрипт – «По триггеру
с шагом 0.1 сек» - Start==1&&Start_manual!=1&&go=
Данный скрипт вычисляет координату Х, скорость v, ускорение a на каждом отрезке времени t.
float t0,t2_1,t3_1,t4_1,t5_1,t6_1,
t0=0;
t2_1=0;
t3_1=0;
t4_1=0;
t5_1=0;
t6_1=0;
t7_1=0;
x_all=0;
t.write(t.getFloatValue()+0.1)
if (t.getFloatValue()< t1.getFloatValue()) // условие, если время первого отрезка диаграммы
{
a.write(t.getFloatValue()*
v.write(a.getFloatValue()*t.
x1.write(v.getFloatValue()*t.
x1_1.write(x1.getFloatValue())
}
t2_1=t1.getFloatValue()+t2.
if (t1.getFloatValue()<t.
{
a.write(uskor.getFloatValue())
v.write(v.getFloatValue()+(a.
x1.write(x1.getFloatValue()+v.
x2_1.write(x1.getFloatValue()-
}
t3.write(t1.getFloatValue());/
t3_1=t1.getFloatValue()+t2.
if (t2_1<t.getFloatValue()&& t.getFloatValue()<=t3_1) // условие, если время третьего отрезка диаграммы
{
a.write(a.getFloatValue()-(
v.write(v.getFloatValue()+a.
x1.write(x1.getFloatValue()+v.
x3_1.write(x1.getFloatValue()-
}
t5.write(t3.getFloatValue());/
t6.write(t2.getFloatValue());/
t7.write(t1.getFloatValue());/
x7_1.write(x1_1.getFloatValue(
x6_1.write(x2_1.getFloatValue(
x5_1.write(x3_1.getFloatValue(
t4_1=t1.getFloatValue()+t2.
if (t3_1<t.getFloatValue()&& t.getFloatValue()<=t4_1) // условие, если время четвертого отрезка диаграммы
{
a.write(0); // ускорение на этом отрезке равно 0
x1.write(x1.getFloatValue()+(
}
t5_1=t1.getFloatValue()+t2.
if (t4_1<t.getFloatValue()&& t.getFloatValue()<t5_1) // условие, если время пятого отрезка диаграммы
{
a.write(a.getFloatValue()-(
v.write(v.getFloatValue()+(a.
x1.write(x1.getFloatValue()+v.
}
t6_1=t1.getFloatValue()+t2.
if (t5_1<t.getFloatValue()&& t.getFloatValue()<=t6_1) // условие, если время шестого отрезка диаграммы
{
a.write(-uskor.getFloatValue()
v.write(v.getFloatValue()+(a.
x1.write(x1.getFloatValue()+v.
}
t7_1=t1.getFloatValue()+t2.
if (t6_1<t.getFloatValue()&& t.getFloatValue()<=t7_1) // условие, если время седьмого отрезка диаграммы
{
a.write(a.getFloatValue()+(
v.write(v.getFloatValue()+(a.