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

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

Автор Тема: Скада округляет к нулю  (Прочитано 2582 раз)

vyacheslav

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
Скада округляет к нулю
« : 26 Марта 2018, 12:08:15 »
Добрый день, такая проблема. есть поле с показаниями, в данном случае это расход воды. имеем такой скрипт :
Код: (delphi)
begin
  if (Rashod_HVS_1.AsInt = 0)  then
    LampVar_3.Value := 1
  else
    LampVar_3.Value := 0;
end.
но когда расход падает ниже 0,5 то уже идет сигнал как будто ноль и аварийная лампа зажигается. как сделать условие чтобы именно при нуле выполнялся скрипт, а не округляло низкие расходы к нулю?
« Изменён: 26 Мая 2018, 13:32:46 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Скада округляет к нулю
« Ответ #1 : 26 Марта 2018, 19:17:29 »
Здравствуйте.

Цитировать
но когда расход падает ниже 0,5 то уже идет сигнал как будто ноль и аварийная лампа зажигается.
Правильно, ведь Вы берёте значение AsInt, т.е. как целое число, а переменная у Вас, судя по описанию, вещественная. Если взять 0.5 как целое число, то будет произведено округление до ближайшего целого, т.е. до 0. Если взять 0.6, то до единицы. Поэтому нужно использовать AsFloat, т.е. брать число как вещественное.
Код: (delphi)
begin
  if (Rashod_HVS_1.AsFloat = 0)  then
    LampVar_3.Value := 1
  else
    LampVar_3.Value := 0;
end.

Второй вариант - брать значение без приведения к конкретному типу:
Код: (delphi)
begin
  if (Rashod_HVS_1.Value = 0)  then
    LampVar_3.Value := 1
  else
    LampVar_3.Value := 0;
end.
« Изменён: 26 Мая 2018, 13:32:53 от Simple-Scada »

vyacheslav

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
Re: Скада округляет к нулю
« Ответ #2 : 27 Марта 2018, 11:18:51 »
Понял, Спасибо большое. только изучаю программу. планирую по завершению проекта купить полную профессиональную версию.