《匠人手记》推荐网上购书渠道:
互动出版网(china-pub)购书入口   >>>
当当网(dangdang)购书入口   >>>
卓越亚马逊网 购书入口   >>>
淘宝网(taobao)购书入口   >>>
更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历
载入中...

百宝专栏

载入中...
最新货色

载入中...

粉丝评论

载入中...

载入中...



百宝信息

载入中...

百宝流量

(2006-07-01开始)


匠人手记

 匠人观点: 好记性不如烂笔头  
 黑色幽默:三鹿门——后世畅想

一种基于CAN总线的集散型火灾报警控制系统
pcbomb 发表于 2008-5-12 10:39:00  阅读全文 | 回复(0) | 引用通告 | 编辑

摘  要  提出了一种基于CAN总线的集散型火灾报警控制系统的设计方案,系统以AT89C51单片机为节点控制器,MCP2510为总线控制器,MCP2551为总线收发器。文章主要介绍了AT89C51与MCP2510的SPI接口实现方法,以及MCP2510的初始化方法。
关键词   CAN现场总线   MCP2510   集中机    区域机

随着经济建设的发展,社会对火灾报警控制系统的规模的要求越来越大,为了适应市场的需要,笔者利用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控制器芯片3,支持 CAN协议2.0A/2.0B,最大可编程波特率为1Mbps;MCP2551是Microchip公司生产的可容错的高速CAN总线收发器芯片4,支持1Mbps的运行速率,可连接高达112个节点,适合12V和24V系统,管脚特性与MCP2510完全兼容。                                                                

硬件电路与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,即移位寄存器方式时的工作时序图2。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【1】。考虑到本文系统既可用作一个高层楼宇的火灾报警控制网络,又可用作一个单位内部多个仓库、车间等的火灾报警控制网络,所以通信距离应该在数千米以上,而所要传输的数据量不大,故可以选择较低的波特率。在实际应用中,笔者选择波特率为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:区域机发送的报文帧

类型

ID段

数据段

广播点名

111 0101 1111

n=0

选呼点名

1xx xxxx 0001

n=0

选呼自检

1xx xxxx 0010

n=0

选呼联动

1xx xxxx 0011

n=1~8

选呼查询

1xx xxxx 0100

n=0

类型

ID段

数据段

请求点名

011 1100 0111

n=0

配置

010 1010 0001

n=1~8

正常

010 1010 0010

n=1

故障

010 1010 0011

n=1~8

报警

010 1010 0100

n=1~8

 

表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总线的集散型火灾报警控制系统具有较高的安全性、可靠性和实时性,可用于各种场合的火灾报警控制。

 

参考文献

1   阳宪惠,现场总线技术及其应用,北京:清华大学出版社,2000.

2   张友德,飞利浦80C51系列单片机原理与应用技术手册,北京,航空航天大学出版社,1992.

3   带有SPITM接口的独立CAN控制器MCP2510, Microchip 公司, 2004, http:// ww1.microchip.com/downloads/en/

         DeviceDoc/21291e_cn.pdf .

4         MCP2551 High-Speed CAN Transceiver Data Sheet, DS21667,Microchip Technology, Inc.

看《匠人手记》,与匠人同行!北航出版,正在热卖!

发表评论:
载入中...

芯片专题

器件专题

软件专题

硬件专题

综合专题

项目专题

原创专题

器件检测
LCD LED
按键 触摸键
E2PROM
电池 电机
电阻 电容 电感

指令系统
软件算法
编程规范
滤波算法
串行通讯

PCB设计
I2C PWM
红外遥控
充电技术
中断 ADC 

匠人手记
匠人夜话
网络心路
一周热点串烧
从零开始玩PIC
DIY旋转时钟

广告5号位 [投放]


学习板、开发板、编程器、下载器、仿真器(查看详情……)

广告3号位 [投放]

站内搜索


站外搜索


百度  google
mp3  歌词 
图片  FLASH 
知道  文档
新闻  词典 
地图  mp3 
软件  天网 
雅虎  爱问 
搜狗  讯雷 
网讯  华军 
天空 

21IC器件搜索
百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人手记》21IC书友会
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     

    匠人原创

    往日酷贴

     
     
     

    大千八卦

    友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [柔月阁]

    [八楼的呼吸]

    [hotpower 的水潭]

    [xwj的文君阁]

    [所长的BLOG]

    [阿摆手记]

    [电子伙伴]

    [unaided的笔记]

    [小飞的笔记]

    [单片机开发联盟]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [数字电视之家]

    [SMARTCODE电子书斋]

    [软件开发之窗]

    [Armoric]

    [我爱研发网]

    [infernal的笔记]

    [雄鹰的空中加油站]

    [SunK]

    [逍遥电子]

    [ningpanda的博客]

    [C-Design]

    [一网见天下]

    [海边淘沙]

    [嵌入式365]

    [水牛的仓库]

    [股剩是怎样炼成的]

    [PIC论坛]

    [ICC AVR开发网]

    [中国高校自动化网]

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    !!! 《匠人的百宝箱》 !!!