Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

WinCC flexible лабы вар4

.docx
Скачиваний:
164
Добавлен:
31.05.2015
Размер:
645.12 Кб
Скачать

Федеральное государственное бюджетное образовательное учреждение

Высшего профессионального образования

«Воронежский Государственный Технический Университет»

ФГБОУ ВПО «ВГТУ»

Кафедра Электропривода, Автоматики и Управления в Технических Системах

Отчет по лабораторной работе на тему:

«Изучение пакета программного обеспечения WinCC Flexible»

Вариант №4

Выполнили:

студенты группы ЭП-091

Иванов К.В.

Лащенов Д.П.

Миляев Д.И.

Проверил:

к.т.н., доцент Таратынов О.Ю.

Воронеж 2012

Проектирование или создание проекта означает создание и настройку пользовательского интерфейса, который включает в себя все объекты проекта, необходимые для контроля и управления установкой, например:

  • экраны для изображения установки и управления ю;

  • теги для обмена данными между устройствами HMI и контроллером;

  • сообщения для отображения на устройстве HMI информации о рабочих состояниях системы автоматизации.

Вариант задания №4

Технологическая схема

Устройство дозирования работает в циклическом режиме, при котором происходит поочередное заполнение мерной емкости 3 из резервуаров 1 и 2, содержащих разные жидкости. После каждого заполнения из мерной емкости происходит слив через кран И3. Окончание слива определяется датчиком D3. Уровень заполнения емкости 3 из резервуара 1 определяется датчиком D1. После слива из резервуара 1 необходимо организовать задержку Т=5 секунд. Уровень заполнения емкости 3 из резервуара 2 определяется датчиком D2.

Выполнение работы

Создадим проект, в котором пользовательский интерфейс будет разрабатываться на основе панели MP 370 12” touch.

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

Создадим в подразделе Tags раздела Communications тег для изменения цвета кнопки при выборе соответствующего экрана. Назовем его N-screen, его тип выберем Integer.

Перетаскиваем на экран объект Button, в General свойствах Button mode выбираем Text. В поле Text OFF вводим название, которое будет отображаться на кнопке: «Процесс». Далее переходим на вкладку Events > Click. Из всплывающего списка в первой строке выбираем Screens > ActivateScreen, Screen name выбираем «Процесс».

На вкладке Animations > Appearance под словом Tag из всплывающего списка выбираем тег N_screen, в поле Value вводим значение 1, в поле Foreground color выбираем черный цвет.

Аналогичным образом создаем кнопки для остальных экранов.

Далее создадим новый экран. Во вкладке Screens нажмем Add Screen, в свойствах General этого экрана Name напишем «Процесс», Number 1, поставим галочку Use Template. В разделе Events выбираем Loaded и создаем новое событие. Из выпадающего списка выбираем Раздел Calculation, а в нем SetValue. Напротив Tag(Out) выбираем тег N_Screen, напротив Value выбираем 1.

На этом экране будет мнемосхема имеющейся установки с функциональными элементами, с помощью которых будет осуществляться управление установкой.

Из раздела Enhanced Objects перетащим мышью на экран объект Symbol Library, затем из имеющейся библиотеки изображений выберем подходящее нам, похожее на имеющийся на установке объект. Согласно варианту заданий, нам потребуется 3 резервуара, 6 соединительных труб и 3 вентиля. Во вкладке Properties каждому объекту можно выбрать понравившейся цвет и способ закрашивания. Перетащим к каждому вентилю объект Text Field и введем в нем названия для вентилей. Далее добавим анимацию вентилям и трубам. Для этого в подразделе Tags раздела Communications создадим теги, при изменении которых будет изменяться отображение элементов на экране «Процесс». Создаем 3 тега: для вентиля и труб первого резервуара V1_status, для вентиля и труб второго резервуара V2_status, для вентиля и труб слива V3_status. Тип тегов выбираем Integer.

