CAN网状冗余及基于ARM节点设计

发布者:EnchantedWish最新更新时间:2011-06-24 关键字:CAN  网状冗余  ARM节点 手机看文章 扫描二维码
随时随地手机看文章

一、概述
CAN(Controller Area Network)即控制器局域网,是一种串行数据总线,CAN总线是国际上应用最广泛的现场总线之一。作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,CAN总线已被广泛应用于各个自动化控制系统中。在汽车电子、自动控制、电力系统等领域中,CAN总线尤其具有不可比拟的优越性。但是,工业控制现场工况条件十分恶劣,电缆受拉、压、砸、挤等造成故障的情况很多,这对于以总线为核心的CAN总线系统是一种极大的威胁。如何保证现场总线控制系统在恶劣环境下安全、可靠地工作是CAN应用中的一个重要课题。
解决可靠性问题的一个有效的办法就是对总线进行不同程度的冗余,同时使用两(多)条总线电缆。本文简单列举了目前CAN冗余的几种方式,同时提出了网状冗余的全新冗余结构。采用内置多路CAN总线控制器的LPC2294作为主控制器,设计给出了应用于电源模块控制系统中的CAN总线网状冗余节点方案。
二、目前几种总线冗余方法
典型的CAN电路可分为4个环节,即单片机、总线控制器、CAN总线驱动器、总线。以下是目前从以上4个环节考虑的不同程度的冗余方法:
(1)总线驱动器的冗余
使用两条总线电缆,每个节点内部使用两个总线驱动器,但只有一个总线控制器,在总线控制器与两个总线驱动器之间设置判断电路。如果一个总线发生故障,则关闭它与总线控制器之间的信号通道,而正常总线上的报文仍能顺利送往总线控制器。
(2)CAN总线控制器的冗余
该冗余的思路是同时使用两条CAN总线,两个CAN总线驱动器和两个CAN总线控制器,单片机通过不同的端口和中断同时控制两个CAN控制器。
(3)全系统的冗余
该冗余的思路是对整个CAN系统的四个环节进行冗余。即同时使用两套单片机、总线控制器、CAN总线驱动器、总线。
三、新的冗余方式:网状冗余
在可靠性要求非常严格的场合,如电厂集散控制系统,基本采用网状冗余结构。由于CAN节点对系统的构成不敏感,全系统的冗余在发现总线故障以及总线切换及时性方面反而不如部分冗余方法,有鉴于此,本文提出了新的CAN冗余方式:网状冗余。
CAN网状冗余是对整个CAN网络、通讯节点进行冗余,如图1所示。同时使用两条CAN总线,两个CAN总线驱动器和两个CAN总线控制器,单片机通过不同的端口和中断同时控制两个CAN控制器,组成一个网络节点,再对节点进行冗余设计。

由于总线故障可以及时通过正常总线通知用户进行维护,网状冗余在发现总线故障及时性方面要比全系统冗余后备方式好。对于工业控制,尤其是本质安全型系统来说,这一优点是十分重要的。网状冗余兼有部分冗余和全系统冗余的优点,大大提高了系统的可靠性。当然,网状冗余系统软、硬件的复杂性和成本都提高了,但是,相对于在工作中系统可靠性的提高,这些牺牲是值得的。
四、电源模块控制系统中网状冗余节点设计
在电源模块控制系统中,电源模块控制仪的控制信号以毫秒量级速度向各电源柜发送控制指令,并获得各机柜的工作状态。各电源柜在获得指令后,同步执行控制动作,并返回执行状态。随着电源个数的增加,各电源间的实时性、同步性等关键性能下降。
为提高系统在实时性、同步性、精确性、容错性等各方面的性能,必须采用高精度同步通讯控制网络,使电源模块控制仪与电源模块之间的信号传输满足系统的技术性能要求。
本方案的CAN总线网状冗余节点,正是为满足电源模块控制系统对于可靠性、实时性的严格要求而设计的。
4.1节点设计思想
节点基本设计思想为:使用两块控制处理器组件,作为冗余的一对,冗余单元的硬件和软件结构完全相同,在任何一块组件发生硬件故障时,可提供连续的运行。单元的主备工作状态由上电顺序决定, 先上电的一方自动进入主机工作状态,后上电者则进入备机状态。主机在其工作过程中除实现应用功能外,定期向备机发送反映其工作正常的状态数据并接收来自备机的状态数据,当发生接收超时时,主机认为备机已经发生故障, 并通过总线向用户给出通知信号,以便及时对备机进行维护。备机在工作过程中不完成应用功能, 但定期接收来自主机的状态数据,当发生接收超时或接收到主机工作状态不正常时,自动切换成主机工作状态,并通过总线通知用户对原主机单元进行维护。[page]

