CAN中继器设计及其应用

发布者:幸福约定123最新更新时间:2016-04-06 来源: eefocus关键字:CAN  中继器 手机看文章 扫描二维码
随时随地手机看文章
1 引言 

CAN总线是Bosch公司为现代汽车应用而推出的一种总线,与一般的通讯总线相比,CAN总线的数据通讯具有突出的可靠性、实时性和灵活性。CAN 总线现已广泛应用于产业现场控制、小区安防、环境监控等众多领域中。CAN总线为多主方式工作,网络上任一节点均可在任意时刻主动地向网络上其它节点发送信息而不分主从,通讯方式灵活,且无需站地址等节点信息。


CAN中继器是CAN总线系统组网的关键设备之一,在稍大型的CAN总线系统中经常会用到中继器。本文所讨论的中继器除了具有中继功能以外,还具有一定的网桥功能。由于只要对中继器的初始化参数进行适当配置,就能使中继器既具有报文转发功能,又具有报文过滤功能,这里只是借用了中继器的名称而已。
    使用中继器的优点主要表现在以下几方面:
    (1)过滤通讯量。中继器接收一个子网的报文,只有当报文是发送给中继器所连的另一个子网时,中继器才转发,否则不转发。
    (2)扩大了通讯间隔,但代价是增加了一些存储转发延时。
    (3)增加了节点的最大数目。
    (4)各个网段可使用不同的通讯速率。
    (5)进步了可靠性。当网络出现故障时,一般只影响个别网段。
    (6)性能得到改善。

当然,使用中继器也有一定的缺点,例如:
    (1)由于中继器对接收的帧要先存储后转发,增加了延时。
    (2)CAN总线的MAC子层并没有流量控制功能。当网络上的负荷很重时,可能因中继器中缓冲区的存储空间不够而发生溢出,以致产生帧丢失的现象。
    (3)中继器若出现故障,对相邻两个子网的工作都将产生影响。

 

CAN中继器主要由89C52和两路CAN控制器接口组成。89C52作为CAN中继器的微控制器,负责整个中继器的监控任务。两路CAN控制器接口电路基本相同,都是由CAN通讯控制器SJA1000、光电耦合电路和CAN总线驱动器82C250组成。CAN总线驱动器都采用带隔离的DC/DC模块单独供电。这样,不仅实现了两路CAN接口之间的电气隔离,也实现了中继器与CAN总线的隔离。固然这在一定程度上增加了中继器硬件的复杂性和本钱,但却是值得的。采取隔离措施可使故障局限在某一网段内,而不至于影响其它网段,既便于维护,又保证了系统设备的安全。

中继器硬件除了以上主要部分以外,还有EEPROM、看门狗和LED指示等部分。几个LED分别用于中继器上电指示和CAN接口当前的接收和发送状态指示,以及接口的通讯故障(如总线封闭)指示。看门狗采用MAX1232。MAX1232具有高电平、低电平上电复位和看门狗功能。EEPROM采用具有1K字节容量的24LC08,可用于保存中继器的配置参数等信息,便于系统的灵活配置。

2 CAN中继器的软件设计

CAN中继器的主要任务是在两个CAN网段之间实现报文的过滤和转发。由于通讯实时性的要求以及CAN中继器CPU中缓存容量有限(89C52内部RAM容量为256个字节),所以在进行软件设计时,要求做到存储转发时间尽量短。为了达到这一要求,CPU采用中断方式接收两个CAN控制器的报文,同时尽量精简CPU收发子程序的代码长度。为了节省内存并对内存实行有效治理,CPU采用了FIFO机制治理内部RAM。为了保证通过中继器传输报文的通讯双方数据的可靠性,唯有使用通讯双方应用层的端端差错控制才能满足要求,但在中继器的软件设计中不宜加进过多的差错控制和流量控制功能,由于这不仅达不到目的,反而还降低了中继器的运行效率,增加了故障隐患。


        

CAN中继器软件主要包括以下一些子程序:初始化子程序、主监控程序、接收中断子程序和发送子程序等。初始化子程序的编写方法与一般的CAN总线系统智能节点的初始化子程序的编写方法基本相同,只是在对两个CAN控制器进行初始化时应采用不同的初始化参数。下面主要对主监控程序和接收中断子程序进行先容。

2.1 主监控程序的设计

主监控程序负责对两路CAN控制器的接收FIFO缓冲区进行监视,如某一路缓冲区非空则向另一路转发。两路缓冲区的容量大小可采用不对称配置。采用这种不对称配置的一个好处在于可以将容量更大的缓冲区分配给通讯任务更繁忙的一方,从而尽量避免缓冲区出现溢出。FIFO缓冲区共有两个指针:接收数据指针和发送数据指针。当两指针不相等时即证实缓冲区中存有有效数据。缓冲区接收数据指针的调整是通过接收中断子程序实现的,而发送数据指针的调整则通过发送子程序实现。在主监控程序中,还用到了一个请求状态标志,该标志在接收中断子程序中建立,用于中继器及时返回本身故障状态或响应上位机的状态查询命令。当该标志为1时,主监控程序会向上位机发送本身状态,并清除该标志。

