Рисунок 15 - Окно «Project Wizard»
Теперь можно приступать к реализации экранных форм проекта. В соответствие с заданием для нормального функционирования системы требуется создать следующие экранные формы:
· экран для отображения состояния аналоговых входов;
· экран для тестового сигнала в реальном времени;
· экран исторического тренда;
· экран для дискретных каналов ввода;
· экран для дискретных каналов вывода;
· экран тревог;
· экран истории тревог.
4.1 Создание экрана для отображения состояния аналоговых входов
Рисунок 16 - Прибор «Meter»
Чтобы этот прибор отображал некоторую физическую величину, необходимо
вызвать окно свойств прибора, в нём раскрыть список свойств и щелкнуть по
свойству Dynamic Rotation. После этого в строку Tag/Expression
внесём имя тега AI1, значение
которого будет отображать прибор. В окне диалога зададим минимальное и
максимальное значения тега и углы отклонения стрелки прибора от среднего
положения в градусах (рисунок 17).
Рисунок 17 - Окно свойств объекта «Meter»
Так как в разрабатываемой системе следует предусмотреть 4 канала
аналогового ввода, добавим на форму ещё три прибора meter и произведём с ними аналогичные настройки. Результат
проектирования представлен на рисунке 18.
Рисунок 18 - Экранная форма состояния аналоговых входов
Для того чтобы на приборах отображались реальные физические сигналы,
следует связать созданные теги с каналами аппаратного модуля ADAM-6024. Работу модулей поддерживают
соответствующие драйверы. Драйвер устанавливается при инсталляции среды. Для
подключения необходимых драйверов связи необходимо на вкладке Comm (Связь) выбрать из предлагаемого
списка драйвер связи и подключить его (рисунок 19). При разработке системы в
качестве драйвера связи выбираем MOTCP.dll (MODBUS Protocol RTU/ASCII via TCP/IP).
Рисунок 19 - Окно выбора драйвера связи
В главном листе драйвера MAIN DRIVER SHEET (рисунок 20) поле Disable может
содержать тэг или выражение. Если значение тэга или результат выражения больше
чем 0, то главный лист драйвера будет заблокирован. Здесь и в других полях
ввода можно ничего не указывать. Занесём имена в таблицу тегов и против каждого
зададим: в колонке Station - IP-адрес модуля или блока, в столбце I/O Address - адрес канала, с которым будет связан тег, в Action - действие (Read/Write)
для него, в Scan - сканирование производить только
при работающем экране или всегда (Screen/ Always), в Div - константу деления, когда требуется настройка
масштаба (флажок для Min и Max не установлен, при этом внесенное
значение будет коэффициентом деления в операции чтения и коэффициентом
умножения в операции записи), в Add -
константу добавления, когда требуется настройка масштаба (флажок для Min и Max не установлен, это значение будет коэффициентом
добавления в операции чтения и коэффициентом вычитания в операции записи). Если
же указанный флажок установлен, то две последние колонки получают имена Max и Min. Для тега канала аналогового ввода с 16-разрядным
аналого-цифровым преобразователем (АЦП) Div = 3276.700000, т.к. 216 = 65536, а
диапазон преобразуемых сигналов от -10 до +10 В. Пример заполнения полей дан на
рисунке 23.
Рисунок 20 - Главный лист драйвера «MAIN DRIVER SHEET»
Имя тега (Tag Name) может быть задано произвольно. В
данном случае имена тегов определяют аналоговый ввод (analog input −AI).
Адрес устройства (Station)
соответствует адресу ADAM-6024
(например, 192.168.0.132). Адрес канала модуля ввода-вывода (I/O Address) должен быть привязан к определенному регистру
согласно таблице аналоговых и цифровых обозначений каналов. Из списка действий
(Action) выбирается Read (чтение).
4.2 Создание экрана для представления тестового сигнала
Для создания экранной формы тестового сигнала произведём щелчок правой
клавишей мыши на папке Screens, находящейся на вкладке Graphics области Workspace, и выполним команду Insert. Заполнив нужные позиции в окне
диалога, нажмём Ok. Далее щёлкнем
правой клавишей мыши на вкладке Tasks
(Задачи) по папке Math, вызовем
команду Insert, выполнение которой позволяет
открыть лист для моделирования некоторого процесса. В строке Description введём его описание − Test
signal. В строке Execution зададим
значение 2. В нижней части листа опишем сам процесс, используя при этом
имеющийся у среды арсенал функций. По заданию тестовый сигнал имеет вид
. Тег i является переменной цикла с параметром - For(1, 62800, 1) (начальное, конечное
значения, шаг). В цикле тег AO1
изменяется по закону модуля синуса. Темп изменения определяется функцией
задержки WAIT(100) (параметр измеряется в
миллисекундах), а также множителем аргумента синуса. Тег next завершает тело цикла.
На рисунке 21 представлен лист описания этой задачи (MATH001). Далее
щёлкнем правой клавишей мыши на вкладке Graphics области Workspace папку Library. Для демонстрации тестового сигнала на приборе
выберем прибор meter, и разместим
его на созданной форме. Чтобы этот прибор отображал значение тестового сигнала,
необходимо вызвать окно свойств прибора, в нём раскрыть список свойств и
щелкнуть по свойству Dynamic Rotation. После
этого в строку Tag/Expression внесём имя тега AO1, значение которого будет отображать прибор.
Рисунок 21 - Окно моделирования тестового сигнала
В окне зададим минимальное и максимальное значения тега и углы отклонения
стрелки прибора от среднего положения в градусах (рисунок 22).
Рисунок 22 - Окно свойств объекта «Meter»
Для того чтобы на приборе созданной формы отображалось значение тестового
сигнала в реальном времени, следует связать тег AO1 с конкретным каналом аппаратного модуля ADAM-6024 с помощью драйвера связи
(рисунок 23).
Рисунок 23 - Заполнение листа драйвера «MAIN DRIVER SHEET»
Для визуализации созданного процесса в форме графика можно связать тег AO1 с компонентом Trend. Для отображения данных в реальном
времени (On Line) Trend
разместим на экране и вызовем его свойства. Выберем тип кривой (Curve type). Тип X/t соответствует представлению тега во
времени. Затем настраивают шкалы по горизонтали и вертикали. Щелчок по кнопке Pens вызывает окно для ввода имени тега (AO1), выбора цвета линии и задания
пределов наблюдения процессов - параметров Min и Max,
изменяющих масштаб тренда (рисунок 24).
Рисунок 24 - Окно настройки свойств «Pens»
В результате проделанных действий форма для отображения тестового сигнала
в реальном времени примет следующий вид (рисунок 25)
Рисунок 25 - Экран тестового сигнала
.3 Создание экрана исторического тренда
Этот вид представления данных служит цели эффективного контроля за
качеством реализации технологического процесса. Для построения тренда
исторических данных сначала создадим группу тегов, участвующих в его работе. С
этой целью вставим новый класс CTrend
на вкладке Database после щелчка правой кнопки мыши по
папке Classes. Далее заполним таблицу тегов класса
с указанием имен тегов, их типа и описаний (рисунок 26).
Рисунок 26 - Таблица тегов класса «CTrend»
После этого вставим командой Insert/Tag… относящийся к созданному классу новый тег приложения Trend, выполним команду File/New… и в окне диалога выберем Trend Worksheet. Затем в появляющемся окне необходимо ввести описание тренда в поле Description, не делаем запрещающих действий в строке Disable, задаём в строке File Life Time время жизни rtf-файлов данных на диске в каталоге HST проекта - 1000 дней. Сами файлы будут именоваться по дате их создания, если установлен флажок Data (Default) в группе Name of History Files. Имя файла имеет следующую структуру:
<h-номер файла><две последние цифры года><месяц><день>.hst.
Далее нужно установить флажок Save On Trigger и занести в позицию напротив него
имя триггера - Trend.Update. В строку таблицы тегов заносим имя
тега, подлежащего временному контролю, например AO1 (рисунок 27).
Рисунок 27 - Окно «Trend Worksheet»
После этого создадим экран для исторического тренда командой Insert/Screen. В окне диалога Screen Attributes в группе Screen Logic следует установить флажок рядом с кнопкой On Open, после чего щелкнуть по самой кнопке. В появившемся
окне диалога Screen Math укажем имена тегов, активируемых вместе с открытием
экрана Hist_Trend (рисунок 28).
Рисунок 28 - Окно диалога «Screen Math»
Затем размещаем все необходимые компоненты на форме (рисунок 29).
Рисунок 29 - Экран исторического тренда
На рисунке 29 выделен объект Trend, для которого следует задать свойства в соответствии с описанными тегами (рисунок 30).
Для горизонтальной шкалы (Horizontal Scale) в группе Vertical Cursor надо установить флажок Enable, после чего в позицию 1 вписать Trend.Cursor-Position, а в позицию 2 - Trend.CursorOutput (рисунок 30).
В позиции ввода даты и времени старта тренда занести имена
соответствующих тегов. Продолжительность тренда (Duration) задается в часах.
Рисунок
30 - Окно диалога «Horizontal Scale»
Для вертикальной шкалы произведём установки в соответствии с рисунком 31.
Рисунок
31 - Окно диалога «Vertical Scale»
И, наконец, в окне свойств тренда щелчком по кнопке Pens вызовем окно диалога для описания
пера. В нем в поле Tag указывают имя
отображаемого на тренде тега AO1, а
в поле Cursor value - Trend.CursorPen (рисунок 32). В остальных полях
задают цвет линии тренда (синий) и пределы изменения тега (0 и Trend.HiLim).
Рисунок 32 - Окно диалога «Pens»
Для задания даты и времени старта тренда исторических данных на экране под соответствующими надписями располагают текстовые компоненты со свойствами динамического текста - Text I/O. Ниже показано окно свойств для времени старта (рисунок 33). В нем необходимо задать в поле Tag/Expression имя тега Trend.StartTime и установить флажок Input Enabled, разрешающий вводить нужное время после запуска приложения.
Рисунок 33 - Окно настройки времени старта исторического тренда
Аналогично поступают с датой старта (имя тега Trend.StartDate). При вводе названных величин соблюдают их формат представления в среде и разделители. Для времени - <часы>:<минуты>:<секунды>, например 14:16:30. Для даты - <месяц>/<день>/<год>, например 07/05/2010.
.4 Разработка экрана отображения состояния дискретных входов
Для организации отображение состояния каналов дискретного ввода в рабочей
области экрана размещаем статические объекты-индикаторы, выбранные из
библиотеки редактора графических форм (рисунок 34). Данные объекты связываются
в области драйвера связи с определенным тегом. Дискретному вводу соответствуют
имена тегов DI - digital input. Каждый тег связывается с адресом соответствующего
канала модуля дискретного ввода. Задается адрес канала дискретного ввода в
соответствии с таблицей обозначения каналов. Из списка действий (Action) выбирается Read (чтение).
Рисунок 34 - Форма для отображения состояния дискретных входов
В окне Object Properties (двойной щелчок по объекту) задаются следующие свойства:
Положение (Position) - в строке отображения условия (Show on condition) указывается тег (DI - digital input), связанный в области драйвера связи с каналом модуля дискретного ввода-вывода;
Position - в области Show on condition (отображение условия) записывается выражение NOT DI (устанавливает бит состояния канала в ноль).
Условия, заданные в области Position, выполняются в зависимости от выражения, записанного в строке Выражение (Expression).
Изменить бит состояния можно путем подачи на вход канала сигнал логической единицы (уровня +Vs).
Кнопка «Возврат на главную форму» позволяет вернуться в главное окно приложения.
.5 Разработка экрана отображения состояния дискретных выходов
Для организации дискретного вывода необходимо на экранной форме
расположить статические объекты-индикаторы, выбранные из библиотеки редактора
графических форм (рисунок 35). Данные объекты связываются в области драйвера
связи с определенным тегом. Дискретному выводу соответствуют имена тегов DO - digital output. Каждый тег связывается с адресом модуля дискретного
ввода. Задается адрес канала дискретного вывода в соответствии с таблицей
обозначения каналов. Из списка действий (Action) выбирается Write (запись).
Рисунок 35 - Форма для отображения состояния дискретных выходов
Состояние канала дискретного вывода изменяется с помощью переключателей, выбираемые из библиотеки редактора графических форм (рисунок 35).
В свойствах объекта-переключатель указаны:
Команда (Сommand) - строка тега (Tag) содержит имя определенного тега, связанного с каналом дискретного вывода; строка Выражение (Expression) содержит условия, от выполнения которых зависят параметры, указанные в области Положение (Position).
Положение (Position) -
условия, заданные в области Show on condition (отображение состояния), аналогичны
выше рассмотренным. Имена тегов, соответствующие дискретному вводу (DI), заменяются DO - дискретный вывод (digital output).
Рисунок 36 - Формирование свойства «Command» объекта-переключателя
.6 Разработка экрана тревог, их отображение
Система контроля состояния объекта должна своевременно представлять сведения об авариях и тревогах. Это позволяет поддерживать систему в рабочем состоянии. Главная цель тревог - сообщить оператору о любой проблеме или изменении состояния процесса так, чтобы можно было предпринять корректирующие действия.
Для разработки экранной формы тревог произведём щелчок правой клавишей
мыши на папке Screens, находящейся на вкладке Graphics области Workspace, и выполним команду Insert. Для создания новой группы тревог
необходимо щёлкнуть правой кнопкой мыши по папке «Alarms» (на вкладке Tasks) и выбрать опцию - «Insert». В результате проделанных действий откроется
диалоговое окно, представленное на рисунке 37.
Рисунок 37 - Диалоговое окно сигнального листа «Alarm»
На сигнальном рабочем листе следует задать имя тега, тип тревоги,
пределы, сообщение (появляющееся при возникновении этой тревоги), приоритет, а
так же цвет сообщения тревоги (рисунок 38).
Рисунок 38 - Заполненный сигнальный лист «Alarm»
Если сделать поставить флажок на пункте Save To Disk, то система будет автоматически делать запись всех возникающих тревог в ASCII-файл с расширением alh в сигнальной папке Alarm. Сами файлы будут именоваться по дате их создания. Имя файла имеет следующую структуру: