Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: vyacheslav от 26 Марта 2018, 12:08:15

Название: Скада округляет к нулю
Отправлено: vyacheslav от 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 то уже идет сигнал как будто ноль и аварийная лампа зажигается. как сделать условие чтобы именно при нуле выполнялся скрипт, а не округляло низкие расходы к нулю?
Название: Re: Скада округляет к нулю
Отправлено: Simple-Scada от 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.
Название: Re: Скада округляет к нулю
Отправлено: vyacheslav от 27 Марта 2018, 11:18:51
Понял, Спасибо большое. только изучаю программу. планирую по завершению проекта купить полную профессиональную версию.