Страница 1 из 1

Фильтрация алармов по приоритету

СообщениеДобавлено: Ср июн 14, 2017 2:45 pm
169409
Простейшая задача, превращающаяся в головную боль.

Есть иерархия групп аварий:

1.Этаж
2.Установка
3.Датчик

Датчик шлет 4 состояния аварии, у всех аварий разный приоритет, к примеру: 10 - ПДК 1 уровня, 20 - ПДК 2 уровня, 100 - неисправность датчика, 500 - датчик не в сети

К примеру, нужно получить количество неквитированных аварий на этаже:
Этаж.AlarmUnAckCount
вроде все просто, но немного усложняю задачу, требуется получить количество неквитированных аварий на этаже по ПДК 1 уровня.
Как провести такую фильтрацию?

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Ср июн 14, 2017 6:04 pm
Генератор зла
Каждому ПДК присвоить свой Priority при параметрировании алармов в Tagname Dictionary.
Для AlarmViewCtrl и AlarmDBViewCtrl создать фильтры сортировки аварий по полю Priority

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Ср июн 14, 2017 6:24 pm
169409
Приоритеты и так присвоены. Окна алармов настроенны.
Мне нужно число. Я хочу именно расписать в небольшом общем навигационном окне что на первом этаже у меня 6 аварий, 3 из них это ПДК, 1 это не в сети и 2 это датчики с ошибками.
Чтобы оператор мог быстренько взглянуть и увидеть общую картину.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Чт июн 15, 2017 12:30 am
Генератор зла
ЕМНИП, группы алармов поддерживают вложение. Вот и воспользуйтесь этим. И циклически в Application-скрипте (например) опрашивайте кол-во неподтверждённых алармов в каждой группе.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Чт июн 15, 2017 2:48 pm
169409
Что то я в первый раз слышу о вложениях в группах алармов.
Количество неподтвержденных алармов я и так получаю, для этого есть .AlarmUnAckCount
Вопрос стоит как в этом значении выбрать только те аварии, которые имеют нужный мне приоритет.
На этот вопрос офф.поддержка мне пока ответа нормального дать не смогла. Если этого у интача нет, то это просто позорище, впрочем, ничего нового, я уже привык что в продукте за дохрилион рублей не сделаны элементарные вещи, скоро книгу напишу "Как на примере Wonredware InTouch просить много денег ни за что".

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Чт июн 15, 2017 7:36 pm
Генератор зла
169409 писал(а):Что то я в первый раз слышу о вложениях в группах алармов.

"Видишь суслика? А он есть" ©
169409 писал(а):Количество неподтвержденных алармов я и так получаю, для этого есть .AlarmUnAckCount

Вот и здОрово. Он же есть и для каждой группы/подгруппы алармов.
169409 писал(а):Вопрос стоит как в этом значении выбрать только те аварии, которые имеют нужный мне приоритет.

Воспользоваться подгруппами алармов.
Если речь идёт только о компоненте AlarmDBViewCtrl, то в нём можно создавать фильтры, можно поиграть ими.
Да и вообще, чтобы выбрать аварии по приоритету, сперва необходимо эти приоритеты правильно назначить ;) Тогда и проблема решится сама собой.
169409 писал(а):Если этого у интача нет, то это просто позорище, впрочем, ничего нового, я уже привык что в продукте за дохрилион рублей не сделаны элементарные вещи, скоро книгу напишу "Как на примере Wonredware InTouch просить много денег ни за что".

Мастерскада и Сайтек, конечно, дешевле, но Вы по каким то причинам работаете в InTouch и не можете убедить руководство поменять каку на конфетку.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Чт июн 15, 2017 8:29 pm
169409
Мда... Либо я плохо объяснил, либо что то еще...
Группы и подгруппы в строгой иерархии уже созданы и никакие другие группы дополнительно (только с авариями ПДК) быть не могут!
Иерархия четкая: Этаж - Установка - Датчик
У каждого датчика настроены аварии по приоритетам и настроены они четко и правильно.

Никаких AlarmDBViewCtrl и прочей хероборы интачевской, тошнит уже от этих компонентов помойных.

Хотелось бы как то по существу, если не знаете, то и не нужно делать вид, что что то можете сказать полезного.

Уже многие проекты делаются на других скадах, но есть объекты, для которых был приобретен InTouch, по этому деваться некуда и приходится этим заниматься.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Чт июн 15, 2017 8:55 pm
Генератор зла
169409 писал(а):Мда... Либо я плохо объяснил, либо что то еще...

Не сомневайтесь, второе.
169409 писал(а):Группы и подгруппы в строгой иерархии уже созданы и никакие другие группы дополнительно (только с авариями ПДК) быть не могут!

Если будет необходимо - появятся. Жизнь - штука сложная.
169409 писал(а):Иерархия четкая: Этаж - Установка - Датчик