Далее в свойствах вентиля V1 на вкладке Animations > Appearance под словом Tag из всплывающего списка выбираем созданный тег V1_status. В поле Value вводим значение 1, в поле Foreground color выбираем зеленый цвет. Ниже в поле Value вводим значение 2, в поле Flashing выбираем значение Yes. То же самое проделываем для прилегающих труб, только в поле Value вводим только значение 1, а в поле Foreground color выбираем синий цвет. Таким образом, при значении тега V1_status равном 1, вентиль V1 будет окрашен в зеленый цвет, а трубы к нему прилегающие в синий, а при значении тега V1_status равном 2, вентиль V1 будет мигать красным цветом. Те же самые операции повторяем для вентилей V2 и V3, меняя тег на V2_status и V3_status соответственно.

Далее создадим элементы управления вентилями. Для этого будем использовать невидимые кнопки и текстовые списки.

Создадим тег, который будет отвечать за появление текстовых списков. Назовем тег visible, его тип выберем Integer.

Перетащим из списка Simple Objects на экран объект Button, в свойствах General этого объекта Button mode выберем Invisible, а Invisible mode выберем Layer 5. Таким образом, кнопка будет невидимой и будет находиться в слое №5 текущего экрана.

Выберем размеры кнопки таким образом, чтобы она с небольшим запасом перекрывала собой вентиль. В свойствах кнопки в разделе Events выбираем Click и создаем новое событие по клику. Из выпадающего списка выбираем Раздел Calculation, а в нем SetValue. Напротив Tag(Out) выбираем тег visible, напротив Value выбираем 1. Таким образом, при нажатии на кнопку тегу visible будет присваиваться значение 1. Для каждой новой кнопки необходимо выбирать новое значение тега visible.

Создадим текстовый список. Для этого на вкладке Texts and Graphics Lists выберем Text Lists. Назовем новый текстовы список «Text list_on_off». В List entries в поле Value введем значение 1, а в поле Entry ведм закр. На следующей строчке в поле Value введем значение 2, а в поле Entry ведм откр.

Далее создадим тег для управления вентилем. Назовем этот тег V1_Command, его тип выберем Integer.

Под название вентиля перетащим Symbolic IO Field из списка Simple Objects. Выберем на вкладке General: Settings > Mode «Input», Display > Text list « Text list_on_off », Process > Tag «V1_command».

Во вкладке Animation > Visibility ставим галочку Enabled, Tag выбираем visible, Object state выбираем Visible, Type выбираем Integer, Range from 1 to 1.

Таким образом, у нас получилось:

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

Для контроля изменяющегося уровня жидкости в емкости 3 создадим тег «level», его тип выберем Integer.

Из списка Simple Objects перетащим на резервуар 3 объект Bar.

В свойствах General этого объекта напротив Process выберем тег level. Теперь объект будет графически показывать уровень в соответствии с тегом «level». Для численного контроля уровня перетащим объект IO Field к резервуару 3. В свойствах General этого объекта Process tag выберем level.

Далее приступим к написанию скриптов, с помощью которых и будет осуществляться работа всей системы. Перед этим нам потребуется создать несколько тегов. Теги L1, L2, L3 будут исполнять роль датчиков уровня, их тип выберем Integer. Тег Mode_auto будет свидетельствовать о включении автоматического режима. Его тип выберем Bool. Тег N-step будет обозначать номер шага, его тип выберем Integer. Для задержки перед новым циклом создадим теги Time_cur и Time_set, их тип выберем Integer. Для оповещения оператора для его вмешательства создадим тег operator, его тип выберем Integer.

Текст скрипта «model» представлен ниже:

Dim L,deltaL1,deltaL2,deltaL3

deltaL1=5

deltaL2=8

deltaL3=10

L=SmartTags("level")

If V1_command Then

V1_status = 1

Else

V1_status = 0

End If

If V2_command Then

V2_status = 1

Else

V2_status = 0

End If

If V3_command Then

V3_status = 1

Else

V3_status = 0

End If

If V1_status = 1 Then

L = L+deltaL1

End If

If V2_status = 1 Then

L = L+deltaL2

End If

If V3_status = 1 Then

L = L-deltaL3

End If

If L>100 Then

L=100

End If

If L<0 Then

L=0

End If

SmartTags("level")=L

