主要内容

手动控制和 PID 控制之间的无扰动切换

R2026b

此示例说明如何在从手动控制切换到比例积分导数 (PID) 控制时实现无扰动切换。该模型使用 Simulink® 中的 PID Controller 模块来控制带死区时间的一阶过程。

open_system('sldemo_bumpless');

使用 Simulink® Control Design™ 提供的 PID 调节器,在忽略饱和情况下对 PID Controller 进行调节。

受控的被控对象是具有饱和时间的一阶过程,由以下方程给出:

P(s)=42.5s+1e-s.

该示例以开环控制开始,由饱和斜坡信号 Manual signal 指定。开环控制信号,称为 Manual signal,输入到表示 First Order Process 的被控对象模块。被控对象模块的输出是所需的稳态值 40。

该示例在 t = 150 时实现控制切换。

这种在开环控制和闭环控制之间的切换涉及两个控制阶段。

  • 手动 - 启动期间向被控对象模块输入饱和斜坡信号,直到 t = 150 (Control mode = 0)。

  • 自动 - t = 150 (Control mode = 1) 后的 PID 控制,并且必须接管该过程,而不会在被控对象输入端引入扰动。

切换不应在从手动控制切换到自动控制期间在控制信号中引入扰动。

配置 PID Controller

为支持平滑的控制切换,PID Controller 模块支持两种工作模式:跟踪和控制。

在控制模式下,PID Controller 模块作为普通 PID 控制器运行。在跟踪模式下,该模块有额外的输入,允许 PID 模块通过更改其积分器输出来调整其内部状态。该更改允许模块输出跟踪另一个信号输入。

为实现无扰动切换,PID Controller 模块所处的模式必须为:

  • 当被控对象在手动控制(开环)状态下时处于跟踪模式

  • 当被控对象在自动控制(闭环 PID 控制)状态下时处于控制模式

要激活信号跟踪,请在“模块参数”对话框的初始化选项卡上,选择启用跟踪模式并指定跟踪系数(Kt)。此值是增益。此增益的倒数是跟踪环的时间常数。有关如何选择该增益的详细信息,请参阅 [1]。

一旦启用了跟踪模式,该模块将有第二个输入端口 TR。

Untitled.png

要查看 PID Controller 模块封装内部并了解 TR 端口的工作情况,请使用以下命令。

open_system('sldemo_bumpless/PID Controller','force');

设置切换机制

除了为 PID Controller 模块启用跟踪模式外,该模型还使用 Switch 模块来实现控制切换。Switch 模块确定将哪个信号输入到被控对象和 PID Controller 模块跟踪端口 TR。

在时间 t = 0 处,Switch 模块将手动控制信号发送到被控对象输入端和 PID Controller 模块跟踪端口。这允许 PID Controller 模块的输出在手动阶段通过调整 PID Controller 积分来跟踪手动控制信号。因此,当发生控制切换时,PID Controller 输出近似等于手动控制信号。

在时间 t = 150 处,Switch 模块发生切换,将 PID Controller 模块输出引导至被控对象和 PID Controller 模块跟踪端口。PID Controller 模块跟踪自身的输出。

Untitled.png

要关闭模型,请使用以下命令。

close_system('sldemo_bumpless/PID Controller');
close_system('sldemo_bumpless');

在跟踪模式开启的情况下进行仿真

对无扰动切换进行仿真。在本例中,跟踪模式处于开启状态。

open_system('sldemo_bumpless');
simout=sim('sldemo_bumpless');

Setpoint 信号和系统响应的绘图显示,当在 t= 150 处从手动切换到自动时,Output, y(t) 信号能够跟踪 Setpoint 曲线,且输出没有任何扰动。

clf;
plot(simout.logsoutBumpless{1}.Values,'r');
grid on;
hold on; %draw on top of previous plot
plot(simout.logsoutBumpless{3}.Values,'b');
title('Comparison of Setpoint vs Measured Output: Tracking Mode on'); %add title to plot
xticks(0:50:600); % set x-axis ticks
ylim([0 50]); % set min and max of y-axis values
legend('Measured Output y(t) ','Setpoint r(t)','Location','northeast'); %specify legend
xline( 150, ':','HandleVisibility','off'); %draw a vertical line at 150s
ylabel('y(t) and r(t)');
xlabel('Time (seconds)');
hold off;

Figure contains an axes object. The axes object with title Comparison of Setpoint vs Measured Output: Tracking Mode on, xlabel Time (seconds), ylabel y(t) and r(t) contains 2 objects of type line. These objects represent Measured Output y(t) , Setpoint r(t).

在跟踪模式关闭的情况下进行仿真

在模型 sldemo_bumplessno 中,跟踪模式禁用。PID Controller 模块没有跟踪输入端口。

close_system('sldemo_bumpless');
open_system('sldemo_bumplessno');
simout1=sim('sldemo_bumplessno');
close_system('sldemo_bumplessno');

Setpoint 信号和系统响应的绘图显示,当在 t= 150 处从手动切换到自动时,Output 信号有大的瞬态响应。

%Plot Results
clf;
plot(simout1.logsoutBumplessNo{1}.Values,'r');
grid on; 
hold on; 
plot(simout1.logsoutBumplessNo{3}.Values,'b');
title('Comparison of Setpoint vs Measured Output: Tracking Mode off');
xticks(0:50:600);
ylim([0 600]);
legend('Measured Output y(t) ','Setpoint r(t)','Location','northeast');
ylabel('y(t) and r(t)');
xlabel('Time (seconds)');
xline( 150, ':','HandleVisibility','off' );
hold off;

Figure contains an axes object. The axes object with title Comparison of Setpoint vs Measured Output: Tracking Mode off, xlabel Time (seconds), ylabel y(t) and r(t) contains 2 objects of type line. These objects represent Measured Output y(t) , Setpoint r(t).

比较跟踪模式处于开启和关闭状态下的测量输出

下图显示,当跟踪模式开启时,从手动到自动的控制切换更平滑。

clf;
plot(simout1.logsoutBumplessNo{3}.Values(1),'r');
grid on; 
hold on;
plot(simout1.logsoutBumplessNo{1}.Values(1),'b');
plot(simout.logsoutBumpless{1}.Values(1),'g');
title('Comparison of Measured Outputs ');
xticks(0:50:600);
ylim([0 600]);
legend('Setpoint r(t)','Measured Output y(t), Tracking Mode:off', 'Measured Output y(t), Tracking Mode:on','Location','northeast');
yl= ylim;
ylabel('Measured Outputs and r(t)');
xlabel('Time (seconds)');
patch([125 125 200 200],[yl(1) yl(2) yl(2) yl(1)],'k',...
    'facecolor',[0.4660 0.6740 0.5880],'edgecolor','none', ...
    'facealpha',0.1, 'HandleVisibility','off') ; % draw transparent polygon to highlight a section of plot
hold off;

Figure contains an axes object. The axes object with title Comparison of Measured Outputs, xlabel Time (seconds), ylabel Measured Outputs and r(t) contains 3 objects of type line. These objects represent Setpoint r(t), Measured Output y(t), Tracking Mode:off, Measured Output y(t), Tracking Mode:on.

对于使用 PID Controller 模块的无扰动控制,请启用跟踪。

参考

[1] Åström, Karl J., and Tore Hägglund. Advanced PID Control. Research Triangle Park, NC: International Society of Automation, 2006.

另请参阅

主题