ZHCUBZ4 April 2024
图 4-5 展示了固件的工程软件流程图,其中包括一个用于实时电机控制的 ISR、一个主循环用于在后台循环中更新电机控制参数。ISR 由 ADC 转换结束 (EOC) 触发。
为了简化系统开发和设计,将该软件组织为四个增量构建,这使得学习和熟悉电路板和软件变得更加容易。这个方法对也适用于调试和测试电路板。
表 4-4 列出了要在该工程中使用的框架模块。
模块名称 | 说明 | 算法 |
---|---|---|
ANGLE_GEN_run | 用于开环运行的斜坡角度发生器 | eSMO、ENC、霍尔 |
CLARKE_run | 针对电流或电压的 Clarke 变换 | eSMO、ENC、霍尔 |
collectRMSData、calculateRMSData | 收集采样值以计算相电流和电压的 RMS 值 | eSMO、ENC、霍尔 |
DATALOG_update | 存储实时值,以便使用图形工具显示 | 所有算法 |
ENC_run | 根据编码器计算转子角度 | ENC |
ESMO_run | 增强滑模观测器 (eSMO) 以实现无传感器 FOC | eSMO |
HAL_readMtr1ADCData | 以浮点格式返回 ADC 转换值 | 所有算法 |
HAL_writePWMDACData | 将软件变量转换为 PWM 信号 | 所有算法 |
HAL_writePWMData | 用于电机的 PWM 驱动 | 所有算法 |
HALL_run | 根据霍尔传感器计算转子角度和速度 | HALL |
IPARK_run | Park 逆变换 | eSMO、ENC、霍尔 |
PARK_run | Park 变换 | eSMO、ENC、霍尔 |
PI_run | 针对电流和速度的 PI 稳压器 | 所有算法 |
PI_run_series | 运行串联形式的 PI 控制器 | SFRA、MPTA |
SPDCALC_run | 基于来自编码器信号的角度进行速度测量 | ENC |
SPDFR_run | 基于来自观测器的角度测量速度 | eSMO |
SVGEN_runMin | 具有正交控制的空间矢量 PWM | eSMO、ENC、霍尔 |
TRAJ_run | 用于设置速度基准的轨迹 | 所有算法 |
VS_FREQ_run | 为 2 级的 Vd 和 Vq 计算生成具有 v/f 曲线的矢量电压。 这可以根据特定电机手动完成。 |
eSMO、ENC、霍尔 |
表 4-5 总结了在每个递增系统构建中测试的模块。
软件模块 | DMC_LEVEL_1 | DMC_LEVEL_2 | DMC_LEVEL_3 | DMC_LEVEL_4 |
---|---|---|---|---|
50% PWM 占空比,验证 ADC 失调电压校准、PWM 输出和相移 | 开环控制,用于验证电机电流和电压检测信号 | 闭合电流环路,用于在电路板上验证电流检测和使用 PID 进行电流控制 | 采用估算器/观测器的闭环运行 | |
HAL_readMtr1ADCData | √√ | √ | √ | √ |
HAL_writePWMData | √√ | √ | √ | √ |
ANGLE_GEN_run | √√ | √ | √(eSMO、ENC、霍尔)* | |
VS_FREQ_run | √√ | |||
CLARKE_run | √ | √ | √ | |
TRAJ_run | √√ | √ | √√ | |
ESMO_run | √(eSMO)* | √(eSMO)* | √√ (eSMO)* | |
SPDFR_run | √(eSMO)* | √(eSMO)* | √√ (eSMO)* | |
ENC_run | √(ENC)* | √(ENC)* | √√(ENC)* | |
SPDCALC_run | √(ENC)* | √(ENC)* | √√(ENC)* | |
HALL_run | √(HALL)* | √(HALL)* | √√(HALL)* | |
PARK_run | √ | √ | √ | |
PI_run (Id) | √√ | √ | ||
PI_run (Iq) | √√ | √ | ||
PI_run(速度) | √√ | |||
IPARK_run | √√ | √ | √ | |
SVGEN_runMin | √√ | √ | √ | |
HAL_writePWMDACData | √** | √** | √** | |
DATALOG_update | √ | √ | √ |
通用工程可以单独使用其中一种 FOC 算法进行电机控制,或同时使用两种 eSMO 和编码器 FOC 算法。如果在工程中实现了两种算法,则可以快速平滑地切换正在使用的估算器。