一种车载诊断异步响应控制方法及系统与流程

摘要: 本发明涉及整车电子控制,具体涉及一种车载诊断异步响应控制方法及系统。背景技术:1、随着智能汽车电子电气架构不断复杂化,整车电子控制单元(ecu)数量显著增加,车...
一种车载诊断异步响应控制方法及系统与流程

本发明涉及整车电子控制,具体涉及一种车载诊断异步响应控制方法及系统。

背景技术:

1、随着智能汽车电子电气架构不断复杂化,整车电子控制单元(ecu)数量显著增加,车载诊断系统逐渐呈现:多ecu并发通信、长时间刷写操作、多线程诊断访问、多帧异步响应、高实时性调度、网络负载动态变化等特征。

2、目前主流uds客户端通常采用:“请求发送后阻塞等待响应”的同步通信方式。该方案虽然实现简单,但在复杂车载场景中存在以下明显缺陷:

3、(1)异步响应错配问题:由于多个当前诊断请求服务可能同时存在,ecu响应具有异步性与乱序性,传统同步等待方式容易出现响应与请求错配、多线程竞争、会话覆盖、数据串扰等问题;

4、(2)事务序列号资源不可控:现有技术通常仅采用简单递增事务序列号作为请求标识,缺少动态分配、冲突检测、生命周期管理、超时回收机制,在长时间运行后容易出现事务序列号复用冲突、失效事务残留、响应误关联的问题;

5、(3)nrc 0x78处理能力不足:在uds协议中,nrc 0x78表示“请求已接收,但ecu尚未准备好最终响应”,现有技术通常采用固定阻塞等待和简单超时退出方式处理,但这容易导致误判超时、诊断失败、刷写中断、ecu状态异常等问题;

6、(3)传统轮询式等待模型会导致cpu空转、调度阻塞、线程占用过高的问题,无法满足高并发车载诊断需求。

技术实现思路

1、针对现有技术中存在的问题,本发明提供一种车载诊断异步响应控制方法及系统,通过ecu寻址信息、动态事务序列号、同步信号量和响应互斥信号量结合,实现异步响应精确匹配,且通过位图资源池的动态分配和超时回收机制,实现事务序列号生命周期管理,且通过挂起等待、自动重发、重试控制、状态保持机制,提高nrc 0x78处理能力。

2、本技术的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本技术的实践而习得。

3、根据本技术的第一方面,提供了一种车载诊断异步响应控制方法,包括:

4、当接收到当前诊断请求服务时,为所述当前诊断请求服务对应的诊断事务创建独立事务控制对象;

5、基于预先建立的位图循环管理结构,获取所述独立事务控制对象对应的事务序列号;

6、基于事务序列号,对所述独立事务控制对象生成诊断响应报文;

7、根据诊断响应报文依次进行执行事务匹配关联、共享响应缓存区写入和诊断响应处理,若在诊断响应处理之前,接收到挂起响应,则根据所述诊断响应报文的类型,获取等待时间,当到达等待时间时,重试诊断响应处理。

8、在本技术的一些实施例中,基于前述方案,所述独立事务控制对象包括ecu寻址信息、当前诊断请求服务号、超时控制参数、重试计数器、事务当前状态、数据内容、当前响应长度和时间戳信息。

9、在本技术的一些实施例中,基于前述方案,所述位图循环管理结构包括当前循环分配位置、事务序列号及对应的序列号资源状态。

10、在本技术的一些实施例中,基于前述方案,所述基于预先建立的位图循环管理结构,获取所述独立事务控制对象对应的事务序列号,包括:

11、进入位图循环管理结构,读取当前循环分配位置;

12、检测当前循环分配位置对应的事务序列号是否为空闲;

13、若事务序列号为空闲,则对独立事务控制对象分配当前循环分配位置对应的事务序列号,更新当前循环分配位置;

14、若事务序列号为已占用,则移动当前循环分配位置,继续循环扫描;

15、若扫描位图循环管理结构仍无空闲,返回资源耗尽错误的信息;

16、当独立事务控制对象发生收到最终响应、事务超时、ecu异常断开、nrc重试失败的情况时,自动执行释放独立事务控制对象对应的事务序列号。

17、在本技术的一些实施例中,基于前述方案,还包括:

18、建立ecu寻址信息和事务序列号双关键字事务索引表,若检测到同一ecu寻址信息存在相同事务序列号,则执行覆盖旧独立事务控制对象、拒绝新独立事务控制对象和延迟排队中的一种。

19、在本技术的一些实施例中,基于前述方案,所述基于事务序列号,对所述独立事务控制对象生成诊断响应报文,包括:

20、基于ecu寻址信息、当前诊断请求服务号、当前诊断请求服务号对应的业务参数数据和事务序列号,生成诊断响应报文,所述诊断响应报文为当前诊断请求服务帧;

21、将所述诊断响应报文通过统一通信抽象层发送至底层通信网络。

22、在本技术的一些实施例中,基于前述方案,所述根据诊断响应报文依次进行执行事务匹配关联、共享响应缓存区写入和诊断响应处理,包括:

23、持续监听底层通信网络,当接收诊断响应报文后,通过ecu解析ecu寻址信息、当前诊断请求服务号、事务序列号和当前响应长度,获取ecu响应状态码和ecu响应地址,其中,所述ecu响应状态码是ecu返回的诊断响应处理结果,用于表示当前诊断响应属于成功响应、挂起响应、错误响应或最终完成响应状态,所述ecu响应地址为ecu返回的地址标识;

24、当接收到成功响应的ecu响应状态码,进入执行事务匹配关联流程,获取同步信号量和响应互斥信号量;

25、若基于同步信号量进行响应关联成功,执行响应关联,则基于响应互斥信号量建立独立事务控制对象在共享响应缓存区的独占访问权限;

26、将ecu响应地址、ecu响应状态码、当前响应长度和数据内容写入共享响应缓存区;

27、释放同步信号量,通知诊断线程读取共享响应缓存区;

28、当诊断线程接收到同步信号量后,读取共享响应缓存区,根据数据内容对应的服务类型执行不同处理策略。

29、在本技术的一些实施例中,基于前述方案,所述等待时间的计算公式为:

30、

31、其中,为基础等待时间;为历史平均响应时间;为连续挂起次数;为总线负载;、、为动态调节系数。

32、在本技术的一些实施例中,基于前述方案,还包括:

33、通过重试计数器记录挂起响应后的重试次数,若重试次数超过预设阈值,则返回诊断超时错误和ecu无响应错误,并释放事务序列号。

34、根据本技术的第二方面,提供了一种车载诊断异步响应控制系统,包括:

35、创建模块,用于当接收到当前诊断请求服务时,为所述当前诊断请求服务对应的诊断事务创建独立事务控制对象;

36、获取模块,用于基于预先建立的位图循环管理结构,获取所述独立事务控制对象对应的事务序列号;

37、生成模块,用于基于事务序列号,对所述独立事务控制对象生成诊断响应报文;

38、执行模块,用于根据诊断响应报文依次进行执行事务匹配关联、共享响应缓存区写入和诊断响应处理,若在诊断响应处理之前,接收到挂起响应,则根据所述诊断响应报文的类型,获取等待时间,当到达等待时间时,重试诊断响应处理。

39、本技术的有益效果如下:

40、(1)本技术提供的一种车载诊断异步响应控制方法及系统,实现异步响应精确匹配,通过ecu寻址信息、动态分配的事务序列号、信号量状态形成三重事务关联机制。进而有效避免响应错配、会话串扰、数据覆盖等问题。

41、(2)本技术提供的一种车载诊断异步响应控制方法及系统,实现序列号生命周期管理,通过位图循环管理结构、动态分配、超时回收机制。避免传统递增序列号导致资源泄漏、事务残留、长时间运行冲突的问题。

42、(3)本技术提供的一种车载诊断异步响应控制方法及系统,提高nrc 0x78处理能力,通过挂起等待、自动重发、重试控制、状态保持机制。有效适配ecu刷写、安全认证、flash擦写等长耗时场景。

43、(4)本技术提供的一种车载诊断异步响应控制方法及系统,提高系统实时性,通过双信号量异步解耦机制降低cpu空转率,提升多线程并发能力。

44、(5)本技术提供的一种车载诊断异步响应控制方法及系统,增强系统扩展能力,通过统一通信抽象层,实现诊断协议与底层通信介质解耦,便于扩展至canfd、doip、车载中央网关等场景。

45、应当理解的是,以上的一般描述和后文的细节描述仅是实例性和解释性的,并不能限制本技术。