ЛР заочники / ЛР5
.pdf
Лабораторная работа 4. Разработка проекта АСУТП в TRACE MODE
Цель работы: изучить приемы построения проекта АСУТП и работу с несколькими графическими экранами.
Задача работы: разработать проект системы управления участком емкости Е-101. Оператор управляет вручную работой (пуск/остановка) насоса Н1, отвечающего за наполнение емкости, и электромагнитным (открыт/закрыт) клапаном К1, который в открытом состоянии пропускает воду, что способствует уменьшению уровня. Управление насосом и клапаном осуществляется на экране оператора. Состояние исполнительных устройств отображается цветом (зеленый – включен/открыт, серый выключен/закрыт). На емкости производится отображение уровня по принципу смотрового окна с нанесенной шкалой, а также располагается цифровой указатель уровня, показывающий уровень в процентах. Так же динамика изменения уровня отображается на тренде, реализованном в виде всплывающего окна.
Проект включает в себя два шаблона экрана и одну программу эмулятор уровня воды в емкости в зависимости от состояния исполнительных устройств на языке Техно ST.
Порядок выполнения работы
1. Подготовительная работа
1.Создайте новый проект и укажите путь размещения. В ходе выполнения работы не забывайте выполнять сохранение проекта.
2.По умолчанию система содержит один узел RTM и у него имеется один экран, при этом к экрану автоматически привязан канал класса CALL (вызов) типа Input. Щелкните правой кнопкой мыши (ПКМ) по экрану и выберите пункт «Переименовать». Введите название «Мнемосхема» и
нажмите <Enter>.
3.Дважды щелкните левой кнопкой мыши (ЛКМ) на экране Мнемосхема
иоткроется редактор представления данных, позволяющий производить размещение и настройку графических элементов (ГЭ).
2.Создание мнемосхемы Создание графического элемента емкость
1.Разместите на экране графический
элемент «Емкость», задайте в панели свойств верхний и нижний края емкости по своему усмотрению, также при желании можно изменить базовый цвет емкости. Для более эстетического представления можно использовать дополнительные ГЭ, например, конус.
2.Размести цифровой индикатор, отображающий уровень воды в емкости в процентах. Для этого используем ГЭ «Текст». Разместите элемент на емкости как показано на рисунке. ЛКМ вызовите меню свойств и в параметрах шрифта укажите жирное начертание, размер 10. Настроим динамическое изменение текста. Раскройте пункт свойств «Текст» -> «Вид индикации» установите «Значение». Выполните привязку аргумента. В табличном редакторе аргументов создайте новый аргумент «Уровень»,
тип аргумента IN, а тип данных Real. Изменим формат отображения численного значения. В пункте «Формат» группы «Текст» из раскрывающегося списка выберите значение «Float». Уменьшите количество знаков дробной части с трех до одного, исправив «%.3f» на «%.1f».
3.Разместим на емкости «смотровое окно». Для этого раскройте группу
«Плоские фигуры»
и выберите ГЭ «Прямоугольник»
. Разметите ГЭ «Прямоугольник» согласно рисунку. Реализуем динамическую заливку «смотрового окна». В окне свойств ГЭ «Прямоугольник» перейдите на
вкладку «Динамическая заливка».
Установите галочку «Разрешено». Раскройте пункт свойств «Слои» -> «Слой» и установите привязку к созданному аргументу «Уровень». Измените цвет заливки, выбрав понравившийся. Убедитесь, что свойство «Макс» = 100, а свойство «Мин» =
0.
4.Разместим на емкости шкалу рядом со смотровым окном. Для этого установите ГЭ «Ползунок» рядом с ГЭ «Прямоугольник», как показано на рисунке. Положение «Ползунка» является условным до завершения настройки его свойств. В свойствах ГЭ сделаем следующие изменения: свойство «Ползунок» значение False, свойство «Полоса» – False, свойство «Положение ползунка» – Слева. Раскройте свойство «Рамка» и в пункте «Тип» выберите значение «Стандартная». В раскрывающемся списке пункта «Стиль» данного свойства выберите пустую строку. Раскройте свойство «Фон» и выберите без заливки. Раскройте свойство «Шкала». Измените цвет текста на черный. Раскройте пункт «Уровень 2» свойства «Шкала» и выберите значение «False»
вподпункте «Использовать». Разверните пункт «Уровень 1» и введите значение 10 в подпункт «Число делений», нажав после <Enter>. В подпункт «Десятичные знаки» введите значение «0»,
так же нажав после <Enter>. Настроим привязку ГЭ к аргументу, раскроем свойство «Отображаемая величина» и установим привязку к аргументу «Уровень».
5.Нажмите на кнопку эмуляция
на
панели ГЭ. В открывшемся окне значений аргументов введите любое число в поле значения аргумента «Уровень». При правильном задании свойств ГЭ вы увидите введенное значение в цифровом индикаторе, уровень «жидкости» поднимется в «смотровом окне» до нужного деления.
Создание ГЭ трубы
1.Используя ГЭ «Труба», создайте схематично наливную и сливную трубы. Помните, что создание трубы производится путем размещения ее узлов. Узлами являются начало, конец трубы и каждый изгиб. Установка всех узлов, кроме конечного, осуществляется ЛКМ, конечный узел ставится ПКМ.
2.В свойствах ГЭ для обеих труб установите толщину 20. В свойствах «Край 1» или «Край 2» соответственно для наливной и сливной труб соответственно выберите пункт «Диагональ 1», чтобы показать, что трубы выходят за пределы рассматриваемого участка.
3.Для настройки взаимного расположения ГЭ можно воспользоваться пунктами контекстного меню «Переместить наверх» или «Переместить вниз».
Создание исполнительных устройств
1.Разместим на наливной трубе насос, используя пункт свойств «Форма насоса», задайте форму, как показано на рисунке.
2.Настроим отображение состояния насоса. Для этого раскройте пункт свойств «Базовый цвет» -> «Вид индикации» и выберите из списка «Arg=const». Появятся дополнительные пункты свойств.
3.Создадим привязку к аргументу, который будет отвечать за состояние насоса. Имя аргумента «Насос», тип аргумента IN, тип данных USINT.
4.Изменим цвет, соответствующий остановленному насосу. Для этого в пункте свойств «Если ЛОЖНО» выберем серый цвет. В поле свойства «Константа» введем значение 1 (в дальнейшем при включении насоса аргументу будет присваиваться значение 1, при любых других значениях насос не будет выполнять никаких действий).
5.Разместим на сливной трубе запорный (электромагнитный) клапан. Для этого из группы «Объемные фигуры» выберем ГЭ «Клапан» и установим на сливной трубе. Для поворота объекта необходимо выбрать в контекстном меню пункт «Повернуть», навести указатель мышки к угловым маркерам и выполнить вращение.
6.Настроим отображение состояния клапана. Для этого раскройте пункт свойств «Базовый цвет» -> «Вид индикации» и выберите из списка «Arg=const». Создайте привязку к аргументу. Имя аргумента «Клапан», тип аргумента IN, тип данных USINT.
7.Изменим цвет, соответствующий закрытому клапану. Для этого в пункте свойств «Если ЛОЖНО» выберем серый цвет. В поле свойства «Константа» введем значение 1.
8.Проверим правильность настройки свойств ГЭ. Запустите режим
эмуляция
. В открывшемся окне значений аргументов для аргументов «Насос» и «Клапан» установите значение 1, ГЭ станут зеленого цвета. Затем введите значение 0, ГЭ станут вновь серыми.
Создание кнопок управления
1.Выберете ГЭ «Кнопка» и разместите ее под насосом. В свойстве кнопки «Текст» введите надпись «ПУСК» и нажмите <Enter>. Настройте свойство «Шрифт» – жирное начертание, размер 14 пт.
2.Переключитесь на вкладку «События»
. Нажмите ПКМ на свойстве «Mouse Press» и в контекстном меню выберете пункт «Передать значение». Откроются дополнительные свойства: «Тип передачи» – «Прямая», «Значение» – «1», а свойство «Результат» привяжите к аргументу «Насос».
3. Создадим кнопку выключения насоса. Выделите кнопку «ПУСК» нажатием ЛКМ и выполните команду «Сервис» -> «Тиражировать». В открывшемся окне в свойство «Число столбцов» введите «1», в «Число строк»
– «2» и нажмите кнопку <Готово>. Измените передаваемое значение с «1» на «0» (свойство «Значение»), а также измените свойство «Текст» на «СТОП». Задайте цвет текста «красный» для этой кнопки.
4.Создадим кнопки управления запорным электромагнитным клапаном. Скопируйте кнопки управления насосом (выделите их с нажатой кнопкой [Ctrl] и нажмите сочетание клавиш [Ctrl] + [С], затем [Ctrl]+[V]). Расположите скопированные кнопки рядом с клапаном. Переименуйте кнопку «ПУСК» в «ОТКР», а кнопку «СТОП» в «ЗАКР». Измените привязки для кнопок, привяжите их к аргументу «Клапан».
5.Проверьте результат работы в режиме эмуляции, нажимайте кнопки и следите какие значения принимают аргументы.
Создание статических надписей
1.Статические надписи используются для пояснения. Подпишем основные элементы мнемосхемы: емкость Е-101, насос Н1 и клапан К1.
2.Выберете ГЭ «Текст» и разместите текст над насосом. В свойство «Текст» введите «Н1», шрифт жирный, размер 14 пт, в свойстве «Цвет текста» выберете белый. Уберем рамку текста. Для этого в подпункте «Стиль» свойства «Контур» выберете пустой пункт. В свойстве «Заливка» выберете пункт «Без заливки».
3.Аналогично создайте остальные подписи.
Создание плоских фигур. ГЭ «Стрелка».
1.Изобразим стрелки, поясняющие направления потоков жидкости на
мнемосхеме управления. Для этого из группы «Плоские фигуры»
выберем
ГЭ «Стрелка»
. Нарисуйте стрелку для входящего и исходящего потоков (, как показано на рисунке.
2.Плоские фигуры также, как и почти любой ГЭ, могут выполнять функции динамизации. Настройте изменение цвета при активации соответствующего исполнительного устройства также, как это было сделано для насоса и клапана. Процедура аналогична с тем лишь отличием, что работа происходит с пунктом свойств «Заливка → Цвет заливки». Привязка стрелки входного потока выполняется к созданному ранее аргументу «Насос», выходного – «Клапан» соответственно.
Создание всплывающего экрана.
1.Создайте еще один и дайте ему название «Тренд».
2.Откройте его на редактирование.
3.Измените размер окна. Для этого нажмите дважды ЛКМ на любом свободном пространстве экрана, чтобы вызвать окно свойств самого экрана. В раскрывающемся списке свойства «Размеры» выберите размер «640х480».
4.Также выберите у свойства «Всплывающее окно» значение «True». Раскройте данный пункт и обратите внимание, что можно установить координаты первого появления окна и необходимость его открытия сразу же при запуске проекта.
5.Разместите на экране ГЭ тренд. На вкладке «Общие свойства» ГЭ «Тренд» в свойстве «Заголовок» введите текст «Уровень воды Е-101» и нажмите Enter. Нажатием ЛКМ на параметрах шрифта в свойстве «Шрифт» установите жирное начертание, 10 пт, выбрав их в списке. Разверните свойство «Легенда» и в подпункте «Показывать» выберите из списка значение «False».
6.Перейдите на вкладку «Кривые». Нажмите ПКМ на свойстве «Кривые» и в контекстном меню выберите пункт «Кривая». Создайте привязку кривой к аргументу «Уровень», тип аргумента IN, тип данных Real.
7.В подпункте «Толщина линии» введите «3». Значения в подпунктах «Макс. значение» и «Мин. значение» определяют пределы шкалы тренда – оставьте их без изменений, т.к. шкала соответствует измерению уровня в процентах. В результате экран примет вид как на рис. Проверьте работу тренда
врежиме эмуляции.
Создание кнопки вызова всплывающего окна. ГЭ «Кнопка».
1.Для вызова всплывающего окна будем использовать кнопку. Откройте на редактирование экран «Мнемосхема» через навигатора проекта или просто переключившись на соответствующую вкладку.
2.Выберите на панели ГЭ инструмент «Кнопка». Разместите кнопку под насосом.
3.В поле свойства «Текст» на вкладке «Общие свойства» введите надпись «ТРЕНД», нажмите [CTRL]+[Enter], введите надпись «уровень воды». Нажатием ЛКМ на параметрах шрифта в свойстве «Шрифт» установите жирное начертание, 16 пт, выбрав их в списке.
4.Переключитесь на вкладку «События». Затем нажмите ПКМ на свойстве MousePress и в контекстном меню выберите пункт «Перейти на экран». Появятся дополнительные пункты свойств. В подпункте «Перейти на экран» нажмите ЛКМ справа и выберите экран «Тренд». Учтите, что в режиме эмуляции всплывающее окно не появляется, т.к. является самостоятельным компонентом проекта, отличным от исполняемого в режиме эмуляции.
3.Разработка программы-эмулятора изменения уровня в емкости.
1.Нажмите ПКМ на созданном узле RTM_1 и выберите в контекстном меню «Создать компонент → Программа». При этом в узле создается канал класса «Вызов» типа Input, вызывающий соответствующий компонент – шаблон программы, в котором на языке Structured Text напишем программу изменения уровня воды в емкости Е-101 в зависимости от состояния исполнительных устройств.
2.Щелкните ПКМ на «Программа#1» и в контекстном меню выберите пункт «Переименовать». Введите название «Эмуляция_уровень» и нажмите
Enter.
3.Откройте шаблон программы. Создайте те же аргументы, что были созданы при разработке экрана (Уровень, Насос и Клапан). Тип данных будет таким же как и у аргументов экрана. Тип аргументов определяется направлением потоков данных. Те аргументы, без значений которых программа не сможет работать и которые необходимо вводить в качестве исходных данных, т.е. значения которых могут изменяться оператором, должны иметь тип IN. Те же, значения которых вычисляются в программе и не должны быть изменены кроме как в результате пересчета самой
программой – OUT. Поскольку для расчета значения уровня необходимо знать состояния насоса и клапана и оператор может влиять на значения этих аргументов, нажимая кнопки передачи соответствующих значений на экране, то эти аргументы должны иметь тип IN, а т.к. значение уровня вычисляется самой программой и на него оператор не может оказывать влияния, то аргумент «Уровень» должен иметь тип OUT. Результат создания аргументов представлен на рисунке.
4. Нажмите ЛКМ на заголовке программы «Эмуляция_уровень». В появившемся окне выбора языка программирования выберите язык ST. Алгоритм работы программы-эмулятора заключается в следующем.
Пока значение уровня меньше 100% (есть куда наполнять), включение насоса приводит к увеличению уровня в емкости на 0,5% за каждый пересчет программы; при выключенном насосе уровень не увеличивается (увеличение 0%). В противном случае (уровень больше либо равен 100%) увеличения уровня не происходит – он равен максимальному значению 100% (емкость полностью заполнена).
Пока значение уровня больше 0% (есть что сливать), открытие клапана приводит к уменьшению уровня в емкости на 1,0% за каждый пересчет программы (пренебрежем гидростатическим давлением – скорость слива считаем постоянной); при закрытом клапане уровень не уменьшается (уменьшение 0%). В противном случае (уровень меньше либо равен 0%) уменьшения уровня не происходит – он равен минимальному значению 0% (емкость пуста).
Для проверки условий соответствия уровня граничным следует использовать оператор if-then-else. Таким образом, проверка уровня будет иметь вид
ЕСЛИ Уровень<100 ТО {Последовательность предложений1};
ИНАЧЕ Уровень=100; КОНЕЦ_ЕСЛИ;
ЕСЛИ Уровень>0 then
{последовательность предложений2}; ИНАЧЕ Уровень=0;
КОНЕЦ_ЕСЛИ;
{Последовательность предложений1} и {последовательность предложений2} – это блоки, в которых будет размещено описание действий по изменению уровня в зависимости от состояния насоса и клапана соответственно.
Для описания изменения уровня в зависимости от состояния насоса и клапана будем использовать оператор Case.
// Последовательность предложений1
case Насос of
1: Уровень=Уровень+0.5; 0: Уровень=Уровень; end_case;
// Последовательность предложений1 case Клапан of
1: Уровень=Уровень-1; 0: Уровень=Уровень; end_case;
Обратите внимание, что в качестве разделителя целой и дробной части используется точка, а не запятая.
5. Компиляция и отладка. После написания (или в процессе) программы необходимо выполнить ее компиляцию, включающую в себя проверку
синтаксической правильности. Для этого нажмите кнопку «Компиляция»
на панели инструментов отладчика или воспользуйтесь клавишей F7. В случае успешной компиляции не выводится сообщений об ошибках. Убедиться в успешной компиляции (compiled succesfully).
Создание базы каналов.
1.Для того чтобы передавать данные между программой и экранами проекта, потребуется создать каналы. Для этого воспользуемся процедурой автопостроения каналов по аргументам шаблонов программы или экрана. Нажмите ПКМ на канале вызова шаблона экрана «Мнемосхема» и выберите в контекстном меню пункт «Свойства» .
2.В открывшемся окне переключитесь на вкладку «Аргументы». Далее нажмите ЛКМ на кнопку «Создать по аргументам каналы с привязкой» на панели работы с аргументами. Аргументы можно выделить либо при помощи клавиши [Ctrl] или [Shift].
3.При правильном выполнении действий в узле появятся три канала с именами, идентичными аргументам, по которым они были созданы. Аргументам с типом данных USINT соответствуют каналы класса HEX16; с типом данных REAL – класса FLOAT.
4.Теперь необходимо связать созданные каналы со вторым шаблоном экрана. Аналогично нажмите ПКМ на канале вызова шаблона экрана «Тренд»
ивыберите в контекстном меню пункт «Свойства». В открывшемся окне переключитесь на вкладку «Аргументы». Выделите ЛКМ канал в навигаторе проекта и, не отпуская ЛКМ, протяните его на строку аргумента в табличном редакторе привязок аргументов. Привязка будет создана автоматически. Редактировать ее не требуется.
5.Повторите процедуру с перетаскиванием каналов с целью создания привязок для канала вызова шаблона программы «Эмуляция_уровень».
