В прошлый раз мы рассмотрели, как можно открыть дополнительные окна в WinCC OA. Теперь приступим к созданию полноценного интерфейса операторской системы.
Как правило, в АСУ ТП система оператора состоит из области навигации (перехода между мнемосхемами), расположенной в верхней части экрана, основного рабочего поля и области сигнализации, расположенной в нижней части.
Создаем Главную панель, в которую будем встраивать остальные компоненты.
Делаем его размер больше размера панели закрылков.
С помощью Cut and Paste (вырезать/вставить) перемещаем панель сигнализации с панели закрылков на главную панель и регулируем размер панели сигнализации.
Давайте создадим кнопки для открытия панелей «Закрылки» и «Тенденции».
Осталось определить основную рабочую зону, где будут располагаться основные мнемосхемы.
В WinCC OA эта рабочая область называется Embedded Module (можно провести аналогию с Screen Window или Picture Window портала или классической WinCC).
Embedded Module буквально означает «Встроенный модуль».
Если в предыдущей части был создан некий внешний модуль, то в этом примере в панель интегрирован модуль, предназначенный для отображения панелей.
Встроенный модуль расположен среди инструментов графического редактора.
Разместим его на свободном месте Главной панели.
Сразу после размещения система предлагает установить анимацию, с которой будут открываться новые окна.
Можешь спрашивать, а можешь нет. Давайте пока обойдемся без излишеств, анимацию не ставим.
Здесь возникает еще один тонкий нюанс.
Каждый графический объект и, конечно же, каждый модуль в системе должны иметь свое уникальное имя.
По причинам, известным только разработчикам, имя вновь созданного модуля, с помощью которого скрипты (и мастера, также создающие скрипт на выходе) могут с ним работать, задается не на вкладке Стандартные редактора свойств, а на вкладке Стандартные.
Расширенная вкладка.
Ниже приведен скриншот вкладки «Пуск».
Там написано, что имя модуля — EMBEDDED_MODULE1, и это неправильное имя.
Это неправильное имя Правильное имя модуля находится на другой вкладке, и в моем случае по умолчанию используется Vision_1.
Давайте переименуем этот встроенный модуль и дадим ему имя Module. Предвидя вопросы о том, что модуль с таким названием у нас уже есть, отвечу, что по предыдущей схеме с созданием модуля "Модуль" в скрипте кнопки мы больше работать не будем, хотя вопрос, конечно, хороший и правильный.
.
Теперь нужно настроить действия по нажатию кнопок FLAPS и TRENDS. Устанавливаем событие Clicked, работаем в текстовом режиме (в этот раз не с помощью мастера).
Нам нужна функция RootPanelOnModule. Можно и нужно использовать автоподстановку.
Например, сейчас я набрал текст RootPanel и нажал кнопки CTRL+TAB.
Если функция выделена синим цветом, то все в порядке.
Если он черный, значит в названии функции ошибка.
Не забывайте, что регистр в имени функции также играет роль.
Первый параметр этой функции — имя панели.
У меня это «Flaps.pnl».
Второй параметр — название панели, пусть это будет «Закрылки».
Далее идет имя модуля, мы его просто задали «Модуль».
Последний параметр функции — это параметры, передаваемые непосредственно в панель.
Тип этой переменной — dyn_string — динамический массив строк неопределенного размера.
Теперь мы не будем передавать никаких дополнительных параметров, но это значение необходимо указать.
Объявим переменную типа dyn_string и укажем ее в вызове функции открытия панели.
Получаем следующий код открытия окна
Скрипт для кнопки ТЕНДЕНЦИИ выглядит аналогично.
Я хотел бы отметить, что модуль является независимой сущностью.
Неважно, где находится этот модуль, создан ли он как отдельное окно или интегрирован в другую панель, он остается модулем.
Следовательно, в пределах одного пользовательского интерфейса имя модуля должно быть уникальным.
Внесем косметические изменения в панели «Закрылки» и «Тренды», удалим ненужные элементы (панель сигналов и кнопку справа) и изменим размер панелей.
Запускаем на исполнение окно Main.pnl и проверяем поведение кнопок FLAPS и TRENDS. Все должно работать.
Если не помогло, ищите ошибки.
Теги: #Промышленное программирование #scada #siemens #simatic #wincc
-
Концепция Mast В Биткойне
19 Oct, 24 -
Тест Лимончелли
19 Oct, 24 -
Сколько Денег Вы Тратите На Запуск Стартапа?
19 Oct, 24 -
Радио-У №18
19 Oct, 24