图2 网状冗余在电源模块控制中的应用改进
进一步改进方案:在需要进一步提高系统的实时性的情况下,可以下载、上传分别使用图中A、B总线进行传输(如图2),从而可以将半双工类型的串行总线近似为全双工总线,理论上将系统的传输速率提高一倍,有效减少系统数据的传输延迟。极端情况下,即使上层网络或现场总线只有一个端口正常时,系统也不会崩溃,可以将该端口设成可收、发信息状态,只是降低了系统传输的速度,增加了控制信息传输延时,但与系统崩溃造成的损失相比将显得微不足道。
4.2节点硬件设计
设计选用PHILIPS公司新推出的一款功能强大的具有ARM7TDMI内核的32位微控制器LPC2294,内部集成有四路符合CAN规范CAN2.OB,ISO 11898-1标准的CAN控制器,总线数据波特率均可达1Mbps。
节点硬件电路组成:

CAN节点硬件电路如图3所示,由ARM微控制器LPC2294,CAN总线收发器TJA1050,高速光耦6N137和电源隔离模块B0505S等组成。由于四路CAN接口的外部电路完全一致,图中只给出了CAN3、CAN4接口的外部电路。
CAN控制器和物理总线之间的接口选用收发器TJA1050,不上电时,总线呈现无源特性,在性能上大大优于以前的CAN总线收发器。
4.3节点软件设计
    软件调试环境采用ARM公司的ARM核处理器集成开发工具ADSv1.2。ADSv1.2集成了汇编、C、C++编译器和调试器,编译效率高,提供了功能强大的系统库,支持软件调试JTAG仿真调试及硬件调试。
    对于一般的32位ARM应用系统,在运行主程序前必须初始化运行环境,即为ARM芯片编写启动代码。启动代码包括异常向量表、堆栈初始化、存储系统初始化和目标板初始化等,一般用汇编语言编写。对于本设计关键是编写CAN驱动程序,主程序通过调用驱动程序提供的接口来实现数据的接收和发送。驱动程序包括四部分内容:CAN控制器的初始化、接收数据、发送数据和总线异常处理。图4为主程序流程图。

图4 主程序流程图[page]

4.3.1 CAN控制器初始化
    初始化CAN控制器的操作包括:硬件使能、软件复位、设置报警界限、设置总线波特率、设置中断工作方式、设置验收滤波器工作方式、设置工作模式并启动CAN等。初始化程序如下:
HwEnCAN(CanNum); //硬件使能,CanNum=0-3,指四路CAN控制器
SoftRstCAN(CanNum); //软件复位寄存器CANEWL(CanNum).BitsEWL_BIT=USE_EWL_CAN[CanNum]; //设置报警界限CANBTR(CanNum).Word=USE_BTR_CAN[CanNum]; //初始化波特率
VICDefVectAddr=(UINT32)CANIntPrg; //初始化中断为非向量中断CANIER(CanNum).Word=USE_INT_CAN[CanNum];
CANAFMR.Bits.AccBP_BIT=1;  //设置验收滤波器CANMOD(CanNum).Bits.TPM_BIT=USE_TPM_CAN[CanNum];  //初始化工作模式
SoftEnCAN(CanNum);  //启动CAN端口
4.3.2数据发送
    将待发送的数据打包成符合CAN协议的帧格式后,便可写入发送缓冲区,并启动发送。
    在写发送缓冲区前应查询其状态。LPC2294中的每个CAN控制器有三个发送缓冲区,它们的状态可通过查询CANSR得知。只有当其中有空闲的发送缓冲区时才可将数据写入。
