收藏 分享(赏)

基于internet的楼宇自动化系统中的数据通信.doc

上传人:cjc2202537 文档编号:229437 上传时间:2018-03-24 格式:DOC 页数:13 大小:49.50KB
下载 相关 举报
基于internet的楼宇自动化系统中的数据通信.doc_第1页
第1页 / 共13页
基于internet的楼宇自动化系统中的数据通信.doc_第2页
第2页 / 共13页
基于internet的楼宇自动化系统中的数据通信.doc_第3页
第3页 / 共13页
基于internet的楼宇自动化系统中的数据通信.doc_第4页
第4页 / 共13页
基于internet的楼宇自动化系统中的数据通信.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、基于 Internet 的楼宇自动化系统中的数据通信第 25 卷VO1.25第 2 期NO.2计算机工程与设计COMPUTERENGINEERINGANDDESIGN2004 年 2 月Feb.2004文章编号:1000.7024(2004)02 019904基于 Internet中图分类号:TP393.06 文献标识码:A的楼宇自动化系统中的数据通信王艳,王猛(太原重型机械学院电子信息分院,山西太原 030024)摘要:介绍了基于 Interact 的楼宇自动化系统的概念及其子系统的功能和设计目标,在此基础上分析了数据通信的基本原理,提出了系统中的数据通信整体设计方案和实现方法,以便做到局域

2、和远程信息的实时监控,数据资源的综合共享以及全局事件的快速处理和一体化的科学管理,最后给出了用Vc+6.0 实现的例子.关键词:智能建筑;楼宇自动化系统;数据通信;实时监控;VC+6.0DatatrafficinbuildingautomationsystembasedonIntemetWANGYan,WANGMeng(TaiyuanHeavyMachineryInstitute,Taiyuan030024,China)Abstract:Combinedwiththecharacteristicofintelligentbuildings,theconceptandtheprojectgoal

3、ofthemodembuildingantomationsystemandthefunctionofitssubsystemareintroduced.Thekeystoneofdatatra 币CiSanalyzed.TheprojectofdatatmfnCanditsrealizationiSbroughtforwardinwholeinordertorealizetherea1.timeinformationwatchingandcontrollingbetweenthelocalareaandlongdistanceandtosharethedataresourcesynthetic

4、allyandtotreatwiththewholeeventfastandtointegratemanagementscientifically.IntheendtheprogramexamplebyVC+6.0iSpresented.Keywords:intelligentbuilding;buildingautomationsystem;datatraffic;realtimewatchingandcontrolling;visualC 十+6.01 引言随着信息系统以需求为中心 IOD(InformationOnDe.mand)概念的出现,智能大厦已从集成功能发展到集成系统和网络,从基

5、于单机应用发展到基于网络的协同应用.从信息交互上来看,已经从简单的状态信息组合和基于监控的处理,发展到基于内容的处理和融合,以及基于虚拟现实与多媒体技术的人机接口.Intemet 的迅速发展及其在楼宇自动化系统上的应用,使得物业管理人员足不出户就可对整个建筑完成监视,实时控制和适当的维护.通过 Intemet,世界上任一处的授权用户可获得所请求的数据,即使在千里之外也可监控整个楼宇自动化系统,从而使得系统中的数据通信也显得至关重要.2 楼宇自动化系统中的数据通信2.1 现代楼宇自动化系统的概念,功能和设计目标楼宇自动化系统(BAS)是按分布式信息与控制理论设计的集散监控系统,它是由计算机技术,

6、自动控制技术,通信网络技术和人机接口技术相互渗透而产生.通常楼宇设备自动化系统包括空调系统,给排水系统,变配电系统,照明系统,电梯系统等.基本控制功能主要体现在对空调系统的空气处理机,新风机组,变风量末端,冷水机组,热交换器等设备运行状态的监视,故障报警和启/停控制以及相应的节能管理.对给排水系统的水泵运行状态进行监视,故障报警和启/停控制,对水箱和水池的水位监视以及过限报警.对变配电系统的高压进线回路,低压出线回路,自发电机组进行电压,电流,功率,功率因素,相位,频度监视,以及对部分照明回路,动力设备进行必要的控制.基于 Intemet 的楼宇自动化系统的设计目标是在各子系统之间的信息共享和

7、集成的基础上提供反映楼宇现场的实时信息,网上计算机通过浏览器可实时查看现场数据,对大量实时数据进行分析,为大楼的管理,调度指挥等提供依据.系统应满足如下基本任务和要求:为各种基于 Web 的应用程序提供实时和历史数据接口,使系统的功能可横向扩展;数据发布及时 ,准确可靠,刷新速度快,保持和现场同步;保留历史数据;系统采用动态网页发布数据,客户计算机可通过浏基金项目:山西省科技攻关基金资助项目(200125).收稿日期:2002.12.25作者简介:王艳(1975.), 女, 河北昌黎人,硕士研究生,研究方向为计算机网络;王猛,教授,研究方向为计算机网络.一199览器直接使用.2.2 数据通信的

