Как Организовать Прошивку Графического Объекта На Wincc Unified V16

Отказ от ответственности.

Написанное относится к 16-й версии и опубликовано очень поздно.

В 17 версии был расширен функционал и добавлена возможность прошить хотя бы динамический диалог цвета фона или интерфейса -> свойство базового цвета.

Когда вышла WinCC Unified, меня сразу зацепило.

Обладая, с точки зрения прикладного программиста, функционалом, близким к WinCC Professional, он продается по цене, сопоставимой с WinCC Advanced. Полноценная работа со скриптами, полноценная подсистема сигнализации, клиент-серверная архитектура «из коробки», не требующая дополнительной лицензии и многое другое — это здорово.

Однако, как это часто бывает с совершенно новым программным обеспечением, некоторые вещи поначалу вызывают легкое недоумение.

И именно организация визуализации «мигания», при которой цвет графического объекта меняется с определенной частотой (например, с серого на зеленый при визуализации запуска двигателя), вызывает это самое недоумение.

Дело в том, что цвет объекта можно динамизировать тегом, скриптом или «миганием», но, несмотря на то, что Flashing относится к динамизации с точки зрения редактора, он задается статически.



Как организовать прошивку графического объекта на WinCC Unified V16

При такой динамизации задаются основной и «альтернативный» цвета, частота мигания и условия – «никогда», «всегда» и «нарушение диапазона».

Какое нарушение, неясно.

В общем, на данный момент в системе есть какое-то очень досадное ограничение, которое приходится обходить с помощью старых добрых костылей.

Для упрощения представим отображение состояния технологического узла в следующей цветовой схеме: -disabled: серый (тег StateRunning поступает от контроллера, если true, то включен, если false, то отключен) -включено: зеленый -включается (тег запуска с контроллера) или выключается (тег остановки): мигает серым и зеленым.



Как организовать прошивку графического объекта на WinCC Unified V16

Да, я знаю, что нужно еще добавить аварийную и, возможно, неготовность и режим "технического обслуживания", а включенное/выключенное состояние можно будет отображать двумя тегами, но это учебный пример, а не боевой.

Для мнемосхемы насоса я использую динамический виджет «Насосы → HeavyDutyPlasticCentrifugalPump» из стандартной библиотеки, он мне очень нравится.



Как организовать прошивку графического объекта на WinCC Unified V16

Объекты этого типа позволяют задать основной цвет.

Как организовать прошивку графического объекта на WinCC Unified V16

Первый способ решения проблемы был проще в реализации и сразу пришел на ум.

Необходимо создать несколько копий одного объекта, задать ему статический цвет или мигание и показывать на мнемосхеме одновременно только один, наиболее актуальный.

Ну, например, если движок запускается, то нам следует отобразить копию с настроенным BasicColor=flashing, а остальное скрыть, поигравшись со свойством Visible. Вот настроенные три объекта.



Как организовать прошивку графического объекта на WinCC Unified V16



Как организовать прошивку графического объекта на WinCC Unified V16



Как организовать прошивку графического объекта на WinCC Unified V16

Далее свойство «видимость» каждого объекта необходимо динамизировать с помощью следующих скриптов.



Как организовать прошивку графического объекта на WinCC Unified V16



Как организовать прошивку графического объекта на WinCC Unified V16



Как организовать прошивку графического объекта на WinCC Unified V16

Для каждого из скриптов не забудьте указать триггеры для срабатывания.



Как организовать прошивку графического объекта на WinCC Unified V16

Второй способ менее очевиден, но мне кажется более красивым.

Он заключается в использовании дополнительной переменной, значение которой меняется через определенные промежутки времени (от true до false и обратно).

Планировщик задач (он же планировщик, он же «планировщик») в WinCC Unified позволяет выполнять задачи с периодом 100 миллисекунд, но нам подойдет и второй цикл.

Создаём внутреннюю переменную типа BOOL

Как организовать прошивку графического объекта на WinCC Unified V16

Мы создаем скрипт, который запускается каждую секунду.



Как организовать прошивку графического объекта на WinCC Unified V16

Мы берем один экземпляр SVG, использованный в первом примере, и динамизируем свойство BasicColor с помощью следующего скрипта.



Как организовать прошивку графического объекта на WinCC Unified V16

Триггер для этого скрипта следующий:

Как организовать прошивку графического объекта на WinCC Unified V16

Этот метод имеет как преимущества, так и недостатки.

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

Недостатки: дополнительная вычислительная нагрузка.

Учитывая, что тег «второй» является триггером для сценария, весь сценарий будет выполняться каждую секунду, независимо от того, изменилось фактическое состояние оборудования или нет. Теги: #Промышленное программирование #scada #siemens #simatic #wincc

Вместе с данным постом часто просматривают: