ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DoIP测试实战:从接线到CANoe配置的网络参数设置全攻略

DoIP测试实战:从接线到CANoe配置的网络参数设置全攻略 做DoIP测试这几年我踩过的坑比协议栈的报文还多。尤其是从CAN总线转过来做车载以太网诊断的人最容易在接线和网络配置上栽跟头。今天这篇就把DoIP测试从接线到CANoe环境配置、再到端口、VLAN、IP和MAC设定的完整过程捋一遍所有步骤都是我实际跑过的不是抄手册。新的技术人上来就抓CANoe的DoIP配置结果半天连不上ECU最后发现是网线没接对或者IP段根本没规划。所以我先提醒一句DoIP测试的成败七成在网络配置三成在诊断逻辑别一上来就埋头写CAPL脚本。先把物理链路和网络参数理清楚后面的事情全是水到渠成。1. 测试前准备样件接线与链路检查1.1 你需要哪些硬件和线缆DoIP测试样件最常见的形态是一块域控制器DCU、车载网关GW或者带以太网接口的传感器/执行器。不管是哪种样件先确认它对外提供的是哪种以太网接口100BASE-TX常规RJ45水晶头4芯线1、2发送3、6接收实验室台架测试最常见。100BASE-T1OABR单对非屏蔽双绞线只有一对差分线插头通常是H-MTD或MQS类型和普通RJ45不通用。1000BASE-T1也是单对线速率更高当前多见于高端车型的域控制器互联。样件上的硬件接口类型直接决定了你手头要准备哪些转接线。很多ECU样件出厂时给的是一根带接头的引线引线端可能是空的或者已经压好了接头。你得根据调试环境准备供电电源12V/24V具体看样件规格一般DCU都是12V网线/以太网转接线一把能测量通断的万用表不是可选项是必备项Vector硬件接口卡VN5610、VN5640、VN5650等用来让CANoe接入以太网物理通道注意有些样件是做在PCB板上的以太网接口需要飞线。飞线的时候TX、TX-、RX、RX-一定要按样件的丝印标注来不要凭经验猜。我曾经见过一块样件丝印反了按常规接法死活连不上最后翻原理图才发现厂商把TX和RX的丝印标反了。飞线前先打一下对地阻抗别短路了再通电报废样件。1.2 接线顺序与通电检查我的标准接线顺序是这样先接电源负极GND再接电源正极。断电时反过来先断正极再断负极。这个顺序看似啰嗦但能避免热插拔瞬间打火花把控制器内部的电源保护电路烧掉。再接以太网线。如果是转接线确保10BASE-T/100BASE-TX的线序正确发送对接到接收对。接CANoe硬件卡和PC的USB/网线。上电观察样件电流是否正常。如果电流异常大立即断电检查不要盯着CANoe看半天。上电之后检查PC网卡如果用直连方式是否识别到网线链路。很多笔记本自带的网卡有节能模式插上DoIP线后接口可能在网络不可达状态。如果PC端网口指示灯不亮优先怀疑线序不是IP配置。如果要连多台仪器务必给每台设备贴上标签用不同颜色的网线区分PC、Vector硬件卡和样件之间的链路。不要图省事全用黑色网线后面排查问题的时候你会感谢自己这个决定。1.3 直连和交换机连接选哪种DoIP测试台架常见的拓扑有两种直连PC或Vector硬件卡网口直接连样件网口。优点是无需交换机链路简单适合单节点调试。交换机连接PC、Vector硬件卡、样件、甚至多个ECU都接到一台交换机上。复杂系统级测试或带路由功能的测试环境会用这种方式可以同时监控多节点流量。我个人的建议是单点调试用直连最简单做多ECU、带诊断路由的测试时交换机才值得引入。直连的时候不需要VLAN交换机组网的时候VLAN的参数才可能成为问题点。VLAN配置的细节在后面第4节展开。2. CANoe环境搭建从通道到诊断配置2.1 CANoe版本、License和通道选择做DoIP测试CANoe必须要带有以太网功能。如果你打开CANoe发现新建工程时没有Ethernet选项大概率是License不包含以太网功能。我在实际项目中遇到过好多次同事把工程文件拷走了在他电脑上打开却提示缺少功能结果折腾了一天发现是License到期了。CANoe版本上个人建议使用15.0以上版本界面和功能对DoIP的支持都比较成熟。老版本10.0/11.0跑DoIP不是不行但配置选项没新版本顺手排查问题时可视化信息也少很多。新建工程时选择“Ethernet”或“Ethernet CAN”模板如果测试对象同时有CAN和以太网比如网关带CAN子网和DoIP诊断仪要通过DoIP访问网关然后路由到CAN节点选混合总线模板。如果只测DoIP节点直接用Ethernet模板即可别把CAN通道拖进来增加复杂度。2.2 硬件网络接口的连接配置硬件卡VN5610/VN5640等连接上PC后打开Vector Hardware Config检查通道状态。CANoe对应工程的Channel Usage里要能识别到你的以太网口。实际测试中常用的连接方式是硬件卡的以太网口作为CANoe的物理通道而PC本机网口不作为CANoe的通道。把Vector硬件卡当作一个网桥/物理层接口来用这样CANoe可以在逻辑上抓取和分析以太网帧同时你要给这个通道配置IP、MAC等网络属性。如果你不希望依赖硬件卡有些CANoe版本也支持把PC本机网卡作为Ethernet通道来用。这种方法适合轻量级调试但抓包时间戳精度和数据吞吐性能上会比硬件卡差一些。做诊断功能测试问题不大做压力测试或性能测试不建议。2.3 新建工程并添加DoIP节点一个完整的DoIP测试工程至少需要两类节点测试仪Tester/Diagnostic Tester节点模拟诊断仪向外发送DoIP诊断请求。ECU节点模拟目标ECU或者通过外部样件实际运行。如果你的目标是测一个真实样件外部运行CANoe中只需要配置Tester节点的网络参数样件作为物理节点接入链路即可。如果CANoe环境里要用仿真节点模拟ECU例如做台架自动化测试被测件还不在需要给ECU节点配置以太网属性并装载诊断描述文件CDD或ODXCANoe才能按规范回复DoIP路由激活和诊断请求。我通常在Simulation Setup里添加Ethernet节点并给节点分配网络属性。别在这里省略IP配置步骤很多新手在这里漏配置了节点地址后面所有流程都会飘。2.4 装载诊断描述文件在CANoe里做DoIP诊断测试必须要有诊断描述文件。格式有两种Vector的CDDCANdela Diagnostic Description和ODXOpen Diagnostic data exchange常见是PDX包。诊断描述文件的作用是告诉CANoe目标ECU支持哪些诊断服务UDS服务、每个服务的ID、参数格式、DID数据字典、DTC定义等。没有这个文件你也能手动发原始诊断报文但效率极低而且做自动化测试时根本没法写。装载路径Diagnostics/ISO TP Configuration导入CDD或ODX文件。导入后检查诊断会话控制、安全访问、DID列表是否解析正常。这里有个小坑部分CDD文件里定义了多个ECU节点导入时要确认你选择的物理节点是DoIP节点的逻辑地址而不是CAN节点的地址。提示DoIP测试中ECU的逻辑地址Logical Address很关键。ISO 13400里面定义了测试仪的逻辑地址范围0x0E00-0x0FFF是通常外部诊断仪的地址范围ECU侧逻辑地址在整车厂诊断规范中定义。CANoe诊断控制台里的请求和响应实际上都会携带逻辑地址字段。3. 端口设置、VLAN配置、IP与MAC设定为什么是这些参数3.1 DoIP的端口机制13400不是唯一要关注的DoIP最广为人知的端口是13400这个端口同时用于UDP和TCPECU通过UDP 13400监听车辆发现广播/组播报文并回应车辆公告。测试仪通过TCP 13400建立连接发送路由激活请求之后发起UDS诊断。但要注意路由激活成功后诊断请求/响应依然是走TCP 13400而不是换端口。有的工程师误以为建立连接后会切换到随机端口这个理解是错的。如果你看到CANoe的TCP连接状态异常别怀疑端口被改优先怀疑TCP连接被断开或IP链路不稳定。具体到端口设置CANoe里需要配置的是Tester节点的TCP/UDP源端口一般用随机端口也可以固定某些防火墙环境需要固定源端口ECU节点的服务端口13400如果是仿真ECU确认ECU节点绑定的监听端口为13400协议类型TCPUDP防火墙是端口的另一个大坑。Windows防火墙默认不会放行UDP广播和13400端口的入站连接。如果你用PC直连DoIP样件经常出现CANoe这边可以看到车辆公告但ECU一直收不到测试请求的情况极大概率是防火墙拦截了端口。临时关闭防火墙或者给13400/UDP、13400/TCP加放行规则问题马上消失。3.2 VLAN配置什么时候必须搞什么时候可以忽略ISO 13400中并没有强制要求使用VLAN但在真实的整车网络里VLAN几乎无处不在。为什么要用VLAN核心原因是为了把诊断流量和其他流量隔离开避免车载交换机里广播风暴相互干扰。在CANoe里配置VLAN的路径在Ethernet通道属性Channel Configuration中找到VLAN支持启用后给通道分配一个VLAN ID。常见的配置方法是样件/仿真ECU节点位于VLAN 1有些主机厂自定义VLAN比如100、200测试仪节点也配置到同一VLAN关键点收发双方的VLAN ID必须一致。VLAN ID不匹配时交换机或对方主机会直接丢弃帧表面上你会发现“好像什么都配了但就是发不出去诊断请求”。用Wireshark抓包时可以看到802.1Q标签的VID值对比一下就能定位。某些支持DoIP的ECU要求测试仪发送的帧必须是带VLAN标签的否则网络交换机不转发。但直连场景下VLAN又往往不是必须的因为点对点链路压根不需要交换机来转发。所以我的判断标准是直连时先不要VLAN排查更简单交换机组网时按整车规范配置VLAN不要在VLAN ID上与规范作对。CANoe里给报文配置VLAN标签是在仿真节点的以太网属性里设置。一般步骤打开节点属性进入Ethernet参数启用VLAN配置填VLAN ID确认优先级Priority诊断流量一般用最高优先级或按整车厂要求有的工程师问VLAN Priority是不是会影响诊断响应时间。理论上影响很小因为诊断流量本身很低频关键还是VLAN ID对不对。把优先级字段留到整车集成阶段再去抠就行实验室里别纠结这个。3.3 IP和MAC地址没有策略就是给自己埋雷IP地址和MAC地址的设置是DoIP配置中最容易出错、也最容易被轻视的部分。先讲IP地址。DoIP报文承载在IP之上所以通信双方必须能ping通。常见错误是IP网段不统一ECU在192.168.0.xCANoe测试仪却在192.168.100.x子网掩码又不匹配导致无法路由。建议实验室环境固定一个测试专用网段比如192.168.0.0/24测试仪IP设为192.168.0.10ECU IP设为192.168.0.1这里以静态IP为例。CANoe中Tester节点的IP地址在哪里设置还是在节点属性的Ethernet配置里和MAC地址同一页。重点是如果你让CANoe自动从操作系统获取IPDHCP而ECU又没开DHCP服务链路一定起不来。建议手动设置静态IP清楚明了。有一个常见现象CANoe面板上诊断仪显示“在线”但实际TCP连接建立失败十有八九是IP配置冲突或者子网掩码不对。分配IP地址的建议建立一个IP地址规划表表格里记录每个设备使用什么IP、什么MAC不要多个设备复用同一个IP包括样例、PC本地网卡、CANoe节点、Vector硬件卡都可能产生冲突子网掩码统一用255.255.255.0简单且够用有条件的话单独抽一台无线路由器或交换机给DoIP测试组网避免和其他办公网络冲突再说MAC地址。DoIP测试中MAC地址有两个层面的作用物理网络层通信双方必须能通过ARP正常解析IP到MAC如果MAC地址重复ARP缓存会抖动造成TCP连接时断时续。DoIP协议应用层节点激活/连接时ECU会记录测试仪的MAC地址部分ECU的逻辑验证机制会校验MAC地址。我遇到过MAC冲突的经典场景多台测试仪同时连同一个交换机每台PC都用了同样的默认MAC比如某些虚拟机克隆出来的MAC结果ARP表混乱车辆公告时有时无。所以建议给每台测试仪分一个独立的MAC地址甚至物理PC的本地网卡MAC也检查一下。MAC地址设置可以在CANoe节点属性里做也可以借助Vector硬件卡自带的MAC地址管理。标准做法是使用网卡自带的MAC写在标签上的那个不要随便给测试仪伪造MAC。如果因为克隆虚拟机导致MAC一样手动更换即可。3.4 把网络配置串起来一个典型的完整配置实例假设我现在要测一块带100BASE-TX接口的DCU样件环境是CANoe VN5610、PC、12V直流电源直连方式。物理连接电源线接好GND接准VN5610的Ethernet口用网线连接到DCU的RJ45口VN5610通过USB/雷电接口接入PCCANoe工程配置新建Ethernet模板工程Channel Usage里启用VN5610的通道Simulation Setup添加Tester节点Ethernet属性配置如下MAC地址设为一串和PC本地网卡不重复的地址例如随意但保证在同一局域网内唯一的地址IP地址192.168.0.10子网掩码255.255.255.0网关留空或192.168.0.1取决于ECU是否需要跨网段VLAN禁用直连场景诊断控制台加载CDD文件确认选择DoIP传输协议目标ECU逻辑地址按规范填写确认Tester端口用随机高位端口样件侧可以不配置真实样件自带配置也可以用CANoe里的ECU节点模拟配置。启动测量后CANoe会自动发起DoIP车辆发现收到ECU的车辆公告然后TCP连接13400端口发起路由激活之后就可以在诊断控制台发UDS请求了。整个配置的核心逻辑就是物理链路通线序和电源→ 网络层通IP/MAC正确→ 传输层通TCP 13400→ 应用层通DoIP路由激活SID服务。每一步都要可验证不要跳步。4. 实测运行与常见问题排查实录4.1 完整测试流程从车辆发现到真正读到DTC如果你已经完成了上面所有配置实际测试流程应该是这样的第一步启动CANoe测量。观察Trace窗口中的以太网报文。理想情况下CANoe的Tester节点会发出UDP车辆发现报文VIN/逻辑地址信息为空或者按CDD中配置的值然后ECU返回车辆公告Vehicle Announcement/Vehicle Identification Response。第二步CANoe自动向ECU发起TCP连接。TCP连接的建立过程可以在Trace里看到SYN、SYNACK、ACK三次握手。握手没出现说明IP层或端口有问题。第三步测试仪发送路由激活请求Routing Activation RequestECU返回路由激活响应。响应中会带激活状态码100成功或者其他错误码。这里如果失败后面什么都没得谈。第四步诊断请求。在诊断控制台里选一个UDS服务比如0x22读取DID或0x19读取DTC信息。观察响应是否正确。一个让我印象极深的测试现场是某台设备初次上电一直收到路由激活失败激活码持续回报invalid source address。当时我检查了逻辑地址配置确实是按照规范填的但ECU那边要求的是另一个地址范围。后来仔细翻整车厂的诊断规范才发现他们内部环境用的是私有逻辑地址范围和标准ISO不完全一致。所以做DoIP测试逻辑地址一定要以被测ECU的供应商规范为准ISO 13400只是基础框架。4.2 常见问题与排查思路把这些年遇到的问题整理成一张速查表方便你在现场快速定位现象可能原因排查方法Trace里收不到车辆公告物理链路断开/线序错误UDP广播被防火墙拦截VLAN不匹配先看网口指示灯再用Wireshark抓包判断是否收到ECU侧报文临时关闭防火墙TCP连接建立失败端口不通IP不在同一网段ECU侧DoIP服务未启动ping ECU的IP确认网络层通用netstat/抓包看SYN包有没有发出路由激活失败逻辑地址错误测试仪类型不支持激活类型参数不符核对逻辑地址范围检查ECU车辆公告中声明的测试仪逻辑地址允许列表诊断请求超时SID/子功能不受支持安全访问未解锁DoIP TCP连接被关闭查看ECU发送的NRC如0x31、0x33确认TCP连接仍处于established状态报文收发正常但软件提示诊断仪离线CANoe节点IP配置与硬件接口地址不一致打开网络接口状态看CANoe对应的网络接口是否绑定了错误IP多设备串联后网络不稳定MAC地址冲突交换机端口配置问题检查所有设备的MAC是否重复更换交换机端口测试安全访问失败这块要特别提一句。0x27服务安全访问在很多ECU上有次数限制连续失败多次会锁定只能断电重启ECU等待解锁。实验室测试时建议确认测试用的ECU有没有解锁状态位避免把自己锁在外面。4.3 无头绪时的万能排查顺序如果在现场排查了半天没有思路我通常按下面的顺序来做断开所有不必要的设备只留“PC CANoe硬件 样件”的最小链路。在CANoe或Wireshark中抓包确认物理帧是否到达哪怕有CRC错误Wireshark也能看到“Bad CRC”。ping测试仪和样件先确认网络层。ping不通就查IP、MAC、VLAN不要碰诊断层。ping通之后再抓TCP三次握手。SYN有发无回就是端口或防火墙TCP能建立再查DoIP应用层。最后看路由激活和诊断服务。这个顺序帮我省了无数时间强烈建议你也按这个流程执行。很多人喜欢一上来就反复发送诊断请求实际上是在一个断掉的链路上做无用功。4.4 实测中的一些经验技巧下面几个细节是我在实际现场靠踩坑换来的CANoe的Trace过滤功能一定要会用。DoIP测试时底层ARP、UDP、TCP报文混杂在一起诊断请求响应被淹没。你可以在Trace里过滤出13400端口或者按源/目的IP过滤保留窗口干干净净。不会过滤测试效率会低下一大截。有的主机厂样件如果检测到长间隔没有诊断活动会自动关闭TCP连接。诊断控制台一直挂着不动下次发送请求时就会失败。这种情况要先重新建立连接再发请求。自动化测试脚本里最好加上连接状态检测断开就重连。抓包工具要用就用Wireshark Vector的硬件配合。Wireshark可以直接抓VN5610的流量不需要额外接线。相比直接从交换机SPAN口抓包这种方式和CANoe采样的是同一份数据定位问题的时候不会因为数据源不同而扯皮。5. 项目扩展从单节点测试到整车网络集成5.1 后续还能怎么做DoIP测试做通了单点链路后很容易扩展出更多场景。比如把VN5610的以太网通道和CAN通道同时打开就可以在CANoe里做“DoIP - 网关 - CAN节点”的全链路诊断测试。这时候你的角色是网关和多个ECU联合验证诊断请求经过DoIP进入网关网关再把请求路由到CAN总线上的ECU响应再原路返回。这类扩展测试需要额外关注几个点网关的路由表配置是否正确CAN节点的诊断地址是否和网关路由表匹配诊断响应时延是否满足要求网关转发需要时间有些主机厂要求DoIP端到端响应不得超时我个人的项目经验是在DoIP链路和CAN转发路由同时存在时用CANoe的“诊断控制台”查看系统级诊断非常方便。它在同一个窗口里可以看到Tester发出的DoIP请求和最终从CAN节点返回UDS响应调试效率高。5.2 和团队协作时的注意事项这里也顺便说一点团队协作的细节网络配置这种东西最怕各配各的。我建议在项目一开始就建立一份共享的车载以太网配置清单写明以下内容测试仪IP/MAC/逻辑地址被测件IP/MAC/逻辑地址VLAN ID和优先级设置端口规则UDP/TCP 13400子网掩码和网关这份清单要放进项目团队的共享文档而不是某个人的笔记本电脑里。否则同事出差接棒测试时所有配置都要重新摸一遍浪费时间还容易出错。5.3 对初学者的一点建议如果你现在刚开始接触DoIP又熟悉传统CAN诊断不要慌。把DoIP想象成把CAN诊断报文放到一个“以太网信封”里多出来的只是IP、端口、TCP连接和路由激活这些前置步骤。关键的区别在于CAN是广播式总线数据一挂上去大家都看得到以太网是点对点交换网络必须先把“通信对象”定好报文才能准确到达。这就是为什么IP、MAC、VLAN、端口这些网络参数在DoIP测试里如此重要。我第一次完整跑通DoIP的时候以为最难的地方是诊断协议本身后来才发现把CANoe里的网络参数填对让物理链路通才是最考验耐心和细致度的部分。希望这篇实操总结能帮你少走这些弯路把精力真正花在诊断功能本身。
返回列表