发明内容
本发明要解决的技术问题是提供一种电动助力转向系统,能够解决硬件看门狗或软件看门存在的安全隐患,确保系统安全。
为解决上述技术问题,本发明的电动助力转向系统,包括:
一继电器,其常开触点串联在助力电机驱动回路中;
一主MCU,一辅助MCU,主MCU与辅助MCU之间通过串行通讯方式进行数据传输;所述继电器由主MCU和辅助MCU共同控制;
在上电初始运行阶段,对所述继电器的开关逻辑进行诊断,判断该继电器是否能在两个MCU的控制下按照正确的逻辑动作;在程序轮询运行阶段,两个MCU之间相互监控对方运行状态,当发现任意一个MCU存在故障时,通过无故障的MCU关断继电器,切断助力电机驱动回路的供电电源,使电动助力转向系统切换到机械转向状态。
本发明的电动助力转向系统使用双MCU技术,是一种具有双MCU冗余监控功能的电动助力转向系统。在上电初始运行阶段对继电器进行检测,确保继电器具有可靠的导通和关断功能;在程序轮询运行阶段,通过主辅MCU相互监控运行状况,当发现任何一个MCU存在晶振停振、晶振振荡频率异常、程序运行时序异常或跑飞时,由另一个工作正常的MCU关断继电器,使电动助力转向系统切换为机械转向系统,达到确保系统安全的目的,有效解决了使用硬件看门狗或软件看门狗情况下存在的安全隐患,能够确保系统安全。
本发明在增加有限硬件成本的基础上,通过软件监控策略实现故障保护,克服使用硬件看门狗或软件看门狗在系统安全方面的不足之处,大大提升电动助力转向系统的性价比。
具体实施方式
图1是本发明的具有双MCU冗余监控功能的电动助力转向系统一个实施例,它包括一主MCU,一辅助MCU,主MCU与辅助MCU之间通过串行通讯方式进行数据传输;一个继电器KM1,该继电器KM1的线圈连接在NPN晶体管Q1的集电极和电源之间,晶体管Q1的基极和与门HM的输出端相连接,与门HM的两个输入端分别与所述主MCU和辅助MCU相连接。所述继电器KM1由两个MCU共同控制,当任意一个MCU发出关断继电器KM1指令(M_Relsy或S_Relsy)时,使晶体管Q1处于截止状态,继电器KM1电源断开,其串联在助力电机驱动回路中的常开触点KM1断开,切断助力电机驱动回路的供电,电动助力转向系统切换到机械转向状态。
双MCU冗余监控由上电初始运行阶段的自检测和程序轮询运行阶段的自检测两个部分的内容组成。
1、初始运行阶段双MCU冗余自检测
初始运行阶段自检测包括两个方面的内容,一方面检测两个MCU之间的通讯能否可靠的建立,另一方面检测继电器KM1的控制逻辑是否能正确地被执行。
继电器KM1的控制逻辑如下表:
主MCU指令 |
辅助MCU指令 |
继电器KM1状态 |
关断 |
导通 |
关断 |
关断 |
关断 |
关断 |
导通 |
关断 |
关断 |
导通 |
导通 |
导通 |
初始运行阶段自检测的控制流程如图2所示,包括如下步骤:
1.1、主MCU设置指令M_Relay为关断继电器的状态,然后通过串行通讯的方式向辅助MCU发送控制命令1,辅助MCU接收到控制命令1后,设置指令S_Relay为导通继电器的状态,同时通过串行通讯向主MCU回发响应1。
如果主MCU接收不到正确的响应1,则认定出现串行通讯故障。
如果主MCU接收到正确响应1,则分别对继电器触点电压与电池电压进行采样,如果电池电压减去触点电压所得的差小于诊断阀值,则认定继电器已经导通,与继电器控制逻辑不符合,出现继电器无法关断故障。
1.2、主MCU设置指令M_Relay为关断继电器的状态,然后通过串行通讯的方式向辅助MCU发送控制命令2,辅助MCU接收到控制命令2后,设置指令S_Relay为关断继电器的状态,同时通过串行通讯向主MCU回发响应2。
如果主MCU接收不到正确的响应2,则认定出现串行通讯故障。
如果主MCU接收到正确响应2,则分别对继电器触点电压与电池电压进行采样,如果电池电压减去触点电压所得的差小于诊断阀值,则认定继电器已经导通,与继电器控制逻辑不符合,出现继电器无法关断故障。
1.3、主MCU设置指令M_Relay为导通继电器的状态,然后通过串行通讯的方式向辅助MCU发送控制命令2,辅助MCU接收到控制命令2后,设置指令S_Relay为关断继电器的状态,同时通过串行通讯向主MCU回发响应2。
如果主MCU接收不到正确的响应2,则认定出现串行通讯故障。
如果主MCU接收到正确响应2,则分别对继电器触点电压与电池电压进行采样,如果电池电压减去触点电压所得的差小于诊断阀值,则认定继电器已经导通,与继电器控制逻辑不符合,出现继电器无法关断故障。
1.4、主MCU设置指令M_Relay为导通继电器的状态,然后通过串行通讯的方式向辅助MCU发送控制命令1,辅助MCU接收到控制命令1后,设置指令S_Relay为导通继电器的状态,同时通过串行通讯向主MCU回发响应1。
如果主MCU接收不到正确的响应1,则认定串行通讯故障。
如果主MCU接收到正确响应1,则分别对继电器触点电压与电池电压进行采样,如果电池电压减去触点电压所得的差小于诊断阀值,则认定继电器已经导通,与继电器控制逻辑符合,无故障;否则,认为继电器关断,与继电器控制逻辑不符合,出现继电器无法导通故障。
2、程序轮询运行阶段双MCU冗余自检测包括如下步骤:
2.1、主MCU通知辅助MCU开始轮询互相监测
初始运行阶段自检测结束后,如果检测到无故障发生,则如图2所示,主MCU通过串行通讯发送控制命令3,通知辅助MCU开始双MCU冗余自检测,辅助MCU收到控制命令3后,通过串行通信方式向主MCU发送响应3。如果主MCU不能收到响应3,则认定串行通讯故障;如果主MCU收到响应3,则认定无故障。
2.2、在步骤2.1中,如果辅助MCU收到了控制命令3,且主MCU收到了响应3后,两个MCU开始执行相互监测。
双MCU相互监测的控制流程如图4所示,主MCU为串行通讯的发起者,主MCU在每个运行周期内运行到特定程序特定的位置时,通过串行通讯依次向辅助MCU发送握手命令4、握手命令5、握手命令6、握手命令7,辅助MCU接收到主MCU的握手命令4后,向主MCU发送响应4;辅助MCU收到握手命令5后,向主MCU发送响应5,辅助MCU收到握手命令6后,向主MCU发送响应6,主MCU收到握手命令7后,向主MCU发送响应7。
主MCU发送完握手命令7以后,根据接收到的辅助MCU响应判断辅助MCU是否发生故障,主MCU对辅助MCU的监控故障诊断算法流程如图5所示:主MCU在一次运行周期内在发送完握手命令4,5,6,7后,检查是否通过串行通讯口接收到了四个不同的响应,并判断四个响应的内容及顺序是与预设的内容及顺序相同,如果没有收到四个不同的响应或响应的内容或顺序与预设的不相同,则主MCU认为辅助MCU程序运行异常,主MCU关断继电器,确保系统的安全。
辅助MCU对主MCU的监控故障诊断算法流程如图6所示:
辅助MCU在接收到第一个握手命令后,开始打开一个定时器,设定定时器的超时溢出时间为主MCU程序一次轮询运行时间的两倍(不限于两倍)。辅助MCU每次从串行通讯口上接收到一个握手命令,判断定时器是否发生超时溢出,然后将定时器清0,并将接收到的握手命令放到一个缓存区中,且将握手命令计数器自加1。
如果定时器发生溢出,则说明在两倍轮询运行时间内,主MCU都没有通过串行通讯往辅助MCU发送握手命令,认定主MCU程序跑飞或晶振停振,辅助MCU关断继电器,确保系统安全。
当握手命令计数器累加到等于4时,对存放在缓存区中的握手命令进行统计,检查缓存区中的四条握手命令是否依次为预先定义的握手命令4、5、6、7;如果缓存区存放的握手命令顺序不是4、5、6、7,则认定主MCU运行程序运行时序错误,辅助MCU关断继电器,确保系统安全。如果缓存区存放的握手命令顺序是4、5、6、7,则将握手命令计数器清“0”后,再判断返回到辅助MCU接收到一个握手命令,判断定时器是否发生超时溢出处。
以上通过具体实施方式及实施例对本发明进行了详细的说明,其目的是为了便于理解本发明的目的、采用的技术解决方案、有益效果,这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。