РАЗРАБОТКА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ УПРАВЛЕНИЯ КОЗЛОВЫМ КРАНОМ

Описание:
кран козловой предназначен для перемещения грузов внутри цеха
Доступные действия
Введите защитный код для скачивания файла и нажмите "Скачать файл"
Защитный код
Введите защитный код

Нажмите на изображение для генерации защитного кода

Текст:

 


Факультет Электротехники и автоматики

Кафедра Систем автоматического управления

КУРСОВОЙ ПРОЕКТ

по дисциплине

«Проектирование автоматизированных производственных комплексов и систем»

на тему

РАЗРАБОТКА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ УПРАВЛЕНИЯ КОЗЛОВЫМ КРАНОМ

Санкт-Петербург,

2015г.

Задание на курсовое проектирование

Объект автоматизации

Название: Кран козловой перегрузочный общего назначения

Назначение: кран козловой предназначен для перемещения грузов внутри цеха.

Функции: кран козловой перемещается вдоль направляющих (рельсы) во всю их длину. Тележка, подвешенная к мосту крана может передвигаться вдоль моста. На тележке установлен подъемный механизм, способный опускать и поднимать груз.

Контролируемые параметры: Координаты положения моста крана, тележки на мосту, а также высота положения крюка подъемного механизма – измеряются линейным расстоянием от точки отсчета (крайнее положение). Концевые выключатели сигнализируют о достижении крайних положений перемещения подвижных элементов                                                                                 
                                        

Исполнительные устройства: реверсивные электродвигатели, приводящие в движение подъемное устройство, тележку и мост козлового крана

Требования к автоматизированной системе управления:

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

Студент ________________             Преподаватель ____________________

                  (Суслов М.В.)                                                (Филатов Д.М.)


Содержание

СОДЕРЖАНИЕ. 2

ВВЕДЕНИЕ. 2

1 Описание объекта автоматизации. 2

2 Разработка программы логического контроллера. 2

2.1. Конфигурация контроллера. 2

2.2 Написание программы в ОрепРСS. 2

2.3 Настройка протокола МоdВиsТСР в режиме Маster. Организация связи с верхним уровнем. 2

3 Разработка человеко-машинного интрефейса. 2

ЗАКЛЮЧЕНИЕ. 2

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 2

ПРИЛОЖЕНИЕ А.. 2

ПРИЛОЖЕНИЕ Б. 2


Введение

Цель курсового проекта «Разработка автоматизированной системы управлением техническим объектом» состоит в повышении уровня знаний студентов в области построения систем промышленной автоматизации, в изучении основных этапов разработки автоматизированных систем, применении программируемых логических контроллеров (ПЛК) для управления технологическим процессом.

В результате выполнения курсового проекта студенты приобретают навыки составления программ на языках стандарта МЭК 61131-3 для ПЛК, навыки создания многоуровневых автоматизированных систем, а также навыки по описанию, оформлению и представлению результатов проделанной работы.

В процессе выполнения курсового проекта необходимо составить описание объекта автоматизации, определить требования к составу модулей ПЛК, составить алгоритм управления техническим объектом и реализовать его языках программирования стандарта МЭК 61131-3, создать человеко-машинный интерфейс средствами SCADA-системы и организовать взаимосвязь ПЛК и SCADA-системы.


1 Описание объекта автоматизации

В качестве объекта автоматизации в данной курсовой работе рассматривается козловой кран общего назначения. Козловой кран состоит из следующих элементов:

·        металлический мост;

·        тележка, установленная или подвешенная на мосту и способная по нему передвигаться;

·        две опоры, каждая из которых включает одну или две стойки;

·        платформы опор для передвижения по подкрановому пути;

·        механизм подъёма груза;

·        механизм передвижения тележки;

·        механизм передвижения крана.

Типовой козловой кран имеет следующие характеристики:

·        грузоподъемность: 3,2-50 т;

·        пролет: 10-40 м;

·        Высота подъема: 7-16 м.

Управление краном производится подачей сигналов в модули управления электроприводами моста, тележки и грузоподъемного механизма. Таким образом, в рассматриваемой системе имеется 6 управляющих сигналов, обеспечивающих передвижение по трем осям.

Для обеспечения управления, необходимо использование датчиков положения, выход которых пропорционален координатам положения подвижных элементов крана. Для ограничения перемещений по координатам необходимы датчики концевого положения, по два на каждую координату. Таким образом, для реализации управления системой, необходимо обработка сигналов трех аналоговых и шести дискретных датчиков.

Автоматизированная система должна обеспечивать возможность управления перемещением подвижных элементов крана по заданию в ручном режиме при помощи кнопок «Вверх», «Вниз» (для подъемного механизма), «Вправо», «Влево» (для тележки и для моста). Также должна быть предусмотрена возможность по позиционированию крана по заданным координатам.

Графический интерфейс оператора крана должен содержать элементы управления движением (кнопки задания направления движения, кнопки остановки), а также поля ввода координат позиционирования крана. Кроме того, необходим вывод на экран текущего положения подвижных элементов крана. При достижении крайних позиций, сигнал управления должен автоматически сниматься, на экране должно появиться информационное сообщение о срабатывании концевого датчика, а кнопка движения в эту сторону должна быть неактивна. Перемещение в заданное положение должно осуществляться по введенным координатам положения по нажатию кнопки «Установить».


2 Разработка программы логического контроллера

2.1. Конфигурация контроллера

Первым шагом при конфигурировании контроллера является определе­ние количества и типа модулей, необходимых для выполнения поставленной задачи. Для реализации автоматизированного управления козловым краном, необходимо использовать модули аналогового и дискретного ввода, а также модуль дискретного вывода. Для реализации пользовательского графического интерфейса используем модуль связи по протоколу ModBUS TCP. Используемые модули представлены в таблице 2.1.

Таблица 2.1 Используемые модули в конфигурации

Название модуля

Краткое описание

00_main

Процессорный модуль

01_mbm2h

Коммуникационный модуль ТN 503 СОМ 485

03_a516

Интеллектуальный модуль аналогового ввода TA 516

04_d501

Модуль дискретного ввода ТD 501

05_d502

Модуль дискретного вывода ТD 502

12_mbstcp

Программный модуль Моdbus ТСР

15_opcs

Программный модуль для работы с ОреnРСS

При настройке модулей указываются требуемые параметры. В модуле 00_main задан необходимый IР адрес контроллера (192.168.10.18), а в модуле 12_mbstcp – IP адрес компьютера, опрашивающего контроллер (192.168.10.38).

Создадим новые выходные сигналы и установим их маршруты в соответствии с таблицей 2.2

Таблица 2.2 Сигналы модулей программируемого логического контроллера

Вых. сигнал

Вых. Модуль

Вых. адрес

Тип

Вх. модуль

Вх. адрес

Комментарий

AnalIn_1

03_a516

I:12

F4

15_opcs

N:0:1

Датчик полож. крана

AnalIn_2

03_a516

I:13

F4

15_opcs

N:0:2

Датчик полож. Тележки

AnalIn_3

03_a516

I:14

F4

15_opcs

N:0:3

Датчик полож. подъемного устройства

DigIn_1

04_d501

I:12

B1

15_opcs

N:0:0

Байт состояния концевых выкл.

cabine_mov

12_mbstcp

N:0:16:31

U2

15_opcs

N:0:4

Ручн. управ. тележкой

cargo_mov

12_mbstcp

N:0:16:32

U2

15_opcs

N:0:5

Ручн. управ. подъ. мех.

lifter_mov

12_mbstcp

N:0:16:33

U2

15_opcs

N:0:6

Ручн. управ. Краном

Set_pos_cabine

12_mbstcp

N:0:16:34

U2

15_opcs

N:0:7

Авт. управ. тележкой

Set_pos_lifter

12_mbstcp

N:0:16:36

U2

15_opcs

N:0:8

Авт. управ. Краном

Set_pos_cargo

12_mbstcp

N:0:16:35

U2

15_opcs

N:0:9

Авт. управ. подъ. мех.

Set_pos

12_mbstcp

N:0:15:37

Bool

15_opcs

N:0:10

Разрешение на авт. позицир.

moves

15_opcs

N:1:41

B1

