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

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

Автор Тема: Неопределённость с границами  (Прочитано 71 раз)

Ivan_Vit

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Неопределённость с границами
« : 30 Июля 2026, 13:31:13 »
Здравствуйте!

Описание задачи:
По переменной приходит аналоговое значение (Температура). Так как датчиков много, то мне необходимо сделать подробное описание каждого датчика температуры при достижении границы "-55".
Соответственно, созданы шаблоны, ниже предоставил скрин конкретного шаблона, где отображено подробное описание датчика (На скрине видны границы "-55..-53" , которые подобраны большим количеством итераций, чтобы это начало работать предсказуемо). Для моего момента, как я понимаю, чтобы правильно это всё работало и это будет работать - я уверен, необходимо установить границы "-56..-54" . ГЛАВНЫЙ вопрос почему так?


Объясню как я это выявил при отладке, если рассматривать границы  "-55..-53"
Коротко и по сути. Через эмулятор я отправляю аналоговое значение "-53" - сообщение НЕ формируется на скаде.
Отправляю "-54" - сообщение формируется на скаде.
Отправляю "-55" - сообщение формируется на скаде.
Для проверки отправляю "-56" - сообщение НЕ формируется на скаде.

Мне важно уточнить, правильный ли я вывод делаю, что одна из границ в диапазоне "-55..-53" является не включённой, то есть [-55...-53)?
Дополню, что если ставить диапазон "-55..-55" то ничего не работает, что полагаю логичным.


pan2000

  • Постоялец
  • ***
  • Сообщений: 231
    • Просмотр профиля
Re: Неопределённость с границами
« Ответ #1 : 31 Июля 2026, 16:54:05 »
 Здравствуйте.

Для выделенной области сообщение формируется только при переходе значения переменной в эту область (включая границы), а изменение значения внутри области (включая границы) и выход из области не формирует сообщение. Выход из области добавляет время выхода в уже сформированное сообщение.
Цитировать
Мне важно уточнить, правильный ли я вывод делаю, что одна из границ в диапазоне "-55..-53" является не включённой, то есть [-55...-53)?
Дополню, что если ставить диапазон "-55..-55" то ничего не работает, что полагаю логичным.
Оба вывода неправильные, т.к. значения температуры задаются в вещественном виде от эмулятора, а границы - целыми числами.
Диапазон  "-55..-55" правильно формирует сообщение, хотя судя по "Основному руководству/Свойства состояний сообщения", установить одинаковые граничные значения "от" и "до" нельзя.
Судя по:
Цитировать
Через эмулятор я отправляю аналоговое значение "-53" - сообщение НЕ формируется на скаде.
Отправленное значение на самом деле содержит ненулевую дробную часть например, -52.99999ххх.

Цитировать
Отправляю "-54" - сообщение формируется на скаде.
Это правильно, т.к. вещественное "около -54" стало первым попаданием в область.

Цитировать
Отправляю "-55" - сообщение формируется на скаде.
Весьма неожиданно, т.к. для сообщения значение должно было выйти из области и войти в неё вновь (либо Вы ошиблись, отправив перед этим значение вне области, либо такое значение отправил эмулятор).

Цитировать
Для проверки отправляю "-56" - сообщение НЕ формируется на скаде.
Правильно, любое новое значение после формирования сообщения НЕ приводит к формированию сообщения.

Реальное значение температуры можно контролировать объектом "поле", предварительно изменив формат переменной для увеличения числа значимых цифр после запятой, например так: 0.############.

И если уж "пытать" систему сообщений, то лучше исключить лишнее звено (эмулятор) и использовать для задания значения температуры целочисленную переменную, что гарантирует точное сравнение значения и области.