历史上的今天
返回首页

历史上的今天

今天是:2025年04月06日(星期日)

2018年04月06日 | 从新能源汽车CAN总线入手,学习兼容性更强大通讯系统

2018-04-06 来源:eefocus

CAN总线通讯发展的过程中,为了兼容实时操作系统,是否也有与之对应的实时通讯网络协议? 今天我们就来学习兼容性更强大的通讯系统。

ISO11898前3部分的解读提高了对传统CAN网络的理解,无论是高速CAN还是低速CAN,亦或者是最基础的物理层定义都进行了详细的阐述。传统的CAN网络总线通讯基本都是事件触发的,当同时有许多信息需要传输时可能会造成总线过载,为了避免这种现象,传统CAN网络采用仲裁机制按信息优先级进行传输。


图1 新能源汽车CAN总线透视图

显然,传统分布式的CAN网络如果能用于实时操作系统(基于时间触发调度而非事件触发),对于系统的兼容性和综合集成性将大有提高,但问题是我们如何才能将并非同样遵从时间调度的两者结合起来呢?

一、时间触发CAN

1、概述

时间触发CAN是建立在标准CAN上的高层协议,它会对网络中所有节点通讯进行同步调度,也就是每个节点在一个固定的时间里发送信息,这样就不用再对信息进行优先级仲裁,由于每个节点分配到的时间是固定的,所以还可以预判整个网络的延迟时间。

1.1 要实现这样的时间触发CAN通讯有两种方式

方式一:用于周期信息传输。

方式二:支持全局系统时间传输。

1.2 几个重要概念

  • 基本周期:两个参照帧之间的时间被称为一个基本周期,基本周期由数个时间窗组成;

  • 参照帧:开始一个基本周期的数据帧,为网络提供一个全局时间,其作用就好像格林尼治时间之于世界时间一样,用以同步所有节点的时间;

  • 时间窗:系统矩阵里为传输信息分配的时间段,包括仲裁时间窗、自由时间窗和专用时间窗,见图2。

图2 一个周期内的数个时间窗

所谓的时间触发就是上面已经分配好的的数据从左到右按顺序发送,下面介绍一下这三种时间窗:

  • 专用时间窗(Exclusive Windows):用来传输特殊的周期信息,这些消息不会参与总线竞争,是置身事外的一个记录员角色。

  • 仲裁时间窗(Arbitrating Windows):CAN节点在总线不是空闲的时候是不能传输消息的,而在时间触发CAN的仲裁时间窗里可以安排网路内的几个节点同时发送报文,不过没有重发功能。

  • 自由时间窗(Free Windows):保留用作系统扩展,可以配置成增加节点的仲裁时间窗或专用时间窗,相当于机动部队。

图3 系统矩阵

上图的系统矩阵有4个基本周期,一个基本周期可由不同类型、长度的时间窗组成,矩阵的纵列也叫做传输阵,传输阵里的时间窗有相同的长度但是可以拥有不同类型。

二、接收和发送

明确完了概念,我们接下来了解时间触发CAN是如何接收和发送信息的。

1、信息的发送

信息发送触发器

在时间触发CAN网络里,节点发送的信息由信息发送触发器控制。信息发送触发器会显示信息是由系统矩阵里面的哪个时间窗以及怎么来进行传输的。

所以,信息发送触发器有多个功能组,一是信息正确性判断,二是发送的时间标示,三是判断传输阵里的发送位置,四是重发因数,一个信息发送触发器的触发条件满足时,即使信息的传输出错导致信息失效时它也将立即启动。

图4 举例一个专用信息的发送触发器

上图是一个专用信息D的信息发送触发器,它表述了在系统矩阵里第三个基本周期的第五个时间窗(专用窗)发送,周期偏差为0,重发因素为2。

2、信息的接收

信息接收触发器

在时间触发CAN里,信息的接收是由信息接收触发器控制的,信息接收触发器的构成与上述的信息发送触发器一样,信息接收触发器的时标会在信息接受完成后确定时间点。