05_d502

I:2

Выход управ-я

BotEndCarg

15_opcs

N:1:42

Bool

12_mbstcp

N:0:2:11

Ниж концев.

TopEndCarg

15_opcs

N:1:43

Bool

12_mbstcp

N:0:2:14

Верх. концев.

LEndCab

15_opcs

N:1:44

Bool

12_mbstcp

N:0:2:12

Лев. Концев. Тележки

REndCab

15_opcs

N:1:45

Bool

12_mbstcp

N:0:2:15

Прав. концев. Тележки

LEndLift

15_opcs

N:1:46

Bool

12_mbstcp

N:0:2:13

Лев. Концев. Крана

REndLift

15_opcs

N:1:47

Bool

12_mbstcp

N:0:2:16

Прав. концев. Крана

cabine_pos

15_opcs

N:1:22

U2

12_mbstcp

N:0:4:21

Текущ. Коорд. тележки

cargo_pos

15_opcs

N:1:23

U2

12_mbstcp

N:0:4:22

Текущ. Коорд. подъем.

lifter_pos

15_opcs

N:1:24

U2

12_mbstcp

N:0:4:23

Текущ. Коорд. крана

По умолчанию в настройках модуля ТD502 время удержания выходов в состоянии «ВКЛЮЧЕНО» равно 3 c, после чего сигнал сбрасывается в ноль. Чтобы сигнал постоянно удерживался в состоянии «ВКЛЮЧЕНО», необходимо в основных параметрах модуля d502 установить значения для парамет­ров TimeCnl1... TimeCnl32 равными нулю.

Полученные переменные ОРСS сгенерируем в буфер обмена.

2.2 Написание программы в ОрепРСS

Переменные, созданные при конфигурации контроллера, поместим в область локальных переменных программы. Добавим в программу переменные, содержащие вычисленные значения координат по датчикам (или вычисленные в режиме симуляции – при отладке программы). Также для симуляции необходим набор переменных, которые представляют собой моделирование срабатывания концевых датчиков.

Условно все расстояния приведены к шкале 0…100, где 0 означает крайнее начальное положение: для подъемника – нижнее, для тележки и крана – крайние левые положения. Противоположные крайние положения, соответственно, на данной шкале будут иметь значение 100.

Основной цикл работы программы начинается с проверки состояния датчиков. Затем проверяется условие – при наличии сигнала Set_pos работает блок программы, отвечающий за достижение текущей позиции крана заданного оператором значения, т.е. автоматизированного управления. При опущенном флаге Set_pos, движения крана по непосредственным командам оператора. Управляющие воздействия формируются при учете формата работы, а также принимается во внимание возможность движения в заданном направлении, т.е. проверяется срабатывание концевых выключателей. При сработавшем концевом выключателе продолжение движения в этом направлении не допустимо.

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

Для отладки программы реализован режим симуляции. В данном режиме формируются выходные переменные и сигналы управления, но входные сигналы датчиков заменены на переменные, вычисляемые в ходе основного цикла. Тем самым появляется возможность имитации работы крана для отладки программы и разработки пользовательского интерфейса.

Полный листинг программы приведен в приложении А.

2.3 Настройка протокола МоdВиsТСР в режиме Маster. Организация связи с верхним уровнем

Для организации связи с верхним уровнем, необходимо настроить сервер OPC. В конфигураторе сервера создадим новую конфигурацию.

Добавим модуль «Модуль МоdВus ТСР/IР Маster Моdule», сделаем его активным и перейдите к настройке конфигурации модуля. Во вкладке «Общие параметры» укажем номер логического канала - 0. Во вкладке «Маршруты» добавим новый маршрут под номером 1 с IР-адресом контроллера, с которым работаем (192.168.10.38).

В конфигураторе сервера ввода/вывода в папке Lifter  создадим сигналы и настроим для этих сигналов протокол МоdВus. Для этого на вкладке «Редактор адреса» в поле «Доступные протоколы» выберем МоdВus, в поле «Устройство» выберем «Канал МоdBus 0». Настройки сигналов приведены в табл. 2.3.

Таблица 2.3 Настройка сигналов OPC-сервера

Имя

