首页 > 其他分享 >一文搞懂LIN节点的State Machine状态机测试

一文搞懂LIN节点的State Machine状态机测试

时间:2024-06-16 16:01:32浏览次数:22  
标签:仿真 发送 报文 节点 状态机 测试 搞懂 LIN

文章目录

在ISO 17987中在Network Management章节之前有一节关于State Machine状态机的描述,初学时看着觉得没什么内容,不过是对节点所处状态和帧发送处理过程的描述。实际项目中如何进行LIN状态机的测试呢?

一、协议概述

1.主机任务状态机

协议描述:启动进度表后,主机任务依次发送同步间隔段、同步段、受保护ID段。
在这里插入图片描述

2.从机任务状态机

协议描述:从机任务负责发布或接听帧的应答,包括两种状态机:1、同步间隔段和同步段检查器;2、帧处理器
在这里插入图片描述
同时协议给出了从机任务帧状态机处理器的流程图,如下:
在这里插入图片描述
依据协议内容,如何进行主/从机任务状态机的测试呢?继续往下看。

二、主机任务状态机测试

主要分为3种测试状态,第1种是仿真主机任务发送帧头,当第一帧同步间隔段发送完成后,仿真发送第二帧,观测节点对于这两帧的处理结果是否符合预期。
在这里插入图片描述
第2种是仿真主机任务发送帧头,当第一帧同步间隔段、同步段发送完成后,仿真发送第二帧,观测节点对于这两帧的处理结果是否符合预期。
在这里插入图片描述
第3种是仿真主机任务发送帧头,当第一帧同步间隔段、同步段和ID段发送完成后,仿真发送第二帧,观测节点对于这两帧的处理结果是否符合预期。
在这里插入图片描述上述三种方式均可通过脚本方式来实现,仿真同一帧报文,分别根据测算的位时间来控制两帧报文之间的delay time。

三、从机任务状态机测试

1.测试场景

验证从节点ECU在激活状态中的各子状态接收到间隔场和同步场的状态机是否符合要求。ECU分别在发送数据状态收到间隔场和同步场、发送校验和状态收到间隔场和同步场,进入PID状态的处理机制。说人话:当第一帧报头发出后,从节点应答未完成前,再次发送帧头,从节点的PID状态处理。观测第一帧的应答是否错误,第二帧的应答是否有RespError置为1。

2.问题分析

该测试项理解起来很容易,但是实际测试如何实现却犯了难。

  • 思路1:在该网段下添加节点进行仿真报文发送,缩短仿真报文的周期来进行干扰LDF正常报文的调度。
    结果:不可行。原因是发送时机不好控制,且通过位时间的测算能达到测试要求的帧头周期(2/4/6ms)在CANoe中都发送失败。(CANoe限定了6.77ms来完成整帧的处理)
  • 思路2:打开两个CANoe工程进行条件控制。
    结果:不可行。原因是仿真报文的发送时机仍然不好控制来达到对第一帧报文的精准干扰要求。
  • 思路3:通过两个接口卡,同时连接到被测ECU上,在CANoe中创建两个LIN Network一个进行正常的LDF调度,另一个进行报文发送,通过缩短发送周期来满足测试要求。
    结果:可行

3.结果描述

通过上述思路3测试得到下图结果,可以看出在第一帧没有应答完成前,发送第二帧帧头,第一帧报错显示在等待数据字节过程中发生中断;而在下一帧正常应答的报文中RespError=1。
在这里插入图片描述
延申:关于从节点PID状态(状态机)测试的测试方法实现上需要有所设计。从机节点帧处理过程有两个状态组成:休眠状态和激活状态。激活状态包含5个子状态,只要间隔和同步程序被激活,系统就会进入接收标识符的激活子状态。这表明,通过探测到一个新的间隔和同步序列,帧的处理程序将会被终止。通过上述思路3的测试也印证了这一点。


总结