2.2 接收中断子程序的设计

中继器接收中断子程序流程图如图2所示。在进进中断后,首先判定中断类型。若为错误警告中断,则进行相应处理并建立标志,若为接收中断则接收报文。在报文接收前,要根据接收报文的长度判定接收缓冲区是否会溢出。若会溢出,则判定是否为状态查询命令,是则置位请求状态标志,对于接收的其它报文则丢弃。若缓冲区不会溢出,则接收该报文。接收报文后取出命令字节,判定是否是中继器状态查询命令,若是则置位请求状态标志,不进行缓冲区参数调整(由于是上位机发送给中继器的命令,只要求中继器作出响应而不要求其转发,所以不能放进缓冲区中)。若不是中继器状态查询命令,则不作处理,只进行缓冲区参数调整,接收报文有效。随后进行开释CAN接收缓冲区、恢复现场和中断返回等工作。


        

 

3 CAN中继器在食堂售饭系统的中应用

按上述方法设计的中继器现已成功应用于东华理工学院的食堂售饭系统中。根据学院食堂及各营业网点的实际分布情况,设计的学院食堂售饭系统网络结构如图3所示。从图中可以看出,中继器是组网的关键设备,它将窗口机等终端与服务器连接起来。在该网络结构中,中继器共分两级。中继器1~4为一级中继器,一端与服务器相连,另一端则与各个食堂窗口机等终端构成的子网相连;中继器5为二级中继器,一端与一级中继器相连,另一端与浴室、小卖部等窗口机相连。采用两级中继器的设计,使系统的通讯间隔可达5km以上,网络终端数目几乎不受限制。

该设计方案已投进实际运行,目前系统网络规模为五台中继器、一百多台窗口机,用餐人数近万人。从系统的实际运行情况来看,性能非常稳定可靠,而且维护和扩容方便,大大进步了食堂的治理水平和工作效率。

关键字:CAN  中继器 引用地址:CAN中继器设计及其应用

上一篇:基于CAN总线与以太网的嵌入式网关电路设计
下一篇:单片机在电机转速测量仪应用

推荐阅读最新更新时间:2024-03-16 14:49

CANScope支持的事件标记
什么是事件标记 CANScope具有512M字节的波形缓存区,但某些特定情况下也可能无法捕获用户感兴趣的波形。这时候可以使用其独特的事件标记功能,能够最大程度记录用户所关心的波形。如下图所示,启用事件标记时,优先存储满足条件的波形。 CANScope支持的事件标记 帧ID标记:当帧ID的某些位满足设定条件时存储波形; 帧数据标记:当帧数据的某些位满足设定条件时存储波形; 错误帧标记:存储错误帧的波形; 眼图模板标记:当波形碰触眼图模板时存储。 如何使用事件标记 帧ID标记 CAN网络中一般使用帧ID区分不同节点,如果只想存储某个节点的波形,这时需要使用帧ID标记。如下图所示,设置帧ID低2
[嵌入式]
基于CAN总线的数字式自动找平控制系统设计
基于CAN总线的数字式自动找平控制系统设计 随着微型电子技术的发展以及成本的降低,数字式控制系统在现代工程机械中得到了越来越广泛的应用,基于CAN总线的控制系统在现代工程机械中正在逐渐普及。数字式自动找平控制系统可提高沥青混凝土摊铺机的性能,改善操纵性等,由于具有高可靠性和灵活性。因此对其研究具有重要的现实意义。实现数字式控制系统的方案很多,笔者所研制的控制系统是基于CAN总线,以C8051F040单片机为核心而设计的。 2 CAN总线的特点 CAN(Controller Aera Networ)总线是德国BOSCH公司在80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议
[单片机]
基于<font color='red'>CAN</font>总线的数字式自动找平控制系统设计
CANopen总线应用札记:关于通讯接口的针脚定义
我们都知道,现场总线常用SUB-D9作为通讯接口,工业以太网常用RJ45作为通讯接口。不过,个人认为这并不能说明RJ45功能比SUB-D9强,因为RJ45只有8根针脚,比SUB-D9少1根,如果我们把SUB-D9串口内的9根针脚都开发满,那么其功能没理由比RJ45弱。 下面说个严肃的话题,不同厂家开发的CANopen设备,看起来都是SUB-D9接口,其实内部线路是完全不一样的,我们要认真核实,可别连错了啊,运气不好的话,就短路了,运气再不好一点,通讯口就烧掉了!还有一些厂家开发的CANopen设备,CAN V+使用的是5VDC,而不是24VDC,如果不仔细阅读,采用习惯接线法,那就可能过压烧毁CAN信号收发器了! 小弟我整理了以下几
[嵌入式]
基于FPGA的CAN总线通信节点设计
  0引言 CAN总线允许高达1Mbit/s通讯速率,支持多主通讯模式,有高抗电磁干扰性而且能够检测出通信过程中产生的任何错误,已被广泛应用到各自动化控制系统中。在项目的特殊环境要求下,CAN总线通信要求使用FPGA作为系统中的主控制器,较之传统设计使用的单片机,FPGA能够在速度和体积上有更好的适应性。FPGA一方面减少了电路板的复杂程度,缩短了实现周期;另一方面,其丰富的资源、超高的性能和灵活的可编程性,提高了整个设备的可靠性,大大增强了电路板设计的灵活性和可扩展性。文中通过设计FPGA的接口电路,并利用Verilog语言来编程实现CAN节点之间的通信功能。 1CAN接口硬件设计 1。1CAN节点的系统构成 一
