Интеграция 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:
- генерация отчетов по событию, например по нажатию кнопки, скриптовым событиям и т.д.;
- генерация отчетов при помощи командной строки/bat файла и функции WWDosCommand();
- встраивание в мнемосхему ActiveX компонентов Dream Report Dynamic Generation/DBatch;
- встраивание в мнемосхему 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.
Related articles