Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 18

Тема: Журнал в MasterSCADA

  1. #1

    По умолчанию Журнал в MasterSCADA

    каким образом из журнала событий объекта извлечь наличие и количество неквитированных сообщения для дальнейшего их использования? если несложно пожалуйста с примером. спасибо.

  2. #2

    По умолчанию

    ну наличие можно проверить при помощи фб "состояние окна сообщений", а вот количество... штатных средств не нашел. в техподдержку писали?
    Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).

  3. #3

    По умолчанию

    посмотрел фб "состояние окна сообщений". туда валится все по всей системе. а хотелось бы иметь некий фб или скрипт, привязанный к конкретному объекту, по переменным которого можно было бы судить о наличии неквитированных сообщений. причем неквитированных не только системой, т.е. нет конца события, но и квитированных системой (процессом), но неквитированных (просмотренных) оператором.
    тут на мой взгляд существует задвоение терминов. например, в фб "состояние окна сообщений" неквитированными считаются сообщения не имеющими "конца". а оператор там вообще не причем.

  4. #4

    По умолчанию

    свяжитесь с техподдержкой. после ухода мамотовой оперативность ответов у них конечно снизилась, но отвечают.
    поговорят с программистами, либо добавят в следующей версии, либо скажут по каким процедурам обращаться, чтобы свой блок написать.
    Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).

  5. #5

    По умолчанию

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

  6. #6

    По умолчанию

    ну тут может еще сезон отпусков сказывается...
    я вообще в инсат пишу если баги обнаруживаю или предложения если есть. с проблемами сам справляюсь. а так, можете задавать вопросы здесь, думаю на 90% получите ответы.
    а задавали им вопрос насчет неквитированных сообщений?
    Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).

  7. #7

    По умолчанию

    Задавал. Но ответа пока не получил. Кое что нашел в примерах:
    var alarms = HostFB.TreeItemHlp.Project.AlarmManager;
    var filter = new EventFilterData();
    filter.OnlyNotAcked (или OnlyActual)= true;
    var events = alarms.GetEvents(HostFB.TreeItemHlp.Parent, filter, 100);
    events.Count - количество тех самых сообщений, определенные фильтром. 100 - размер массива событий.
    Было бы хоть мало мальское описание объектов и их методов, вопросов было бы гораздо меньше.

  8. #8

    По умолчанию

    Я хотел еще в пятницу сделать, но времени не было, только сейчас освободился.
    Ну вот. Ваш пример вообщем рабочий. Нужно только чуть-чуть кое что подправить.
    Делаем так. Вставляем модуль "скрипт". Создаем переменную "запись" типа "целое" или вещественное это и будет наш выход. Ну и собственно код:
    public partial class ФБ : ScriptBase
    {
    public override void Execute()
    {
    var alarms = HostFB.TreeItemHlp.Project.AlarmManager;
    var filter = new MasterSCADA.Hlp.Events.EventFilterData();
    filter.OnlyNotAcked = true;
    var events = alarms.GetEvents(HostFB.TreeItemHlp.Parent, filter, 100);
    Количество=events.Count(); // это непосредственно выход ФБ
    }
    }
    Проверил - нормально вроде работает. Опрос обязательно периодический!
    Последний раз редактировалось Sniper007; 26.06.2010 в 18:12.
    Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).

  9. #9

    По умолчанию

    все вроде бы работает нормально. для определения наличия сообщений достаточно вместо 100 поставить 1. а вот как определить наличие конкретного сообщения от переменной "событие". за активность, понятно, отвечает сама переменная. а наличие не квитирования?

  10. #10

    По умолчанию

    Александр. Ну во первых, надо однозначно написать в техподдержку, чтобы они реализовали такую функцию.
    Сейчас можно поступить так.
    Мы сформировали коллекцию event
    var events = alarms.GetEvents(HostFB.TreeItemHlp.Parent, filter, 100);
    теперь можно обращаться, к ее элементам используя индекс.
    Например:
    Параметр1=events[z].ConditionName; //тип - строка
    вернет нам имя элемента, имеющего неквитированную аварию, где z - индекс (номер в коллекции, нумерация с нуля). Только обращаться нужно когда в коллекции есть хотя бы одно сообщение. Проще говоря контролировать:
    if events.Count()>0 и после уже обращаться к коллекции
    Ну а дальше - дело техники. Можно через цикл перебрать всю коллекцию, и найти есть ли имя функционального блока в списке.
    Последний раз редактировалось Sniper007; 29.06.2010 в 13:26.
    Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •