编者:沉尸 (5912129@qq.com)
前言:
本文章探索st电机库自动生成的PID参数的由来,采用的控制板为野火407电机板+BLDC带Hall的电机。
在“Mcboot()”函数中初始化变量“PIDSpeedHandle_M1”
![](https://img-blog.csdnimg.cn/072d814712fa470d83e8428b4d39caa0.png)
将“pPIDSpeed[M1]”指针值(实际指向“PIDSpeedHandle_M1”)作为速度环PID整定的相关参数
![](https://img-blog.csdnimg.cn/2612a405ec3d45dd8159d54f417fbc52.png)
我们来看代码中速度环整定的调用层次:
![](https://img-blog.csdnimg.cn/7bc210f4ce1f44c18578557db9b7ae18.png)
所以,是在“中等频率任务”中进行速度整定,中等频率值怎么设定的呢?
![](https://img-blog.csdnimg.cn/cf12485af219423a90b0131cd5ec7fc6.png)
![](https://img-blog.csdnimg.cn/d801df34c9704f9791930f3ecfb771b5.png)
我们看看PI控制的代码
![](https://img-blog.csdnimg.cn/056dee4fb9c042a7899575534836ddb9.png)
![](https://img-blog.csdnimg.cn/6ee07e1f303041a48866dbc5f57b5a73.png)
控制很简单,但是有这个限制边界的参数在里面
我们来看“PIDSpeedHandle_M1”是怎么定义的
![](https://img-blog.csdnimg.cn/379c522a30b64cf2b7f5367da684705f.png)
积分环节的数值限制
![](https://img-blog.csdnimg.cn/888b6f5d83fa4e2784827229d7a3a68f.png)
上面设定值“IQMAX * SP_KIDIV”是因为在程序中计算出的积分项值,它没有除“SP_KIDIV”
最后总输出的限制
![](https://img-blog.csdnimg.cn/f633d5ae657440d595c01ae8a791670b.png)
那么IQMAX定义成了什么呢?
![](https://img-blog.csdnimg.cn/f97adc06fbeb4d329e2d0ff1a60a3cb9.png)
为什么定义成这个值?
我们看到“pmsm_motor_parameters.h”文件中同样还有一个定义值也是“18746”
![](https://img-blog.csdnimg.cn/f167a123d5c44ed58e2e75a628e7e449.png)
下面是我在代码中的注释,截图下来:
![](https://img-blog.csdnimg.cn/c698b157fd5b4333bde250239fb57055.png)
速度环PID整定程序中,我还有一点疑问(也许应该被称作改进建议?),记录如下:
![](https://img-blog.csdnimg.cn/283ecb5c60404ca2ae2a1321799d9179.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)