• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

关于PID算法!

我一直在听说什么PID算法在PWM控制中的应用,可是一直对这个不是很了解,不知道哪位dx知道它的原理或者是这方面的资料,我在网上查过,只有一些很复杂的应用!所以想知道它的基本原理啊!谢谢
全部回复(39)
正序查看
倒序查看
2005-01-09 01:24
向你推荐一本书《新型PID控制及其应用〉机械工业出版社
0
回复
2005-01-10 09:30
@chenjianyong
向你推荐一本书《新型PID控制及其应用〉机械工业出版社
我比较想知道它在软件方面的应用,不知道这本书介绍了没有???
0
回复
2005-01-10 14:30
@chengkai422
我比较想知道它在软件方面的应用,不知道这本书介绍了没有???
这本书介绍了各种PID算法及其软件流程图,但好像没有具体程序,如果用c编程,应该不是很复杂.
0
回复
hovers
LV.2
5
2005-01-12 10:53
买本书看看即可,汇编大概10多行搞定
0
回复
2005-01-12 15:20
@hovers
买本书看看即可,汇编大概10多行搞定
就是不知道要看什么样的书啊!大哥,介绍一下啊!
0
回复
ahai0306
LV.4
7
2005-01-12 15:37
@chengkai422
就是不知道要看什么样的书啊!大哥,介绍一下啊!
我也想知道!ahai0306@sina.com
0
回复
hovers
LV.2
8
2005-01-14 08:41
@chengkai422
就是不知道要看什么样的书啊!大哥,介绍一下啊!
北航出版社
电动机的dsp控制
王晓明 编著
0
回复
2005-01-15 20:57
@hovers
北航出版社电动机的dsp控制王晓明编著
关于PID控制的算法?1105793847.pdf
0
回复
2005-01-15 21:01
@chenjianyong
这本书介绍了各种PID算法及其软件流程图,但好像没有具体程序,如果用c编程,应该不是很复杂.
PID控制的算法1105794032.pdf
0
回复
2005-01-16 23:58
@小林电源
PID控制的算法1105794032.pdf
谢谢这位兄弟,我下了,很有帮助.:)
0
回复
bldc
LV.1
12
2005-01-18 17:34
@hovers
北航出版社电动机的dsp控制王晓明编著
这本书很一般
0
回复
chengkai422
LV.6
13
2005-01-20 09:51
@hovers
买本书看看即可,汇编大概10多行搞定
For example???
0
回复
hovers
LV.2
14
2005-01-20 13:15
@chengkai422
Forexample???
0
回复
chengkai422
LV.6
15
2005-01-20 16:27
@hovers
1106198110.doc
您这是用什么语言写的啊!大哥!
0
回复
hovers
LV.2
16
2005-01-20 17:13
@chengkai422
您这是用什么语言写的啊!大哥!
dsp 2407a的汇编语言
其实买本书就的了,没必要这么麻烦
pid的差分方程为
U(n)=U(n-1)+Kp(En-E(n-1)+Ki*En+Kd(En-2E(n-1)+E(n-2)))
Un为输出
En为输入
0
回复
gunking
LV.4
17
2005-01-21 03:25
@hovers
dsp2407a的汇编语言其实买本书就的了,没必要这么麻烦pid的差分方程为U(n)=U(n-1)+Kp(En-E(n-1)+Ki*En+Kd(En-2E(n-1)+E(n-2)))Un为输出En为输入
简单些就是
u(k)=u(k-1)+a*e(k)-b*e(k-1)+c*e(k-2)
u(k)是当前要输出的duty cycle
e(k)是当前误差.
a b c是控制参数,
其实可以用查表法,这样就不用耗时的乘法了,查表一加就得下一个dutycycle的值.这样快很多
我的论文就是这个topic
0
回复
chengkai422
LV.6
18
2005-01-21 15:08
@gunking
简单些就是u(k)=u(k-1)+a*e(k)-b*e(k-1)+c*e(k-2)u(k)是当前要输出的dutycyclee(k)是当前误差.abc是控制参数,其实可以用查表法,这样就不用耗时的乘法了,查表一加就得下一个dutycycle的值.这样快很多我的论文就是这个topic
推荐一本书看看吧,你的论文是什么级别的?是本科还是硕士论文?
0
回复
dachun
LV.3
19
2005-01-25 09:57
哪位老大有模糊控制方面的资料?给点看看吧chun912@163.com
0
回复
rpower
LV.4
20
2005-02-18 18:34
@hovers
买本书看看即可,汇编大概10多行搞定
汇编10多行搞定,那就需要极高的本事了,这个东西没有这么简单的!
0
回复
xyx911
LV.7
21
2005-03-28 10:38
@dachun
哪位老大有模糊控制方面的资料?给点看看吧chun912@163.com
PID公式计算汇编全程序(不包括输入输出),三字节浮点数增量型PID1111977503.doc
0
回复
jamsdbx
LV.1
22
2005-03-30 22:04
@xyx911
PID公式计算汇编全程序(不包括输入输出),三字节浮点数增量型PID1111977503.doc
在学校曾跟导师做过单片机控制的电源驱动系统,我主要负责PID控制算法,感觉程序比较简单,但调试比较烦,主要是P,I,D三个参数比较难调.
0
回复
jjok809
LV.1
23
2005-04-05 10:36
@jamsdbx
在学校曾跟导师做过单片机控制的电源驱动系统,我主要负责PID控制算法,感觉程序比较简单,但调试比较烦,主要是P,I,D三个参数比较难调.
这位仁兄,我是大四的学生,正在做有关于PID算法的毕业设计,名字叫《全数字伺服系统》,用单片机控制直流步进电机的转角,正转反转.采用闭环控制,也就是用到PID算法.现在问题是,我对那算法一点头绪都没有,因为是第一次接触这东西,能够帮我个忙不?教我怎么着手编这程序,电路图如下,谢谢各位啊500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}" onmousewheel="return imgzoom(this);">
0
回复
purcharse
LV.1
24
2005-04-08 18:06
@jjok809
这位仁兄,我是大四的学生,正在做有关于PID算法的毕业设计,名字叫《全数字伺服系统》,用单片机控制直流步进电机的转角,正转反转.采用闭环控制,也就是用到PID算法.现在问题是,我对那算法一点头绪都没有,因为是第一次接触这东西,能够帮我个忙不?教我怎么着手编这程序,电路图如下,谢谢各位啊[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}"onmousewheel="returnimgzoom(this);">
  我这有一个用单片机c写的pid算法,用的是归一化整定pid参数.控制两个电机,可以供大家参考,程序是测试,电机用的,不是太成熟.
  系统也是8051内核的单片,用的i/o接口是8155就是了,驱动器是自己做的,是电磁式的,所以频率不高,因而控制作用不明显.
