Интеграция Dream Report в Wonderware InTouch HMI


Введение.

(Материал предоставлен компанией Клинкманн СПб.)

В настоящем документе будут рассмотрены способы управления системой отчетности Dream Report из мнемосхем InTouch HMI, примеры реализации и уточнение некоторых особенностей. Данный документ не содержит подробного описания функций Wonderware System Platform/InTouch и Dream Report, подробную информацию можно найти в документации на соответствующие продукты. Примеры реализации приведены для последних на момент написания версий продуктов: Wonderware System Platform 2017 Update 1 и Dream Report 4.81, в иных версиях приведенные ниже действия по интеграции могут несколько отличаться.


Существует несколько способов организовать взаимосвязь между InTouch HMI и Dream Report Runtime:

  1. генерация отчетов по событию, например по нажатию кнопки, скриптовым событиям и т.д.;
  2. генерация отчетов при помощи командной строки/bat файла и функции WWDosCommand();
  3. встраивание в мнемосхему ActiveX компонентов Dream Report Dynamic Generation/DBatch;
  4. встраивание в мнемосхему Web-браузера в виде .Net компонента для последующего отображения Web-портала Dream Report.

1. Генерация отчётов по событиям.

 

В данном варианте интеграции оператор получит возможность запускать генерацию конкретного отчёта по кнопке на мнемосхеме, без изменения типа, периода и других настроек отчёта.

Dream Report имеет встроенный функционал для генерации отчётов по событиям. В качестве такого события может выступать тэг (Item) полученный от любого источника данных (Data Source), в том числе и по тэгу InTouch/атрибуту объекта Application Server.

Пользователю доступны варианты генерации отчёта как по конкретным условиям (On Condition), так и по любому изменению этого тэга (On Item Value Change). Так же, есть возможность настроить задержку в секундах после возникновения события.

Рассмотрим пример для объекта ApplicationServer.

Для начала создадим для объекта DataGenerator атрибут типа Boolean со свойством User Writeable и назовём его Generate.



Далее создадим на мнемосхеме кнопку с действием Discrete Value > Toggle и привяжем к ней созданный ранее атрибут.


Сделаем Deploy для всех созданных объектов, после успешного окончания перейдем в Dream Report Studio.

Выберем из списка отчёт, который мы хотим генерировать по событию, откроем его настройки и перейдем на вкладку Generate Report On Event, окно примет следующий вид:


На данной вкладке следует:

1)     Включить генерацию отчёта по событиям, отметив галочку Enable Generation On Event;

В случае необходимости выбрать необходимый экземпляр отчёта в настройке Enable Instance Generation;

2)     Выбрать необходимое условие на вкладке Select Event Type – Based: В данном пример мы будем использовать генерацию по изменению тэга, что упрощает разработку в части мнемосхемы и позволит генерировать отчёт при любом переходе дискретного тэга (False>True и True>False)

3)     Выбрать при помощи клавиши         источник данных и имя тэга, либо ввести их вручную в необходимые поля;

4)     При необходимости настроить задержку;

5)     После всех необходимых настроек нажать кнопку Apply и закрыть окно, а затем загрузить данный отчёт в Runtime.


По выполнению указанных выше действий оператор сможет создавать отчёты по нажатию кнопки, которая в свою очередь будет менять значение атрибута Application Server’а, что и станет флагом старта генерации отчёта для Dream Report.


2. Генерация отчёта при помощи командной строки/bat файлов.


В данном варианте интеграции оператор получит возможность генерировать конкретный отчёт по кнопке с мнемосхемы, так же можно менять период и тип отчёта.


Система Dream Report поддерживает управление динамическим генератором отчётов при помощи командной строки (Silent mode), подробности приведены в документе Dream Report User’s Guide, глава 23 Runtime Manager > Dynamic Report Generator.

С другой стороны InTouch HMI имеет функцию WWDosCommand(), которая входит в библиотеку WWTechSp и позволяет выполнять отправлять команды в CMD Windows или запускать .bat файлы.

Рассмотрим пример с .bat файлом, который будет запускаться по кнопке на мнемосхеме InTouch.

Что бы запустить отчёт из командной строки нам необходимо знать: где расположен файл runtime rtm.exe, имя отчёта и вид, в котором мы хотим его получить (и/или: pdf/excel/email/printer).

Так же можно указать экземпляр шаблона и настроить период и тип отчёта.


Для начала создадим файл report.bat со скриптом вида:

CHDIR C:\ODS\Dream_report\system

TIMEOUT /T 3

Rtm.exe – generate –name “Report” –target pdf

TIMEOUT /T 3

Где:

C:\ODS\Dream_report\system – путь до runtime файла Rtm.exe

Rtm.exe – generate –name “Report” –target pdf – команда запускающая отчёт Report в формате PDF

Также для наглядности работы скрипта были добавлены две паузы по три секунды при помощи команды TIMEOUT /T 3, их использование в реальной системе не обязательно.


Далее на мнемосхеме InTouch HMI создадим кнопку с Action script вида:

WWDosCommand(“C:\report.bat”, “maximized”)

Где:

C:\report.bat – команда для выполнения в командной строке, в нашем случае просто путь до файла;

Maximized – вариант запуска командной строки, может быть:

-        Restored – командная строка запуститься в последнем неразвернутом (non-maximized) состоянии;

-        Maximized - командная строка запуститься в максимально развернутом (во весь экран) состоянии;

-        Minimized - командная строка запуститься в свернутом состоянии (только в виде иконки);

-        Invisible - командная строка запуститься без внешних признаков (без окна и без иконки).


