汽车总线之---- LIN总线
Introduction
LIN总线的简介,对于传统的这种点对点的连接方式,我们可以看到ECU相关的传感器和执行器是直接连接到ECU的,当传感器和执行器的数量较少时,这样的连接方式是能满足要求的,但是随着汽车电控功能数量的不断增长,带来的是传感器和执行器数量的增长,大家可以想象,如果采用这种连接方式,会带来线束数量的增长,那由于线束数量的增长带来的线束的加工,导线和连接器的成本都会提升,由此导致汽车成本的增加,然后就是线束重量的提高,导致汽车重量提高,当然线束布置的空间也是一个问题,同时由于线束和连接器端子数量的增加,也会对汽车可靠性产生不利的影响,对产生的故障进行诊断也是较为困难的,除此以外,当我们需要增加传感器和执行器时,必须要求ECU具备相应的硬件接口,那这对于一个系统的扩展是非常不利的,所以我们需要新的解决方案去应对这些问题。
第一种解决方案就是将传感器和执行器直接连接到ECU所处的这条CAN总线上面,采用这种方案带来了新的问题,首先这种方式要求传感器和执行器都得具备CAN接口,包括CAN收发器,CAN控制器,这样会导致传感器和执行器的成本大幅度的提升,同时总线上节点的数量过多,也会导致总线负载的提升。
第二种解决方案就是将传感器和执行器连接到另一条CAN总线上面,中间的ECU可以作为网关来完成其他ECU与传感器和执行器之间的数据交互,这样呢,虽然上面这条看CAN总线的负载率不受影响,但还是无法解决CAN接口带来的成本问题。
所以提出了一个新的解决方案,在这个方案中,将传感器和执行器连接的CAN总线换成了一个低成本的总线,然后中间的ECU可以实现网关的功能,实现这个低成本总线与CAN总线之间的数据交互,采用这种方式就能够解决前面提到的一些问题,这个低成本总线就是我们今天要讲到的LIN总线。
采用LIN总线以后,就有之前的那种点对点的连接方式,切换为这种总线网络的连接方式,我们可以看到传感器和执行器通过一个公用的通信介质,也就是LIN总线连接到ECU,这种连接方式具备以下的优点,首先是成本降低,然后对线束布置空间的要求和线束的重量也会降低,同时由于线束和连接器数量的减少,可靠性也会得到提高,通过总线的连接方式,故障更容易进行诊断,最后系统可以进行灵活的扩展,比如现在需要增加一个传感器,我们可以将这个传感器挂在总线上即可,不需要对ECU的硬件进行相应的更改,以上就是LIN总线的简单介绍。
LIN 总线物理层
LIN总线的物理层,LIN相对于CAN是一种低成本的通信总线,出于成本原因与CAN相比,LIN的通信线路为一根线,另外LIN通信可以不需要通信控制器,它的物理通信可以通过UART接口,也称为SCI接口实现,这种接口几乎集成在所有的微控制器中,所以LIN是基于UART帧结构的通信,通过下图我们可以看到真实LIN报文与UART帧的对应关系,我们可以看到UART中包括八个数据位,加一个起始位和一个停止位,起始位是一个固定的逻辑0,停止位是一个固定的逻辑1。
在LIN总线中逻辑0与逻辑1和物理电平如何对应呢?在 LIN 规范中规定显性位是一个逻辑0,对于发送节点总线物理电平小于 20% Vsup 时即为0,对于接收节点总线物理电平小于40%Vsup 时即为0,隐性位是一个逻辑1,对于发送节点总线物理电平大于80% Vsup 时为1,对于接收节点总线物理电平大于60%Vsup时即为1,以上规定了接收节点和发送节点的信号特征,在数据传输过程中,发送节点和接收节点还需要进行同步,来保证数据传输的准确性。
LIN 通信原理及帧结构
LIN总线的通信原理以及LIN报文帧结构,首先是LIN总线通信原理,LIN网络采用的是主从结构,在这种主从结构中有一个主节点和多个从节点,主节点包含主任务和从任务,从节点只包含从任务,主任务根据在LIN调度表中确定的时间,负责向总线发送,header 也称为包头,网络中的节点接收到hender后,从任务负责发送response或接收response,或不发送也不接收,response也称为响应,hander和response就组成了LIN报文。
我们这里可以看一个例子来理解LIN总线的通信原理,在这个例子中,LIN网络有一个主节点和三个从节点,在LIN的调度表中定义了LIN报文的发送时间,在t0 发送header1,在t1发送header2,在t3 发送header3,那么LAN的主节点就会按照定义好的时间去发送header,主节点在t0 发送了header1,接着从节点1发送response,从节点三接收了response,从节点2不发送也不接收,接着主节点根据调度表发送了header2, header3完成一个通信循环,由此我们可以看到LIN报文的发送和接收时间都是预先确定,并且可以预测的。
经过上面的介绍,我们了解到LIN报文是由header和response组成的,下面我们具体看一下LIN报文的帧结构,首先是header,header是由主节点发送的,header有sync break field即同步间隔场,sync field同步场和protected identifier即PID组成,同步间隔场,由同步间隔和间隔界定符组成,同步间隔为至少持续13个位的显性位,由于总线处于空闲时为隐性位,并且报文中处同步间隔场外的任何其他字段均符合UART 帧格式,也就不会发出大于九个位的显性位,所以同步间隔可以表示1帧报文的起始,间隔界定符至少包含一个隐形位,同步场为固定格式,数据为0x5 ,用于初始同步,下面我们来详细看一下header中的PID。PID由六位id和p0,p1 两位奇偶校验位组成,由于LIN的id有六位,所以它的范围为0~63,在这些id中,60和61及0x3 c和0x3 d用于诊断报文,62和63为保留位,p0和p1是奇偶校验位,p0 是id0,id1,id2,id4 进行异或运算的结果,p1是id1,id3,id4,id5进行异或运算后取非的结果,由此我们可以看出id与pid是有一个确定的对应关系的。
LIN总线的调度机制和报文类型
LIN 报文的传输时间,LIN 报文由header和response组成,header包括同步间隔场,同步场和PID场,同步间隔场至少包括13个显性位和1个隐性位,所以它的最小长度为14个位,同步场和PID场均符合Uart帧格式,因此长度均为十位,由此可以计算出header的额定传输时间为34个v时间。response包括数据场和校验场,数据厂长度为18个字节,即1080个位,校验场为10个位,由此也可以计算出response的额定传输时间,header和response的传输时间相加,就可以计算出一帧令报文传输时间的额定值。
在实际使用中,比如当一些节点使用的LIN芯片性能较低时,处理数据较慢,可能无法立即执行任务,所以在报文传输时间中包含时间余量,时间余量有两种类型,第一种类型是internet space及字节间隔,位于同步间隔场和同步场之间,以及每两个相邻的Uart帧 之间,第二种类型是response space及响应间隔,位于header和response之间,对于1帧LIN报文时间余量最大为额定传输时间的40%,由此可以计算出1帧LIN报文最大传输时间为1.4倍的额定传输时间。
在LIN总线中调度表除了规定总线上报文的传输次序外,还规定了各个报文的帧时系,digitter为报文同步间隔的下降沿与帧时系起始时刻相差的时间,以此保证有足够的时间传输LIN报文,所以LIN报文的帧时系为最大传输时间,加上t-jitter。特需要注意的是,根据response的长度,帧时系的长度也是不一样的。
当然在实际的LIN调度表中,帧时系并不是任意的长度,LIN报文实际帧时系的长度是由mini slot的整数倍组成的,mini slot与time base,也就是时机是一致的,时机是LIN网络中的最小时间单位,用于主节点执行调度时控制定时,时机一般为5ms或10ms。因此真实器的实际长度可能比传说LIN报文所需的理想时间长度更长,多出的这段时间称为interframe space及帧间空间,通过以上内容,我们能够了解另总线的实际调度表,主节点可以有多个调度表,并且可以在不同的调度表间进行切换。
接下来向大家介绍LIN报文类型,在另一网络中有四种,报文类型,包括无条件帧,事件触发帧,偶发帧和诊断帧。第一种类型是无条件帧,对于无条件帧,他的id范围为0~59,它的特点是一个response对应一个header,另外每个header都分配有独立的帧时系,这种针类型在实际应用中使用较多。第二种类型是事件触发帧,事件处罚帧关联多个无条件帧,当从节点信号发生变化的频率较低时,主任务一次次的轮询各个信号会占用一定的带宽,为了减小带宽的占用,引入了事件触发针的概念。事件触发针的典型应用就是轮询四个车门的开关状态,如果其中一个车门打开,该车门要对询问作出应答,当大于等于两个车门打开时,同时应答会发生冲突,此时会切换到冲突解决调度表,当然与事件触发征关联的无条件帧需要满足一定的条件,包括长度相同,使用相同的校验模型,数据场的第一个字节为该无条件真的pid关联的无条件真有不同的,从节点发送,并且不能与事件触发针处于同一个调度表中。第三种类型是偶发帧,偶发帧的特点是一个帧时系中包含多个无条件帧,主节点根据需要去进行发送,这也是为了避免发生很少的时间频繁发送,从而占用带宽,当有多个无条件帧需要同时发送时,需要根据事先规定好的优先级进行发送,优先级较高的五条帧获得发送权,优先级较低的要等到下一个偶发帧的header到来时才能发送,由于主节点是唯一的发送节点,所以主节点知道各个无条件帧的优先级,这样就不会产生冲突。第四种类型是诊断帧,诊断帧的id为60和61,id等于60时用于诊断请求,id等于61式用于诊断响应。
在这里我们可以看一个例子来加深对LIN报文类型的理解,在这个调度表中,所有报文的类型都为无条件帧,当时机为5ms时,我们可以计算出调度表的循环周期为225ms,
如果无条见帧5~ 8相关信号发生变化的频率较低,并且满足于事件触发帧关联的条件时,那么可以将其关联到一个事件处罚帧中,当调度表执行到事件触发帧时,主节点发送该事件触发帧的header,只有关联的无条件帧的信号发生变化时才发送response,如果没有任何的从节点响应,那么该帧时系的其余部分将保持静默,当有多个从节点响应时,会切换到冲突解决调度表。类似的可以将无条件帧12~15放到同一个真实系中,由此调度表的循环周期会减少为135ms,可以提高通信的灵活性。
状态管理
状态管理的目的是检测各个节点运行过程中的错误,每个从节点在其发送的某个无条件帧中,应包含一个名为response error的标量信号。通过该信号向主节点报告自身的状态,主节点负责接收这个信号,并且执行分析,LIN协议并没有标准化错误类型,用户可以根据需要进行自行的制定,比如位错误校验和错误无应答错误等。当然有些错误并不是针对所有的LIN报文类型,比如在事件触发针中,由于冲突存在的可能性会出现发送的数据与回收的数据不一致的情况,这时不能认为是为错误,也可能发送harder,但没有response,这时也不能认为是无应答错误。
网络管理主要指的是网络的休眠和唤醒管理,下图展示了从节点的三种状态。第一种状态是初始化状态,当第一次连接电源复位或唤醒后进入此状态,从节点需要进行必要的初始化,然后进入运行状态,初始化进程需要在100ms内完成,这里的初始化是指与令相关的初始化,复位和唤醒,可能意味着不同的初始化。第二种状态是运行状态,运行状态下可以进行LIN报文的收发,在运行状态下,当接收到休眠命令或总线静默4到10秒时进入总线休眠模式,此时总线将持续保持隐性电平,当总线处于休眠状态时,主从节点都可以向总线上发送唤醒信号,当接收到唤醒信号或由于内部原因唤醒后进入初始化状态。
详细看一下唤醒信号,LIN网络中的任意一个节点都可以发送唤醒信号来请求唤醒,唤醒信号为持续250微秒到5ms的显性电平,并在总线信号返回隐形状态时有效。对于主节点同步间隔场也可以充当唤醒信号,比如可以通过发送普通的header来请求唤醒,在这种情况下,主节点需要知道这个header可能不会被从节点处理,因为从节点可能还未被唤醒,如果节点发送出唤醒信号后,在150ms到250ms之内没有接收到总线上的任何命令,那么可以重新发送一次唤醒信号,唤醒信号最多可以发送三次,三次后必须等待至少1.5秒之后才可以再次发送唤醒信号。
最后向大家介绍休眠命令,主节点可以向总线发送休眠命令时令子网进入休眠模式,id为0x3C的诊断报文可用作休眠命令,要求该报文数据厂的第一个字节内容为0x00 ,其余字节为0xff,总线上的从节点只判断数据上的第一个字节,其余字节忽略,需要注意的是,从节点在接收到休眠命令后,不一定要进入低功耗模式,可以根据应用层需要进行设置,另外当总线静默四秒到十秒时,从节点自动进入休眠状态。
相关文章:

汽车总线之---- LIN总线
Introduction LIN总线的简介,对于传统的这种点对点的连接方式,我们可以看到ECU相关的传感器和执行器是直接连接到ECU的,当传感器和执行器的数量较少时,这样的连接方式是能满足要求的,但是随着汽车电控功能数量的不断增…...

Android开发MPAndroidChart两条折线图
Android开发MPAndroidChart两条折线图 Android开发两条折线图效果,还是有一定难度的,难点它的起点不是坐标0的开始,还有数值上有背景图 一、思路: 用的是MPAndroidChart的BarChart 二、效果图: 三、关键代码&#…...
HTML-ES6.0核心技术
1.ES6简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。ECMAScript 和 JavaScri…...
车间调度问题数学建模与CPLEX优化
完成了这些基础研究工作,整理成文档以供参考 序言... i 第一章 引言... 1 1.1 车间调度问题概述... 1 1.2 车间调度问题分类表示法... 5 1.3 车间调度对制造企业的作用... 6 1.4 本章小结... 7 第二章 CPLEX基础... 8 2.1 CPLEX概述... 8 2.1.1 CPLEX简介.…...
< 基础物理 >
SI国际单位制 常见的公制单位 为什么需要单位,是统一衡量的标准 通过国际单位,以及单位的拓展,以及单位的组合,形成一系列新的测量单位 面积 m^2 速率 m/s 米每二次方秒,m / s, delta表示增量, 每秒移动多少米 加…...

