尧图精选

AUTOSAR CAN通信五层调用链解析:从信号到硬件的路由机制

🕒 发布时间:2026/10/2 2:59:09 📁 来源:尧图网络
1. 项目概述为什么CAN信号在AUTOSAR里不能“直来直去”AUTOSAR中CAN信号传输的模块化解析与实战应用——这个标题乍看是讲CAN通信但真正要解决的是一个老司机都容易踩坑的底层逻辑问题信号不是从发送端直接“飞”到接收端的它得一层层敲门、登记、转手、验货最后才落进应用软件手里。这套流程不是为了增加复杂度而是为了解决整车电子电气架构升级后最现实的三个硬约束ECU软硬件解耦、多供应商代码集成、功能安全与诊断可追溯性。我带过三届AUTOSAR项目最早用Vector工具链做第一代域控制器时团队里两个资深嵌入式工程师对着CAN报文发呆——明明CanIf_SendPdu()返回E_OKCANoe上却收不到信号后来查了三天发现是PduR_RoutingPath配置漏了一行COM模块根本没把信号从PDU路由到上层。这种问题在非AUTOSAR项目里几乎不存在但在AUTOSAR里它每天都在发生。核心原因在于AUTOSAR把CAN通信拆成了至少5个强职责隔离的BSW模块每个模块只干一件事且必须通过标准化接口交互。这就像快递系统——应用层是寄件人COM是打包员PduR是分拣中心CanIf是快递员底层驱动是运输车。你不能让寄件人自己开车送件也不能让分拣中心直接拆包验货。关键词AUTOSAR、CAN、COM、PduR、CanIF不是并列关系而是纵向调用链应用层 → COM → PduR → CanIf → Can Driver → 硬件寄存器。其中COM负责信号级操作打包/解包/周期触发PduR负责PDU级路由决定一个CAN帧该往哪送CanIf负责硬件抽象屏蔽不同CAN控制器差异。而像TJA1145这类收发器它连在Can Driver之下属于物理层AUTOSAR标准根本不碰它——驱动工程师配好波特率、滤波器、唤醒逻辑上面四层完全感知不到它是TJA1145还是TCAN1042。所以这篇内容不是教你怎么发一帧CAN而是带你亲手拆开这个“快递系统”看清每个环节的输入输出、配置陷阱、调试断点。适合两类人一是刚从传统裸机开发转AUTOSAR的工程师需要理解“为什么以前30行代码搞定的事现在要配200个参数”二是AUTOSAR集成工程师常被测试抱怨“信号没出来”却找不到该查COM还是PduR。接下来所有内容全部基于Vector AUTOSAR工具链DAVinci Configurator Pro CANoe实测验证不讲虚的。2. 模块化设计逻辑五层结构不是叠床架屋而是责任切分2.1 AUTOSAR CAN通信栈的层级真相AUTOSAR标准文档里画的通信栈图常被误解为“自上而下层层封装”。实际在工程落地中它更像一条双向流水线发送路径是单向应用→硬件接收路径却是双向硬件→应用同时硬件→BSWM/NM。我们先看发送侧完整链路应用层SWC调用Rte_Write_ 触发信号写入COM模块收到Rte通知后将信号值按I-PDU格式打包生成一个PDU数据块含ID、DLC、DataPduR模块根据ECUC配置查Routing Table决定该PDU走哪条通路如CAN0_TX → CanIfCanIf模块将PDU映射到具体CAN控制器通道如Controller0调用CanIf_Transmit()Can Driver填充CAN硬件寄存器TX Buffer触发发送接收路径则复杂得多硬件中断触发Can Driver读取RX Buffer → 调用CanIf_RxIndication()CanIf根据Hth/Hrh句柄将PDU交给PduR → PduR查Routing Table分发给COM或NM或BSWMCOM解析PDU更新内部Signal Buffer触发Rte_Read通知应用层这个设计的核心价值在于解耦粒度精确到字节级。比如某OEM要求仪表盘信号必须100ms周期发送而ADAS报警信号需事件触发10ms超时重传。在传统代码里你得在中断服务程序里写一堆if-else判断ID和条件在AUTOSAR里只需在COM配置中为两个信号分别设置不同的Transmission Mode周期/事件/混合和MainFunction周期其余全由COM自动调度。PduR甚至能实现“一帧PDU同时路由给COM解析信号和NM网络管理状态同步”这是裸机开发根本无法优雅实现的。2.2 各模块不可替代性的硬核依据为什么不能砍掉PduR有人问“既然COM知道要发到CAN0干嘛还要PduR中转”——因为COM模块本身不感知硬件资源。COM只认I-PDU ID如0x123而CanIf只认Controller ID如Controller0。PduR就是那个翻译官它把“I-PDU 0x123 → Controller0 TX通道”这个映射关系固化在配置中。当项目后期要增加第二路CAN如CAN1用于诊断你只需在PduR里新增一条路由规则COM和CanIf代码零修改。Vector实测数据显示有PduR的项目在增加新总线时BSW集成工时减少65%。为什么COM不能直接调用Can Driver因为AUTOSAR要求BSW模块间必须通过标准化API交互。CanIf作为硬件抽象层向上提供统一接口CanIf_Transmit向下适配不同厂商驱动NXP S32K的Can_Driver vs Infineon TC3xx的Can_Driver。如果COM绕过CanIf直连驱动等于把硬件依赖焊死在COM里换MCU就得重写COM——这直接违反AUTOSAR“可移植性”设计原则。再看TJA1145收发器的角色它连在MCU的CAN控制器引脚上属于物理层器件。AUTOSAR标准规定收发器配置如睡眠模式、唤醒阈值由Can Driver或专用Transceiver Driver管理COM/PduR/CanIf完全不涉及。Vector工具链中TJA1145的初始化参数如VIO电压、Standby引脚控制是在Can Driver的ECUC配置页里设置的和上层通信逻辑彻底隔离。这也是为什么搜索“autosar bswm下电是怎么配置的”会跳到BSWM模块——BSWM负责协调整个ECU下电流程它会调用CanIf_SetControllerMode(CAN_TSM_OFF)关闭CAN控制器再调用Transceiver Driver进入低功耗但BSWM本身不关心收发器型号。2.3 配置驱动开发为什么90%的问题出在ECUC参数上AUTOSAR的“配置即代码”特性决定了80%的通信故障源于ECUCEmbedded Configuration Description参数错误。以Vector DAVinci为例一个典型CAN信号配置需横跨4个配置文件Can.arxml定义CAN控制器、通道、波特率、滤波器Hardware Object配置CanIf.arxml绑定Controller与Hth/Hrh句柄配置Controller Mode切换逻辑PduR.arxml定义Routing PathSource PDU → Destination ModuleCom.arxml配置I-PDU、Signal、Gateway规则、Transmission Mode关键陷阱在于参数强依赖顺序。例如若在Can.arxml中未启用某个Hardware ObjectHOH则CanIf.arxml中对应的Hrh句柄就无法被PduR识别导致接收路由失败。Vector日志里会报“PduR: Routing not found for PduId0xXX”但新手常去COM里查信号配置完全跑偏。实测统计项目初期73%的CAN收不到问题根源都是PduR Routing Path未激活或Source/Destination模块名拼写错误大小写敏感。另一个隐形杀手是定时参数冲突。COM模块的MainFunction周期如10ms必须整除其下所有信号的Transmission Cycle如20ms、50ms、100ms。若设COM MainFunction为15ms而某信号Cycle为20ms则该信号永远无法触发发送——因为COM只在15ms倍数时刻检查周期信号。Vector编译器不会报错但生成的代码里会插入空循环等待导致CPU占用率异常升高。我在某项目中就遇到过仪表CAN负载突然飙升到95%排查三天才发现是COM周期配成13ms质数与所有信号周期无公因数。3. 核心模块深度解析从信号到字节的逐层拆解3.1 COM模块信号级操作的中枢大脑COM模块的本质是信号与I-PDU之间的编解码引擎。它不处理CAN帧格式只关心“信号值怎么塞进字节流”和“字节流里哪个比特对应哪个信号”。这里必须厘清三个易混淆概念Signal应用层看到的逻辑量如EngineSpeed0~8000 rpmuint16I-PDUCOM打包后的数据单元含ID如0x201、DLC8、Data8字节PDU更广义的数据单元I-PDU特指ISO-TP或CAN帧承载的信号集合COM配置的核心是Signal-to-I-PDU Mapping。以发动机转速为例SignalEngineSpeedStartBit0, Length16bit, ByteOrderMotorola大端I-PDUEngineDataID0x201, DLC8Mapping规则EngineSpeed占用Data[0:1]即Data[0]为高字节Data[1]为低字节Vector工具链中这个映射在Com.arxml的ComIPduSignalRef节点下配置。常见错误是ByteOrder选错Motorola大端下8000rpm0x1F40存为0x1F 0x40Intel小端下则为0x40 0x1F。若ECU和CANoe解析端ByteOrder不一致信号值就会错乱如8000显示为16448。实测技巧用CANoe的“Decode using ARXML”功能导入Com.arxml它会自动按配置解析比手动计算可靠十倍。COM的Transmission Mode是另一大痛点。四种模式实际使用场景DIRECT事件触发无延迟如刹车信号MIXED事件触发周期重传如故障码上报事件发生即发若100ms内无ACK则重发PERIODIC严格周期发送如车速必须每100ms一帧NONE仅用于接收不发送如某些诊断响应关键细节MIXED模式下事件触发优先级高于周期。即若在周期到达前发生事件会立即发送然后重置周期计时器。Vector文档明确警告若事件频率高于周期如事件每50ms发生周期设100ms会导致发送队列溢出。解决方案是启用COM的ComTxModeTrue机制——它允许在事件触发后跳过下一个周期发送避免堆积。3.2 PduR模块PDU路由的交通指挥中心PduR模块的配置本质是构建一张PDU路由表。它的输入是PDU ID来自COM或NM输出是目标模块COM/NM/BSWM及对应函数指针。配置错误的典型症状是“CANoe能抓到帧但应用层收不到信号”这90%是PduR路由缺失。Routing Path配置有三个必填字段PduRDestPduRef目标模块的PDU引用如/PduR/PduRDestPdu/Com_0x201PduRSrcPduRef源模块的PDU引用如/PduR/PduRSrcPdu/CanIf_0x201PduRRoutingType路由类型PDU_ROUTING_TYPE_RECEIVE或PDU_ROUTING_TYPE_SEND致命陷阱在于PDU ID命名一致性。Vector工具链中COM生成的I-PDU ID如ComIPdu_0x201和CanIf接收的PDU ID如CanIfRxPdu_0x201必须在PduR里严格匹配。若COM配置I-PDU名为EngineData而PduR里写CanIfRxPdu_EngineData路由即失效。建议全程使用ID命名0x201避免字符串歧义。更隐蔽的问题是多路复用Multiplexing路由。当一个CAN帧ID承载多个子信号如0x300帧中Byte2的bit0-3为Modebit4-7为StatusPduR需配合COM的Gateway功能。此时需在PduR中配置PduRGatewayRef指向COM的Gateway Rule。Gateway Rule定义了“从哪个I-PDU的哪个字节提取数据写入目标I-PDU的哪个位置”。若漏配Gateway即使路由存在信号也无法透传。实操心得用Vector的“PduR Routing Validation”工具右键PduR配置→Validate Routing可一键检测所有路由路径是否闭合。它会标红缺失的Src/Dest引用比人工检查快5倍。某次我帮客户救火30分钟就定位到PduR里一个PduRSrcPduRef指向了已删除的旧配置节点工具直接报“Reference not resolved”。3.3 CanIf模块硬件抽象层的精准翻译官CanIf模块是AUTOSAR通信栈的“最后一公里”它把逻辑PDU翻译成物理控制器指令。其配置核心是HthHardware Transmit Handle与HrhHardware Receive Handle的绑定。Hth/Hrh不是随便起的名字而是Can Driver分配的硬件资源索引。例如Can Driver配置了3个TX Buffer编号0/1/2CanIf将Hth0绑定到Buffer0Hth1绑定到Buffer1COM发送I-PDU时指定Hth0 → CanIf调用CanIf_Transmit(Hth0, PduInfo) → Can Driver填充Buffer0关键参数CanIfControllerId必须与Can.arxml中Controller ID完全一致。曾有个项目Can.arxml里Controller叫CanController0而CanIf.arxml里写成CanController_0多了下划线编译不报错但运行时CanIf_Transmit始终返回E_NOT_OK——因为CanIf找不到匹配的Controller。CanIf的CanIfSetControllerMode()是下电流程的关键。BSWM配置ECU下电时会调用此函数将Controller设为CAN_TSM_OFF。但注意这仅关闭CAN控制器不切断收发器电源。TJA1145的Standby模式需由Transceiver Driver单独控制。Vector工具链中Transceiver Driver配置在CanTrcv.arxml里有专门的CanTrcvWakeupMode和CanTrcvSleepMode参数。若BSWM只调CanIf关控制器忘了调Transceiver Driver进SleepTJA1145会持续耗电导致静态电流超标。另一个高频问题是接收Hrh过滤器配置。CanIf支持两种过滤Global Filter在CanIf.arxml中全局配置对所有Hrh生效如只接收ID 0x100-0x1FFHrh-specific Filter为每个Hrh单独配置如Hrh0只收0x201Hrh1只收0x300若Global Filter范围过窄如设0x100-0x1FF而信号ID是0x201则Hrh0永远收不到——即使Hrh-specific Filter配对了。排查方法在CANoe中开启“Raw Data”视图确认帧是否真的没进ECU硬件层丢失还是进了但被CanIf过滤软件层丢弃。3.4 Can Driver与TJA1145物理层的硬核落地Can Driver是AUTOSAR栈里唯一与MCU硬件寄存器打交道的模块。以NXP S32K144为例其Can Driver需配置Baud Rate通过CanControllerBaudrateConfig设置计算公式为BRP (fCANCLK / (BaudRate * (1 TSEG1 TSEG2 SJW))Filter Configuration定义哪些ID能触发RX中断Hardware Object配置Wake-up Configuration设置CAN总线唤醒使能对TJA1145至关重要TJA1145作为高速CAN收发器其与AUTOSAR的交集集中在三点唤醒功能TJA1145支持通过CAN总线电平变化唤醒MCU。需在Can Driver中启用CanWakeupSupport并在TJA1145的STB引脚接MCU的唤醒源如S32K144的INT_WKUP0。Vector配置中CanControllerWakeupConfig需设CanWakeupEnable TRUE。睡眠模式TJA1145有Standby和Normal两种模式。Standby下电流100μA但不响应总线。Transceiver Driver需在ECU休眠前调用CanTrcv_SetMode(CANTRCV_MODE_STANDBY)。故障诊断TJA1145的ERR引脚可反馈过压/短路故障。Transceiver Driver需轮询该引脚状态并通过DEMDiagnostic Event Manager上报故障。实测发现若TJA1145的VIO引脚I/O电压接3.3V但MCU CAN控制器LPC引脚耐压为5V则需在Can Driver中配置CanControllerVoltageLevel CAN_VOLTAGE_LEVEL_3V3否则电平不匹配导致通信误码。Vector工具链会在编译时校验VIO与MCU电压配置一致性不一致则报错。4. 实战应用全流程从配置到CANoe验证的七步法4.1 步骤一Can.arxml基础配置硬件层筑基第一步永远是硬件抽象。打开DAVinci Configurator Pro新建Can.arxmlAdd CAN Controller命名为CanController0选择MCU型号如S32K144Configure Baud Rate设CanControllerBaudrate 500kbps工具自动计算BRP/TSEG1/TSEG2/SJW。手动验证S32K144 fCANCLK40MHz500kbps下BRP2TSEG113TSEG22SJW1满足40e6/(2*(13211))500e3Add Hardware Object (HOH)为发送和接收各建一个HOH。发送HOHHth0设CanHardwareObjectDirection CAN_OBJECT_TRANSMIT接收HOHHrh0设CAN_OBJECT_RECEIVE并配置CanHardwareObjectID 0x201精确匹配信号IDEnable Wake-up在CanControllerWakeupConfig中勾选CanWakeupEnable并指定CanWakeupSource CAN_WAKEUP_SOURCE_BUS提示HOH的CanHardwareObjectID必须与COM中I-PDU的ID一致这是PduR路由的唯一依据。若此处配0x201COM里却配0x202路由必然失败。4.2 步骤二CanIf.arxml绑定建立软硬桥梁CanIf配置是承上启下的关键Add CanIf ControllerCanIfControllerId CanController0必须与Can.arxml中Controller名完全一致Bind Hth/Hrh添加CanIfTxPduCanIfTxPduId Hth0CanIfTxPduRef /Can/CanController0/Hth0同理添加CanIfRxPdu绑定Hrh0Configure Controller Mode在CanIfControllerModeConfig中设CanIfControllerMode CANIF_CS_STARTED启动态并配置CanIfControllerModeTransition定义模式切换逻辑如从STOPPED到STARTED需调用Can_Init()注意CanIfTxPduRef的路径必须精确到Can.arxml中的HOH节点。Vector工具链中右键HOH节点→Copy Node Path可获取准确路径避免手输错误。4.3 步骤三PduR.arxml路由配置打通数据动脉PduR是故障高发区务必逐项核对Add PduR Dest Pdu创建PduRDestPduPduRDestPduId Com_0x201PduRDestPduRef /Com/ComIPdu/ComIPdu_0x201指向COM的I-PDUAdd PduR Src Pdu创建PduRSrcPduPduRSrcPduId CanIf_0x201PduRSrcPduRef /CanIf/CanIfTxPdu/Hth0发送或/CanIf/CanIfRxPdu/Hrh0接收Add Routing Path创建PduRRoutingPathPduRSrcPduRef CanIf_0x201PduRDestPduRef Com_0x201PduRRoutingType PDU_ROUTING_TYPE_RECEIVE接收路由关键检查用DAVinci的“PduR Routing Validation”工具运行验证。若报“Unresolved reference”说明PduRSrcPduRef或PduRDestPduRef路径错误。曾有个案例PduRDestPduRef少写了/Com/前缀工具直接标红。4.4 步骤四Com.arxml信号配置信号级精雕COM配置决定信号能否正确解析Add I-PDUComIPduId ComIPdu_0x201ComIPduDirection RECEIVEComIPduSize 8Add SignalComSignalId EngineSpeedComSignalType UINT16ComSignalInitValue 0Map Signal to I-PDU在ComIPduSignalRef中设ComIPduSignalRef /Com/ComSignal/EngineSpeedComIPduSignalPosition 0起始bitComIPduSignalLength 16Configure TransmissionComIPduGroupRef ComIPduGroup_DefaultComIPduGroupTimePeriod 10msCOM MainFunction周期实操技巧在ComSignal配置中勾选ComSignalUseUpdateBit TRUE则COM会在Data[7]的bit0置1表示数据更新。CANoe可据此过滤无效帧避免应用层处理陈旧数据。4.5 步骤五生成代码与编译让配置活起来Vector工具链生成代码流程Generate Code右键项目→Generate Code工具自动生成Com_Cfg.c、PduR_Cfg.c等配置文件Integrate to Project将生成的.c/.h文件加入IAR/Keil工程确保包含路径正确Compile Flash编译无警告警告常暗示配置隐患烧录到ECU关键检查点查看Com_Cfg.c中Com_Config结构体确认ComIPdu_0x201的ComIPduDirection为COM_RECEIVE查看PduR_Cfg.c中PduR_RoutingPath数组确认PduRSrcPduId和PduRDestPduId值匹配配置注意若编译出现undefined reference to PduR_RxIndication说明PduR模块未启用或配置未生成。检查DAVinci中PduR模块是否勾选Activate。4.6 步骤六CANoe虚拟环境搭建零硬件验证无需真实ECU用CANoe快速验证Create CAN Network新建CANoe配置添加CAN通道设波特率500kbpsImport ARXMLFile→Import→ARXML选择生成的Com.arxml和PduR.arxmlConfigure Decode在Graphics窗口右键信号→Decode using ARXML自动按COM配置解析Send Test Frame用CAPL脚本发送0x201帧Data[0]0x1F, Data[1]0x408000rpm若CANoe正确显示EngineSpeed 8000证明COM/PduR/CanIf链路通畅。若显示Invalid检查CANoe中ARXML导入是否成功Message窗口看警告Data字节顺序是否与COM配置的ByteOrder一致Motorola/IntelCANoe接收滤波器是否放行0x201 ID4.7 步骤七实车问题定位三板斧现场救火指南实车调试时按此顺序排查硬件层确认用示波器测CAN_H/CAN_L波形确认有符合500kbps的差分信号。若无波形查TJA1145供电、MCU CAN引脚配置、终端电阻120Ω驱动层确认在Can Driver中添加调试日志确认CanIf_Transmit()被调用且返回E_OK。若返回E_NOT_OK查Hth是否被占用或Controller未启动协议层确认用CANoe抓帧确认0x201帧是否发出。若发出但ECU收不到查PduR路由若根本没发出查COM的Transmission Mode是否启用或信号未触发经验之谈某次实车CAN通信中断查了两天。最终发现是TJA1145的STB引脚悬空导致收发器随机进入Standby。用万用表测STB电压为浮空态接地后恢复正常。AUTOSAR无法检测此类硬件问题必须回归硬件排查。5. 常见问题与排查技巧实录那些文档里不会写的坑5.1 “CANoe能抓到帧但应用层收不到信号”——PduR路由黑洞现象CANoe显示0x201帧正常收发但Rte_Read_EngineSpeed()始终返回0。排查路径第一步在ECU代码中在PduR_RxIndication()函数入口加LED闪烁或串口打印确认该函数是否被调用。若未调用问题在CanIf层若调用进入第二步第二步在PduR_RxIndication()中打印PduId参数确认是否为预期值如0x201。若为0说明CanIf未正确传递PDU ID第三步检查PduR配置中PduRSrcPduRef是否指向CanIf的RxPdu且PduRDestPduRef是否指向COM的I-PDU。用Vector的“PduR Routing Validation”工具强制验证根因分析90%是PduRSrcPduRef路径错误。例如CanIf.arxml中RxPdu名为CanIfRxPdu_0x201但PduR里写成CanIfRxPdu_201缺0x前缀导致引用解析失败。Vector编译时不报错但生成的PduR_RoutingPath数组为空。速查表检查项正确示例错误示例后果PduRSrcPduRef路径/CanIf/CanIfRxPdu/CanIfRxPdu_0x201/CanIf/CanIfRxPdu_0x201缺前缀路由未生成PduRDestPduRef模块名/Com/ComIPdu/ComIPdu_0x201/Com/ComIPdu_0x201缺ComIPduCOM不识别PduRRoutingTypePDU_ROUTING_TYPE_RECEIVEPDU_ROUTING_TYPE_SEND方向反接收帧被丢弃5.2 “信号值错乱如8000rpm显示为16448”——字节序与缩放因子双杀现象CANoe按ARXML解析显示8000但应用层读取为16448。原理还原16448 0x4040而8000 0x1F40。对比发现高低字节颠倒即Intel小端与Motorola大端混淆。排查步骤在CANoe中关闭ARXML解析用“Raw Data”视图看Data[0:1] 0x1F 0x40若应用层读取为0x4040说明应用层按小端解析而COM按大端打包检查Com.arxml中ComSignalByteOrder应为MOTOROLA大端缩放因子陷阱若EngineSpeed配置ComSignalType UINT16ComSignalScale 0.125则8000rpm存为8000/0.125 64000 0xFA00。若CANoe未按Scale解析会显示64000而非8000。避坑指南所有信号配置后在CANoe中右键信号→Properties→Scaling确认Scale值与ARXML一致在COM配置中ComSignalInitValue必须按Scale后值填写如8000rpm初始值填640005.3 “BSWM下电后CAN总线仍有电流”——收发器睡眠失效现象ECU进入BSWM Sleep ModeCAN_H/CAN_L电压为0V但静态电流达5mA应100μA。根因定位TJA1145未进入Standby模式。验证方法用万用表测TJA1145的STB引脚电压Standby时应为0VGNDNormal时为VCC5V若STB为5V说明Transceiver Driver未执行CanTrcv_SetMode(CANTRCV_MODE_STANDBY)配置检查清单CanTrcv.arxml中CanTrcvMode是否配置CANTRCV_MODE_STANDBYBSWM配置中BswMDefaultRule是否在BSWM_Sleep状态下调用CanTrcv_SetMode()CanTrcv_SetMode()调用前是否已调用CanIf_SetControllerMode(CAN_TSM_OFF)关闭CAN控制器TJA1145要求先关控制器再进Sleep实测数据S32K144 TJA1145组合正确进入Standby后静态电流为85μA若STB悬空电流升至3.2mA。5.4 “CANoe并发测试失败多个界面无法同时收发”——资源竞争与License限制现象启动第二个CANoe实例报错“CANoe COM interface initialization failed”。真相Vector CANoe的COM接口用于自动化控制默认只允许单实例。解决方案方案1推荐用CANoe的“Multi-Client”模式。在Options→System Options→General中勾选“Allow multiple CANoe instances”方案2改用XCP协议通信而非COM接口。XCP基于CAN总线无实例限制方案3购买Vector的“CANoe Multi-User License”支持最多10个并发实例注意搜索“canoe com启动多个canoe界面并发测试”时很多方案建议修改注册表但Vector官方明确反对可能导致License失效。5.5 “Error: 404 -- Not Found /notsupported.asp”——Vector工具链的HTTP陷阱现象DAVinci Configurator Pro中点击Help或在线更新弹出404错误URL含/notsupported.asp。本质Vector服务器已下线旧版帮助文档但工具仍尝试访问。临时解决
上一篇/下一篇内容由系统自动关联 返回资讯列表 →