Фильтр по тематике

Работа со SCADA-системой GENESIS32. Часть 2

Часть 2

Вопрос

При открытии Web-страницы с экранной формой не отображается компонент AWX Viewer, находящийся на этом экране. Если попытаться выполнить сценарий, связанный с этим компонентом, появляется сообщение об ошибке, указывающее, что не обходим объект. В чем может быть причина?

Ответ

Для выяснения причины попробуйте загрузить компонент AWX32 Viewer ActiveX вручную. Для этого установите следующий адрес в браузере клиента:


Будет открыто окно, показанное на рис. 1, из которого можно произвести загрузку. Если операция будет выполнена успешно и экранная форма будет отображаться нормально, то следует проверить содержимое htm-файла, используемого при открытии этой страницы: скорее всего, в нем содержится неправильная ссылка на компонент. Далее приведен фрагмент кода HTML для страницы, содержащей экранную форму с компонентом AWX32 Viewer.

<SCRIPT>

                if (navigator.appName == «Microsoft Internet Explorer»)

                {

objDependentActiveX0 = ‘<OBJECT id =DependentActiveX0’ + ‘WIDTH=»2» HEIGHT=»2»’ +

‘CLASSID=clsid:1BF340DE-5001-11D3-A605-00A0249E352D ‘ + ‘CODEBASE=» http://www.classroom.prosoft.ru/

WebHMI/cabs/’+GetArchiveNameFrom

(«AWXView32»)+’#version=7,0,117,0»>’ + ‘</OBJECT>’;

}

                else

                {

objDependentActiveX0 = ‘<EMBED TYPE=»application/x-eskerplus»’ + ‘ID=»DependentActiveX0»’ +

‘CLASSID=»clsid:1BF340DE-5001-11D3-A605-00A0249E352D»’ +

‘CODEBASE=»’+CheckArchivePath

«http://www.classroom.prosoft.ru/

WebHMI/dpl/»)+

GetArchiveNameFrom(«AWXview32»)+’»’ + WIDTH=»2» HEIGHT=»2»>’;

                }

                document.write( objDependentActiveX0 );

Если ручная загрузка окажется неудачной, причинами могут быть отсутствие каталога с необходимыми Cab-файлами на Web-сервере или его переименование, а также ограничения безопасности, установленные в настройках Internet Information Services (IIS).

Вопрос

Есть аппаратный ключ для LPT-порта с лицензией на GENESIS32 7.0, но в компьютере нет LPT-порта. Попробовал вставить PCI-плату с портом LPT, принтер работает без проблем, утилита активизации аппаратного ключа от вечает, что ключ активизирован, но монитор лицензии не обнаруживает лицензию. Как быть?

Ответ

Вам необходимо обновить утилиту лицензирования до версии 7.1 (диск с дистрибутивом можно получить в компании ПРОСОФТ или скачать его по следующей ссылке:

ftp://ftp.classroom.prosoft.ru/Software/GENESIS32_ 71/.

Размер дистрибутива — 680 Мбайт).

Дело в том, что в версии GENESIS32 7.0 драйвер аппаратного ключа не поддерживает работу с портом, если диапазон адресов ввода-вывода параллельного порта отличается от 0378 – 037F. В релизе 7.1 этот недостаток устранён.

Вопрос

Возможно ли встроенными средствами GENESIS32 7.0 в приложении GraphWorX32 получить значение флага качества тега и записать это значение, например, в локальную переменную?

Ответ

Да, можно. Для этого используется функция редактора выражений quality. Если нужно записать значение качества в локальную переменную, то можно это сделать с помощью кнопки, настроив её параметры, как показано на рисунке 2. 


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

Вопрос

Имеется экранная форма. В ней — компонент Iconics Switch ActiveX, источником данных для которого является локальная переменная. Но в списке локальных переменных экранной формы она не отображается. Почему?

Ответ

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

Вопрос

В проекте организовано резервирование узлов с помощью DataWorX. Можно ли сделать так, чтобы при нажатии кнопки, загружающей другую экранную форму, файл этой формы мог подгружаться с основного или резервного узла, в зависимости от состояния связи?

