单泽彪(1986),男,博士研究生.研究方向:阵列信号处理,先进控制与系统仿真.
提出了一种采用Simulink实现数模混合控制系统的仿真方法。控制系统中实际的被控对象用连续Simulink模块构建的非线性连续系统来描述,同时采用Simulink模块与M函数相结合的形式,用信号上升沿触发子系统模拟闭环控制系统中的数字处理单元,即数字滤波与控制器部分,从而可真实地模拟周期性采集数据并处理数据的过程,最终实现数模混合控制系统的仿真。以连续搅拌反应釜基于卡尔曼滤波的状态反馈控制问题为实例,阐述了该仿真方法的具体实现过程。闭环仿真结果验证了该方法的有效性。
A simulation method based on Kalman filter for nonlinear continuous systems fulfilled by trigger subsystem block is proposed. In this method the form of Simulink blocks is combined with M-functions to simulate the process of periodic sampling and processing by micro-computers, accordingly the functions of D/A and A/D and the online filter processing are achieved perfectly. The implementation process of the proposed method is introduced. Simulation of the Continuous Stirred Tank Reactor (CSTR) system is carried out to demonstrate the implementation of the proposed method in detail. Results show the efficiency of the proposed method.
带有数字信号处理环节的控制系统是一个能处理模拟和数字信号的混合系统,这样的系统进行模拟仿真对进行实际系统预设计来说是非常有意义的[ 1]。MATLAB/Simulink是目前应用最广的系统建模、分析与仿真等问题的理想工具[ 2]。对于混合系统仿真,一般常有两种实现思路,一种是完全由Simulink模块搭建的离散控制系统[ 3, 4],即先将连续被控对象数学模型离散化,用Simulink离散模块进行单纯的离散系统仿真,这样不可避免地会造成失真,越加偏离生产实际情况;第二种方法完全由程序编写连续系统仿真[ 5, 6],这样又不如由Simulink搭建模块仿真直观形象。虽然利用S函数亦可实现对连续系统的数字滤波,但是S函数的编写比较复杂,在滤波的工程实现、现场调试及通用型方面都存在着局限性。
本文提出一种基于Simulink实现的混合系统的仿真方法,即用触发子系统模块来模拟数字处理器,用周期性的方波来触发该系统,从而实现差分求解等数字信号处理的过程。本文以卡尔曼滤波为例,介绍了一种基于Simulink对连续系统实时数字滤波仿真实现的方法,即把Simulink模块与M函数通过触发子系统模块相结合。其中主程序由Simulink模块搭建,滤波器由M函数编写,通过触发子系统模块来模拟计算机离散采样、周期计算的过程,同时利用外部全局变量来存储历史数据,以达到实时计算并估计状态的目的;触发子系统模块具有的零阶保持器的特性[ 7],又使滤波输出转换为连续信号,可以直接予以示波观测或送至控制器进行控制。整个过程实现了D/A及A/D转换的功能,从而逼真地反映出实际生产中采集数据及处理数据的过程。对于众多基于实际控制模型如汽车、机器人及双容系统等生产过程被控对象的算法仿真问题[ 5, 8, 9],均可采用本文方法进行仿真验证。文中最后给出了该方法对连续搅拌反应釜(CSTR)进行卡尔曼滤波的仿真应用。
考虑一个连续系统的状态反馈控制问题。当利用状态反馈控制器确定执行机构动作时,需要用传感器测量状态变量以便实现反馈。但在很多情况下,只有部分状态可以直接测量得到,其他状态不易测得或测量的成本很高,这时就需要采用状态估计器(如卡尔曼滤波器)针对系统的某些状态量来估计出不易测量的状态,并利用所有得到的状态根据状态反馈控制律获取执行机构的控制动作大小,从而形成一个闭环的状态反馈控制。其中要求所有的数据滤波和处理过程在数字处理系统(例如单片机、计算机或DSP)中实现,那么该系统涉及的信号既包括实际被控对象输出的模拟信号,也包括数据的数字处理过程,因此它是一个典型的数模混合控制系统,其结构示意图如图1所示:
该控制系统工作过程如下:将连续系统测量得到的模拟信号x(t)输入至采样器,每隔一定时间(采样周期)对x(t)进行采样,再经A/D转换器转换成数字量x(k),数字滤波器根据测量输出估计出系统的状态
考虑一个工业生产中广泛应用的连续搅拌反应釜(CSTR)的控制问题,其运动特性可以用以下非线性方程来描述[ 10]
:
(1) |
(3) |
(4) |
式中:C A和C B分别为组分A与组分B的浓度;T和T K分别为反应温度和冷却温度。ki(i=1,2,3)为反应速度;Δ
该系统的控制问题是通过实时调整系统的两个操作变量(物料进给率
现在考虑构建一个状态反馈控制系统。该状态反馈需要知道系统的4个状态,即进料浓度、进料温度、物料进给率和冷却套散热率,从现在的工艺条件或经济方面考虑,在此采用卡尔曼滤波的方法通过实时测量反应温度和冷却温度来在线估计浓度值并经控制器后得到状态值。
卡尔曼滤波方法是在Wiener平稳随机过程的滤波理论基础上建立的一种递推式滤波方法[ 11],可借助于前一时刻的滤波结果,递推出下一时刻的状态估计量,因而大大提高了下一时刻的滤波精度。卡尔曼滤波的数据处理过程实际上是离散的状态空间方程叠代求解的过程,需要借助混合控制系统中的数字处理单元来实现。在本文提出的仿真中,卡尔曼滤波器的运算过程以及数字控制器的处理过程通过周期性地调用M函数文件完成,而触发调用动作的模块由Simulink中带有脉冲信号发生器的触发子系统模块来实现。在编写M函数文件时利用外部全局变量来实现对历史数据的存储,并且运用evalin和assignin两个函数对历史数据进行读取与存储。
具体实现过程如下:
(1)选用端口与子系统(Ports & subsystems)模块库中的触发子系统(Triggered subsystem)模块模拟数字处理单元,如图2所示:
它是一个执行外部输入触发的子系统模块,其中的触发端口决定着该模块是否执行。
(2)触发端口的触发信号选用信号源(Sources)模块库中的脉冲信号发生器(Pulse generator)模块输出的信号。在该外接输入下,可模拟采样量化的特性,实现A/D转换的功能,其中矩形脉冲的周期近似为数字处理单元的采样周期,其大小往往根据具体的问题进行经验性设定[ 12]。
(3)在触发子系统输入输出端之间添加用户自定义函数(User-defined functions)模块库中的MATLAB函数(MATLAB Fun)模块,如图3所示:
在MATLAB函数模块中可以填写欲调用的函数名称或M函数文件名称,本文中该处由两个串联的函数组成,一个是卡尔曼滤波M函数,另一个是数字控制器M函数。
卡尔曼滤波过程即是周期性采集系统输入信号、并进行叠代求解的过程。因此在MATLAB实现时需要先进行某些变量的初始化。这里,编制M文件初始化状态估计的初值
x k+1= Ax k+ Gw k, y k= Hx k+ v k式中: x k∈R n为状态向量; y k∈R m为量测向量; v k∈R m为量测噪声; w k∈R p为系统噪声向量。
假设系统噪声和量测噪声是互不相关的零均值高斯白噪声,方差矩阵分别为 Q和 R。初始化后,数字控制器利用卡尔曼滤波器的状态估计值计算出控制量 u k,并将其保持至下一采样周期,送给执行机构。
连续搅拌反应釜( CSTR)系统是个典型的强非线性系统[ 13]。根据文献[10],获得组分 A最大产出率的系统稳定工作点为
[ CA, CB, T, TK,
[2 .14 mol/L,1 .09 mol/L,114 .2 ℃,112 .9 ℃,
14 .19 h -1, -1113 .5 kJ/h,5 .1 mol/L,104 .9 ℃]
设计状态反馈控制器首先需将 CSTR非线性系统进行线性化处理。将非线性系统(1)在工作点线性化,并重新定义无量纲状态
x1 =
x3 =
无量纲控制输入
u1 =
w1 =
可得系统在工作点的线性化模型:
用LQR方法或极点配置法可以求出反馈控制器增益 K,则执行机构控制动作可由控制规律 u( t) = K x( t)求得。
为了采用离散卡尔曼滤波方法,需要得到其离散线性状态空间方程。将非线性系统(1)在稳态工作点线性化并取采样时间为15 s,得到如下离散模型: x( k+1) = A x( k) + B u( k) + G w( k)
y( k) = C x( k) +v( k)式中:
A =
B =
G =
最后,用 MATLAB模块搭建 CSTR带有卡尔曼滤波器的状态反馈控制系统,如图4所示:
其中, CSTR系统由 Simulink模块搭建,卡尔曼滤波器(数字处理单元)由带有有脉冲信号发生器的触发子系统模块来模拟实现。
假设实际CSTR系统的初始状态为 x0=
Q =
将图5中状态反馈前后的响应曲线对比可知,经过状态反馈后系统响应的调节时间变短,响应速度加快,能迅速达到稳定状态,且无明显的超调,达到了预期的控制效果。
从图6、图7中观测控制量(物料进给率、冷却套散热率)可以看出,曲线呈明显的阶梯状,得知其在完成数字处理后又转化为模拟信号,即实现 D/A转换的功能,从而真实地模拟了周期性采集数据并处理数据的过程,最终实现了数模混合控制系统的仿真。
介绍了一种在Simulink中实现数字滤波控制的方法,就是利用带有信号发生器的触发子系统模块对连续信号进行分析、综合、滤波和估计等模拟数字处理的过程。以连续搅拌反应釜基于卡尔曼滤波的状态反馈控制问题为实例,在对Simulink中触发子系统模块的应用中,可以很好地周期调用由程序编写的卡尔曼滤波器和控制器对用模块搭建的连续系统实施在线滤波估计与控制,实现了数字处理。对这样构成的系统可以运用于一切数字滤波器对连续系统的滤波中,还可以扩展到数字控制器对连续系统的控制中,通用性较强。对CSTR系统进行仿真实现的操作过程及结果表明了该方法是简便、有效和可行的。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|
[11] |
|
[12] |
|
[13] |
|
[14] |
|