当前位置: 首页 > news >正文

解决 CANoe 多测试用例下固定 IP 地址冲突问题的分析与方案

问题描述:

CANoe的测试环境如下:

在Ethernet1总线上,通过VN5620连接了PCU(实物);
使用VtestStudio(VTS)开发,并且生成了三个测试脚本(vtt文件),分别为:

04_offcheck.vtt / 11_server.vtt  / 12_serevent.vtt 

利用脚本,模拟PIU给PCU发送或者接受信号,来测试PCU的信号通讯;

加载到canoe环境中后,VTS会将三个脚本自动关联到TCP/IP的stack中:

在CANoe的TCPIP的协议栈中,04_offcheck /11_server /12_serevent 都需要设置不同的ip地址,但是我模拟PIU和PCU交互仿真的测试工程中,三个协议栈,都要填写相同的PIU的ip地址:192.168.178.57,那就会出现ip重复的问题,怎么解决呢?


问题深刻理解:
在我的测试场景中,我需要在 CANoe 中运行三个测试用例(04_offcheck、11_server 和 12_serevent),分别对应不同的 vtt 文件(测试表文件),并且每个测试用例都需要测试 PIU和 PCU以太网层级的信号通信。问题在于,PIU的 IP 地址在所有测试用例中都设置为 192.168.178.57,而我选择了 Individual TCP/IP stack(独立的 TCP/IP 协议栈),也就是ECU1对应的04_offcheck /11_server /12_serevent 三个节点,都共用了192.168.178.57,这可能导致 IP 地址冲突的问题。


以下是问题的分析和解决方案。

问题分析

  1. IP 地址冲突的原因:Individual TCP/IP stack:在 CANoe 中选择 Individual TCP/IP stack 意味着每个 CANoe 实例(或每个测试用例)使用独立的 TCP/IP 协议栈。每个协议栈会绑定到指定的 IP 地址(例如 PIU 的 192.168.178.57)。

  2. IP 重复问题:如果多个测试用例(04_offcheck、11_server 和 12_serevent)同时运行,并且都将 PIU的 IP 地址设置为 192.168.178.57,CANoe 会尝试在同一网络接口上绑定相同的 IP 地址。由于 IP 地址在同一网络中必须唯一,这会导致 IP 地址冲突,CANoe 可能会报错或无法正常通信。

测试用例的网络配置:

  1. PIU的 IP 地址:192.168.178.57,在所有测试用例中都相同。

  2. PCU 的 IP 地址:每个测试用例需要设置不同的 IP 地址(例如 PCU CP 2、PCU CP 1 等),但 PIU的 IP 地址是固定的。

  3. 网络接口:所有测试用例可能使用相同的物理网络接口(例如 Ethernet 1),这加剧了 IP 地址冲突的可能性。

协议栈选择的影响:

  1. Individual TCP/IP stack:每个测试用例的协议栈是独立的,CANoe 会为每个测试用例分配一个独立的网络栈。如果多个测试用例同时运行并绑定到相同的 IP 地址(192.168.178.57),会发生冲突。

  2. Use shared CANoe TCP/IP stack:所有测试用例共享一个 TCP/IP 协议栈,PIU的 IP 地址只绑定一次,理论上可以避免冲突,但共享协议栈可能导致测试用例之间的网络行为相互干扰。

  3. No TCP/IP stack, use OS:使用操作系统的网络栈,IP 地址冲突问题由操作系统处理,但 CANoe 无法控制网络行为,不适合我的测试需求。


解决方案

为了解决 IP 地址冲突问题,同时满足我的测试需求(模拟 PIU和 PCU 的信号通信,PIU的 IP 地址固定为 192.168.178.57),可以从以下几个方面入手:

使用共享 TCP/IP 协议栈

  • 方法

    • 在 CANoe 的 TCP/IP Stack Selection 中,将所有测试用例(04_offcheck、11_server 和 12_serevent)的协议栈设置为 Use shared CANoe TCP/IP stack。

    • 这样,CANoe 会为所有测试用例共享一个 TCP/IP 协议栈,PIU的 IP 地址 192.168.178.57 只绑定一次,避免了 IP 地址冲突。

  • 优点

    • 避免了 IP 地址冲突,因为 PIU 的 IP 地址只绑定一次。

    • 共享协议栈减少了资源占用,适合同时运行多个测试用例。

  • 缺点

    • 共享协议栈可能导致测试用例之间的网络行为相互干扰(例如一个测试用例的网络延迟可能影响其他用例)。

    • 网络仿真的灵活性低于独立协议栈。

经验教训:

  • 在 CANoe 多测试用例测试中,应根据测试需求选择合适的 TCP/IP 协议栈设置。

  • 如果需要固定 IP 地址,优先考虑共享协议栈或分时运行,避免冲突。

  • 提前规划网络接口和 IP 地址分配,可以有效减少类似问题。

相关文章:

  • 【无标题】Scala函数基础
  • Docker学习--本地镜像管理相关命令--docker images 命令
  • 新能源汽车空调系统(R134A)性能评估(一)
  • 控制大型语言模型(LLM)行为的八种技术
  • 学习笔记--(6)
  • 数据结构(4)——带哨兵位循环双向链表
  • k8s 1.30 部署crondns
  • 进程地址空间:操作系统中的虚拟世界与心灵映射,深入解析进程地址空间
  • 【Axure元件分享】年份范围选择器
  • 批量删除 txt/html/json/xml/csv 等文本文件空白行
  • Spring MVC 页面跳转方案与区别
  • 第十四届蓝桥杯大赛软件赛省赛Python 大学 C 组:6.棋盘
  • 基于 Fluent-Bit 和 Fluentd 的分布式日志采集与处理方案
  • 【零基础入门unity游戏开发——2D篇】SpriteMask精灵遮罩组件
  • 【蓝桥杯】单片机设计与开发,温度传感器DS18B20
  • TPS入门DAY01 服务器篇
  • US112S-ASEMI智能家居专用US112S
  • 深入理解 IntersectionObserver:让前端滚动监听更高效
  • [AI] 如何将 ComfyUI 的作图能力融合到 OpenWebUI
  • Scala:大数据时代的多面手
  • 重庆荣昌出圈背后:把网络流量变成经济发展的增量
  • 江苏省人社厅党组书记、厅长王斌接受审查调查
  • 人民时评:透过上海车展读懂三组密码
  • 经彩申城!上海网络大V沙龙活动走进闵行
  • 谜语的强制力:弗洛伊德与俄狄浦斯
  • 上海优化营商环境十大攻坚突破任务中,为何第一项是实施世行对标改革?