Данный скрипт реализует общую модель работы установки.

Текст скрипта «auto» представлен ниже:

If Not Mode_auto Then

Exit Sub

End If

Select Case N_step

Case 0

V1_command = False

V2_command = False

V3_command = False

Case 1

If level<=0 Then

N_step = 2

Else

N_step = 0

operator = 1

End If

Case 2

V1_command = True

If level>=L1 Then

N_step=3

V1_command=False

End If

Case 3

V2_command = True

If level>=L2 Then

N_step=4

V2_command=False

End If

Case 4

V3_command = True

If level<=L3 Then

N_step=5

V3_command=False

Time_cur=0

End If

Case 5

Time_cur=Time_cur+1

If Time_cur>=Time_set Then

N_step=1

End If

End Select

Данный скрипт реализует работу установки в автоматическом режиме. На шаге №1 выполняется проверка состояния системы и, если резервуар 3 не пуст, то тегу operator присваивается значение 1.

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

Начнем с кнопки ручного управления. Перетаскиваем на экран объект Button, в General свойствах Button mode выбираем Text. В поле Text OFF вводим название, которое будет отображаться на кнопке: «ручн».

Далее переходим на вкладку Events > Click. Из всплывающего списка в первой строке выбираем SetValue, Tag(Out) выбираем Mode_auto, Value выбираем 0. Во второй строке также выбираем SetValue, Tag(Out) выбираем operator, Value выбираем 0. В третьей строке опять же выбираем SetValue, Tag(Out) выбираем visible, Value выбираем 0.

Таким образом, при нажатии на кнопку «ручн» тегам Mode_auto, operator, visible будет присвоено значение 0.

Во Вкладке Animations > Appearance в поле Tag выбираем operator, в поле Value вводим 1, Background colour выбираем красный, в поле Flashing выбираем Yes.

В данном случае кнопка будет мигать красным цветом при значении тега operator равном 1. Но при нажатии на кнопку она перестанет мигать, потому что тегу operator присвоится значение 0.

Теперь создадим кнопку выбора автоматического управления и кнопки «Старт» и «Стоп».

Кнопка автоматического управления создается так же, как и кнопка ручного управления, только в поле Text OFF вводим название «авто». Во вкладке Events > Click выбираем SetValue, Tag(Out) выбираем Mode_auto, Value выбираем 1. Во второй строке также выбираем SetValue, Tag(Out) выбираем visible, Value выбираем 4.

Таким образом, при нажатии на кнопку «авто» тегу Mode_auto будет присвоено значение 1, что позволяет запустить скрипт «auto», а тегу visible значение 4.

Далее создадим кнопки «старт» и «стоп». Перетаскиваем на экран объект Button, в General свойствах Button mode выбираем Text. В поле Text OFF вводим название, которое будет отображаться на кнопке: «старт». Во вкладке Properties > Appearance выбираем background зеленый, чтобы кнопка всегда была зеленого цвета.

Во вкладке Animation > Visibility ставим галочку Enabled, Tag выбираем visible, Object state выбираем Visible, Type выбираем Integer, Range from 4 to 4. Во вкладке Events > Click выбираем SetValue, Tag(Out) выбираем N-step, Value выбираем 1.

Кнопка «стоп» создается аналогично, только background выбираем красный, а Value выбираем 0.

У нас получилось, что при нажатии на кнопку «старт» тегу N_step присваивается значение 1, то есть скрипт «auto» переходит на шаг №1 и начинается его последовательное выполнение, а при нажатии на кнопку «стоп» скрипт переходит на шаг №0 и его выполнение останавливается. Однако, эти кнопки становятся видимыми только при нажатии на кнопку «авто».

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

Вначале создадим текстовый список с более подробной информацией для каждого шага. Назовем его «Text list_N_step». В столбце Value будут значения, которые может принимать тег N_step: 0, 1, 2, 3, 4, 5. В столбце Entry напишем: стоп, проверка, из 1 емкости, из 2 емкости, слив, пауза соответственно.

Перетащим на экран Symbolic IO Field из списка Simple Objects. Выберем на вкладке General: Settings > Mode «Output», Display > Text list « Text list_N_step », Process > Tag «N_step ».

