Найти в Дзене

Trace Mode 7. Call.Screen (4). Разработка многослойного экрана.

#SCADA #TRACEMODE #АСУ #АСУТП Список авторских статей о Trace Mode 7. В теме перепривязки аргументов экрана подняли тему работы со слоями. Классическое "а раньше было лучше". Предлагаю всем вместе копнуть поглубже. На тот момент можно на экране разработать до 32(!) слоев. На каждом слое можно реализовать практически уникальный графический экран по функционалу и визуалу.
Но, всему есть предел, и это "физика". В данном случае, нельзя обойти ограничение ресурсов (объем памяти в WinPac'ах или USER и GDI Objects в Windows). Как управлять видимостью слоев в ТМ6? Под каждый слой необходимо создать СВОЙ аргумент экрана (т.е., к имеющимся аргументам для нашего многослойного экрана необходимо добавить еще "до 32" аргументов).
Если этот аргумент равен 0, то слой виден, иначе - не виден.
Как с этим работать? Создавать под каждый слой и его аргумент графическую форму управления (т.е. Графический Элемент "Кнопка" или аналог). Можно программно (через шаблон программы) где так же под каждый с
Оглавление

#SCADA #TRACEMODE #АСУ #АСУТП

Список авторских статей о Trace Mode 7.

В теме перепривязки аргументов экрана подняли тему работы со слоями. Классическое "а раньше было лучше".

Предлагаю всем вместе копнуть поглубже.

Многослойность в Trace Mode 6 (6.10.2 от 20 марта 2017 года)

На тот момент можно на экране разработать до 32(!) слоев. На каждом слое можно реализовать практически уникальный графический экран по функционалу и визуалу.
Но, всему есть предел, и это "физика". В данном случае, нельзя обойти ограничение ресурсов (объем памяти в WinPac'ах или USER и GDI Objects в Windows).

Как управлять видимостью слоев в ТМ6? Под каждый слой необходимо создать СВОЙ аргумент экрана (т.е., к имеющимся аргументам для нашего многослойного экрана необходимо добавить еще "до 32" аргументов).
Если этот аргумент равен 0, то слой виден, иначе - не виден.

Trace Mode 6. Настраиваем видимость слоев шаблона экрана
Trace Mode 6. Настраиваем видимость слоев шаблона экрана


Как с этим работать? Создавать под каждый слой и его аргумент графическую форму управления (т.е. Графический Элемент "Кнопка" или аналог). Можно программно (через шаблон программы) где так же под каждый слой и его аргумент придется создавать аргумент шаблона программы и контролировать его равенство 0 (видимость слоя экрана).

Лишняя морока! Много переменных и вероятность ошибки Разработчика проекта.

Многослойность в Trace Mode 7 (7.1.0.7 от 16 октября 2025 года)

Так же до 32 слоев.
Так же на каждом слое можно реализовать уникальный графический экран.
"Физические" пределы в обозримом будущем не представляют проблем (уход от OpenGL позволил уйти от ограничения USER и GDI Objects в Windows)

Прошу заметить, начало очень хорошее.
Но что с управлением?
Опять создавать для 32 слоев дополнительные 32 аргумента?
<барабанная дробь>
...
... ...
... ... ...
Открываем встроенную
Справочную Систему - Разработка графического интерфейса - Операции с графическими слоями - Управление видимостью графических слоев:

"Для управления видимостью графических слоев в реальном времени используется
атрибут 9 канала вызова экрана. Каждый бит значения атрибута 9 индицирует/задает видимость соответствующего слоя, при этом бит 0 соответствует самому нижнему слою (т.е. последнему слою в списке слоев в ИС). Если бит равен 1, слой видим, 0 – невидим. Сделать все слои невидимыми (т.е. задать значение 0 атрибуту 9) нельзя."

То есть, все управление видимостью всеми слоями (до 32) уже заложено в функционал и управляется одним атрибутом канала Call.Screen.

Управление слоями кнопками? Управление одним аргументом

Среда Разработки
Среда Разработки
Монитор Реального Времени. Все слои видны по умолчанию. Q = 0x1F (0001 1111)
Монитор Реального Времени. Все слои видны по умолчанию. Q = 0x1F (0001 1111)
Монитор Реального Времени. Второй и третий слои невидимы. Q=0x13 (0001 0011)
Монитор Реального Времени. Второй и третий слои невидимы. Q=0x13 (0001 0011)
Монитор Реального Времени. Первые два слоя невидимы. Q=0x19 (0001 1001)
Монитор Реального Времени. Первые два слоя невидимы. Q=0x19 (0001 1001)
Монитор Реального Времени. Все слои, кроме базового, невидимы. Q=0x1 (0000 0001)
Монитор Реального Времени. Все слои, кроме базового, невидимы. Q=0x1 (0000 0001)

Управление видимостью слоев через программу так же реализуется одним аргументом - просто пишем discrete-значение, биты которого отвечают за видимость слоев.

Главное, не забыть, что Если бит равен 1, слой видим, 0 – невидим.
И Q у экрана (Call.Screen) всегда НЕ равно нулю, то есть минимум один слой всегда виден (для полной "невидимости" этот видимый слой может быть пустым).

Теперь каждый может сам решить, какой метод удобнее.
Мой выбор - метод одного аргумента, который реализован в Trace Mode 7, удобней.

Успехов в освоении Программы и применении полученного опыта! 👽

.

Сайт Разработчика

Скачать БЕСПЛАТНО и официально

Форум Trace Mode 7