Материал: LS-Sb89577

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

GWXView32 является базовым классом управляющего элемента GWXView32ActiveX. Для программных компонентов все создаваемые управляющие элементы ActiveX наследуются от GWXView32. Объект GWXDisplay представляет экранные формы.

Классы всех видимых объектов InfinityHMI унаследованы от класса

GwxVisible, то есть имеют свойства и методы GWXVisible. GWXDynamic яв-

ляется классом, от которого унаследованы классы всех динамических объектов (действий). То есть все классы динамических объектов InfinityHMI имеют свойства и методы класса GWXDynamic. GWXPoint является классом, который используется для представления соединений с источниками данных. Если несколько объектов класса GWXDynamic соединены с одним и тем же источником данных, то все они ссылаются на один общий объект класса

GWXPoint.

Объекты GWXPoint осуществляют взаимодействие с OPC-тегами, выражениями, константами и локальными переменными. Явное создание и удаление объекта класса GWXPoint не допускается. InfinityHMI автоматически управляет временем жизни объектов класса GWXPoint, основываясь на соединениях объектов класса GWXDynamic экранной формы с теми или иными источниками данных.

6.2.Программа работы

6.2.1.Встраивание Infinity Alarms

Откройте конфигурацию ОРС-сервера, созданную вами в предыдущей лабораторной работе. Проверьте настройки генерации алармов для сигнала, отвечающего за температуру нагревательного элемента на достижение предельных верхнего и нижнего уровней.

Запустите программу InfinityAlarms с ключом FILECONFIG для записи ini-файла. Для этого в Пуск→Выполнить наберите строку:

"C:\Program Files\EleSy\InfinityLite\Scada\Alarms\InfinityAlarms.exe"

OPER FILECONFIG= "E:\alarm.ini "

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

Настройте в запущенном вами оперативном режиме программы InfinityAlarms отображение оперативных алармов так, чтобы было видно

26

только время сигнала, значение сигнала и текст сообщения. Для этого через контекстное меню необходимо включить кнопки. Затем в меню «Настройки» выбрать «Настройки показа», перейти на закладку «Настройка столбцов» и настроить отображение оперативных сообщений.

Теперь InfinityAlarms можно закрыть. Если вы все проделали правильно, то на диске E появится файл конфигурации с расширением *.ini. Переместите его в свою рабочую папку.

Запустите программу просмотра алармов InfinityAlarms. Создайте и сохраните фильтр, который позволяет просматривать алармы только данного сигнала. Воспользуйтесь кнопкой «Фильтр» на панели инструментов InfinityAlarms. В открывшемся окне «Настройки фильтра» пропишите необходимый сигнал из OPC-сервера и сохраните фильтр в свою директорию.

Запустите вашу SCADA-систему регулирования температуры в режиме разработки. Сохраните файл под новым именем.

Установите на экранную форму ActiveX-компонент InfinityAlarmView.

Для этого нажмите кнопку на панели инструментов или выберите пункт OLE в меню «Рисование». Выберите прямоугольную область на экране. В появившемся диалоговом окне выберите элемент управления InfinityAlarmView Control и нажмите «OK».

Активируйте добавленный вами элемент управления при помощи кноп-

ки на панели VisualBasic (или меню Макрос → Окно свойств), просмотрите окно свойств данного элемента управления. Отключите опцию AutoActivateAlarms, задайте имена файлов конфигурации и фильтра с указанием полного пути к файлу. Прочие свойства оставьте без изменения.

В событии PostRuntimeStart модуля ThisDisplay (в окне VisualBasic для созданного элемента ActiveX) внесем одну строку: InfinityAlarmView1.ActivateAlarms. Запустите мнемосхему, убедитесь, что алармы работают.

6.2.2. Встраивание Infinity Trends

Запустите программу InfinityTrends с ключом FILECONFIG для записи ini-файла. Для этого в Пуск\Выполнить наберите строку: "C:\Program

Files\EleSy\InfinityLite\Scada\Trends\InfinityTrends.exe" OPER FILECFG="

E:\trend.ini".

27

Загрузите соответствующий сигнал для просмотра – меню Сигналы → Добавить сигнал и сохраните список сигналов (меню Файл → Сохранить)

в файл с расширением *.sgl.

Настройте параметры показа графиков при помощи панели инструментов nfinityTrends. Будем выводить график изменения температуры за минуту, а опрос будет выполняться раз в 1 с.

Теперь InfinityTrends можно закрыть. Если вы все проделали правильно, на диске E появится файл конфигурации trend.ini. Переместите его в свою рабочую папку.

Откройте созданную в предыдущем пункте мнемосхему и добавьте ком-

