1、 PID调节控制做电机速度控制 V1.1 Jan 23, 2006 中文版 19, Innovation First Road Science Park Hsin-Chu Taiwan 300 R.O.C. Tel: 886-3-578-6005 Fax: 886-3-578-4418 E-mail: http:/ http:/ PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 1 V1.1 Jan 23, 2006版权声明 凌阳科技股份有限公司保留对此文件修改之权利且不另行通知。凌阳科技股份有限公司所提供之信息相信为正确且可靠之信息,但并不保
2、证本文件中绝无错误。请于向凌阳科技股份有限公司提出订单前,自行确定所使用之相关技术文件及规格为最新之版本。若因贵公司使用本公司之文件或产品,而涉及第三人之专利或著作权等智能财产权之应用及配合时,则应由贵公司负责取得同意及授权,本公司仅单纯贩售产品,上述关于同意及授权,非属本公司应为保证之责任。又未经凌阳科技股份有限公司之正式书面许可,本公司之所有产品不得使用于医疗器材,维持生命系统及飞航等相关设备。 PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 2 V1.1 Jan 23, 2006目录 页 1 模拟PID控制1 1.1 模拟PID控制原理1
3、 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
4、 7 参考文献.26 PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 3 V1.1 Jan 23, 2006修订记录 日期 版本 编写及修订者编写及修订说明 2004/11/26 1.0 初版 2006/1/23 1.1 错误校正 PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 1 V1.1 Jan 23, 20061 模拟PID控制 将偏差的比例(Proportion)、积分(Integral)和微分(Differential)通过线性组合构成控制量,用这一控制量对被控对象进行控制,这样的控制
5、器称PID控制器。 1.1 模拟PID控制原理 在模拟控制系统中,控制器最常用的控制规律是PID控制。为了说明控制器的工作原理,先看一个例子。如图11所示是一个小功率直流电机的调速原理图。给定速度与实际转速进行比较,其差值,经过PID控制器调整后输出电压控制信号,经过功率放大后,驱动直流电动机改变其转速。 )(0tn)(tn )()()(0tntnte = )(tu )(tuPID控制器直流电机)(0tn )(te )(tu)(tn图11 小功率直流电机调速系统 常规的模拟PID控制系统原理框图如图12所示。该系统由模拟PID控制器和被控对象组成。图中,是给定值,是系统的实际输出值,给定值与实
6、际输出值构成控制偏差 )(r t )(y t )(te)(y)(r)( ttte = (式11) )(te作为PID控制的输入,作为PID控制器的输出和被控对象的输入。所以模拟PID控制器的控制规律为 )(tu)()(1)()(u0dttdeTddtteTiteKptt+=(式12) 其中: 控制器的比例系数 Kp 控制器的积分时间,也称积分系数 Ti 控制器的微分时间,也称微分系数 Td比例积分微分被控对象)(r t)(tu )(y t)(te图12 模拟PID控制系统原理图 1、 比例部分 PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 2
7、 V1.1 Jan 23, 2006比例部分的数学式表示是: )(* teKp在模拟PID控制器中,比例环节的作用是对偏差瞬间作出反应。偏差一旦产生控制器立即产生控制作用,使控制量向减少偏差的方向变化。控制作用的强弱取决于比例系数,比例系数越大,控制作用越强,则过渡过程越快,控制过程的静态偏差也就越小;但是越大,也越容易产生振荡,破坏系统的稳定性。故而,比例系数选择必须恰当,才能过渡时间少,静差小而又稳定的效果。 Kp KpKpKp2、 积分部分 积分部分的数学式表示是: tdtteTiKp0)( 从积分部分的数学表达式可以知道,只要存在偏差,则它的控制作用就不断的增加;只有在偏差时,它的积分
8、才能是一个常数,控制作用才是一个不会增加的常数。可见,积分部分可以消除系统的偏差。 0)(te积分环节的调节作用虽然会消除静态误差,但也会降低系统的响应速度,增加系统的超调量。积分常数越大,积分的积累作用越弱,这时系统在过渡时不会产生振荡;但是增大积分常数会减慢静态误差的消除过程,消除偏差所需的时间也较长,但可以减少超调量,提高系统的稳定性。当Ti较小时,则积分的作用较强,这时系统过渡时间中有可能产生振荡,不过消除偏差所需的时间较短。所以必须根据实际控制的具体要求来确定Ti。 Ti Ti3、 微分部分 微分部分的数学式表示是: dttdeTdKp)(* 实际的控制系统除了希望消除静态误差外,还
9、要求加快调节过程。在偏差出现的瞬间,或在偏差变化的瞬间,不但要对偏差量做出立即响应(比例环节的作用),而且要根据偏差的变化趋势预先给出适当的纠正。为了实现这一作用,可在PI控制器的基础上加入微分环节,形成PID控制器。 微分环节的作用使阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。微分作用的引入,将有助于减小超调量,克服振荡,使系统趋于稳定,特别对髙阶系统非常有利,它加快了系统的跟踪速度。但微分的作用对输入信号的噪声很敏感,对那些噪声较大的系统一般不用微分,或在微分起作用之前先对输入信号进行滤波。 微分部分的作
10、用由微分时间常数Td决定。Td越大时,则它抑制偏差变化的作用越强;Td越小时,则它反抗偏差变化的作用越弱。微分部分显然对系统稳定有很大的作用。 )(te)(te适当地选择微分常数Td,可以使微分作用达到最优。 由于计算机的出现,计算机进入了控制领域。人们将模拟PID控制规律引入到计算机中来。对(式12)的PID控制规律进行适当的变换,就可以用软件实现PID控制,即数字PID控制。 PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 3 V1.1 Jan 23, 20062 数字PID控制 数字式PID控制算法可以分为位置式PID和增量式PID控制算
11、法。 2.1 位置式PID算法 由于计算机控制是一种采样控制,它只能根据采样时刻的偏差计算控制量,而不能像模拟控制那样连续输出控制量量,进行连续控制。由于这一特点(式12)中的积分项和微分项不能直接使用,必须进行离散化处理。离散化处理的方法为:以T作为采样周期,作为采样序号,则离散采样时间对应着连续时间,用矩形法数值积分近似代替积分,用一阶后向差分近似代替微分,可作如下近似变换: kkT t(式21) 上式中,为了表示的方便,将类似于简化成等。 )(kTeke将(式21)代入(式12),就可以得到离散的PID表达式为 10TeeTdeTiTeKpukkkjjkk=+= (式22) 或 )(10
12、*=+= kkkjjkkeeKdeKieKpu(式23) 其中 k 采样序号,k0,1,2,; 第ku k次采样时刻的计算机输出值; 第ke k次采样时刻输入的偏差值; 第1kek1次采样时刻输入的偏差值; 积分系数,Ki TiTKpKi *; 微分系数,Kd TTdKpKd *; 如果采样周期足够小,则(式22)或(式23)的近似计算可以获得足够精确的结果,离散控制过程与连续过程十分接近。 (式22)或(式23)表示的控制算法式直接按(式12)所给出的PID控制规律定义进行计算的,所以它给出了全部控制量的大小,因此被称为全量式或位置式PID控制算法。 这种算法的缺点是:由于全量输出,所以每次
13、输出均与过去状态有关,计算时要对进行累加,kePID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 4 V1.1 Jan 23, 2006工作量大;并且,因为计算机输出的对应的是执行机构的实际位置,如果计算机出现故障,输出的将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,这在实生产际中是不允许的。 kuku增量式PID控制算法可以避免着重现象发生。 2.2 增量式PID算法 所谓增量式PID是指数字控制器的输出只是控制量的增量ku。当执行机构需要的控制量是增量,而不是位置量的绝对数值时,可以使用增量式PID控制算法进行控制。
14、增量式PID控制算法可以通过(式22)推导出。由(式22)可以得到控制器的第k1个采样时刻的输出值为: 211011TeeTdeTiTeKpukkkjjkk=+= (式24) 将(式22)与(式24)相减并整理,就可以得到增量式PID控制算法公式为: 21212111)21()1()2(+=+=+=kkkkkkkkkkkkkkkCeBeAeeTTdKpeTTdKpeTTdTiTKpTeeeTdeTiTeeKpuuu(式25) 其中 A )1(TTdTiTKp +; B )21(TTdKp +; C TTdKp。 由(式25)可以看出,如果计算机控制系统采用恒定的采样周期T,一旦确定A、B、C,
15、只要使用前后三次测量的偏差值,就可以由(式25)求出控制量。 增量式PID控制算法与位置式PID算法(式22)相比,计算量小的多,因此在实际中得到广泛的应用。 而位置式PID控制算法也可以通过增量式控制算法推出递推计算公式: kkkuuu 1(式26) (式26)就是目前在计算机控制中广泛应用的数字递推PID控制算法。 2.3 控制器参数整定 控制器参数整定:指决定调节器的比例系数、积分时间Ti、微分时间Td和采样周期Ts的KpPID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 5 V1.1 Jan 23, 2006具体数值。整定的实质是通过改变调
16、节器的参数,使其特性和过程特性相匹配,以改善系统的动态和静态指标,取得最佳的控制效果。 整定调节器参数的方法很多,归纳起来可分为两大类,即理论计算整定法和工程整定法。理论计算整定法有对数频率特性法和根轨迹法等;工程整定法有凑试法、临界比例法、经验法、衰减曲线法和响应曲线法等。工程整定法特点不需要事先知道过程的数学模型,直接在过程控制系统中进行现场整定方法简单、计算简便、易于掌握。 2.3.1 凑试法 按照先比例(P)、再积分(I)、最后微分(D)的顺序。 置调节器积分时间Ti =,微分时间Td =0,在比例系数按经验设置的初值条件下,将系统投入运行,由小到大整定比例系数。求得满意的1/4衰减度
17、过渡过程曲线。 KpKp引入积分作用(此时应将上述比例系数设置为5/6)。将Ti由大到小进行整定。 Kp Kp若需引入微分作用时,则将Td按经验值或按Td =(1/31/4)设置,并由小到大加入。 Ti2.3.2 临界比例法 在闭环控制系统里,将调节器置于纯比例作用下,从小到大逐渐改变调节器的比例系数,得到等幅振荡的过渡过程。此时的比例系数称为临界比例系数,相邻两个波峰间的时间间隔,称为临界振荡周期Tu。 Ku临界比例度法步骤: 1、将调节器的积分时间置于最大(Ti =),微分时间置零(Td =0),比例系数适当,平衡操作一段时间,把系统投入自动运行。 Ti Kp2、将比例系数逐渐增大,得到等
18、幅振荡过程,记下临界比例系数和临界振荡周期Tu值。 Kp Ku3、根据和值,采用经验公式,计算出调节器各个参数,即、和Td的值。 Ku Tu Kp Ti按“先P再I最后D”的操作程序将调节器整定参数调到计算值上。若还不够满意,可再作进一步调整。 临界比例度法整定注意事项: 有的过程控制系统,临界比例系数很大,使系统接近两式控制,调节阀不是全关就是全开,对工业生产不利。 有的过程控制系统,当调节器比例系数调到最大刻度值时,系统仍不产生等幅振荡,对此,就把最大刻度的比例度作为临界比例度进行调节器参数整定。 KpKu2.3.3 经验法 用凑试法确定PID参数需要经过多次反复的实验,为了减少凑试次数,
19、提高工作效率,可以借鉴他人的经验,并根据一定的要求,事先作少量的实验,以得到若干基准参数,然后按照经验公式,用这些基准参数导出PID控制参数,这就是经验法。 临界比例法就是一种经验法。这种方法首先将控制器选为纯比例控制器,并形成闭环,改变比例系数,使系统对阶跃输入的响应达到临界状态,这时记下比例系数、临界振荡周期为Tu,根KuPID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 6 V1.1 Jan 23, 2006据ZN提供的经验公式,就可以由这两个基准参数得到不同类型控制器的参数,如表21所示。 表21 临界比例法确定的模拟控制器参数 控制器类型
20、 Kp Ti Td P 0.5 KuPI 0.45 Ku 0.85Tu PID 0.6 Ku 0.5Tu 0.12Tu 这种临界比例法使针对模拟PID控制器,对于数字PID控制器,只要采样周期取的较小,原则上也同样使用。在电动机的控制中,可以先采用临界比例法,然后在采用临界比例法求得结果的基础上,用凑试法进一步完善。 表21的控制参数,实际上是按衰减度为1/4时得到的。通常认为1/4的衰减度能兼顾到稳定性和快速性。如果要求更大的衰减,则必须用凑试法对参数作进一步的调整。 2.3.4 采样周期的选择 香农(Shannon)采样定律 :为不失真地复现信号的变化,采样频率至少应大于或等于连续信号最高
21、频率分量的二倍。根据采样定律可以确定采样周期的上限值。实际采样周期的选择还要受到多方面因素的影响,不同的系统采样周期应根据具体情况来选择。 采样周期的选择,通常按照过程特性与干扰大小适当来选取采样周期:即对于响应快、(如流量、压力)波动大、易受干扰的过程,应选取较短的采样周期;反之,当过程响应慢(如温度、成份)、滞后大时,可选取较长的采样周期。 采样周期的选取应与PID参数的整定进行综合考虑,采样周期应远小于过程的扰动信号的周期,在执行器的响应速度比较慢时,过小的采样周期将失去意义,因此可适当选大一点;在计算机运算速度允许的条件下,采样周期短,则控制品质好;当过程的纯滞后时间较长时,一般选取采
22、样周期为纯滞后时间的1/41/8。 2.4 参数调整规则的探索 人们通过对PID控制理论的认识和长期人工操作经验的总结,可知PID参数应依据以下几点来适应系统的动态过程。 1、在偏差比较大时,为使尽快消除偏差,提高响应速度,同时为了避免系统响应出现超调,Kp取大值,取零;在偏差比较小时,为继续减小偏差,并防止超调过大、产生振荡、稳定性变坏,值要减小,取小值;在偏差很小时,为消除静差,克服超调,使系统尽快稳定,值继续减小,值不变或稍取大。 KiKp Ki KpKi2、当偏差与偏差变化率同号时,被控量是朝偏离既定值方向变化。因此,当被控量接近定值时,反号的比列作用阻碍积分作用,避免积分超调及随之而
23、来的振荡,有利于控制;而当被控量远未接近各定值并向定值变化时,则由于这两项反向,将会减慢控制过程。在偏差比较大时,偏差变化率与偏差异号时,值取零或负值,以加快控制的动态过程。 Kp3、偏差变化率的大小表明偏差变化的速率,越大,取值越小,取值越大,反之亦然。同时,要结合偏差大小来考虑。 1kkeeKp KiPID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 7 V1.1 Jan 23, 20064、微分作用可改善系统的动态特性,阻止偏差的变化,有助于减小超调量,消除振荡,缩短调节时间,允许加大 ,使系统稳态误差减小,提高控制精度,达到满意的控制效果。
24、所以,在比较大时,取零,实际为PI控制;在比较小时,取一正值,实行PID控制。 st Kpke Kdke Kd2.5 自校正PID控制器 对于一个特定的被控对象,在纯比例控制的作用下改变比例系数可以求出产生临界振荡的振荡周期和临界比例系数。 Tu Ku根据ZN条件,有 TuT 1.0=TuTi 5.0=TuTd 125.0=代入(式25)则有: )25.15.345.2(21 +kkkkeeeKpu(式27) 很显然,采用上式可以十分容易的实现常数的校正。 KpPID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 8 V1.1 Jan 23, 200
25、63 软件说明 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界面 Spee
26、d1_Cmd:设置电机运转的速度 Speed1_Now:电机当前反馈速度 Speed1_Kp:2.5节 自校正PID控制器中提到的Kp值 User_R0:当前P_TMR3_TGRA寄存器的值 User_R1:设置速度与电机实际转速的差值 Motor 1 Start 和 Motor 1 Stop 控制启停 PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 9 V1.1 Jan 23, 20063.4 子程序说明 PIDInit ( ) 原 形 void PIDInit (void) 描 述 PID所用到的RAM清零 输入参数 无 输出参数 无 头
27、文 件 Spmc75_PID.h 库 文 件 DigitalPID_V100 注意事项 请在设置参数前使用。 例 子 PIDInit (); PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 10 V1.1 Jan 23, 2006PIDSetPoint ( ) 原 形 void PIDSetPoint(int) 描 述 设置PID调节的目标值 输入参数 期望值 输出参数 无 头 文 件 Spmc75_PID.h 库 文 件 DigitalPID_V100 注意事项 例 子 PIDSetPoint (2000); /期望电动机的转速为2000rp
28、m PIDGetSetpoint ( ) 原 形 int PIDGetSetpoint(void) 描 述 读取PID调节设置的目标值 输入参数 无 输出参数 所设置的期望值 头 文 件 Spmc75_PID.h 库 文 件 DigitalPID_V100 注意事项 得到的期望值将和数值的是同一个数值 例 子 uiSpeed PIDSetPoint (); /读取所设置的期望电动机转速 PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 11 V1.1 Jan 23, 2006PIDSetKp ( ) 原 形 void PIDSetKp(doubl
29、e) 描 述 设置PID的Kp值 输入参数 Kp数值 输出参数 无 头 文 件 Spmc75_PID.h 库 文 件 DigitalPID_V100 注意事项 这个参数在增量PID和位置PID的计算中代表着不同的意思。 (式24)所示位置式PID中Kp就是比例系数 (式25)所示增量式PID中Kp相当于的系数ke )1(TTdTiTKp + 例 子 PIDSetKp (0.257); /设置Kp0.257 PIDGetKp ( ) 原 形 double PIDGetKp(void) 描 述 读取PID中所设置的Kp值 输入参数 无 输出参数 Kp数值 头 文 件 Spmc75_PID.h 库
30、文 件 DigitalPID_V100 注意事项 这个参数在增量PID和位置PID的计算中代表着不同的意思。 (式24)所示位置式PID中Kp就是比例系数 (式25)所示增量式PID中Kp相当于的系数ke )1(TTdTiTKp + 例 子 dKp PIDSetKp (); PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 12 V1.1 Jan 23, 2006PIDSetKi( ) 原 形 void PIDSetKi(double dKii) 描 述 设置PID的Ki值 输入参数 Ki数值 输出参数 无 头 文 件 Spmc75_PID.h
31、库 文 件 DigitalPID_V100 注意事项 这个参数在增量PID和位置PID的计算中代表着不同的意思。 (式24)所示位置式PID中Ki是积分系数TiTKp (式25)所示增量式PID中Ki是的系数1ke )21(TTdKp + 例 子 PIDSetKi (0.367); /设置Ki0.367 PIDGetKi( ) 原 形 double PIDGetKi(void) 描 述 读取PID中所设置的Ki值 输入参数 无 输出参数 Ki数值 头 文 件 Spmc75_PID.h 库 文 件 DigitalPID_V100 注意事项 这个参数在增量PID和位置PID的计算中代表着不同的意思
32、。 (式24)所示位置式PID中Ki是积分系数TiTKp (式25)所示增量式PID中Ki是的系数1ke )21(TTdKp + 例 子 dKi PIDSetKi (); PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 13 V1.1 Jan 23, 2006PIDSetKd ( ) 原 形 void PIDSetKd(double dKdd) 描 述 设置PID的Kd值 输入参数 Kd数值 输出参数 无 头 文 件 Spmc75_PID.h 库 文 件 DigitalPID_V100 注意事项 这个参数在增量PID和位置PID的计算中代表着不
33、同的意思。 (式24)所示位置式PID中Kd是积分系数TTdKp (式25)所示增量式PID中Kd是的系数2keTTdKp 例 子 PIDSetKd (0.157); /设置Kd0.157 PIDGetKd ( ) 原 形 void PIDGetKd(double dKdd) 描 述 读取PID中所设置的Kd值 输入参数 无 输出参数 Kd数值 头 文 件 Spmc75_PID.h 库 文 件 DigitalPID_V100 注意事项 这个参数在增量PID和位置PID的计算中代表着不同的意思。 (式24)所示位置式PID中Kd是积分系数TTdKp (式25)所示增量式PID中Kd是的系数2ke
34、TTdKp 例 子 dKd PIDSetKd (); PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 14 V1.1 Jan 23, 2006IncPIDCalc ( ) 原 形 int IncPIDCalc(int) 描 述 增量式PID计算 输入参数 PID调节当前采样值 输出参数 计算增量 头 文 件 Spmc75_PID.h 库 文 件 DigitalPID_V100 注意事项 (式25)增量式PID算法的实现。 例 子 uiGoalvalue IncPIDCalc (1998); /位置式PID控制算法通过增量式控制算法递推实现,当前
35、采样得到转速1998rpm。 PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 15 V1.1 Jan 23, 2006LocPIDCalc ( ) 原 形 unsigned int LocPIDCalc(int) 描 述 位置式PID计算 输入参数 PID调节当前采样值 输出参数 位置式PID计算出的绝对位置值 头 文 件 Spmc75_PID.h 库 文 件 DigitalPID_V100 注意事项 (式24)位置式式PID算法的实现。 例 子 uiGoalvalue LocPIDCalc (1998); /位置式PID控制算法,当前采样得到
36、转速1998rpm。 其它应用函数式对BLDC驱动的实现,不再一一赘述,可以参考【AN_SPMC75_0003】应用例的介绍。 PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 16 V1.1 Jan 23, 20064 程序范例 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_I
37、OB_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 so
38、urce is XXX,used to XXX / Notes:BLDC启动及正常运行服务 /= void IRQ1(void) _attribute_ (ISR);PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 17 V1.1 Jan 23, 2006void IRQ1(void) /*=*/ /*Position detection change interrupt /*=*/ if(P_TMR0_Status-B.PDCIF /*=*/ /*Timer Counter Overflow /*=*/ if(P_TMR0_Status-B.T
39、CVIF 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 /= / Description: IRQ7 interru
40、pt 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-W = P_CMT_Ctrl-W; PID计算子函数: /数据结构 typedef struct PID int SetPoint; /设定目标 Desired Value long SumError; /误差累计 double Proportion; /比例常数
41、 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 = /PID参数初始化 void IncPIDInit(void) sptr-SumError = 0; sptr-LastError = 0; /Error-1 sptr-PrevError = 0; /Error-2 sp
42、tr-Proportion = 0; /比例常数 Proportional Const sptr-Integral = 0; /积分常数Integral Const sptr-Derivative = 0; /微分常数 Derivative Const sptr-SetPoint = 0; PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 19 V1.1 Jan 23, 2006/增量式PID控制设计 int IncPIDCalc(int NextPoint) register int iError, iIncpid; /当前误差 iError
43、= sptr-SetPoint - NextPoint; /增量计算 iIncpid = sptr-Proportion * iError /Ek项 - sptr-Integral * sptr-LastError /Ek1项 + sptr-Derivative * sptr-PrevError; /Ek2项 /存储误差,用于下次计算 sptr-PrevError = sptr-LastError; sptr-LastError = iError; /返回增量值 return(iIncpid); /位置式PID控制设计 unsigned int LocPIDCalc(int NextPoint
44、) register int iError,dError; iError = sptr-SetPoint - NextPoint; /偏差 sptr-SumError += iError; /积分 dError = iError - sptr-LastError; /微分 sptr-LastError = iError; return(sptr-Proportion * iError /比例项 + sptr-Integral * sptr-SumError /积分项 + sptr-Derivative * dError); /微分项 4.2 程序流程与说明 主程序主要完成系统必要的初始化,而对
45、电动机的实时处理基本上是在中断中完成的,其中涉及到的中断主要有:IRQ0的错误输入和输出中断、IRQ1的PDC和TCV中断、IRQ6的UART RXD中断及CMT0的定时中断。如图51所示主程序设计流程图。 PID调节控制做电机速度控制 Sunplus Technology Co., Ltd. PAGE 20 V1.1 Jan 23, 2006系统初始化【API:Spmc75_System_Init()】开始启停命令监控【API:BLDC_Run_Service()】图 5-1 BLDC主程序操作流程 4.3 中断子流程与说明 故障输入、输出短路、PDC、TCV、RXD和CMT0等中断协助完成了对BLDC的启动、运行、速度调节和错误保护的控制。其中如果使用默认各个中断源的使用都按照初始化