本帖最后由 yang_alex 于 2018-7-4 13:53 编辑
前面说了那么多,接下来赶紧把完成的任务总结一下:
任务一:电机运行时, 使用P-NUCLEO-IHM002测量 三电阻电流采样波形,并且通过DA 输出此波形, 并且截图
用Motor Workbench设置电流Ia从DAC1输出,然后用示波器测量DAC输出。
任务二:得到FOC控制时的关键变量:Ia, Ib, Ic, Ialpha, Ibeta, Id, Iq, Vd, Vq , 并且截图
任务三:监控任意数据变量,并且截图
这两个任务感觉任务二可以代表任务三(特例一定满足一般情况的要求),当然,任务三也可以监视其他数据,手段是一样的。
Ia, Ib, Ic, Ialpha, Ibeta, Id, Iq, Vd, Vq 这几个FOC控制时的关键变量位于MotorControl Workbench自动生成的工程文件mc_tasks.c 里,相关代码如下:
- inline uint16_t FOC_CurrController(uint8_t bMotor)
- {
- Curr_Components Iab, Ialphabeta, Iqd;
- Volt_Components Valphabeta, Vqd;
- int16_t hElAngledpp;
- uint16_t hCodeError;
- hElAngledpp = SPD_GetElAngle(STC_GetSpeedSensor(pSTC[bMotor]));
- PWMC_GetPhaseCurrents(pwmcHandle[bMotor], &Iab);
- Ialphabeta = MCM_Clarke(Iab);
- Iqd = MCM_Park(Ialphabeta, hElAngledpp);
- Vqd.qV_Component1 = PI_Controller(pPIDIq[bMotor],
- (int32_t)(FOCVars[bMotor].Iqdref.qI_Component1) - Iqd.qI_Component1);
- Vqd.qV_Component2 = PI_Controller(pPIDId[bMotor],
- (int32_t)(FOCVars[bMotor].Iqdref.qI_Component2) - Iqd.qI_Component2);
- FOCVars[bMotor].Vqd = Vqd;
- Vqd = Circle_Limitation(pCLM[bMotor], Vqd);
- Valphabeta = MCM_Rev_Park(Vqd, hElAngledpp);
- hCodeError = PWMC_SetPhaseVoltage(pwmcHandle[bMotor], Valphabeta);
- FOCVars[bMotor].Iab = Iab;
- FOCVars[bMotor].Ialphabeta = Ialphabeta;
- FOCVars[bMotor].Iqd = Iqd;
- FOCVars[bMotor].Valphabeta = Valphabeta;
- FOCVars[bMotor].hElAngle = hElAngledpp;
- return(hCodeError);
- }
复制代码
我们知道,三相电流之和为0:Ia+Ib+Ic =0,所以只采样Ia、Ib就可以算出Ic。
再通过连续坐标变换,Ia, Ib, Ic ----> Ialpha, Ibeta -----> Id, Iq 然后对Id,Iq 进行PI 调整,得到 Vd,Vq,最后进行反 park 变换,再将两相电压变为三相电压。
所以最方便的就是把变量导入
STM-STUDIO,利用STM-STUDIO的功能来查看相关变量。
也可以用表格的形式体现出来:
另一个办法就是我前面帖子2.4、软件分析--代码编译及调试中介绍Motor Workbench功能是所说的,在电机调试功能界面里,许多数据和关键变量都可以监视,甚至改值。(仪表盘形式、寄存器表格形式、空格形式)。不过有点奇怪的是,Ia, Ib, Ic, Ialpha, Ibeta, Id, Iq, Vd, Vq这几个值在寄存器标签页可以看到,但是没有输出。研究了好久也没头绪,后续有空再学习学习吧。但其他许多变量是可以监视和改写的(有些能改,有些不能改),这个可以看作完成任务三吧。
自拟评测任务: 测试5.0库的低速性能和堵转保护
利用Motor Workbench的电机调试功能来完成。通过这个功能来调整电机转速。目前的测试中中,电机检测到转速低于200就保护了。这个估计不是算法的问题,而是相关参数设置的问题,有充分的时间来调试参数的话,效果会好。
此内容由EEWORLD论坛网友yang_alex原创,如需转载或用于商业用途需征得作者同意并注明出处