我试图创建一个简单的控制器,但是不断地收到增益块的错误,说明存在一个未定义的变量'u‘。我不太理解Simulink,我现在只是尝试复制一个旧的家庭作业问题。这里的代码是作为解决方案提供的,但是当我试图运行它时仍然会收到错误。对可能发生的事情有什么见解吗?
I= 10; Wl= 5; k= 2; J= 1;
%set initial conditions
thetaIC= 0; phiIC= 0; x0= zeros(4,1);
%fix theta= 0, check output
[xe, ue]= trim('Ex3_System',x0,0,x0,1)
[A,B,~,~]= linmod('Ex3_System', xe, ue)
%choose your desired poles
p= linspace(-1.2,-1.5,4)
%recall the minus sign
K= -acker(A,B,p)
%perturb initial condition
thetaIC= deg2rad(5);
sim('Ex3_Controller');


参数“增益”在“EX3_Controller/增益”中的设置无效。原因:使用hw12 (第57行)错误计算‘EX3_Controller/增益’中的参数‘增益’错误使用hw12 (第57行)未定义的函数或变量'u‘。使用hw12 (第57行)变量'u‘时出错不存在。建议的操作:·将文件加载到“”。- Fix·创建一个新变量。-修正
更新:从u块中删除gain术语之后,我收到了一个不同的错误:
在端口宽度或尺寸上使用hw12 (第57行)错误。EX3_Controller/增益的输出端口1是一个具有4个单元的一维矢量。在端口宽度或尺寸上使用hw12 (第57行)错误。EX3_Controller/Model1 1的输入端口1是一个含有1个元素的一维矢量。
发布于 2018-11-28 16:13:41
Gain块获取输入信号的值并将其乘以增益的值。在您的示例中,增益是K,这就是您需要放入增益块的全部内容(即删除*u,Simulink为您处理这个问题)。
一旦完成,您所得到的维度错误是因为您的控制器需要u作为标量,但是您要向其中输入一个4元素向量。您需要更改Gain块的适当参数,以便它进行矩阵乘法,将4乘1矩阵K和(矩阵)与4元素"out“信号相乘以生成标量。
https://stackoverflow.com/questions/53512434
复制相似问题