Отказ от ответственности.
Написанное относится к 16-й версии и опубликовано очень поздно.
В 17 версии был расширен функционал и добавлена возможность прошить хотя бы динамический диалог цвета фона или интерфейса -> свойство базового цвета.
Когда вышла WinCC Unified, меня сразу зацепило.
Обладая, с точки зрения прикладного программиста, функционалом, близким к WinCC Professional, он продается по цене, сопоставимой с WinCC Advanced. Полноценная работа со скриптами, полноценная подсистема сигнализации, клиент-серверная архитектура «из коробки», не требующая дополнительной лицензии и многое другое — это здорово.
Однако, как это часто бывает с совершенно новым программным обеспечением, некоторые вещи поначалу вызывают легкое недоумение.
И именно организация визуализации «мигания», при которой цвет графического объекта меняется с определенной частотой (например, с серого на зеленый при визуализации запуска двигателя), вызывает это самое недоумение.
Дело в том, что цвет объекта можно динамизировать тегом, скриптом или «миганием», но, несмотря на то, что Flashing относится к динамизации с точки зрения редактора, он задается статически.
При такой динамизации задаются основной и «альтернативный» цвета, частота мигания и условия – «никогда», «всегда» и «нарушение диапазона».
Какое нарушение, неясно.
В общем, на данный момент в системе есть какое-то очень досадное ограничение, которое приходится обходить с помощью старых добрых костылей.
Для упрощения представим отображение состояния технологического узла в следующей цветовой схеме: -disabled: серый (тег StateRunning поступает от контроллера, если true, то включен, если false, то отключен) -включено: зеленый -включается (тег запуска с контроллера) или выключается (тег остановки): мигает серым и зеленым.
Да, я знаю, что нужно еще добавить аварийную и, возможно, неготовность и режим "технического обслуживания", а включенное/выключенное состояние можно будет отображать двумя тегами, но это учебный пример, а не боевой.
Для мнемосхемы насоса я использую динамический виджет «Насосы → HeavyDutyPlasticCentrifugalPump» из стандартной библиотеки, он мне очень нравится.
Объекты этого типа позволяют задать основной цвет.
Первый способ решения проблемы был проще в реализации и сразу пришел на ум.
Необходимо создать несколько копий одного объекта, задать ему статический цвет или мигание и показывать на мнемосхеме одновременно только один, наиболее актуальный.
Ну, например, если движок запускается, то нам следует отобразить копию с настроенным BasicColor=flashing, а остальное скрыть, поигравшись со свойством Visible. Вот настроенные три объекта.
Далее свойство «видимость» каждого объекта необходимо динамизировать с помощью следующих скриптов.
Для каждого из скриптов не забудьте указать триггеры для срабатывания.
Второй способ менее очевиден, но мне кажется более красивым.
Он заключается в использовании дополнительной переменной, значение которой меняется через определенные промежутки времени (от true до false и обратно).
Планировщик задач (он же планировщик, он же «планировщик») в WinCC Unified позволяет выполнять задачи с периодом 100 миллисекунд, но нам подойдет и второй цикл.
Создаём внутреннюю переменную типа BOOL
Мы создаем скрипт, который запускается каждую секунду.
Мы берем один экземпляр SVG, использованный в первом примере, и динамизируем свойство BasicColor с помощью следующего скрипта.
Триггер для этого скрипта следующий:
Этот метод имеет как преимущества, так и недостатки.
К преимуществам, конечно же, можно отнести использование всего одного графического объекта вместо нескольких копий с разными статическими свойствами.
Недостатки: дополнительная вычислительная нагрузка.
Учитывая, что тег «второй» является триггером для сценария, весь сценарий будет выполняться каждую секунду, независимо от того, изменилось фактическое состояние оборудования или нет. Теги: #Промышленное программирование #scada #siemens #simatic #wincc
-
Оповещение О Письмах Через Смс
19 Oct, 24 -
Offer.io: На Пути К Идеальному Поиску
19 Oct, 24 -
Yiiconf 2012, Киев
19 Oct, 24 -
Riaa Попробует Еще Раз
19 Oct, 24