大家好,我在编写逆变器控制的闭环程序是遇到这样一个问题。
首先逆变器是一个电流型逆变器,它要求电感不能开路运行,因此在PWM驱动需要增加重叠区。我在2812的EV模块中设定好了1us的重叠时间,如图1所示,正常情况下应该是这样。
但是写出来的程序存在这样的问题,发现工频驱动的两路信号的重叠时间变长至20多us,这严重影响了输出。
我经过多次实验发现,在中断周期单独使用锁相环程序而不做闭环是没问题的,或者加入锁相环的时候,是双环程序中的内环程序影响了重叠的时间, 例如以下这句
/****** 内环P ******/
PR_output[0] = _IQmpy(_IQ(Kp2),PR_input[0]);
当Kp2这个变量是float32类型时就会出现pwm信号不正常的情况,而直接写0.06或者利用#define Kp2 0.06时pwm信号都不会出现问题,这是什么原因呢?内环应用其他调节器(PI,PR)这样写也会出现同样问题,而外环却没问题。因为以前我都是定义float32类型,再进行IQ的。
pwm信号的附图和工程见下面附件。
希望得到各位专家的回复,谢谢。
ZYY-Carrier modulation PLL double loop.rar
user5137566:忘了说程序在中断周期(开关频率20k,50us)内是可以执行完毕的,我通过通过数字IO口的电平翻转观察过
大家好,我在编写逆变器控制的闭环程序是遇到这样一个问题。
首先逆变器是一个电流型逆变器,它要求电感不能开路运行,因此在PWM驱动需要增加重叠区。我在2812的EV模块中设定好了1us的重叠时间,如图1所示,正常情况下应该是这样。
但是写出来的程序存在这样的问题,发现工频驱动的两路信号的重叠时间变长至20多us,这严重影响了输出。
我经过多次实验发现,在中断周期单独使用锁相环程序而不做闭环是没问题的,或者加入锁相环的时候,是双环程序中的内环程序影响了重叠的时间, 例如以下这句
/****** 内环P ******/
PR_output[0] = _IQmpy(_IQ(Kp2),PR_input[0]);
当Kp2这个变量是float32类型时就会出现pwm信号不正常的情况,而直接写0.06或者利用#define Kp2 0.06时pwm信号都不会出现问题,这是什么原因呢?内环应用其他调节器(PI,PR)这样写也会出现同样问题,而外环却没问题。因为以前我都是定义float32类型,再进行IQ的。
pwm信号的附图和工程见下面附件。
希望得到各位专家的回复,谢谢。
ZYY-Carrier modulation PLL double loop.rar
Annie Liu:
您的问题在E2E英文论坛将有工程师跟进,请继续关注。https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/859649/3179530