双核EPS控制程序流及其监控系统和监控方法与流程

文档序号:16779482发布日期:2019-02-01 19:00阅读:898来源:国知局
双核EPS控制程序流及其监控系统和监控方法与流程

本发明涉及汽车领域,特别是涉及一种双核eps(电动助力转向系统)控制程序流。本发明还涉及一种双核eps控制程序流的监控系统。



背景技术:

电动助力转向系统(electricpowersteering,缩写eps)是一种直接依靠电机提供辅助扭矩的动力转向系统,与传统的液压助力转向系统hps(hydraulicpowersteering)相比,eps系统具有很多优点。eps主要由扭矩传感器、车速传感器、电动机、减速机构和电子控制单元(ecu)等组成。

如图1所示,现有电动助力转向硬件架构的各功能模块如下:

1、控制器,即电动助力转向控制器的电子控制单元(eps-ecu),主要包含主控芯片、系统基础芯片和其它电路器件等,与传感器、执行器共同组成了eps电控系统。

2、主控芯片(mcu)是由双核组成的单片机芯片,运算处理单元分别第一反馈模块core_0和第二反馈模块core_1同步进行,并通过跨核数据总线实现全局变量等信息的共享数据交互。

3、系统基础芯片(sbc)为mcu片外的独立可编程芯片,可由mcu通过spi总线通信方式实现寄存器配置,以使能窗口狗、问答狗及安全管理功能模块的功能参数与使能等属性。

4、执行器,在eps电控系统中为电机模块,提供电动力矩输出以减轻驾驶员的手力矩,以达到轻松舒适的转向手感。

5、关断路径连接,是指ecu端通过的接插件输出至执行器的电动助力关断路径,在此将mcu双核软件控制的“与门”逻辑单片机引脚的连接路径定义为软关断路径(sw_shutoff);而将sbc硬件控制的“或门”逻辑芯片引脚的连接路径定义为硬关断路径(hw_shutoff)。

程序流,即程序控制流,通过程序流能自由地控制包括文件,内存,io设备等等中的数据流向。

在跨核数据控制方面往往较难保证数据访问的实时与同步,针对软件控制时序及跨核共享数据失效工况下的程序跑飞异常,必须从功能安全角度,提供一套完备的程序流监控机制,能够在故障容忍时间内使得eps电控系统的电机处的助力切断,即系统进入安全状态,确保驾驶员人身安全不受危害。



技术实现要素:

本发明要解决的技术问题是提供一种能提升双核eps跨核信号和跨核数据同步安全等级的双核eps控制程序流。

本发明还提供了一种能确保上述双核eps控制程序流在软件跑飞等异常情况时能够及时将系统工作模式切换进入安全状态的监控系统。

为解决上述技术问题,本发明提供的双核eps控制程序流,其特征在于:

程序初始化,mcu端通过spi指令对sbc的窗口狗和问答狗配置如下:

配置窗口狗开启关闭时间、窗口狗硬线喂狗时刻触发条件、窗口狗的喂狗时刻有效范围和配置窗口狗的有效范围超时事件及对超时事件的处理;

配置问答狗问数据机制的预设种子字节、问答狗问答数据匹配机制、问答狗的问答数据喂狗时刻有效范围和问答狗有效范围内答机制识别顺序;

程序初始化完成,在第一反馈模块中第一后台背景函数、第一任务首端和尾端以及第二任务指定位置设定答数据标记断点;

在第二反馈模块中第二后台背景函数、第三任务、第四任务指定位置设定答数据标记断点;

在设定答数据标记断点处,将检索到的某组问数据标记的答数据标记值通过spi从mcu发送至sbc;

被监控的各任务内的标记断点位置,根据标志位依次判断当前应发出的答数据标记值。

其中,配置窗口狗开启关闭时间时,将开启窗口时间设置为1ms-40ms,将关闭窗口时间设置为1ms-40ms。优选将开启窗口时间设置为20ms,将关闭窗口时间设置为20ms。

其中,配置窗口狗硬线喂狗时刻条件为每段开启窗口时间起始时刻后的第1ms-20ms处,立即将此刻做为关闭串口的起始时刻并将其固定持续1ms-40ms。

优选配置窗口狗硬线喂狗时刻条件为每段开启窗口时间起始时刻后的第10ms处,立即将此刻做为关闭串口的起始时刻并将其固定持续20ms。

其中,配置窗口狗的喂狗时刻有效范围为开启窗口内,非有效范围内的事件将立即引起sbc对mcu发送硬线重置信号。

