如何在固定时间点后保持PID块的输出信号不变?

How to keep the output signal of a PID block unchanged after a fixed time point?

我用PID控制系统建立了一个流体模型,我想运行我的模型直到达到稳定状态,然后保持PID系统的输出信号不变,这样我就可以做阶跃励磁稳定测试。但是现在我不确定如何在固定时间点后保持PID控制系统的输出信号不变。所以我不得不使用逻辑开关在固定的时间点改变信号源。
我的问题是:
如何让Block Component的输出信号在固定时间点后保持不变?

我认为 Modelica 标准库中没有合适的块。

但是那个代码能做到吗?

model KeepValueTime
  extends Modelica.Blocks.Interfaces.SISO;

  parameter Modelica.Units.SI.Time t = Modelica.Constants.inf "Time at which the value shall be kept";
  Real u_keep(start=0) "Value to be output when 'keepValue = true'";

equation 
  if time < t then
    y = u;
  else
    y = u_keep;
  end if;

  when time >= t then
    u_keep = u;
  end when;

  annotation (uses(Modelica(version="4.0.0")));
end KeepValueTime;

布尔输入更通用一些:

model KeepValue
  extends Modelica.Blocks.Interfaces.SISO;

  Real u_keep(start=0) "Value to be output when 'keepValue = true'";

  Modelica.Blocks.Interfaces.BooleanInput keepValue annotation (Placement(transformation(
        extent={{-20,-20},{20,20}},
        rotation=0,
        origin={-120,80}), iconTransformation(extent={{-140,60},{-100,100}}, rotation=0)));

equation 
  if not keepValue then
    y = u;
  else
    y = u_keep;
  end if;

  when keepValue then
    u_keep = u;
  end when;

  annotation (uses(Modelica(version="4.0.0")));
end KeepValue;

快速测试:

...似乎可以满足您的需求:

Markus A. 建议的解决方案的替代方案可能是将控制误差切换为零。如果在系统已经处于稳定状态(零控制误差)时完成切换,这将冻结控制器输出。