Сколько этажей в здании?
Сколько установок на этаже (максимально)?
По любому датчику всего 4 аварии?
169409 писал(а):У каждого датчика настроены аварии по приоритетам и настроены они четко и правильно.

Только до тех пор пока не приходится всё переделывать :)
169409 писал(а):Уже многие проекты делаются на других скадах, но есть объекты, для которых был приобретен InTouch, по этому деваться некуда и приходится этим заниматься.

Если есть лучше, дешевле и надёжнее, то всегда можно убедить руководство в целесообразности замены.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Чт июн 15, 2017 9:18 pm
169409
3 этажа
на этаже может быть порядка 40-60 установок где то
датчиков более 500 штук
4 аварийных состояния

Пример:
1 этаж, стоит 30 установок, на каждой установке по 5 датчиков
всего на этаже фиксируем 15 аварий путем вывода значения:
1этаж.AlarmUnAckCount
а вот теперь нужно определить, сколько аварий какого типа входят в эти 15 штук?
у нас есть деление по приоритетам, каждый тип аварии имеет свой приоритет, соответственно, если авария по ПДК 1 уровня будет иметь приоритет скажем - 10, то нужно будет что то типа выражения:
1этаж.AlarmUnAckCount (priority min,priority max) - грубо говоря, в скобках диапазон приоритетов
Но такой функции у интача нет.
Значит нужно сделать выборку из массива аварий, к которому доступа нет, благодаря бравым программистам вундервафли, нам дают возможность только тянуть эти значения из окон аварий. Но так как информация нужна актуальная и по нескольким группам аварий (например по каждому этажу в отдельности, по некоторым группам установок или по типам датчиков), придется либо городить элементы, связываться с ними и загонять это все в кучу циклов. Это называется "через жопу".

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Чт июн 15, 2017 11:02 pm
Генератор зла
169409 писал(а):3 этажа
на этаже может быть порядка 40-60 установок где то
датчиков более 500 штук
4 аварийных состояния

Итак...
3*60=240 (Alarmm groups) необходимо создать
$System
Flow_1
F1_Plant_1
F1_P1_AlmSensor_1 (ПДК 1)
F1_P1_AlmSensor_2 (ПДК 2)
F1_P1_AlmSensor_3 (неисправность датчика)
F1_P1_AlmSensor_4 (датчик не в сети)
F1_Plant_2
F1_P2_AlmSensor_1
F1_P2_AlmSensor_2
F1_P2_AlmSensor_3
F1_P2_AlmSensor_4
........
F3_Plant_60
F3_P60_AlmSensor_1
F3_P60_AlmSensor_2
F3_P60_AlmSensor_3
F3_P60_AlmSensor_4

И, как это не удивительно, у каждой Alarm Group будет поле .AlarmUnAckCount

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пт июн 16, 2017 2:08 pm
169409
))))))

Описываю как сделано и для чего:

Группы аварий:
F1, F2, F3 - этажи (первый уровень в иерархии групп, эти группы служат для общего подсчета количества аварий, а так же для вывода аварий поэтажно в окнах аварий)
IMP, CVD и тд. - оборудование, они же установки (на каждом этаже расположено большое количество оборудования, на котором установлены разного типа датчики, если один из датчиков на установке выдает ошибку, вся установка подсвечивается на планировке)
O2, H2, BCL, CL2 и прочие - датчики (у датчика есть 4 тега аварий, если приходит одна из аварий, подсвечивается весь датчик)

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

Структура:
F1
IMP
O2
H2
BCL
CVD
BCL
CL2
F2

Так вот, сейчас групп аварий 3+120 (суммарно установок по 3 этажам) + 500 (датчиков) = 623 (приблизительно)
Все строго распределено и никаких изменений в эту структуру внесено быть не может, ибо она отражает всю иерархию самого объекта.

Далее идет сам датчик и его аварии, их 4 штуки:
ПДК 1 - приоритет 10
ПДК 2 - приоритет 20
неисправность датчика - приоритет 100
датчик не в сети - приоритет 500

Соответственно имея такую иерархию алармов и расставленные приоритеты, я могу нормально работать с окнами аварий, выводить информацию поэтажно, по установкам, по одному приоритету, по группе приоритетов. Но это касается именно окон алармов.
Мне же нужна очень простая вещь - число. Число неквитированных алармов определенного приоритета на этаже. (в дальнейшем для некоторых установок)
Есть небольшое навигационное окно, в котором расположены кнопки для перемещения по планировкам, под кнопкой стоит значение, сколько аварий в данный момент на этаже. Я хочу одно это значение, разделить на 4, как раз по количеству аварий разного приоритета. Все.
Чтобы получить количество неквитированных аварий на этаже, просто использую F1.AlarmUnAckCount без заморочек и всего прочего.
Мне же предлагают тянуть эти значения из окон аварий. Вы осознаете масштаб заморочек, если пойти таким путем?

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пт июн 16, 2017 2:09 pm
169409
Ну что за форум... Все сообщение перековеркает.

Структура:
F1
__IMP
_____O2
_____H2
_____BCL
__CVD
_____BCL
_____CL2
F2

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пт июн 16, 2017 2:27 pm
Генератор зла
Предлагается:
F1
__IMP
_____O2
________10
________20
________100
________500
_____H2
________10
________20
________100
________500
_____BCL
________10
________20
________100
________500
__CVD
_____BCL
_____CL2
F2

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пт июн 16, 2017 2:30 pm
169409
Эм... 2000 групп еще добавить????? Сомнительное удовольствие... ))))

Ну хотя даже и так, предположим сделали, как их дальше объединять по условиям? ))))

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пт июн 16, 2017 6:41 pm
Генератор зла
169409 писал(а):Ну хотя даже и так, предположим сделали, как их дальше объединять по условиям?

F1.AlarmUnAckCount - этажные аварии
F1.IMP.AlarmUnAckCount - аварии по конкретной установке
F1.IMP.10.AlarmUnAckCount - по датчикам и приоритету 10

З.ы. Я не просто так пропустил O2 и прочие.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пт июн 16, 2017 6:58 pm
169409
А не останавливает тот факт, что запрещены группы с одинаковыми именами? )))))

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пт июн 16, 2017 7:46 pm
Генератор зла
169409 писал(а):А не останавливает тот факт, что запрещены группы с одинаковыми именами?

F1
__IMP
_____O2
_____H2
_____BCL
__CVD
_____BCL
_____CL2
F2

:?:

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пт июн 16, 2017 8:05 pm
169409
Это я писал для примера структуры иерархии, у каждого датчика, помимо обозначения газа есть номер, т.е. О2-001, О2-002 и т.д.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пт июн 16, 2017 8:09 pm
169409
Не нужно ничего придумывать, эти способы работать не будут, я даже не уверен что синтаксис подобной функции будет правильным.
Тут либо есть какая то функция или дотфилд, либо нет.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пт июн 16, 2017 9:02 pm
Генератор зла
169409 писал(а):Это я писал для примера структуры иерархии, у каждого датчика, помимо обозначения газа есть номер, т.е. О2-001, О2-002 и т.д.

Значит, никаких одинаковых имён и не будет.
169409 писал(а):Тут либо есть какая то функция или дотфилд, либо нет.

Очень верно сказано. Именно дотфиелд.
Имя_Аларм_Группы.AlarmUnAckCount
или
ЭтажХХ_УстановкаYY_ТипОтказа10.AlarmUnAckCount
ЭтажХХ_УстановкаYY_ТипОтказа20.AlarmUnAckCount

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Вс июн 18, 2017 2:14 pm
169409
Откуда вы это берете:
ЭтажХХ_УстановкаYY_ТипОтказа10.AlarmUnAckCount
ЭтажХХ_УстановкаYY_ТипОтказа20.AlarmUnAckCount
из головы придумываете?

Какой тип отказа? Я же написал, НЕ ПОДДЕРЖИВАЮТСЯ ОДИНАКОВЫЕ ИМЕНА ГРУПП.
Дотфилда такого ЭтажХХ_УстановкаYY_ТипОтказа10.AlarmUnAckCount не существует в обозримой документации.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Вс июн 18, 2017 2:44 pm
Генератор зла
Трудно с Вами.
Думаю, техподдержка справится с Вашим вопросом.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Вс июн 18, 2017 7:15 pm
mp3corp
Скажите зачем Вам такие трудности? Сделайте все проще, для чего столько групп аварий? Потратить лишнюю минуту для выбора аларма в журнале религия не позволяет... Когда пишут проект для ПЛК так не заморачиваются... в итоге сделаете как "Все" я уверен, алармы в "СКАДЕ" не главное помните, лучше анализируйте код контроллера на ошибки, там и алармов столько не будет...

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пн июн 19, 2017 12:22 am
169409
Генератор зла писал(а):Трудно с Вами. Думаю, техподдержка справится с Вашим вопросом.


От вас я вообще никогда конкретики не видел, сколько читал топиков с вашими ответами. Вы либо советуете что то ссылаясь на теорию, которую сами же и придумали, либо рекомендуете способы, которые не работают ))) Этакий, псевдо-знаток интача, советы которого почему то не помогают )))


mp3corp писал(а):Скажите зачем Вам такие трудности? Сделайте все проще, для чего столько групп аварий? Потратить лишнюю минуту для выбора аларма в журнале религия не позволяет... Когда пишут проект для ПЛК так не заморачиваются... в итоге сделаете как "Все" я уверен, алармы в "СКАДЕ" не главное помните, лучше анализируйте код контроллера на ошибки, там и алармов столько не будет...


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

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пн июн 19, 2017 1:50 am
Генератор зла
.

Re: Фильтрация алармов по приоритету

СообщениеДобавлено: Пн июн 26, 2017 2:13 am
xonyx
ТС, мне вас искренне жаль.