如何实现CAN-SOME/IP通信路由测试
技术干货 2023.09.22

区别于基于UDP的车内通信路由,基于SOME/IP协议的路由增加了服务发现(Service Discovery)和服务发布(Service Publish),那对于测试工程师来说,怎么实现CAN-SOME/IP路由的测试呢?


01认识路由实现方式


首先要了解基于SOME/IP协议的路由设计原则,如果功能实现在Ethernet节点,则Ethernet节点为server,网关为client,如果功能实现在CAN节点,则网关为server,Ethernet节点为client,由网关实现Ethernet节点与CAN节点之间的路由。包括两种路由方式:报文路由和信号路由。

 

如何实现CAN-SOME/IP通信路由测试(图1)


那么,CAN报文和SOME/IP报文怎么实现对应呢,举个例子:

在以下示例中,通过SOME/IP header中的ServiceID和MethodID可以关联到指定的CAN报文。

如何实现CAN-SOME/IP通信路由测试(图2)

其中:

A代表ServiceID

B代表BusID

C代表CAN MessageID

E用来区分Method,或Event/Notifier 消息

 

报文路由:CAN报文的payload映射为服务接口的payload。网关实现CAN和SOME/IP协议之间的报文路由,不改变数据内容和数据长度。

如何实现CAN-SOME/IP通信路由测试(图3)

 

信号路由:服务接口中的参数映射为CAN报文中的信号。网关实现不同数据类型之间的转换。

 

如何实现CAN-SOME/IP通信路由测试(图4)


02了解测试内容


报文路由不涉及信号内容解析,测试输入时可以不加载数据库文件也能完成测试,但是信号路由涉及SOME/IP接口参数的序列化和反序列化,需要加载数据库进行测试。


常见测试点

通信路由主要测试点包括:检查目标网段、报文类型、MessageID、payload length、payload是否正确,路由延迟时间等是否满足要求。

逆向测试的测试点主要有:payload length大于或小于预期,无效ID等

稳定性相关的测试点主要有:高负载,反复上下电,反复休眠等

 

以CAN-->SOME/IP 报文路由为例,已知某路由信息,测试Payload一致性。


路由信息

源网段(CAN)

目标网段(SOME/IP)

MessageID:0x100

DLC:8

ServiceID:0x0001

MessageType:Notification

EventgroupID:0x0001

NotificationID:0x8100


测试步骤


Step1:检查网关是否Offer ServiceID 0x0001

Step2:Tester模拟客户端,订阅ServiceID为0x0001,EventgroupID为0x0001的事件组,检查网关是否回复对应的SubscribeACK

Step3:在源网段模拟发送CAN报文,ID为0x100,data为01 02 03 04 05 06 07 08,检查是否接收到对应的SOME/IP报文

Step4:检查接收的payload与发送的payload是否一致


03自动化测试解决方案


测试环境

搭建的测试环境要能与DUT建立通信,能控制DUT上下电和唤醒。可以参考以下的测试拓扑来监控DUT的通信,同时仿真Tester节点,模拟CAN和Ethernet节点与DUT进行通信。该套测试系统由CANoe测试软件、VT板卡、VN 5650,VN 16XX,程控电源和DUT组成。

 

如何实现CAN-SOME/IP通信路由测试(图5)


测试脚本

在上述测试步骤中,Tester需要模拟CAN节点和SOME/IP服务客户端,测试脚本的开发可基于CAPL语言和Vector提供的SomeIP_IL.dll文件,分为以下几个步骤来实现 。


❶ 在TCP/IP Stack中,给Tester设置IP/MAC地址

❷ 模拟发送CAN报文

❸调用SomeIpOpenLocalApplicationEndpoint函数,创建一个Endpoint

❹ 调用SomeIpCreateConsumedServiceInstance函数,指定ServiceID和InstanceID

❺ 调用SomeIpAddConsumedEventGroup函数,指定EventgroupID

❻ 调用SomeIpCreateFieldConsumer函数,指定NotificationID,以及当接收到此Notification报文时的回调

❼ 创建回调函数,当接收到Notification报文时,比对payload是否一致


回调函数触发后,数据解析方法示例:

如何实现CAN-SOME/IP通信路由测试(图6)


 

测试结果

CANoe监控报文以及数据处理结果展示:

如何实现CAN-SOME/IP通信路由测试(图7)

 

通过调用SomeIP_IL.dll文件,可以实现Tester与网关之间的服务发现过程,以及服务接口的接收和调用,进一步达到测试的目的。


SOME/IP-->CAN路由的测试原理与上面相似,调用dll文件中的函数,实现模拟服务端的行为,信号路由的测试通过导入SOME/IP和CAN数据库文件,可以实现自动化测试。

 

以上就是我们给大家分享的CAN-SOME/IP路由测试的相关内容了,任何疑问或是自动化测试需求,都可以随时联系我们噢,感谢大家的阅读~