13
Итак, вот интерфейс программы, над которой работал продолжительное время и которая работает на десятке машин непрерывного литья заготовок на разных комбинатах в нашей стране и за рубежом. Представлен техмониторинг, который способен обслуживать/отображать состояние нескольких контроллеров, которые осуществляют сбор, обработку данных, их выдачу (в том числе в АСУ машины, а также на локальные пульты с графическим интерфесом) и запись в базу данных. Это отдельная тема, но ее мы сейчас не касаемся.
Все настройки и свойства, описанные ниже, загружаются из контроллера.
- температурное поле кристаллизатора и тренды столбца
- Тренды термопар. Показан момент возникновения аварийной ситуации
- Температурное поле слитка в момент возникновения аварийной ситуации
- Вкладка отображения состояния комплекса технических средств системы
- Вкладка выдачи предупредительных сигналов
- Вкладка принудительной установки сигналов
- Служебная вкладка, доступная по специальному коду. Позволяет проимитировать работу системы. Название ручья при этом заменяется на имя архива - фальсификация работы (подмена реальных данных архивом) невозможна.
- Настройки кристаллизатора
- Настройки готовностей
- управление файлами конфигураций контроллера
- управление исполняемыми файлами контроллера
Основные решенные задачи:
- отображение температурного поля кристаллизатора, в соответствии с его геометрическими размерами и с учетом расположения термопар на его стенках (основная проблема в том, что размеры активной зоны кристаллизатора могут быть изменены в процессе работы и также часть термопар могут попадать в неактивную зону, что учитывает алгоритм). Мною разработан Xcontrol, который согласно описанию и фактическим данным, отрисовывает интерполированное распределение температуры по кристаллизатору, одновременно с этим показывающий состояние исправности термопар. Также этот компонент способен показывать тренды нескольких типов поведения термопар за 5 минут. Выбор столбца производится кликом по температурному полю.
- отображение трендов столбцов термопар. В отличие от решений иностранных конкурентов, которые использовали статические графики (неиспользуемые группы делаются серыми), мною разработан компонент, который я выставил на конкурс ранее. У нас используется одно ПО, конкуренты для каждой МНЛЗ делают свой вариант, в том числе из-за того, что их инструменты не дают возможности делать такие вещи.
- отображение прохождения температурных фронтов по заготовке. Пока у нас наиболее ясное отображение критического процесса, о появлении которого сигнализирует алгоритм, останавливая машину и предотвращая аварию (естественно, алгоритм не ориентируется на картинку, а совсем наоборот). Мной разработан принцип преобразования мгновенных значений температур в разных точках неподвижного кристаллизатора в изображение температурного фронта движущегося через него слитка.
- отображение состояния подключенных контроллеров, разбитых на группы. Это позволяет предельно точно локализовывать возникающие проблемы (все изменения состояния записываются в базу данных, поэтому есть возможность проводить ретроспективный анализ поведения системы). При подключении контроллера слепок текущего состояния передается в техмониторинг, все изменения также в реальном времени отдаются в техмониторинг. В Tree отображаются состояния всех подключенных контроллеров.
- контроль готовности системы (сами готовности обсчитывает контроллер) и ее подсистем с визуализацией ошибок
- встроенные средства тестирования работы системы, проверки прохождения сигналов и принудительной подмены показаний компонентов (с регистрацией в базе этих фактов) - необходимы для того, чтобы персонал был уверен в том, что все компоненты системы работоспособны. Особенно актуально для системы предотвращения аварий. Также позволяет обеспечить функционирование системы в случае выхода из строя некритичных подсистем, а также части датчиков. И что особенно важно - резко облегчает пуско-наладочные работы.
- прогон через контроллер архивов с ситуациями. Позволяет облегчить обучение персонала, реально, на всей системе (включая пульты и аварийную сигнализацию) имитируя редко возникающие критические ситуации, которые не так просто поймать и тем более создать (не всякий проверяющий технолог на это пойдет, ибо допущенная авария тянет на сумму с 6+ нулями)
- настройка параметров контроллеров, с разбивкой на подсистемы. Сама гибкость настроек контроллера (зафиксированы только группы подсистем. Каналы, конфигурация наборов данных каждой из подсистем могут быть сильно произвольными, написана поддержка Modbus, S7TCP, MySQL - даже для входных данных, файлы и тд) - это также отдельная тема.
- управление файлом конфигурации контроллеров (автоматическое создание резервной копии при любых манипуляция, загрузка и выгрузка)
- управление исполняемым файлом, аналогично файлу конфигурации, позволяет защитить процесс обновления ПО контроллеров от грубых и невосполнимых ошибок.
- передача разработчику информации о проблемах, возникающих в процессе эксплуатации системы (в том числе о возникающих неисправностях оборудования)
Особенности реализации:
- для отображения теплового поля выбрана модель с четырьмя цветами. Обычно используют еще пурпурный и черный. Но я считаю, что с точки зрения "радуги", эти два цвета не вписываются. Считается, что нужно минимизировать количество цветов.
- при наведении курсора на термопару показывается хинт и надпись под картинкой с атрибутами термопары. Кстати, все это хозяйство нарисовано в Picture.
- тренды температур не масштабируются, но для того, чтобы показывать максимум информации, шкала смещается. Т.е диапазон шкалы 70 или 100 градусов, контролируется максимальная температура за время отображения (интересны для наблюдения именно верхние значения) и при ее изменении смещается шкала. Например максимальная температура за последние 120 сек составляет 95град. Значит, шкала теплового поля будет 30..100 град, а шкала трендов 0..100. Таким образом масштаб сохраняется постоянным, независимо от стабильности температур.
- распределение температур по слоям сделано следующим образом: средние значения рисуются зеленым - они сверху, а мгновенные - красным. При нестационарном поведении температур, красные графики "вылезают" из под зеленых и сразу видно, где происходят изменения.
- поле слитка реализовано на Intensity Graph. Красному цвету соответствует нагрев, синему - охлаждение.
- при возникновении аварийной ситуации индикаторы "Начало подвисания" и "Подвисание" начинают моргать, поэтому на двух картинках они разного цвета (так попал). Также голосом на динами выводится соответствующее предупреждение, которое повторяется до тех пор, пока ситуация не придет в норму.
- отображение состояния технических средств системы разбито на дерево состояния. Т.е в любой момент видно, что происходит с каждой подсистемой, в отличие от лога, у которого события сортируются по времени. Одновременно с этим не требуется переработка интерфейса, если в систему добавляется отображение какого-то нового события, либо оно изменяется, в отличие распространенного варианта - рисование картинки с лампочками