最近,由于项目的需要,我计划使用它TI官方软件锁相环实现了三相逆变器的锁相,其中坑基本,在此分享。 因为我用的是F2812的DSP,比较辣鸡,没有浮点操作引擎,所以为了提高浮点操作速度,配合TI的 (关于IQmath,不懂的小伙伴可以Q私自1062057308,或者去TI搜索官网) 与对应的太阳能库相结合,该库集成了大多数常用的电力电子算法,如等,而且TI浮点、定点和定点都很贴心。CLA这个库在三个版本可在里面找到。PS:如果用的DSP应该有浮点运算引擎(28335以上型号)…),建议直接用浮点数计算,真的省去了很多蛾子和未知Bug! TI软件锁相环,有官方应用文件使用C2000 ? 三相并网软件锁相环设计的微控制器,而且是中文的,官网也可以直接找到。 我使用最基本、最简单的同步基准框锁相环(SRF-SPLL),其锁相原理文档也有详细的描述,简而言之,就是三相电压ABC-DQ变换,通过PLL,即实现锁相。 需要在这里使用太阳能库里有这两种算法。
实现算法的步骤:
这里需要注意,因为最终只需要控制Vq=可以,原则上经AD采集的三相电压只要相序正确,三相对称,即输入dq变换单元的三相电压不一定等于实际电压,如实际电压220V,我通过AD采集电压为150V,锁相也可以完成。这一特点为提高程序运行速度提供了可能性:例如,根据调节电路,电压缩小约38.7596倍送入DSP,因此,为了计算精确的电压,必须计算AD寄存器值除以38.7596。我们知道除法,尤其是浮点除法,非常昂贵CPU的。既然不需要精确的电压,就可以通过缩放,右移5位,相当于32,38.7596差别不大,可以在一定程度上提高运算速度(没有办法,DSP必须找到充分利用计算资源的方法…)。当然,如果需要精确的电压值,还是需要循序渐进。 还需要注意的是,虽然不需要准确的电压倍数,但最好不要有直流偏置,否则会影响锁相效果,所以提前校准AD的零漂。 注意,调用spll锁相函数必须先更新v_q本文还强调了[0]。 * 这个角度就是DQ变换用到的theta,因为DQ因此,在锁相之前进行变换DQ变换用到的是上一个控制周期计算的角度,也就是延迟一个周期。这样的话,控制频率不能太低,在SoliaLib文档中,,但是我用的控制频率是10k,锁起来感觉效果还不错hhh。下图是用CCS的示波器观测的锁相正弦值。
注意事项: 需要使用锁相PI,其离散控制参数不需要自行计算,TI已经提供了一个Excel表格专门计算参数。这个表格也在Solar文件夹。只需填写稳定时间、阻尼比、误差带范围、控制周期(频率)即可自动计算B0、B1.如有必要,请自己吃 链接:https://pan.baidu.com/s/18-vipsBYJkWpk2kCezrVcA 提取码:4igw
2、SoliaLib使用手册还提到,传入SPLL的q轴电压Vq范围为(-1,1)!!!这一点很重要,我个人的理解是PI需要处理的对象应该有足够小的偏差。如果太大,调整效果不够,需要处理Vq其实归一化只需要缩小100倍左右。
3、对于使用IQ注意定点操作,SPLL默认的使用IQ21格式,如果外部程序使用其他格式,并避免数据溢出。另外,建议不要用太低的IQ锁相格式,官方默认IQ21是合理的,IQ如果太低,小数位太少,计算精度大大降低。有人可能存在疑问,如果用IQ21格式,整数只剩下10位(对32位)MCU),最大计算数据只有2^10 -1= 1023,容易溢出吗?不用担心,我们电网电压的峰值一般在300以上V,正如前面提到的,电压Vq需要归一化,肯定不会溢出。(对于IQ math我将在另一篇文章中详细介绍使用情况) 4、ABCtoDQ0坐标变换一般有两种坐标对齐方式,即D轴与A轴对齐,超前A轴90°对齐(aligned 90 degrees behind A axis),这两种对齐方不同,具体可以看Simulink里abc to dq0模块的Help,有详细的解释。 5、可配合matlab一对一模拟可以发现一些逻辑和语法错误。 左图为A相电压IQ格式,右侧是锁相的相位正弦值,正好相差1/4工频周期。
为什么会有相位差?打开锁相环的程序,仔细阅读就会发现, 您可以看到定向的详细解释simulink里面的abc to dq0模块的Help,介绍非常详细。 知道这一点,很容易做到。有两种解决方案: 1.输出锁相环的角度θ减去pi再次反馈DQ变换模块; 2、修改DQ对于改变模块的程序,反馈仍然是θ不变,但我们知道θ比A相的θ超前了pi/2,所以在程序中计算dq值时,将θ减去pi/2。 原来的dq计算公式为 d = alpha·sin(wt) beta·cos(wt); q = beta·cos(wt) - alpha·sin(wt); 根据诱导公式,修改后dq计算公式为 d = -alpha·cos(wt) beta·sin(wt); q = beta·sin(wt) alpha·cos(wt); 通过以上两种方法,锁定的相位与A相完全对应~