【转】【电机矢量控制】BLDC方波电流环PID整定方案

【电机矢量控制】BLDC方波电流环PID整定方案

电流环 PID BLDC

KVIN

关注

发布时间: 2019-09-09

阅读: 782

前言

最开始做BLDC驱动器,用STM32F030,CUBEMX,第一阶段就用最简单的六步法开环控制电机,第一阶段的重点是各种保护,保证驱动器在各种恶略环境下不会坏,包括电压保护,电流保护,短路保护等等在这个阶段重点做了短路保护,也就是瞬时电流保护,最终的效果是:我们直接拿导线短路了一天电机,驱动器仍然没有坏,效果还是不错的。计划的第二阶段是做方波的双闭环,第三阶段是做FOC。老实说,之前是没有了解过电机三环的,果然不出所料,又卡壳了很久,在被总监指导(训斥)了一波之后,重新理一下思路与过程。


首先是建立simlink模型,在建立simlink模型之前,首先要搞清楚模型对象,是BLDC电机,三相无刷直流电机,我最开始是以为照着三相电机的模型建,原谅我大学学的不好,当时只知道撸代码,自控这些啥都不会啊,只记得电机控制好像是电力传动控制那本书里面的,下了个电力传动控制的电子书,先复习(预习)一下,我下载的是陈伯时老师的《电力拖动自动控制系统》,在花了两天时间把这本书翻了一遍之后,发现里面并没有直接的BLDC的模型啊,这下子不就抄不了了吗?再仔细思考,结合我的驱动器电路,由于驱动器采样电阻只有总回路的电阻,而且我这个是六步法控制的BLDC,虽然是三相,但是每一步状态的CCR的值(PWM的值)是固定的,这可以按照直流电机的模型建立一个总回路的电流环。在问了总监的意见之后,似乎是可以的,然后就开始建模。

做这个时,simlink我是不了解的,之前只是听说过有这个东西,实际就看同学里面喜欢搞控制算法的人用过。额,,,再次原谅我的无知,那就开始simlink的熟悉吧,在看了网上一个100多页ppt的 simlink的基本操作之后,开始照着画模型了。参考的陈老师的模型是这样的(只能大概能看懂老师的思路):

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第1张图片

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第2张图片

这里,把电流内环单独拉出来,分析一波:

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第3张图片

忽略图中的一些参数变化,因为我换了电机,把电流环单独拉出来之后,首先要将闭环去掉,分析模型的开环特性,将波特图打印出来。

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第4张图片

在这里要说一下,我用的matlab版本是2016a,当时找波特图找了很久,在网上搜索simlink画波特图之类的,都找到的是2008左右版本matlab的方法,到2016位置都变了,当时终于是在一篇大佬的论文里面找到了怎么搞出来波特图,很尴尬。

第一步:保证模型书输入为In,输出为out,如图所示:
【转】【电机矢量控制】BLDC方波电流环PID整定方案_第5张图片

第二步:

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第6张图片

第三步:

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第7张图片

第四步:

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第8张图片

出来的波特图如下:

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第9张图片

最开始,我对于波特图分析也是一脸懵逼的,后面在总监的指导(这次真的是指导)下,明白,我们这个模型波特图走向,最开始是平的,后面在高频阶段,会朝下走,这是由于两个传递函数的影响,而我们加入PID调节器的作用,就是把开环模型的波特图修正为大概这个样子:

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第10张图片

至于修正方法大约是这样子的,PID调节器里面,Ki的值会作用在低频段,也就是之前波形里面比较平的那一段,Kd的值会作用在高频的那一段,至于Kp,当然是作用在过零点那里,会控制整个波形上下平移,而过零点也就是带宽,要控制带宽频率跟实际驱动器的控制频率差不多,例如实际驱动器电流环的周期是4ms,那带宽就调到200多。
在建立PID模型的时候,我参考了https://www.cnblogs.com/cjq0301/p/5184808.html
这位大神的博客,这里直接截取出来吧:

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第11张图片

实际我的模型之中加入PID环节,就变成了这个样子:

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第12张图片

在调了一波参数之后,他的波特图就是这样的:

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第13张图片

在实际撸代码的时候,参考的依旧是上面那篇博客:

【转】【电机矢量控制】BLDC方波电流环PID整定方案_第14张图片

在把实际STM32的代码撸出来之后,再把MATLAB仿真的参数填上,然后就是令人激动的时刻,没错,肯定是不行的。哈哈哈。当然,不是我们的步骤有问题(有大神指正当然更好)。是因为电流采样环节出了问题,控制BLDC(在没有上FOC的情况下),控制它实际还是取决于PWM,但是一个完整的PWM周期,有高电平,也有低电平,在高电平的时候进行采样,肯定是正确的,但是如果刚好就是在低电平的时候,触发了电流采样,那就有问题了,当然,也有一个原因是我们是要上电流闭环,因此电流采样的实时性要求高一些,因此就要考虑完整,把PWM也考虑进去。

考虑到这些之后,就要找解决办法啦,此时ADC就不能仅仅是DMA采集就行了,要配置触发模式,使用另外一个定时器去触发ADC功能,然后在PWM高电平的中间进行一次采样,我实际是用TIM1来进行PWM的产生,那么就可以用TIM15来跟TIM1进行同步,CCR寄存器的值一直保持跟TIM1的CCR成二分之一的关系就可以了,当然也要判断TIM1的CCR的值太小的话就给TIM15一个固定的值。这个同步信号可以使用COM事件,因为六步法本身就是使用COM事件来实现的,COM事件的定时器为TIM3,那么就把TIM15跟TIM3配置成主从模式就可以。

有关于电流采样的ADC配置问题,请参考我之前的文章,关于ADC电流采样会详细说明。

以上方案如有问题,欢迎指正,当然,也只是一个参考方案,具体项目具体分析,最终的PID参数还是靠调出来的。关于电流环,还有很多东西需要探究。

你可能感兴趣的:(【转】【电机矢量控制】BLDC方波电流环PID整定方案)