C语言结构体 ST_VSG 和 ST_PHASELOCK 代码解析
//定义一个结构体ST_VSG,包含多个浮点型、无符号整型成员变量
struct ST_VSG
{
float32_t fVn; //电压幅值
float32_t fTheta; //相位角
float32_t fwref; //参考角速度
uint16_t u16PrdTim; //周期时间
float32_t fw; //实际角速度
};
//声明一个ST_VSG类型的结构体变量Vsg
extern struct ST_VSG Vsg;
//声明一个Alg_Vsg()函数
extern void Alg_Vsg(void);
//锁相环结构体
struct ST_PHASELOCK
{
float32_t *fV_Cap_in; //指向浮点型变量的指针
float32_t fFltrKp; //滤波器增益
float32_t fKp; //比例增益
float32_t fKi; //积分增益
float32_t fStep; //步长
float32_t fVqFilter1; //电压Q轴滤波器等效系数1
float32_t fVqFilter2; //电压Q轴滤波器等效系数2
float32_t fIRegOut; //电流环输出
float32_t fPIRegOut; //PI调节器输出
float32_t fThetaStep; //相位步进
float32_t fTheta; //当前相位角
uint16_t u16Angle; //当前角度
float32_t fVqSum; //电压Q轴和
float32_t fVqSumEnd; //电压Q轴和结束
float32_t fGridCos0; //网格电压余弦值
float32_t fGridSin0; //网格电压正弦值
float32_t fSin0; //正弦值
uint16_t u16GridPrdCnt; //网格周期计数
uint16_t u16GridPrdTim; //网格周期时间
uint16_t u16GridPrdTimFlt; //滤波后的网格周期时间
uint16_t uwZrCrsFlg; //过零标志
uint16_t uwZrCrsFlg0; //过零标志0
uint16_t uwZrCrsFlgPWM; //PWM过零标志
uint16_t uwPllBpOk; //锁相环工作正常标志
uint16_t swPllOkCnt; //锁相环工作正常计数器
uint16_t swPllFailCnt; //锁相环工作失败计数器
int16_t i16Phaseoffset; //相位偏差
};
//声明一个ST_PHASELOCK类型的结构体变量Pll
extern struct ST_PHASELOCK Pll;
代码解析:
结构体 ST_VSG
struct ST_VSG
{
float32_t fVn; //电压幅值
float32_t fTheta; //相位角
float32_t fwref; //参考角速度
uint16_t u16PrdTim; //周期时间
float32_t fw; //实际角速度
};
fVn: 表示电压幅值,是一个浮点数。fTheta: 表示相位角,是一个浮点数。fwref: 表示参考角速度,是一个浮点数。u16PrdTim: 表示周期时间,是一个无符号短整型数。fw: 表示实际角速度,是一个浮点数。
结构体 ST_PHASELOCK
struct ST_PHASELOCK
{
float32_t *fV_Cap_in; //指向浮点型变量的指针
float32_t fFltrKp; //滤波器增益
float32_t fKp; //比例增益
float32_t fKi; //积分增益
float32_t fStep; //步长
float32_t fVqFilter1; //电压Q轴滤波器等效系数1
float32_t fVqFilter2; //电压Q轴滤波器等效系数2
float32_t fIRegOut; //电流环输出
float32_t fPIRegOut; //PI调节器输出
float32_t fThetaStep; //相位步进
float32_t fTheta; //当前相位角
uint16_t u16Angle; //当前角度
float32_t fVqSum; //电压Q轴和
float32_t fVqSumEnd; //电压Q轴和结束
float32_t fGridCos0; //网格电压余弦值
float32_t fGridSin0; //网格电压正弦值
float32_t fSin0; //正弦值
uint16_t u16GridPrdCnt; //网格周期计数
uint16_t u16GridPrdTim; //网格周期时间
uint16_t u16GridPrdTimFlt; //滤波后的网格周期时间
uint16_t uwZrCrsFlg; //过零标志
uint16_t uwZrCrsFlg0; //过零标志0
uint16_t uwZrCrsFlgPWM; //PWM过零标志
uint16_t uwPllBpOk; //锁相环工作正常标志
uint16_t swPllOkCnt; //锁相环工作正常计数器
uint16_t swPllFailCnt; //锁相环工作失败计数器
int16_t i16Phaseoffset; //相位偏差
};
fV_Cap_in: 指向浮点型变量的指针,用于存储输入的电压值。fFltrKp: 表示滤波器增益,是一个浮点数。fKp: 表示比例增益,是一个浮点数。fKi: 表示积分增益,是一个浮点数。fStep: 表示步长,是一个浮点数。fVqFilter1,fVqFilter2: 表示电压Q轴滤波器等效系数,用于滤波电压信号。fIRegOut: 表示电流环输出,是一个浮点数。fPIRegOut: 表示PI调节器输出,是一个浮点数。fThetaStep: 表示相位步进,是一个浮点数。fTheta: 表示当前相位角,是一个浮点数。u16Angle: 表示当前角度,是一个无符号短整型数。fVqSum,fVqSumEnd: 表示电压Q轴和,用于计算电压信号的平均值。fGridCos0,fGridSin0,fSin0: 表示网格电压的余弦值、正弦值和正弦值,用于计算相位角。u16GridPrdCnt,u16GridPrdTim,u16GridPrdTimFlt: 表示网格周期计数、网格周期时间和滤波后的网格周期时间,用于计算网格频率。uwZrCrsFlg,uwZrCrsFlg0,uwZrCrsFlgPWM: 表示过零标志,用于判断信号是否过零。uwPllBpOk: 表示锁相环工作正常标志,是一个无符号短整型数,用于判断锁相环是否正常工作。swPllOkCnt,swPllFailCnt: 表示锁相环工作正常计数器和锁相环工作失败计数器,用于记录锁相环的工作状态。i16Phaseoffset: 表示相位偏差,是一个有符号短整型数,用于计算相位误差。
总结:
这两个结构体包含了锁相环控制系统中大量重要的参数和变量,它们共同作用,实现了对网格电压的同步控制。结构体 ST_VSG 主要存储了电压幅值、相位角和角速度等信息,而结构体 ST_PHASELOCK 主要包含了锁相环控制算法中的各种参数和中间结果,以及锁相环工作状态的标志和计数器。
原文地址: https://www.cveoy.top/t/topic/oh2B 著作权归作者所有。请勿转载和采集!