4.3.3数据接收
接收数据可采用查询方式或中断方式。为了提高效率,常采用中断方式。
在初始化程序中使能接收中断,在中断服务子程序中,读取CANICR,判断是否有接收中断标志,有则读取接收缓冲区数据。为了防止接收缓冲区数据溢出,可开辟一个循环接收数据队列来暂时存储数据,主程序通过查询该队列获得数据。
4.3.4异常情况处理
    在总线发生严重故障的情况下,CAN节点有可能脱离总线,此时以下寄存器位被置位:CANSR的BS位、CANIR的BEI位和EI位(如果使能)和CANMOD的RM位。
    在应用中,若前面传输到CAN控制器的数据未被读出,接收缓冲区没有及时释放,就有可能引起后面信息的丢失。这时必须通过写命令寄存器来清除CANSR的数据溢出位。这种异常可通过异常中断来处理,只要在中断子程序中加入处理代码即可。其它的总线异常处理可根据使用情况决定是否在软件中处理。
五、结束语
本文设计的CAN网状冗余节点应用于电源模块控制系统,正常通讯时,下载/上传分开网络传输,实现CAN全双工通讯,提高系统传输速率,减少了电源模块的动作延时;在节点出现问题时,通过热备节点进行通讯,实现了系统的完全冗余,大大提高了系统可靠性,满足系统对CAN网络节点的可靠性、实时性和同步性要求
 本文作者创新点:借鉴过程控制中网状冗余大大增强通讯可靠性的经验,为增加CAN总线可靠性,提出了CAN总线控制系统的全新网状冗余方式,及在电源模块控制系统中的节点冗余设计思想。

关键字:CAN  网状冗余  ARM节点 引用地址:CAN网状冗余及基于ARM节点设计

上一篇:基于ARM9&Linux的液晶驱动终端设计
下一篇:基于ARM的嵌入式SMTP远程控制设计

推荐阅读最新更新时间:2024-03-16 12:37