8、基本原理和整体设计方案系统采用 B/S 模型,B/S 结构模式的主要特点是集中式管理,将程序,数据库以及其它一些组件都集中到服务器上,客户端只需配置操作系统及浏览器就可实现对服务器端的访问.基于这种模式的监测系统采用了 3 层分布式结构:浏览器一 web 服务器一数据库服务器 ,表示层,提供可视界面,用户通过可视界面观察信息和数据,并向中间层发出服务请求;中间层(WebServer),实现正式的进程和逻辑规则,响应用户服务请求,是用户服务和数据服务层的逻辑桥梁;数据库服务层(DBServer),实现所有的典型数据处理活动,包括数据的获取,修改,更新及相关服务.Browser 端没有应用程序 ,

9、借助于 Javaapplet,Ac-tiveX,JavaScript,VBScript 等技术可处理一些简单的客户端处理逻辑,显示用户界面和 WebServer 端的运行结果.中问层负责接受远程或本地的数据查询请求,然后运行服务器脚本,借助于中间部件把数据请求通过数据库驱动程序发送到 DBServer 上以获取相关数据,再把结果数据转化成 HTML 及各种脚本传回客户的 Browse.DBServer端负责管理数据库,处理数据更新及完成查询要求,运行存储过程,可是集中式的也可是分布式的.在 3 层结构中,数据计算与数据处理集中在中间层,即功能层.由于中间层的服务器的性能容易提升,所以在 Int

10、emet 下的 3层结构可满足用户的需求.图 13 层分布式结构系统整体设计思想是通过上位机(监控机)把设备的各类实时数据从现场设备工控中采集出来,然后通过计算机网络把采集到的数据传输到数据库服务器,由 Web服务器的扩充 ActiveX 控件负责实时读取数据库中数据,并以各种形式动态显示给监控人员.2.3 实现方法与实例系统中的数据通信是由两个模块即数据采集模块和数据通信模块组成.(1)数据采集模块:数据采集模块主要是由串行通信机制来实现的.Windows 平台下串行通信的实现机制大体可分为两种:使用串行通信控件和使用 API 函数 .利用 API 函数编写实际应用程序时,要考虑多线程问题,

11、这样编写出来的程序不但十分庞大,而且结果比较复杂,继承性差,维护困难.但是使用串行通信控件就相对简单一些,而且功能强大,性能安全可靠.VisualC+6.0 提供的 MSComm 通信控件通过串行端口发送和接收数据,为应用程序提供串行通信功能,使用非常方便.该控件提供了一系列标准通信命令的接口,它允许建立串口连接,-200-可连接到其它通信设备,还可发送命令,进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可用它创建全双工的,事件驱动的,高效实用的通信程序.该模块由以下几部分组成:?串口初始化部分:负责对 RS.232 进行初始化设置,并且对底层控制协议进行初始化设置,例如

12、对缓冲区的大小进行设置,对串口的打开,关闭,监听等的调用.首先添加一成员变量:CMSCommnlCOlllln.nlcomm.SetCommPort(1):/选择 COM1CstringstrSettings(“9600,0,8,1“);/设置波特率等参数,9600bps,奇校验,8 位数据位,1 位停止位m_comm.SetSettings(strSettings);m.全部读取输入缓_commSetlnputLen(0);/冲区的数据mcomm.SetInputMode(1);/设置输入方式为二进制方式mcortllD_.SetOutBufferSize(512);/设置输出缓冲区的大小为

13、 512 个字节mcomm.SetlnBufferSize(1024);/设置输入缓冲区的大小为 1024 字节mcomm.SetRThreshold(1);/表示接收到一个字节就触发接收事件i!mcomm.GetPortOpen()mcomm.SetPortOpen(true);/打开串口?串口读写部分:在实际编写过程中,串口读写是串口通信的重点.在通信过程中以单字符方式逐个发送数据时,每个数据范围为 0-255(即十六进制的 00FF).中文 Windows 使用的是双字节字符集(DBCS)系统,使用0-128 之间的数字表示 ASCII 字符,大于 128 的数字作为前导字符,它只是显示

14、是一个非拉丁语系的字符,而并不代表任何实际意义.为解决这个问题,在串口读写部分采用字节数组-CByteArray, 每个 CByteArray 变量存储时只占一个字节,数值范围是 0-255,即 OOHFFH.因此要实现与下位机通信时,正确接收数值的范围为 OOHFFH的每个字节,就应抛开 CString 变量和字符的概念,将收发的数据作为字节处理.发送数据程序如下:voidCMyDlg:OnButtonSend()CByteArrayarray;/定义字节数组inti;intcount=7;array.RemoveAll0;/清空字节数组array.SetSize(count);/定义字节数

