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

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

Автор Тема: Программное реле времени  (Прочитано 4538 раз)

razorqhex

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Программное реле времени
« : 11 Ноября 2020, 14:37:46 »
Здравствуйте. Есть некоторые проблемы в реализации в автоматизации управления станциями.
Реле времени это функция, которая должна включать и выключать скважины по времени, который задает оператор
За поля времени ВКЛЮЧИТЬ и ВЫКЛЮЧИТЬ станцию отвечает виджет "Календарь", но в документации не нашёл функций, которые с этих виджетов брали значение и через введённое время включали или же выключали станцию.

Логика такова: в поле "Когда включать" задается время когда включать станцию, то-есть в это время производится запись в тег значение 1148, в поле "Когда выключать" задается время выключения станции и в тег записывается 1048. Кнопка "Задать время" включается реле времени.

Получается в 11:50 станция включилась, а в 23:00 выключилась и так постоянно в обоих полях будет 00:00.

Сложного нет ничего, но мне нужно или логику мышления сменить или я действительно не смог найти нужных мне функций для реализации данного вопроса.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1408
    • Просмотр профиля
Re: Программное реле времени
« Ответ #1 : 11 Ноября 2020, 14:59:21 »
Здравствуйте.

Для данной задачи можно использовать компонент "Расписание" - он позволяет создать расписание для включения/выключения какого-либо оборудования.

razorqhex

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Программное реле времени
« Ответ #2 : 12 Ноября 2020, 18:24:05 »
Для данной задачи можно использовать компонент "Расписание" - он позволяет создать расписание для включения/выключения какого-либо оборудования.
Я так понимаю, что с несколькими переменными данный компонент не может работать, а только с одним. Один такой компонент = одной переменной?
По типу: один такой компонент включает и выключает несколько станций, то-есть записывает значения нескольким переменным

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1408
    • Просмотр профиля
Re: Программное реле времени
« Ответ #3 : 13 Ноября 2020, 10:06:14 »
Здравствуйте.

Компонент "Расписание" может управлять одной переменной. Если требуется, чтобы расписание включало/отключало несколько переменных, то можно создать новую внутреннюю переменную и связать ее с расписанием. Затем создать скрипт по событию "Изменились переменные", добавить в список скрипта переменную связанную с расписанием и в скрипте записывать значения нужным переменным, например:
Код: (delphi)
begin
  if Variable.AsInt = 1 then  // если переменная, которая изменилась = 1
    begin
      MyVar1.Variable := 1;
      MyVar2.Variable := 1;
      MyVar3.Variable := 1;
    end else
      begin
        MyVar1.Variable := 0;
        MyVar2.Variable := 0;
        MyVar3.Variable := 0;
      end;
end.
Таким образом расписание будет управлять множеством переменных.

razorqhex

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Программное реле времени
« Ответ #4 : 20 Ноября 2020, 16:00:33 »
Здравствуйте.

Выявил проблему в реле времени, а именно в компоненте "Расписание", ну или я сам что-то не правильно сделал

Для запуска станции в тег ControlWord_Well2 записывается число 1148, для отключения 1048
Я настроил компонент "Расписание": добавил главный тег и значения на вкл и выкл., но интервал времени не на какой день я не ставил, то-есть управлять переменной этот компонент никак не должен.

Проблема состоит в том, что когда оператор нажимает на кнопку включении станции, тег ControlWord_Well2 получает значение 1148 (вкл) и сразу перезаписывается на 1084 (выкл). Если с компонента "Расписание" убрать тег ControlWord_Well2, то запуск станции через кнопки будет производится без проблем.

Как это можно исправить когда в компоненте "Расписание" интервал не задан и можно было управлять тегом по кнопкам?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3217
    • Просмотр профиля
    • Simple-Scada
Re: Программное реле времени
« Ответ #5 : 20 Ноября 2020, 16:06:31 »
Здравствуйте.

Пока расписание включено (см. свойство "Доступен" в инспекторе объектов, или Enabled в скриптах) оно всегда управляет переменной. Если переменная в зоне интервала, то запишется 1148, если вне интервала (или интервалы вообще не заданы), то запишется 1048. Именно так оно работает, поэтому здесь проблемы нет. Если Вы хотите остановить работу расписания, то выключите его через "Enabled := false;". И помните, что если несколько расписаний связаны с одной и той же переменной, то выключить нужно их все, иначе какое-то из них продолжит управлять переменной.
« Изменён: 20 Ноября 2020, 16:07:44 от Simple-Scada »