函数 | 功能描述 | 输入参数 | 输出参数 | 调用函数 | 在何处被调用 |
SvpwmLMotorConfig(void) | 对左电机用到外设进行配置 | 无 | 无 | 无 | foc_port.c/ FOCPortPeripheralConfig() |
SvpwmRMotorConfig(void) | 对右电机用到外设进行配置 | 无 | 无 | 无 | foc_port.c/ FOCPortPeripheralConfig() |
SvpwmTimerSynchConfig(void) | 双电机pwm控制时钟源Timer1、我慢8同步,配置TIM1、TIM8、TIM5进行时钟同步 | 无 | 无 | 无 | foc_port.c/ FOCPortInit() |
SvpwmCalcDutyCycles(STATOR_VOLTAGE,u8) | 又Valpha、Vbeta输入生成SVPWM波形 | typedef struct //Valpha Vbeta { s16 Valfa; s16 Vbeta; }STATOR_VOLTAGE; U8 mc_ch //电机通道,左电机 or 右电机 | 无 | 无 | foc_encoder.c/ FOCEncoderStartUp(u8 mc_ch) foc_port.c/ FOCPortArithmeticModel(u8 mc_ch) |
函数 | 功能描述 | 输入参数 | 输出参数 | 调用函数 | 在何处被调用 |
FOCPortPeripheralConfig(void) | 对电机用到外设进行配置(定时器、ADC) | 无 | 无 | SvpwmLMotorConfig() SvpwmRMotorConfig() InjectADCConfig() InjectADCRegularDMAConfig() | Foc_port.c/ FOCPortInit() |
FOCPortInit(void) | 电机控制配置,外设和变量的初始化 | 无 | 无 | FOCCurrentPIDInit() FOCPortPeripheralConfig() InjectADCReadEn() SvpwmTimerSynchConfig() InjectADCPhaCaliPend() SysDetectErrLED() | App_main.c/ App_TaskStart() |
FOCPortSwitchMotorCtrlChannel(void) | 切换电机控制通道,在T1溢出中断中被调用,切换FOC电机控制通道 | 无 | 无 | InjectADCSwitchADCTriSource() InjectADCSwitchADCSampleCH() | Stm32f10x_it.c/ TIM1_UP_IRQHandler |
FOCPort_CalcCurrentDerr(u8 mc_ch) | 计算电流矢量Iq的加速度,其实就是计算在一定间隔时间内的差值 | U8 mc_ch //电机通道,左电机 or 右电机 | 无 | 无 | Foc_port.c/ FOCPortArithmeticModel(u8 mc_ch) |
FOCPortArithmeticModel(u8 mc_ch) | FOC模型函数的调用,clark--park--Id/Iq控制--逆park--svpwm | U8 mc_ch //电机通道,左电机 or 右电机 | 无 | InjectADCGetPhaCurrValues() FOCCoordTransClark() FOCCoordTransPark() FOCCurrentPIDArithmetic() FOCCoordTransRevParkCircleLimitation() FOCCoordTransRevPark() CALC_SVPWM() FOCPort_CalcCurrentDerr() | Stm32f10x_it.c/ ADC1_2_IRQHandler() 在ADC转换结束中被调用 |
函数 | 功能描述 | 输入参数 | 输出参数 | 调用函数 整理英文 | 在何处被调用 |
InjectADC_PhaCurrentCaliEn(void) | 关闭pwm输出,使能相电流校准开关 | 无 | 无 | 无 | Foc_inject_adc.c/ InjectADCPhaCaliPend() |
InjectADCReadEn(FunctionalState cmd) | 使能三相注入式采样电流读取 | Cmd (ENABLE or DISALBE) | 无 | 无 | Foc_port.c/ FOCPortInit() |
Bool InjectADCPhaCaliPend(u8 sw) | 相电流ADC初始值校准 | U8 sw | bool | InjectADC_PhaCurrentCaliEn() | Foc_port.c/ FOCPortInit() |
InjectADC_ConvConfig(void) | 三相注入式ADC配置,配置注入式ADC的寄存器 | 无 | 无 | 无 | Foc_inject_adc.c/ InjectADC_PhaCurrReadCali() |
InjectADC_PhaCurrReadCali() | 三相ADC读取值校准 | 无 | 无 | InjectADC_ConvConfig(void) | Foc_inject_adc.c/ InjectADCConfig() |
InjectADCRegularDMAConfig() | 常规ADC通道DMA配置,DMA寄存器的配置 | 无 | 无 | 无 | Foc_port.c/ FOCPortPeripheralConfig() |
InjectADCConfig() | 注入式ADc的配置 | tour de france无 | 无 | InjectADC_PhaCurrReadCali() | Foc_port.c/ FOCPortPeripheralConfig() |
InjectADCSwitchADCTriSource(u8 mc_ch) | 切换左右电机ADC注入式采样的时钟源 | u8 mc_ch //电机通道,左电机 or 右电机 | 无 | 无 | foc_port.c/ FOCPortSwitchMotorCtrlChannel() |
InjectADCSwitchADCSampleCH(u8 mc_ch) | 切换左右电机ADC注入式采用通道 | u8 mc_ch //电机通道,左电机 or 右电机 | 无 | 无 | foc_port.c/ FOCPortSwitchMotorCtrlChannel() |
InjectADCGetPhaZeroOfft (u8 mc_ch , PHASE_OFFSET *pha_zero) | 获取相电流初始值 | u8 mc_ch //电机通道 typedef struct //相电流 { s32 a; s32 b; s32 c; }PHASE_OFFSET; | 无 | 无 | stm32f10x_it.c/ ADC1_2_IRQHandler() 在ADC转换结束中断中被调用,并且是电机状态:MotorCtrlState = CALICURR时 |
PHASE_CURRENT InjectADCGetPhaCurrValues(u8 mc_ch) | 三相电流值计算出矢量电流Ia、Ib | u8 mc_ch //电机通道,左电机 or 右电机 | typedef struct //相电流 { s32 a; s32 b; s32 c; }PHASE_OFFSET; | 无 | foc_port.c/ FOCPortArithmeticModel(u8 mc_ch) foc_encoder.c/ FOCEncoderStartUp (u8 mc_ch) stm32f10x_it.c/ ADC1_2_IRQHandler (u8 mc_ch) 在ADC转换结束中断中被调用,而且是在电机状态处于IDLE时被调用 | 迪亚哥下载
InjectADCEnableADCTri(void) | 注入式ADC采样使能 | 无 | 无 | 无 | stm32f10x_it.c/ TIM1_UP_IRQHandler() T1上溢中断 |
InjectADCDisableADCTri(void) | 关闭ADC触发源出发采样 | 无 | 无 | 无 | stm32f10x_it.c/ ADC1_2_IRQHandler () ADC转换结束中断 |
函数 | 功能描述 | 输入参数 | 输出参数 | 调用函数 | 在何处被调用 |
STATOR_CURRENT FOCCoordTransClark(PHASE_CURRENT Curr_Input) | Clark变换,定子电流Ia、Ib转换成Ialpha和Iβ | typedef struct//定子相电流 { s16 Ia; s16 Ib; }PHASE_CURRENT; | typedef struct 史东鹏//α、β电流 { s16 Ialfa; s16 Ibeta; }STATOR_CURRENT; | 无 | Foc_port.c/ FOCPortArithmeticModel () (在ADC转换完成被调用) Foc_encoder.c/ FOCEncoderStartUp () (在电机启动对准时被调用) |
ROTOR_CURRENT FOCCoordTransPark(STATOR_CURRENT Curr_Input, s16 Theta) | Park变换,Iα和Iβ变换成Id和Iq | s16 Theta //转子角度 typedef struct { bitch是什么意思 s16 Ialfa; s16 Ibeta; }STATOR_CURRENT; | typedef struct { s16 Iq; s16 Id; }ROTOR_CURRENT; | 无 | |
FOCCoordTransRevParkCircleLimitation (u8 mc_ch) | 输出调制比限幅的函数 | u8 mc_ch //电机通道 | 无 | 无 | |
STATOR_VOLTAGE FOCCoordTransRevPark (ROTOR_VOLTAGE Volt_Input) | 逆park变换,该函数理应有电机角度作为输入参数,但由于该函数在调用时处在正park变换之后,正park变换已经将转子角度计算在结构体中,所以在这个函数中就不用计算了。 | typedef struct { s16 Vq; s16 Vd; }ROTOR_ VOLTAGE; | typedef struct { s16 Valfa; s16 Vbeta; }STATOR_ VOLTAGE; | 无 | |
TRIANGLE_COMPONENTS CoordTransTrigFunctions(s16 hAngle) | 角度Theta转换为正余弦函数 | s16 hAngle | typedef struct { s16 tcos; s16 tsin; }TRIANGLE_COMPONENTS; | 无 | foc_coord_transform.c/ FOCCoordTransPark() 在正park变换中计算sin(theta)和cos(theta) |
函数皇家少儿英语 | 功能描述 | 输入参数 | 输出参数 | 调用函数 | 在何处被调用 |
FOCCurrentPIDInit (PID_Struct_t *PID_Torque, PID_Struct_t *PID_Flux) | 初始化矢量电流力矩和磁通的PID初始值 | PID_Struct_t *PID_Torque PID_Struct_t *PID_Flux PID力矩和励磁参数结构体 | 无 | 无 | foc_port.c/ FOCPortInit () |
s16 FOCCurrentPIDArithmetic (s16 hReference, s16 hPrentFeedback, PID_Struct_t *PID_Struct) | 矢量电流力矩和磁通的PID计算 | s16 hReference //参考值 s16 hPrentFeedback //实际值 PID_Struct_t *PID_Struct//PID参数结构体 | PID输出值 | 无 | Foc_port.c/ 帕龙FOCPortArithmeticModel () (在ADC转换完成被调用) Foc_encoder.c/ FOCEncoderStartUp () (在电机启动对准时被调用) |
函数 | 功能描述 | 输入参数 | 输出参数 | 调用函数 | 在何处被调用 |
FOCEncoderConfig (void) | 编码器配置,涉及到的GPIO、定时器等配置 | 无 | 无 | 无 | app_main.c/ App_TaskStart(void *p_arg) 开始任务,环境初始化 |
s16 FOCEncoderGetElectricalAngle(u8 mc_ch) | 返回电机电角度 | u8 mc_ch //电机通道 | 电机电角度: 0 -> 0 degrees, *S16_MAX-> 180 degrees, *S16_MIN-> -180 degrees | 无 | Foc_port.c/ FOCPortArithmeticModel () (在ADC转换完成被调用) |
MotorGetInitABSPos(u8 mc_ch) | 获取电机初始绝对值 | u8 mc_ch //电机通道 | 无 | 无 | 无 |
FOCEncoderRet(u8 mc_ch) | 在对准后写入对应的编码器初始线数 | u8 mc_ch //电机通道 | 无 | 无 | foc_encoder.c/ FOCEncoderStartUp(u8 mc_ch) 电机启动时调用的 |
s32 FOCEncoder_CalcRotSpeed(u8 mc_ch) | 速度检测函数 | u8 mc_ch //电机通道 | 返回当前转子速度 | 无 | foc_encoder.c/ FOCEncoderCalcAverSpeed(u8 mc_ch) |
s32 FOCEncoderCalcAverSpeed(u8 mc_ch) | 计算转子平均机械速度,其实就是一个取平均的函数,用上一个函数取和求平均 | u8 mc_ch //电机通道 | 返回转子机械角速度 | FOCEncoder_CalcRotSpeed(mc_ch) 该函数返回转子速度 | motor_control.c/ MotorCtrl_ManageSpeedPID(u8 mc_ch) 在速度环中调用 |
FOCEncoderStartUp(u8 mc_ch) | 电机初始对准,也就是在启动时才会调用,还包含一个FOC算法。 | u8 mc_ch //电机通道 | 无 | 无 | stm32f10x_it.c/ ADC1_2_IRQHandler() ADC转换结束中断,当电机状态MotorCtrlState=START时才会调用 FOCEncoderStartUp(u8 mc_ch) |
void TIM2_IRQHandler(void) void TIM4_IRQHandler(void) | 左右电机编码器转满一圈的溢出中断,编码器用到的定时器是TIMER2和TIMER4。 | ||||
本文发布于:2023-06-15 15:41:15,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/78/961239.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |