工业级伺服电机 I2T 保护怎么做

发布时间:2026/7/8 8:54:33
工业级伺服电机 I2T 保护怎么做 工业级伺服电机 I2T 保护怎么做1. I2T 保护到底保护什么电机过载时最先需要保护的是绕组铜耗导致的温升。铜耗近似为P_cu I_rms^2 * R_phase其中I_rms电机相电流 RMS或 dq 电流等效值 R_phase相电阻随温度升高而增大所以过载热量与I^2 * t强相关这就是 I2T 这个名字的来源。但工业级伺服里的 I2T 并不只是简单累计I^2。真正要解决的是1. 堵转时局部热点升温很快温度传感器滞后 2. 旋转时热量分布更均匀允许更长过载 3. 电机短时峰值性能要释放不能一律按最保守工况限流 4. 热状态恢复需要时间不能清故障后立即满血因此工业级做法一般是“热模型 动态降额 温度传感器兜底”。2. 简单 I2T 和工业级 I2T 的区别简单做法电流超过某档 - 固定速度累计 I2T_cnt I2T_cnt 到阈值 - 直接限到额定电流或报故障这种做法实现简单但有明显问题1. 不区分堵转和旋转 2. 不区分平均温升和局部热点 3. 限流动作突兀力矩会突然掉 4. 冷却恢复不准确 5. 对短时峰值性能利用不足工业级做法1. 计算电机热状态 thermal_state 2. 根据速度修正连续电流和散热能力 3. 堵转热点和平均绕组可以分别建模 4. 热状态接近上限时逐渐降额 5. 温度传感器作为最终兜底典型输出不是一个简单故障位而是动态电流上限I_limit f(thermal_state, speed, temperature)FOC 电流环最终执行iq_ref clamp(iq_ref, -I_limit, I_limit)3. 推荐的工业级 I2T 架构建议至少分三层第一层快速硬件保护 DRV 过流、母线异常、MOS 保护、ADC 饱和等直接关断或进 ERROR。 第二层电机热模型 I2T 提前预测绕组和堵转热点温升输出动态电流上限。 第三层温度传感器保护 NTC/PTC/KTY/热敏电阻作为真实温度兜底处理模型误差和异常环境。对于堵转发热不均匀的电机建议做双热模型thermal_avg绕组平均热状态 thermal_hotspot堵转局部热点热状态最终限流取更严格的一个I_limit min(I_limit_avg, I_limit_hotspot)4. 需要测试哪些数据想做工业级 I2T测试数据不能只有一个电流-时间表。至少需要覆盖“加热、冷却、速度、环境、初始温度、重复过载”几个维度。4.1 堵转过载时间堵转是热点最危险的工况必须测。推荐记录电流点I1, I2, I3 ... 允许时间t_limit 结束条件绕组热点温度、壳体温度、NTC 温度、是否损坏示例电流堵转允许时间60A67s80A21s100A16s120A13s140A6s160A2s200A1s4.2 不同速度下的过载时间只测堵转不够因为旋转后热分布改善过载能力明显提高。建议至少测0RPM / 堵转 1RPM 5RPM 10RPM 50RPM 100RPM 额定转速附近如果测试资源有限最低建议堵转 10RPM 50RPM 额定转速附近数据用途1. 得到 I_continuous(speed) 2. 得到 overload_time(current, speed) 3. 判断堵转热点模型和平均热模型的切换速度4.3 冷却曲线工业级 I2T 很重视恢复过程。不能只知道多久热还要知道多久冷。建议测试热到 90℃ - 停止输出 - 记录降到 80℃、70℃、60℃ 的时间 热到 90℃ - 限到额定电流运行 - 记录冷却曲线 热到 90℃ - 低速旋转空载 - 记录冷却曲线冷却数据用于拟合热时间常数T(t) T_ambient (T0 - T_ambient) * exp(-t / tau_cool)4.4 不同初始温度工业现场很少每次都是冷机启动。需要测热机再过载。建议25℃ 冷机开始 60℃ 热机开始 80℃ 热机开始如果 80℃ 初始温度下还能允许的过载时间远低于冷机模型必须保留热记忆不能清故障后重置为 0。4.5 不同环境温度环境温度会影响散热裕量。建议至少测25℃ 40℃ 整机最高规格环境温度例如 50℃ 或 55℃可以将热模型初始状态或连续电流按环境温度降额I_cont_derated I_cont_25C * sqrt((T_limit - T_ambient) / (T_limit - 25))4.6 重复过载循环这类测试最能验证模型是否靠谱100A 5s - 30A 20s - 100A 5s - 30A 20s - repeat观察1. 模型热状态是否逐步累积 2. 温度是否稳定在安全范围 3. 降额是否平滑 4. 清故障后是否存在过快恢复5. 关键公式5.1 基础 I2T 积分最简单形式I2T I^2 * Ts如果以连续电流归一化thermal ((I / I_cont)^2) * Ts / tau_heat其中thermal 1.0 表示达到热极限 I_cont 是当前速度下的连续电流 tau_heat 是热时间常数 Ts 是控制周期5.2 带冷却的一阶热模型更标准的离散模型thermal Ts / tau * ((I / I_cont(speed))^2 - thermal)解释(I / I_cont)^2当前发热相对连续热平衡点的强度 thermal当前热状态 Ts / tau热模型更新系数当I I_cont时thermal会趋近 1。当I I_cont时thermal会下降。当I I_cont时thermal会继续上升。5.3 基于实测过载时间反推热模型假设初始热状态为 0电流恒定忽略冷却达到极限时间为t_limitthermal_rate 1 / t_limit如果每周期执行一次thermal Ts / t_limit这就是查表式 I2T 的本质。如果保留冷却项一阶模型达到 thermal1 的时间为thermal(t) A * (1 - exp(-t / tau)) A (I / I_cont)^2给定实测t_limit可以反推1 A * (1 - exp(-t_limit / tau))整理tau -t_limit / ln(1 - 1 / A)注意只有A 1时才会过热。5.4 速度相关连续电流堵转和旋转散热不同可以建立I_cont f(speed)简单做法是查表插值speed: 0RPM, 10RPM, 50RPM, ratedRPM Icont: 30A, 45A, 60A, 70A也可以用平滑函数I_cont(speed) I_stall (I_rated - I_stall) * clamp(speed / speed_base, 0, 1)5.5 动态降额不要等到thermal 1才突然限流建议提前折返thermal 0.7允许峰值电流 0.7 thermal 1.0线性降到连续电流 thermal 1.0限制到连续电流或报 overload公式k (1.0 - thermal) / (1.0 - derate_start) I_limit I_cont (I_peak - I_cont) * clamp(k, 0, 1)6. 示例代码查表式 I2T 动态降额这类适合用实测过载时间快速落地。typedefstruct{floatthermal;// 0.0 ~ 1.0floatcurrent_limit;// Auint8_toverload;}MotorThermalState;staticfloatinterp(floatx,floatx0,floaty0,floatx1,floaty1){if(x1x0){returny1;}returny0(x-x0)*(y1-y0)/(x1-x0);}staticfloatlookup_time(floatcurrent,constfloat*current_tab,constfloat*time_tab,intn){inti0;if(currentcurrent_tab[0]){returntime_tab[0];}for(i1;in;i){if(currentcurrent_tab[i]){returninterp(current,current_tab[i-1],time_tab[i-1],current_tab[i],time_tab[i]);}}returntime_tab[n-1];}staticfloatget_overload_time(floatcurrent,floatrpm){staticconstfloatcurrent_tab[]{50,60,80,100,120,140,160,180,200,220};staticconstfloatrotate_time[]{3600,500,61,30,18,13,10,7,5,3.5f};staticconstfloatstall_time[]{260,67,21,16,13,6,2,2,1,1};constintnsizeof(current_tab)/sizeof(current_tab[0]);constfloatstall_rpm1.0f;constfloatrotate_rpm10.0f;floattslookup_time(current,current_tab,stall_time,n);floattrlookup_time(current,current_tab,rotate_time,n);floatk0.0f;if(rpmstall_rpm){returnts;}if(rpmrotate_rpm){returntr;}k(rotate_rpm-rpm)/(rotate_rpm-stall_rpm);returntrk*(ts-tr);}voidmotor_i2t_update(MotorThermalState*m,floatid,floatiq,floatrpm,floatts,floati_cont,floati_peak){constfloatderate_start0.70f;floati_rmssqrtf(id*idiq*iq);floatt_limit0.0f;floatk0.0f;if(i_rmsi_cont){t_limitget_overload_time(i_rms,rpm);m-thermalts/t_limit;}else{// Cooling rate should be fitted from cooling tests.m-thermal-ts/120.0f;}if(m-thermal0.0f){m-thermal0.0f;}elseif(m-thermal1.0f){m-thermal1.0f;}if(m-thermalderate_start){k(1.0f-m-thermal)/(1.0f-derate_start);if(k0.0f){k0.0f;}elseif(k1.0f){k1.0f;}m-current_limiti_cont(i_peak-i_cont)*k;}else{m-current_limiti_peak;}m-overload(m-thermal1.0f);}7. 示例代码一阶热模型如果测试数据比较完整建议从查表式升级到一阶热模型。typedefstruct{floatthermal;floatcurrent_limit;uint8_toverload;}ThermalModel;staticfloatclampf_local(floatx,floatlo,floathi){if(xlo){returnlo;}if(xhi){returnhi;}returnx;}staticfloatget_cont_current_by_speed(floatrpm){constfloati_stall30.0f;constfloati_run60.0f;constfloatspeed_base50.0f;floatkclampf_local(rpm/speed_base,0.0f,1.0f);returni_stall(i_run-i_stall)*k;}voidthermal_model_update(ThermalModel*m,floatid,floatiq,floatrpm,floatts){constfloattau120.0f;constfloatderate_start0.70f;constfloati_peak120.0f;floati_rmssqrtf(id*idiq*iq);floati_contget_cont_current_by_speed(rpm);floatheat_target(i_rms/i_cont)*(i_rms/i_cont);floatk0.0f;m-thermalts/tau*(heat_target-m-thermal);m-thermalclampf_local(m-thermal,0.0f,1.2f);if(m-thermalderate_start){k(1.0f-m-thermal)/(1.0f-derate_start);kclampf_local(k,0.0f,1.0f);m-current_limiti_cont(i_peak-i_cont)*k;}else{m-current_limiti_peak;}m-overload(m-thermal1.0f);}8. 双热模型更适合堵转热点堵转时某些槽位或某一相会持续发热NTC 往往贴在壳体或定子某处响应慢。因此可以做双模型thermal_avg平均绕组温升时间常数大 thermal_hotspot堵转局部热点时间常数小低速时权重大简化公式hotspot_gain 1 - clamp(rpm / rpm_hotspot_release, 0, 1) thermal_hotspot Ts / tau_hotspot * (hotspot_gain * (I / I_stall_cont)^2 - thermal_hotspot) thermal_avg Ts / tau_avg * ((I / I_run_cont(speed))^2 - thermal_avg)最终thermal_used max(thermal_avg, thermal_hotspot) I_limit min(I_limit_avg, I_limit_hotspot)这类模型非常适合1. 低速大扭矩 2. 堵转冲击 3. 机械卡死 4. 温度传感器距离热点较远9. 参数标定流程建议按这个顺序做1. 先确定绝对安全边界 例如绕组热点不超过 120℃壳体不超过 90℃磁钢不退磁。 2. 测堵转电流-时间表 用来标定 hotspot 模型。 3. 测不同速度下的电流-时间表 用来标定 avg 模型和 I_cont(speed)。 4. 测冷却曲线 用来标定 tau_cool 或热模型 tau。 5. 做重复过载循环 验证热状态是否累积正确。 6. 加安全系数 软件保护时间一般不要等于破坏时间建议乘 0.6~0.8。 7. 实车/整机验证 最终看实际安装条件、外壳散热、环境温度、线束和风道。10. 工程实现注意点10.1 I2T 不应依赖主循环频率I2T 更新必须在固定周期调用例如 PWM 中断或电流环周期Ts 1 / MOSFET_Freq如果在while(1)主循环里累计保护时间会随 CPU 空闲程度变化。10.2 电流建议用 RMS 或 dq 模长推荐I sqrt(id^2 iq^2)只用iq的问题是id也会产生铜耗。10.3 温度传感器不能替代 I2T温度传感器适合做最终保护但不适合单独保护堵转热点1. 热路径有延迟 2. 堵转局部热点可能远高于传感器位置 3. 高电流 1~2 秒内就可能出现危险热点10.4 清故障不应清热状态工业级产品一般不会在清故障时直接把热状态归零。更合理的是1. 清故障只清 fault flag 2. thermal_state 继续按冷却模型下降 3. thermal_state 低于恢复阈值后才允许峰值电流例如thermal 0.5允许重新使能峰值 thermal 0.8只允许低电流恢复10.5 保护要分级建议分级warning热容量超过 70%开始降额 limit热容量超过 90%明显限流 fault热容量超过 100%持续过载或温度超过硬阈值11. 推荐落地方案如果项目处于快速工程验证阶段使用查表式 I2T 速度插值 70% 动态降额优点1. 直接利用实测数据 2. 行为可解释 3. 参数好调 4. 对堵转热点有快速保护如果项目进入量产可靠性阶段升级为双热模型 thermal_avg thermal_hotspot并补齐1. 冷却曲线 2. 环境温度修正 3. 初始温度修正 4. 重复过载循环验证 5. NTC 真实温度兜底12. 总结工业级 I2T 的本质不是“限制电流”而是“管理热容量”。一个专业的伺服 I2T 应该做到1. 短时允许峰值电流释放性能 2. 堵转时快速保护局部热点 3. 旋转时不过度保守 4. 热状态接近极限时平滑降额 5. 温度传感器作为兜底 6. 清故障后仍保留热记忆工程上最稳妥的路线是第一版实测时间表 速度插值 动态降额 第二版一阶热模型 冷却曲线 第三版平均绕组 堵转热点双热模型这样既不会一开始模型过复杂也能逐步向成熟工业伺服产品的保护策略靠近。