您的位置: 旅游网 > 社会

基于MCU的家庭防盗报警系统奢侈品市场和消费

发布时间:2020-02-15 20:48:35

基于MB90F543微控制器的双CAN冗余设计 - 通讯/络 - 电子工程

在双CAN冗余系统中,较之硬件结构而言,软件设计相对复杂很多。一般的CAN总线通讯程序必须包括 CAN初始化程序、CAN发送程序和CAN接收程序三个基本部份。在本冗余系统软件设计中,上面三部份作为三个最基本的模块,供系统其它软件模块调用。

MB90F543可以处理256种中断源,与CAN控制器相干的硬件中断有四个:CAN0 RX(CAN0 接收完全中断)、CAN0 TX /NS(CAN0 发送完全/节点状态改变中断)、CAN1 RX(CAN1 接收完全中断)、CAN1 TX /NS(CAN1 发送完全/节点状态改变中断)。在本软件设计中,采取查询发送,中断接收。节点状态改变中断子程序,用于对节点状态改变的处理。这是由于在CAN2.0协议中规定节点处于下面3种状态之一:毛病激活态、疏忽毛病态、脱离总线态。在MB90500系列中还多规定了一种正告态,它表明发送/接收毛病计数器的值超过96。节点状态改变会引发相应中断。

由于系统采取双CAN冗余热备份方式运行,所以两个CAN控制器必须都处于热备份状态。系统中所有节点的两个CAN控制器经初始化后都随时准备接收信息,但有且只有一个CAN控制器在发送信息。换言之,在一个时间点上,系统中有且唯一一路 CAN通道在工作,另外一路处于监听状态(正常工作时),或故障状态(产生故障时)。

双CAN冗余控制系统较之单CAN控制系统在软件设计上的复杂之处,关键在于CAN系统故障检测及CAN系统自动切换。由于采取两套完全独立的传输介质、总线驱动器和总线控制器,因此它们能分别独立检测到自己通道的故障,比如CANH与CANL短路,CANH或CANL断开、CANH与地短路、CANL与电源短路、总线驱动器破坏等。实际调试中发现, 如果CANH、CANL断开或只有一个发送器在总线上,均会造成发送/接收错误计数器不断增加到128,使节点处于忽略毛病态;而CANH与CANL短路、CANH与地短路或CANL与电源短路均会造成发送/接收错误计数器不断增加到256,使节点处于总线脱离态。所以,通过节点状态改变中断子程序中调用CAN冗余模块,可以到达实现上述故障自动检测及CAN系统自动切换的目的。CAN0节点状态改变中断子程序以下:

__interrupt void NodeStateTransmitInt0(void)

{

if (CSR0_NT) /*节点状态改变*/

{

CSR0_NT = 0; /*中断标志复位*/

if ( (CSR0_NS = =2 ) (CSR0_NS = =3 ) ) /*断路或短路引起*/

{

NoWaitFlg = 1; /*一个互斥标志*/

Bus0Error( ) ; /* Bus0Error( )停止CAN0, 启动冗余CAN1子程序*/

}

}

ICR00 =3; /*改变中断优先级,使定时器0中断优先*/

ICR03 =2;

}

另外,在CAN总线通讯进程中,当某个信息缓冲器的数据发送完成后,发送完成寄存器中相应的位将被置为1。在查询发送过程中,通过判断这1寄存器可以知道该次发送是不是完成。但如果发送不成功,则会使系统一直在等待,造成系统死机。所以软件必须在这里设定一个等待时段,超过这1时段则调用CAN冗余系统,停止主CAN通道,启用从CAN通道。

软件设计中还要注意这样一个问题,备用CAN切换完成后,如何恢复原来的通信任务。解决办法是编制一个任务标志列表,备用CAN切换后,读该表便可获得系统原来进行的任务,实现原来通讯任务的可靠切换。

2.2实现总线管理功能

在本系统的软件设计中,除用于数据发送和接收的实时数据通信程序外,还包括用于对各个节点进行管理的通讯管理程序。所有节点分为主节点和从节点。它们的区别在于主节点具有总线管理功能,可以进行在线节点统计,辨认离线节点并采取处理措施;而从节点没有这个功能。主节点只设一个,而允许多个从节点。总线管理功能程序供主节点每隔一段时间调用,来判断所有的节点是不是都在线:如果所有节点都在线,则认为总线正常;否则辨认离线节点,并作相应处理。设计思路是系统主节点定时向总线上所有从节点发送1远程帧,各个从节点收到后,将自己的节点编号放在一数据帧中发送给主节点,主节点根据收到的节点编号来判断是不是有节点故障离线。在本系统中,节点编号(模块地址)由模块上的DIP开关设定。主节点通信流程如图3所示。

女性乳房疼痛吃什么药
前列腺增生用药哪个好
儿童健脾粥
血脂全套检查多少钱
男子阳痿怎样治
猜你会喜欢的
猜你会喜欢的