主要内容

换热器传递函数模型的估计

这个例子展示了如何从测量的信号数据估计传递函数。

热交换器

在这个例子中,我们估计了热交换器的传递函数。热交换器由冷却剂温度、产品温度和干扰环境温度组成。我们将估计冷却剂到产品的温度传递函数。

配置测量数据

测量数据存储在MATLAB文件中,包括冷却剂温度变化的测量围绕一个标称和产品温度变化围绕一个标称。

负载iddemo_heatexchanger_data

收集测量数据使用iddata指挥并绘制它。

data = iddata (pt、ct、Ts);数据。InputName =“δCTemp \”;数据。InputUnit =“C”;数据。OutputName =“δPTemp \”;数据。OutputUnit =“C”;数据。TimeUnit =“分钟”;情节(数据)

传递函数估计

从这个问题的物理性质我们知道换热器可以用一个带延迟的一阶系统来描述。使用特遣部队指定一个极点,没有零和未知的输入/输出延迟来估计传递函数的命令。

sysTF =特遣部队(数据、1 0,南)
sysTF = From input "\Delta CTemp" to output "\Delta PTemp": 1.467 exp(-0.0483*s) * -------- s + 1.56连续时间识别的传递函数。参数化:极点数:1零数:0自由系数数:2参数及其不确定性使用“tfdata”、“getpvec”、“getcov”。状态:在时域数据“data”上使用TFEST估计。拟合估计数据:36% FPE: 0.02625, MSE: 0.02622

比较渣油命令允许我们调查估计模型与测量数据的匹配程度。

集(gcf,“DefaultAxesTitleFontSizeMultiplier”,1,...“DefaultAxesTitleFontWeight”“正常”...“位置”,[100 100 780 520]);渣油(sysTF、数据);

sysTF clf对比(数据)

从图中可以看出残差具有很强的相关性,这意味着在测量数据中存在估计模型没有充分捕捉到的信息。

初始系统的传递函数估计

之前我们从数据中估计了一个传递函数,但由于系统的顺序不包含太多的先验知识。从这个问题的物理学中,我们知道系统是稳定的,并且有正增益。检查测量数据,我们也知道输入/输出延迟大约是1/5分钟。我们使用这个信息来创建一个初始系统,并使用这个系统作为初始猜测来估计传递函数。

sysInit = idtf(NaN,[1 NaN], [1 NaN]),“ioDelay”、南);sysInit。TimeUnit =“分钟”

限制传递函数的分子和分母项,使系统稳定且增益为正。

sysInit.Structure.num.Value = 1;sysInit.Structure.num.Minimum = 0;sysInit.Structure.den.Value = [1 1];sysInit.Structure.den.Minimum = [0 0];

将输入/输出延迟限制在[0 1]分钟范围内,以1/5分钟作为初始值。

sysInit.Structure.ioDelay.Value = 0.2;sysInit.Structure.ioDelay.Minimum = 0;sysInit.Structure.ioDelay.Maximum = 1;

使用系统作为估计问题的初始猜测

sysInit sysTF_initialized =特遣部队(数据)
sysTF_initialized = From input "\Delta CTemp" to output "\Delta PTemp": 1.964 exp(-0.147*s) * --------- s + 2.115连续时间识别的传递函数。参数化:极点数:1零数:0自由系数数:2参数及其不确定性使用“tfdata”、“getpvec”、“getcov”。状态:在时域数据“data”上使用TFEST估计。拟合估计数据:54.09% FPE: 0.01351, MSE: 0.01349
渣油(sysTF_initialized、数据);

clf对比(数据、sysTF sysTF_initialized)

流程模型估计

在上面我们把估计问题当作一个传递函数估计问题处理,但是我们知道我们可以施加一些附加的结构。具体来说,热交换器系统是一阶时滞过程,或“P1D”模型,形式如下:

$ e ^ {-T_d年代}\压裂{K_p} {T_p s + 1} $

使用过程命令进一步将此结构施加到问题上。

sysP1D =过程(数据,“P1D”
sysP1D =具有传递函数的过程模型:Kp G(s) = ---------- * exp(-Td*s) 1+Tp1*s Kp = 0.90548 Tp1 = 0.32153 Td = 0.25435参数化:{'P1D'}自由系数数:3参数及其不确定性使用“getpvec”、“getcov”。状态:使用PROCEST对时域数据“data”进行估计。拟合估算数据:70.4% FPE: 0.005614, MSE: 0.005607
渣油(sysP1D、数据);

clf对比(数据、sysTF sysTF_initialized sysP1D)

过程模型带有干扰模型的估计

到目前为止所做的所有估计的残差图显示残差相关性仍然很高,这意味着模型不够丰富,不足以解释测量数据中的所有信息。关键的缺失部分是干扰环境温度,我们还没有包括在模型中。

创建一个带有延迟和时间常数限制的“P1D”过程模型,并将其作为估计问题的初始猜测。

sysInit = idproc (“P1D”“TimeUnit”“分钟”);

限制模型具有正增益,延迟在[0 1]分钟范围内。

sysInit.Structure.Kp.Value = 1;sysInit.Structure.Kp.Minimum = 0;sysInit.Structure.Tp1。值= 1;sysInit.Structure.Tp1。最大= 10;sysInit.Structure.Td.Value = 0.2;sysInit.Structure.Td.Minimum = 0;sysInit.Structure.Td.Maximum = 1;

指定使用一阶模型(‘ARMA1’)来表示干扰分量的选项。使用模板模型sysInit以及估计模型的选项集。

选择= procestOptions (“DisturbanceModel”“ARMA1”);sysP1D_noise =过程(数据、sysInit选择)
sysP1D_noise =流程模型传递函数:Kp G (s ) = ---------- * exp (Td * s) 1 + Tp1 * s Kp Td = 0.24833 = 0.91001 Tp1 = 0.3356的添加剂ARMA扰动模型估计y = G u + (C / D) e C (s) = s + 591.6 D (s) = s + 3.217参数化:{“P1D”}很多免费的系数:5参数及其不确定性使用“getpvec”、“getcov”。状态:使用PROCEST对时域数据“data”进行估计。拟合估计数据:96.86%(预测焦点)FPE: 6.307 - e-05, MSE: 6.294e-05
渣油(sysP1D_noise、数据);

clf对比(数据、sysTF sysTF_initialized、sysP1D sysP1D_noise)

残差图清楚地表明残差是不相关的,这意味着我们有一个模型来解释测量数据。在模型的“NoiseTF”特性中,我们估计的“ARMA1”扰动分量被存储为分子和分母值。

sysP1D_noise。NoiseTF
Ans = struct with fields: num: {[1 591.6038]} den: {[1 3.2172]}

比较不同模型

虽然我们已经确定了一个模型来解释测量数据,但我们注意到模型适合测量数据的比例约为70%。拟合值的损失是环境温度扰动的强烈影响的结果,如下所示。

实测数据来自Simulink模型,其精确值如下(d为高斯噪声扰动)万博1manbetx

y = (1 pi / 100) * exp(-15年代)/ (21.3 s + 1) * u + 1 / (25 + 1) * d

用这些值创建一个“P1D”模型,看看该模型与测量数据的吻合程度如何。

sysReal = idproc (“P1D”“TimeUnit”“分钟”);sysReal。Kp = 1 pi / 100;sysReal。Td = 15/60;sysReal。Tp1 = 21.3/60;sysReal。NoiseTF= struct(“num”{[10000]},“窝”{0.04 [1]});
比较(数据、sysReal sysTF、sysTF_initialized sysP1D, sysP1D_noise);

对比图显示,真实系统与实测数据的拟合率也在70%左右,这证实了我们的估计模型在拟合实测数据方面并不比真实模型差——这是环境温度扰动的强烈影响的结果。

额外的信息

有关使用“系统识别工具箱”识别动态系统的更多信息,请访问系统辨识工具箱产品信息页面。