PDA

Просмотр полной версии : Как корректно отобразить недостоверные значения параметров в окне (на мнемосхеме)



Роман Ж
16.09.2024, 15:39
Как корректно отобразить недостоверные значения параметров в окне (на мнемосхеме)?
По умолчанию при перетаскивании параметра в окно создаётся элемент "Текст", который меняет своё значение в соответствии со значением поля "Value" параметра, при этом значение поля "StatusCode" никак не влияет на отображение.
Данные давно не поступают от прибора и при этом никаких визуальных признаков недостоверности данных у пользователя нет.

lirik_divine
17.09.2024, 09:43
Можете привязать параметр StatusCode к одному из визуальных параметров выводимого текста, например цвет рамки или заливка фона, после нажать на входящие связи, редактировать конвертацию значений на запись, выбрать тип конвертации: точечная, после назначить статусам цвета. 78636
78637

pavel.migdalev
17.09.2024, 09:54
Как корректно отобразить недостоверные значения параметров в окне (на мнемосхеме)?
По умолчанию при перетаскивании параметра в окно создаётся элемент "Текст", который меняет своё значение в соответствии со значением поля "Value" параметра, при этом значение поля "StatusCode" никак не влияет на отображение.
Данные давно не поступают от прибора и при этом никаких визуальных признаков недостоверности данных у пользователя нет.
1. В Библиотеке создаете Окно.
2. В Окне размещаете 2 визуальных компонента Текст: первый Текст будет Ваше Value, второй Текст - плохое качество, например, ???.
3. Слева в Окне раскрываете клеммник, в нем создаете 2 Параметра: Value и StatusCode.
4. Перетаскиваете Параметр Value на свойство "Текст" первого Текста.
5. Перетаскиваете Параметр StatusCode на свойство "Видимость" обоих Текстов и в каждом, через конвертер, задаете, при каких значениях StatusCode отображать Текст с Value, а при каких - Текст с плохим качеством ???.
6. На мнемосхеме, внизу, в Палитре ищите свое библиотечное Окно (с которым Вы работали в п. 1-5) и вытаскиваете его на мнемосхему.
7. Перетаскиваете свои Параметры Value и StatusCode (из Объектов) на Параметры Value и StatusCode визуального компонента на мнемосхеме (если на мнемосхеме выбрать визуальный компонент, то справа в свойствах будет раздел Параметры и там должны быть Параметры Value и StatusCode (если Вы все правильно сделали)).

P. S. 1. Названия Параметров могут быть не Value и StatusCode, а можете задать свои.
P. S. 2. У меня, в свое время, возникли проблемы с названием Value, поэтому я использую название Value01.

Роман Ж
17.09.2024, 15:14
Спасибо!

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

Роман Ж
20.09.2024, 08:35
И снова, здравствуйте!

Пытаюсь сделать через библиотеку, работает всё как надо, НО возникла проблема которую не могу побороть.
78731
В параметры библиотечного элемента добавил параметр типа "SYSTEM_REAL_PARAM", который соответствует типу отображаемых значений.
Когда я из дерева системы перетаскиваю в поле библиотечного элемента "параметр" "вход" параметра, значение которого надо отобразить, то образуется связь, появляется соответствующий значок и т.д.
78735
При работе проекта видно что поля "value" связаны, значение меняется в соответствии с реальным значением, а вот "StatusCode" не связались, значение этого поля не соответствует реальному.
Если перетащить "StatusCode" из дерева в свойства элемента отображения, то всё работает.
Задумка была одним перетаскиванием связывать и "value" и "StatusCode", но никак не получается. Параметров под 1000 штук, и велика вероятность что-то напутать тягая мышкой туда сюда.
Может знаете вариант как это исправить?

melky
20.09.2024, 08:54
pavel.migdalev ужас. Учитывая, что MS4D писана на NET6, вместо вот таких вот кучи манипуляций возложить на ядро отображение недостоверных данных было бы проще.
По крайней мере для int можно использовать null, для double соответственно double.NaN и даже с применением Статуса тега этим могло бы заниматься ядро, а не пользователь.

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

imaex
20.09.2024, 12:10
По крайней мере для int можно использовать null, для double соответственно double.NaN


Надо не на тип заморачиваться, а на состояние. Например, в привычной мне системе, где всё это из коробки - #BAD, #COM, #PEND, #WAIT и т.д.
Даже не думал, что где-то это надо самому рожать.

pavel.migdalev
20.09.2024, 16:04
И снова, здравствуйте!

Пытаюсь сделать через библиотеку, работает всё как надо, НО возникла проблема которую не могу побороть.
78731
В параметры библиотечного элемента добавил параметр типа "SYSTEM_REAL_PARAM", который соответствует типу отображаемых значений.
Когда я из дерева системы перетаскиваю в поле библиотечного элемента "параметр" "вход" параметра, значение которого надо отобразить, то образуется связь, появляется соответствующий значок и т.д.
78735
При работе проекта видно что поля "value" связаны, значение меняется в соответствии с реальным значением, а вот "StatusCode" не связались, значение этого поля не соответствует реальному.
Если перетащить "StatusCode" из дерева в свойства элемента отображения, то всё работает.
Задумка была одним перетаскиванием связывать и "value" и "StatusCode", но никак не получается. Параметров под 1000 штук, и велика вероятность что-то напутать тягая мышкой туда сюда.
Может знаете вариант как это исправить?

Похоже на классический косяк MS4D.
Если Ваши параметры в дереве имеют более-менее типовые названия, то:
- завести в окне два отдельных параметра Value01 и StatusCode.
- из дерева перетащить два параметра в первый библиотечный элемент на мнемосхеме.
- нажать ПКМ на первом библ. элементе на мнемосхеме, нажать "Дублировать" столько-то раз (задать кол-во дублирований и нажать "Дублировать").
- появится окно настройки связей. Задать привязки к вашим параметрам в дереве. Проверить галочки (если связь существует - галка стоит, если не существует - галка не стоит, значит вы указали неверный путь к параметру). Нажать на кнопку "Установить".
- полученные библ. элементы расположить на мнемосхеме.

pavel.migdalev
20.09.2024, 16:09
pavel.migdalev ужас. Учитывая, что MS4D писана на NET6, вместо вот таких вот кучи манипуляций возложить на ядро отображение недостоверных данных было бы проще.
По крайней мере для int можно использовать null, для double соответственно double.NaN и даже с применением Статуса тега этим могло бы заниматься ядро, а не пользователь.

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

В языке ST не встречал понятия null или NaN.

melky
20.09.2024, 16:26
pavel.migdalev при чем тут ST? если scada написана на NET.
Ну и как правильно выше написали, это не обязательно, при наличии статусов. И этим должно заниматься ядро системы, пользователю остается только по условиям выставлять статусы. Все. А не лепить окошки с подложками двух текстов. Чай не картинки красная, желтая, зеленая...

Если в MS4D надо делать так, как описано, то это мрак...
Нельзя там сделать объект один раз из этого барахла, а потом менять только связи с переменными в объекте ? Хотя опять же - 1000 штук...

pavel.migdalev
20.09.2024, 16:33
Нельзя там сделать объект один раз из этого барахла, а потом менять только связи с переменными в объекте ?

Невнимательно читаете мои сообщения.

pavel.migdalev
21.09.2024, 04:21
Если параметров 1000 шт. и стоит задача уместить их все на одной мнемосхеме, то рекомендую почитать в хелпе пример работы с визуальным компонентом Стековая панель. В ней можно разместить много параметров в табличной форме с прокрутками.