基于LPC2294控制器的CAN总线网状冗余节点方案

发布时间:2023-03-23  

一、概述

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 节点设计思想

节点基本设计思想为:使用两块控制处理器组件,作为冗余的一对,冗余单元的硬件和软件结构完全相同,在任何一块组件发生硬件故障时,可提供连续的运行。单元的主备工作状态由上电顺序决定, 先上电的一方自动进入主机工作状态,后上电者则进入备机状态。主机在其工作过程中除实现应用功能外,定期向备机发送反映其工作正常的状态数据并接收来自备机的状态数据,当发生接收超时时,主机认为备机已经发生故障, 并通过总线向用户给出通知信号,以便及时对备机进行维护。备机在工作过程中不完成应用功能, 但定期接收来自主机的状态数据,当发生接收超时或接收到主机工作状态不正常时,自动切换成主机工作状态,并通过总线通知用户对原主机单元进行维护。


进一步改进方案:在需要进一步提高系统的实时性的情况下,可以下载、上传分别使用图中A、B总线进行传输(如图2),从而可以将半双工类型的串行总线近似为全双工总线,理论上将系统的传输速率提高一倍,有效减少系统数据的传输延迟。极端情况下,即使上层网络或现场总线只有一个端口正常时,系统也不会崩溃,可以将该端口设成可收、发信息状态,只是降低了系统传输的速度,增加了控制信息传输延时,但与系统崩溃造成的损失相比将显得微不足道。

图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 主程序流程图

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控制器的驱动及相关寄存器进行初始化操作。初始化完成后,CAN总线关闭故障就会立即解除。为了避免该节点在CAN网络中频繁发生总线关闭问题,建议在初始化后,不要立即对外发送CAN报文。 上文......
    器的值,对CAN控制器的驱动及相关寄存器进行初始化操作。初始化完成后,CAN总线关闭故障就会立即解除。为了避免该节点在CAN网络中频繁发生总线关闭问题,建议在初始化后,不要立即对外发送CAN报文。 从下......
    MAX3050数据手册和产品信息;MAX3050/MAX3057接口连接于控制器区域网(CAN)协议控制器CAN总线的物理线路之间。这些器件主要用于要求数据传输速率高达2Mbps的汽车系统,在高电压电力总线......
    Area Network),是一种区域网络控制器,通过它将车辆内的各个控制单元以特定的方式连接在一起,形成一个完整的系统。在这个系统中,各个单元之间使用公认的数据传输协议进行交流和沟通。CAN总线......
    模块在程序主循环中调用, 根据不同总线错误状态执行收发通道切换。CAN 总线错误状态分为3类: 错误激活、错误认可、总线关闭总线正常工作时处于错误激活状态,控制器检测到错误后将发送/接收......
    如何使用正确的示波器简化 CAN 总线网络测试;车载网络 (IVN) 能够让微控制器和发动机控制单元 (ECU) 处理器与传感器、执行器、指示器、显示器之间实现相互通信。控制器区域网络 (CAN......
    螺钉固定。 高压输入隔离开窗设计 印制板单点接地 印制板背面全是信号测试点(TP) 端口TVS、ESD保护二极管    中信国安盟固利检查  TJA1043高速CAN收发器在控制器区域网络......
    助于确定车辆电子系统中的问题,并保障车辆的安全和可靠性。本文将介绍五种常见的汽车总线系统和相关的测试工具。 CAN总线 …… 控制器区域网(Controller Area Network,CAN)是一种常用于现代汽车中的数据通讯总线......
    助于确定车辆电子系统中的问题,并保障车辆的安全和可靠性。本文将介绍五种常见的汽车总线系统和相关的测试工具。 CAN总线 …… 控制器区域网(Controller Area Network,CAN)是一种常用于现代汽车中的数据通讯总线......
    ,这是一款高度集成,高速控制器区域网络CAN)板卡,它可为配有PCI Express接口的任意标准计算机板卡增加2个高速(ISO11898-2标准)CAN通道。尺寸为86x69mm,比Kvaser......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>