ARTICLE DETAIL

资讯详情

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

ADAS HIL测试三件套集成实战:VTD、VeriStand与ECU TEST全链路配置攻略

ADAS HIL测试三件套集成实战:VTD、VeriStand与ECU TEST全链路配置攻略 做ADAS HIL测试这些年我几乎每次帮团队搭环境都被同一个问题卡住VTD、VeriStand、ECU TEST这三款工具单拿出来都有完整文档一旦要串成一条链文档之间就开始打架——VTD说数据往UDP发就行VeriStand的工程师问你VTD的RDB包结构哪里能配ECU TEST那边又迟迟等不到仿真步进信号。最后调试的时间往往比搭环境还长。这篇文章想聊的就是这条链路的完整玩法从VTD建场景、出传感器数据到VeriStand做实时闭环和IO交互再到ECU TEST做测试调度与报告生成每一层之间到底怎么配、时序怎么对齐、数据怎么映射、现场会踩哪些坑。这些内容不限于固定搭配只要你手里是场景仿真器实时HIL平台测试自动化工具这三类工具的同构组合整个思路基本都能平移。内容按先讲清楚为什么这么搭再逐层配置最后给一套最小可运行的端到端流程来组织。第一次搭的人建议不要跳读因为这个链路的坑是跨层出现的跳过任何一层的理解后面排查问题都会事倍功半。1. 为什么是这三件套先看清工具链的整体拼图1.1 三款工具的定位差别很多新人拿到这套环境的第一反应是这三样东西是不是重复了VTD也能配场景VeriStand也能建测试ECU TEST也能写用例到底谁管谁这是典型的不理解分层导致的混乱。实际上这三款工具解决的是三个完全不同层面的问题只是它们都以测试为最终目标所以看起来功能有交叉让人误以为随便挑一个就能全包。VTDVIRES Virtual Test Drive本质是一个虚拟世界引擎。它管的是车开在什么样的路上传感器看到了什么核心能力在场景构建、交通流仿真、摄像头/毫米波/激光雷达的物理级仿真对外输出的是Ground Truth和目标列表。你关心的是场景车距本车多少米、相对速度多少、天气光照条件如何这些都是VTD的地盘。VeriStand本质是一个实时测试运行环境。它管的是ECU被接在什么样的闭环里、循环跑多快、信号怎么映射到硬件核心能力在实时调度、模型集成、信号I/O、硬件故障注入。它不关心场景长什么样只关心每个实时步长里该算什么模型、该采什么信号。ECU TEST本质是一个测试流程调度器。它管的是什么条件下测什么用例、通过标准是什么、报告怎么出核心能力在用例管理、自动化执行、测试评估和报告生成。它不参与实时闭环只是在旁边按剧本触发、采集和判定。一句话总结VTD负责造场景VeriStand负责跑系统ECU TEST负责管测试。三层各司其职互相配合才能完成一个完整的ADAS控制器HIL测试闭环。1.2 典型的ADAS HIL拓扑结构在展开配置之前先把一张典型拓扑画在脑子里后面所有配置动作都是在落实这张图里的某条连线。角色典型载体主要任务ECU TESTWindows测试主机测试用例调度、结果判定、报告生成VeriStandPXI实时机实时闭环、模型运行、IO信号、故障注入VTDWindows/Linux工作站场景渲染、传感器仿真、交通流生成测试主机与PXI之间一般走以太网ECU TEST通过主机上的VeriStand API读写实时机通道。VTD与VeriStand之间通常走UDP以太网交互VTD把目标列表、本车状态、传感器数据发给VeriStandVeriStand把ECU输出的转向、油门、制动等控制量反馈回VTD驱动虚拟车辆运动。待测ECU本身通过CAN/CAN FD或以太网DoIP挂在PXI的板卡上。整个系统的闭环是这样的VTD渲染场景 → 传感器输出目标信息 → VeriStand把目标数据送入感知融合模块或直接转发给ECU → ECU输出控制指令 → VeriStand采集控制量并回注VTD → VTD更新车辆姿态。ECU TEST只在外围观察和触发不参与实时闭环。这个拓扑里最容易搞错的一点是ECU TEST并不是直接连VTD的。很多人第一次画架构图把ECU TEST、VTD、VeriStand画成三个点然后每条边都连一遍这是后面所有通信混乱的根源。1.3 不同分工下的数据流关系把数据流拆开看链路上其实只有三类数据在流动。第一类是场景数据方向是VTD→VeriStand。包括目标物列表、传感器检测结果、本车位置姿态、路沿信息等。这类数据格式复杂、频率高是集成中最容易出问题的部分。第二类是控制数据方向是VeriStand→VTD。包括本车速度、转向角、加速度等车辆状态。VTD拿到这些数据后驱动虚拟车辆在场景里运动同时渲染传感器视图。第三类是测试管理数据方向是ECU TEST↔VeriStand。包括测试初始条件设置、场景触发命令、结果通道读取、故障注入控制等。这类数据量小、频率低但逻辑复杂决定了整个测试能否按剧本执行。我见过不少团队在这三类数据上不做区分统一走一个通道测试一复杂就乱成一锅粥。正确的做法是场景数据走专门的UDP通道控制数据走另一个UDP通道或共享内存测试管理数据走VeriStand API。隔离好之后排查问题时可以快速定位是数据链路的问题还是逻辑链路的问题。2. VTD端的配置思路与实操要点2.1 VTD运行时结构和配置入口VTD的配置复杂度不在装好而在让它按你的节奏工作。第一次打开VTD的人经常对着启动器发呆里面有一堆模块Scenario Editor、Road System Editor、Sensor Simulation、Player等不知道从哪下手。这里先要说一个核心概念VTD是一个多模块的分布式框架所有模块通过RDBRealtime Data Bus协议互联。RDB是VTD定义的二进制数据协议通过UDP在模块之间传递消息消息类型包括场景对象信息交通参与者的位置、速度、尺寸、传感器输出雷达目标列表、地面信息、时间戳等。你可以把RDB理解成VTD的神经总线所有模块都挂在这条总线上说话。与外部工具集成时实际要做两件事。第一接入VTD的RDB通道订阅或发布需要的消息类型第二控制VTD的运行状态包括加载场景、播放、暂停、重置。前者决定了数据层面通不通后者决定了你能不能自动化地把场景推到正确的测试时刻。VTD提供了多种外部接口底层C/C API、Python包装库、RDB Socket接口。很多人的第一选择是用RDB Socket直接收发UDP包因为不依赖第三方库。但我的建议是如果你做的是工程化集成而不是写个Demo直接用VTD提供的Python/C API更省事尤其是需要同时控制Player状态时用API可以少写很多手动协议解析的代码。2.2 与外部工具的数据通道RDB与APIRDB的协议栈细节在VTD官方文档里有完整说明但有几个细节是文档没强调、我踩过坑后才总结出来的。第一RDB消息的字节序和时间戳。RDB默认使用网络字节序所有消息头里都有simTime和frameNumber两个关键字段。frameNumber是整个VTD同步的基准外部系统要做时间对齐时千万不要用本地PC时钟要以frameNumber和simTime为准。我见过不止一个团队对接时用PC本地时间做关联结果VTD里所有目标都跑到前面去了就是因为时间戳用了本地时钟而不是仿真时间。第二RDB里的坐标体系。VTD输出目标列表时目标位置是相对于世界坐标系还是传感器本体坐标系可以在Sensor Simulation模块里配置。绝大多数ADAS集成场景用的是传感器本体坐标系也就是目标相对传感器的距离、横向偏移、纵向速度。但很多直接对RDB原始输出下手的人默认拿到的是世界坐标换算关系不一样导致后级的融合算法全部错乱。因此拿到数据的第一件事一定是确认坐标系约定而不是急着写解析代码。第三VTD的事件触发机制。外部工具可以通过RDB发送事件消息例如加载某条路线、设置某辆车的速度、切换天气。VTD收到事件后在对应模块里执行状态改变。ECU TEST如果想让场景在第5秒变道通常不是直接改VTD场景文件而是通过事件通道发送一个变道指令。这个机制是自动化测试的关键务必提前规划好事件ID的编码规范。2.3 场景、传感器和动力学模型的配置建议VTD的场景建模涉及Road SystemOpenDRIVE路网、ScenarioOpenSCENARIO场景和Sensor传感器三层。对于HIL测试我的配置顺序是第一步先建路网和场景不需要花太多时间美化重点是确认参考线方向和车道ID因为后面所有目标属性都跟车道绑定ID对不上后面全是错位。第二步配置传感器。在Sensor Simulation里把每个传感器的安装位置、视场角、更新频率配好。关键参数是更新频率为了和VeriStand的实时节拍匹配传感器的输出频率建议统一成VeriStand的模型步长比如100Hz对应10ms步长。如果两边频率不一致数据在时间轴上很难对齐后级算法会很痛苦。第三步处理动力学模型。VTD自带的车辆动力学模型在纯仿真环境里够用但HIL环境里本车动力学通常由VeriStand里的车辆模型Simulink或CarSim等计算。此时VTD只负责接收外部车辆姿态并渲染出来这要求关闭VTD自带的本车动力学否则VTD自己算一个姿态VeriStand里又是另一个姿态画面和目标就会打架。这一步是最容易出幽灵车的地方——VTD渲染的虚拟车和VeriStand里算出来的车不在同一条轨迹上。原因往往是两边各启用了一套动力学两套模型参数不一致很快轨迹就分叉了。判断方法很简单在VeriStand里给一个固定的转向角看VTD画面里的车是否按这个转向角画一个固定的圆。如果画不出来说明VTD还在用自己的动力学模型。3. VeriStand端的对接方法与细节3.1 实时目标与系统定义VeriStand的大多数配置集中在一个后缀为.nivssdf的系统定义文件里。这个文件定义了实时机里有哪些模型、哪些通道、哪些硬件卡、IO映射关系。它本质上是一张实时系统的装配清单。实际对接VTD前先确认三个基础项。第一实时目标是否准备好VeriStand运行在PXI设备或PC实时系统上目标系统要先装好实时操作系统和运行引擎。第二模型是否编译好如果用Simulink模型要在主机上把它编译成目标系统可执行的代码通常通过NI Model Interface Toolkit或直接生成DLL。第三通道表是否规划好所有需要在外部看到的信号建议提前定义成VeriStand的模型通道这样ECU TEST侧引用时路径清晰不用每次翻模型找信号名。我的习惯是先把VeriStand当作一个独立系统跑通不接任何外部工具用模型生成一个正弦波激励放到某个AO通道上能输出再接VTD。这样做的好处是出问题时你永远知道当前是VeriStand自己的问题还是集成的问题。很多团队一根筋直接连完所有工具最后定位问题要多花好几倍的时间。3.2 模型集成和通道映射在VeriStand里跑车辆动力学模型常见方式有这么几种直接导入Simulink模型编译为DLL、导入FMU、使用内置设备。对于ADAS HIL来说最常用的还是把整车动力学模型导入VeriStand让它按实时节拍运行。通道映射的核心是名称一致性。VeriStand里模型引出的通道名会直接暴露给外部脚本和ECU TEST。很多坑都出在命名上模型里叫VxHIL工程师映射出来叫LongitudinalSpeedECU TEST用例里又写成了Vel_X。三个地方三种叫法测试一跑就报通道不存在。我的团队有一个硬性约定通道命名在系统集成前由HIL工程师先出一份通道映射表VTD、VeriStand、ECU TEST三方共用同一份命名。命名规范不搞花哨就用模块_信号_单位的结构例如Veh_Vx_kmh、Cmd_SteerAngle_deg、Obj_RelDist_m。这个约定看起来简单但在实际项目里能省掉大量沟通成本和排查时间。3.3 与VTD同步的几种常见方式VTD和VeriStand的同步是整个链路里最容易出问题的部分。常见做法有几种各有利弊。第一种是共享内存方式适合VTD和VeriStand运行在同一台Windows主机且用桌面仿真模式Desktop Simulation的情况。共享内存延迟最小但不适合实时闭环因为普通Windows调度无法保证实时性。第二种是UDP消息加主机转发的方案VTD把目标列表通过RDB发送到VeriStand侧的主机程序再由主机程序通过VeriStand API写入实时目标机。这个方案实现简单但延迟不确定主机负载一高数据就会抖动不适合对实时性要求高的测试。第三种是实时机内集成方式把VTD通信模块直接做成VeriStand的自定义设备放进系统定义里让它在模型步进中直接收发RDB数据。这是多数ADAS HIL项目最终采用的做法因为延迟可控、实时性好VTD的数据进来后直接以VeriStand通道的形式暴露给模型和ECU TEST不需要额外的中间进程。我推荐直接采用第三种方案。虽然前期要写或集成一个VTD通信DLL工作量稍大但后续稳定性远远好于其他两种。如果你所在团队已经有现成的自定义设备模块优先复用。3.4 时刻对齐和节拍管理时刻对齐的本质问题是VeriStand按固定步长比如1ms或10ms运行模型而VTD的仿真步长可能不固定或者传感器更新频率与模型步长不一致。如果不做处理长期运行后累计误差会越来越大场景里第10秒的位置对应不上VeriStand里的第10秒。通常的做法是以VeriStand实时节拍为主时钟VTD作为从设备跟随。VTD每收到一个步进信号就推进一帧仿真算完把结果发回来。VTD本身支持外部触发模式也就是在配置里把仿真模式设置为外部触发外部每给一个时钟脉冲VTD就跑一步。如果保持默认的自由运行模式VTD自己按自己的节奏跑两边的时间戳很快就会漂移。如果你评估后发现VTD的响应速度跟不上实时节拍一个折中方案是把VeriStand的模型步长放大比如从1ms放大到5ms或者降低VTD传感器更新率。但这种妥协一定会在测试结果里体现尤其是AEB这类对时间敏感的功能测试建议不要在这个环节妥协宁可升级工作站硬件也不要牺牲步长。4. ECU TEST自动化层测试用例与执行管理4.1 ECU TEST在链路中的位置在三层结构里ECU TEST是最上层它不直接参与仿真但控制整个测试节奏。一条典型用例的执行顺序是这样的通过VeriStand API设定初始条件比如车速80km/h。触发VTD场景比如前方车辆在3秒后切入本车道。等待ECU响应在仿真过程中持续采集ECU的CAN信号和VeriStand中的整车状态。判定是否满足通过标准生成测试报告。注意第二步对VTD的触发ECU TEST一般不会直接去调VTD的API或直接发UDP事件而是通过VeriStand里的一个场景控制通道间接触发ECU TEST先把场景ID写入VeriStand通道然后由VeriStand里的通信模块把事件发给VTD。这样做的好处是保持所有对外通信入口统一测试过程中所有动作都有迹可循出现问题能快速定位是哪一层没执行。4.2 测试用例的编写与参数化ECU TEST的用例可以用图形化流程编辑器搭也可以编写脚本。我更推荐脚本方式进行参数化设计因为ADAS测试用例的数量级非常大纯图形化流程很难维护一旦场景参数要批量修改图形化方式会让你改到怀疑人生。参数化最典型的场景是NCAP类测试同一类工况碰撞时间TTC、目标车速、偏移量这些参数要成百上千地扫描。合理的做法是把参数放在Excel表里作为数据源ECU TEST按行读取并逐条执行。换一组参数就是换一行数据不需要改用例本身。我在实际项目里会把每条用例的输入参数和预期结果都放在数据源里用例代码只保留执行逻辑这样测试观测性会好很多。写用例时还有一个小建议把等待类动作集中在用例开头不要散落在中间。比如等待VeriStand模型稳定、等待VTD场景加载完成统一放在初始化步骤里。如果中途等待一旦超时很难判断是用例逻辑问题还是环境问题。这个习惯在自动化批量跑的时候特别重要能帮你快速区分用例挂了和环境没准备好。4.3 与VeriStand/VTD的交互方式ECU TEST与VeriStand的交互最常用方式是通过VeriStand的.NET/COM API。ECU TEST支持在脚本里调用外部API因此可以在测试脚本中创建VeriStand的Workspace对象、读写通道、触发procedure。下面给一个概念性的Python示例说明交互方式具体API名称随版本有差异但思路是一致的# 概念示例ECU TEST脚本中通过VeriStand API读写通道 # 实际使用时请以当前版本的ClientAPI为准 import clr clr.AddReference(NationalInstruments.VeriStand.ClientAPI) from NationalInstruments.VeriStand.ClientAPI import Workspace # 连接到VeriStand实时目标 ws Workspace(192.168.1.10) # PXI的IP地址 ws.ConnectToSystem(ADAS_HIL.nivssdf) # 设置初始车速单位km/h ws.SetSingleChannelValue(Veh_Vx_kmh, 80.0) # 触发VTD场景通过VeriStand场景控制通道间接触发 ws.SetSingleChannelValue(Scenario_Trigger_ID, 3) # 读取ECU输出结果 brake_pressure ws.GetSingleChannelValue(Veh_BrakePressure_bar)与VTD的交互更多是间接的通过VeriStand通道中转这一点前面已经强调过。但在某些调试场景下ECU TEST直接向VTD发UDP事件也完全可行。实际项目中我更看重可观测性无论事件从哪条路走最后要在VTD的日志或VeriStand的通道里能看到触发痕迹否则测试失败时无从定位。我在VTD的事件日志里每次都会重点检查事件ID和时间戳确保每个自动化触发都有据可查。4.4 测试评估与报告ECU TEST的报告功能很完善但报告的价值取决于你判了什么。很多团队把报告生成当作最后一步实际上测试评估应该在用例设计阶段就想清楚否则报告只是一堆数据的堆砌。ADAS HIL测试里常见的判定分两类。一类是基于信号的实时判定适合功能类测试例如3秒内应发出FCW警告。这类判定可以做成ECU TEST里的表达式监视一旦不满足立即失败无需等测试跑完。另一类是基于事后数据的离线判定适合性能类测试例如整个变道过程中横向加速度不超过0.3g这类需要记录完整数据后用Python或MATLAB脚本事后分析再把分析结果拉回ECU TEST报告。我的建议是能离线判的尽量离线判不要把复杂算法塞进ECU TEST的实时判定里。实时判定逻辑一旦复杂用例维护成本会爆炸每次模型更新、算法更新都可能需要重写判定条件。离线判定的脚本独立于ECU TEST用例改动成本低而且可以反复复用。5. 端到端配置实战一个最小可运行的系统5.1 硬件与网络拓扑为了让这套流程可复现我给出一个最小硬件配置。不需要工业级的复杂设备但以下几个是刚需一台VTD工作站独立显卡32GB内存Windows或Linux系统均可。一台PXI实时机至少包含一块实时控制器和一块CAN通讯板卡。一台测试主机运行ECU TEST和VeriStand开发环境。一台待测ECU带CAN接口支持ADAS功能。网络拓扑上VTD工作站和PXI通过千兆以太网直连或走同一交换机测试主机与PXI通过以太网连接ECU通过CAN总线接到PXI板卡。多台机器之间最忌讳的是链路里混入Wi-Fi桥接、或者交换机端口不稳这些会让UDP延迟抖动直接导致时间同步失效。5.2 配置顺序这个配置顺序是我从零开始搭过若干次台架后沉淀下来的不建议随意调换。每一步都在上一层验证通过后再进行避免最后花大把时间排查到底哪一步出了问题。在PXI上先跑通VeriStand自带示例工程确认实时目标能正常启停。编译并加载整车动力学模型用VeriStand的Stimulus给一个车速信号确认通道有响应。单独启动VTD加载一个最简单的直道场景确认场景能正常播放。在VTD里关闭本车动力学改为接收外部车辆姿态并设置外部触发模式。在VeriStand系统定义里加入VTD通信自定义设备配置IP、端口、RDB消息类型。用VeriStand的Workspace手动发送一条场景触发命令确认VTD能加载场景并返回目标数据。确认VTD发来的目标数据在VeriStand通道里能读到数值随时间正常变化。接入ECU连好CAN在VeriStand里做CAN信号与模型通道的映射。从ECU TEST连接VeriStand读一个通道、写一个通道确认API通路正常。最后才写完整的自动化测试用例跑通第一版端到端流程。这个顺序的核心思想是每一层都先在隔离环境里验证通过再加下一层。很多人失败在跳步第2步还没确认就跑第10步最后都不知道是VTD没发数据还是VeriStand没收到白白浪费时间。5.3 时间同步与数据流验证时间同步在最小系统里的落地做法很简单。VeriStand的实时机作为时间主设备模型步长配置为10ms。VTD配置为外部触发模式由VeriStand侧的通信模块每个步长发送一次步进信号。所有数据都带仿真时间戳从VeriStand实时时钟取VTD回包时带回它的内部处理时间用于事后分析延迟。ECU TEST不自己计时所有超时判断都基于仿真时间戳而不是PC本地时间。有人会问为什么不用PTP这类硬件时间同步方案。在这个架构里VTD和VeriStand之间走UDP传输延迟本来就是微秒到毫秒级对HIL测试来说真正的挑战不是链路里的绝对延迟而是两边各自时间基准不一致的问题。用步进信号仿真时间戳的方式已经足够硬件PTP在这个场景里通常属于过度设计。配置完成后建议花半小时做一轮系统性的数据流验证直接跑用例前先把这个过了。检查项方法通过标准VTD目标数据到达观察VeriStand通道值是否随场景变化目标距离/速度随时间连续变化控制器输出回注在VeriStand里手动给定一个转向角VTD场景里虚拟车按给定转向角转弯时间戳一致性对比VTD回包时间戳与VeriStand时间戳差值在单个步长左右场景触发从VeriStand写入场景IDVTD加载对应场景返回值正常ECU通信在VeriStand里监控CAN报文ECU心跳信号正常周期稳定这套清单我每次搭建新台架都跑一遍基本能筛掉90%的集成低级问题。剩下的问题基本都是逻辑层面的排查起来思路也更清晰。6. 常见问题与排查技巧实录6.1 时间不同步典型现象VTD里的场景车已经跑出去很远但VeriStand里的速度和位置信号滞后一大截或者ECU TEST判断超时时仿真时间才过了一半。原因分析绝大多数情况下VTD还在自由运行模式它自己按自己的仿真步长跑没有跟随VeriStand的步进信号。两边各跑各的时间上自然越差越多。排查顺序确认VTD的配置里是否设置为外部触发模式而不是默认的自由运行。确认VeriStand侧通信模块确实每个步长都发送了步进信号可以看通信模块的发送计数通道是否在持续增长。确认VTD回包的frameNumber和simTime是否连续增长且没有跳变。如果有跳变说明中途有丢帧或模块重启。6.2 数据映射错误典型现象ECU读到目标的纵向速度要么是0要么是一个巨大的错误值雷达目标数量对不上明明场景里有三个目标ECU只收到一个。原因分析坐标系没对齐、单位不一致、传感器ID提取错误是三大主因。VTD输出通常用m/s但ECU侧某个模块期望km/h或者相对速度没有被正确计算都会导致数值完全不对。建议在集成初期把VTD原始输出的每个关键字段都打印出来和VTD自带的传感器可视化界面逐项对照先确认原汁原味的数据长什么样再谈映射。跳过这个步骤直接写后级算法出了问题你根本不知道是解析错了还是算法错了。6.3 通信延迟与丢包典型现象VTD画面偶尔卡顿VeriStand里偶发目标丢失测试跑久了目标数量突然从3个变成0个再恢复。原因分析UDP丢包往往是网络栈缓冲溢出尤其是VTD工作站上同时跑着显卡渲染和大量IO时接收缓冲区容易被占满系统来不及处理的UDP报文就丢了。解决办法有这么几条在VTD侧调大UDP接收缓冲区大小这是最直接有效的检查VTD工作站的网卡巨型帧和中断合并设置尽量用默认配置如果目标刷新频率很高考虑在VeriStand侧做目标航迹的最邻近关联和简单线性预测哪怕是线性预测也能大幅降低丢包带来的数据抖动。最后一招是降低传感器输出频率比如把100Hz降到50Hz但这属于牺牲性能换取稳定性万不得已再用。6.4 ECU TEST无法触发场景典型现象ECU TEST调用VeriStand API写入场景ID但VTD那边没有反应场景一直不加载。排查顺序先在VeriStand的Workspace里看通道值是否真的被写进去了。如果没写进去是API连接或通道名的问题。再看VeriStand里的VTD通信模块是否检测到通道值变化并发出UDP事件看模块的调试日志。最后看VTD的事件日志里有没有收到对应的事件ID。大部分情况卡在第2步通信模块的触发条件没配置好比如只在上升沿触发但ECU TEST写入后通道值一直保持同一个值第二次执行同样的用例时就不再触发。解法是设置值变化时触发或者在写入前把通道值先清零再写目标值。这个细节写在产品文档里的可能性很小但实际项目里十有八九会遇到。7. 一点经验与避坑心得这整套环境搭得多了我越来越觉得难点从来不是某个工具本身而是数据契约的约定——谁在什么时刻、以什么格式、把什么数据给谁。这个契约不提前定清楚后面每一步都在打补丁。我个人的建议是在动手配VTD之前先花半天把一份简单的接口文档写出来通道名、单位、坐标约定、时间戳来源、更新频率。哪怕只有两页纸后面省下的时间都是以天计的。另外再分享一个工程上的小技巧这套链路里VTD的场景、VeriStand的模型、ECU TEST的用例都是会频繁迭代的部分但接口和通道表一旦确定尽量保持稳定。我在项目里最头疼的问题往往不是三个工具谁又更新了版本而是通道表里的某个信号被模型工程师悄悄改了名字。这种问题最难排查因为它不报错只是所有值看起来都不对。保持接口冻结让变化发生在各个工具内部的配置里是维持这套链路长期可用的关键。
返回列表