15、组的维数unsignedcharTxData7;/数组维数 0-6,一定为unsigned 类型TxDamo=oxff;/将发送数据 0FFH 先赋给TxDataTxData1=0x29;TxData2=0x25;TxData3=0x01;TxData4=0x10;TxData5=0x00;TxData6=0x5e;for(i=0;icount;i+)array.SetAt(i,TxDatai); 赋给字节数组m_Comm.SetOutput(COleVariant(array);发送数据,将 CString 型赋给 COleVariant,是以文本形式发送数据,将 CByteArray 型赋

16、给 COleVariant,是以文本形式发送数据MSComm 控件可采用轮询或事件驱动方法从端口获取数据,系统采用的是后者:有事件时通知程序.在程序中需要捕获并处理这些通信事件,接收数据程序如下:voidCMyDlg:OnComm()switch(mComm.GetCommEvent0)case2:/comEvReceive:接收事件VARIANTva;intsum;sum=mComm.GetlnBufferCount0;/接收到的字节数目va-n_Comm.Getlnput0;/读取输入缓冲区mComm.SetlnBufferCount(o);/清空输入缓冲区unsignedcharpBu/

17、一定为 unsigned,才能接收 o_一 255.pBuf=(unsignedchar)va.parray?pvData;/标准接收程序break;数据采集和处理程序作为数据转发应用程序的数据提供者,起到 DDE 服务器的作用,为使它们能进行数据交换,必须遵循 DDE(动态数据交换 )协议.由于监控系统对数据的实时性要求,DDE 应用程序的设计采用热链接方式.DDE 服务器应用程序使用一个 3 级的分级体制“服务名,主题名和项名 “来唯一地识别服务器应用程序可在会话中进行交换的数据单位.下面是作为 DDE 服务器数据采集和处理程序与作为客户端应用程序的数据转发与存储应用程序进行数据交互时的函

18、数调用过程:?调用 Ddelnitialize 函数进行初始化;DWORDdwDDEInst;Ddelnitialize(dwDDEInst,DDECallback,APPCLASSSTANDARD):?调用 DDENameService 登记它所支持的服务名:HSZhszService=DdeCreateStringHandle(dwDDEInst.“Service“,CPWINANSI);HSZhszTopiceDdeCreateStringHandle(dwDDEInst.“To?pic“,CP_W1NANSI);HSZhszltem=DdeCreateStringHandle(dwDD

19、EInst.“Item“,uP_WINANSI):DDENameService(dwDDElnst,hszService,NULL,DNSREGISTER);?DDE 服务器提供一个回调函数;HDDEDArACALLBACKDDECallback(UNITuType.UNITuFmt,HCONVhConv,HSZhsz1,HSZhsz2,HDDEDATAhData,DWORDdwDatal,DWORDdwData2)?当应用程序从底层现场总线采集到数据后,执行下列语句:DdePostAdvise(dwDDEInst,hszTopic,hszltem);这时,服务器的回调函数执行 caseXTY

20、PADVREQ,通过此函数,服务器应用程序与客户应用程序建立连接,将数据传到客户端应用程序.(2)数据通信模块:系统中的数据通信是由 WindowsSocket 来开发的.Windows 与其它操作系统不同,它是基于消息传递机制的非抢占多任务操作系统.对于每个应用程序,内部都有两条消息队列:Windows 的系统消息队列和应用程序的自定义消息队列.Windows 内核负责把每条消息及时地放入相应的消息队列中,并转发给特定的处理程序.处理程序接收到消息后,从 Windows 内核接过系统控制权,根据消息内容进行相应处理,直到处理完毕才把控制权还给 Windows 内核,内核再进行下条消息的转发和

21、处理.因此,在 WindowsSocket 下开发网络通信系统,应尽量采用 WindowsSocket 基于消息的异步存取策略.在 VisualC+6.0 的 MFC 库中,提供了对 Socket 的封装,有两个类(CAsyncSocket 类和 CSocket 类).CAsyncSocket 类封装了 WindowsSocketAPI,并将与 Socket 有关的Windows 消息转换为回调函数.CAsyncSocket 类更面向底层,因而使用起来更加灵活,但要求编程人员熟悉网络.CSocket 类是 CAsyncSocket 类的导出类,通过 MFC 中的 CArchive 类的对象提供

22、了更高层次的抽象 ,它封装了Socket 实现中的许多细节,并将 Socket 与归档(CArchive)相结合,使用它与使用 MFC 中的文档串行化协议相类似 ,使用便利.所以系统的开发就采用了 CSocket 编程.编程步骤如下:构造 Sockets 对象;使用该对象构造基本?201?的 Socket 句柄,对于 CSocket 客户端对象而言,需要在 Create 过程中指明一个端口;建立客户端 CSockets,调用CAsyncSocket:Connect 对象建立与服务器端 Sockets 的连接.服务器端 Sockets 调用 CAsyncSocket:listen 监听 ,并在收到客户端请求后调用 CAsyncSocket:Accept;构造CSocketFile 对象,并使 CSocket 对象与之关联;构造 CArchive 对象,用于接收或发送数据; 使用 CArchive 对象来

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 通信信息 > 数据通信与网络

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报