Тип

Протокольный

Адрес

Номер

Тип сегмента

сигнала

данных

Тип

сигнала

маршрута

Передаваемые переменные

Set_pos_cabine

U2

Телерегулирование

35

1

4-x регистры

Set_pos_cargo

U2

Телерегулирование

36

1

4-x регистры

Set_pos_lifter

U2

Телерегулирование

37

1

4-x регистры

cargo_mov

U2

Телерегулирование

33

1

4-х регистры

cabine_mov

U2

Телерегулирование

32

1

4-х регистры

lifter_mov

U2

Телерегулирование

34

1

4-х регистры

Set_pos

Boolean

Телеуправление

38

1

2-х ячейки

Принимаемые переменные

cargo_pos

U2

Телеизмерения

22

1

3-х регистры

cabine_pos

U2

Телеизмерения

21

1

3-х регистры

lifter_pos

U2

Телеизмерения

23

1

3-х регистры

LEndLift

Boolean

Телесигнализация

13

1

1-x ячейки

REndLift

Boolean

Телесигнализация

16

1

1-x ячейки

LEndCab

Boolean

Телесигнализация

12

1

1-x ячейки

REndCab

Boolean

Телесигнализация

15

1

1-x ячейки

TEndCarg

Boolean

Телесигнализация

14

1

1-x ячейки

BotEndCarg

Boolean

Телесигнализация

11

1

1-x ячейки

В данной таблице приведены передаваемые в контроллер и принимаемые из него переменные, которые будут использованы для создания пользовательского интерфейса.


3 Разработка человеко-машинного интрефейса

Графический интерфейс пользователя содержит две функциональные области:

·     Область анимированного отображения текущего состояния управляемого объекта (отображение в пространстве расположения движущихся элементов);

·     Область элементов управления и информационно-сигнальных элементов.

Область анимированного отображения включает в себя:

·     фронтальное изображение козлового крана, на котором показывается текущее расположение кабины и подъемного устройства

·     профильное изображение козлового крана на фоне схематично изображенного цеха, разделенного на производственные участки. При этом показывается текущая позиция крана на рельсах цеха.

Область элементов управления и информационно-сигнальных элементов включает в себя три сгруппированных и разграниченных области:

1.  Управление подъемником состоит из элементов:

·     Динамический объект "Значение параметра", отображающее текущее значение сигнала позиции положения подъемника по формуле:

x = 100-{{Infinity.OPCServerLifter.cargo_pos}}

·     Кнопка "Вверх". Динамическое действие – передача значения в переменную {{Infinity.OPCServerLifter.cargo_mov}}. Значение "Если нажато" = 1 при обычном нажатии левой клавишей мыши. Кроме того к этому объекту применено динамическое действие "Скрыть/Блокировать": при значении True переменной {{Infinity.OPCServerLifter.TEndCarg}} происходит блокировка объекта.

·     Кнопка "Вниз". Динамическое действие – передача значения в переменную {{Infinity.OPCServerLifter.cargo_mov}}. Значение "Если нажато" = 2 при обычном нажатии левой клавишей мыши. Кроме того к этому объекту применено динамическое действие "Скрыть/Блокировать": при значении True переменной {{Infinity.OPCServerLifter.BEndCarg}} происходит блокировка объекта.

·     Кнопка "Стоп". Динамическое действие – передача значения в переменную {{Infinity.OPCServerLifter.cargo_mov}}. Значение "Если нажато" = 0 при обычном нажатии левой клавишей мыши.

·     Надпись "Верхний концевой выключатель". К этому объекту применено динамическое действие "Скрыть/Блокировать": при значении False переменной {{Infinity.OPCServerLifter.TEndCarg}} происходит скрытие объекта.

·     Надпись "Нижний концевой выключатель". К этому объекту применено динамическое действие "Скрыть/Блокировать": при значении False переменной {{Infinity.OPCServerLifter.BEndCarg}} происходит скрытие объекта.

2.  Управление кабиной

·     Динамический объект "Значение параметра", отображающее текущее значение сигнала позиции положения кабины {{Infinity.OPCServerLifter.cabine_pos}}