【web开发】Spring Boot 快速搭建Web项目(三)
Date: 2024.08.31 18:01:20 author: lijianzhan 简述:根据上篇原文Spring Boot 快速搭建Web项目(二),由于已经搭建好项目初始的框架,以及自动创建了一个启动类文件(TestWebApplication.java) …...
无人机之战斗机的详解!
一、高性能飞行能力 高速飞行:具备较高的巡航速度和最大飞行速度,以便快速抵达任务区域并灵活应对战场情况。 长航程:拥有足够的航程以执行远程任务,覆盖广阔的作战区域 高升限:能够飞行到较高的高度,以…...

Verilog基础:时序调度中的竞争(四)(描述时序逻辑时使用非阻塞赋值)
相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 作为一个硬件描述语言,Verilog HDL常常需要使用语句描述并行执行的电路,但其实在仿真器的底层,这些并行执行的语句是有先后顺序…...

嵌入式边缘计算软硬件开发“1+X”考证建设方案
一、引言 随着物联网、大数据、人工智能等技术的飞速发展,嵌入式边缘计算作为连接物理世界与数字世界的桥梁,其重要性日益凸显。为了适应行业对高技能人才的需求,推动嵌入式边缘计算技术的普及与应用,特制定本“1X”考证建设方案…...
ES8的Java API client 8.0 简单示例操作 Elasticsearch
1.加入依赖 <dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.12.2</version></dependency>2.配置类 Slf4j Configuration public class ElasticSearchConfig {Valu…...
多线程CompletableFuture
最近发现同事整理了一个不错的关于CompletableFuture的文档,在这里记录一下,方便以后工作备用 CompletableFuture future CompletableFuture.supplyAsync(() -> {return "开新线程异步执行"; })result future.get(); // 线程阻塞等待结果…...

AR传送门+特定区域显示内容+放大镜 效果着色器使用
AR传送门特定区域显示内容放大镜 效果 关键词:Portal Mask 1、教程链接: AR 传送门教程 Unity - Portal Mask Implementation - Part 4_哔哩哔哩_bilibili 应用案例效果: 2、案例下载地址:使用unity 2021.3.33f1 obi 工具…...
设置Hadoop守护进程的JVM参数
一般情况下我们不去动守护进程的JVM,这里的守护进程说的是NameNode、DataNode等Hadoop服务自己本身的进程。但是有一些特殊情况下需要限制,比如工作中虽然集群中资源队列会有10%左右的预留空余,不过这是整个集群队列的限制,对于Da…...
可视化大屏
可视化大屏 是一种利用计算机图形学技术,将复杂的数据和信息转换为直观的可视化图形,以呈现数据信息的工具。它不仅在电影中常见,而且已经实实在在地被应用在商业、金融、制造等各个行业的业务场景中,成为大数据分析和展示的重要工…...
pytest框架
pytest测试框架 单元测试框架定义:针对软件开发最小的单元(函数,方法)进行正确性位置测试 单元测试框架:java(junit,testing)python(unittest,pytest&#…...

基于大数据的亚健康人群数据分析及可视化系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…...

黄金短线交易策略:波动中的高效盈利之法
今日,亚市盘初,现货黄金就高位震荡。在昨日金价再度冲高,一度刷新历史高点至2685.49美元,收报2672.25美元。其中主要原因是美国公布了最新的核心PCE(个人消费支出)物价指数和初请失业金人数等经济数据&…...

西陆家政系统V1.0.1
微信小程序开发的西陆家政服务管理系统小程序 V1.0.1bug修复优化 1.修复首页轮播不能自动轮播问题;2.修复订单详情价格显示问题;3.修复在开放城市模式下,其他城市可以下单问题;4.修复个人二维码跳转小程序路径异常问题;5.修复小程序编辑我的地址选择定位后不刷新问题…...

时间安全精细化管理平台/iapp/mobile/facereg/facereg.html接口存在未授权访问漏洞
漏洞描述 登录--时间&安全精细化管理平台/iapp/mobile/facereg/facereg.html接口存在未授权访问漏洞,黑客可以未授权等级员工信息对平台造成影响 FOFA: body"登录--时间&安全精细化管理平台" 漏洞复现 IP/iapp/mobile/facereg…...

自动化测试实例:Web登录功能性测试(无验证码)
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是自动化测试 把人为驱动的测试行为转化为机器执行的一种过程称为自动化测试。(来自百度百科)本质上来说,自动化测试对比起手工测试除了需要…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...