其中,配置窗口狗的有效范围超时事件将立即引起sbc对mcu发送硬线重置信号。

其中,超时事件包括但不限于mcu发出事件超时、事件未发出或事件硬线断路。

其中,配置问答狗的问数据具有16组预设种子字节,且每次在起始时刻触发问数据由mcu通过spi读取到其中一个随机种子字节。

其中,配置问答狗的每组4个答数据为预设密钥字节数组,每个答数据均分别与一个问数据相匹配,且每次在触发问数据后由mcu通过spi主动依次顺序发送该四个密钥数组字节。

其中,配置问答狗的问答数据答数据喂狗时刻有效范围为1ms-80ms,优选最大溢出值为40ms。

其中,配置问答狗的有效范围内识别答数据的先后字节顺序,但不约束spi帧间的时刻间隔。

本发明提供一种利用上述任意一项所述双核eps控制程序流监控系统,在各答数据标记断点位置,判断前一个被监控的事件识别号是否正确;如果前一个被监控的事件识别号正确,进行答数据值应答并完成spi发送,则置起后一个被监控的事件识别号的值;如果前一个被监控的事件识别号不正确,则不执行事件识别号更新,也不执行答数据发送。

本发明提供一种利用上述任意一项所述双核eps控制程序流监控方法,该方法又可命名为“高频task的时序锁步识别方法”,在各答数据标记断点位置,判断前一个被监控的事件识别号是否正确;如果前一个被监控的事件识别号正确,进行答数据值应答并完成spi发送,则置起后一个被监控的事件识别号的值;如果前一个被监控的事件识别号不正确,则不执行事件识别号更新,也不执行答数据发送。

本发明的双核eps控制程序流及其监控系统采用mcu端双核第一反馈模块core_0、第二反馈模块core_1联合sbc两个看门狗机制与安全管理模块可靠地保障了电动转向系统的安全性。程序流监控系统可确保精确到各任务(或中断)的具体函数位置,达到了针对运行程序在时序上数据流的预设顺序、逻辑、时刻等正确性的实时监控目的。本发明对于失效情形,即窗口狗或问答狗机制任一发生不能正常喂狗功能的异常时,均通知安全管理功能块,由其输出硬线重置reset信号至mcu,并通过硬线hw_shutoff切断执行器的电机助力扭矩输出,整个过程维持在不违反功能安全目标的故障容忍时间范围内。

附图说明

图1是电动助力转向硬件架构的各功能模块结构示意图。

图2是本发明窗口喂狗机制原理图。

图3是本发明问答喂狗机制原理图。

图4是本发明问答狗的控制程序流监控机制原理图。

图5是本发明双核eps控制程序流监控系统原理图。

具体实施方式

在传统的mcu外部sbc芯片的喂狗机制中,一般需要覆盖对程序的“时间”、“逻辑”两个方面同时监控的诊断,通常采用的方法有两种:

一、由问答狗通过spi帧实现一个问数据question与相应一组4个大数据answer的帧数据字节的收发,由一个反馈任务core完成对程序“逻辑”监控。

二、由窗口狗通过硬线trigger电平信号下降沿实现一次喂狗,由一个反馈任务core完成对程序的“时间”监控。

上述方案很难在多核mcu中实现对操作系统的任务触发task(或者中断)的运行先后顺序(即,程序流“时序”)的监控。本发明结合eps产品中芯片功能实现的双核控制程序流监控,由mcu端第一反馈模块core_0、第二反馈模块core_1分别连接sbc窗口狗、问答狗功能模块,创新地实现双核程序流中的时序的监控,并能在监控发觉时序异常后调用安全管理模块做保护处理。

本发明提供的双核eps控制程序流一实施例如下:

如图2所示,程序初始化时,mcu端通过spi指令实现对sbc的窗口喂狗机制进行配置:

1、配置窗口狗开启窗口openwindow时间t_open为20ms,窗口狗关闭窗口closewindow时间t_close为20ms;

2、配置窗口狗硬线喂狗触发时刻trigger为每段开启窗口时间t_open起始时刻后的第10ms处,并立即将此刻做为关闭窗口时间t_close的起始时刻并将其固定持续20ms,见图2中trigger_1处;

3、配置窗口狗的喂狗时刻有效范围为开启窗口时间t_open内,非有效范围内的触发trigger将立即引起sbc对mcu发送硬线重置信号reset,见图2中trigger_m;因此,程序运行中的实际某次喂狗时刻t_open只要处于开启窗口时间t_open范围内,即便不是标准的第10ms处,sbc也判定为可接受的正常喂狗周期,见图2中trigger_n处为偏早喂狗示例;

