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

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

Автор Тема: Проверка состояния переменной в течении периода  (Прочитано 2062 раз)

spkzl

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
День добрый.

Как проверить что переменная bool находиться в состоянии включена/выключена непрерывно определенное время?
попробовал в скрипте 1s делать проверку на состояние переменной и увеличивать счетчик i:=i+1; вывод i в поле не происходит, считает оно или нет как проверить, как определить проблема с кодом или проблема с выводом.

как при инициализации скрипта задать переменной начальное значение, а то у меня получаются значения при старте вида 101841769.
Код
Contin_Pump_Operation_Count: Integer;  // счетчик работы насоса  
я могу где то в этой строке написать = 0?

Код
Contin_Pump_Operation_Count: Integer;  // счетчик работы насоса
begin
  if in_3_1.Value = True Then 
    Contin_Pump_Operation_Count := Contin_Pump_Operation_Count + 1;
end.   

будет ли этот код рабочим?

В инструкции, ниже, но при приведении типов  Contin_Pump_Operation_Count.AsInt вылетает ошибка .Value тоже выдает ошибку. И ошибки не скопировать с редактора.
Код
begin
  Var_1.Value := Var_2.AsInt + Var_3.AsInt;
end.
« Изменён: 12 Февраля 2023, 20:12:59 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Здравствуйте.

Цитировать
Как проверить что переменная bool находиться в состоянии включена/выключена непрерывно определенное время?
Для этого можно использовать описанный Вами способ. Только вместо локальной переменной скрипта нужно создать отдельную внутреннюю переменную в редакторе переменных и использовать ее. Почему нельзя использовать локальную переменную скрипта для организации таймеров или счетчиков и как инициализировать локальную переменную скрипта см. по ссылке(Изменение 1). К примеру, если создать в редакторе переменных новую переменную с именем "Contin_Pump_Operation_Count", то скрипт будет таким:
Код: (delphi)
begin
  if in_3_1.AsBool = True then 
    Contin_Pump_Operation_Count.Value := Contin_Pump_Operation_Count.AsInt + 1;
end. 

Цитировать
if in_3_1.Value = True Then
В этом условии есть ошибка - подробнее см. по ссылке. Исправленный скрипт см. выше.

Цитировать
В инструкции, ниже, но при приведении типов  Contin_Pump_Operation_Count.AsInt вылетает ошибка .Value тоже выдает ошибку.
Для локальных переменных скрипта использовать приведение типов и свойство Value не требуется. Данные свойства применяются только для переменных, созданных через редактор переменных.

spkzl

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Спасибо так работает.
Как задать переменные которые сохраняются в СКАДе ссылку на руководство. Константы из скрипта хочу перенести на экран, и сразу вопрос при изменении констант с экрана нужно ли перезапускать проект на сервере?
Код
const
 // ТРЕВОЖНЫЕ ИНТЕРВАЛЫ
 Contin_Pump_Operation = 20*60;  // таймер максимального времени работы насоса
 Contin_Pump_Shutdown = 90*60;   // таймер максимального отключенного состояния насоса
 Water_Level_Lower = 4*60;       // таймер нижнего уровня воды
 
« Изменён: 12 Февраля 2023, 22:15:40 от spkzl »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Здравствуйте.

Цитировать
Константы из скрипта хочу перенести на экран, и сразу вопрос при изменении констант с экрана нужно ли перезапускать проект
Если требуется изменять значение из клиента и необходимо чтобы оно сохранялось при перезапусках проекта, то нужно использовать внутренние переменные созданные через редактор переменных. Для просмотра и редактирования значения переменной используйте компонент "Поле", указав в свойстве "Переменная" требуемую переменную. При перезапуске проекта на сервере или при перезапуске сервера скады, переменные принимают "Начальное значение", установленное в настройках переменной. Если поле "Начальное значение" не заполнено, то переменная будет принимать значение в зависимости от типа данных (для числовых типов данных - 0, для строк - пустая строка, для типа Boolean - False, для переменных даты/времени - начало текущего дня). При необходимости, у переменных можно включить опцию "Автоматическое восстановление". Тогда скада будет автоматически сохранять значение переменной и восстанавливать его при перезапусках проекта. Перезапускать проект нужно только при внесении в него изменений через редактор.

spkzl

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Спасибо