【柴油机各喷射阶段代码逻辑分析】
喷射的阶段(InjCurr_stPhaseUBA[idxBankUB])
#define INJCURRST_OFF 0 喷射关闭阶段
支持手动从标定处更新电流控制参数
#define INJCURRST_BOOST 1 高压上冲阶段
喷射过程中初始阶段之一,主要目的是通过快速提高喷油器线圈的电流来实现快速响应,以确保喷油器能够迅速打开。
1、高压上冲启动。
打开两个高边MOS和喷射的低边MOS。
2、实时监控喷射电流。
打开后立即获取此Bank的电流值,用来监测喷射过程中是否出现异常情况。
3、故障处理。
a)过流保护
InjCurr_adCRTUWA[idxBankUB]>InjCurr_iShortLmtUW
当反馈电流大于过流阈值 InjCurr_iShortLmtUW 时,认为发生过流。
执行:
关闭喷射:InjCurr_Ctl_BnkOff(idxBankUB)
写入故障信息:设置故障标志 DSM_bErrUBA,并记录为“Boost段过流” (_DSM_BOOST_GRAD_UPPERLIMIT)。
切换至故障状态:InjCurr_SwitchTo(idxBankUB, _INJCURR_ST_MALFUNCTION)。
b)欠流保护
if((InjCurr_tiTmr1DuraUIA[idxBankUB]>=InjCurr_tiHtGChkUI)&&(InjCurr_adCRTUWA[idxBankUB]<InjCurr_iOpenLmtUW))
在上冲过程中,如果经过一定时间(InjCurr_tiHtGChkUI),反馈电流仍低于开路电流下限
值 InjCurr_iOpenLmtUW,可能发生开路或高边短地。
执行:
关闭喷射:InjCurr_Ctl_BnkOff(idxBankUB)
写入故障信息:标志为“Boost段欠流” (_DSM_BOOST_GRAD_LOWERLIMIT)。
切换至故障状态:InjCurr_SwitchTo(idxBankUB, _INJCURR_ST_MALFUNCTION)。
4、高压上冲完成条件
如果没有故障发生,代码判断是否可以退出“高压上冲阶段”:
退出条件 1:时间达到上冲时限
if(InjCurr_tiTmr1DuraUIA[idxBankUB] >= InjCurr_tiBoostMaxUI)
上冲阶段的持续时间已达到最大允许值 InjCurr_tiBoostMaxUI。
退出条件 2:上冲电流达到目标值(允许截断)
if((_BOOST_INTERFERENCE_ENABLE) && (InjCurr_adCRTUWA[idxBankUB] > InjCurr_iBoostDestUW))
如果允许截断(_BOOST_INTERFERENCE_ENABLE),且当前电流已达到目标电流 InjCurr_iBoostDestUW。
退出后处理
若反馈电流低于开路电流下限值,关闭喷射并记录“欠流故障”。
否则:
启用 DCDC 电源泵电:InjCurr_bDCDCEnUB |= (uint8)(0x01 << idxBankUB)
此Bank高边控制高压的Mos关闭,只留下24V低压。
切换到下一个阶段:高端维持阶段(_INJCURR_ST_PEAK)。
#define INJCURRST_PEAK 2 高端维持阶段
通过维持高电流,确保喷油器保持打开状态,从而提供稳定的喷射量。
1. 获取反馈信息
获取当前喷射反馈电流(InjCurr_adCRTUWA[idxBankUB])。
获取高端维持阶段的计时信息(InjCurr_tiTmr1DuraUIA[idxBankUB])。
2. 高端维持完成条件
条件: 如果高端维持阶段持续时间达到上限值 InjCurr_tiPeakMaxUI。
动作:
启用 DCDC 泵电支持:InjCurr_bDCDCEnUB |= (uint8)(0x01 << idxBankUB)
关闭 24V 高压调制:InjCurr_Ctl_BatOff(idxBankUB)
切换到保持阶段(Hold Phase):InjCurr_SwitchTo(idxBankUB, _INJCURR_ST_HOLD)。
3. 故障处理
高端维持阶段会实时监控反馈电流,处理以下两类故障
a)过流故障
如果电流超过短路标定上限值 InjCurr_iShortLmtUW
执行:
关闭喷射:InjCurr_Ctl_BnkOff(idxBankUB)
写入过流故障信息:DSM_stErrUBA[idxBankUB] = _DSM_PEAK_CRT_UPPERLIMIT
切换到故障阶段(Malfunction Phase):InjCurr_SwitchTo(idxBankUB, _INJCURR_ST_MALFUNCTION)。
b)欠流故障
如果电流低于开路下限值 InjCurr_iOpenLmtUW:
执行:
写入欠流故障信息:DSM_stErrUBA[idxBankUB] = _DSM_PEAK_CRT_LOWERLIMIT
切换到故障阶段。(Malfunction Phase):InjCurr_SwitchTo(idxBankUB, _INJCURR_ST_MALFUNCTION)。
4. 高端调制控制
高端维持阶段会对反馈电流进行动态调制,控制 MOS 管的开关状态,确保电流保持在目标范围内。
a)MOS 开状态(维持电流下限)
条件:如果电流低于下限 InjCurr_iPeakLoLmtUW,且当前状态不是 MOS 开状态。
动作:
根据是否由 DCDC 支持选择调用 InjCurr_Ctl_BoostOn 或 InjCurr_Ctl_BatOn。
重置计时器 2:InjCurr_RstTmr2(idxBankUB)
设置下次调制的时间间隔:InjCurr_tiNextActionUWA[idxBankUB] = InjCurr_tiPeakPwmOnUW
b)MOS 关状态(维持电流上限)
条件:如果电流超过上限 InjCurr_iPeakUpLmtUW,且当前状态不是 MOS 关状态。
动作:
关闭 24V调制:InjCurr_Ctl_BatOff(idxBankUB)
重置计时器 2,调整下次动作时间:InjCurr_tiNextActionUWA[idxBankUB] = InjCurr_tiPeakPwmOffUW
#define INJCURRST_HOLD 3 低端维持阶段
喷射控制流程中接近结束的阶段,主要目的是通过低电流维持喷油器的最小开启状态,并逐步完成喷射过程。
1. 获取反馈信息
反馈电流: InjCurr_adCRTUWA[idxBankUB],用于判断当前电流是否在目标范围内。
阶段计时: InjCurr_tiTmr1DuraUIA[idxBankUB],用于判断是否超出低端维持阶段的时间限制。
2. 低端维持阶段结束条件
条件: 阶段计时超过低端维持时间限制 InjCurr_tiHoldMaxUI。
动作:
关闭喷射:InjCurr_Ctl_BnkOff(idxBankUB)。
切换到故障阶段(Malfunction Phase):InjCurr_SwitchTo(idxBankUB, _INJCURR_ST_MALFUNCTION)。
3. 故障处理
a)过流故障
条件: 如果反馈电流大于短路上限值 InjCurr_iShortLmtUW。
动作:
关闭喷射:InjCurr_Ctl_BnkOff(idxBankUB)。
写入过流故障信息:DSM_stErrUBA[idxBankUB] = _DSM_HOLD_CRT_UPPERLIMIT。
切换到故障阶段。
b)欠流故障
条件: 如果反馈电流小于开路下限值 InjCurr_iOpenLmtUW。
动作:
写入欠流故障信息:DSM_stErrUBA[idxBankUB] = _DSM_HOLD_CRT_LOWERLIMIT。
切换到故障阶段。
4. 低端调制控制
a)触发调制条件
条件: 调制计时器到达下一个动作的时间 InjCurr_tiNextActionUWA[idxBankUB],且当前未在调制中。
动作: 触发调制 InjCurr_bActionUBA[idxBankUB] = 1。
b)MOS 开状态(保持最低电流)
条件: 反馈电流低于低端维持下限值 InjCurr_iHoldLoLmtUW。
动作:
打开 24V 调制:InjCurr_Ctl_BatOn(idxBankUB)。
重置计时器 2:InjCurr_RstTmr2(idxBankUB)。
设置下次调制的时间间隔:InjCurr_tiNextActionUWA[idxBankUB] = InjCurr_tiHoldPwmOnUW。
c)MOS 关状态(避免过高电流)
条件: 反馈电流高于低端维持上限值 InjCurr_iHoldUpLmtUW。
动作:
关闭 24V 高压调制:InjCurr_Ctl_BatOff(idxBankUB)。
重置计时器 2,调整下次动作时间:InjCurr_tiNextActionUWA[idxBankUB] = InjCurr_tiHoldPwmOffUW。
#define INJCURRST_EOI 4 结束阶段(End of Injection)
如果持续时间已达到或超过阈值(InjCurr_tiTmr1DuraUIA[idxBankUB] >= InjCurr_tiEoiNoCurrUI),说明结束喷射的条件已满足。
允许对应的 DCDC 泵开始工作,为后续操作或其他模块提供支持。
#define INJCURRST_MALFUNCTION 5 故障阶段
关闭喷射
需要根据新增的管脚来判断具体的故障
需要在什么位置?