- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PID调节的机理和keil软件模拟.doc
???????????????? PID 速度调节程序的机理和keil软件模拟(1)
XC866的PID调节程序通过解析,只是纠正错误使程序能够正常运行。但是尚不清楚各种数据之间的关系,通过对于计算公式的分析,以及KEIL的软件模拟,才初步明白它的调节的机理。
PID
?total_term = ?Kp×error +?Ki×error_integral +?Kd× ( error - error_previous )
总体调节? = 比例系数×速度误差+积分系数×积分误差+微分系数×(本次误差-前次误差)
因为PID速度调节的最终目的,是使电机测量速度和基准速度之间的误差趋近于零,在速度已经稳定的情况下,即可以假定 error=0 。这样比例调节项目 Kp * error=0,和微分调节项目Kd * ( error - error_previous=0) =0,这样公式可以理解并且简化成为以下:
????????????total_term ?= ???Ki * error_integral
???? 因为积分系数 Ki 是已知的; #define Ki =??60000 。 total_term是电机的占空比,也可以理解为电机的转动力矩,当转动力矩和阻力(设定速度下)相等时,系统处于速度稳定的平衡点。我们假定在电机的力矩total_term = 30 时,系统处于速度稳定状态。实际运行时电机力矩的平衡点,可以是随机的数据点,运行时还容许发生缓慢地移动,它可以在新的力矩变动点上重新建立新的平衡。因为给定基准速度reference_speed= 0.00015(最低速度),占最大速度reference_speed= 0.0005的30%,可以认为比较合理。
将积分系数define Ki = ?60000? 代入
????????? 可以求得 error_integral =? total_term? /? Ki? = 30? / ?60000 ?= ?0.0005?
????? 因为? mod? = ?(unsigned int) ?total_term=30 ; 电机的占空比最大值等于255 这样在低速时, 30/255=11% ,可以认为比较合理。
????? 也就是假定电机? mod (占空比)= 0x01E ?=? total_term= 30? 时,并且在 error_integral =? 0.0005时,系统处于速度稳定的平衡点。我们目的是通过软件模拟,观察其数据的平衡过程,不是定量计算。
另外可以求得在和基准速度相等时的,霍尔工作周期。 基准速度是在PID程序限定的范围内。
因为?? feedback_speed? =? 1 /? (float) accumulate_period;
所以?? accumulate_period? =? ?1 / ?feedback_speed
????? 无偏差时 feedback_speed= reference_speed= 0.00015
则:accumulate_period? = ?1 / 0.00015 = 6666?
因为 accumulate_period= 6 * ?feedback_period? =? 6666
所以 ;feedback_period=? 6666.66 ?/? 6 = 1111? =? 457 H
????? 我们关注的焦点应该是 error_integral = 0.0005,即:速度稳定时的平衡点,通过数据模拟,观察如何获得平衡点。初始化时因为 error_integral=0,因为 error_integral += error;? 即累计积分误差error_integral就不停顿对于速度差error进行累计。开始启动时,速度误差error比较大,累计积分增加的速度比较快,跟随电机速度向基准速度的逼近,速度误差error越来越小,累计积分增加的速度越来越慢。在这样的过程当中,总体调节越来越逼近稳定值30,也就是等于基准速度,一但累计积分误差error_integra〉0.0005。表明电机速度〉基准速度,速度差error变为负值,累计积分误差error_integral就开始减少,直到电机速度〈基准速度,累计积分误差error_integral再次开始增加。累计积分误差在极低的幅度来回往返,实际就是电机速度稳定时的平衡点。
因此开始可以不关注其他参数,只要使 error_integral 快速逼近 0.0005 。 还有一个办法,就是初始化模拟设置error_integral=0.0004,可以加速 error_integral 快速逼近 0.0005 。
说明: 我们使用的基准速度是 reference_speed=0
文档评论(0)