·     Кнопка "Влево". Динамическое действие – передача значения в переменную {{Infinity.OPCServerLifter.cabine_mov}}. Значение "Если нажато" = 2 при обычном нажатии левой клавишей мыши. Кроме того к этому объекту применено динамическое действие "Скрыть/Блокировать": при значении True переменной {{Infinity.OPCServerLifter.LEndCabine}} происходит блокировка объекта.

·     Кнопка "Вправо". Динамическое действие – передача значения в переменную {{Infinity.OPCServerLifter.cabine_mov}}. Значение "Если нажато" = 1 при обычном нажатии левой клавишей мыши. Кроме того к этому объекту применено динамическое действие "Скрыть/Блокировать": при значении True переменной {{Infinity.OPCServerLifter.REndCabine}} происходит блокировка объекта.

·     Кнопка "Стоп". Динамическое действие – передача значения в переменную {{Infinity.OPCServerLifter.cabine_mov}}. Значение "Если нажато" = 0 при обычном нажатии левой клавишей мыши.

·     Надпись "Левый концевой выключатель". К этому объекту применено динамическое действие "Скрыть/Блокировать": при значении False переменной {{Infinity.OPCServerLifter.LEndCabine}} происходит скрытие объекта.

·     Надпись "Правый концевой выключатель". К этому объекту применено динамическое действие "Скрыть/Блокировать": при значении False переменной {{Infinity.OPCServerLifter.REndCabine}} происходит скрытие объекта.

3.  Управление краном

·     Динамический объект "Значение параметра", отображающее текущее значение сигнала позиции положения крана {{Infinity.OPCServerLifter.lifter_pos}}

·     Кнопка "Влево". Динамическое действие – передача значения в переменную {{Infinity.OPCServerLifter.lifter_mov}}. Значение "Если нажато" = 2 при обычном нажатии левой клавишей мыши. Кроме того к этому объекту применено динамическое действие "Скрыть/Блокировать": при значении True переменной {{Infinity.OPCServerLifter.LEndLift}} происходит блокировка объекта.

·     Кнопка "Вправо". Динамическое действие – передача значения в переменную {{Infinity.OPCServerLifter.lifter_mov}}. Значение "Если нажато" = 1 при обычном нажатии левой клавишей мыши. Кроме того к этому объекту применено динамическое действие "Скрыть/Блокировать": при значении True переменной {{Infinity.OPCServerLifter.REndLift}} происходит блокировка объекта.

·     Кнопка "Стоп". Динамическое действие – передача значения в переменную {{Infinity.OPCServerLifter.lifter_mov}}. Значение "Если нажато" = 0 при обычном нажатии левой клавишей мыши.

·     Надпись "Левый концевой выключатель". К этому объекту применено динамическое действие "Скрыть/Блокировать": при значении False переменной {{Infinity.OPCServerLifter.LEndLift}} происходит скрытие объекта.

·     Надпись "Правый концевой выключатель". К этому объекту применено динамическое действие "Скрыть/Блокировать": при значении False переменной {{Infinity.OPCServerLifter.REndLift}} происходит скрытие объекта.

Внешний вид интерфейса приведен в приложении Б.


Заключение

В ходе работы над курсовым проектом был реализован алгоритм управления козловым краном на базе программируемого логического контроллера. Также был разработан человеко-машинный интерфейс, позволяющий задавать управляющие воздействия на систему и наблюдать ее состояние.

Алгоритм работы описан на языке ST, который по структуре напоминает Pascal. В этом заключается его преимущество, как для тех, кто начинает осваивать программирование ПЛК, так и для разработчиков, читающих и отлаживающих написанный код.

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

Таким образом, применение ПЛК на среднем уровне АСУТП позволяет реализовывать требуемые режимы работы системы в целом. Применение ПЛК позволяет гибко взаимодействовать с элементами нижнего уровня, а также осуществляет связь с верхним уровнем, в частности со SCADA-системой.


Список использованных источников

1.  Методические указания к выполнению курсового проекта по дисциплине «Проектирование автоматизированных производственных комплексов и систем» / Сост.: Е. С. Анушина, Д. М. Филатов – 2012 г.

2.  Стандарт МЭК 61131-3

