1、DoIP使用场景
ISO13400-1:2012中,定义了这样几个DoIP的使用场景
2、诊断仪和车辆的DoIP诊断流程
1)FOTA节点首先发送车辆识别请求,待刷写ECU 进行响应;
2)FOTA节点收到车辆识别响应后与待刷写ECU 建立TCP 链接;
3)TCP 链接建立后,FOTA 节点发送通信激活
请求,待刷写ECU 进行通信激活请求响应;
4)FOTA 节点收到通信激活响应后,开始进行诊断报文交互
3、车辆网络
整车的网络拓扑被分为了两个部分,即内部网络和外部网络
下图简要描述了带以太网节点的车载网络和外部网络里的测试设备之间链接。在车载网络中有且仅有1个边缘节点,用于连接外部测试设备。边缘节点可以再连接支持DoIP的网关和其他网络节点,边缘节点本身也具有网关功能,能够通过车内的网络连接到其他的ECU群体。
图中network node可以默认为支持以太网连接的某个节点,如,雷达,摄像头等,但不支持DoIP协议。
名称中含有DoIP前缀的节点可以进行网络分析。
3.1 .External test equipment
外部测试设备,通常为OBD诊断仪或者其他诊断客户端
3.2 DoIP edge node gateway
和DoIP gateway没什么区别。一的区别就是多了个使能线的判断。
1)它是个gateway,作为一个网关它的子网内挂载着若干ECU,与DoIP gateway一样。
2)它是车内网与车外网交互的一个入口,具有控制着DoIP协议栈是否工作的一个开关功能。
3)同时支持Server端和Client端,Server端即测试设备可以诊断该网关下的某个ECU节点;Client端和内部其它子网的DoIP ECU进行交互,另外一个场景是OTA升级,DoIP edge node gateway的应用层可以跑一个OTA客户端程序,进行对内网ECU的诊断及刷写,此时就是一个Client身份。
3.3 DoIP gateway
与 DoIP edge node gateway类似
3.4 DoIP node
支持以太网连接同时又支持DoIP协议的ECU认为是DoIP node。
4、DoIP诊断连接与使用
4.1连接建立
DoIP实体内管理着一个DoIP connection table ,用来记录和维护诊断通信的逻辑连接。上图就是这个表中的一个元素,即一个逻辑连接的状态机。上图中的方框就是连接所处的状态,[Step]是状态之间跳转时发生的事情。
[Step1] 当一个新的套接字建立,逻辑连接的状态就从“listen”跳转到“socket initialized”,同时启动一个定时器, initial inactivity timer。
[Step2] 当DoIP实体接收到tester发来的一个routing activation信息后,逻辑连接的状态就从“socket initialized”跳转到“Registered [Pending for Authentication]” ,此时 initial inactivity timer被停止,启动一个名为general inactivity timer的定时器。
[Step3] 在完成Authentication之后,逻辑连接的状态就从“Registered [Pending for Authentication]”跳转到“Registered [Pending for Confrmation]” 。
[Step4] 在完成Confrmation之后,逻辑连接的状态就从“Registered [Pending for Confrmation]”跳转到“Registered [Routing Active] ” 。
[Step5] 如果initial timer 或general inactivity timer 过期后仍没收到后续请求,或者authentication 和 confrmation 被拒绝了,又或者外部测试设备对alive check 消息没有响应,则逻辑连接进入“Finalize”状态。
[Step6]进入Finalize后,此时TCP套接字将被关闭,并重新回到“listen”状态。
4.2 车辆发现(即ECU与诊断设备连接)
1)DHCP获取IP地址,当ECU/DoIP实体拥有ip地址后,它会广播发送一个车辆声明消息(vehicle announcement message),附带有VIN,EID,GID和逻辑地址信息,这条广播消息会基于UDP重复发送三次。
2)如果测试设备没有收到车辆主动上报的信息,则会发送一个identification request,如果网络中有车辆的话,车辆对这个请求进行响应,测试设备便发现了被测车辆。
4.3 DoIP会话建立
1)在完成车辆发现之后,外部诊断设备可以将车辆ID添加到“列表”中。当外部诊断设备告知工程师已经有车辆“上线”时,就可以准备进行DoIP会话了。
2)在进行任何诊断之前,还需要双方建立TCP连接。成功建立TCP连接后,ECU等待外部诊断设备发送路由激活请求,然后才会开始具体的诊断会话。
1)在TCP连接建立之后,DoIP会开启DoIPInitialInactivityTime和DoIPGeneralInactivityTime。 DoIPInitialInactivityTime的作用是避免TCP socket一直没收收到任何路由激活请求或者收到了不合法的DoIP消息,timer超时之后会关闭TCP连接,恢复到监听状态。而DoIPGeneralInactivityTime则是为了避免网络通信出现故障,或者长时间没有进行任何诊断消息的收发而占用TCP连接的情况。
2)当接收到从外部诊断设备发送过来的路由激活请求后,DoIPInitialInactivityTime随即停止,socket状态变为“registered [Routing Active]”,ECU会回复正响应,然后可以开始接收并处理DoIP消息了。
3)当接收到消息时,DoIP首先会调用DoIP header handler,如果包含类型为0x8001的诊断消息,那么接下来会由message handler做进一步处理。
4)此时DoIP会首先回复一条确认消息,告诉外部诊断设备已经接收到了诊断请求,之后DoIP节点可能会开始交由DCM处理诊断请求,或者作为gateway继续将消息转发给其他非DoIP节点。在目标ECU处理完UDS诊断消息时,目标ECU会回复诊断响应消息。
5)如果连接不再需要,那么应当关闭TCP连接,或者在一段时间超时之后ECU会自己断开连接。文章来源:https://www.toymoban.com/news/detail-660980.html
上篇:车载以太网之DoIP协议_第一篇
其它文章:车载以太网之SomeIP协议
车载以太网之SomeIP-SD协议
参考:[Classic AUTOSAR学习] DoIP—基于以太网的诊断
关于DoIP 协议的理解文章来源地址https://www.toymoban.com/news/detail-660980.html
到了这里,关于车载以太网之DoIP协议_第二篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!