Ответ

Да, можно. Вот два способа для реализации этой задачи.

Первый способ подходит как для седьмой, так и для более ранних версий GENESIS32.

  1. При настройке резервирования в DataWorX определите регистр, значение которого будет отображать статус узла (1 – основной узел, 0 – резервный), как показано на рис. 3.

  2. Создайте в экранной форме две кнопки. Одна из них будет открывать экранную форму, расположенную на основном узле, и будет скрыта, если данные поступают с резервного узла, то есть если регистр статуса равен нулю (рис. 4).

    Другая будет открывать соответствующую экранную форму, расположенную на резервном узле, и будет скрыта, если активен основной узел (рис. 5).

  3. Совместите обе кнопки. В зависимости от того, с какого узла поступают данные, будет задействована одна из кнопок, а другая в этот момент будет скрыта.

Второй способ заключается в применении глобальных псевдонимов и может использоваться только в седьмой версии GENESIS32.

  1. С помощью Конфигуратора глобальных псевдонимов создайте глобальный псевдоним и определите для него два значения, соответствующих именам узлов, как показано на рис. 6.

  2. Создайте кнопку, открывающую экранную форму. В строке, определяющей путь и имя файла экранной формы, замените имя узла глобальным псевдонимом, как показано на рис. 7.

  3. Напишите небольшой сценарий VBA, в котором значение глобального псевдонима будет устанавливаться в зависимости от того, с какого узла поступают данные. В этом примере в экранную форму был добавлен ActiveX-компонент ICONICS AxTimer Control, генерирующий событие через заданные промежутки времени. В процедуре, обрабатывающей это событие (Private Sub AxTimer1_Timer), проверяется статус узла и производится переключение глобального псевдонима.

Option Explicit

Public dwx As Dwx32.Application

Public St As Dwx32.RedundancyAlias

___________________________

 

Private Sub GwxDisplay_DisplayLoad()

Dim R As Boolean

 

Set dwx = New Dwx32.Application

R = dwx.FileOpen(«C:\red.dwx»)

dwx.ShowWindow

dwx.StartRuntime

End Sub

___________________________

 

Private Sub AxTimer1_Timer()

 

Dim t As Boolean

Set St = dwx.GetRedundancyAlias(«Simulator»)

 

If St.IsPrimary Then

t = ThisDisplay.SetGASThemes(«Node_theme=Node1;»)

Else

t = ThisDisplay.SetGASThemes(«Node_theme= Node2;»)

End If

End Sub

___________________________

Вопрос

Как можно в сценарии VBA считать значение локального псевдонима? При использовании метода GetPointObjectFromName() возникает ошибка.

Ответ

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

GetPointObjectFromName

(“{{ICONICS.Simulator.1\GlobalVariables.Analog1}}”)

или локальных переменных 

GetPointObjectFromName

(“~~local_var~~”).

Строка <local_alias> не определяет источник данных однозначно – он может динамически переключаться в режиме исполнения, поэтому в сценарии нужно предусмотреть получение реального источника данных для псевдонима. Рассмотрим случай, когда локальный псевдоним применяется в динамическом объекте «Параметр». Для обращения к этому псевдониму следует использовать такой сценарий:

 

Sub LOCAL_ALIAS (o as GwxPick)

Динамический объект «Параметр»

Dim ppt as GwxProcessPoint ‘Объект, представляющий соединения с источниками данных

Dim pt as GWxPoint

 

‘Получение динамического объекта по имени, передаваемому аргументом:

Set ppt = ThisDisplay.GetDynamicObjectFromName («Alias_Object «)

Получение свойства «Источник данных» для этого объекта:

Set pt = ThisDisplay.GetPointObjectFromName (ppt.datasource)

End Sub

В этом примере «Alias_Object» – имя динамического объекта «Параметр» (рис. 8).


Вопрос

При установке GENESIS32 V6.11 возникает ошибка «FSI FinishInstall() returned general error code». После нажатия кнопки OK инсталлятор продолжает работу (регистрирует компоненты GENESIS32) и затем выдает сообщение «Setup was unable to install VBA». После нажатия OK инсталлятор продолжает установку и успешно её завершает. После установки при попытке запустить GraphWorX32 возникает сообщение «Failed to create empty document», и GraphWorX32 не запускается. Операционная система Microsoft Windows XP Home Edition Version 2002 Service Pack 1 (English).

Ответ

Такая ошибка возникает из-за конфликта разных версий Visual Basic for Applications. При инсталляции GENESIS32 6.11 устанавливается версия VBA 5.0, в то время как в системе, скорее всего, уже установлен VBA 6.0 (офисные приложения для Windows XP работают с шестой версией VBA). Для устранения проблемы следует установить VBA 5.0, скачав файл FixForVbaInstallError-VBA5.zip по следующей ссылке:

ftp://ftp.classroom.prosoft.ru/Software/GENESIS32_6_11/Fixes/

Вопрос

Была выполнена настройка конфигуратора AlarmWorX32 Logger. На вкладке Управление таблицами для активной и архивных таблиц было установлено ограничение на максимальное количество записей. При запуске архивирования данное ограничение не выполняется, и в таблицу заносится большее количество записей. Почему?

Ответ

Дело в том, что AWX Logger выполняет операцию по управлению таблицами 1 раз в час. Поэтому сразу после запуска архивации все тревоги будут записываться в одну таблицу и их количество может превысить установленные ограничения. Но если Вы откроете базу данных через час, то увидите, что записи распределены по таблицам в соответствии с тем максимальным количеством, которое Вы установили в настройках конфигуратора Alarm Logger.

Вопрос

На Web-сервере обновили GENESIS32 и WebHMI 7.0 до версии 7.1. Но на клиентских машинах все компоненты, необходимые для работы проекта через Интернет, уже установлены, так как они были загружены при первом просмотре Web-страницы проекта. Как вызвать повторную загрузку объектов?

Ответ

Откройте пункт Tools->Internet Options в Internet Explorer.

Щелкните на кнопке Delete Files (Удалить файлы) для удаления временных файлов – в них находятся многие cab-файлы и экранные формы.

Щелкните на кнопке Settings (Настройки) и выберите View Objects (Просмотр объектов). В этом списке находятся как некоторые объекты ICONICS (например, настройки Сервера безопасности и компонента GraphWorX32 viewer), так и объекты, загруженные с других Web-сайтов. Необходимо удалить объекты ICONICS из этого списка. (Если Вы по ошибке удалите объекты, не имеющие отношения к проекту ICONICS, неприятных последствий это не вызовет: при следующем просмотре соответствующего Web-сайта они будут загружены ещё раз).

Теперь, когда Вы откроете Web-страницу этого проекта, снова появится запрос на загрузку объектов, и таким образом Вы сможете обновить необходимые для проекта компоненты ActiveX.

Вопрос

Существует ли ограничение на максимальное количество экранов GraphWorX, которые могут быть запущены одновременно? Используя версию 7.1, получаем сообщение «Failed to create empty document» при попытке открыть 21-й экземпляр GWX32.

Ответ

Это ограничение касается не только GraphWorX32, но и всех приложений, работающих в операционной системе Microsoft Windows. Связано оно с тем, что существует максимально возможное количество одновременно используемых дескрипторов меню. Чем большее количество пунктов меню содержит приложение и чем сложнее их структура, тем раньше достигается предельное количество дескрипторов. Например, такое приложение, как WordPad, достигает этого предела при одновременном открытии 90 экземпляров, но его меню намного меньше, чем меню GraphWorX32.

Вопрос

На компьютер с операционной системой Windows 2000 Professional SP4 был установлен ReportWorX.NET. Были выполнены все указанные в документации дополнительные настройки: DCOM, учётная запись для службы ReportWorX.NET с правами администратора и т.д. Но запуск службы невозможен: при запуске из конфигуратора значок светофора становится серым (не активным), а при запуске службы вручную (Control Panel — Administrative Tools — Services) появляется сообщение об ошибке: «Error 1053: The service did not respond in a timely fashion».

