PDA

Просмотр полной версии : Есть ли возможность динамически менять связи элементов с сигналами (параметрами ПЛК)?



Wervicon
24.12.2022, 13:24
Приветствую! Может кто-нибудь подсказать, есть ли в МастерСкаде 4д возможность динамически менять связи?
т.е. в режиме исполнения при клике на определенный элемент в новом окне показывались сигналы, связанные с этим элементом,
при клике на другой - связанные с другим, но окно и элементы одни и те же.
Например, на главной схеме около 200 задвижек, кликая на 1 из них, открывается окно,
в котором сигналы "открыта"/"закрыта", "% открытия" (цифра), "авария" именно этой задвижки, и есть возможность отправлять команды по этой задвижке -
"открыть/закрыть", "% открытия".
Буду благодарна любой подсказке

1exan
24.12.2022, 15:33
Приветствую! Может кто-нибудь подсказать, есть ли в МастерСкаде 4д возможность динамически менять связи?
т.е. в режиме исполнения при клике на определенный элемент в новом окне показывались сигналы, связанные с этим элементом,
при клике на другой - связанные с другим, но окно и элементы одни и те же.
Например, на главной схеме около 200 задвижек, кликая на 1 из них, открывается окно,
в котором сигналы "открыта"/"закрыта", "% открытия" (цифра), "авария" именно этой задвижки, и есть возможность отправлять команды по этой задвижке -
"открыть/закрыть", "% открытия".
Буду благодарна любой подсказке

Не знаю, как в 4D, но в 3 так можно было делать.
Создаёте объект-шаблон со своими переменными и своим окном управления. Связываете переменные этого объекта с сетевыми переменными (например из ОПС).
Делаете необходимое количество копий объекта (шаблона), и также связываете переменные этих объектов с соответствующими сетевыми переменными (например из ОПС).
В дальнейшем правите только объект-шаблон, а копии обновляете через механизм шаблонов.

Larrrik
24.12.2022, 18:11
Здесь эта задача может решаться иначе. Вы просто делаете библиотечный объект-задвижку, имеющую первое окно (символ) для отображения на главной мнемосхеме, и второе окно (открываемое по клику на первом) - для отображения всех нужных параметров. И на его основе тиражируете себе сколько нужно объектов, из которых первые окна вытаскиваете на основную мнемосхему, а вторые - открываются по клику на них.

Wervicon
25.12.2022, 16:12
Спасибо за советы!
Но я так понимаю, никак не обойтись без размножения объектов... а я не хотела бы иметь такую стопку однотипных, но "полноценных" объектов (по одному на каждую задвижку), заметила, что при большом количестве (около 1000) - память сервера занимается на 12Гб, что очень много, т.к. это были "пустые" окна, без связей...
Нашла способ, но он корявый - через массив значений, индекс массива - это номер задвижки, который подставляю в привязанную на окне переменную через программу C#. Управление - через другую программу C#(в обратную сторону также по индексу). Способ рабочий, но - при одновременном использовании интерфейса >1 пользователя - происходит, естественно, коллизия((( Этого не будет, когда окна управления физически разные. И еще один минус моего способа - очень неинтуитивное добавление нового такого же элемента (необходимость создавать и обвязывать приличное количество параметров в приличном количестве мест - целый клубок)
Буду выбирать, что лучше, спасибо еще раз!

1exan
25.12.2022, 16:50
Спасибо за советы!
Но я так понимаю, никак не обойтись без размножения объектов... а я не хотела бы иметь такую стопку однотипных, но "полноценных" объектов (по одному на каждую задвижку), заметила, что при большом количестве (около 1000) - память сервера занимается на 12Гб, что очень много, т.к. это были "пустые" окна, без связей...
Нашла способ, но он корявый - через массив значений, индекс массива - это номер задвижки, который подставляю в привязанную на окне переменную через программу C#. Управление - через другую программу C#(в обратную сторону также по индексу). Способ рабочий, но - при одновременном использовании интерфейса >1 пользователя - происходит, естественно, коллизия((( Этого не будет, когда окна управления физически разные. И еще один минус моего способа - очень неинтуитивное добавление нового такого же элемента (необходимость создавать и обвязывать приличное количество параметров в приличном количестве мест - целый клубок)
Буду выбирать, что лучше, спасибо еще раз!

Возможно при использовании механизма шаблонов ситуация с памятью всё же улучшится

Larrrik
26.12.2022, 11:35
На счёт 12 ГБ памяти за 1К задвижек - я бы уточнил все таки в ТП. На глаз выглядит замного...

Maria Momotova
26.12.2022, 16:45
Механизм как в тройке "Динамические/вызываемые объекты" сейчас в разработке. Пока эту задачу решать нужно через экземпляры объектов (из библиотеки вставлять не копию, ни наследника, а именно экземпляр).
Еще как вариант использовать специальные контролы например таблица или стековая панель. Когда при нажатию на ячейку открывается окно с уточняющими параметрами.