关于STM32中CAN中断的使用
如果你用的CAN引脚是PA11和PA12,接收中断用CAN1_RX0_IRQn。如果CAN引脚用的是PB8和PB9,也就是用重定义的引脚,接收中断用CAN1_RX1_IRQn。由于PA11和PA12也是USB的引脚,所以非互联型且带CAN控制器的微控制器的库文件在起名字时用了USB_LP_CAN1_RX0_IRQn。 具体的定义可以参考stm32F10x.h文件,其中对不同型号的中断有具体的定义。 示例如下: 1. 配置过滤器 CAN_FilterInitStructure.CAN_FilterNumber = 0; CAN_FilterInitStructure.CAN_FilterMode = CAN_F
[单片机]
基于STM32F1O5的CAN总线中继器的设计与实现
0 引言 CAN总线最初是为了解决汽车内部的信号传输问题而提出来的,目前广泛应用于工业现场控制单元、智能楼宇单元、矿业控制通讯、远程通讯节点等控制领域。受到CAN收发器的闲宣,总线上挂接的节点不能超过110个,两个节点间的最大通讯距离为10km,挂在总线上的节点要通讯必须具有相同的波特率。 为了能够在总线上挂接更多的节点,增加通信距离以及使具有不同波特率的节点或网络间进行通信,本文提出了一种使用具有双CAN口的MCU实现的CAN总线中继器。该中继器可大大缩短采用两个CPU时CAN接口的主从状态切换和CPU间通信的时间,提高系统的实时性。 1 CAN中继器硬件的设计 1.1 系统的硬件结构 本文设计的CAN总线中继器的系统
[单片机]
基于STM32F1O5的<font color='red'>CAN</font>总线中继器的设计与实现
浅谈CAN总线在风力发电中的重要性
1  引言   CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO118?8)。是国际上应用最广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。    2  系统结构与功能   本文基于分散控制系统理念,针对双馈型变速恒频风力发电
[嵌入式]
基于CAN总线和MSP430的CO红外检测系统设计
1 引言 一氧化碳(CO)是剧毒性气体,人体吸人后造成人体组织和细胞缺氧,导致引起中毒窒息。在煤矿井下,CO也是引起瓦斯爆炸的主要气体之一。CO无论是对工业生产还是人类都造成巨大的损害,因此,CO检测尤为重要,特别在煤矿井下,《煤矿安全规程》规定,井下作业场所的CO浓度应控制在0.002 4%以下。因此,实时、准确地测出井下CO气体浓度,对保障煤矿工业安全生产具有重要意义。 目前检测CO的方法主要有化学法、电化学法、气相色谱法等。这些方法普遍存在价格高、普适性差等问题,且测量精度较低。这里设计一种新的检测系统,选用红外CO传感器和MSP430单片机作为核心信号处理电路,结合数字滤波、温度补偿运算.具有检测浓度范围宽、使
[测试测量]
基于<font color='red'>CAN</font>总线和MSP430的CO红外检测系统设计
飞思卡尔MC9S12X:CAN发送配置
一、MSCAN发送流程 检查数据长度:超过8个就不发送了。 检查总线时钟:使用外部晶振时钟,此段可以省略。 寻找空闲缓冲器。 写入标识符:此处用到CANIDR寄存器。 判断帧类型(远程帧 /数据帧):此处用到CANIDR寄存器。 写入数据:此处用到CANDSR寄存器。 写入数据长度:此处用到CANDLR寄存器。 写入优先级:此处用到CANTBPR寄存器。 清除发送标志位 :此处用到CANTFLG寄存器。 二、MSCAN发送寄存器介绍 CANIDR寄存器有两种型式:标准帧型式和扩展帧型式。 标准帧型式: 扩展帧型式: 三、CAN发送配置具体程序实现 1.标准帧程序 具体代码如下: struct can_
[单片机]
飞思卡尔MC9S12X:<font color='red'>CAN</font>发送配置
CAN总线模块在机场跑道灯光控制中的应用
 系统介绍:   民航机场跑道灯,边线灯等是飞机安全着陆的重要条件,每当日光不足或者夜间,跑道灯一定要点亮以给准备着陆的飞机指示跑道的方向和轮廓,引导飞机安全着陆。当这些灯光部分损坏,会给飞机安全带来严重的后果。如何自动巡回检测这些灯光的工作状态是一个机场安全的重要课题。   具有专利技术的机场跑道单灯监控装置是可以同时监视从同一个供电的调光器控制的近百盏灯的装置。若干调光器联合工作构成了机场的跑道照明系统,而配套的若干监控装置也可以同时构成一套完整的监控系统。   设计要求:   1.将若干监控装置传来的灯状态信息集中并采集到数据库中(其中每个监控装置传送近百个灯状态)并通过软件动态显示在计算机屏幕上。每个灯根据故障或正
[工业控制]
<font color='red'>CAN</font>总线模块在机场跑道灯光控制中的应用
STM32CubeMX 之 CAN通讯
一、CAN总线简介 CAN是控制器局域网络(Controller Area Network,CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,是国际上应用最广泛的现场总线之一。 CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,信号是以两线之间的“差分”电压形式出现,这点与RS485类似,但两者电平值不同。CAN总线电平分为显性电平和隐性电平。 CAN总线采用两种互补的逻辑数值“显性”和“隐性”。其中,“显性”数值表示逻辑“0”,而“隐性”表示逻辑“1”。 当总线上同时出现“显性”位和“隐性”位时,最终呈现在总线上的是“显性”位。 在“隐性”状态下,VCAN_
[单片机]
基于CAN总线的蓄电池组充放电集散控制系统的设计
引 言 随着高科技及其产业的迅速发展,大存储容量的 蓄电池组 能源系统已经越来越被人们所重视,在诸如电动汽车、大功率UPS、电厂及变电站直流系统、通信系统等很多领域中都得到广泛应用。 蓄电池组是由一定数量的单体电池串联组成的,在使用过程中可能会有百次直至千次的充、放电。各单体蓄电池过充电、过放电或者放电不足均易引起电池的故障,某个单体蓄电池的故障也会导致整个蓄电池组的故障和损坏。因此,在线实时检测蓄电池组 充放电 各单体蓄电池的充放电电压、充放电时的温升以及整个蓄电池组的充放电电流、电压等参数,及时找出损坏或性能显著降低的蓄电池,对于延长电池的使用寿命、降低成本特别是提高直流供电系统的可靠性至关重要。鉴于上述情
[工业控制]
基于<font color='red'>CAN</font>总线的蓄电池组充放电集散控制系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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