На сайте производителя есть пример C# реализации в MasterScada 3.10 квитирования в контроллере, но хотелось бы выяснить некоторые моменты.
С битом аларма проблем нет, реализуется с помощью штатного средства "событие" и в журналах всё корректно отображается.
А вот на бит квитирования штатного средства нет - квитирование мы сделали с помощью скриптов.
После реализации возникли сомнения по поводу оптимальности решения в плане производительности и стабильности среды исполнения.
Опишу подробнее.
Есть около 70 типов объектов, для которых есть по одному и более аларму.
Рассматривалось два пути организации алармов в ПЛК:
- в ПЛК объекту соответствует регистр словосотояния, в котором на каждый аларм отводится два бита - бит аларма и бит квитирования.
- в ПЛК выделяются отдельные регистры для алармов и регистры для квитирования, без ориентации на объекты.
Реализовали по первому пути.
В каждом объекте выполняется скрипт С#, который:
- квитирует аларм в журнале, если взводится бит квитирования в слове состояния,
- взводит бит квитирования, если оператор квитировал аларм в журнале.
Итого получаем 70 скриптов, большинство из которых однотипых.
В каждом скрипте фильтруется список сообщений, перебираются в цикле, проверяются атрибуты на квитирование и т.д.
Недостатки - затраты времени на разработку и падение производительности (нужно все время сканировать журналы на квитирование).
Второй путь кажется более производительным (обработка одним скрипом), но нет объектного подхода.
Подскажите, как оптимально реализовать данную задачу.
Не планируется штатное средство для решения этой задачи?