Описание виртуальной лабораторной установки. Аргументы для шаблона экрана «Участок_хранения» будут следующие (рис
Аргументы для шаблона экрана «Участок_хранения» будут следующие (рис. 4.1):
Рис. 4.1. Аргументы для шаблона экрана «Участок_хранения» |
Аргументы «Событие_Дверь», «Событие_Вент» и «Событие_Пож» предназначены для отображения и квитирования событий с использованием ГЭ События . Аргументы Слой_основной и Слой_тренд – для управления видимостью слоев экрана. В первом слое будет отображаться мнемосхема участка хранения, во втором – тренд значений параметров хранения. Флаг NP, выставленный для аргументов не позволит создавать соответствующие каналы при операциях автопостроения.
Зададим для экрана в качестве фона изображение – одну из текстур, имеющихся в библиотеке, с помощью ГО и ГЭ , выполним статическую часть рисунка:
Определим с использованием ГЭ вывод значений параметров хранения.
Выполним привязку ГЭ к аргументам шаблона экрана, установим формат вывода значений как, например, для уровня:
Для отображения состояния дискретных сигналов открытия/закрытия двери в хранилище, включения/отключения вентиляции и срабатывания пожарной сигнализации применим совместно цветовую и текстовую индикацию, определяемую для ГЭ . Так, для отображения состояния двери в хранилище назначим ГЭ следующие свойства: | ||
Подобным образом выполним настройку свойств для остальных ГЭ. Уровень продукта в емкости будем отображать с помощью гистограммы произвольной формы, которую создадим с помощью ГЭ Многоугольник . | ||
В свойствах для данного ГЭ определим динамическую заливку, привязав ее к соответствующему аргументу шаблона экрана, задав цвета фона и заполнения и указав границы:
Последовательно скопируем из шаблона экрана «Участок_термообработки» и перенесем на шаблон «Участок_хранения ГЭ» для отображения текущего времени и кнопки переходов по экранам. Для этого выделяем ЛК необходимый ГЭ (для выделения нескольких ГЭ можно воспользоваться нажатием и удержанием клавиши Ctrl либо выделить мышью область при нажатой ЛК) и используем на панели инструментов. Для вставки – . Можно применять и клавишные комбинации для работы с буфером обмена: Ctrl-C и Ctrl-V. После вставки ГЭ необходимо произвести их привязку к аргументам текущего шаблона экрана. В нижней части экрана разместим ГЭ События , выделим его ЛК и отцентрируем его горизонтально с помощью соответствующего пункта меню. |
Основные свойства ГЭ оставим без изменения, во вкладке Привязки опредилим три привязки к аргументам шаблона экрана: |
Таким образом, текущий экран будет выглядеть как:
Для вывода на тренде текущих значений параметров хранения создадим дополнительный графический слой для шаблона экрана Участок_хранения. Через пункт Вид основного меню откроем окно графических слоев.
В окне слоев переименуем существующий слой в Слой и привяжем его к аргументу шаблона Слой_основной. С помощью создадим новый слой, переименуем его в Тренд и привяжем к аргументу Тренд. Для вновь созданного слоя в крайней левой позиции окна щелчком ЛК сделаем его доступным для редактирования и отображения.
Разместим в данном слое (при этом в окне слоев он должен быть выделен ЛК) ГЭ Тренд и Кнопка . Для тренда зададим семь новых кривых и определим основные свойства как: | |
Для кривых зададим привязки к аргументам, цвет и толщину линий, пределы и заголовки для их идентификации на ГЭ. Свойство События для размещенного ниже ГЭ определим таким образом, что при нажатии на нем ЛК в аргументы шаблона экрана, для которых определены привязки к графическим
слоям, осуществлялись прямые посылки. Значения, посылаемые в данные аргументы управляют видимостью слоев, 0 – слой отображается, 1 (любое значение, отличное от 0) – нет. |
ГЭ Текст для вывода текущего времени и названия участка копируются в слой Тренд из слоя Слой. Слой Тренд шаблона экрана «Участок_хранения» будет выглядеть как:
Для перехода к просмотру значений параметров хранения на тренде, размещенном в слое Тренд, в слое Слой создадим и определим свойства ГЭ Тренд следующим образом. |
Для того чтобы при запуске проекта в реальном времени были возможны операции со слоями, перед сохранением проекта на диск все слои должны быть отмечены галочками в крайней левой позиции окна слоев экрана.
Для шаблона экрана «Участок_дозирования» аргументы зададим как:
Используя описанные выше приемы, разместим ГЭ и свяжем их с аргументами шаблона экрана таким образом, чтобы получить следующее:
Видеоклип, изображающий поток продукта привязан к аргументу экрана следующим образом:
Пояснения требует и ГЭ Задание объема. По нажатию на нем ЛК будет осуществляться посылка значений в два аргумента экрана.
Первое – собственно для задания величины отпускаемого объема продукта, второе – для сброса накопленной в контроллере величины объема по предыдущему циклу разлива. По нажатию ЛК на ГЭ ОТПУСТИТЬ ПРОДУКТ будет посылаться «1» в соответствующий аргумент экрана, в момент, когда нужный объем продукта будет отпущен, контроллер сбросит атрибут Входное значение канала в АРМ, связанный с аргументом экрана Разрашение в «0». | Сохраним выполненную работу, нажав ЛК . Таким образом, графическая часть проекта для АРМ выполнена и настал черед разработки математического обеспечения нашего проекта – шаблонов программ. |
Для процесса дозирования продукта создадим программу Розлив#2, задав для нее следующие аргументы:
Кроме того, определим одну глобальную переменную для накопления в ней величины объема отпускаемого продукта:
Для разработки программы воспользуемся языком Техно ST, для чего в окне выбора языка программирования укажем ST программа.
Текст программы может выглядеть следующим образом (показано ниже).
Откомпилируем программу для включения в проект нажатием F7.
Сохраним выполненную работу, нажав ЛК . После того как графическая часть АРМ и математическое обеспечение для PC-based контроллера выполнены, необходимо приступить к созданию узлов проекта и сформировать их базы каналов.
В узле RTM_1 создадим группы каналов «Участок_Хранения» и «Участок_Дозирования». Выделяя ЛК соответствующие шаблоны экранов и удерживая ЛК, перетащим их в эти группы узла RTM_1.
Создадим каналы в группах «Участок_Хранения» и «Участок_Дозирования». Предварительно для «Участка_Хранения» зададим для аргументов «Слой_основной» и «Слой_тренд» значения по умолчанию – соответственно 0 и 1. После выполнения процедуры автопостроения получим результат представленный выше.
Выполним автопостроение каналов для «Участка_Дозирования»
Создадим дополнительное окно Навигатора проекта и откроем в нем слой Шаблонов программ. Перетащим шаблон программы Розлив#2 в группу Участок_Дозирования. В результате будет создан вызов программы Розлив#2. Для создания соответствующих каналов в группе Участок_Дозирования и связывания их атрибутов с аргументами программы перейдем во вкладку Аргументы канала класса Вызов Розлив#2 и с помощью щелчка ЛК мыши на иконке получим требуемый результат.
Также в слое Источники/приемники создадим группу компонентов Диагностика_и_сервис_3. В ней – подгруппу Диагностика_1, а в ней - компонент @Calc_Loop_1, контролирующий в миллисекундах время пересчета базы каналов узла. Данный источник (с атрибутом значение) свяжем с каналом Время (пункт Свойства – Привязка), расположенным в группе «Участок_Дозирования».
Каналы Date_Time участков хранения и дозирования свяжем с каналом Битовый Меандр «Участка_Термообработки» (атрибут – время изменения). В результате для «Участка_Дозирования» получим базу каналов представленную выше.