[嵌入式]
CAN-bus通信步入手机APP时代!
自1990年奔驰公司发布了第一辆使用CAN-bus通信的轿车之后,CAN-bus便成为了通讯界里一颗闪亮的星星,在车载设备的通讯中更是一枝独秀。但面对目前这快速发展的新世界,传统应用方案下的线缆组网,PC机监控已无法满足我们新时代的需求,限制了CAN-bus通信的应用场合。 如果说手机的使用拉近了人与人之间的距离,那么智能手机的出现,各种APP应用程序的深入用户群体,则是完全改变了新时代人类的生活方式。物联网、智能工厂、智慧城市、智能家居无不瞄准了人人必备的手机平台,这是一个时代的主题,作为通讯界中具有贵族血统的,引领潮流的CAN-bus通信,怎可在这一波兴涛大浪中停滞不前。 曾经,我们在为随时移动的设备而无计可施。
[嵌入式]
恩智浦最新CAN收发器系列保障CAN通信安全而无需加密
1 月 31 日 - 恩智浦半导体NXP Semiconductors(纳斯达克代码:NXPI),全球最大的汽车半导体解决方案供应商1 ,今日宣布推出新的安全型CAN收发器系列,该系列为安全型CAN通信提供无缝、高效的解决方案,且无需软件或加密。 每辆汽车中都使用CAN网络来连接电子控制单元(ECU),预计未来十年它仍会是主导性网络。随着汽车电子设备不断增多,跨CAN网络交换的实时数据量也在增加。 CAN是一个强大的多点连接网络,迄今为止,车内大部分数据通信都没有安全措施,单个受到破坏的ECU可以直接访问联网的ECU。目前市场上的安全解决方案 使用基于加密和复杂密钥管理的报文认证码(MAC)来保护CAN通信, 但这势必造成CA
[汽车电子]
正确设置FHPP协议模式下的CAN参数
FHPP协议是基于CANopen协议开发的,提供了更全面的Motion控制功能块(见图三); 然而在实际应用中,当我们选用了CMMD或者2个以上CMMS驱动器,按常规方案架设好CANopen网络,在总线运行中就会发现:低位数据区(排在CAN网络前面)的那个伺服控制器上的CAN指示灯是熄灭的,但是马达控制器不报错,FHPP通讯却死活也激活不出来! 观察PLC程序,通常会发现1号轴功能块里的FHPP_In、FHPP_Out数据是异常的。这种情况下,采用常规手段,例如:修改编写PLC程序、用FCT刷固件、用FCT恢复出厂设置后新建再下载项目、优化外围电路与电能质量等等,哪怕是更换上新的控制器,都是没用的。怎么办? 冷静思索下,发现还是FH
[嵌入式]
基于CAN总线的配电网户外柱上型重合控制器的设计与实现
    摘要: 介绍了一种基于CAN总线的中压配电网户外柱上型智能重合控制器,以16位工业级微控制器Intel 87C196KC为核心,应用现场总线和智能化技术将保护、测量、检测、计量、远动和故障诊断等综合自动化功能就地分散到户外开关设备本体上,采用CAN总线作为系统的通信网络,实现了配电设备的户外全分布式方案。     关键词: 配电网 现场总线 智能重合器 Intel 87C196KC 我国供电部分近几年来在城乡电网建设与改造中进行了大量的技术改造和更新,选用了新形的配电设备、综合自动化和调度自动化设备、自动控制测量装置等,但这些设备目前大多数仅限于在变电站和调度室中采用。而大量的统计资料表明,配电
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved