我正在尝试创建一个简单的控制器,但是不断收到有关增益块的错误消息,指出存在未定义的变量'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');
参数“ Gain”的“ Ex3_Controller / Gain”中的设置无效。造成的 通过: 使用HW12时出错(第57行) 评估“ Ex3_Controller / Gain”中的参数“ Gain”时出错 使用HW12时出错(第57行) 未定义的函数或变量“ u”。 使用HW12时出错(第57行) 变量“ u”不存在。 建议的动作: •将文件加载到“基础工作区”。 -修复 •创建一个新变量。 -修复
更新:从u
块中删除了gain
一词后,我收到了另一个错误:
使用硬件12时出错(第57行) 端口宽度或尺寸错误。 “ Ex3_Controller / Gain”的输出端口1是具有4个元素的一维向量。 使用HW12时出错(第57行) 端口宽度或尺寸错误。 “ Ex3_Controller / Model1”的输入端口1是具有1个元素的一维向量。
答案 0 :(得分:2)
Gain
块获取输入信号的值,然后将其乘以增益值。在您的情况下,增益为K
,这就是您需要放入增益块的全部操作(即删除*u
,Simulink会为您处理)。
完成后,得到的尺寸错误是因为控制器要求u
为标量,但是您要向其中输入4元素向量。您需要更改Gain
块的适当参数,以便进行矩阵乘法,将4×1矩阵K
并(矩阵)将其与4元素“输出”信号相乘产生标量。