Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Программное задание границ шкалы  (Прочитано 2254 раз)

tech26

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Программное задание границ шкалы
« : 28 Сентября 2022, 16:27:04 »
В технологической системе имеется датчик, который может физически меняться на другой, с другим диапазоном измерений.
Поскольку измеряется одно и то же (расход газа), то в проекте simple-scada хотелось бы использовать одну и ту же переменную, но для её отображения в виде Уровня просто менять шкалу (граничные значения).
При попытке изменить свойство HighBound возникает ошибка - cannot assign to read-only property.

Можно каким-то другим способом поменять шкалу?
Заранее неизвестно, какой именно тип датчика будет установлен (экспериментальная установка), поэтому хотелось бы именно настраивать систему, а не менять границы шкалы в редакторе. При этом использовать масштабирование нежелательно, поскольку верхнее значение шкалы должно быть визуально в абсолютных единицах измерения, а не в %.

В принципе можно заранее создать несколько шкал, это менее удобно, но возможно.
Как тогда программно назначать/переназначать их для одной и той же переменной?
« Изменён: 28 Сентября 2022, 16:38:04 от tech26 »

pavel.sheva

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Программное задание границ шкалы
« Ответ #1 : 29 Сентября 2022, 14:02:12 »
1.Можете что-то глянуть в разделе с проектами, мб что-то похожее найдете для себя там...
2.Для жоских, можете отрисовать свой барграф, с кнопкой ввиде ползунка, и исходя из координат и вх значений написать алгоритм.)
3.А вообще вам в помощь.
« Изменён: 29 Сентября 2022, 14:39:13 от pavel.sheva »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Программное задание границ шкалы
« Ответ #2 : 29 Сентября 2022, 22:52:16 »
Здравствуйте.

Изменить шкалу переменной из скриптов нельзя. Если диапазоны шкал известны заранее, то можно создать несколько переменных с нужными шкалами и при смене датчика, из скрипта подменять переменную у компонента "Уровень" на требуемую, например:
Код: (delphi)
begin
  Level1.Variable := MyVariable; // связываем уровень "Level1" с переменной "MyVariable"
end.
Если переменная выводится в тренды, то также можно подменить нужный тренд используя процедуру SetTrendAll. Но на web клиенте подменить тренд не получится.

Цитировать
При попытке изменить свойство HighBound возникает ошибка - cannot assign to read-only property.
Свойство HighBound возвращает конечный индекс массива и никак не связано со шкалой переменной.

teplocom

  • Новичок
  • *
  • Сообщений: 47
  • с чувством уверенности в завтрашнем дне
    • Просмотр профиля
Re: Программное задание границ шкалы
« Ответ #3 : 14 Октября 2022, 09:03:14 »
Если значения измерения расхода газа начинаются с нуля (и значения не сильно разные - хотя это больше для трендов условное неудобство/ограничение и Вам Simple_Scada ответили как это обойти в Simple-Scada  8) ), я бы на Вашем месте сделал так:
Есть внешнее приходящее значение: Расход_газа (вероятнее всего преобразованное в цифру значение 4_20мА или 0-10В и т.д.)
Создать внутреннюю переменную и вывести на экран для чтения: РасходSCADA
Создать внутреннюю переменную и вывести на экран для редактирования: k
РасходSCADA=Расход_газа/k
k - зависит от шкалы датчика, а также от max аналого-цифрового значения, приходящего с ПЛК или модуля ввода вывода
k="max аналого-цифрового значения"/шкалу датчика
То есть, условно, если мы знаем "max аналого-цифрового значения", допустим равно 20000:
-для датчика со шкалой 100м3/ч 4_20мА, при расходе 50м3/ч приходит значение с МВВ 10000. k=20000/100=200. РасходSCADA=10000/200=50.00 м3/ч
-для датчика со шкалой 200м3/ч 4_20мА, при расходе 50м3/ч приходит значение с МВВ 5000. k=20000/200=100. РасходSCADA=5000/100=50.00 м3/ч
-для датчика со шкалой 500м3/ч 4_20мА, при расходе 50м3/ч приходит значение с МВВ 2000. k=20000/500=40. РасходSCADA=2000/40=50.00 м3/ч