采用单片机和MCP2510、MCP2551芯片设计集散型火灾报警控制系统
扫描二维码
随时随地手机看文章
随着经济建设的发展,社会对火灾报警控制系统的规模的要求越来越大,为了适应市场的需要,笔者利用CAN现场总线技术,设计出了一种集散型火灾报警控制系统,该系统结构灵活、使用方便,可满足大、中、小各种规模的火灾报警及消防控制的要求。CAN(Controller Area Network)即控制器区域网——一种有效的支持分布式控制和实时控制的串行通讯网络,由于其高性能、高可靠行,及独特的设计,越来越受到人们的重视,其总线规范已被ISO国际标准化组织制定为国际标准,并被公认为是最有前途的现场总线之一。本文主要介绍由MCP2510与MCP2551组成的CAN现场总线的在集散型火灾报警控制系统中的应用。
1、系统组成与工作原理概述
本文提出的基于CAN现场总线的集散型火灾报警控制系统的网络结构如图1所示,每个节点都以AT89C51单片机为节点控制器,MCP2510为总线控制器,MCP2551为总线收发器,其中,与控制台工作站相连接的节点被称为集中机,其余为区域机。在集中机中,所谓控制台工作站,就是一台PC机,单片机通过外部串行接口与控制台工作站交换信息。各个区域机分布在不同的地理位置上,独立地执行一个完整的任务。在本文系统中,一个区域机通过一种专门设计的探测器总线可以连接感烟、感光、感温等各种火警探测器,还可以借助适配器控制诸如喷水阀、卷帘门等各种消防设备以及各种声光报警设备,探测器总线上的设备通称为前端设备。利用CAN通信技术将区域机联网,管理人员在集中机上就可以观察各个部分的情况,便于管理和检测,随时可以了解到各区域机运行的是否正常,有无报警发生,也可以使各个区域机通过信息交互,实现资源共享,联防控制。每个区域机都是一个独立的基本报警控制单元,其功能与单独使用时的情况完全一样,它们从本区域机的探测器上采集数据,如有警情出现,在启动本区的有关消防设备的同时,通过CAN总线将报警信号传送给集中机,集中机再决定需要起动的由其它区域机管辖的有关消防设备,并通过CAN总线发出联动命令。另外,由于CAN总线是基于报文的,总线上的节点可以做到即插即用,因而系统的可扩展性比较好;并且,增删CAN总线上除集中机以外的任何一个节点,不会对其它的节点造成任何影响。
图1中的MCP2510是Microchip公司为简化CAN总线的接口应用而专门设计的一种独立CAN控制器芯片,支持 CAN协议2.0A/2.0B,最大可编程波特率为1Mbps;MCP2551是Microchip公司生产的可容错的高速CAN总线收发器芯片,支持1Mbps的运行速率,可连接高达112个节点,适合12V和24V系统,管脚特性与MCP2510完全兼容。
2 、硬件电路与SPI接口技术
图2是本文系统节点进行CAN通信的硬件电路图,在原理图中,总线控制器MCP2510与总线收发器MCP2551直接相连,因为它们的管脚是完全兼容的,另外,考虑到系统总线速率比较低,所以使MCP2551的斜率电阻输入引脚RS悬空,选择最小斜率,这样,既可将RFI抑制到最小,又可简化线路设计。下面重点说明一下MCP2510与AT89C51的接口技术。
图2 节点进行CAN通信的硬件接口电路
MCP2510面向单片机有1个高速SPI接口(5Mhz),该接口由片选控制输入CS、移位脉冲输入SCK、串行数据输入S I和输出SO等4个引脚组成。AT89C51不具备标准的SPI接口,但是,可以利用UART接口与SPI接口通信。图3为AT89C51的UART接口工作在方式0,即移位寄存器方式时的工作时序图。AT89C51的UART有4种工作方式,按方式0工作时,串行数据从RXD输入或输出,TXD输出移位脉冲,每次发送或接收8位数据,波特率固定为时钟频率的1/12,即1个位周期对应1个机器周期,1个机器周期由12个时钟周期组成,等分为6个状态(S1~S6),每个状态又等分为2个相位P1、P2,因此1个机器周期的12个时钟周期可记为S1P1、S1P2、S2P1、……、S6P2。TXD输出的移位脉冲在每个机器周期的S3、S4和S5期间为低电平,而在其余时间为高电平。发送时,每个机器周期的S6P2输出数据,数据有效时间完全覆盖了TXD输出脉冲的负半周,显然,无论是在TXD的上升沿,还是下降沿,外设都可从RXD输入有效数据。接收时,每个机器周期的S5P2输入数据,显然,外设如果在TXD的下降沿输出数据,单片机就可接收到有效数据。因为MCP2510的SPI接口是在SCK的上升沿输入数据,在SCK的下降沿输出数据,所以,在电路图中,可以将TXD直接作为SCK的输入信号。MCP2510的SPI接口在读过程中,首先接收单片机发出的读命令和地址,这时,输出信号线SO处于高祖态,之后,在输出数据时,输入信号线SI的状态可为任意值。而在写过程中,SO始终处于高阻态。一个写过程或读过程的启动或结束,都是由片选信号CS控制的。根据SPI接口的这一工作机理,在电路图中,将MCP2510的SI和SO连接在一起,形成一个双向信号线,再与AT89C51的准双向数据线RXD连接在一起,实验结果证明,MCP2510与AT89C51的这种连接方式是完全正确的。因为在单片机应用领域,51系列单片机一直是主流产品,所以将其应用于CAN总线系统,无疑可以降低成本,缩短开发周期。
为了实现与MCP2510的SPI接口交互,单片机的UART接口选择方式0,采用12MHz晶振作为单片机的时钟频率,在方式0下,波特率固定为1Mbps。在图2所示的硬件电路的支持下,AT89C51就可按照普通移位寄存器的方式与MCP2510进行数据交互,对MCP2510进行写操作和读操作的汇编语言子程序从略。值得指出的是,因为SPI传输数据的顺序是先高位后低位,与UART传输数据的顺序相反,因此,编写单片机与MCP2510的接口程序时,对MCP2510的控制字、状态字以及寄存器地址,要进行二进制到排处理。例如,MCP2510的接收缓冲寄存器RXB0的首地址是01010110B,单片机读其中的内容时,写入单片机的串口缓冲寄存器SBUF的地址值应该是01101010B。
3 、MCP2510初始化
MCP2510的初始化包括设定可编程引脚功能、总线波特率以及接收过滤器与屏蔽器,以下主要介绍总线波特率以及接收过滤器与屏蔽器的初始化。
3.1 波特率初始化
MCP2510内含的波特率发生器由可编程预分频器、固定2分频器和位定时器级连而成,它使设计者可以方便地选择所需要的任何波特率。在位定时器中,MCP2510将一个位周期依次分割为同步段、传播段、相位缓冲段1和相位缓冲段2等4个时间段,每个时间段的长度都是输入信号周期TQ的整数倍,其中同步段固定为1TQ,其余3个时间段的长度都是可编程的。所谓波特率初始化,就是设置可编程预分频器和位定时器各可编程时间段的值,使其满足波特率的需要。
根据CAN技术协议,波特率为1Mbps时,通信距离为40m,波特率为5Kbps时,通信距离最远可以达到10Km。考虑到本文系统既可用作一个高层楼宇的火灾报警控制网络,又可用作一个单位内部多个仓库、车间等的火灾报警控制网络,所以通信距离应该在数千米以上,而所要传输的数据量不大,故可以选择较低的波特率。在实际应用中,笔者选择波特率为8Kbps。
本文系统选择12Mhz晶体振荡器为MCP2510提供时钟信号。根据位定时器中各个时间段的长度必须满足的约束条件,初始化传播段寄存器PRSEG=3,相位缓冲段1寄存器PHSEG1=4,相位缓冲段2寄存器PHSEG2=4;然后初始化预分频器BRP=49。从而可得总分频系数为(49+1)×2×[1+(3+1)+(4+1)+(4+1)]=1500,最终获得8Kbps的波特率。
3.2 过滤器与屏蔽器初始化
MCP2510具有完善的总线争用功能,可用于分布式系统,但是,在火灾报警控制系统中,因为集中机担负着对区域机的监管任务,所以本文系统采用了集中-分散控制方式,集中机不断地巡回查询区域机,在工作台上随时反映区域机工作的情况,为工作人员提供维护设备的依据。
MCP2510支持标准帧、扩展帧和远程帧,数据段长度为0-8个字节。器件对CAN总线上的数据接收是通过2个接收缓冲器、6个接收过滤器和2个接收屏蔽器的组合来实现的。CAN总线上的帧只有至少满足一个接收过滤器的条件才可被接收。为了说明过滤器与屏蔽器的初始化方法,这里首先介绍报文帧。本文系统只使用标准数据帧进行数据传输。标准数据帧的长度为44+8n位,其中11位ID段在本文系统中被分为两部分,高7位用来表示区域机的逻辑地址码,整个系统允许接入的区域机最多为50个,低4位用来表示报文类型码。集中机发送的报文帧如表1所示,区域机发送的报文帧如表2所示。8n位数据段可有可无,在表1中,只有选呼联动报文含有数据段,表示请求联动的设备号,在表2中,只有请求点名报文不含数据段,其余报文必须至少含有1个字节数据,用来表示区域机的逻辑地址码,其余数据用来表示故障、报警的探测器号和设备号,或区域机配置。
表1:集中机发送的报文帧
表2:区域机发送的报文帧
表1中的xx xxxx表示集中机要访问的区域机的逻辑地址码。表1的报文是发送给区域机的,表2的报文是发送给集中机的,报文能否被接收,要由MCP2510的过滤器来决定,因此,初始化时,集中机按从上到下的顺序将表2中的数据依次写入MCP2510的过滤器RXF1~RXF5,区域机在用本机的逻辑地址码代替表1中的xx xxxx之后,也按从上到下的顺序将表1中的数据依次写入MCP2510的过滤器RXF1~RXF5,未曾用到的过滤器RXF0被设置为全“1”,使其不接收总线上的任何有效报文。初始化时,在区域机方面,将2个接收屏蔽器都设置为全“1”,在集中机方面,将接收屏蔽器RXM1设置为全“1”,而将RXM0设置为101 1011 1010B,表示除集中机的过滤器RXF1的SID9、SID6、SID2和SID0等4位外,过滤器的其余所有位都参与信息过滤,这是因为上述4位与请求点名帧的ID码在跳变位置上的隐性位相对应,而请求点名帧容许多个区域机同时发送,从而由传输延迟引起的码间串扰,很可能使这些位的状态不确定。
4 、通信过程简介
集散型火灾报警控制系统的通信过程,也就是集中机对区域机循环进行的点名和查询过程。在点名阶段,集中机发送广播点名帧,区域机以请求点名帧响应,若接收到未被登录的区域机发出的请求点名帧,集中机进行选呼点名,区域机以配置帧响应;在查询阶段,集中机反复判断有无自检请求,若有自检请求,则对区域机逐个选呼自检,区域机以配置帧响应,自检结束,继续选呼查询,区域机以正常帧、或故障帧,或报警帧响应,在查询中若接收到报警信号,再根据需要发送选呼联动帧,区域机以正常帧确认。
5 、结束语
实验结果表明,因为MCP2510具有完善的现场总线管理机制和面向单片机的SPI接口,一方面简化了系统的软、硬件设计,另一方面使节点控制器摆脱了对网络通信的频繁干预,从而大大提高了系统的整体性能,与采用RS232等其它串行通信技术的集散型系统相比较,本文提出的基于CAN总线的集散型火灾报警控制系统具有较高的安全性、可靠性和实时性,可用于各种场合的火灾报警控制。