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

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

Автор Тема: Вопросы по скриптам в Simple-Scada 2  (Прочитано 407728 раз)

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 243
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1620 : 21 Февраля 2025, 15:01:17 »
Здравствуйте.

К сожалению, по описанию не совсем понятно, о чем идет речь. Опишите более подробно задачу, которую Вы пытаетесь решить.

Цитировать
Использовании в скриптах функции сдвига, например на определённое число минут IncMinute, в качестве параметра сдвига можно задать только константу.
В качестве параметра "ANumberOfMinutes" можно использовать любое целочисленное значение, в том числе и значение переменной. Например:
Код: (delphi)
begin
  // увеличить время переменной MyDateTime на количество минут, заданных в переменной vrInc
  MyDateTime.Value := IncMinute(MyDateTime.AsDateTime, vrInc.AsInt);
end.
,где "MyDateTime" – внутренняя или внешняя переменная с типом данных DateTime, "vrInc" – внутренняя или внешняя переменная с типом данных Integer.

Все доступные методы для работы с датой и временем можно найти в руководстве по ссылке.


B.B

  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1621 : 21 Февраля 2025, 17:23:16 »
Прямо какой-то "эффект генерала" наоборот... всё работает.
Код: (delphi)
var
  DateStart, DateEnd: TDateTime;
begin
  DateEnd:= Now;                                                     // время завершения цикла
  DateStart:= IncMinute(DateEnd, -CycleTime.AsInt)   // время начала цикла
end.
Спасибо за оперативную помощь  :D
« Изменён: 21 Февраля 2025, 17:37:37 от Simple Scada »

prog2

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1622 : 01 Мая 2025, 16:30:43 »
Здраствуйте помогите организовать логику с этим скриптом, не могу понять это вообще возможно одним скриптом сделать или нужно 2 отдельно. В итоге работает так что поле марает либо красно желты либо желта зеленый   
Если температура ≤ 15 → сразу зелёный
Если температура > 15, но снижается (таймер растёт) → зелёный , даже если меньше 10 секунд
Если температура > 15 и не снижается , то: Первые 10 секунд — жёлтый После 10 секунд — красный
Код: (delphi)
begin
  // Проверяем, снижается ли температура
  if Shape1.Value < prevTemp.Value then
    vrCoolingTimer.Value := vrCoolingTimer.Value + 1
  else
    vrCoolingTimer.Value := 0;

  // Обновляем предыдущее значение после проверки
  prevTemp.Value := Shape1.Value;

  if Shape1.Value <= 15 then
  begin
    Shape1.Color := clLime;
    vrTimer.Value := 0;
    vrCoolingTimer.Value := 0;
  end
  else if vrCoolingTimer.AsInt > 0 then
  begin
    Shape1.Color := clLime; // Зелёный: температура снижается (до 10 сек)
  end
  else
  begin
    vrTimer.Value := vrTimer.Value + 1;

    if vrTimer.AsInt >= 100 then
      Shape1.Color := clRed // Красный: температура не снижается ≥ 10 сек
    else
      Shape1.Color := clYellow; // Жёлтый: только что вышла за норму
  end;
end.
« Изменён: 05 Мая 2025, 09:07:48 от Simple Scada »