xptan 发表于 2007-10-10 22:12

神经元PID的问题


我现在做神经元PID控制,这是别人论文的图,不太明白加入了神经元S函数后,前面的输入为什么会是z-1/z,1,(z*z-2z+1)/z*z,按照神经元的理论前面应该是u(1)=e(k),u(2)=△e(k),u(3)=)=△e(k)*△e(k),不太明白为什么用Z变换,那两个式子代表什么意思,忘高手给我回复,谢谢

jack_boy 发表于 2007-10-11 08:10

z变换:(z-1)/Z对应l连续时间的e(k)-e(k-1),(z*z-2z+1)/z*z对应连续时间的e(k)-2e(k-1)+e(k-2)

单神经元pid用的是增量是pid算法,△u(k+1)=Kp*△e(k)+Ki*e(k)+Kd*,由于增量式pid是在离散时间内的pid算法,因此用z变换到离散域

u(3)的值应该是:u(3)=△e(k)*△e(k-1)吧,只要搞清s函数中w1,w2,w3与Kp,Ki,Kd的对应关系即可确定输入变量。
w1——Kp,w2——Ki,w3——Kd,输入可以是:u(1)=△e(k),u(2)=e(k),u(3)=e(k)-2e(k-1)+e(k-2)

lirui0662 发表于 2007-10-11 08:38

学习了

xptan 发表于 2007-10-11 15:23

jack_boy很感谢你的回答,我明白了
可是我看到有人的论文里的输入的Z变换是(z-1)/Z,(z-1)/Z,1,你觉得这对吗?还是必须是(z-1)/Z,(z*z-2z+1)/z*z,1,望回答,谢谢!

jack_boy 发表于 2007-10-11 15:50

原帖由 xptan 于 2007-10-11 15:23 发表 http://www.chinavib.com/forum/images/common/back.gif
jack_boy很感谢你的回答,我明白了
可是我看到有人的论文里的输入的Z变换是(z-1)/Z,(z-1)/Z,1,你觉得这对吗?还是必须是(z-1)/Z,(z*z-2z+1)/z*z,1,望回答,谢谢!

1、如果输入前是1/z,1/z,1的话,输入的是e(k-1),e(k-2),e(k)
2、如果输入前是(z-1)/Z,(z*z-2z+1)/z*z,1,输入就是e(k)-e(k-1),e(k-1)-2e(k-2)-1,e(k)

对于情况2可一直接与Kp,Ki,Kd相乘(但要注意对应关系)
而对于情况1,就要在s函数中对输入做相应的处理才能得到Δu(k):Δu(k)=Kp×+Ki×e(k)+Kd×

[ 本帖最后由 jack_boy 于 2007-10-11 16:13 编辑 ]

xptan 发表于 2007-10-11 15:54

看错了,他是两个(z-1)/Z相乘的,另外在仿真模块里有(z-1)/Z这个差分模块和自己设置的传函(z-1)/Z,能通用吗?在这里只能用(z-1)/Z的传函是吗?

jack_boy 发表于 2007-10-11 16:16

原帖由 xptan 于 2007-10-11 15:54 发表 http://www.chinavib.com/forum/images/common/back.gif
看错了,他是两个(z-1)/Z相乘的,另外在仿真模块里有(z-1)/Z这个差分模块和自己设置的传函(z-1)/Z,能通用吗?在这里只能用(z-1)/Z的传函是吗?

上一贴中有个错误,现在改过来了。

仿真模块里(z-1)/Z这个差分模块和自己设置的传函(z-1)/Z理论上讲应该没有区别,但我没有测试过。
也可以用1/z、,(z*z-2z+1)/z*z,只要符合你的输入要求都能用。

xptan 发表于 2007-10-11 16:56

谢谢,彻底搞定了,:victory:

jack_boy 发表于 2007-10-11 17:30

很厉害,比我强多了!
有机会一起探讨一下
页: [1]
查看完整版本: 神经元PID的问题