工业智能控制行业经常提起建模,建模的本质是辨识被控对象,这个被控对象可以是加热炉的炉膛温度、锅炉的蒸汽压力、热风炉的拱顶温度、高炉的顶压等。线下编写程序时需要测试代码的控制效果,这时需要模拟现场,这种通过现场数据模拟出来的被控对象,当作虚拟现场。同样测试PID时就需要一个被控对象。

基于前两篇的基础上,通过数据反推传递函数。这里用到MATLAB系统辨识工具箱。

通过第一篇中得到的工作区数据进行反验证。

传递函数与激活函数 传递函数辨识_ide

辨识步骤如下

命令窗口中输入“ident”

传递函数与激活函数 传递函数辨识_ide_02


选择Import data中的Time domain data…;输入x、y数据,采样时间1s。点击Import,如果有提示,一直点击“是”即可。

传递函数与激活函数 传递函数辨识_ide_03


选择Estmate—>中的Process Models…,选取一介惯性加滞后模型,将滞后时间常数修改“inf”,点击Estimate。

传递函数与激活函数 传递函数辨识_matlab_04


辨识结果

传递函数与激活函数 传递函数辨识_传递函数与激活函数_05

50        Y(S)
  G(S) = exp(-100*s) * ---------- = -----
                       1000 s + 1    X(S)

辨识结果与第一篇给定传递函数一致。

注意:

%{
1、ident 工具箱 Sample time = 1(使用原始数据 x、y)
采样周期1秒 K=50、Tp1=1000、Td=100
2、ident 工具箱 Sample time = 1(使用处理数据 DTx、DTy)
采样周期10秒 K=50、Tp1=100、Td=10
3、ident 工具箱 Sample time = 10(使用处理数据 DTx、DTy)
采样周期10秒 K=50、Tp1=1000、Td=100

使用MATLAB工具箱(ident)辨识原始数据时,原始数据的采样时间要与工具箱的采样时间保持一致。如果原始数据经过处理(例如:间隔10取数),工具箱的采样时间也要设置10。这样才能辨识正确。

%}

% 数据处理
nn = 10;
DTx=x(1:nn:10000);
DTy=y(1:nn:10000);

尝试一:
将第一篇中的代码,“x=linspace(1, 1, 10000);”替换成“x = 100+(200-100)*rand(1,10000);”,重复以上辨识过程,辨识结果也是与第一篇给定传递函数一致,这里不再推导。(注意:一介惯性加滞后环节)

尝试二:
将第一篇中的数据x,y数据进行截取,去掉滞后数据,辨识数据由x,y替换成xx,yy,即xx=x(102:end);、yy=y(102:end);,重复以上辨识过程,辨识结果与第一篇给定传递函数中的一介惯性环节一致,这里不再推导。(注意:一介惯性环节)