一个灵活的采样控制仿真框架
本文介绍如何使用MATLAB/Simulink搭建一个灵活的采样控制(sampling control)仿真框架。除了最常见的周期控制外,还能非常方便地实现更加灵活的控制策略。
很多物理系统的运行规律用连续微分方程模型描述。如果采用计算机控制,需要间断地对某些变量进行测量和控制,这种方式称为采样控制。采样控制必然涉及到连续信号与离散信号之间的转换。
设系统的状态为连续信号\(x(t)\),每隔一段时间从传感器获取状态值,即在某些时刻对\(x(t)\)采样,得到\(x(t_k)\),它的离散的。根据\(x(t_k)\)和控制目标计算得到一个控制量\(u(t_k)\),将离散的\(u(t_k)\)转换为连续的\(u(t)\)信号,才能对被控对象产生作用,如果用零阶保持器(zero-order hold, ZOH),\(u(t)\)就是阶梯信号。下图(来源:Discretization | Xu Chen)展示了整个过程:
测量和控制两个通道如果每隔固定周期进行采样和保持,则可以按照上述步骤将连续模型转化为离散模型,再进行分析。但如果采样和控制的时间很灵活,这种方法就不可行了。Simulink的使能触发子系统(enabled and triggered subsystem)模块可以实现灵活的采样控制。下面的实例验证了该模块的主要特性:
示波器中第一个信号是使能信号,信号值为1时模块功能才会开启。第二个信号是采样触发信号,设置为下降沿到来时触发采样,将输出值更新为输入信号最新的采样值。输入的正弦信号和输出信号在同一个图中。可以看到,当使能信号为0或触发信号新的下降沿没有到来时,模块的输出保持不变,所以它有零阶保持器的特征。Simulink还有单独的使能子系统模块和触发子系统模块,使能触发子系统是两种功能的综合,当只用到其中一种时,可以选择这两个单一功能模块。
上图展示的仿真实例是将使能触发子系统用于状态反馈控制系统仿真。使能信号可以控制两个通道的通断,触发信号控制采样时刻。在本例中,使能信号是常量1,即保持通道一直打开,触发信号采用方波,实现的是普通的周期(periodic)控制。修改使能信号和触发信号,则可实现其他更加灵活的控制策略,如事件触发控制(event-triggered control)、自触发控制(self-triggered control)等。