3.  User Manual Open PCS 5.2.2 Infoteam Software GmbH, 2006

4.  Петров И. В., «Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования» / Под ред. проф. В. П. Дьяконова.-М.:СОЛОН-Пресс, 2004. — 256с


приложение а

Листинг программы

PROGRAM main

VAR

moves              AT %QB0.0 :BYTE;   (*N:1:41*)

moves_St           AT %QW1.0 :INT;

moves_Fl           AT %MX0.0 :BOOL;

BotEndCarg         AT %QX3.0 :BOOL;   (*N:1:42*)

BotEndCarg_St      AT %QW4.0 :INT;

BotEndCarg_Fl      AT %MX0.1 :BOOL;

TopEndCarg         AT %QX3.1 :BOOL;   (*N:1:43*)

TopEndCarg_St      AT %QW6.0 :INT;

TopEndCarg_Fl      AT %MX0.2 :BOOL;

LEndCab            AT %QX3.2 :BOOL;   (*N:1:44*)

LEndCab_St         AT %QW8.0 :INT;

LEndCab_Fl         AT %MX0.3 :BOOL;

REndCab            AT %QX3.3 :BOOL;   (*N:1:45*)

REndCab_St         AT %QW10.0:INT;

REndCab_Fl         AT %MX0.4 :BOOL;

LEndLift           AT %QX3.4 :BOOL;   (*N:1:46*)

LEndLift_St        AT %QW12.0:INT;

LEndLift_Fl        AT %MX0.5 :BOOL;

REndLift           AT %QX3.5 :BOOL;   (*N:1:47*)

REndLift_St        AT %QW14.0:INT;

REndLift_Fl        AT %MX0.6 :BOOL;

cabine_pos         AT %QW16.0:UINT;   (*N:1:22*)

cabine_pos_St      AT %QW18.0:INT;

cabine_pos_Fl      AT %MX0.7 :BOOL;

cargo_pos           AT %QW20.0:UINT;   (*N:1:23*)

cargo_pos_St       AT %QW22.0:INT;

cargo_pos_Fl       AT %MX1.0 :BOOL;

lifter_pos         AT %QW24.0:UINT;   (*N:1:24*)

lifter_pos_St      AT %QW26.0:INT;

lifter_pos_Fl      AT %MX1.1 :BOOL;

AnalIn_1           AT %ID0.0 :REAL;   (*N:0:1*)

AnalIn_1_St        AT %IW4.0 :INT;

AnalIn_1_Fl        AT %MX1.2 :BOOL;

AnalIn_2           AT %ID6.0 :REAL;   (*N:0:2*)

AnalIn_2_St        AT %IW10.0:INT;

AnalIn_2_Fl        AT %MX1.3 :BOOL;

AnalIn_3           AT %ID12.0:REAL;   (*N:0:3*)

AnalIn_3_St        AT %IW16.0:INT;

AnalIn_3_Fl        AT %MX1.4 :BOOL;

DigIn_1            AT %IB18.0:BYTE;   (*N:0:0*)

DigIn_1_St         AT %IW19.0:INT;

DigIn_1_Fl         AT %MX1.5 :BOOL;

cabine_mov         AT %IW21.0:UINT;   (*N:0:4*)

cabine_mov_St      AT %IW23.0:INT;

cabine_mov_Fl      AT %MX1.6 :BOOL;

cargo_mov          AT %IW25.0:UINT;   (*N:0:5*)

cargo_mov_St       AT %IW27.0:INT;

cargo_mov_Fl       AT %MX1.7 :BOOL;

lifter_mov         AT %IW29.0:UINT;   (*N:0:6*)

lifter_mov_St      AT %IW31.0:INT;

lifter_mov_Fl      AT %MX2.0 :BOOL;

Set_pos_cabine          AT %IW33.0:UINT;   (*N:0:7*)

Set_pos_cabine_St  AT %IW35.0:INT;

Set_pos_cabine_Fl  AT %MX2.1 :BOOL;

Set_pos_lifter          AT %IW37.0:UINT;   (*N:0:8*)

Set_pos_lifter_St  AT %IW39.0:INT;

