Пример панели управления

Ниже представлен пример создания простой панели управления в проекте SimInTech, обменивающейся данными со Схемным окном. В исходном проекте имеется три одинаковых блока, являющихся графическими группами с двумя глобальными свойствами:

Название Имя Значение
Вход 1 input_value 0
Подпись блока label текст

Рисунок 1. Глобальные свойства блоков "Group..."

Рисунок 2. Исходный вид Схемного окна

В данных блоках заложена следующая логика. Если значение input_value блока равно нулю, то цвет табло жёлтый, а внутри табло отображается текст «Отключено». Если же значение input_value равно 1, то цвет табло зелёный, а внутри табло отображается текст «Включено». Текстовое свойство label предназначено для подписи блоков и по умолчанию содержит подпись "текст". Новая подпись блока в Схемном окне отобразится при очередном запуске расчета (Схемное окно должно находиться в режиме "Индикация").

Наша задача состоит в том, чтобы создать в данном проекте одну панель управления для всех трёх блоков, переключающую значение глобального свойства input_value выбранного блока между двумя описанными вариантами: 0 и 1. При этом при вызове панель управления должна содержать текст, указанный в подписи вызвавшего её блока и текущее значение свойства input_value этого блока.

Рисунок 3. Пример внешнего вида панели управления при вызове из блока «Group1» с подписью «блок №1»

Сначала подпишем блоки. Для этого нужно выделить один из блоков и по клику ПКМ вызвать контекстное меню и выбрать в нем пункт «Свойства объекта». В открывшемся окне свойств во вкладке «Общие» нужно найти пункт «Подпись блока» и вместо слова «текст» вписать какую-нибудь уникальную подпись, например, «блок №1». Затем нужно повторить эту операцию с двумя оставшимися блоками. Для обновления попдисей в схемном окне надо запустить и остановить расчёт, предварительно переведя Схемное окно из режима «Редактирование» в режим «Индикация». Примерный вид Схемного окна на данном этапе приведен ниже.

Рисунок 4. Вид Схемного окна после изменения подписей блоков "Group..."

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

В меню Главного окна SimInTech выбрать пункт «Расчёт → Менеджер данных...». Откроется одноимённое окно.

Рисунок 5. Окно «Менеджер данных»

Данное окно также можно вызвать с панели главного окна SimInTech по нажатию на кнопку .

Так как в нашем проекте ещё не создано категорий, то сначала нужно создать категорию, нажав кнопку «Добавить категорию» на панели инструментов окна «Менеджер данных». Будет создана новая категория. Затем нужно выделить только что созданную категорию и создать окно анимации, нажав кнопку «Окно анимации».

Рисунок 6. Добавление окна анимации в «менеджере данных»

Созданное окно можно вызвать по двойному клику на его имени в окне «Менеджер данных». Одновременно откроется панель графических примитивов SimInTech.

Рисунок 7. Результат вызова панели управления из «менеджера данных»

Изменим название нашей панели управления на «Переключатель». Для редактирования названия можно выделить пункт с названием панели управления в Менеджере данных и нажать клавишу [F2], либо выбрать пункт «Переименовать» в конеткстном меню.

Данная панель управления должна вызываться каждым из трех объектов «Group…». Для организации вызова нужно открыть окно свойств одно из наших объектов «Group…» и в строке свойства «Ссылка» нажать кнопку .

Рисунок 8. Свойство «Ссылка» объекта «Group...»

Откроется окно «Выбор ссылки», в котором нужно выбрать пункт «Панели управления ® Переключатель» и нажать кнопку «Ок». Опция «Режим показа формы» должна иметь значение «Управление объектом».

Рисунок 9. Выбор объекта, вызываемого по ссылке

Вернемся к окну свойств объекта «Group…» и установим свойство «Действие для вывода ссылки / InstanceMode» в значение «Щелчок правой копкой».

Рисунок 10. Выбор варианта активации ссылки

Для двух оставшихся объектов нужно повторить изменение свойств «Ссылка» и «Действие для вывода ссылки».

Для проверки работоспособности ссылки переведем Схемное окно из режима «Редактирование» в режим «Индикация» по кнопке / на панели инструментов Схемного окна и запустим расчет проекта по горячей клавише [F9] или по кнопке на панели инструментов Главного окна. Если ссылка функционирует правильно, то по клику ПКМ на любом из объектов «Group…» должно вызваться окно нашей панели управления. Для продолжения работы расчет нужно остановить сочетанием горячих клавиш [Shift]+[F9] или по кнопке на панели инструментов Главного окна.

Теперь наполним новую панель управления графическими примитивами и зададим для них основные свойства. Если панель управления закрыта, для её вызова нужно открыть окно «Менеджер проекта» и вызвать нашу панель управления по двойному клику на ее названии.

