Matlab位置式数字PID控制器的m文件程序怎么写

Matlab位置式数字PID控制器的m文件程序怎么写,第1张

增量式PID算法的输出量为 ΔUn = Kp[(en-en-1)+(T/Ti)en+(Td/T)(en-2*en-1+en-2)] 式中,en、en-1、en-2分别为第n次、n-1次和n-2次的偏差值,Kp、Ti、Td分别为比例系数、积分系数和微分系数,T为采样周期。

虽然不太明白你的具体应用,电机2跟随的话那速度就是电机1相同的,是v1。一般双电机都是主电机出速度,副电机出扭矩。电机2的速度不用管,直接输出扭矩即可。

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的长度都是一样的,也就是都是一一对应的。如果中间缺时间向量,要注意自己仿真参数的设置的是否合理。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7862109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存