Во вкладке Animation > Visibility ставим галочку Enabled, Tag выбираем visible, Object state выбираем Visible, Type выбираем Integer, Range from 4 to 4.

В этом поле будет выводиться информация о шаге, заданная в текстовом списке Text list_N_step, в зависимости от номера шага. Поле становится видимым после нажатия на кнопку «авто».

Далее создадим экран «Графики», на котором будут показаны графики отслеживаемых величин. Экран создается так же, как и «Процесс», только Number выбираем 2 и Value выбираем 2. Перетаскиваем на этот экран объект Trend View из списка Enhanced Objects. На вкладке Properties > Trend в колонке Name указываем имена отслеживаемых величин: уровень и номер шага, далее выбираем тип графика, в колонке Source settings выбираем тег, изменение которого будет отображать график: level, N_step.

Добавим экран «Сообщения» таким же образом, как и остальные. На этот экран помести элемент Alarm View из списка Enhanced Objects.

Во вкладке Alarm Management откроем Analog Alarms. В поле Text введем «уровень выше нормы», в поле Class выберем Errors, Trigger tag выберем level, Limit введем 96, Trigger mode выберем On rising edge. Таким образом, мы создали оповещение об ошибке в случае достижения уровнем отметки выше 96.

Откроем Discrete Alarms, в поле Text введем «Остаток жидкости в резервуаре», в поле Class выберем Warnings, Trigger tag выберем operator, Trigger Bit выберем 0. Таким образом, мы создали предупреждение, если тег оператор будет равен 1.

Для оповещения оператора о новых ошибках или предупреждениях на экран «Процесс» добавим элемент Alarm View из списка Enhanced Objects, а на экран Template поместим элемент Alarm Indicator, который будет появляться при появлении ошибки.

Далее создадим экран «Рецепты». На этом экране будет возможность выбирать различные пропорции смешивания жидкостей из резервуаров 1 и 2. На этот экран помести элемент Recipe View из списка Enhanced Objects. Для создания рецепта во вкладке Recipes выберем Add Recipe. В поле Display Name введем «пропорции смеси», на вкладке Elements создадим два элемента, в поле Display name первого введем «Уровень 1», а второго – «Уровень 2», в Default Value введем 40 и 90 соответственно.

На вкладке Data Records создадим 2 набора, в поле Display name первого введем «набор 1», а второго – «набор 2», в поле Recipe element_1 первого набора введем 30, а второго – 20. В поле Recipe element_2 первого набора введем 80, а второго – 50.

Таким образом, мы получили стандартный набор и 2 новых, применяя которые, резервуар 3 наполняется жидкостями в разных пропорциях.

Создадим экран «Пользователи». На этом экране будет реализована возможность администрирования. Для добавления новых пользователей или создания новых групп пользователей во вкладке Runtime User Administration выберем Groups. Создадим новую группу. В колонке Name введем Observers, в Group Authorizations поставим галочку напротив Monitor и создадим элемент «рецепты». В группе Users поставим галочку напротив «Рецепты». Далее в Runtime User Administration выберем Users и создадим нового пользователя. В колонке Name введем Obs, в колонке Password введем пароль «0000», в User Group(s) выберем Observers.

На экран перетащим элемент User View из списка Enhanced Objects.

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

На экран Template добавим кнопку для выхода пользователя. Назовем ее Log OFF, в свойствах Events > Click выберем User Administration > Logoff, а на следующей строчке из вкладки Events > Click выбираем Screens > ActivateScreen, Screen name выбираем «Процесс».

При нажатии на созданную кнопку будет произведен выход из текущего профиля и переход на экран «Процесс».

Для выполнения списка скриптов в режиме исполнения необходимо возникновение определенного события. Событием для активации скриптов нашей установки будет служит событие тега «Change Value». Создадим внутренний тег с именем «abc» целого типа (Int). В окне свойств тега на закладке Events событие Change Value свяжем с вызовом наших скриптов.

Теги

Экран «Процесс»

Экран «Графики»

Экран «Сообщения»

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]