还有一个问题是8051的单片,也就12mhz的频率,8位的汇编没有固化的乘法,作起乘法就是四十个周期,这是不是算法效果不明显的另一个原因.
  我也希望得到高手的指点,看看作用不明显的原因
1112954814.c
0
回复
purcharse
LV.1
25
2005-04-08 18:08
@jjok809
这位仁兄,我是大四的学生,正在做有关于PID算法的毕业设计,名字叫《全数字伺服系统》,用单片机控制直流步进电机的转角,正转反转.采用闭环控制,也就是用到PID算法.现在问题是,我对那算法一点头绪都没有,因为是第一次接触这东西,能够帮我个忙不?教我怎么着手编这程序,电路图如下,谢谢各位啊[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}"onmousewheel="returnimgzoom(this);">
哥们,你们导师给你的题目吧?
你确定用单片能胜任吗?
0
回复
jamsdbx
LV.1
26
2005-04-09 10:01
@jjok809
这位仁兄,我是大四的学生,正在做有关于PID算法的毕业设计,名字叫《全数字伺服系统》,用单片机控制直流步进电机的转角,正转反转.采用闭环控制,也就是用到PID算法.现在问题是,我对那算法一点头绪都没有,因为是第一次接触这东西,能够帮我个忙不?教我怎么着手编这程序,电路图如下,谢谢各位啊[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}"onmousewheel="returnimgzoom(this);">
算法就是你解决一个问题的方法,是程序编写的依据.PID算法是一种过程控制算法,就是对误差信号(采样信号与给定信号的差)通过比例,积分,微分的运算后的结果作为输出控制信号,来控制所要控制的对象.PID算法有个标准公式,已经很成熟了,不用你再研究,你只要把那个公式变为程序就行.你这个课题很典型,贴片机(如松下,三洋)上都是使用伺服马达,架构类似.伺服马达与步进马达不同,伺服马达要求在某一时刻能转到某一具体位置,控制精度很高,步进马达则不要求达到具体位置,如控制汽缸活塞就使用步进马达,它只要控制活塞的上和下.所以伺服马达才使用PID控制算法.PID控制算法有位置式和增量式两种,你是通过正负脉冲的数量作为输出控制,不存在误差的积累,可以采用位置式.我以前做的是温度控制,也是采用PID算法,你可以参考1113012047.rar
0
回复
longhyh
LV.1
27
2005-04-11 20:33
@jamsdbx
算法就是你解决一个问题的方法,是程序编写的依据.PID算法是一种过程控制算法,就是对误差信号(采样信号与给定信号的差)通过比例,积分,微分的运算后的结果作为输出控制信号,来控制所要控制的对象.PID算法有个标准公式,已经很成熟了,不用你再研究,你只要把那个公式变为程序就行.你这个课题很典型,贴片机(如松下,三洋)上都是使用伺服马达,架构类似.伺服马达与步进马达不同,伺服马达要求在某一时刻能转到某一具体位置,控制精度很高,步进马达则不要求达到具体位置,如控制汽缸活塞就使用步进马达,它只要控制活塞的上和下.所以伺服马达才使用PID控制算法.PID控制算法有位置式和增量式两种,你是通过正负脉冲的数量作为输出控制,不存在误差的积累,可以采用位置式.我以前做的是温度控制,也是采用PID算法,你可以参考1113012047.rar
请问一下PID公式当中的参数应该怎么确定,如果仅仅是这么一个公式,编一个程序当然并不困难
0
回复
jamsdbx
LV.1
28
2005-04-11 21:48
@longhyh
请问一下PID公式当中的参数应该怎么确定,如果仅仅是这么一个公式,编一个程序当然并不困难
PID参数的确定有两种方法,一种是实验法,通过阶跃响应来确定,主要测响应的延迟时间,再通过一些公式逐步确定P,I,D三个参数.另一种方法是试凑法,先将I参数设定为最大,D参数为最小,逐步增大P值,当输出刚过稳定值时,再调I和D值,反复调整,直到系统为最佳.调的时候首先要了解三个参数对系统的影响.
0
回复
小心
LV.1
29
2005-06-02 21:40
我看了看,一个汇编的PID算法,要大约200行左右
0
回复
小心
LV.1
30
2005-06-03 09:06
@小心
我看了看,一个汇编的PID算法,要大约200行左右
PID系统中的TI TD 的参数从什么地方得到呀.我很初级的.
0
回复
ggfish
LV.1
31
2005-12-11 14:34
@rpower
汇编10多行搞定,那就需要极高的本事了,这个东西没有这么简单的!
新手求助:
本人大四,刚刚接触微机控制的PID算法,用的教材是清华大学于海生的《微机控制技术》.
今天在写第四章作业习题4.4时,卡住了……      500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/36/1134282273.gif');}" onmousewheel="return imgzoom(this);">
因为书上前面有这样的介绍
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/36/1134282400.gif');}" onmousewheel="return imgzoom(this);">
这下子我就胡涂了,为什么习题4.4的传递函数D(s)的分母还有常数项1?我该怎样求解Kp、Ti、Td??
书上没有相应例题……还望前辈高人点拨一下小弟,这道题该怎么解?谢谢^_^QQ:85508001
0
回复