4、配置窗口狗的有效范围超时事件将立即引起sbc对mcu发送硬线重置信号reset,包括mcu发出trigger超时或未发出、trigger硬线断路等,见图中trigger_k处。

如图3所示,程序初始化时,mcu端通过spi指令实现对sbc的问答喂狗机制进行配置:

1、配置问答狗的问数据question为16组预设的种子字节,且每次在起始时刻spi_q处由mcu通过spi读取到随机的其中一个种子字节,即问数据question为q0~15;

2、配置问答狗的每组4个答数据answer为预设密钥字节数组,每个答数据均分别与一个问数据question匹配,且每次在起始时刻spi_q后由mcu通过spi主动依次顺序发送该四个密钥数组字节。

图3中以q0匹配的答数据answers为例,分别在spi_a0、spi_a1、spi_a2、spi_a3处由mcu发出spi帧数据字节a0[0]、a0[1]、a0[2]、a0[3];

3、配置问答狗的问答喂狗时刻有效范围t_fwd为40ms内,所有answers发送时刻均必须在t_fwd内完成才被sbc识别为一次有效喂狗,否则将立即引起sbc对mcu发送硬线重置信号reset,见图3中时刻spi_k处即便mcu正常发出带有最后答数据answer字节的spi帧,但触发了有效范围超时事件,sbc早已向mcu发送硬线重置信号reset_r2;

4、配置问答狗的有效范围内识别答数据answers的先后字节顺序,但不约束spi帧间的时刻间隔,即如果mcu端发送的四个密钥数组字节次序或字节内容与预设值不同,则将立即引起sbc对mcu发送硬线重置信号,见图3中示例trigger_m、trigger_n处误发与预设顺序颠倒的两个密钥字节,sbc立即向mcu发送硬线重置信号reset_r1。

eps初始化完成后,进入轮循阶段的双核运行的各任务task周期性调度时序,软件程序流监控第一反馈模块core_0和第二反馈模块core_1功能使能。

如图4所示,在第一反馈模块core_0中第二任务task_2优先级高于第一任务task_1,且第一任务task_1会出现运行时间较长被第二任务task_2嵌套的情形,同时由于第二任务task_2轮循周期相对第一任务task_1较长嵌套情形周期性地交替发生;在第二反馈模块core_1中第四任务task_4优先级高于第三任务task_3,且第四任务task_4运行时间较短,不会被第三任务task_3嵌套抢占,同时第四任务task_4轮循周期较短用于快速处理电机控制调节功能;除了在上述双核各任务或中断之间存在数据流的共享交互,各核的后台背景函数分别为第一后台背景函数background_0和第二后台背景函数background_1也存在与各任务或中断的数据共享交互。因此,本发明将此类时序上需要关注程序流路径的某些特定全局变量、函数、代码段等所处的任务内具体代码行的语句位置进行标记断点并分析归类后:

在第一反馈模块core_0任务中第一后台背景函数backgroud_0、第一任务task_1首端、第一任务task_1尾端、第二任务task_2指定位置设定答数据answer标记断点;在第二反馈模块core_1任务中第二后台背景函数backgroud_1、第三任务task_3、第四任务task_4指定位置设定答数据answer标记断点;

设定答数据answer标记断点处,在软件功能上均实现将检索到的某个问数据question的答数据answer值通过spi帧从mcu发送至sbc,依次喂狗发送该组成对的密钥字节数组预设值;

被监控的各任务内的标记断点位置,根据标志位依次判断当前应发出的答数据answer值为四个数组元素中的第几个。如,数据流方向为从task_x的标记断点am[0]处流向task_y的标记断点am[1]处,则am[0]处的spi帧发送前识别出应发answer数组中第一个元素值;am[1]处的spi帧发送前识别出应发answer数组中第二个元素值。

如图4,本发明监控机制:

情形一:当待监控的程序流方向为“第一后台背景函数backgroud_0->第一任务task_1首端->第三任务task_3->第二任务task_2->第一任务task_1尾端”时,程序运行至第一后台背景函数backgroud_0后mcu通过spi读取得q0则表示mcu必须按照时序第一任务task_1首端->第三任务task_3->第二任务task_2->第一任务task_1尾端的顺序运行,并在各自的任务task的标记断点处分别依次向sbc发送answer值a0[0]->a0[1]->a0[2]->a0[3],因此sbc通过其q0组问答狗机制覆盖了该程序流监控功能。

情形二:当待监控的程序流方向为“第一后台背景函数backgroud_0->第一任务task_1首端->第三任务task_3->第一任务task_1尾端->第四任务task_4”时,程序运行至第一后台背景函数backgroud_0后mcu通过spi读取得q1则表示mcu必须按照时序第一任务task_1首端->第三任务task_3->第一任务task_1尾端->第四任务task_4的顺序运行,并在各自的task的标记断点处分别依次向sbc发送answer值a1[0]->a1[1]->a1[2]->a1[3],因此sbc通过其q1组问答狗机制覆盖了该程序流监控功能。

情形三:当待监控的程序流方向为“第一后台背景函数backgroud_0->第一任务task_1首端->第二任务task_2->第四任务task_4->第二后台背景函数backgroud_1”时,程序运行至第一后台背景函数backgroud_0后mcu通过spi读取得q2则表示mcu必须按照时序第一任务task_1首端->第二任务task_2->第四任务task_4->第二后台背景函数backgroud_1的顺序运行,并在各自的任务task的标记断点处分别依次向sbc发送答数据answer值a2[0]->a2[1]->a2[2]->a2[3],因此sbc通过其q2组问答狗机制覆盖了该程序流监控功能。

本发明充分利用每组问答狗机制对双核各任务的程序流路径的监控,覆盖的情形可根据软件架构设计需要而配置,具有动态实时、顺序预设、灵活随机、排列组合多样化等优点。

对于快速轮循调用的任务task,需要注意不是在每次运行至标记断点位置时均相同处理为答数据answer值的应答,本发明提供了一种对待监控程序流进行监控的系统,该系统监控方法采用高频task的时序锁步识别方法:在各标记断点位置,先判断上一个被监控的任务task识别号pretaskid是否正确;如果通过,再进行答数据answer值的应答并完成spi帧发送;最后置起下一个被监控的任务task识别号nexttaskid号的值。

如图5所示,当待监控的程序流方向为“第一后台背景函数backgroud_0->第一任务task_1首端->第三任务task_3->第一任务task_1尾端->第四任务task_4”时,

在程序运行至第一后台背景函数backgroud_0标记断点位置识别出q1后置起pretaskid=0x00(表示上一个被监控的task是backgroud_0),同时置起nexttaskid=0x1a(表示下一个被监控的task是task_1首端)。

在程序运行至第一任务task_1首端标记断点位置先识别是否为pretaskid=0x00(表示上一个被监控的task是backgroud_0)。如果是,则先置起pretaskid=0x1a(表示上一个被监控的task是task_1首端),再发送a1[0],最后置起nexttaskid=0x30(表示下一个被监控的task是task_3);如果否,则不执行task识别号的更新,也不执行answer发送。

在程序运行至第三任务task_3标记断点位置先识别是否为pretaskid=0x1a(表示上一个被监控的task是task_1首端)。如果是,则先置起pretaskid=0x30(表示上一个被监控的task是task_3),再发送a1[1],最后置起nexttaskid=0x1b(表示下一个被监控的task是task_1尾端);如果否,则不执行task识别号的更新,也不执行answer发送。

在程序运行至第一任务task_1尾端标记断点位置先识别是否为pretaskid=0x30(表示上一个被监控的task是task_3)。如果是,则先置起pretaskid=0x1b(表示上一个被监控的task是task_1尾端),再发送a1[2],最后置起nexttaskid=0x40(表示下一个被监控的task是task_4);如果否,则不执行task识别号的更新,也不执行answer发送。

在程序运行至第四任务task_4标记断点位置先识别是否为0x1b(表示上一个被监控的task是task_1尾端)。如果是,则先置起pretaskid=0x40(表示上一个被监控的task是task_4),再发送a1[3],最后置起nexttaskid=0x00(表示下一个被监控的task是backgroud_0);如果否,则不执行task识别号的更新,也不执行answer发送。

由此可见,当软件运行至backgroud_0和task_1前端之间的task_4时,task_4判断的task识别号不是理想匹配值,则不会在a1[3]'时刻误触发answer。同理可知,如果应当在a1[3]处由task_4发出的answer未成功发出,则因a1[3]''时刻在t_fwd有效范围之后,mcu软件已收到sbc硬线重置信号reset而无法继续运行,因此也不会发生a1[3]''时刻误触发answer的可能。

对于程序流监控出的失效情形,即窗口狗或问答狗机制任一发生不能正常喂狗功能的异常时,均通知安全管理功能块,由其输出硬线重置信号reset至mcu,并通过hw_shutoff硬线切断执行器的电机助力扭矩输出,整个过程维持在不违反功能安全目标的故障容忍时间范围内。

以上通过具体实施方式和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1