tag 标签: Lin

相关帖子
相关博文
  • 热度 1
    2024-6-28 13:38
    154 次阅读|
    0 个评论
    来源:虹科技术丨Linux环境再升级:PLIN驱动程序正式发布 原文链接:https://mp.weixin.qq.com/s/N4zmkYXTPr7xm-h2s7QiLw 欢迎关注虹科,为您提供最新资讯! #PLIN #LIN #LIN接口 导读 Linux驱动程序领域再添新成员,PLIN驱动程序现已正式发布。这一新驱动程序为使用LIN接口的用户提供了一个便捷、高效的解决方案。本文将展示如何安装PLIN驱动程序,以及如何在Linux环境下进行基本的PLIN通信操作,确保您能够快速掌握并应用这一新工具。 继我们在Linux环境下成功推出CAN/CAN FD接口驱动程序后,现在我们为LIN接口带来了同样兼容Linux的驱动程序。免费软件包中不仅包含了驱动程序本身,还提供实用工具和一份易于理解的快速入门指南。用户下载后,需要根据当前使用的Linux内核版本进行驱动程序的编译和安装。安装完成后,只需将虹科PEAK-System的LIN接口设备连接到计算机,驱动程序便会自动加载并开始工作。 当前发布的1.3.0版本,全面兼容虹科PEAK-System的LIN接口设备,包括虹科PLIN-USB、虹科PCAN-USB Pro FD和虹科PCAN-USB Pro。这一更新确保了用户能够享受到广泛的设备兼容性和便捷的使用体验。 PLIN驱动安装指导 驱动下载链接:https://www.peak-system.com/quick/PLIN-Linux-Driver Linux环境PLIN的基本使用 在Linux环境下,使用PLIN驱动进行LIN通信的基本操作可以通过以下步骤实现,这里以双通道PLIN进行主从节点的收发测试为例: PLIN通道顺序识别 结语 随着PLIN驱动程序的推出,虹科为用户提供了更加完善的Linux环境下的通信解决方案。我们致力于简化开发流程,提升用户体验。 作者简介:李江,虹科智能互联技术工程师,深入CAN/LIN总线技术领域,提供专业的二次开发服务。
  • 热度 10
    2022-12-30 10:04
    1031 次阅读|
    0 个评论
    汽车电子电器技术飞速发展,无论是车上的 ECU 还是执行器和零部件等,采用 CAN 、 LIN 等协议的总线控制形式的设备数量越来越多,汽车零部件的测试验证的需求也在不断上升。零部件供应商 的 对于生产出来的零部件的测试验证方法各不相同,想要提升测试效率以及简化测试流程是否有更好的解决方案呢? 零部件测试简介: 零部件的验证 试验 是汽车零部件开发流程中重要的一个节点,汽车零部件的验证 试验分为DV和PV,DV是Design Verification设计验证,此时可以是手工件或者模具件。PV是Product Verification产品验证,必须是模具件,并从供应商的量产生产线上做出来的零件。PV之后的零件再完成PPAP审核,就具备了量产供货资格了。 测试要求一般是通过对产品的需求分解而来,这个在整车和部件上都是通用的,这里的需求包含了对市场的预期、国家的法律法规,用户的需求等等。 整车方面,中国有针对乘用车的强制检验标准,大概40余项,对于可以在市场售卖的车辆而言,这些试验是必须通过的。个别厂商也会对产品做一些其他要求,比方说噪音,振动等,所以这些实验也不可避免。 对于进行零部件大批量的 PV 验证测试来说,想要在不同使用环境或者场景中实现对零部件进行控制,除了传统的手动控制测试和高成本的集成台架测试之外,能否有一个更简单更经济的方法实现呢? 同时面对大量的重复性测试,如何能够缩减测试时间提升效率 呢? 案例介绍 案例需求: PV验证实验中对球形阀被测样件(组)实现自动化控制。 验证的目的: 测试汽车零部件产品的耐久性、稳定性、可靠性等参数。 验证的途径: 在不同环境下操作样件的长时间动作,以达到测试稳定性等性能要求。 样件总线: 被测球形阀的总线为LIN协议。 需要实现对球形阀样件(组)控制的同时,控制方式更加简单且容易上手操作。 本案例比较有代表性,与本案例类似的以LIN总线或其他类型总线为基础控制的小型执行器样件的PV验证测试,如电磁阀、电机、泵体等都可以适用。 图 1 LIN 总线 PV 测试的网络拓扑 图 1 为 LIN 总线 PV 测试的网络拓扑 , LIN 总线为一主多从 的 节点分布 ,因此 PV 测试样件都是作为从节点参与 LIN 网络 通信 网络 。 图 2 PV 测试的 部分通信信号 图2为本案例中LIN总线协议下的阀体PV测试中的部分通信信号。 对于不同的PV验证对象,也可以实现对于泵体,电机,继电器等控件实现控制和动作等,根据不同的硬件功能,所发送的具体信号也会有差异。 传统解决方案: 传统方式一般通过手动操作外部触发或者借助相关测试台架控制被测单件等方式实现。 客户原来的操作方式为CANoe加载数据库文件进行手动调节信号操作,控制阀体动作。 对于多个样件同时长时间测试过程中,手动操作过于繁琐且时间成本较高。 北汇解决方案 北汇对于汽车电子电器产品验证过程中对于样件控制的方式: 基于CANoe作为上位机控制软件,以VN1640A作为通讯接口卡,和样件(组)进行通讯。 设备的通讯协议为LIN总线,被测件作为slave节点,对上位机master节点的信息进行响应和动作。 以CANoe的Panel面板为交互的主要窗口,实现对被测样件(组)进行控制。 图 3 北汇信息对样件控制的方式 可控制单件执行操作,也可控制一组中的多个单件组合进行操作。 结合脚本实现样件(组)按照测试规范进行周期动作、间歇动作、线性动作等。 配合交互界面控件等工具实现被测件状态和信息回读。 客户具体案例: 对LIN总线的阀体(组)控制周期动作,并可自动循环测试,以面板形式实现控制。 图 4 为 节点信号控制面板 北汇针对客户需求开发了如下的控制工程: 交互界面: 图 5 为 控制工程面板 界面中以单件为单位,可以对于单件的动作进行独立控制。 多个单件组成整个的控制组,在顶部有文本栏对操作的内容进行提示等。 图 6 为单件控制区 每个单件的控制功能集成了单件的默认状态,测试开始状态,测试循环次数以及循环状态中的状态时长。 使用者可以根据每个样件的情况,单独设定参数并控制单件的测试开始 于 与 停止。 同时根据控制器的一些反馈报文或 I/O 值等,可通过 CANoe 加载数据库文件等方式实现一些反馈值的解析,如控制器当前的温度,电压等参数。可将数据集成在面板中进行读取和参考。 CANoe环境和脚本: 除了交互界面外,CANoe想要实现对目标阀体的控制还需要我们编辑变量和脚本。 交互界面的实质是对于我们CANoe软件环境中的变量进行控制,将变量通过脚本处理以报文的形式通过总线发送到我们的被测阀体,实现阀体动作。 可以根据不同的样件参数设定不同的CANoe系统变量,并和交互界面控件关联。比如测试的开始停止,动作时长的设定等,都以变量的形式进入CANoe系统环境。 CANoe中的脚本为CAPL语言,是一种面向事件的类C语言,在脚本中可以编写控制报文,报文发送周期,数据回读处理等相关功能语句。在CANoe系统中的变量也是CAPL脚本的处理对象,可以针对输入系统中的数值进行运算和处理。 图 7 CANoe simulation 标签 变量和仿真窗口 图 8 CANoe 脚本编辑界面 解决方案优势: 使用图形化交互界面和控件,简化控制流程。 基于CANoe开发,并可通过CANoe平台实现其他功能,如:观测总线通讯状态,控制过程的记录和回放,被测件状态信息回读等。 可实现自定义控制逻辑,扩展性更高。 总结: 无论是测试阀体、泵体、电机单个零部件还是其他电子电器零部件组,无论是LIN总线零部件还是CAN总线或其他总线形式通讯的零部件,大批量大规模的测试更多需要的是自动化的控制和测试方式去节省人工和节约测试时间。 以CANoe为平台开发的控制工程以图形化的界面和简介的操控方式能够大大提高测试效率,并且依靠CANoe软件本身的功能实现测试以外如数据分析记录、样件仿真、诊断等更多功能的扩展。 北汇信息可以根据客户的实际需求定制开发相关控制工程,以及提供对设备的调试和培训等定制化服务。协助客户更快更高效完成产品PV的验证工作。
  • 热度 11
    2022-11-29 11:11
    1942 次阅读|
    0 个评论
    测试开发实践系列:为支持全车OTA的LIN诊断刷写
    1.前言 随着现代汽车逐渐向 电 动 化、网联化、智能化 和共享化方向发展,对于部分LIN控制器,也开始被要求支持刷写,以实现在线刷写或者远程更新,满足全车OTA的要求。 相较于CAN、FlexRay及Ethernet等其他车载网络,LIN是一种低成本的串行通信总线,它主要用于车内传感器和执行器的通信场合,例如车内门锁控制、座椅调节、灯光照明,车窗控制等。LIN2.0以及之后的规范(LIN2.1,ISO17987)定义了如何在数据链路层之上实现诊断的功能,本文将 基于LIN2.1的诊断刷写测试开发和实践进行分享 。 2.LIN通信协议 为了更好地介绍诊断服务的实现,我们首先来了解一下LIN的网络拓扑以及报文结构。 (1)LIN拓扑结构 LIN总线采用的是单线传输形式。一个LIN网络通常由一个主节点和多个从节点组成,LIN网段经常作为子网与上层网络(CAN、FlexRay、Ethernet)相连,此时主节点通常用来充当网关。下图为典型的车载LIN网络,由于物理层的限制,一个LIN网络最多可以连接16个节点。 图1 LIN网络拓扑结构 (2)LIN报文结构 LIN报文由帧头和响应两部分组成。LIN的帧头包含同步间隔场、同步场、PID(受保护ID)场;响应部分包含数据场和校验场,具体结构如下图所示。LIN报文的ID范围为0x0-0x3F,其中0x0-0x3B用来携带信号,0x3C和0x3D作为诊断和配置帧,0x3E和0x3F作为保留帧以便未来扩展。 图2 LIN报文结构 3.LIN 传输层协议 LIN2.1中规定了传输层和网络层协议(本文不做区分,统称传输层协议)。LIN传输层主要用于需要支持诊断的LIN子网系统。 (1)PDU结构 PDU包含节点地址(NAD)、协议控制信息(PCI),长度(LEN)、服务ID(SID),应答服务ID(RSID)和消息字段(D1-D6),如下图所示。 图3 LIN传输层的PDU结构 NAD NAD用于表示诊断请求中LIN从节点的地址,位于PDU的第一个字节。NAD的值在1-127的范围内,其中0和128到255保留用于其他目的。下表给出了不同NAD值的用途。 PCI PDU的第二个字节是PCI(协议控制信息)字节,包含PDU的单元类型和报文字节长度信息。 单帧(SF)最多包含五个数据字节,附加信息Length等于SID加上数据字节(D1-…)的长度。示例如下图所示。 图4 SF 示例 首帧(FF)用于表示多帧PDU的开始,附加信息表示多帧PDU的长度的高4位,PDU长度的低8位在LEN中表示,因此,多帧PDU能表示的最大报文长度为4095(0xFFF)。 续帧中的附加信息用来表示续帧的编号,第一个续帧的编号为1,之后每个续帧加1,如果续帧编号大于15,那么下一个续帧的编号置0。多帧报文的传输如下图所示。 图5 FF与CF示例 SID与RSID SID(Service Identifier)表示诊断请求服务ID。RSID(Response Service Identifier)表示诊断响应服务ID。RSID=SID+0x40。 D1-D6 数据字节(在单个PDU中最多有6个字节)的解析取决于报文的长度。 如果PDU未完全填充(仅适用于CF和SF PDU),则未使用的字节使用0xFF填充。 (2)报文发送 单帧报文发送 报文长度小于6个字节(包含SID)应使用单帧PDU进行传输。 功能寻址报文只能使用单帧传输。 多帧报文发送 报文长度大于6(包含SID)的报文使用多帧PDU进行传输,最大可传输4095字节的报文。 分段传输包含一个首帧PDU(FF)和多个连续帧PDU(CF)。 4.LIN诊断 LIN诊断定义了在主节点和从节点之间实现诊断数据传输的方法。 (1)LIN Master 主节点和诊断测试仪通过主干网(例如CAN)连接。主节点从Tester接收到寻址到从节点的诊断请求,将其路由到相应的LIN从节点。同样,从节点的响应也通过主节点返回给Tester。下图定义了主节点的诊断路由(其中LIN主节点和从节点之间的通信,虚线代表报头,实线代表响应场)。 图6 LIN 主节点诊断路由 (2)LIN Slave LIN诊断为从节点定义了三个诊断类型:I类,II类,III类,等级越高,支持的功能越多。 I类节点支持Node Configuration功能和基于信号的诊断;II类节点在此基础上支持 ISO 14229-1定义的22服务和2E服务 ;III类节点还可以支持IS0 14229-1定义的其他服务(该部分服务可视主机厂的需求而定),部分III类节点还支持刷写的功能。诊断等级的关系如下图所示。 图7 诊断等级关联图 5.LIN诊断刷写测试实践 对于支持刷写的LIN从节点,该网段上LIN主节点应具有诊断路由功能,且满足LIN 传输协议的需求。为了验证LIN网段是否满足设计需求,需要进行以下测试: 1.LIN Master TP测试; 2.LIN Slave TP 测试; 3.LIN 诊断服务测试; 4.LIN刷写测试; 5. X-LIN 网关测试:上层网络与LIN总线之间的路由(网关性能测试,此处不做探讨); (1)LIN诊断刷写测试开发 北汇信息基于Vector CANoe软件,采用 CAPL编程实现了TP、诊断服务和刷写 的自动化测试 。 图8 LIN Master TP测试工程 图9 LIN Slave TP测试工程 图10 LIN诊断服务测试工程 图11 LIN刷写测试工程 6.总结 北汇信息多年来一直专注于汽车电子测试,在网络测试、诊断测试和功能测试领域 积累了丰富的经验。目前,在诊断测试方向,我们已实现了CAN、CAN FD、LIN、FlexRay和Ethernet的 诊断刷写 自动化测 试方案。北汇信息愿与各位共同进步,分析价值。 参考文献 ISO 14229-1 -2013 LIN Specification Package Revision 2.1
  • 热度 14
    2022-11-22 10:20
    1581 次阅读|
    0 个评论
    上期 LIN测试小课堂,我们分享了LIN总线 帧 结构及各场干扰,如何测试样件是否不响应错误的帧结构: LIN总线帧结构及各场干扰-面包板社区 (eet-china.com) 。 这次我们 的 介绍主题是LIN休眠唤醒,一起看看标准和差异性,开发和测试的关系,实际的案例分享也来了。 一、 LIN 控制器休眠唤醒类型介绍 虽新架构的发展促进着通信技术的升级换代,但作为车载通信技术的常青树之一的LIN通信,由于其自身的特点,将会继续发光发热。其中LIN的休眠唤醒作为整车休眠唤醒的重要组成部分,需引起开发和测试工程师足够的重视。本文将介绍此方面的内容, L IN 总线是主从结构,下面将从 LIN 主 / 从节点分别展开。 1 、主节点休眠唤醒 节点的唤醒条件在 L IN 协议 2 .1 规范中定义的是被唤醒信号唤醒,但是实际应用 O EM 多是依据自己的需求进行开发的 。 常见的几种唤醒方式如下: 硬线唤醒(硬线唤醒源实质就是定义唤醒线的电平变化,如传统车的 KL15 上电) 网络唤醒(网络唤醒即是网络管理报文唤醒,此处网络管理 报文指 的是 L IN 的上层网络总线 (CAN/ F lex R ay ),LIN 本身不存在网络管理报文,上层网络唤醒伴随 L IN 网络唤醒) 特定信号唤醒(例:车辆使用模式信号为特定值 时 L IN 网络才能唤醒) LIN Specification Rev 2.1en 规范描述在主节点不 发送帧头时 ,从节点应发送唤醒信号来唤醒主节点 。 这种唤醒必须满足两个条件: 从节点必须支持发送唤醒信号 主节点能够被唤醒信号唤醒 但是实际 测试中发现, 从节点一般不支持发送唤醒信号唤醒(实车测试遇到过网络唤醒休眠异常情况,排查发现为从节点阳光雨量控制器不断发送唤醒信号 导致的,即取消了该控制器能发送唤醒信号的功能) 。 随着局部网络唤醒的应用,主节点唤醒方式大多为网络唤醒, L IN 网络做成与上层网络 同睡同醒的 机制 。 主节点休眠的最终表现形式都是发送睡眠指令,当然休眠与唤醒本就是强关联,且主节点的唤醒休 眠条件多是依据 OEM 自身需求而定,我们就不进行展开了。 2. 从节点休眠唤醒 从节点的唤醒条件同样为接收到唤醒信号, L IN 协议 2 .1 规范中描述从节点唤醒条件可能为接收到主节点发送同步间隔场,这是 L IN 通信机制的缘故,从节点进行通信必须接收到主节点发送的 帧头才能 发送从节点响应部分, 而帧头 可以充当唤醒信号,从节点在接收到唤醒信号完成初始化后即可正常通信。 LIN Specification Rev 2.1en 规范描述从节点的两种休眠条件如下: 接收到睡眠指令 总线空闲 4 -10S 正是由于从节点需求的通用性,我们才能总结出各 零部件供应商 的实现差异点,沉淀测试经验来优化我们的测试。其中从节点最典型的测试就是休眠唤醒遍历测试,下文将对此进行详细展开。 二、 休眠唤醒测试 案例分享 案例 1 :连续仿真发送从节点响应的某帧帧头时,样件会不断重复休眠唤醒的过程 造成该现象的根本原因是 该零部件供应商 除了上述两种休眠条件外还增加了另外一个休眠条件:检测主节点丢失(即接收到主节点的发送报文);我们测 试休眠唤醒为了避免 其它帧头对 测试造成影响,所以选择该从节点响应的某一帧进行休眠唤醒测试,这就造成了主节点丢失的条件,从节点会进入休眠;休眠之后又会被周期仿真 的帧头唤醒 ,所以就出现重复休眠唤醒的 现象。 检测到主节点丢失休眠条件在各节点工作正常是不会产生任何影响,但可以在 LIN 总线短地的条件下使样件进入休眠,防止由于 LIN 线短地造成样件无法休眠导致整车馈电 , 此 是在满足标准基础上的设计优化。当然,具体的问题要依据具体设计而定,有可能总线空闲的判断逻辑覆盖了低电平时情况,未检测到电平变化就识别为总线空闲,这样就无需增加休眠条件了 。 案例 2 :样件在接收到睡眠指令后偶发性不能进入休眠 测试用例我们一般遍历测试接收到睡眠指令后等待 3 00-1100 ms 样件是否都能正常进入休眠; 造成该问题的根本原因是样件在接收到睡眠指令后有一个预休眠处理,时间为 5 00 ms (功能设计于数据保存),在预休眠期间样件不会识别任何帧头;所以只要是遍历等待时间小 于 5 00 ms ,依据自动脚本等待时间代码的时间叠加,就造成样件偶发不能进入休眠的现象 。 由于特殊样件有特定的需求,这种情况我们就会优化我们的测试方法 。同时 在此基础上 可以 延伸 出 等待总线空闲临界点的休眠唤醒 测试的新场景 。 总而言之,测试 设计以 具体需求设计 为基础 , 用以高效发现问题,以及 评估设计合理性 ,这 是一个 消化吸收 、总结 沉淀、扩展 延伸 的过程 ,需要对设计需求有深入的理解,需要关注和了解具体的实现方法,需要在测试过程中实践和分析。 三、小结 通过上述的介绍,相信大家对 L IN 唤醒休眠有了一定的了解。由于 L IN 主节点多是 O EM 根据自己的需求进行开发,就 没有对主节点的唤醒休眠测试进行展开;如果大家想了解常见的唤醒方式(同睡同醒) , 可参照 A UTOSAR 网络管理部分 的分享内容。 北汇信息 作为国内多家整车厂(吉利、长城、 奇瑞捷豹路虎 、 一 汽红旗)认证的第三方测试企业,提供CAN/CAN FD/LIN/ FlexRay /车载以太网等的测试服务,欢迎垂询!
  • 热度 6
    2022-10-8 11:05
    9792 次阅读|
    0 个评论
    一、LIN总线帧结构 一个完整的LIN总线报文帧“Message Frame”包含报头“Header”和响应“Response”,主任务发送报头,从任务用响应来补充报头形成完整的报文 。 截取自LIN Specification Package Revision 2.1 其中 帧头包括间隔 场 、同步段以及 标识符场 ,应答包括数据段和校验和 场。每个字节之间存在字节间隔(Inter-byte Space);在报头与响应之间存在响应间隔(Response Space);两帧LIN报文之间存在帧间间隔(Inter-frame Space)。下面将详细介绍每个段的具体内容格式。 1.间隔场 间隔场由间隔信号和间隔界定符组成。间隔场表示一帧报文的起始,由主节点发出。间隔信号至少由13个显性位组成,间隔界定符至少由1个隐形位组成。间隔场是唯一一个不符合字节场格式的场,从节点需要检测到至少连续11个显性位才认为是间隔信号。 截取自LIN Specification Package Revision 2.1 2.同步场 同步场顾名思义它的作用是确保所有从节点使用与主节点相同的波特率发送和接收数据,以下降沿为判断标志,同步段采用一个固定的字节结构0X55。 从节点通过接收主节点发出的同步段,计算出主节点位速率,根据计算结果对自身的位速率重新作调整。计算公式如下:1位时间 =(第7位的下降沿时刻 - 起始位的下降沿时刻)/ 8 截取自LIN Specification Package Revision 2.1 3.标识符场 标识符场由两部分组成,受保护 ID 段的前 6 位叫作帧 ID(Frame ID),加上两个奇偶校验位后称作受保护 ID段。 截取自LIN Specification Package Revision 2.1 帧ID的范围在0x00~0x3F之间,共64个。帧ID标识了帧的类别和目的地。从任务对于帧头作出的反应(接收/发送/忽略应答部分)都是依据帧ID判断的。如果帧ID传输错误,将会导致信号无法正确到达目的地,因此引入奇偶校验位。校验公式如下,其中“⊕”代表“异或”运算,“ ¬ ”代表“取非”运算。 P0 = ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4 P1 = ¬ (ID1 ⊕ ID3 ⊕ ID4 ⊕ ID5) 4.数据场 数据场用于存储节点发送的数据,数据场长度1到8个字节,采用低字节先发,低位先发策略,如果某一信号长度超过1个字节,采用低位在前的方式发送。 截取自LIN Specification Package Revision 2.1 5.校验和场 检验和场用于校验接收到的数据是否正确。校验分为经典校验(Classic Checksum)和增强校验(Enhance Checksum)。经典校验仅校验数据场,适用于诊断帧和与 LIN1.x 从机节点通信;增强校验校验标识符场和数据场,适用于与 LIN2.x 从机节点通信(诊断帧除外)。 采用标准型校验和还是增强型校验和由主机节点管理,发布节点和各收听节点根据帧ID来判断采用哪种校验和。 截取自LIN Specification Package Revision 2.1 LIN总线帧结构干扰 LIN帧的不同场格式需要按照协议进行开发,为了测试样件是否不响应错误的帧结构,就需要对LIN帧中各个场分别进行干扰以达到所需要的测试目的。实现干扰的方式有很多,本文通过CAPL自带函数来进行相应的干扰,下面将对CAPL函数 linSendHeaderError() 、 linInvertRespBit() 、 linInvert Header Bit () 进行介绍。 1. linSendHeaderError () 该函数用于干扰报文头,包含三个参数,一个是syncByte,用于设置同步场位;一个是idWithParity,用于设置标识符场;最后一个是StopAfterError,该位置1表示如果报头中一旦有某个场出现错误,则终止之后报头场的发送。 具体参数如图所示 截取自Vector Browser Helper 下面通过一个干扰ID为0x33的报文PID场中奇偶校验位的实例,来帮助大家进一步深入理解该函数。 // Force an error in header of LIN frame with ID=0x33 by setting wrong protected ID on key 'h' { byte linID, protectedID, corParity, errParity, errPID; // calculate protected ID with wrong parity bits linID = 0x33; // use frame ID=0x33 protectedID = linGetProtectedID(linID); // get protected ID 6; // extract parity (0xC=0=11000000) errParity = (corParity ^ 0x2) & 0x3; // calculate wrong parity using XOR errPID = linID | (errParity << 6); // calculate PID with wrong parity linSendHeaderError(0x55, errPID, 0); } 6提取出奇偶校验位,与0x2异或干扰校验位,最后通过errPID = linID | (errParity << 6)得出一个干扰过奇偶校验位的PID值并赋值给自己先前声明的errPID即得到了一个带有错误奇偶校验位的PID值,通过函数linSendHeaderError(0x55,errPID,0)发送错误PID值的LIN报头,即实现了对PID场的干扰。 2.linInvertRespBit() 该函数用于干扰响应,主要关注的参数如下,byteIndex用来指定干扰数据场第几字节(如果该参数值设置为报文长度,则干扰的是校验位长度);bitIndex用来指定干扰相对应第几位;level值为0的话,则把相应位从隐形干扰成显性,如果为1则反之从显性干扰成隐性;numberOfExecutions这个参数用来定义干扰的个数。 具体参数如图所示 截取自Vector Browser Helper 下面通过下面的示例,来帮助大家进一步深入理解该函数。 on key 'i' { ... // Invert first bit of byte field 8 for LIN frame with ID=0x33 linInvertRespBit(0x33, 7, 0); ... // Invert bit 7 of checksum byte field for LIN frame with ID=0x33 linInvertRespBit(0x33, 8, 6); ... // Invert stop bit of byte field 8 for LIN frame with ID=0x33 linInvertRespBit(0x33, 7, 8); ... } 第一个函数是干扰第8个比特,由于bitIndex是0,所以干扰的是该比特的第一个位,其中第二个函数如果byteIndex的长度和DLC长度一样,则说明干扰的是该报文的checksum位。 3. linInvert Header Bit () 该函数用于干扰报头, 主要关注的参数如下,byteIndex用来指定干扰数据场类型,如果为-1,则是干扰间隔场,如果为0干扰同步场,如果为1干扰PID场;bitIndex用来指定干扰相对应第几位,如果为8则是干扰stopbit;level值为0的话,则把相应位从隐形干扰成显性,如果为1则反之从显性干扰成隐性;numberOfExecutions这个参数用来定义干扰的个数;disturbAfterHeaderID这个参数用来指定在该ID之后进行干扰,这个参数需要搭配waitForHeaders使用,如果设置waitForHeaders为0,disturbAfterHeaderID为5,则是等收到ID为5的报文后,在下一个报头直接进行干扰。 具体参数如图所示 截取自Vector Browser Helper 小结 通过上述的介绍,大家应该对基于CAPL对LIN报文各场干扰有了一定的了解了。通过发送干扰的报头或者对从节点的响应进行干扰,然后再发送正常帧,即可通过该正常帧的数据,对ResponseError位是否能正确置位进行测试了。 北汇信息作为Vector中国的合作伙伴,致力于为中国汽车客户提供优质的工具支持、解决方案以及测试服务。 图片来源:LIN Specification Package Revision 2.1 以及Vector
相关资源