Set_pos_lifter_Fl  AT %MX2.2 :BOOL;

Set_pos_cargo      AT %IW41.0:UINT;   (*N:0:9*)

Set_pos_cargo_St   AT %IW43.0:INT;

Set_pos_cargo_Fl   AT %MX2.3 :BOOL;

Set_pos            AT %IX45.0:BOOL;   (*N:0:10*)

Set_pos_St         AT %IW46.0:INT;

Set_pos_Fl         AT %MX2.4 :BOOL;

pos_cabine                  :UINT;   (*Позиция тележки*)

pos_cargo                   :UINT;   (*Позиция подъемника*)

pos_lifter                  :UINT;   (*Позиция крана*)

(*для симуляции*)

pos_cabine_sim          :REAL :=0.0; (*Расч.Позиция тележки*)

pos_cargo_sim           :REAL :=0.0; (*Расч.Позиция подъем.*)

pos_lifter_sim          :REAL :=0.0; (*Расч.Позиция крана*)

RECab_sim               :BOOL;   (*симул. концевого выкл.*)

LECab_sim               :BOOL;   (*симул. концевого выкл.*)

TECar_sim               :BOOL;   (*симул. концевого выкл.*)

BECar_sim               :BOOL;   (*симул. концевого выкл.*)

RELift_sim              :BOOL;   (*симул. концевого выкл.*)

LELift_sim              :BOOL;   (*симул. концевого выкл.*)

END_VAR

(*Чтение датчиков - работа*)

(*pos_cabine := REAL_TO_UINT(AnalIn_1);

pos_cargo     := REAL_TO_UINT(AnalIn_2);

pos_lifter    := REAL_TO_UINT(AnalIn_3);

BotEndCarg    := DigIn_1.3;

TopEndCarg    := DigIn_1.2;

LEndCab      := DigIn_1.0;

REndCab      := DigIn_1.1;

LEndLift      := DigIn_1.4;

REndLift      := DigIn_1.5;*)

(*Чтение датчиков - симуляция*)

pos_cabine    := REAL_TO_UINT(pos_cabine_sim);

pos_cargo     := REAL_TO_UINT(pos_cargo_sim);

pos_lifter    := REAL_TO_UINT(pos_lifter_sim);

BotEndCarg    := BECar_sim;

TopEndCarg    := TECar_sim;

LEndCab := LECab_sim;

REndCab := RECab_sim;

LEndLift := LELift_sim;

REndLift := RELift_sim;

(* описание битов управления

moves.0 - лево  кабина (-)

moves.1 - право кабина (+)

moves.2 - вверх подъемник (+)

moves.3 - вниз  подъемник (-)

moves.4 - лево  кран    (-)

moves.5 - право кран    (+) *)

(*Движение или задание позиции*)

if (Set_pos = 1) then  (*Задание позиции*)

  if (abs(Set_pos_cabine - pos_cabine)<1) then  (*достигнуто*)

    moves.0 := 0;

     moves.1 := 0;

  elsif (Set_pos_cabine > pos_cabine) then  (*кабина левее*)

    moves.0 := 0;

     moves.1 := 1;

  else  (*кабина правее*)

    moves.0 := 1;

     moves.1 := 0;

  end_if;

  if (abs(Set_pos_lifter - pos_lifter)<1) then(*достигнуто*)

    moves.4 := 0;

     moves.5 := 0;

  elsif (Set_pos_lifter > pos_lifter) then  (*Кран левее*)

    moves.4 := 0;

     moves.5 := 1;

  else   (*Кран правее*)

    moves.4 := 1;

     moves.5 := 0;

  end_if;

  if (abs(Set_pos_cargo - pos_cargo)<1) then(*достигнуто*)

    moves.2 := 0;

     moves.3 := 0;

  elsif (Set_pos_cargo < pos_cargo) then  (*подъемник выше*)

    moves.2 := 0;

     moves.3 := 1;

  else  (*подъемник ниже*)

    moves.2 := 1;

     moves.3 := 0;

  end_if;

