Как работать с AddEvent ?

Просмотр 15 сообщений - с 1 по 15 (из 17 всего)
  • Автор
    Записи
  • #4783
    manjey73
    Участник

    Как добавить запись, чтобы она попала в события через AddEvent ?

    просто текст не принимает, а как сформировать так и не разобрался.

    #4792
    Mikhail
    Модератор

    Пример здесь.

    #4794
    manjey73
    Участник

    KPEvent kpEvent = new KPEvent(DateTime.Now, Number, KPTags[0]); // что есть Number и KPTags[0] ? собственно почему 0 из массива, туда надо подставлять свой номер тега при обработке события ? А Number тогда что ?
    kpEvent.Descr = «Test event » + random.Next(100); // random.Next(100) — что тут 100 ?
    AddEvent(kpEvent);
    CommLineSvc.FlushArcData(this); // это передает Event в сервер из драйвера ?

    #4796
    Mikhail
    Модератор

    Изучите код класса, который Вы используете. Ссылка 1, ссылка 2, ссылка 3. В комментариях в коде есть ответы на Ваши вопросы. Используйте возможности поиска GitHub или Visual Studio.

    #4801
    manjey73
    Участник

    Немного разобрался, но осталось непонятным
    1. Как изменить цвет События из драйвера ?
    2. Требуется привязка к Тегам, без привязки к тегам есть возможность вывести Событие ?

    #4802
    manjey73
    Участник

    На примере счетчика.
    В ответе счетчик посылает коды ошибок, если они есть, записывать их в лог не проблема.
    Как вывести текст ошибки в События ? Если такой функционал БЕЗ создания каких либо дополнительных каналов ? (так как это просто глупо, создавать каналы и хранить их в базе, если в них нет прямой необходимости).
    Например счетчик выдает ошибки:
    Все Ок
    Недопустимая команда или параметр
    Внутренняя ошибка счетчика
    Не достаточен уровень доступа
    Не открыт канал связи

    + к этому добавляется вообще наличие связи, то есть когда прибор просто перестает отвечать.
    В лог вывожу через case.
    Если ли возможность не создавая каналов связи выдать Событие с текстом, взятым так же через case ?
    Вообще есть ли какие-то служебные команды, которыми можно было бы оперировать для генерации События ?

    #4803
    manjey73
    Участник

    https://s21.postimg.org/uw3s9v21j/image.jpg

    Не могу понять закономерности, как драйвер иногда вытягивает в События именно из базы ?

    for (int zn = 0; zn < nparc[f]; zn++)
    {
    if (nbwri[f] == 0x10 && !eventcnl)
    {
    // генерация события
    KPEvent kpEvent = new KPEvent(DateTime.Now, Number, KPTags[tag — 1]);
    //kpEvent.Descr = ToLogString(buf_in[1]);
    kpEvent.Descr = «Отключение питания»;
    AddEvent(kpEvent);
    CommLineSvc.FlushArcData(this);
    SetCurData(tag — 1, 0, 16);
    tag++;
    if (zn == nparc[f] — 1) eventcnl = true;

    }
    else
    {
    SetCurData(tag — 1, 0, 0);
    tag++;
    }

    16 — это Событие в базе — «Отключение сети»

    #4804
    Romiros
    Участник

    manjey73 я правильно понял, что скада позволяет писать свой собственный текст событий без создания их в БД?
    Научите потом, если получится?

    #4805
    manjey73
    Участник

    Да, она то пишет, но только с привязкой к тегам.
    Собственно ссылку на пример Михаил дал выше. https://github.com/RapidScada/scada/blob/e580aed6171fa3ca2dd85804468eb1bee4e31193/ScadaComm/OpenKPs/KpTest/KpTestLogic.cs

    List<TagGroup> tagGroups = new List<TagGroup>();
    TagGroup tagGroup = new TagGroup(«Group 1»);
    tagGroup.KPTags.Add(new KPTag(1, «Tag 1»)); // Это как раз KPTags[0], следующий 1 и так далее

    // генерация события
    KPEvent kpEvent = new KPEvent(DateTime.Now, Number, KPTags[0]); // нулевой индекс из массива тегов. Из списка List
    kpEvent.Descr = «Ваш текст»);
    AddEvent(kpEvent);
    CommLineSvc.FlushArcData(this);

    Собственно все, только ведет себя неадекватно, никак не могу последовательность действий понять, когда у меня выдергивается текст из базы Типы Событий.
    То «Ваш текст» печатает, то из базы берет как на скрине.

    Это все в драйвере для устройства.
    SCADA сама по себе не знаю, может ли создать подобное Событие, кроме заложенных По изменению, По неопределенному значению и проверкой на уровни. Наверное как-то формулами можно, но не пробовал еще.

    • Ответ изменён 9 лет, 7 месяцев назад пользователем manjey73.
    • Ответ изменён 9 лет, 7 месяцев назад пользователем manjey73.
    #4808
    Romiros
    Участник

    Мне в драйвере и надо. Спасибо за ответ. А время события можно генерировать? Если я буду тянуть какой-нибудь архив событий например?

    • Ответ изменён 9 лет, 7 месяцев назад пользователем Romiros.
    #4810
    Romiros
    Участник

    Судя по коду можно 🙂

    #4811
    manjey73
    Участник

    DateTime.Now так это и есть генерация времени события.

    #4813
    Mikhail
    Модератор

    1. Как изменить цвет События из драйвера ?

    Цвет определяется статусом тега (канала).

    2. Требуется привязка к Тегам, без привязки к тегам есть возможность вывести Событие ?

    Попробуйте передать null вместо ссылки на тег и посмотрите, что будет (я не помню).
    Я в таких случаях заводил тег Событие и на него писал события из драйвера. Довольно удобно.

    #4814
    Mikhail
    Модератор

    Если Вы указываете текст события явно из кода, то на веб-странице отображается этот текст. Если текст не указан (пуст), то текст события генерируется автоматически на основе статуса и значения. Этот момент хотелось бы расширить, чтобы указывать формат вывода, но сейчас так.

    #4815
    Mikhail
    Модератор

    DateTime.Now — просто текущее время, а можете любое другое задать.

Просмотр 15 сообщений - с 1 по 15 (из 17 всего)
  • Для ответа в этой теме необходимо авторизоваться.