AlarmClient - квитирование аварий

Вопросы, не попадающие в другие разделы.

AlarmClient - квитирование аварий

Сообщение npp » Пн мар 08, 2021 10:26 pm

Добрые вечер!

Хочу квитирование алармов в Alarm Client сделать на внешней кнопке.
Есть ли хелп по этому компоненту? Не найду подходящий параметр в списке Data Binding.
Нужен параметр Alarm Client`а, содержащий имя тэга под курсором (Только для чтения). Также параметр, содержащий позицию курсора (для Read/Write). Подскажите кто знает.
По задумке курсор после нажатия кнопки квитирования должен появляться на первой строке списка алармов.
Нужно узнать тэг аларма, на который указывает курсор и сквитировать его методом записи true в поле тэга .Ack
Я в правильном направлении думаю?
Вложения
Снимок экрана 2021-03-08 182140.jpg
(590.53 КБ) Скачиваний: 0
npp
 
Сообщения: 27
Зарегистрирован: Пт июн 08, 2018 1:27 pm

Re: AlarmClient - квитирование аварий

Сообщение dEVILoper » Чт сен 02, 2021 9:30 pm

Дока по компоненту - Guide to the ArchestrA Alarm Control.
Быстрый поиск показывает (для примера имя контрола - AlarmClient):
1) Имя тега для выделенной строки:
Код: Выделить всё
AlarmClient.GetSelectedItem("Name")

2) Квитирование тега, выделенного в контроле:
Код: Выделить всё
AlarmClient.Ack.SelectedTag("");

3) Задание позиции строки для выделения в контроле:
Код: Выделить всё
AlarmClient.UnSelectAll();
AlarmClient.Select.Item(pos);

где pos - нужная позиция строки для выделения, начиная с 0
dEVILoper
 
Сообщения: 50
Зарегистрирован: Пт май 07, 2010 7:06 am
Откуда: Russia

Re: AlarmClient - квитирование аварий

Сообщение npp » Сб сен 04, 2021 1:14 pm

Добавил кнопку непосредственно во фрейм с AlarmClient
с командой
Код: Выделить всё
AlarmClient.Ack.Selected("");
Последний раз редактировалось npp Сб сен 04, 2021 1:38 pm, всего редактировалось 1 раз.
npp
 
Сообщения: 27
Зарегистрирован: Пт июн 08, 2018 1:27 pm

Re: AlarmClient - квитирование аварий

Сообщение npp » Сб сен 04, 2021 1:38 pm

Пользуясь случаем, спрошу про другую проблему.
Также про aaAlarmClient, но отображающий исторические алармы.

aaAlarmClient к БД коннектится нормально, отображает всю историю Алармов из БД SQL

histalarms.jpg
(116.59 КБ) Скачиваний: 0

Каждый аларм в системе принадлежит какой-либо группе из списка Alarm Groups, согласно принадлежности к тому или иному производственному объекту.
Для отображения алармов какой-то одной группы применяю условно переключатели:

Код: Выделить всё
AlarmClient1.AlarmQuery = "\InTouch!$System";
AlarmClient1.Requery();


Код: Выделить всё
AlarmClient1.AlarmQuery = "\InTouch!Vivarka";
AlarmClient1.Requery();


(На самом деле при открывании нужной страницы списку AlarmClient вышеуказанными командами задаётся отобразить нужную группу алармов)

Проблема: Каждый вызов команды
Код: Выделить всё
AlarmClient1.Requery();
приводит к ошибке и список не сортируется по группам:

error.jpg
(105.72 КБ) Скачиваний: 0

Непонятно почему AlarmClient пытается обратиться к БД "Runtime", я такую БД не создавал и не ссылался на неё.

(Historian не приобретена, пользуемся встроенным инструментом Алармов с сохранением в БД SQL).
В начале проекте по незнанию создал Галактику, но не пользовался ей, СКАДА работает автономно на одном компьютере. Может в этом причина.
npp
 
Сообщения: 27
Зарегистрирован: Пт июн 08, 2018 1:27 pm

Re: AlarmClient - квитирование аварий

Сообщение npp » Пт фев 04, 2022 11:08 pm

Решение вопроса:
1. Вышеуказанная ошибка при запросе Query есть баг Интача. Установка нужного хотфикса от производителя ПО решает этот вопрос.
2. Для задания фильтров в списке исторических алармов (AlarmClient) можно использовать два метода:

а) RunQuery()
AlarmClient.RunQuery(QueryName, ApplyAsFilter);
Пример:
AlarmClient.RunQuery("Query_Group1", false);

б) QueryFilter
AlarmClient.QueryFilters.DefaultFilter.FilterCriteria="(Provider='InTouch' AND Group='Group1')";
AlarmClient.Requery();
npp
 
Сообщения: 27
Зарегистрирован: Пт июн 08, 2018 1:27 pm


Вернуться в Другое

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

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