本帖最后由 a976209770 于 2024-12-26 23:57 编辑
1. 电机参数与数据结构概述
在电机控制系统中,正确的电机参数配置和高效的数据结构设计对于控制精度和系统性能至关重要。电机参数包括电流、速度、位置、转子角度等,它们在 FOC(无传感器磁场定向控制) 系统中扮演着核心角色。在 APM32M3514 电机控制系统中,电机参数的组织方式通过数据结构来实现。
本篇文章将详细介绍电机运行参数的组织方式、关键控制参数的配置,并深入探讨如何通过调整这些参数来优化电机控制系统的性能。
2. 电机数据结构的定义
2.1 motor_structure.h 文件概述
在 motor_structure.h 文件中,我们定义了电机运行所需的核心数据结构。电机参数的结构体将所有重要的参数组织在一起,方便管理和传递。
电机数据结构// 电机控制数据结构定义
typedef struct {
// 电流参数
int16_t Iq_ref; // Iq轴参考电流
int16_t Id_ref; // Id轴参考电流
int16_t Iq_actual; // 实际Iq电流
int16_t Id_actual; // 实际Id电流
// 速度和位置参数
int16_t speed_cmd; // 目标速度
int16_t speed_actual; // 实际速度
int16_t position; // 当前转子位置
float rotor_angle; // 转子角度(用于无传感器控制)
// 电压控制
float Vd_ref; // d轴电压参考值
float Vq_ref; // q轴电压参考值
// PI控制器参数
float Kp; // 比例增益
float Ki; // 积分增益
// 状态参数
int32_t motor_state; // 电机状态(如运行、停止、故障等)
// 电机的相关物理参数
float Rs; // 电机的相电阻
float Ls; // 电机的电感值
int16_t pole_pairs; // 电机的极对数
} MotorParams_TypeDef;
数据结构解析
- 电流参数:Iq_ref, Id_ref 为电流环的目标电流,Iq_actual, Id_actual 为从电流传感器反馈的实际电流值。
- 速度和位置参数:speed_cmd 和 speed_actual 分别表示目标速度和实际速度,position 和 rotor_angle 存储转子的位置和角度。
- 电压控制:Vd_ref 和 Vq_ref 为根据电流命令计算的电压参考值,调节电机的磁场方向。
- PI控制器参数:Kp 和 Ki 为电流环和速度环的比例增益和积分增益。
- 电机的物理参数:Rs 和 Ls 为电机的相电阻和电感值,pole_pairs 表示电机的极对数。
这些参数通过 MotorParams_TypeDef 结构体统一管理,使得程序的模块化和可扩展性更强。
3. 系统参数配置(parameter.h)
3.1 系统参数配置文件
在 parameter.h 文件中,我们对整个系统的参数进行了配置。这里包括了 PI控制器的增益值、电机的标定参数、速度环和电流环的控制限制等。
parameter.h 文件示例:// 系统参数配置
#define SYS_REFV 3.3 // 系统供电电压(V),通常是3.3V,用于系统的所有电压参考
#define SYSCLK_HSE_72MHz 72000000 // 系统主频(Hz),设置为72MHz,保证系统高效运行
#define PWMFREQ 15000 // PWM频率(Hz),电机控制中用于驱动逆变器的PWM信号频率
#define DEAD_TIME 1.0 // PWM死区时间(us),电机控制中逆变器开关管之间的死区时间,避免短路
#define SLOWLOOP_FREQ 1000 // 慢环频率(Hz),设置为1000Hz,用于慢速控制环路,比如电机启停控制
// 电机参数配置
#define MAX_SPEED 3000 // 最大转速(rpm),电机的最大转速限制,通常依据电机规格设置
#define MIN_SPEED 50 // 最小转速(rpm),电机最小可调速度,防止电机转速过低不稳定
#define MAX_DUTY 0.95 // 最大占空比,PWM的最大占空比,避免逆变器超载
// PI控制器增益设置
#define M1_SPEED_KP 16384 // 速度环比例增益,影响速度控制的响应速度,增大该值可提高响应速度
#define M1_SPEED_KI 163 // 速度环积分增益,帮助消除稳态误差,增大该值有助于消除较小的速度误差
// 电流环控制参数设置
#define M1_IQ_KP 4000 // Iq轴电流环比例增益,控制电机的转矩输出,调节该值可影响电流控制响应
#define M1_IQ_KI 400 // Iq轴电流环积分增益,消除电流稳态误差,过大会导致振荡,过小则消除误差的速度变慢
#define M1_ID_KP 4000 // Id轴电流环比例增益,控制电机的磁场方向,调节该值影响电机的稳态控制
#define M1_ID_KI 400 // Id轴电流环积分增益,消除电流稳态误差,过大会导致振荡,过小则消除误差的速度变慢
// 电位器相关参数设置
#define VSP_MIN_VOL 0.5 // 电位器采集的最小电压,电位器的起始电压,电压范围用于控制速度命令
#define VSP_MAX_VOL 2.5 // 电位器采集的最大电压,电位器的最大电压,电压范围用于控制速度命令
#define VSP_MIN_AD 100 // 电位器采集的最小AD值,电位器的最小值对应的ADC值
#define VSP_MAX_AD 2047 // 电位器采集的最大AD值,电位器的最大值对应的ADC值
#define MIN_RPM 50 // 电位器调节的最小速度,电位器控制速度的下限
#define MAX_RPM 3000 // 电位器调节的最大速度,电位器控制速度的上限
// 电机控制相关参数
#define I_MAX 16.46 // 电流标幺化基准值,基于电流采样的最大值进行标定
#define IGAIN_Q10 2113 // 电流换算系数,用于将采样值转换为电流值,考虑采样电阻和放大倍数
#define UDC_MAX 69.3 // 电压标幺化基准值,用于母线电压的标定
#define DCBUS_OVER 48.0 // 过压阈值,当电压超过此值时系统会进入过压保护状态
#define DCBUS_UNDER 20.0 // 欠压阈值,当电压低于此值时系统会进入欠压保护状态
// 状态机控制相关参数
#define PRECHARGE_TIME 40 // 自举电容预充电时间(单位:PWM周期),确保系统启动时不会对电容造成冲击
#define STOP_TO_RUN_SPEED 450 // 从停止状态跳转到运行状态的速度命令阈值,低于该值时电机保持停止
#define STARTUP_TO_SPIN_SPEED 600 // 从启动状态到旋转状态的速度阈值,电机达到此速度后切换到闭环控制
#define FREEWHEEL_SPEED 400 // 电机停止后,速度命令低于此值时系统进入空转状态
#define CUR_ALIGN 1.0 // 预定位电流大小,用于在电机启动时确保转子能够开始转动
#define CUR_STARTUP 1.0 // 开环启动电流大小,电机启动时使用的电流值
#define CUR_DEC 0.5 // 电流下降的斜率值,用于电机减速时控制电流衰减速度
#define CUR_INC 0.5 // 电流上升的斜率值,用于电机加速时控制电流增长速度
#define STARTUP_SPD_INC 300 // 开环下速度上升的斜率值,控制电机加速的速率
#define SPEED_TO_THETA 0.1 // 速度到角度的积分系数,用于角度估算时的修正
#define SPIN_SPD_INC 1000 // 闭环下速度上升的斜率值,影响电机闭环控制时速度响应的速度
#define SPD_DEC 1000 // 闭环下速度下降的斜率值,影响电机闭环控制时减速的响应
#define FREEWHEEL_TIME 1.0 // 空转时间,电机停止后的空转等待时间
#define FAULTRELEASE_TIME 3.0 // 故障复位时间,发生故障后复位的等待时间
// PI控制器增益定义
#define CUR_PI_Q 15 // 电流环控制增益,Q格式,决定了电流控制环的灵敏度
#define M1_IQ_KP 4000 // Iq轴电流环比例增益,调节电流控制的响应
#define M1_IQ_KI 400 // Iq轴电流环积分增益,帮助消除电流稳态误差
#define M1_ID_KP 4000 // Id轴电流环比例增益,调节电机磁场的方向控制
#define M1_ID_KI 400 // Id轴电流环积分增益,消除电流稳态误差
#define SPD_PI_Q 15 // 速度环控制增益,Q格式,调节速度环的响应速度
#define M1_SPEED_KP 16384 // 速度环比例增益,控制电机的速度响应
#define M1_SPEED_KI 163 // 速度环积分增益,帮助消除速度稳态误差
// 电机启动与运行相关参数
#define BIAS_OVER 1.7 // 偏置电压最大值,电压超过此值时会触发保护
#define BIAS_UNDER 1.55 // 偏置电压最小值,电压低于此值时会触发保护
// SMO参数设置(用于无传感器转子位置估算)
#define SMO_ERR_MAX 0.5 // 观测器误差最大值,限制转子角度估算的最大误差
#define SLIDE_GIAN 0.5 // 观测器增益值,控制转子位置估算的精度
#define SOFT_SWITCH_SPIN 1 // 切换闭环时软过渡开关标志,控制从开环到闭环的过渡模式
// 堵转设置(用于检测电机堵转并触发保护)
#define STALL_ERROR_THRESHOLD 10 // 堵转错误时长阈值,电机堵转超过此时间会触发保护
#define STALL_CHECK_SPD_CYCLE 10 // 堵转连续异常周期数,连续检测到堵转时触发保护
配置项解析- SYS_REFV 和 SYSCLK_HSE_72MHz:设置系统电压和时钟频率,确保系统运行稳定。
- PWMFREQ 和 DEAD_TIME:设定PWM频率和死区时间,优化电机控制的精度和效率。
- MAX_SPEED 和 MIN_SPEED:限制电机的最大和最小转速,确保系统的安全运行。
- PI控制器参数:这些参数调整电流和速度环的响应速度,控制系统的精度和稳定性。
4. 电机参数调试与PI控制器调节
4.1 电机参数调试
调试电机的参数通常需要通过实际测量来获取准确值。常见的电机参数如电阻 Rs、电感 Ls 和极对数 pole_pairs 等可以通过以下方式获取:
- 电阻 Rs:使用万用表测量电机相电阻。
- 电感 Ls:通过电桥测量电机的相电感。
- 极对数 pole_pairs:通过示波器检测电机的电压波形周期数来确定。
4.2 PI控制器简介
PI控制器(比例-积分控制器)是经典的反馈控制器,它由两部分组成:
- 比例部分 (Kp):通过比例系数调节误差信号的大小。Kp 决定了控制器对误差的响应速度。
- 积分部分 (Ki):通过积分系数积累误差,消除系统的稳态误差。Ki 可以修正因为比例控制不足所带来的误差。
PI控制器广泛应用于电机控制中,尤其是在电流控制和速度控制环节。它的核心作用是根据目标电流或速度和实际测量值之间的误差,计算出需要调整的控制量。
4.2 Kp 和 Ki 参数的意义与作用
4.2.1 Kp — 比例增益
Kp(比例增益)决定了系统对误差的反应速度。比例控制器的作用是根据输入误差大小计算控制输出。较高的 Kp 值会使得控制器响应更快,但如果 Kp 设置得太高,系统可能变得不稳定,产生振荡或超调。
Kp 的作用- 提高响应速度:较高的 Kp 可以使电流或速度环的控制更快地接近目标值。
- 增加系统的灵敏度:较高的 Kp 可以让控制系统对变化的目标更加灵敏,及时调整电机的电流或速度。
Kp 调整时的影响- 如果 Kp 设置过高,系统可能会出现过冲(超调)和振荡,特别是在负载突变的情况下,控制系统无法稳定。
- 如果 Kp 设置过低,系统响应速度会变慢,电机控制的精度也会降低。
如何调整 Kp- 电机转速不准确或过慢:可以尝试增加 Kp,使得速度环能更快地响应速度误差。
- 电机转动时不平稳(振荡或不稳定):可以适当降低 Kp,减少系统的反应过度,避免振荡。
4.2.2 Ki — 积分增益
Ki(积分增益)主要作用是消除稳态误差,确保电流或速度环能够在没有持续误差的情况下稳定运行。积分部分通过累积误差来修正系统中长期存在的偏差。
Ki 的作用- 消除稳态误差:例如,电机速度在恒定负载下可能会出现微小的偏差,Ki 通过累积这些偏差来补偿,最终消除稳态误差。
- 提高系统的精度:特别是在负载变化较大的情况下,Ki 能够根据累计误差调整控制输出,保持系统的精确运行。
Ki 调整时的影响- 如果 Ki 设置过高,可能会导致控制系统过度补偿,进而引起积分风暴(即控制输出迅速增大),使得系统变得不稳定,甚至出现振荡。
- 如果 Ki 设置过低,系统可能无法有效消除稳态误差,导致长期存在目标与实际之间的误差,控制精度降低。
如何调整 Ki- 电机在长时间运行后不能准确达到目标速度:适当增加 Ki,帮助系统更好地消除稳态误差。
- 电机转速调整过快,产生震荡或超调:降低 Ki,减缓积分效应,避免过度调节。
5. PI控制器的各个增益参数调节方法&调节建议
参数 | 作用 | 调节方法 | 调节建议 | M1_IQ_KP | Iq轴电流环比例增益,控制电机转矩的输出。Iq轴电流影响电机的转矩输出。 | 增加 M1_IQ_KP:增加比例增益,提升电流控制响应速度,但过高会导致过冲和振荡。
减小 M1_IQ_KP:减少系统响应速度,降低振荡和过冲。 | 电机启动缓慢或响应不敏感:增加 M1_IQ_KP,让电机对转矩需求响应更快。
电机转矩输出不稳定或振荡:减小 M1_IQ_KP,减缓系统响应,避免过度调节。 | M1_IQ_KI | Iq轴电流环积分增益,用于消除电流的稳态误差。 | 增加 M1_IQ_KI:增加积分增益,帮助消除稳态误差,但过高可能导致过调(积分风暴)。
减小 M1_IQ_KI:减少积分效应,避免过度补偿。 | 电流无法完全达到目标值(稳态误差较大):增加 M1_IQ_KI,帮助电流更快收敛。
电流稳定性差或出现振荡:减小 M1_IQ_KI,避免积分部分过度影响电流控制,保持系统稳定。 | M1_ID_KP | Id轴电流环比例增益,控制电机的磁场方向。Id电流影响电机磁场方向。 | 增加 M1_ID_KP:增大比例增益,使电机磁场调整更快,但过高可能导致磁场波动,从而影响系统稳定性。
减小 M1_ID_KP:减小比例增益,减少磁场调整的速度,提高稳定性。 | 电机运行不稳定或磁场方向不对齐:增加 M1_ID_KP,使磁场快速对齐。
电机磁场过于震荡或不稳定:减小 M1_ID_KP,提高系统稳定性。 | M1_ID_KI | Id轴电流环积分增益,消除电流稳态误差,特别是在 Id 轴电流的控制中。 | 增加 M1_ID_KI:增加积分增益,帮助消除稳态误差,特别是长时间的误差。
减小 M1_ID_KI:减小积分增益,避免过度的积分作用,减少系统不稳定的风险。 | Id 电流存在稳态误差:适当增加 M1_ID_KI 来帮助电流达到目标值。
Id 电流波动较大或不稳定:减小 M1_ID_KI,提高系统稳定性。 | M1_SPEED_KP | 速度环比例增益,决定系统对速度误差的响应速度。增加 M1_SPEED_KP,系统对速度变化的响应越快。 | 增加 M1_SPEED_KP:提高响应速度,减少达到目标速度的时间,但可能引起过冲和振荡。
减小 M1_SPEED_KP:减小响应速度,使系统平稳,但可能导致达到目标速度时间延长。 | 电机速度响应过慢:增加 M1_SPEED_KP,提高速度响应速度。
电机速度出现过冲或震荡:减小 M1_SPEED_KP,让系统响应更加平滑。 | M1_SPEED_KI | 速度环积分增益,消除长时间的稳态误差。 | 增加 M1_SPEED_KI:帮助消除由于负载变化等因素引起的稳态误差,但过高的 Ki 可能导致系统过度调节,产生振荡。
减小 M1_SPEED_KI:减缓对稳态误差的响应,减少不稳定性。 | 电机在负载变化时无法稳定运行:增加 M1_SPEED_KI,帮助消除因负载变化引起的速度误差。
电机速度出现振荡或不稳定:适当减小 M1_SPEED_KI,避免过度调节引起的系统不稳定。 |
要调节 M1_IQ_KP, M1_IQ_KI, M1_ID_KP, M1_ID_KI, M1_SPEED_KP, 和 M1_SPEED_KI 参数,需要理解它们分别在电流控制和速度控制中的作用,并根据电机的表现来进行调整。通过合理的调节这些参数,可以优化电机的转速响应、平稳性和精度。
6. 总结
在本篇文章中,我们详细介绍了 APM32M3514 电机控制系统中的 电机参数配置 和 PI控制器的增益设置,并解释了 parameter.h 中各个参数的作用。通过合理设置这些参数,可以优化电机控制系统的性能,确保系统在不同负载和工况下稳定运行。
- PI控制器增益:通过调节 Kp 和 Ki,可以控制电机的响应速度和精度。
- 电机参数调节:如电流、速度、极对数等电机的标定参数,需要根据实际电机进行调试和优化。
正确的电机参数配置和 PI 控制器调节对于确保电机精确控制和系统稳定运行至关重要。
|