Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Миханик от 22 Мая 2026, 05:48:34

Название: Передача тегов в процедуру
Отправлено: Миханик от 22 Мая 2026, 05:48:34
Добрый день.

Как правильно передать тег в процедуру?

Объявляем вот такую процедуру, и мне в нее нужно передать теги
Код: (delphi)
Procedure Gom_ControlPump_Run(var mqtt_pump_Run, vrPump_Run : boolean; State_Pump : integer; bit : byte);
begin
  // Управление включением насоса
  if mqtt_pump_Run then
    if not GetBit(State_Pump, bit) then // если насос выключен
      vrPump_Run := mqtt_pump_Run
    else // если насос включен, то сбрасываем бит включения
      begin
        vrPump_Run := false;
        mqtt_pump_Run := false;
      end;
end;
Но при вызове процедуры возникает ошибка
Код: (delphi)
Gom_ControlPump_Run(mqtt_Gom_Run_pump5.Value, drskGom_SN5_Run.Value, drskGom_State_Pump57.AsInt, 2);
видимо потому что mqtt_Gom_Run_pump5.Value и drskGom_SN5_Run.Value это свойства переменной, а не сама переменная.
Но как тогда правильно сделать?
Название: Re: Передача тегов в процедуру
Отправлено: Simple Scada от 22 Мая 2026, 12:42:33
Здравствуйте.

Если в процедуру необходимо передавать переменные в качестве параметра, то для этого переменные необходимо объявлять как класс "TM_Variable":
Код: (delphi)
procedure GomControlPumpRun(AMqttPumpRun, APumpRun, AStatePump: TM_Variable; bit: Byte);
begin
  if AMqttPumpRun.AsBool then
    if not GetBit(AStatePump.AsInt, bit) then
      APumpRun.Value := AMqttPumpRun.AsBool
    else
    begin
      APumpRun.Value := False;
      AMqttPumpRun.Value := False;
    end;
end;
Вызов процедуры:
Код: (delphi)
GomControlPumpRun(mqtt_Gom_Run_pump5, drskGom_SN5_Run, drskGom_State_Pump57, 2);