Сохраним окно и перейдём к WindowViewer’у. Если все действия были выполнены верно, то при нажатии на созданную кнопку мы сделаем вызов командной строки и вызов в ней runtime системы Dream Report. Спустя некоторое время система сгенерирует отчёт в папку, указанную как хранилище отчётов.


Так же создание отчёта можно наблюдать в Runtime Management Console

3. Генерация отчётов при помощи встраиваемого в мнемосхему компонента ActiveX


В данном варианте интеграции оператор получит полный функционал динамического генератора отчётов, с возможностью генерировать и настраивать отчёты.

Для организации генерации отчётов Dream Report при помощи встраиваемого в мнемосхему компонента ActiveX необходимо предварительно установить компонент (Динамический генератор отчётов/Dynamic Report Generator) в приложение InTouch.

Для этого следует перейти в меню Special > Configure > Wizard/ActiveX Installation:


В открывшемся окне перейти на вкладку ActiveX Control Installation, в нижнем поле окна найти компоненты:

- Ods.DBatch.RuntimeControl;

- Ods.DRG.RuntimeControl;

Выбрать необходимые и нажать кнопку Install:


После окончанию процесса установки выбранные компоненты появятся в верхнем поле окна, в списке установленных ActiveX компонентов.

Встраивание компонента непосредственно в мнемосхему происходит при помощи инструмента Wizards, для запуска которого необходимо нажать соответствующую иконку  Wizards …

В появившимся окне в списке ActiveX Controls следует выбрать установленные ранее компоненты (DBatch и DRG)


Для примера вставим компонент DRG в мнемосхему. При вставке доступны изменения размера и положения компонента, так же по двойному щелчку левой кнопки мыши доступно окно свойств компонента. Пример интегрированного компонента с открытым окном свойств:


В результате оператор сможет создавать, открывать отчёты Dream Report прямо из мнемосхемы InTouch, в том числе с возможностью редактирования вида и периода отчётов. Интерфейс ActiveX компонента полностью аналогичен пользовательскому интерфейсу приложения, который подробно рассмотрен в документации Dream Report User’s Guide в соответствующей главе - Dynamic Report Generator / Динамический генератор отчётов

Пример интегрированного компонента в режиме исполнения:

4. Встраивание в мнемосхему web-браузера в виде .Net компонента.


В данном варианте интеграции оператор получит полный функционал Web-портала Dream Report, в том числе с возможностью отображения интерактивных данных и онлайн обновления.

В систему Dream Report входит Web-портал, которые предоставляет пользователям возможность видеть списки отчётов текущего проекта, отображать и генерировать эти отчёты, вводить данные вручную и т.д. Подробнее с функциями Web-портала можно ознакомиться в соответствующей главе документа Dream Report User’s Guide.

            С другой стороны, существую способ интегрировать Web-браузер в мнемосхемы InTouch HMI при помощи Microsoft .Net компонентов.

            В начале следует установить .Net компоненты в приложение InTouch. В зависимости от типа вашего приложения это делается из меню File > Import > ClientControl в Window Maker для приложений типа Modern; и через меню Galaxy > Import > ClientControl в ArchestrA IDE для приложений Managed, в том числе для приложений InTouch for System Platform. В данном документе рассмотрим второй случай, при этом интеграция для Modern-приложений полностью аналогична.

            В ArchestrA IDE перейдем в меню Galaxy > Import > ClientControl


В открывшемся окне следует найти файл System.Windows.Forms.dll расположенный в директории C:\Windows\Microsoft.NET\Framework\v2.0.50727.

Внимание: В случае, если вы используете 64-х битную операционную систему, не используйте файл из директории Framework64. Application server и InTouch HMI являются 32-х битными приложениями!

В появившемся после выбора файла окне следует оставить настройки по умолчанию и нажать ОК.

В случае возникновения ошибки, говорящей о наличии более новой версии устанавливаемого компонента, удалите из галактики компонент TreeView и повторите импорт.


После завершения импорта в окне появится надпись Import completed.


Далее следует создать новый ArchestrA-символ и выполнить следующие действия:

1) создать текстовое свойство (Custom property) типа String, которое нужно для передачи URL;

2) вставить в символ компонент WebBrowser через соответствующий инструмент ;

3) создать текстовое поле (TextBox) и настроить в нем анимацию User Input и указать в поле Reference имя переменной, созданной в пункте 1;

Пункт 3 необходим, если вы хотите иметь возможность указывать ссылку для встраиваемого Web-браузера напрямую с мнемосхемы. Если же такая возможность не требуется, то ссылку для браузера можно «жестко» прописать при помощи скрипта.


4) создать для символа скрипт, в котором при помощи функции WebBrowser.Navigate(URL) указать открываемую браузером ссылку, где URL – либо «жестко» указанная ссылка, либо имя переменной, содержащей эту ссылку.

Так же можно создать Predefined скрипт, пропускающий диалоговое окно и открывающий домашнюю страницу при возникновении ошибок:

'Do not show dialog boxes with script errors.

WebBrowser.ScriptErrorsSuppressed = True;

'Navigate to the default page.

WebBrowser.GoHome();

Где WebBrowser – имя компонента Web-браузера.

 

В случае необходимость создания клавиш навигации, таких как «Назад»/«Вперед», «Обновить», «Домой» следует использовать соответствующие функции:

WebBrowser.GoBack();

WebBrowser.GoForward();

WebBrowser.Refresh();

WebBrowser.GoHome();

Где WebBrowser – имя компонента Web-браузера.


В результате вышеописанных действий будет создан готовый к интегрированию ArchestrA-символ с браузером и адресной строкой.

Далее остается лишь встроить этот символ в мнемосхему и запустить в режиме исполнения.

Таким образом в мнемосхему приложения InTouch HMI будет интегрировано полнофункциональный Web-портал системы Dream Report.