3、参照帧的发送

信息接收触发器

参照帧发送触发器是一个特殊的信息发送触发器,它只存在于备用的时间主节点里。在严格的时间触发网络中,只用唯一的一个参照帧发送触发器来确保参照帧的周期发送,只要时间到了,参照帧就会被发送。

而在事件同步的基本周期系统中会有两个参照帧发送触发器,其中一个参照帧发送触发器按系统矩阵基本周期定时发送,另一个作为后备,在事件同步异常时重新发送参照帧。

三、时间主节点初始化和错误处理

1、时间主节点初始化概念

虽然正常通讯建立起来时只有一个时间主节点,但在时间触发CAN中备用的时间主节点可能超过8个。系统启动时,硬件初始化,所有备用时间主节点根据优先级和等待时间可以开始尝试发送参照帧。硬件初始化后有高优先级的CAN标识符的帧同步实体(数据链路层和媒体访问控制层的执行单元)可以优先传输。

2、错误处理

CAN的失效处理遵循ISO 11898-1的规定,当帧同步实体检测到调度表有误时,会通过CAN的ISO 11898-1协议来处理。

图5 错误处理

四、小结

至此,我们将时间触发CAN网络进行了一个概述,简单介绍了这个有别于传统CAN标准的高层协议,更详细的论述可以参看ISO 11898-4原文,公众号后台回复【ISO11898-4】可获赠原文文档。


推荐阅读

史海拾趣

EVERLIGHT公司的发展小趣事

EVERLIGHT公司的故事始于1983年,当时台湾的电子产业正迎来蓬勃发展的时期。创始人凭借对LED(发光二极管)技术的深刻洞察,决定创立EVERLIGHT,专注于LED的研发和生产。公司从一开始就注重技术创新,投入大量资源研发新型LED产品,不断提高产品的亮度和稳定性。随着技术的不断突破,EVERLIGHT逐渐在LED市场上崭露头角。

AMSCO [Austria micro systems AG]公司的发展小趣事

EVERLIGHT公司的故事始于1983年,当时台湾的电子产业正迎来蓬勃发展的时期。创始人凭借对LED(发光二极管)技术的深刻洞察,决定创立EVERLIGHT,专注于LED的研发和生产。公司从一开始就注重技术创新,投入大量资源研发新型LED产品,不断提高产品的亮度和稳定性。随着技术的不断突破,EVERLIGHT逐渐在LED市场上崭露头角。

Elcos AG公司的发展小趣事

随着国内市场的饱和,Elcos AG开始寻求国际化拓展的机会。公司首先在欧洲市场建立了销售网络,通过与当地合作伙伴的紧密合作,逐渐打开了欧洲市场的大门。随后,Elcos AG又将目光投向了亚洲和北美市场,通过设立海外办事处和参加国际展会等方式,积极推广公司品牌和产品。在国际市场的竞争中,Elcos AG凭借其卓越的产品品质和完善的售后服务体系,赢得了众多客户的信赖和支持。

Alpha (Taiwan)公司的发展小趣事

面对全球环保意识的日益增强,Alpha (Taiwan)公司积极响应号召,致力于绿色电子产品的研发和生产。公司投入大量资金研发环保材料和技术,成功推出了一系列绿色环保电子产品。这些产品不仅具有优异的性能,而且在使用过程中对环境的影响较小,符合现代社会的环保理念。此外,公司还积极参与环保公益活动,宣传环保知识,推动电子行业的绿色发展。

Crowd_Supply__Inc.公司的发展小趣事

与众不同的是,Crowd Supply Inc.采用了一种基于众包和预售的产品研发策略。他们在平台上发布项目概念和初步设计,通过社区的力量进行方案优化和功能迭代。这种模式不仅降低了产品开发成本,还使得产品更贴近用户需求。其中一款基于该策略开发的产品——一款高集成度的开源硬件开发板,在预售阶段就获得了大量订单,为公司带来了可观的收入。

