PDA

Просмотр полной версии : Отображение значений переменной, не имеющей связей



Roman62rus
13.10.2020, 19:40
Столкнулся со следующей проблемой: в программе имеется переменная, значение которой может быть либо 0 (по умолчанию), либо некоторое число (температура). Какое значение будет в данный момент времени, зависит от состояния кнопки (отпущена - ноль, нажата - текущее значение температуры). Хочу, чтобы значение этой переменной отображалось на тренде. Получается так, что правильно отображаются только значения, соответствующие моментам нажатий на упомянутую кнопку, а всё, что между нажатиями, аппроксимируется функцией y=kx. То есть, график получается пилообразный. Можно ли сделать так, чтобы отображение значения переменной соответствовало истине, то есть до нажатия кнопки всё время ноль, а с момента нажатия - текущая температура и наоборот?

SCADAMaster
13.10.2020, 21:30
Так вы как это реализуете?
Сделайте в расчете, формулой:
ЕСЛИ (Кнопка=истина,Температура,0)

Roman62rus
15.10.2020, 22:10
Примерно так и реализую.
Переменная в виде Значения находится в дереве Объекта. С кнопкой связаны два События, одно устанавливает переменную в 0, другое - в текущую температуру. Значение этой переменной не передаётся на контроллер, следовательно, и не считывается с него.
Само значение переменной формируется правильно. Неправильно оно только отображается на тренде. Пока значение переменной не меняется, график идёт чётко горизонтально. Но стоит нажать на кнопку, и горизонтальная линия становится наклонной. Хотя на самом деле должен отобразиться скачок. Ведь всё время, пока кнопка не нажималась, значение переменной было одно и то же, а по графику получается, что оно линейно изменялось от нажатия к нажатию.

Roman62rus
15.10.2020, 23:16
Кажется, мне удалось победить этот эффект, правда, чисто эмпирическим путём. К сожалению, справка даёт столь расплывчатое толкование, что понять, как нужно действовать, может только тот, кто её написал :)
Оказывается, сабжевые свойства отрисовки графиков устанавливаются на закладке Архив в данном случае Значения. На этой закладке есть блок Переопределить настройки шаблона. Чтобы отображение графика изменения значения описанной переменной было похоже на правду, следует установить галки на Периодически и Моделирование ступеньки, а также обязательно указать ненулевой Период (я установил его равным периоду опроса OPC-сервера). Надпись (0 - все значения) сбивает с толку, её смысл непонятен. Во всяком случае, если оставить там нули, работать не будет.
А работает это так: при нажатии кнопки сначала отображается наклонная линия, а через несколько (у меня 14-20) секунд она перерисовывается уже правильно (почти прямоугольные импульсы, фронты завалены только). Понятно, что количество записей в базу данных при этом увеличивается, но не настолько, чтобы обсуждать это.

SCADAMaster
16.10.2020, 09:17
Периодически - не надо, моделирование ступеньки - надо

Roman62rus
16.10.2020, 10:39
Да, так тоже работает. Но перерисовка к нормальному виду происходит дольше. Возможно, когда я пробовал делать так в предыдущие разы, просто не дожидался, пока оно перерисуется.

SCADAMaster
16.10.2020, 11:05
Прорисовка происходит при смещении тренда за границу.

Roman62rus
16.10.2020, 11:42
Попробовал установить скорость продвижения тренда 1 минуту. Что же, отрисовка происходит быстро и даже сразу правильно, минуя наклонные линии. Только вот устанавливать столь высокую скорость далеко не всегда удобно. Для тепловых процессов 10-15 минут - оптимальная скорость. Странно, что для просчёта и отображения наклонных линий скорости работы программы хватает, а для правильного отображения нужно принимать дополнительные меры, требующие весьма значительных временных затрат. При этом для дискретных значений отображение оптимизировано. Что мешает точно так же отображать аналоговые значения? Впрочем, значит, что-то мешает, вряд ли стоит дискутировать об этом.