PWM 比较器的功能
还是以本系列文章中,用到的三相两电平逆变器为控制对象。下图是正弦波调制(SPWM)的三相两电平逆变器的波形。
输入的是三相的正弦波信号,三角载波与正弦信号波进行比较,当正弦信号波的值大于三角载波的值,输出“1”,否则,就输出“0”;PWM比较器一共生成6个PWM信号,控制6个IGBT的开通和关断。PWM比较器输出“1”控制IGBT开通,“0”信号IGBT关断。控制逆变器输出的三相相电压和三相线电压如下图所示。
对于三相两电平逆变器,为了防止上下桥臂同时导通而短路,PWM比较器还需要插入死区时间。
此外,为了让电流、速度和位置采样与PWM占空比的更新同步,以及控制器算法模型的触发运行,必须还有中断触发信号生成功能。
因此整个PWM比较器包括四部分:
(1) 三角载波生成;
(2) 信号比较,生成PWM控制信号;
(3) 插入死区时间;
(4) 中断触发信号生成;
正弦波调制(SPWM)的三相两电平逆变器的波形
三角载波生成
因为三角载波生成的模型是在FPGA中运行的,因此数据类型需要整型。
最方便的方法就是使用Simulink的HDL Coder模型库中的HDL Counter模块。通过控制输入端口dir控制HDL Counter模块的计数方向。
HDL Counter模块
示例模型如下:
三角载波生成的Simulink模型
仿真步长为1e-8,Relay 模块的Switch on point为10000,Switch off point为0,输出“0”或者“1” 控制HDL Counter模块的计数方向,生成0~10000的三角波,频率为5kHz。
三角载波信号
PWM 信号生成
三角载波与信号波进行比较,当信号波的值大于三角载波的值,输出“1”,否则,就输出“0”;PWM比较器一共生成6个PWM信号,控制6个IGBT的开通和关断。
此功能的Simulink模型如下:
PWM信号生成的Simulink模型
死区时间
通常死区时间的插入通过增加PWM信号的开通延时实现的。
简单说就是:如果PWM信号由“1”变“0”,即由开通变为关断,则马上关断;如果PWM信号由“0”变“1”,即由关断变为开通,则延时T_delay再开通;此功能的Simulink模型如下,C_delay端口为输开通延时计数值。
死区时间的Simulink模型
中断触发信号生成
此功能比较简单,Simulink模型如下图所示,在三角波的底点和顶点都产生中断,如果只在底点或者只在顶点,可以根据需要修改即可。
中断触发信号生成的Simulink模型
以上模型皆可以通过Simulink的HDL Coder工具生成HDL代码,部署至Speedgoat的FPGA板卡。