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

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

СообщениеДобавлено: Пн мар 08, 2021 10:26 pm
npp
Добрые вечер!

Хочу квитирование алармов в Alarm Client сделать на внешней кнопке.
Есть ли хелп по этому компоненту? Не найду подходящий параметр в списке Data Binding.
Нужен параметр Alarm Client`а, содержащий имя тэга под курсором (Только для чтения). Также параметр, содержащий позицию курсора (для Read/Write). Подскажите кто знает.
По задумке курсор после нажатия кнопки квитирования должен появляться на первой строке списка алармов.
Нужно узнать тэг аларма, на который указывает курсор и сквитировать его методом записи true в поле тэга .Ack
Я в правильном направлении думаю?

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

СообщениеДобавлено: Чт сен 02, 2021 9:30 pm
dEVILoper
Дока по компоненту - Guide to the ArchestrA Alarm Control.
Быстрый поиск показывает (для примера имя контрола - AlarmClient):
1) Имя тега для выделенной строки:
Код: Выделить всё
AlarmClient.GetSelectedItem("Name")

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

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

где pos - нужная позиция строки для выделения, начиная с 0

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

СообщениеДобавлено: Сб сен 04, 2021 1:14 pm
npp
Добавил кнопку непосредственно во фрейм с AlarmClient
с командой
Код: Выделить всё
AlarmClient.Ack.Selected("");

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

СообщениеДобавлено: Сб сен 04, 2021 1:38 pm
npp
Пользуясь случаем, спрошу про другую проблему.
Также про 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).
В начале проекте по незнанию создал Галактику, но не пользовался ей, СКАДА работает автономно на одном компьютере. Может в этом причина.

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

СообщениеДобавлено: Пт фев 04, 2022 11:08 pm
npp
Решение вопроса:
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();