DB Lectro Inc公司的发展小趣事

为了进一步扩大市场份额,DB Lectro Inc积极寻求与国际知名企业的合作。通过与多家国际公司的技术交流和合作,公司成功地将自身的气体检测技术应用于更多领域,如天然气开采、食品饮料生产等。同时,公司还积极参与国际展览和交流活动,展示了其先进的技术和产品,赢得了国际市场的广泛认可。

问答坊 | AI 解惑

分享招聘信息

人才招聘信息 同时欢迎访问******neoic********** 及其论坛: neoic论坛 [ 本帖最后由 shuijian 于 2008-11-11 22:11 编辑 ]…

查看全部问答>

新手求助

我的论文是要做一个车的无线遥控,谁有无线遥控收发模块的程序,能发一下吗~~~小弟不胜感激啊~~…

查看全部问答>

中断无法正常使用,改后系统都无法加载了,请帮忙!!

您好,我现在的问题也是这样的,我用的是2440,原来打算用timer0或者是timer1来做一个定时,在display驱动里面创建了个线程并动态分配映射了一个sysintr,配置好寄存器后,一切都ok,但是就是无法启动IST线程,后来怀疑是事件没有触发事件,单步调 ...…

查看全部问答>

计算机存储扩展

设CPU有16根地址线,8根数据线,并用MREQ作为方寸控制信号(低电平有效)用WR作为读写控制信号(高电平读,低电平写)现有下列存储芯片, 1K*4RAM 4K*8RAM 2K*8ROM 4K*8ROM 8K*8ROM及74LS138 画出CPU与存储器的连接图,要求如下: 1.主存地址 间 ...…

查看全部问答>

关于PCB设计的问题

本人最近画了2块板子,一块是数字量输入输出专用板(1号板),另一块是控制板(包含模拟量输入输出、2号板),负责控制另外一块板读取数字模拟量数据并输出结果,目前我在两块板结合的时候,采用了上下两层定位孔+螺丝的方法,数字量输入输出板在上 ...…

查看全部问答>

ARM7 PCOND 对端口D的控制寄存器赋值问题 。

ARM7  PCOND 对端口D的控制寄存器赋值问题 。 S3C44B0X   对于GPIO端口 D 用 rPCOND |= 0x01 居然不能让PCOND的最低位置1,这是怎么回事?语法完全没错啊。 但如果用 rPCOND = 0x01 就没有问题。 另外,对数据寄存器 rPDA ...…

查看全部问答>

关于时钟变慢

                                 我是一个初学者,在EK-STM32F学习板上做了一个测试程序,用定时器2控制时间,通过IO口线驱动一个LED闪烁,发现一个问题 ...…

查看全部问答>

R7F0C802x Easy Start -- code generator编写闪灯程序

本帖最后由 youki12345 于 2014-8-3 10:32 编辑      经过一天的努力,终于弄明白了瑞萨单片机的开发环境以及程序的结构。以前没用过日系的单片机,总觉得应该都差不多。这次仔细研究了下 R7F0C802x Easy Start和CubeSuit+发 ...…

查看全部问答>

请问温度和流量传感器获得的信号如何显示在液晶屏上?

我从来没搞过开发,不过想自己DIY点东西。(需要的相关知识都可以从头学) 现在我有这样一个需求:两个传感器,一个是温度传感器(浸泡在水中的),一个是流量传感器(说明书上说输出方波。什么是方波?) 我想把这两个传感器获得的数据(温度和 ...…

查看全部问答>

闪电板,我爱你!----谈谈闪电板的特点

闪电板的样子,在上一帖( https://bbs.eeworld.com.cn/thread-454695-1-1.html )中已经展示了,或者可以参阅其他网友的帖子。 一、先看一下电路图 1、 2、 3、 4、 : 二、所用芯片 从图上可以看到,板上所配的元件有: ----- ...…

查看全部问答>