- 博客(56)
- 收藏
- 关注
原创 LIN校验和:数据完整性的最后防线
校验方法:翻转八位和。将校验对象的各字节作带进位二进制加法(每当结果大于等于 256 时就减去 255。一个字节8位,最多表示0到256),并将所得最终的和逐位取反,以该结果作为要发送的校验和。接收方根据校验和类型,对接收数据作相同的带进位二进制加法,最终的和不取反,并将该和与接收到的校验和作加法,如果结果为 0xFF,则校验和无误。在12V供电环境下,LIN总线(Local Interconnect Network)采用单线传输,速率最高20kbps。
2025-03-11 07:28:38
366
原创 LIN从节点:唤醒故障排查
当测试一个LIN从节点控制器时,在运行CANoe时Trace上出现如下图错误帧,显示TransError(Slave not responding),即从节点没有被成功唤醒。本文将列举一些常规的排查分析方法供参考。
2025-03-11 07:27:31
379
原创 实车环境下的AUTOSAR网络管理测试
在AUTOSAR网络管理专栏之前的文章中,我们介绍了AUTOSAR网络管理的基础知识。将三种模式、三种状态之间的流转关系梳理完后,对于部件级AUTOSAR NM测试脚本的开发可以据此进行,如果大家感兴趣的话后续可以出文章来展开聊聊部件级NM测试脚本如何开发。本文想聊一聊实车环境下如何进行AUTOSAR NM测试。
2025-02-21 07:35:59
371
原创 LIN同步间隔段-长度上限测试
在LIN帧结构中,我们都知道作为帧头起始的同步间隔段break field至少持续13位显性电平,在帧结构的图片中一般都标注着同步间隔段≥13位。那么同步间隔段的长度上限又是多少呢?长度上限又是怎么得来的呢?
2025-02-21 07:32:45
627
原创 【CAPL实战】实现弹窗提示及操作
在使用CANoe进行车载通信测试的过程中,可能因为一些条件限制,我们需要在测试执行的过程中去观察一些硬件显示或者调整相关硬件状态。比如测试过程中,需要手动去调整小电源的电压、手动进行控制器故障注入(CANH、CANL断开)。如果有一个弹窗提示我们去手动操作,操作完成后再进行脚本执行,对测试结果准确性和效率都有促进作用,这就是本文弹窗提示函数的功能所在。
2025-02-08 22:47:54
315
原创 【CAPL实战】LIN调度表操作
在LIN调度表Schedule Table文章中,详细介绍了LIN调度表的信息,那么如何在CAPL脚本测试中进行LIN调度表的操作呢?
2025-02-08 22:45:24
1012
原创 LIN协议历史和版本兼容性
随着汽车上的ECU越来越多,电气架构越来越复杂,如果都是CAN双绞线网络的话,线束的重量和成本都会上升,会影响汽车的质量和品质。所以有些外围ECU对于通信时延、速率及可靠性要求不高的,就引入了LIN网络。LIN联盟成立于1998年(Benz、BMW、Volvo、Audi、Volkswagen五家车企联合发起),并发布了LIN1.0版本,经过更新迭代直到现在的ISO17987。以下内容参考翻译自ISO 17987-3:2016附录B-LIN history and version compatibility。
2025-02-07 18:35:31
565
原创 巧用DeepSeek,编写CAPL自动化测试脚本
蛇年伊始,火出圈的除了《哪吒2》登顶中国影史票房第一外,科技圈的DeepSeek国产大模型引爆全球,关于在DeepSeek上的提问无奇不有。就车载通信自动化测试,本文也来蹭蹭热度。作为CAN/LIN协议一致性自动化测试脚本的开发调试人员之一,比较好奇DeepSeek能不能帮助我们进行协议一致性测试脚本的开发及脚本可用性。
2025-02-07 18:10:51
1315
原创 LIN从节点诊断服务列表(含测试log分析)
在LIN专栏前面的文章中详细介绍了LIN协议的诊断测试(附CAPL自动化代码)把LIN主节点的诊断测试、基于0x3C和0x3D的从节点诊断测试都进行了CAPL代码和实际测试的结果分析;并在LIN诊断帧结构与仿真详解文章中介绍了0x3C和0x3D诊断报文的详细字节信息,并在测试实战中列举0xB6保存配置服务来分析报文信息。对于0xB6保存配置服务没有展开说明,本文将全面介绍LIN从节点诊断服务列表。该小节内容翻译自ISO 17987-2LIN传输协议与网络层服务。
2024-12-30 07:17:56
1034
原创 LIN调度表Schedule Table
从下图LDF文件中的调度表来进一步说明,发送时隙slot是delay时间(个人理解),左上角Table指代下箭头的调度表、Slot指代右箭头的发送时隙的具体内容,包括帧类型Type、Delay等信息。当修改delay时间小于Max Frame Time时LDF会警告提示如下图,此时隙如果在Jitter时间较长时可能会导致一帧报文发送失败,所以提示是should。当修改delay时间小于Min Frame Time时LDF会警告提示如下图,此时隙已经不能满足一帧报文的成功发送,所以提示是must。
2024-12-26 19:46:44
1779
原创 LIN状态管理
在LIN专栏的文章中,我们介绍了LIN网络管理:休眠&唤醒测对了吗一文搞懂LIN节点的State Machine状态机测试还不太清楚这些内容的可以看之前的文章,本文主要介绍LIN的状态管理。
2024-12-06 17:45:34
886
原创 CAPL自动化脚本调用PicoScope
在前面的文章中PicoScope在CANoe中的使用教程介绍了PicoScope在CANoe中的调用,能够满足手动测试去观测报文波形;本文将主要介绍如何通过CAPL脚本的方式实现PicoScope的调用,并对采集到的波形结果进行计算分析来满足自动化测试的需要。在CAN/LIN物理层关于显隐性电平、斜率、占空比等测试中能够实现自动化,提高测试效率。
2024-12-04 19:16:49
524
原创 PicoScope在CANoe中的使用教程
PicoScope是由英国Pico Tech公司生产的一款用于数字示波器、频谱分析仪以及信号发生器(某些型号支持)和逻辑分析仪的设备。它可以配合PicoScope软件进行波形采集,软件可以在官方网站上进行下载Picoscope官网。PicoScope的硬件组成如下图,通过USB线缆连接电脑和pico示波器,电源用来给PicoScope供电。这里需要注意PicoScope型号与USB线缆类型的适配性,来具体选择USB2.0、USB2.0双头还是USB3.0线缆。
2024-11-26 20:04:26
1280
原创 AUTOSAR网络管理中的主动唤醒与被动唤醒
以下图空调功能为例,当二氧化碳浓度传感器(主动唤醒源)检测到车内二氧化碳浓度超标后,就会触发空调放大器ECU(主动唤醒节点)主动唤醒,空调放大器ECU通过发送NM网络管理报文(被动唤醒源)去唤醒相关功能连接的ECU和执行器(被动唤醒节点)。原因在于:主动唤醒节点需要快发NM报文唤醒其他ECU节点来与其进行通信,如果先发APP报文,其他的ECU节点处于休眠状态,不会对其发送的APP报文做出响应。对于被动唤醒的节点,发送网络管理NM报文和APP应用报文的先后顺序没有特别要求。
2024-11-21 19:42:11
871
原创 PN、VFC、PNC局部网络管理
在AUTOSAR中通过NM网络管理(Network Management)来协调网络正常通信和睡眠模式的转换以实现ECU的休眠和唤醒,能够节约电能、提高续航。PN(Partial Networking)局部网络管理,是通过保留需要工作的ECU、关闭不需要工作的ECU,分组控制来实现更为精细化的网络管理。传统的网络管理如下图,对于CAN1网段来说,当发送NM报文进行唤醒时,整个网段上的全部节点ECU A、B、C、D、E接收到NM报文后均被唤醒。
2024-11-20 18:33:43
2343
原创 AUTOSAR NM网络管理基础
为了支持休眠和唤醒,ECU的芯片必须支持低功耗模式和正常工作模式的切换。低功耗模式(ECU睡眠)指一个ECU断电或者处于极少数的外围器件工作的模式;唤醒指的是ECU处于全工作模式。在部件级控制器网络管理测试中,掌握上述内容对于网络管理测试用例的理解会更深入。实际测试中需要关注的是项目本身CBV位的定义内容,特别是在测试三模式三状态转换过程中CBV位对应Bit的0-1变化情况;注意区分被动唤醒节点和主动唤醒节点在网络管理中的区别;关注各种定时器的时间多少要求,便于更明确测试结果的可靠性及自动化脚本的合理编写。
2024-11-18 19:04:50
1382
原创 E2E、CRC、Checksum、Rollingcounter
在专栏文章仿真CAN报文发送的CRC校验算法(附CAPL代码)和同星TSMaster中如何自定义E2E校验算法中分别给出了CRC算法和E2E校验实现,从中也明白了为什么在测试中需要去做这些仿真。在车载网络测试中经常会出现CRC、E2E、checksum、rollcounter这几个词,这篇文章想搞清楚这几个概念具体的含义及用途。在车载网络测试中,E2E校验更注重端到端也就是ECU到ECU的完整性校验;CRC则注重于报文的错误检测;Checksum注重于报文数据段的完整性保护;
2024-11-14 18:10:00
3619
原创 【CAPL实战】LIN位时间与时间的相互转换
LIN的位时间与绝对时间的相互转换,在测试LIN帧长度、测试LIN同步间隔段、同步界定符长度等测试内容上具有非常重要的作用。
2024-11-11 19:43:25
415
原创 彻底理解ARXML中的PDU
PDU(Protocol Data Unit),即协议数据单元,是SDU和PCI的组成。在AUTOSAR_EXP_LayeredSoftwareArchitecture文档中有对应的解读。SDU:Service Data Unit,服务数据单元。是由上层传递的数据,带有传输数据的请求,可以理解为CAN数据帧报文中的数据域。PCI:Protocol Control Information,协议控制信息。将SDU从特定协议层的一个实例传输到另一个实例时需要的信息,比如源与目的信息。
2024-11-09 12:34:28
2188
原创 CAN和CANFD的不同点
专栏,介绍完CAN和CANFD基础后,或许都想了解一下两者间到底有哪些区别呢?当然有区别啊,名称不一样哈哈哈哈哈哈。不废话,直接表格对比大法!关于CAN和CANFD总线的基础知识可以阅读。
2024-11-08 18:51:04
243
原创 一文了解CANFD基础
在2012到2015年之间,已经开发了不少CANFD产品在市面上应用,属于非ISO标准的CANFD产品,但是又无法被完全召回,因此把这一部分的产品称为NON-ISO CANFD控制器。CANFD帧由帧起始SOF,ID仲裁段,控制段,数据域,CRC域,ACK域,帧结束,共七个部分组成。而数据段结束仲裁,总线上只有一个节点在发送数据,传输速率可以切换到一个较高的值,CANFD使用更大的数据场来提高传输效率,取消了远程帧。从上面的帧结构来看,CANFD报文在CRC前和CRC段采用不同的位填充机制。
2024-11-06 19:16:18
1069
原创 【CAPL实战】LIN帧干扰的脚本实现
使用一个新的header帧头来干扰指定的response响应。使用一个新的header帧头来干扰下一个的header帧头。:如果执行成功,返回不等于0;:如果执行成功,返回不等于0;
2024-11-04 18:15:45
584
原创 CAN报文:位定时和位同步
文章目录1、什么是位同步2、帧同步3、位组成4、采样点5、同步规则6、硬同步7、重同步8、测试实例1、什么是位同步位同步(比特同步)是指为了将发送端发送的每一个比特都能够被接收端准确地接收,接收端时钟调整到和发送端时钟彻底相同。这就需要在准确的时刻(即在一个bit位的中间位置)对收到的电平根据事先约定好的规则进行判断,满足什么条件为1,满足什么条件为0。由于CAN通信采用异步串行的方式,没有时钟线,所以需要进行位同步。2、帧同步对于发送端发过来的比特流,我们仅仅通过位同步把每个位正确读出来是还不够
2024-10-31 19:11:21
1367
2
原创 CAN总线物理层&基础特性
2、CAN采用双绞线进行通信,主要目的是抗干扰(在一对双绞线中信号电流方向相反,产生的磁场可以相互抵消,加上屏蔽层并正确接地就可以实现电磁兼容)。在如下图双绞线,一般默认黄高绿低。1、CAN的物理层结构如下图所示,主要由微控制器、CAN控制器、CAN收发器组成,通过将报文转换为逻辑电平再转换为在CAN双绞线上传输的电信号。:CAN-H的对地电压为3.5V,CAN-L的对地电压为1.5V,电压差为2V,数字信号用0来表示1。:CAN-H和CAN-L的对地电压均为2.5V,电压差为0V,数字信号用1来表示。
2024-10-30 07:55:43
526
原创 如何入门车载网络测试_以Vector工具链为例
不卖课、非推广,仅仅是分享,不喜勿喷哈哈哈哈哈。主要针对小白基础入门,大佬们可以划走啦~车载网络测试能做的方向很多,例如:协议一致性测试、功能测试、诊断服务测试、刷写测试、OTA测试等等。本文不针对于某一细分方向做介绍,以Vector工具链为例,来介绍一下作为新手如何快速入门车载网络测试,列举出从基础学习到脚本开发的整体框架,希望能够帮助大家理清思路,循序渐进的了解车载网络测试。
2024-10-29 19:01:45
1381
原创 LIN从节点:LIN帧各段错误故障测试(含CAPL代码)
LIN帧各段的错误故障测试,如下图主要是针对LIN帧结构的同步间隔段、同步段、标识符ID段、数据段、校验和段分别进行干扰,看Trace上是否会出现错误帧,并且下一帧正常报文应答中ResponseError信号标志位是否置为1。VN1611用不了,VN1630、VN1640、VN1670都可以。
2024-10-28 19:18:42
890
原创 CAN错误帧类型与发送过程
但是要说明的是:当一个节点连续检测到多个错误,进入到被动错误模式时,此时很有可能是此节点出了问题或者受到干扰,这个时候这个节点检测出的错误可能已经不被信任,所以处于被动错误模式的节点发出的错误帧是14个隐性位,可以被正常报文或正常的错误帧覆盖掉。发送节点发送0,总线上却是1,此时发送节点检测到位错误,开始发送主动错误标志(6个连续显性位);发送完主动错误标志后,接收节点和总线此时都检测到位填充错误(5个连续相同极性位后填充一个极性相反位),接收节点和总线开始发送主动错误帧。
2024-10-27 12:18:09
614
原创 CAN帧类型
对于主动错误节点,帧空间由3个显性位的间歇字段和总线空闲组成。主要用于在先行的和后续的数据帧(或远程帧)之间提供的一段附加的延时,避免总线负载率过高。超载帧由6个连续显性位组成,它破坏了帧间空间3位固定隐性位。远程帧,又称遥控帧,是一种由总线单元发出,向其他节点请求发送具有同一标识符的数据帧。数据帧,顾名思义就是将数据从发送器传送到接收器的CAN帧报文,其中又细分为标准帧和扩展帧。超载帧,又称过载帧,作用: 接收单元通知它未准备好接收的帧。在挂起传输阶段被动错误节点不可以发送数据帧与远程帧。
2024-10-24 19:21:10
496
原创 LIN从节点:识别帧头各场长度测试
这部分的测试内容主要是改变从节点识别下图中同步间隔场显性电平长度范围、同步界定符长度以及接收帧头长度范围的测试,接收帧头长度的改变主要通过字节间隔来控制。列举出部分测试用例如下表,通过仿真实现不同的同步间隔段、同步界定符和字节间隔的长度来实现该部分的测试。测试结果由于trace上没有错误帧或其他表征,需要配合scope数据来监控各场长度变化及测试正确执行。同步间隔场显性电平长度范围、识别同步界定符长度主要利用。linSetBreakLength()函数。linSetBreakLength()函数。
2024-10-18 18:12:51
638
原创 LIN从节点:波特率测试
调节波特率的变化,使主节点同步场位速率变化,验证从节点能否通过同步段进行调节自身位速率。对应ISO17987协议。主要利用linSetBaudrate()函数在测试期间实现波特率改变。配以scope波形的response时间也能说明问题,波特率越大,应答时间越短。trace中有波特率的数据表示,能够看到调节前后的变化;
2024-10-17 22:59:27
790
原创 LIN帧长度(详细图解)
说到LIN帧长度,都看过下图这张最小帧长度、最大帧长度的图表公式,本文来详细介绍一下相关数据是怎么来的。关于各段字节为什么是10bit,涉及到字节域的概念。相关详细内容可以移步LIN总线:帧结构详解。
2024-10-16 17:45:14
682
原创 LIN诊断帧结构与仿真详解
2、仿真发送0x3C后,不能立刻仿真发送0x3D帧头,需要等待100ms,否则会出现错误帧。LIN诊断帧分为主机请求帧0x3C和从机应答帧0x3D,两者数据场固定为8个字节,都采用标准型校验和。0x3D之所以是Tx发送的,是因为帧头由仿真主节点发送。如上图,诊断数据byte0为NAD节点地址,具体NAD是多少可以在LDF文件中看到,位置如下图。1、主机请求帧应答部分的发布节点是主机节点;从机应答帧应答部分的发布节点是从机节点。从节点诊断应答数据内容:50 01 00 32 01 F4,肯定响应50 01。
2024-10-15 19:45:07
1572
原创 CANoe的数据回放功能
CANoe(CAN open environment): 用于汽车ECU网络仿真、数据分析、测试和诊断,还可以进行数据回放、程序刷写等。具有实时报文跟踪、数据解析及匹配、信号可视化分析、总线数据统计、自定义面板开发、扩展编程应用等功能。分析仿真测试诊断关于数据回放功能的实现上,CANoe提供的两种方式。
2024-10-12 12:32:45
1027
原创 CAN总线仲裁机制
CAN总线上的每个节点都能监测到总线上发送的数据,当总线空闲时每个节点都能够进行报文发送,多个节点同时发送报文时,最终由哪个节点来进行发送是仲裁机制的来源。
2024-10-11 18:29:17
1250
原创 CAN总线的错误类型
只能由发送节点检测出来的是位错误、ACK错误。只能由接收节点检测出来的是CRC错误。发送节点/接收节点都能检测出来的是填充错误和格式错误。这些对于在实际测试过程中分析错误帧出现的原因有一定理论支撑。
2024-09-30 16:07:28
564
原创 为什么LIN的最大传输速率为20kbps?
从下面的波形示意图可以看出,单位时间内数据速率高的蓝色波形传输的信息更多,它的转换速率更快,而红色波形传输速度较慢,转换速率也较慢。转换速率也叫压摆率,压摆率越大,意味着工作电流越大,电磁干扰强度也越大,也就是会产生更多的谐波成分影响报文传输的正确性。因此LIN报文的最大传输速率限制为20kbps,为的是限制EMI电磁干扰强度来进行不差错的报文通信,保障通信质量。限制EMC的强度,LIN协议最大传输速率为20kbps的主要原因是。
2024-09-23 19:05:03
534
原创 【CAPL实战】system variables系统变量的基础与应用
在CANoe系统中,变量可以用来对内部参数进行建模。系统变量既不描述节点的外部输入/输出信号,也不用于真实节点间的信号通信。系统变量用于开发和测试,提供改变和分析内部变量和参数的机会。通过还可以表示未在数据库中定义的IO信号。(摘自Vector Help)在Vector Help中详细描述了在CANoe中对系统变量的操作,在CANoe-Environment-system variables弹窗中可以对系统变量进行增删改查等操作。
2024-09-21 11:09:00
773
原创 【CAPL实战】解决调用LIN函数不生效问题
被测样件为LIN节点,进行LIN唤醒测试。添加LDF文件后,在vTESTstudio中编写CAPL自动化脚本通过调用LINwakeup()函数来实现唤醒测试。测试结果是唤醒不成功,通过示波器观测发现并没有唤醒脉冲发出,也就是说调用LINwakeup()函数没有生效?
2024-09-11 18:15:01
522
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人