PID调节控制做电机速度控制
V1.1 – Jan 23, 2006
中文版
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 1 V1.1 – Jan 23, 2006
版权声明
凌阳科技股份有限公司保留对此文件修改之权利且不另行
通知
关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知
。凌阳科技股份有限公司所提供之信息相信为正确且
可靠之信息,但并不保证本文件中绝无错误。请于向凌阳科技股份有限公司提出订单前,自行确定所使用之相关技
术文件及规格为最新之版本。若因贵公司使用本公司之文件或产品,而涉及第三人之专利或著作权等智能财产权之
应用及配合时,则应由贵公司负责取得同意及授权,本公司仅单纯贩售产品,上述关于同意及授权,非属本公司应
为保证之责任。又未经凌阳科技股份有限公司之正式书面许可,本公司之所有产品不得使用于医疗器材,维持生命
系统及飞航等相关设备。
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 2 V1.1 – Jan 23, 2006
目录
页
1 模拟PID控制 ...................................................................................................................................... 1
1.1 模拟PID控制原理 ...................................................................................................................... 1
2 数字PID控制 ...................................................................................................................................... 3
2.1 位置式PID算法 .......................................................................................................................... 3
2.2 增量式PID算法 .......................................................................................................................... 4
2.3 控制器参数整定 ......................................................................................................................... 4
2.3.1 凑试法........................................................................................................................... 5
2.3.2 临界比例法................................................................................................................... 5
2.3.3 经验法........................................................................................................................... 5
2.3.4 采样周期的选择........................................................................................................... 6
2.4 参数调整规则的探索 ................................................................................................................. 6
2.5 自校正PID控制器 ...................................................................................................................... 7
3 软件说明............................................................................................................................................. 8
3.1 软件说明 ..................................................................................................................................... 8
3.2 档案构成 ..................................................................................................................................... 8
3.3 DMC界面.................................................................................................................................... 8
3.4 子程序说明 ................................................................................................................................. 9
4 程序范例........................................................................................................................................... 16
4.1 DEMO程序 ............................................................................................................................... 16
4.2 程序流程与说明 ....................................................................................................................... 19
4.3 中断子流程与说明 ................................................................................................................... 20
5 MCU使用资源 ................................................................................................................................. 21
5.1 MCU硬件使用资源说明 .......................................................................................................... 21
6 实验测试........................................................................................................................................... 22
6.1 响应曲线 ................................................................................................................................... 22
7 参考文献........................................................................................................................................... 26
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 3 V1.1 – Jan 23, 2006
修订记录
日期 版本 编写及修订者 编写及修订说明
2004/11/26 1.0 初版
2006/1/23 1.1 错误校正
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 1 V1.1 – Jan 23, 2006
1 模拟 PID控制
将偏差的比例(Proportion)、积分(Integral)和微分(Differential)通过线性组合构成控制量,
用这一控制量对被控对象进行控制,这样的控制器称 PID控制器。
1.1 模拟 PID控制原理
在模拟控制系统中,控制器最常用的控制规律是 PID控制。为了说明控制器的工作原理,先看
一个例子。如图 1-1所示是一个小功率直流电机的调速原理图。给定速度 与实际转速进行比
较 ,其差值 ,经过 PID 控制器调整后输出电压控制信号 , 经过功
率放大后,驱动直流电动机改变其转速。
)(0 tn
)(tn )()()( 0 tntnte −= )(tu )(tu
PID控制器 直流电机
)(0 tn )(te )(tu
)(tn
-
+
图 1-1 小功率直流电机调速系统
常规的模拟 PID控制系统原理框图如图 1-2所示。该系统由模拟 PID控制器和被控对象组成。
图中, 是给定值, 是系统的实际输出值,给定值与实际输出值构成控制偏差 )(r t )(y t )(te
)(y)(r)( ttte −= (式 1-1)
)(te 作为 PID控制的输入, 作为 PID控制器的输出和被控对象的输入。所以模拟 PID控制器的
控制规律为
)(tu
])()(1)([)(u
0 dt
tdeTddtte
Ti
teKpt
t ++= ∫ (式 1-2)
其中: ―― 控制器的比例系数 Kp
-- 控制器的积分时间,也称积分系数 Ti
―― 控制器的微分时间,也称微分系数 Td
比例
积分
微分
被控对象)(r t +
-
+
+
+
)(tu )(y t)(te
图 1-2 模拟 PID控制系统原理图
1、 比例部分
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 2 V1.1 – Jan 23, 2006
比例部分的数学式表示是: )(* teKp
在模拟 PID 控制器中,比例环节的作用是对偏差瞬间作出反应。偏差一旦产生控制器立即产生
控制作用,使控制量向减少偏差的方向变化。控制作用的强弱取决于比例系数 ,比例系数 越
大,控制作用越强,则过渡过程越快,控制过程的静态偏差也就越小;但是 越大,也越容易产生
振荡,破坏系统的稳定性。故而,比例系数 选择必须恰当,才能过渡时间少,静差小而又稳定的
效果。
Kp Kp
Kp
Kp
2、 积分部分
积分部分的数学式表示是: ∫t dtteTiKp 0 )(
从积分部分的数学表达式可以知道,只要存在偏差,则它的控制作用就不断的增加;只有在偏
差 时,它的积分才能是一个常数,控制作用才是一个不会增加的常数。可见,积分部分可以
消除系统的偏差。
0)( =te
积分环节的调节作用虽然会消除静态误差,但也会降低系统的响应速度,增加系统的超调量。
积分常数 越大,积分的积累作用越弱,这时系统在过渡时不会产生振荡;但是增大积分常数 会
减慢静态误差的消除过程,消除偏差所需的时间也较长,但可以减少超调量,提高系统的稳定性。
当Ti较小时,则积分的作用较强,这时系统过渡时间中有可能产生振荡,不过消除偏差所需的时间
较短。所以必须根据实际控制的具体要求来确定Ti。
Ti Ti
3、 微分部分
微分部分的数学式表示是:
dt
tdeTdKp )(*
实际的控制系统除了希望消除静态误差外,还要求加快调节过程。在偏差出现的瞬间,或在偏
差变化的瞬间,不但要对偏差量做出立即响应(比例环节的作用),而且要根据偏差的变化趋势预先
给出适当的纠正。为了实现这一作用,可在 PI控制器的基础上加入微分环节,形成 PID控制器。
微分环节的作用使阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变
化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。微分作用的引入,将有助
于减小超调量,克服振荡,使系统趋于稳定,特别对髙阶系统非常有利,它加快了系统的跟踪速度。
但微分的作用对输入信号的噪声很敏感,对那些噪声较大的系统一般不用微分,或在微分起作用之
前先对输入信号进行滤波。
微分部分的作用由微分时间常数Td决定。Td越大时,则它抑制偏差 变化的作用越强;Td
越小时,则它反抗偏差 变化的作用越弱。微分部分显然对系统稳定有很大的作用。
)(te
)(te
适当地选择微分常数Td,可以使微分作用达到最优。
由于计算机的出现,计算机进入了控制领域。人们将模拟 PID控制规律引入到计算机中来。对
(式 1-2)的 PID控制规律进行适当的变换,就可以用软件实现 PID控制,即数字 PID控制。
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 3 V1.1 – Jan 23, 2006
2 数字 PID控制
数字式 PID控制算法可以分为位置式 PID和增量式 PID控制算法。
2.1 位置式 PID算法
由于计算机控制是一种采样控制,它只能根据采样时刻的偏差计算控制量,而不能像模拟控制
那样连续输出控制量量,进行连续控制。由于这一特点(式 1-2)中的积分项和微分项不能直接使
用,必须进行离散化处理。离散化处理的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
为:以T 作为采样周期, 作为采样序号,则离散采
样时间 对应着连续时间 ,用矩形法数值积分近似代替积分,用一阶后向差分近似代替微分,可
作如下近似变换:
k
kT t
(式 2-1)
上式中,为了表示的方便,将类似于 简化成 等。 )(kTe ke
将(式 2-1)代入(式 1-2),就可以得到离散的 PID表达式为
][ 1
0 T
eeTde
Ti
TeKpu kk
k
j
jkk
−
=
−++= ∑ (式 2-2)
或
)( 1
0
* −
=
−++= ∑ kkk
j
jkk eeKdeKieKpu (式 2-3)
其中 k―― 采样序号, k=0,1,2,……;
―― 第ku k次采样时刻的计算机输出值;
―― 第ke k次采样时刻输入的偏差值;
―― 第1ke - k-1次采样时刻输入的偏差值;
――积分系数,Ki TiTKpKi *= ;
――微分系数,Kd TTdKpKd *= ;
如果采样周期足够小,则(式 2-2)或(式 2-3)的近似计算可以获得足够精确的结果,离
散控制过程与连续过程十分接近。
(式 2-2)或(式 2-3)表示的控制算法式直接按(式 1-2)所给出的 PID控制规律定义进
行计算的,所以它给出了全部控制量的大小,因此被称为全量式或位置式 PID控制算法。
这种算法的缺点是:由于全量输出,所以每次输出均与过去状态有关,计算时要对 进行累加,ke
www.plczone.com
fumaoyan
矩形
fumaoyan
打字机
自己推导下U(k)-U(k-1)就直接可以得出增量式的式子,但是这里的系数
才是真正的Kp,Ki,Kd
fumaoyan
矩形
fumaoyan
箭头
fumaoyan
矩形
fumaoyan
矩形
fumaoyan
矩形
fumaoyan
矩形
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 4 V1.1 – Jan 23, 2006
工作量大;并且,因为计算机输出的 对应的是执行机构的实际位置,如果计算机出现故障,输出
的 将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,这在实生产
际中是不允许的。
ku
ku
增量式 PID控制算法可以避免着重现象发生。
2.2 增量式 PID算法
所谓增量式 PID是指数字控制器的输出只是控制量的增量 ku∆ 。当执行机构需要的控制量是增
量,而不是位置量的绝对数值时,可以使用增量式 PID控制算法进行控制。
增量式 PID 控制算法可以通过(式 2-2)推导出。由(式 2-2)可以得到控制器的第 k-1
个采样时刻的输出值为:
][ 21
1
0
11 T
eeTde
Ti
TeKpu kk
k
j
jkk
−
=
−++= ∑ ---- (式 2-4)
将(式 2-2)与(式 2-4)相减并整理,就可以得到增量式 PID控制算法公式为:
21
21
21
11
))21()1(
)2(
−
−
−
++=
++++=
+−++=∆
kkk
kkk
kkk
kkkkkk
CeBeAe
e
T
TdKpe
T
TdKpe
T
Td
Ti
TKp
T
eeeTde
Ti
TeeKpuuu
-
-
-
--
-
--=
(式 2-5)
其中 A = )1(
T
Td
Ti
TKp ++ ;
B = )21(
T
TdKp + ;
C =
T
TdKp 。
由(式 2-5)可以看出,如果计算机控制系统采用恒定的采样周期T ,一旦确定 A、B、C,
只要使用前后三次测量的偏差值,就可以由(式 2-5)求出控制量。
增量式 PID 控制算法与位置式 PID 算法(式 2-2)相比,计算量小的多,因此在实际中得到
广泛的应用。
而位置式 PID控制算法也可以通过增量式控制算法推出递推计算公式:
kkk uuu ∆+= -1 (式 2-6)
(式 2-6)就是目前在计算机控制中广泛应用的数字递推 PID控制算法。
2.3 控制器参数整定
控制器参数整定:指决定调节器的比例系数 、积分时间Ti、微分时间Td和采样周期Ts的Kp
www.plczone.com
Administrator
Õý·½ÐÎ
Administrator
Õý·½ÐÎ
¸ÃÎĵµÓÉ Foxit Reader ±à¼
fumaoyan
打字机
-
fumaoyan
矩形
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 5 V1.1 – Jan 23, 2006
具体数值。整定的实质是通过改变调节器的参数,使其特性和过程特性相匹配,以改善系统的动态
和静态指标,取得最佳的控制效果。
整定调节器参数的方法很多,归纳起来可分为两大类,即理论计算整定法和工程整定法。理论
计算整定法有对数频率特性法和根轨迹法等;工程整定法有凑试法、临界比例法、经验法、衰减曲
线法和响应曲线法等。工程整定法特点不需要事先知道过程的数学模型,直接在过程控制系统中进
行现场整定方法简单、计算简便、易于掌握。
2.3.1 凑试法
按照先比例(P)、再积分(I)、最后微分(D)的顺序。
置调节器积分时间Ti =∞,微分时间Td =0,在比例系数 按经验设置的初值条件下,将系统
投入运行,由小到大整定比例系数 。求得满意的 1/4衰减度过渡过程曲线。
Kp
Kp
引入积分作用(此时应将上述比例系数 设置为 5/6 )。将Ti由大到小进行整定。 Kp Kp
若需引入微分作用时,则将Td按经验值或按Td =(1/3~1/4) 设置,并由小到大加入。 Ti
2.3.2 临界比例法
在闭环控制系统里,将调节器置于纯比例作用下,从小到大逐渐改变调节器的比例系数,得到
等幅振荡的过渡过程。此时的比例系数称为临界比例系数 ,相邻两个波峰间的时间间隔,称为临
界振荡周期Tu。
Ku
临界比例度法步骤:
1、将调节器的积分时间 置于最大(Ti =∞),微分时间置零(Td =0),比例系数 适当,
平衡操作一段时间,把系统投入自动运行。
Ti Kp
2、将比例系数 逐渐增大,得到等幅振荡过程,记下临界比例系数 和临界振荡周期Tu值。 Kp Ku
3、根据 和 值,采用经验公式,计算出调节器各个参数,即 、 和Td的值。 Ku Tu Kp Ti
按“先 P 再 I 最后 D”的操作程序将调节器整定参数调到计算值上。若还不够满意,可再作进一
步调整。
临界比例度法整定注意事项:
有的过程控制系统,临界比例系数很大,使系统接近两式控制,调节阀不是全关就是全开,对
工业生产不利。
有的过程控制系统,当调节器比例系数 调到最大刻度值时,系统仍不产生等幅振荡,对此,
就把最大刻度的比例度作为临界比例度 进行调节器参数整定。
Kp
Ku
2.3.3 经验法
用凑试法确定 PID参数需要经过多次反复的实验,为了减少凑试次数,提高工作效率,可以借
鉴他人的经验,并根据一定的要求,事先作少量的实验,以得到若干基准参数,然后按照经验公式,
用这些基准参数导出 PID控制参数,这就是经验法。
临界比例法就是一种经验法。这种方法首先将控制器选为纯比例控制器,并形成闭环,改变比
例系数,使系统对阶跃输入的响应达到临界状态,这时记下比例系数 、临界振荡周期为Tu,根Ku
www.plczone.com
fumaoyan
矩形
fumaoyan
下划线
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 6 V1.1 – Jan 23, 2006
据 Z-N提供的经验公式,就可以由这两个基准参数得到不同类型控制器的参数,如表 2-1所示。
表 2-1 临界比例法确定的模拟控制器参数
控制器类型 Kp Ti Td
P 0.5 Ku
PI 0.45 Ku 0.85Tu
PID 0.6 Ku 0.5Tu 0.12Tu
这种临界比例法使针对模拟 PID控制器,对于数字 PID控制器,只要采样周期取的较小,原则
上也同样使用。在电动机的控制中,可以先采用临界比例法,然后在采用临界比例法求得结果的基
础上,用凑试法进一步完善。
表 2-1的控制参数,实际上是按衰减度为 1/4时得到的。通常认为 1/4的衰减度能兼顾到稳定
性和快速性。如果要求更大的衰减,则必须用凑试法对参数作进一步的调整。
2.3.4 采样周期的选择
香农(Shannon)采样定律 :为不失真地复现信号的变化,采样频率至少应大于或等于连续
信号最高频率分量的二倍。根据采样定律可以确定采样周期的上限值。实际采样周期的选择还要受
到多方面因素的影响,不同的系统采样周期应根据具体情况来选择。
采样周期的选择,通常按照过程特性与干扰大小适当来选取采样周期:即对于响应快、(如流
量、压力)波动大、易受干扰的过程,应选取较短的采样周期;反之,当过程响应慢(如温度、成
份)、滞后大时,可选取较长的采样周期。
采样周期的选取应与PID参数的整定进行综合考虑,采样周期应远小于过程的扰动信号的周期,
在执行器的响应速度比较慢时,过小的采样周期将失去意义,因此可适当选大一点;在计算机运算
速度允许的条件下,采样周期短,则控制品质好;当过程的纯滞后时间较长时,一般选取采样周期
为纯滞后时间的 1/4~1/8。
2.4 参数调整规则的探索
人们通过对 PID控制理论的认识和长期人工操作经验的
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
,可知 PID参数应依据以下几点来
适应系统的动态过程。
1、在偏差比较大时,为使尽快消除偏差,提高响应速度,同时为了避免系统响应出现超调,Kp
取大值, 取零;在偏差比较小时,为继续减小偏差,并防止超调过大、产生振荡、稳定性变坏,
值要减小, 取小值;在偏差很小时,为消除静差,克服超调,使系统尽快稳定, 值继续
减小, 值不变或稍取大。
Ki
Kp Ki Kp
Ki
2、当偏差与偏差变化率同号时,被控量是朝偏离既定值方向变化。因此,当被控量接近定值
时,反号的比列作用阻碍积分作用,避免积分超调及随之而来的振荡,有利于控制;而当被控量远
未接近各定值并向定值变化时,则由于这两项反向,将会减慢控制过程。在偏差比较大时,偏差变
化率与偏差异号时, 值取零或负值,以加快控制的动态过程。 Kp
3、偏差变化率的大小表明偏差变化的速率, 越大, 取值越小, 取值越大,反
之亦然。同时,要结合偏差大小来考虑。
1−kk ee- Kp Ki
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 7 V1.1 – Jan 23, 2006
4、微分作用可改善系统的动态特性,阻止偏差的变化,有助于减小超调量,消除振荡,缩短
调节时间 ,允许加大 ,使系统稳态误差减小,提高控制精度,达到满意的控制效果。所以,
在 比较大时, 取零,实际为 PI控制;在 比较小时, 取一正值,实行 PID控制。
st Kp
ke Kd ke Kd
2.5 自校正 PID控制器
对于一个特定的被控对象,在纯比例控制的作用下改变比例系数可以求出产生临界振荡的振荡
周期 和临界比例系数 。 Tu Ku
根据 Z-N条件,有
TuT 1.0=
TuTi 5.0=
TuTd 125.0=
代入(式 2-5)则有:
)25.15.345.2( 21 −− +−∆ kkkk eeeKpu= (式 2-7)
很显然,采用上式可以十分容易的实现常数 的校正。 Kp
www.plczone.com
Administrator
×¢ÊÍ
此处是个临界条件才能满足。及在临界参数Ku时,发生稳定震荡的情况下
¸ÃÎĵµÓÉ Foxit Reader ±à¼
fumaoyan
下划线
fumaoyan
下划线
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 8 V1.1 – Jan 23, 2006
3 软件说明
3.1 软件说明
AN_SPMC75_0012在微处理器 SPMC75F2413A上实现数字 PID对 BLDC速度的调节,重点
将是对 PID参数的整定,使系统的动静态性能达到“满意”的效果。
3.2 档案构成
文件名称 功能 类型
Main BLDC驱动相关参数初始化,DMC服务 C
Chap2 BLDC驱动相关函数 C
Initial 系统所有相关初始化程序 C
ISR 驱动中相应的中断服务 C
DigitalPID_V100.lib PID设置,初始化和 PID计算函数库函数 lib
Spmc75_dmc_lib_V100.lib DMC通信程序 lib
3.3 DMC界面
Speed1_Cmd:设置电机运转的速度
Speed1_Now:电机当前反馈速度
Speed1_Kp:2.5节 自校正 PID控制器中提到的 Kp值
User_R0:当前 P_TMR3_TGRA寄存器的值
User_R1:设置速度与电机实际转速的差值
Motor 1 Start 和 Motor 1 Stop 控制启停
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 9 V1.1 – Jan 23, 2006
3.4 子程序说明
PIDInit ( )
原 形 void PIDInit (void)
描 述 PID所用到的 RAM清零
输入参数 无
输出参数 无
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项 请在设置参数前使用。
例 子 PIDInit ();
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 10 V1.1 – Jan 23, 2006
PIDSetPoint ( )
原 形 void PIDSetPoint(int)
描 述 设置 PID调节的目标值
输入参数 期望值
输出参数 无
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项
例 子 PIDSetPoint (2000); //期望电动机的转速为 2000rpm
PIDGetSetpoint ( )
原 形 int PIDGetSetpoint(void)
描 述 读取 PID调节设置的目标值
输入参数 无
输出参数 所设置的期望值
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项 得到的期望值将和数值的是同一个数值
例 子 uiSpeed = PIDSetPoint (); //读取所设置的期望电动机转速
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 11 V1.1 – Jan 23, 2006
PIDSetKp ( )
原 形 void PIDSetKp(double)
描 述 设置 PID的 Kp值
输入参数 Kp数值
输出参数 无
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项 这个参数在增量 PID和位置 PID的计算中代表着不同的意思。
(式 2-4)所示位置式 PID中 Kp就是比例系数
(式 2-5)所示增量式 PID中 Kp相当于 的系数ke )1( T
Td
Ti
TKp ++
例 子 PIDSetKp (0.257); //设置 Kp=0.257
PIDGetKp ( )
原 形 double PIDGetKp(void)
描 述 读取 PID中所设置的 Kp值
输入参数 无
输出参数 Kp数值
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项 这个参数在增量 PID和位置 PID的计算中代表着不同的意思。
(式 2-4)所示位置式 PID中 Kp就是比例系数
(式 2-5)所示增量式 PID中 Kp相当于 的系数ke )1( T
Td
Ti
TKp ++
例 子 dKp = PIDSetKp ();
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 12 V1.1 – Jan 23, 2006
PIDSetKi( )
原 形 void PIDSetKi(double dKii)
描 述 设置 PID的 Ki值
输入参数 Ki数值
输出参数 无
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项 这个参数在增量 PID和位置 PID的计算中代表着不同的意思。
(式 2-4)所示位置式 PID中 Ki是积分系数
Ti
TKp
(式 2-5)所示增量式 PID中 Ki是 的系数1−ke )
21(
T
TdKp +
例 子 PIDSetKi (0.367); //设置 Ki=0.367
PIDGetKi( )
原 形 double PIDGetKi(void)
描 述 读取 PID中所设置的 Ki值
输入参数 无
输出参数 Ki数值
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项 这个参数在增量 PID和位置 PID的计算中代表着不同的意思。
(式 2-4)所示位置式 PID中 Ki是积分系数
Ti
TKp
(式 2-5)所示增量式 PID中 Ki是 的系数1−ke )
21(
T
TdKp +
例 子 dKi = PIDSetKi ();
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 13 V1.1 – Jan 23, 2006
PIDSetKd ( )
原 形 void PIDSetKd(double dKdd)
描 述 设置 PID的 Kd值
输入参数 Kd数值
输出参数 无
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项 这个参数在增量 PID和位置 PID的计算中代表着不同的意思。
(式 2-4)所示位置式 PID中 Kd是积分系数
T
TdKp
(式 2-5)所示增量式 PID中 Kd是 的系数2−ke T
TdKp
例 子 PIDSetKd (0.157); //设置 Kd=0.157
PIDGetKd ( )
原 形 void PIDGetKd(double dKdd)
描 述 读取 PID中所设置的 Kd值
输入参数 无
输出参数 Kd数值
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项 这个参数在增量 PID和位置 PID的计算中代表着不同的意思。
(式 2-4)所示位置式 PID中 Kd是积分系数
T
TdKp
(式 2-5)所示增量式 PID中 Kd是 的系数2−ke T
TdKp
例 子 dKd = PIDSetKd ();
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 14 V1.1 – Jan 23, 2006
IncPIDCalc ( )
原 形 int IncPIDCalc(int)
描 述 增量式 PID计算
输入参数 PID调节当前采样值
输出参数 计算增量
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项 (式 2-5)增量式 PID算法的实现。
例 子 uiGoalvalue += IncPIDCalc (1998); //位置式 PID 控制算法通过增量式控
制算法递推实现,当前采样得到转速 1998rpm。
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 15 V1.1 – Jan 23, 2006
LocPIDCalc ( )
原 形 unsigned int LocPIDCalc(int)
描 述 位置式 PID计算
输入参数 PID调节当前采样值
输出参数 位置式 PID计算出的绝对位置值
头 文 件 Spmc75_PID.h
库 文 件 DigitalPID_V100
注意事项 (式 2-4)位置式式 PID算法的实现。
例 子 uiGoalvalue = LocPIDCalc (1998); //位置式 PID控制算法,当前采样得到
转速 1998rpm。
其它应用函数式对 BLDC 驱动的实现,不再一一赘述,可以参考【AN_SPMC75_0003】应用例的
介绍。
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 16 V1.1 – Jan 23, 2006
4 程序范例
4.1 DEMO程序
/*=============================================*/
//应用范例
/*=============================================*/
#include "Spmc75_regs.h"
#include "Spmc_typedef.h"
#include "unspmacro.h"
#include "Spmc75_BLDC.h"
main()
{
P_IOA_SPE->W = 0x0000;
P_IOB_SPE->W = 0x0000;
P_IOC_SPE->W = 0x0000;
Spmc75_System_Init(); //Spmc75系统初始化
while(1)
{
BLDC_Run_Service(); //启停监控
NOP();
}
}
//=================================================================
// Description: IRQ0 interrupt source is XXX,used to XXX
// Notes:错误保护
//=================================================================
void IRQ0(void) __attribute__ ((ISR));
void IRQ0(void)
{
IPM_Fault_Protect();
}
//=================================================================
// Description: IRQ1 interrupt source is XXX,used to XXX
// Notes:BLDC启动及正常运行服务
//=================================================================
void IRQ1(void) __attribute__ ((ISR));
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 17 V1.1 – Jan 23, 2006
void IRQ1(void)
{
/*=============================================================*/
/*Position detection change interrupt
/*=============================================================*/
if(P_TMR0_Status->B.PDCIF && P_TMR0_INT->B.PDCIE)
{
BLDC_Motor_Normalrun();
}
/*=============================================================*/
/*Timer Counter Overflow
/*=============================================================*/
if(P_TMR0_Status->B.TCVIF && P_TMR0_INT->B.TCVIE)
{
BLDC_Motor_Startup();
}
P_TMR0_Status->W = P_TMR0_Status->W;
}
//=================================================================
// Description: IRQ6 interrupt source is XXX,used to XXX
// Notes:DMC接收中断服务函数
//=================================================================
void IRQ6(void) __attribute__ ((ISR));
void IRQ6(void)
{
if(P_INT_Status->B.UARTIF)
{
if(P_UART_Status->B.RXIF) MC75_DMC_RcvStream();
if(P_UART_Status->B.TXIF && P_UART_Ctrl->B.TXIE);
}
}
//=================================================================
// Description: IRQ7 interrupt source is XXX,used to XXX
// Notes:512Hz定时中断完成 PID调节速度
//=================================================================
void IRQ7(void) __attribute__ ((ISR));
void IRQ7(void)
{
if(P_INT_Status->B.CMTIF)
{
if(P CMT Ctrl->B.CM0IF && P CMT Ctrl->B.CM0IE)
www.plczone.com
PID调节控制做电机速度控制
© Sunplus Technology Co., Ltd. PAGE 18 V1.1 – Jan 23, 2006
{
BLDC_Motor_Actiyator();
}
P_CMT_Ctrl->W = P_CMT_Ctrl->W;
}
}
PID计算子函数:
//数据结构
typedef struct PID
{
int SetPoint; //设定目标 Desired Value
long SumError; //误差累计
double Proportion; //比例常数 Proportional Const
double Integral; //积分常数 Integral Const
double Derivative; //微分常数 Derivative Const
int LastError; //Error[-1]
int PrevError; //Error[-2]
} PID;
static PID sPID;
static PID *sptr = &sPID;
//PID参数初始化
void IncPIDInit(void)
{
sptr->SumError = 0;
sptr->LastError = 0; //Error[-1]
sptr->PrevError = 0; //Error[-2]
sptr->Proportion = 0; //比例常数 Proportional Con