LIN状态机的测试重点在于如何通过合理的用例设计来实现仿真报文的注入时机精准化,这也是本文想要表达的重点,通过具体的用例执行测试也能进一步深化对于LIN状态机机制的理解。

标签:仿真,发送,报文,节点,状态机,测试,搞懂,LIN
From: https://blog.csdn.net/weixin_43441058/article/details/139593604

相关文章

  • Linux命令——文件管理
    目录1.cd命令进入家目录在两个目录之间切换2.ls命令显示所有文件:显示文件详细信息文件大小单位显示显示目录后缀3.创建删除文件创建文件删除文件4.创建删除目录/文件创建单层目录创建多层目录删除目录5.cp命令拷贝文件拷贝目录6.mv命令文件的移动......
  • Android面试题之Java 泛型和Kotlin泛型
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点定义:JDK5引入的一种参数化类型特性继承和实现接口可以多个staticclassA{}staticinterfaceB{}staticinterfaceC{}//类必须在接口的前面staticclassD<......
  • Linux常用命令及或g++(或gcc)编辑器运用
    一.实验内容1.打开VMwareWorkstation虚拟机进入Ubuntu系统,打开终端。练习使用常用的Linux命令,主要包括如下命令:mkdir,rmdir,cd,pwd,ls,clear,cat,rm等。(其中,cat、rm命令请在下面实验内容3完成后再练习。)Linux各命令使用方法可下载ftp中文档《Linux入门常用命令》......
  • Ubuntu server 24 (Linux) 安装部署samba服务器 共享文件目录 windows访问
    1安装sudoaptupdatesudoapt-getinstallsamba#启动服务sudosystemctlrestartsmbd.servicesudosystemctlenablesmbd.service#查看服务2创建用户#创建系统用户sudouseraddtest2#配置用户密码sudosmbpasswd-atest2#smbpasswd:-a添加用户-......
  • Linux DNS域名解析服务
    DNS域名解析服务BIND域名服务基础DNS系统的作用及类型BIND的安装和控制BIND服务的配置文件使用BIND构建域名服务器构建缓存域名服务器构建主域名服务器构建从域名服务器BIND域名服务基础DNS系统的作用及类型整个Internet大家庭中连接了数以亿计的服务器、个人......
  • (高清pdf集合)图灵程序设计丛书:大规模数据处理入门与实战(套装全10册)【图灵出品!一套囊括S
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqso数据处理基础:介绍数据处理的基本概念、流程和应用场景,帮助读者建立对数据处理的整体认识。SQL语言与应用:详细讲解SQL的语法和用法,包括数据查询、数据操作和数据定义等,以及在实际应用中的最佳实践。Python数据挖......
  • 【Linux】fork()函数详解|多进程
    ......
  • Docker镜像下载慢/失败?Linux代理使用不便?想在无Docker环境下载镜像?试试我这款开源项目
    我要在这里放一段代码块//这是一段防爬代码块,我不介意被文章被爬取,但请注明出处console.log("作者官网:https://www.hanzhe.site");console.log("原文地址:https://www.cnblogs.com/hanzhe/p/18249602");说在前面你在工作中有没有遇到过这样几个问题:镜像下载速度慢,明明带宽......
  • Linux 按键输入实验
    Linux按键输入实验1、添加pinctrl节点首先修改在设备树里面添加关于按键的节点。I.MX6U-ALPHA开发板上的KEY使用了UART1_CTS_B这个PIN,打开imx6ull-alientekemmc.dts,在iomuxc节点的imx6ul-evk子节点下创建一个名为“pinctrl_key”的子节点,节点内容如下所示:pinctrl......
  • VirtIO drivers for Linux, Windows and etc.
    WhydoyouneedVirIOdriver?It'susefulwhenyouuseLinux/WindowsVMsinPVE.UsuallywhenyouattachanetworktotheVM,youwouldclickthe"Hardware"->"NetworkDevice"->"Bridge"->"vmbr0"o......