Доброго времени суток коллеги!
Помогите пожалуйста лучше сориентировать на начальном этапе проекта. (первый проект на SimpleScada)
Дано: объект пищевой промышленности, разделенный на 3 идентичные части, за работу которого отвечают 3 контроллера (в каждом свой OPC; по контроллеру на каждую часть). В каждой части имеется 12 модулей с кучей датчиков, алярмов, контролов и установок (настроек) + агрегаторная (по 4 компрессора + обвязки с кучей датчиков, алярмов, контролов и установок (настроек)).
Что хочу: чтобы это работало на simpleScada.
Чего не хочу: говнокодить и копиппастить. Нет желания рисовать, грубо говоря, 36 одинковых форм.... (я такую ошибку по незнаю совершил когда HMI панель для модуля рисовал...12 форм... и в каждой что то менять...ужас)
До чего докопался:
Вариант первый: хотел использовать штатные Page и Subpage.
Но, как я понял, каждый Page и Subpage - это отдельные экземляры. Т.е. нельзя создать свой базовый Page/Subpage и при открытии скриптом просто подпихивать ему нужные мне переменные. Единственный Выход в таком случае это создавать свое Окно во весь экран и открывать его при переходе на SubPage и передавать ему переменные. но выглядит это костылем каким то...тем более что окно можно закрыть, а запретить закрытие не нашел как сделать (хотя было бы достаточно просто убрать "крестик"). Та и в общем при таком способе надо за многим следить...в общем костыль.
Вариант второй: Почти все тоже самое, ток на Page/SubPage рисовать кнопки открывающие соответствующие мне окна. Т.е. Останутся Page "Модуль 1" "Модуль 2" "Модуль 3" в них всего 3 почти одинаковых формы, на которых кнопками вызов Окна. Не так красиво как хотелось бы это выглядит... и одинаковые формы все равно остались в нескольких экземплярах...но зато без костылей вроде.
Но в обоих случаях возникает следующий вопрос: как я понял основным механизмом для определения того, с каким параметрами необходимо что необходимо открыть, является свойство "Тэг" у элементов. И тут у меня снова 2 выбора пока просматриваются:
1) Именовать переменные как block[1-3]_Camera[1-12]_AirTemp. Номер блока тогда должен вычисляться от того, какой Page выбран...и при этом знать какой SubPage/Button нажат в последствии...и вот как 2 Тэга прокинуть в скрипт я уже не нашел...
2) Именовать переменные как сamera[1-36]_AirTemp. Такой вариант я вижу как реализовать, но такое мне просто не особо нравится....на мой вкус неоднозначность/неточность в названии переменной....Ну и придется вычислить номер камеры как то на основании сторонних переменных.
Есть еще третий вариант - полностью отказаться от встроенной панели станиц в части выбора модуля. оставить одну и все реализовывать своими кнопками. Больше работы, но вроде все можно выкрутить будет. Так же, можно свести к минимуму количество одинаковых форм, если организовать правильную последовательность. Но мне кажется такой вариант будет менее удобным.
В общем, направьте меня пожалуйста в нужную сторону, т.к. я еще тонкостей этой системы не знаю и не могу предвидеть всех моментов. Пока склоняюсь к третьему варианту и именованию переменных как block[1-3]_Camera[1-12]_AirTemp, т.к. не вижу как решить проблемы первых двух....
Заранее спасибо)