Примитив «Текст» для отображения значений глобального свойства input_value выбранного блока:

Рисунок 11. Настройка свойств примитива TextLabel

Примитив «Текст» для отображения подписи выбранного блока:

Рисунок 12. Настройка свойств примитива TextLabel1

Примитив Кнопка для переключения значений input_value между 0 и 1:

Рисунок 13. Настройка свойств примитива Button

Примитив «Кнопка» обладает свойством Value, которое отсутствует в перечне свойств, однако оно может использоваться в скрипте. Значения этого свойства изменяются при каждом нажатии и отжатии кнопки. Значение при отжатой кнопке задается в свойстве «UpValue», а при нажатой – в свойстве «DownValue».

Примитив Линия для визуального оформления панели управления:

Результат должен выглядеть аналогично изображению, приведенному в начале данного примера.

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

Итак, перед нами стоит задача отображать текущие значения свойств «Вход 1» и «подпись блока», соответствующих блоку, вызвавшему панель управления, а также по нажатию кнопки в панели управления изменять значение свойства «Вход 1» (оно же «input_value») между 0 и 1. Первая задача решается добавлением в панель управления глобальных свойств, одноименных свойствам исходного объекта, и последующим связыванием этих свойств со свойствами текстовых примитивов. Тогда при вызове панели управления эти свойства будут автоматически получать значения одноименных свойств объекта, вызвавшего панель управления. Чтобы добавить глобальные свойства в панель управления нужно вызвать соответствующий редактор из меню окна панели управления: «Сервис ® Глобальные свойства…». Откроется окно редактора.

Рисунок 14. Редактор глобальных свойств

Добавим свойства «Вход 1» и «Подпись» с параметрами, приведенными на изображении ниже.

Рисунок 15. Параметры добавляемых глобальных свойств панели управления

Для установления связи между глобальными свойствами панели управления и свойствами графических примитивов проще всего воспользоваться редактором связей, который вызывается из меню окна панели управления: «Сервис → Связи…». Откроется окно редактора связей.

Рисунок 16. Редактор связей

Сначала в левой части окна нужно выбрать вкладку «Общее свойство», в которой отобразится список добавленных ранее глобальных свойств. Оба этих свойства нужно перетащить мышью в правую часть окна, в колонку «Источник».

Рисунок 17. Выбор глобальных свойств в качестве источников значений

Затем переключимся на вкладку «Объект» и, поочередно выбирая в окне панели управления примитивы TextLabel и TextLabel1, перетащим в колонку «Приемник» из появляющихся списков свойств этих примитивов те, которые должны принимать значения указанных глобальных свойств. В случае TextLabel нужно установить связь между его свойством Values и глобальным свойством input_value, а в случае TextLabel1 между его свойством Text и глобальным свойством label.

Рисунок 18. Добавление свойства TextLabel.Values в качестве приемника значений input_value

Рисунок 19. Добавление свойства TextLabel1.Text в качестве приемника значений label

Вторая задача требует написания скрипта в панели управления, реализующего требуемую логику. Для вызова редактора скриптов в панели управления нужно выбрать в меню окна панели управления пункт «Сервис → Скрипт…». Откроется окно редактора скриптов.

Рисунок 20. Редактор скриптов

Текст скрипта:

initialization
Button.value = input_value;
End;
if Button.value = 0 
then Button.down = 0 //Кнопка отжата
else Button.down = 1; //Кнопка нажата
input_value = Button.value;

Секция «initialization – end» выполняется один раз при каждом вызове панели управления. Т.е. при последовательном вызове панели управления из наших объектов «Group1», «Group2», «Group3» она каждый раз будет переинициализироваться даже если пользователь не будет закрывать окно панели управления перед новым вызовом. В этой секции происходит считывание текущего значения глобального свойства input_value в значение управляющей кнопки Button.value. Несмотря на то, что данное свойство отстутствует в списке свойств этого графического примитива, оно может использоваться в скрипте. Код, следующий за этой секцией, будет выполняться постоянно, пока панель управления открыта из одного объекта. В нём по текущему значению свойства Button.Value устанавливается соответствующее изображение кнопки (нажата или отжата), а затем происходит передача текущего значения кнопки обратно в глобальное свойство input_value, которое в свою очередь изменит значение свойства объекта «Group...», вызвашего панель управления. По окончании редактирования скрипта окно редактора следует закрыть нажатием кнопки на панели инструментов.

Теперь можно запустить расчет и проверить работу нашей панели управления.

Ниже приведена иллюстрация информационных связей, реализованных в данном примере.

Рисунок 21. Схема связей, реализованная в данном примере