Ответ

Эта ошибка происходит из-за того, что на Вашем компьютере одновременно установлены две версии .Net Framework — 1.0 и 1.1. Вам необходимо деинсталлировать .Net Framework 1.0 через пункт Установка и удаление программ в Панели управления.

Вопрос

Опишите, пожалуйста, процедуру создания и применения переключающих псевдонимов DataWorX32.

Ответ

Создание переключающего псевдонима.

  1. Для создания переключающего псевдонима нажмите кнопку в инструментальной панели DataWorX32. На экран монитора будет выведена диалоговая панель Создание переключающего псевдонима, как показано на рис. 9.

  2. Определите произвольное имя переключателя.
  3. Определите значения переключателя – часть строки имени тега, которая будет изменяться в зависимости от индекса. Для этого введите необходимое значение (в этом примере значениями являются «g1», «g2», «g3») в Поле ввода и нажмите кнопку Добавить. Индекс (начиная с нуля) будет присвоен автоматически. При необходимости индекс можно изменить с помощью кнопок Вверх и Вниз.
  4. Откройте закладку Вход и определите значение, которое будет использоваться при выходе индекса за заданные пределы, как показано на рисунке 10.

  5. Откройте закладку Просмотр и, нажав кнопку Обзор, определите источник данных, доступ к которому будет организован через переключающий псевдоним.
  6. Выберите часть строки, которая будет изменяться в зависимости от значения индекса, как показано на рисунке 11, и нажмите кнопку ОК.

  7. Выделите переключающий псевдоним, щелкните правой клавишей мыши и выберите Редактировать как регистр из выпадающего меню, как показано на рисунке 12.

  8. Настройте свойства переключателя, как показано на рисунке 13. В качестве входа задайте ОРС-тег Analog9, с помощью которого будет формироваться значение индекса для переключения. Закладку Выходы оставьте пустой.

  9. Сохраните конфигурацию и нажмите на кнопку (запуск).

 

Проверка работы переключающего псевдонима

В зависимости от значения ICONICS.Simulator.1\GlobalVariables.

Analog9 [0, 1, 2] в строке источника данных ICONICS.Simulator.1\GlobalVariables. Analog1 будет изменяться окончание [g1, g2, g3] и на выход переключателя будет подаваться одно из значений:

ICONICS.Simulator.1\GlobalVariables.

Analog1, ICONICS.Simulator.1\GlobalVariables.

Analog2, ICONICS.Simulator.1\GlobalVariables.

Analog3.

1. Откройте файл GraphWorX32 и добавьте элементы Параметр процесса со следующими свойствами:

ICONICS.Simulator.1\GlobalVariables.Analog1 — флажок «Ввод данных» установлен

ICONICS.Simulator.1\GlobalVariables.Analog2 — флажок «Ввод данных» установлен

ICONICS.Simulator.1\GlobalVariables.Analog3 — флажок «Ввод данных» установлен

ICONICS.Simulator.1\GlobalVariables.Analog9 — флажок «Ввод данных» установлен

ICONICS.DataWorX32.1\ICONICS.Simulator.1\GlobalVariables.Analo[[switch]] — флажок «Ввод данных» снят.

2. Переведите экранную форму в режим Исполнение.

3. Установите произвольные (но различные) значения переменных …Analog1, Analog2, Analog3.

Введите с клавиатуры различные значения тега ICONICS.Simulator.1\ GlobalVa­ri­a­bles.Analog9, управляющего переключением, и понаблюдайте, как изменяется значение псевдонима ICONICS.DataWorX32.1\ICONICS.Simulator.1\GlobalVariables.Analo[[switch]].  

Автор — сотрудник фирмы ПРОСОФТ
Телефон: (095) 234-0636
E-mail: info@prosoft.ru

Комментарии
Рекомендуем