基于PIC单片机的智能小区监控系统的设计
扫描二维码
随时随地手机看文章
1. 引言
随着生活水平的不断提高,人们对居住环境的要求也大大提高,对信息服务和安全防范的要求尤为突出.如何利用计算机和通信技术在智能化小区家庭智能管理系统中,对住户家庭水表、电表、煤气表的自动计量以及火灾、煤气泄漏、入室盗窃等警情的实时监控已经成为信息产业的热点技术.利用CAN总线技术虽然有其开放式、数字化、多点通信等诸多优点,但将其用于智能住宅小区,却因其成本偏高,目前在我国还难以推广.为此,作者开发出一种设备简单,成本低廉,便于维护经济型智能小区家庭管理系统,能有效地实现三表自动采集计费,防盗、防灾、自动报警和远程监控等功能.利用单片机进行实时采集,并将采集的数据通过串行口传给PC机,PC机完成数据的运算、存储、和打印。硬件通过PIC16FXX单片机实现,软件由VC++6.0实现.
2. 系统结构
系统是由一台PC机(上位机)和多台PIC单片机(下位机,作为终端控制器)构成分布式控制系统,PC机COM口带多个终端控制器,终端控制器地址设为 1-N。PC机采用巡查工作方式自动查询小区内所有终端控制器的报警状态,及时对各种报警信号做出响应,并通过有效手段(语音提示、电子地图标识等)向监控中心工作人员提供报警业主家庭有关地址、电话等详细信息,以便及时处理;同时通过抄表工作方式完成自动抄表以及报表输出等任务.终端控制器采集用户煤气表、电表、水表脉冲数据,实现3表自动计数;同时采集现场的防盗、防灾等信息,有意外事件发生时可自动启动报警器报警.PC机与终端控制器采用总线式网络结构相连,采用RS—485接口总线通信;RS485接口总线利用平衡发送和差分接收方式实现通信.,以半双工工作方式工作,最大传输距离可达 1200m,波特率在1200和38400b/s间可设置,RS485网络采用一对有补偿的双绞线。终端控制器采用PIC16FXX单片机,片中串行口加 MAX487转换器,选用在多点总线传输线中双向数据通信应用网络广泛使用的MAX487收发器,其特点是具有限斜率的驱动器,即驱动器发送数字信号,其沿边斜率是受限制的,这使电磁干扰(EMI)减至最小,并减少因电缆终端不匹配而产生的影响.接口接线简单,维护方便,保证了抄表的可靠性和监控的实时性.
3. 终端控制器硬件设计
为了简化硬件结构,将三表设计成脉冲表,报警探头为脉冲输出,从而避免了在控制器主板上使用A/D转换接口.本系统对表脉冲安排4路输入通道,利用单片机 PIC16FXX的PORTA端口输入,表脉冲和报警脉冲信号分别通过斯密特触发器波形整形和74LS244缓冲器进入CPU,在一定的采样周期内,CPU轮流查询用户表和报警的输入端口状态,并进行数据分析处理,存到EEPROM 24C16相应的存储区,等待中央计算机的查询和抄写.再安排4路输入通道用于对设防、撤防、解警和求助操作的遥控处理.串行接口器件LCD液晶显示器可显示表数据和有关报警状态等信息,所采用的液晶显示模块,内置显示RAM和驱动控制器,通过4线与单片机相连. 8KB串行EEPROM 24C16,用以存储用户各表的数据信息、报警状态信息和采集监控终端地址以及有关初始化信息.每个用户的采集监控终端设置不同的地址,从而保证采集数据的正确无误.
终端控制器工作过程如下:上电复位自检后,开始运行,指示灯闪烁表示程序开始正常工作,初始化LCD,脉冲表,密码,报警状态,键盘,串口。然后进入主程序循环,首先记录报警状态,脉冲表数据,然后将上述两种数据存入24C16中,查询键盘,通过串口响应PC机通信命令与PC机之间进行数据传输。
4. 系统通信
通信的发起方总是主机开始,由PC机控制通讯的主动性,单片机在通讯过程中处于被动地位。由于各分机共享同一频率,为避免冲突,PC机通过巡查分机的工作方式查询各单片机是否有信息要上报给PC机。
为了保证PC机与多台单片机之间能够准确、可靠的通信,确定一个明确而合理的通讯协议是关键。包括对数据格式、通讯方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定。
为区分不同的分机,必须为每一个分机分配一个唯一的地址,此地址唯一区别各单片机。数据格式采用数据包的形式,一次传输一组数据,数据包格式如下所示:
起始标志位:1个字节 数据长度:1个字节
分机地址:1个字节 数据内容:n个字节
和检验:2个字节 命令/数据:1个字节
结束标志位:1个字节
主机向单个单片机传数据时,首先,上位机顺次发送起始标志位,目的地址位,数据,生成检验位,结束标志位,上位机发送后每个下位机都产生中断把上位机数据包都接收下来,当接收到结束标志字符时,表示接受到一帧完整的数据包,然后对数据解包,把接收到的目的地和本机地址进行比较,如果不是则马上跳出中断服务程序,相同的话则表示要和本下位机进行通讯。主机发完信息后便等待该分机的接收应答。当接收数据包完成后,接受方也生成相应的检验和,如果接受方生成的检验和与接收到的检验和一致,则表明这次通讯成功,下位机根据接收到的内容给上位机发送相应的反馈信息。如果不一致,则表明此次通讯失败,下位机给上位机发送失败信息,要求上位机重新发送。
由于系统采用上位机巡查下位机的工作方式,单片机在通信过程中处于被动地位,只能其被轮询到的时候才能给上位机发送数据,否则即使信息要上报主机时,也必须处于等待。上位机从第一分机依次查询下位机,给巡查到的下位机发送查询命令,询问该单片机是否有信息要上报给上位机。被轮询的单片机如果没有信息要上报给上位机的话就给上位机发送无上报要求的指令,上位机接受到此指令后便轮询下一地址的分机;若分机有数据需上报便回发一个有上报要求给主机,主机收到后便等待分机上报数据,有上报数据的分机组织好数据后上报给主机,然后等待主机的接收应答。主机收到分机上报的数据后进行检查,若正确接收发正确接收应答,否则发错误接收应答。当接收错误后,主机等待分机再次上报数据,分机收到接收错误应答后再次发送数据。
信号传输中接受与发送都采用中断方式,多机通信从机中断服务程序如图3所示。
5.PC机通信程序设计
上位机的软件是基于VC++6.0实现的,其中的重点和难点是进行实时的串行通讯。应用VC++编写串行通信程序,通常可归纳为如下四种方法:一是利用 Windows API通信函数;二是使用Microsoft提供的Microsoft Communications Control控件(简称MSComm);三是利用第三方编写的通信类(如MuMega Technologies公司提供的Cserial类);四是在VC++中用端口操作指令直接对串行端口编程,实现串行通信。本系统中采用的是 MSComm控件,它是通过串行端口发送和接收数据,为应用程序提供串行通信功能,使用非常方便。
6.小结
本系统提出的通讯硬件和通讯协议已经在实际中使用,截止目前运行正常。这说明这种通讯方案在PC机和多台单片机的数据通讯中快速、准确、可靠的。
参考文献:
[1] 李朝青,PC机及单片机数据通讯技术[M],北京:北京航空航天大学出版社,2000
[2] 阳宪惠,现场总线技术及其应用[M],北京:清华大学出版社,1999
[3] 王仲文,精通串行口通讯[M],北京:电子工业出版社,1995