понент InfinityTrendView.

Активируйте добавленный вами элемент управления и при помощи

кнопки на панели VisualBasic (или меню Макрос → Окно свойств) просмотрите окно свойств данного элемента управления. Отключите опцию AutoActivateTrends, задайте имена файлов конфигурации и списка сигналов

суказанием полного пути к файлу. Прочие свойства оставьте без изменения.

Всобытии PostRuntimeStart модуля ThisDisplay (в окне VisualBasic для созданного элемента ActiveX) внесем еще одну строку: InfinityTrendView1.ActivateTrends. Запустите мнемосхему, убедитесь, что тренды работают.

6.3. Содержание отчета

Отчет должен содержать выполнение двух упражнений лабораторной работы:

описание настроек ActiveX в InfinityHMI;

копию экранной формы в режиме исполнения, содержащую ActiveX

объекты InfinityAlarms и InfinityTrends.

28

Лабораторная работа №7

РАЗРАБОТКА VBA-ПРИЛОЖЕНИЙ В INFINIHMI

Цель работы: изучение возможностей по созданию скрипта на языке VBA, организация доступа к значению сигналов из VBA, взаимодействие мнемосхемы с другими программами при помощи VBA (на примере

MSExcel).

7.1. Основные сведения

Одной из важных особенностей программы InfinityHMI является возможность предоставлять свои объекты для использования посредством технологии OLE Automation. Данная возможность позволяет, с одной стороны, создавать внешние приложения, способные работать с объектами InfinityHMI, а с другой – создавать логику обработки данных внутри мнемо-

схем при помощи технологии Microsoft Visual Basic for Application (VBA).

Рассмотрим основные классы, предоставляемые InfinityHMI, и некоторые методы, которые могут быть полезны при разработке VBA-скриптов (см.

рис. 6.1).

Класс GwxDisplay представляет объекты экранных форм InfinityHMI. Экранные формы InfinityHMI содержат множество объектов классов, произ-

водных от GwxVisible, GwxDynamic и GwxPoint. Объект GwxDisplay предо-

ставляет методы для создания новых и получения существующих экземпляров объектов трех перечисленных классов.

GwxVisible является базовым типом объекта (классом) для всех объектов экранных форм InfinityHMI, которые могут быть отображены в ее рабочей области (могут быть визуально восприняты пользователем). Все видимые объекты InfinityHMI (например, GwxRectangle, GwxEllipse, GwxText и т. д.)

наследуются от GwxVisible, а значит, приобретают все его свойства и методы. Часто используемый класс GwxButton является наследованным от класса GwxText. Также в этой иерархии находятся классы для отображения растровых (bmp) и векторных (Metafile) рисунков, OLE-компонентов и т. д. Особого внимания из данной серии классов заслуживает класс GwxSymbol, инкапсулирующий последовательность других визуальных объектов. Объекты данного типа используются для обеспечения группировки визуальных объектов.

Объекты типа GwxDisplay генерируют ряд событий, интересных для нас. Это, например событие DisplayLoad, которое возникает после загрузки

29

экранной формы или PickPostDown, которое возникает после совершения щелчка на объект, обладающий динамикой типа «Динамическое действие» и т. д. Список всех событий можно посмотреть в редакторе VBA для данного дисплея (ThisDisplay). Однако вместо обработки этих событий можно просто указать в VBA-скрипте имя процедуры, которая должна быть вызвана, если наступит определенная ситуация (нажатие кнопки и т. д.).

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

7.2.Программа работы

7.2.1.Организация логики на VBA

Возьмите за основу проект, созданный вами в лабораторной работе №4, и сохраните его под новым именем. Реализуем логику работы проекта в ручном режиме при помощи VBA-скрипта.

Модифицируете мнемосхему следующим образом: после кнопок управления нагревом и охлаждением поставьте некоторый черный ящик, как показано на рис. 7.1. Настройте источники так, чтобы они брали сигналы не из сервера ввода-вывода, а из DualSource.

Нагрев

Режим нагрев

Стоп

Режим охлаждение

Охлаждение

Рис. 7.1. Пример реализации мнемосхемы

Для «черного ящика» добавьте динамику «Динамическое действие» → «Выполнить сценарий VBA». Создать новый сценарий под уникальным именем (можно использовать любое имя, соответствующее спецификации символьных имен: процедур, переменных и т. д.). Настройте динамическое действие таким образом, чтобы скрипт вызывался только по щелчку на «черный ящик».

При помощи кнопки «Редактировать» в инспекторе свойств «черного ящика» откройте среду для разработки VBA-скриптов. В модуль

30