PID,呵呵,其实就是扭矩内环+速度外环。至于电机2,就只有扭矩内环了,PI就可以。电机2的扭矩内环频带要慢于电机1的速度外环。另外,电机1和电机2如果功率相似的话,这个速度输出容易产生振荡,这取决于你的功率等级和PID参数。具体调试的话,要么你自己很懂,要么只能找个懂的人了,百度知道上要弄明白有点难度。
能具体一点吗?如果你要调用SIMULINK
直接建一个模型
sim调用 在sim模型中 设置一个 go workplace模块 返回。。。
关于to workspace模块2008年05月24日 12:06注:test45.mdl可以在“下载程序”中下载。
to workspace模块的使用你可以自己再百度下,下面给一个简单的说明:
to workspace的采样时间,我们一般只需要添-1就可以了,代表继承前面的采样时间,最好不要随便改动,如果要改,也要整体的采样时间不能有冲突。
我自己做了一个简单的负反馈控制系统的例子,用了下to workspace模块,结果工作空间中有了这样的数据:
>>whos
Name SizeBytes Class Attributes
simout 1x1 1226 struct
tout54x1 432 double
可以看出来,tout就是默认的输出的时间变量的名字,simout就是输出信号的默认的名字,你可以更改它的名字,另外,还有一个选项可以让时间变量也变为simout中的一个数据域。就是to workspace中选项中的save format选struct with time,然后再次运行程序可以看出,工作空间中只有一个数据:
>>whos
Name SizeBytes Class Attributes
simout 1x1 1658 struct
tout54x1 432 double
>>simout
simout =
time: [54x1 double]
signals: [1x1 struct]
blockName: 'untitled/To Workspace'
>>[length(simout.time) length(simout.signals.values)]
ans =
5454
同时,也会给出如下的警告:
Warning: Using a default value of 0.2 for maximum step size. The simulation step size will be equal to or less than this
value. You can disable this diagnostic by setting 'Automatic solver parameter selection' diagnostic to 'none' in the
Diagnostics page of the configuration parameters dialog.
但是时间数据和输出数据还是会对应的。如果不对应可能就是模型有关系,看看具体的警告有什么区别。
其实,如果不行,我们还可以用命令行仿真来代替。这样的话,我们需要在输出的地方加上out模块。
然后在命令窗口:
[t,x,y]=sim('test45',[0 10])
这样我们可以得到仿真的时间向量t,状态xiangliangx,和输出向量y。然后可以用plot(t,y)来看看仿真波形。
当然也可以设置仿真的参数,如求解器等,可以通过help sim命令来看看可以设置那些参数。
这样得到的t,x,y的长度都是一样的,也就是都是一一对应的。如果中间缺时间向量,要注意自己仿真参数的设置的是否合理。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)