主题中讨论的其他器件:TMDXIDDK379D
您好!
我对 tmdxiddk379d FOC 快速电流环路代码的实现有几个问题。 在 fcl_f2837x_tmdxiddk.c 源文件中,调用 FCL_initadc ()函数以指定将用于快速电流环路电流感应的两个通道:
// // This function initializes the ADC PPB result bases, as well as the ADC // module used to sample phase W. Ensure that the final argument passed // corresponds to the ADC base used to sample phase W on the HW board // FCL_initADC(ADCARESULT_BASE, ADC_PPB_NUMBER1, ADCBRESULT_BASE, ADC_PPB_NUMBER1, ADCA_BASE);
1) 1)从 CONFIG_ADC()函数中,传递到 FCL_initADC()函数的通道为电机相电流 V (模拟输入 A2)和 W (模拟输入 B2)。 传递到 FCL_initADC()的最后一个参数是用于对 W 相进行采样的 ADC 基址。从上一句中可以看出这应该是 ADCB_BASE,但是在示例代码中,ADCA_BASE 被传递到函数中。 您通过哪个测试是否重要? 它看起来用于设置适当的中断标志。
2) 2)设置 FCL ADC 初始化后、在 FCL_CPU_code.c 中调用具有 ADC PPB 结果的寄存器、以获取控制过程的相电流值:
#define FCL_CLARKE_ADC_IN() \ clarke1Alpha = (float32_t)((int16_t)HWREGH(curA_PPBRESULT) * \ FCL_params.adcScale); \ clarke1Beta = ((clarke1Alpha + \ (2.0 * ((float32_t)((int16_t)HWREGH(curB_PPBRESULT)) * \ FCL_params.adcScale))) * ONEbySQRT3);
cura_PPBRESULT 和 curBPPBRESULT 是保存电机相电流 V 和 W 值的寄存器的指针。 从这一部分代码中、您可以看到 V 相电流被设定为等于 Clarke 变换的 α 分量。 不应将 U 相设置为 α 分量? cura_PPBRESULT 和 curBPPBRESULT 的命名方式似乎意味着应对相电流 U 和 V 进行采样、而不是对 V 和 W 进行采样
我之所以提出这一点、是因为我在环路仿真中运行了一些硬件。 我的环路系统中的硬件 PMSM 电机模型将 Clarke 变换定义为 U 相电流同相 、等于 α 分量。 由于 TI 代码将 Clarke 变换定义为与 α 分量同相的 V 相电流、因此它会在不应生成某些 d 轴电流时(这是 SPM 电机)产生独特性能。 然后、很显然、这会偏离我在仿真期间生成的扭矩。 我尝试将 U (模拟输入 A0)和 V (模拟输入 A2)相电流通道传递到 FCL_initADC ()中,并将 ADC_abase 作为最终输入参数,但尽管寄存器被正确读取,但控制仍无法正常工作。
3) 3)我能否针对 FCL 代码而不是相电流 V 和 W 测量相电流 U 和 V?
感谢您的帮助、非常感谢您的帮助。