else  (*ручной режим*)

  if (cabine_mov = 1)and(REndCab = 0) then  (*кабина вправо*)

    moves.0 := 0;

     moves.1 := 1;

  elsif (cabine_mov = 2)and(LEndCab = 0) then  (*кабина влево*)

    moves.0 := 1;

     moves.1 := 0;

  else  (*достигнуто*)

    moves.0 := 0;

     moves.1 := 0;

  end_if;

  if (lifter_mov = 1)and(REndLift = 0) then  (*кран вправо*)

    moves.5 := 0;

     moves.6 := 1;

  elsif (lifter_mov = 2)and(LEndLift = 0) then  (*кран влево*)

    moves.5 := 1;

     moves.6 := 0;

  else  (*достигнуто*)

    moves.5 := 0;

     moves.6 := 0;

  end_if;

  if (cargo_mov = 1)and(BotEndCarg = 0) then  (*крюк вниз*)

    moves.2 := 0;

     moves.3 := 1;

  elsif (cargo_mov = 2)and(TopEndCarg = 0) then  (*крюк вверх*)

    moves.2 := 1;

     moves.3 := 0;

  else  (*достигнуто*)

    moves.2 := 0;

     moves.3 := 0;

  end_if;

end_if;

cabine_pos := pos_cabine;

cargo_pos  := pos_cargo;

lifter_pos := pos_lifter;

(*симуляция*)

  if (moves.1 = 1)and(REndCab = 0) then  (*кабина вправо*)

    pos_cabine_sim := pos_cabine_sim+0.005;

  elsif (moves.0 = 1)and(LEndCab = 0) then  (*кабина влево*)

    pos_cabine_sim := pos_cabine_sim-0.005;

  else  (*достигнуто*)

    pos_cabine_sim := pos_cabine_sim;

  end_if;

  if (moves.5 = 1)and(REndLift = 0) then  (*кран вправо*)

    pos_lifter_sim := pos_lifter_sim+0.005;

  elsif (moves.4 = 1)and(LEndLift = 0) then  (*кран влево*)

    pos_lifter_sim := pos_lifter_sim-0.005;   

  else  (*достигнуто*)

    pos_lifter_sim := pos_lifter_sim;

  end_if;

  if (moves.3 = 1)and(BotEndCarg = 0) then  (*крюк вниз*)

    pos_cargo_sim := pos_cargo_sim-0.005;

  elsif (moves.2 = 1)and(TopEndCarg = 0) then  (*крюк вверх*)

    pos_cargo_sim := pos_cargo_sim+0.005;

  else  (*достигнуто*)

    pos_cargo_sim := pos_cargo_sim;

  end_if;

 if (pos_cabine>100) then  (*Правый концевик кабины*)

    RECab_sim := 1;

 else

    RECab_sim := 0;

 end_if;

 if (pos_cabine<3) then  (*Левый концевик кабины*)

   LECab_sim := 1;

 else

   LECab_sim := 0;

 end_if;

 if (pos_cargo>100) then  (*Верхний концевик крюка*)

    TECar_sim := 1;

 else

    TECar_sim := 0;

 end_if;

 if (pos_cargo<3) then  (*Нижний концевик крюка*)

    BECar_sim := 1;

 else

    BECar_sim := 0;

 end_if;

 if (pos_lifter>100) then  (*Правый концевик крана*)

    RELift_sim := 1;

 else

    RELift_sim := 0;

 end_if;

 if (pos_lifter<3) then  (*Левый концевик крана*)

    LELift_sim := 1;

 else

    LELift_sim := 0;

 end_if;

END_PROGRAM


приложение б

Графический пользовательский интерфейс

Рисунок Б.1 - Внешний вид мнемосхемы (в режиме редактирования)

Рисунок Б.2 - Внешний вид мнемосхемы (в режиме исполнения)


Информация о файле
Название файла РАЗРАБОТКА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ УПРАВЛЕНИЯ КОЗЛОВЫМ КРАНОМ от пользователя z3rg
Дата добавления 17.2.2016, 1:52
Дата обновления 17.2.2016, 1:52
Тип файла Тип файла (zip - application/zip)
Скриншот Не доступно
Статистика
Размер файла 1 мегабайт (Примерное время скачивания)
Просмотров 5459
Скачиваний 100
Оценить файл