Проиллюстрируем создание системы автоматизации путем проектирования "от шаблонов", т.е. будем создавать информационную базу проекта – каналы по аргументам разрабатываемых шаблонов экранов и программ, дополняя основной подход методами автопостроения и связывания каналов в узлах проекта.
Воспользуемся пользовательской библиотекой компонентов. Для этого скопируем файл tmdevenv.tmul из поддиректории %TRACE MODE%\Lib в директорию %TRACE MODE%.
Откроем интегрированную систему разработки и с помощью щелчка ЛК по иконке создадим новый проект. В качестве стиля разработки выберем Стандартный.
Перейдем в слой Библиотеки_компонентов, где в разделе Пользовательская откроем библиотеку Библиотека_1. Сохраненный в данной библиотеке объект Объект_1 содержит в своем слое Ресурсы необходимый для дальнейшей разработки набор графических объектов – изображения клапанов, емкостей, двигателей и т.д.
В зависимости от редакции используемой интегрированной среды разработки – базовой или профессиональной, количество графических объектов в библиотеке различно.
Перенесем группы в слой Ресурсы текущего проекта с помощью механизма drag-and-drop и переименуем их как показано ниже.
Здесь же в слое Ресурсы создадим группу Картинки для помещения в нее текстур, которые будут применены в оформлении создаваемых графических экранов.
Создадим в группе Картинки новый компонент – Библиотека_Изображений#1.
Откроем двойным щелчком ЛК вновь созданную библиотеку для редактирования. Для ее наполнения воспользуемся иконкой на панели инструментов. В открывшемся диалоге выбора файлов для импорта укажем поддиректорию …\Lib\Texture. Выберем все файлы и нажмем экранную кнопку Открыть.
Содержимое библиотеки Библиотека_Изображений#1 станет следующим:
Подобным описанному выше способу создадим в слое Ресурсы группу Анимация, в ней - библиотеку Библиотека_Видеоклипов#1. Наполним ее содержимым …\Lib\Animation.
Из всех представленных в библиотеке видеоклипов мы будем использовать только fluid_blue, остальные можно убрать с помощью иконки на панели инструментов, предварительно выбрав видеоклип ЛК.
В зависимости от редакции используемой интегрированной среды разработки – базовой или профессиональной, количество доступных текстур и видеоклипов в библиотеке различно.
В качестве видеоклипов могут быть использованы практически любые имеющиеся файлы форматов avi или mng.
После проведения подготовительных мероприятий сохраним выполненную работу, нажав ЛК и указав имя QS_Lesson_2.prj.
Перейдя в слой Шаблоны_экранов, создадим в нем компонент Экран#1.
На созданном экране будут отображаться технологические параметры участка термической обработки, с него же будем осуществлять формирование задания на поддержание рабочей температуры. Переименуем его в Участок_термообработки. Создадим также экраны для задания параметров ПДД-регулятора, участков хранения и дозирования. Переименуем их соответственно:
В соответствии с ТЗ на проектирование назначим аргументы шаблону экрана участка термообработки – щелчок ПК на созданном шаблоне экрана и выбор из выпадающего списка пункта Свойства, далее переход во вкладку Аргументы. Здесь и далее с помощью иконки создаются необходимые аргументы, задаются их имена, тип, тип данных, значения по умолчанию, привязки, флаги и т.д.
Те аргументы, значения которых будут отображаться на экране, имеют тип IN, а те, что задаются с клавиатуры АРМ, отображаются на экране и пересылаются в конечном итоге в PC-based контроллер, имеют тип OUT. В процедуре автопостроения каналов от шаблонов автопривязка аргументов будет осуществляться соответственно к атрибутам Реальное и входное значение каналов.
Закроем бланк свойств экрана щелчком ЛК на . Для перехода к непосредственному созданию и редактированию содержимого экрана дважды нажмем на нем ЛК мыши. Зададим в качестве фона экрана текстуру metal_011. Для этого выберем в основном меню пункт Сервис, в нем – Параметры экрана. В открывшемся диалоговом окне укажем в качестве типа фона изображение, а из имеющихся в библиотеке текстур - metal_011.
После нажатия экранной кнопки Готово фон графического экрана будет изменен на указанный.
С помощью графических объектов (ГО), сохраненных в ресурсных библиотеках и вызываемых с помощью иконки панели инструментов,
а также графических элементов (ГЭ) объемных труб и текста , создадим статическую часть экрана. Примерный вид представлен ниже.
Графические объекты размещаются с использованием метода drag-and-drop и допускают масштабирование. Для изменения размера ГО необходимо выделить его ЛК и с помощью позиционирования указателя мыши в узловые точки выполнить необходимые корректирующие действия:
Значения расхода теплоносителя и рабочей температуры будем отображать с помощью ГЭ Показывающий прибор . Разместив их на экране, двойным щелчком ЛК откроем свойства левого ГЭ и зададим ему свойства:
Аналогичным образом поступим с правым ГЭ:
В нижней части экрана с помощью иконки разместим ГЭ Тренд для вывода значений аргументов Температура_рабочая, Расход_теплоносителя и Задание_температуры. Основные свойства ГЭ оставим заданными по умолчанию, добавив заголовок Участок термообработки.
Определим для отображения на тренде три кривые, связав их с соответствующими аргументами экрана, и зададим для них цвет и толщину линий, интервалы выводимых значений.
Для формирования задания регулятору разместим справа от ГЭ Тренд ГЭ Прямоугольник , он будет служить подложкой для ГЭ Ползунок с помощью которого будем задавать величину задания и отображать его же. Точную величину задания будем отображать в верхней части прямоугольника с помощью ГЭ Текст .
Свойства ГЭ будут:
Откажемся от использования рамки и заливки для данного ГЭ, задав ему следующие свойства:
Свойства ГЭ назначим следующим образом:
также отказавшись от рамки и заливки.
В правом верхнем углу экрана разместим надпись – Участок термообработки.
Так как для АРМ будет разработано еще два экрана (Хранение и Дозирование), то для осуществления переходов между экранами необходимо предусмотреть соответствующие средства. В качестве них будем использовать ГЭ .
Двойным щелчком ЛК на ГЭ Хранение откроем его свойства, в разделе События выделим ЛК пункт mousePressed (событие по нажатию ЛК на ГЭ) и по нажатию ПК добавим переход на экран:
В открывшемся пункте Jump to Screen по нажатию ЛК из списка выберем шаблон экрана Участок_Хранения:
Подобным образом поступим для организации перехода на экран участка дозирования.
Параметры ПДД-регулятора – Кп, Кд, Кдд и зону нечувствительности будем формировать с помощью всплывающего окна, открытие данного окна оформим также с помощью ГЭ , который разместим в левой части экрана, привязку выполним как в описанных выше случаях.
Для отображения в левом верхнем углу графического экрана текущей даты и времени воспользуемся ГЭ Календарь . Настройку ГЭ выполним следующим образом:
Таким образом, экран, представляющий на АРМ участок термической подготовки подготовлен и выглядит следующим образом:
Аргументы экрана Параметры_ПДД-регулятора зададим следующим образом:
Откроем экран на редактирование. Для задания экрану свойств выпадающего окна выберем в основном меню пункт Сервис, в нем – Параметры экрана. В открывшемся диалоговом окне зададим размеры экрана, фон, определим экран как всплывающее окно и укажем начальную позицию при первом вызове:
На данном экране разместим ГЭ Рамка , переместим его на задний план с помощью иконки на панели инструментов, затем в верхней части экрана с помощью ГЭ Текст зададим заголовок экрана – Параметры ПДД-регулятора. Далее разместим ГЭ Кнопка для посылки значений параметров и левее ее ГЭ Текст для их отображения. Осуществим привязки ГЭ к аргументам экрана:
и
Затем выделим ЛК ГЭ и воспользуемся инструментарием для тиражирования ГЭ:
В открывшемся диалоговом окне зададим параметры:
Отредактируем надписи и привязки созданных ГЭ, подобным образом поступим в отношении ГЭ Текст . В итоге получим:
Аргументы для шаблона экрана Участок_Хранения будут следующие:
Аргументы Событие_Дверь, Событие_Вент и Событие_Пож предназначены для отображения и квитирования событий с использованием ГЭ События . Аргументы Слой_основной и Слой_тренд – для управления видимостью слоев экрана. В первом слое будет отображаться мнемосхема участка хранения, во втором – тренд значений параметров хранения. Флаг NP, выставленный для аргументов не позволит создавать соответствующие каналы при операциях автопостроения.
Зададим для экрана в качестве фона изображение – одну из текстур, имеющихся в библиотеке, с помощью ГО и ГЭ , выполним статическую часть рисунка:
Определим с использованием ГЭ вывод значений параметров хранения:
Выполним привязку ГЭ к аргументам шаблона экрана, установим формат вывода значений как, например, для аргумента Уровень:
Для отображения состояния дискретных сигналов открытия/закрытия двери в хранилище, включения/отключения вентиляции и срабатывания пожарной сигнализации применим совместно цветовую и текстовую индикацию, определяемую для ГЭ . Так, для отображения текущего состояния двери в хранилище назначим ГЭ следующие свойства:
Подобным образом выполним настройку свойств для остальных ГЭ. Уровень продукта в емкости будем отображать с помощью гистограммы произвольной формы, которую создадим с помощью ГЭ Многоугольник .
В свойствах для данного ГЭ определим динамическую заливку, привязав ее к соответствующему аргументу шаблона экрана, задав цвета фона и заполнения и указав границы:
Последовательно скопируем из шаблона экрана Участок_термообработки и перенесем на шаблон Участок_Хранения ГЭ для отображения текущей даты/времени и кнопки переходов по экранам. Для этого выделяем ЛК необходимый ГЭ (для выделения нескольких ГЭ можно воспользоваться нажатием и удержанием клавиши Ctrl либо выделить мышью область при нажатой ЛК) и используем иконку на панели инструментов. Для вставки - . Можно применять и стандартные комбинации клавиш для работы с буфером обмена: Ctrl+C и Ctrl+V. После вставки ГЭ необходимо произвести их перепривязку к аргументам текущего шаблона экрана.
В нижней части экрана разместим ГЭ События , выделим его ЛК и отцентрируем горизонтально с помощью соответствующего пункта меню:
Основные свойства ГЭ оставим без изменения, во вкладке Привязки определим следующие привязки к аргументам шаблона экрана:
Таким образом, текущий экран будет выглядеть как:
Для вывода на тренде текущих значений параметров хранения создадим дополнительный графический слой для шаблона экрана Участок_Хранения. Через пункт Вид основного меню откроем окно графических слоев:
В окне слоев экрана существующий слой с именем Слой привяжем к аргументу шаблона Слой_основной. С помощью создадим новый слой, переименуем его в Тренд и привяжем к аргументу Слой_тренд.
Разместим в данном слое (при этом в окне слоев он должен быть выделен ЛК) ГЭ Тренд и Кнопка . Для тренда определим основные свойства как:
и зададим семь кривых:
для которых укажем привязки к соответствующим аргументам, цвет и толщину линий, пределы и заголовки для их идентификации на ГЭ.
Свойство События для размещенного ниже ГЭ Возврат определим таким образом, что при нажатии на нем ЛК в аргументы шаблона экрана, для которых определены привязки к графическим слоям, осуществлялись прямые посылки. Значения, посылаемые в данные аргументы, управляют видимостью слоев, 0 – слой отображается, 1 (любое значение, отличное от 0) – нет:
ГЭ Календарь для вывода текущей даты/времени и ГЭ Текст с названием участка копируются в слой Тренд из слоя Слой. После выполнения указанных операций слой Тренд шаблона экрана Участок_Хранения будет выглядеть как:
Для перехода к просмотру значений параметров хранения на тренде, размещенном в слое Тренд, в слое Слой определим свойства ГЭ со статической надписью Параметры хранения следующим образом:
Для того, чтобы при запуске проекта в реальном времени были возможны операции со слоями, перед сохранением проекта на диск все слои должны быть отмечены галочками в крайней левой позиции окна слоев экрана.
Для шаблона экрана Участок_Дозирования аргументы зададим как:
Используя описанные выше приемы, разместим ГЭ и свяжем их с аргументами шаблона экрана таким образом, чтобы получить следующее:
Видеоклип, изображающий поток продукта привязан к аргументу экрана следующим образом:
Пояснения требует и ГЭ Задание объема. По нажатию на нем ЛК будет осуществляться посылка значений в два аргумента экрана:
Первое – собственно для задания величины отпускаемого объема продукта, второе – для сброса накопленной в контроллере величины объема по предыдущему циклу розлива. По нажатию ЛК на ГЭ ОТПУСТИТЬ ПРОДУКТ будет посылаться 1 в соответствующий аргумент экрана, в момент, когда заданный объем продукта будет отпущен, контроллер сбросит атрибут Входное значение канала в АРМ, связанный с аргументом экрана Старт_Стоп в 0.
Сохраним выполненную работу, нажав ЛК . Таким образом, графическая часть проекта для АРМ выполнена и настал черед разработки математического обеспечения нашего проекта – шаблонов программ.