Сортировка Historical Alarms and Events

Системная платформа - продукт для комплексной автоматизации процессов предприятия от Wonderware.

Сортировка Historical Alarms and Events

Сообщение Никита » Чт фев 04, 2016 7:13 pm

Дано: 1. Имеется следующая структура (см. Рис.1)
........2. Аварии сортируются по приоритетам по: HiHi LoLo(красные), Hi Lo(желтые)
Задача: Поставить в правом верхнем углу Аларм Клиента Combo Box, с помощью которого можно будет выбирать объект из Area_1, и просматривать либо HiHi c LoLo либо Hi c Lo либо все аварии только по этому объекту.
Маленькая хитрость: С помощью Query Filters осуществить данную идею. Для этого, дабы исключить ошибки использования Modify Filter(ом), создал AlarmClient и сделал из него Current Alarms, для того чтобы вписывать адрес в Alarm Query и при удачном стечении обстоятельств забрать построенную автоматически структуру с Query Filters для Historian алармов.
Проблема: Сделать сортировку по Area(ям) получается, а вот по объектам нет :(
Что работает: \\nodename\Galaxy!area; \Galaxy!area
Безуспешные попытки: \\nodename\Galaxy!area!object; \\nodename\Galaxy!area!object.attribute; \Galaxy!area!object; Galaxy!area!object.attribute; \Galaxy!area!object.; \Galaxy!area!object.*; и с добавлением attribute тоже самое, и в WinPlatform галочку ставил на Register using... и называл соответствующе, и как на Рисунке 2 пробовал, это даже малая часть, как только не извращался, и aaAlarmClientControl.pdf весь день читаю, что делать? помогите?
Вот именно если все что после Area идет поудалять, то работает, но мне нужна сортировка по тем объектам, что в каждой Area находятся (а их в каждой по 10 штук)
Вложения
Метод научного мегаТыка.jpg
Рисунок 2
(182.04 КБ) Скачиваний: 0
структура.jpg
Рисунок 1
(29.46 КБ) Скачиваний: 0
Никита
 
Сообщения: 11
Зарегистрирован: Ср дек 09, 2015 7:48 pm

Re: Сортировка Historical Alarms and Events

Сообщение mp3corp » Чт фев 04, 2016 11:01 pm

Ну так сделайте: AreaSkv1...AreaSkv9, или религия не позволяет? Для конечного пользователя SCADA системы не играет никакой роли как спроектирована платформа и как сделана группировка алармов, из Area или Instanse...
mp3corp
 
Сообщения: 375
Зарегистрирован: Вт фев 22, 2011 4:47 am

Re: Сортировка Historical Alarms and Events

Сообщение Steelman63 » Пт фев 05, 2016 12:00 am

вообще это должно работать

The fully qualified syntax of an alarm query to retrieve a single alarm within an object as reported by a specific WinPlatform object is:
\\nodename\Galaxy!area!object.attribute
If the WinPlatform object that serves as an alarm provider is located in the local computer, the following syntax of the alarm query is allowed:
\Galaxy!area!object.attribute

\\nodename\Galaxy!area!object.* - All alarms and events from a specific object within an area.
\\nodename\Galaxy!area!*.attribute - All alarms and events from all the objects in the area for the specific attribute.
\\nodename\Galaxy!area!objectprefix* - All alarms and events from objects whose name begins with the specific prefix

Более того это у меня подобное работало... ))
Последний раз редактировалось Steelman63 Пт фев 05, 2016 12:16 am, всего редактировалось 2 раз(а).
Steelman63
 
Сообщения: 313
Зарегистрирован: Ср авг 29, 2012 3:42 pm

Re: Сортировка Historical Alarms and Events

Сообщение Steelman63 » Пт фев 05, 2016 12:11 am

Никита писал(а): Метод научного мегаТыка.jpg


сей метод наиболее эффективен, когда подкреплен некоторой теоретической базой:
писать нужно в AlarmQuery Property
после чего желательно выполнить Requery() Method
Steelman63
 
Сообщения: 313
Зарегистрирован: Ср авг 29, 2012 3:42 pm

Re: Сортировка Historical Alarms and Events

Сообщение Никита » Чт мар 03, 2016 1:11 pm

Совсем забыл, всем спасибо, немного отчитаюсь, очень кратко, мож кому пригодится:
В итоге получилась выборка по статусу алармов (критические,высокие...), по Area (тем самым сортирую по скважинам), по времени(с...по...).
1) Action Script на каждом buttone(крит., высок...) присваивает цифру переменной _selectedSeverity.
Далее в скрипте на DataChange
Код: Выделить всё
 if _selectedSeverity == 999  then
                gAlarmClient.Favorite = "Events";
      elseif и т.д.

2) ComboBoxом загоняю цифру в промежуточную переменную "Skvselect", в зависимости от необходимой Area(скважины)
Далее в скрипте на DataChange
Код: Выделить всё
 if  Skvselect == 1 then
        gAlarmClient.QueryFilters.GetFilterByName("Events").FilterCriteria = "(Provider = 'Galaxy' AND Group = 'Area01' AND Priority = '999')";   
        gAlarmClient.QueryFilters.GetFilterByName("High_Alarms").FilterCriteria = "(Provider = 'Galaxy' AND Group = 'Area01' AND Priority >= '251' AND Priority <= '500')";
        gAlarmClient.QueryFilters.GetFilterByName("Critical_Alarms").FilterCriteria = "(Provider = 'Galaxy' AND Group = 'Area01' AND Priority >= '1' AND Priority <= '250')";
        gAlarmClient.QueryFilters.GetFilterByName("All_Alarms").FilterCriteria = "(Provider = 'Galaxy' AND Group = 'Area01' AND Priority >= '1' AND Priority <= '751')";
        gAlarmClient.Requery();
    elseif Skvselect == 2  then и т.д меняю только Area

3) Два DateTimePickera, один StartDate другой EndDate, формат [dd MMM yyyy] [HH:mm:ss], дабы сузить границы поиска вплоть до минут, на рядом стоящий button вешаю action script
Код: Выделить всё
gAlarmClient.TimeSelector.SetStartAndEndTimes(StartDate, EndDate,0);
gAlarmClient.Requery();

4) Ну и начальные условия
Код: Выделить всё
   'При открытии вкладки "Аварии", отображать ВСЕ Area(скважины), все аварии за последние 24 часа
             ComboBox1.SelectedIndex = 0;
            _selectedSeverity=0;
            gAlarmClient.TimeSelector.SetStartAndEndTimes(StartDate, EndDate,11);
Никита
 
Сообщения: 11
Зарегистрирован: Ср дек 09, 2015 7:48 pm


Вернуться в Wonderware System Platform

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5