版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子科技大学毕业设计(论文)论文题目:基于计算机网络控制平台下实现智能建筑设备监控自动化系统(BAS)设计学习中心(或办学单位):电子科技大学网络教育学院指导老师:职称:副教授学生姓名:学号:专业:计算机科学与技术电子科技大学继续教育学院制网络教育学院2009年11月12日电子科技大学毕业设计(论文)任务书题目:基于计算机网络控制平台下实现智能建筑BAS系统设计任务与要求:1、了解智能建筑BAS系统主要构成及计算机网络系统集成要求2、了解智能建筑BAS系统各子系统控制硬件设计及相应集成系统架构3、完成对智能建筑BAS系统各子系统控制的硬件及软件设计时间:2009年9月15日至 2009年11月15日共8周学习中心:(或办学单位)电子科技大学网络教育学院学生姓名: 学号:W08860442103专业:计算机科学与技术指导单位或教研室:电子科技大学网络教育学院南昌中心指导教师: 职称:副教授电子科技大学继续教育学院制网络教育学院2009年11月15日
毕业设计(论文)进度计划表日期工作内容执行情况指导教师
签字9月15日
至9月20日了解智能建筑的主要构成及系统要求9月21日至9月30日了解智能建筑中对计算机集成系统设计的要求10月3日至10月15日完成智能建筑中各子系统的硬件配置架构10月16日至11月10日完成智能建筑BAS软件设计并实现对其各子系统集中控制监测11月1日至11月10日完成软件及硬件调试设计以实现智能建筑的需求11月11日至11月15日完成毕业论文设计教师对进度计划实施情况总评签名年月日本表作评定学生平时成绩的依据之一。
摘要自第一座带有智能化概念的建筑物于1984年在美国诞生以来,楼宇智能化已经成为当今建筑发展的主流技术。目前,随着信息产业的高速发展,智能系统这个名词已逐渐被人们所认识,在北京、上海、广州、深圳等地也不断地涌现出了一大批智能楼宇大厦。所谓的智能楼宇,就是一种基于计算机网络控制平台,对照明、变配电、电梯、安防、通讯、广播、空调、消防、门禁、会议等各项子系统的监测与建筑物有机的结合,最大限度的满足使用者舒适性、方便性的要求,以达到节能、高效管理、快速的信息化服务等目的。照明控制系统作为建筑物的一个必不可少的电气系统,其发展随着信息技术的不断发展也在发生日新月异的变化,传统的照明控制逐渐被智能照明控制所替代。关键词计算机应用于建筑智能化单片机AT89S52;串行通信;A/D转换;D/A转换;
目录TOC\o"1-4"\h\z18315第一章绪言 1259851.1系统开发背景和系统设计的意义 1261901.2设计目标 1197851.3设计实现功能 212260第二章、系统设备配置及连接示意图 416292.1系统配置需求 4310422.2系统设备连接示意图 5107712.3系统主要设备配置简介 6301632.4上述主要设备硬件电路的设计框图: 718410第三章BAS各楼宇控制子系统设计界面 74673.1与调节/控制的风阀及水阀的设计界面 748633.2、与配电控制箱的设计界面 8298083.3、与制冷机组、电梯等自带控制装置的设计界面 9235963.4、与变配电、照明等系统的设计界面 924574第四章、软件系统设计 9178944.1主程序流程图 963384.2各子模块程序设计 10185284.2.1时钟处理模块 10243534.2.2键盘处理模块 1139684.2.3显示模块 12123394.2.4串行通信模块 13188434.3运用电脑串行通信采集外部DDC控制设备的数据程序设计 1361574.3.1主要电脑控件软件代码设计 13299904.3.2采集DDC数据程序调试界面 3531552结束语 3527823谢辞 3614684参考文献 37第一章绪言1.1系统开发背景和系统设计的意义根据建设部智能化大楼甲级设计的技术应用与功能要求,以及结合物业管理的需要,写字楼“总体设计”中配置了先进的楼宇设备自动化系统(BAS)。该系统可以实现大楼内:生活用水系统、消防用水系统、喷灌用水系统的水位的监视和水泵的自动启停,变配电设备的监视管理、冷热源设备监控管理,电梯的运行状态和故障报警(电梯锁人)信息进行远程集中监视和网络化分布式监视,以及大楼内公共照明和景观照明的自动化监视和控制。1.2设计目标对智能化内的空调系统、给排水系统、变配电与照明系统,以及电梯等机电设备进行工作状态的实时监视和控制,实现公共设备的最优化管理并降低故障率。同时,利用传感器技术和网络通讯控制技术,可以根据自然光亮度和使用要求,采用智能开关方式和定时自动控制方式实现智能化内公共照明及环境灯光的自动控制。从而达到优化整个智能化灯光照明,延长灯具寿命和节约能源的目的。-公共建筑物内的空调系统设备的监控与节能管理;-智能化给排水设备(水泵、电控阀等相关设备)运行状态显示、控制、查询、故障报警;蓄水池(含消防水池)、污水池的水位高低状态的检测;饮用蓄水池的过滤、杀菌设备控制监视;-智能化变配电设备与电力供应状态显示、数据与参数查询、故障报警;-智能化公共照明的开启、关闭,以及时间设定;公共照明控制回路的开启设定;灯光场景的设定及照度的调整;-智能化电梯设备运行状态的监视与显示,控制、运行参数查询、故障报警以及停电时的紧急状态处理;1.3设计实现功能智能化设备监控自动化系统(BAS采用采用先进的多层次、多用户、多任务、可独立工作的集散控制系统结构,可以完成多种不同的楼宇设备自控功能。本系统也能在监测层和数据层提供容错功能和冗余功能,当控制系统发生错误时能自动切换,最大限度地保证了系统的可靠性,使关健设备和系统能连续不间断地运行。各子系统通过中央计算机管理系统集中管理,由区域的智能控制单元直接进行控制,智能控制单元与中央计算机管理系统以RS-485接口进行通信。系统中分散的智能控制单元的操作运行是高度自治的,并不依赖中央控制软件。当系统通信故障时,智能控制单元,仍然能正常完成监测和调控的功能。同样也能够利用处理局部化的原则,可以减少各计算机用户终端及区域智能控制单元之间的通讯量。1)智能控制单元功能-以设定的周期对采样点与调控点进行数值和状态的巡回检测,并可将检测结果传送给中央计算机管理系统。-智能控制单元对监测信号和输出信号进行A/D和D/A转换,设定转换的数值转换率及偏差值。-对模拟输入量进行正确的测量,确定合理性的数值波动区域,滤除波动值,以使系统得到正确的响应和显示正确读数。-对于模拟量可设定“预先警告”和“实际警报”界限,并可和实际检测值进行逻辑性比较,越限时发出相应的状态信号,并报警信息以中继方式立刻传送给中央计算机管理系统。-可消除开关量输入信号反跳,防止可能引起的无意义报警。-智能控制单元中的内存储器,注入的过程控制的PID算法和完成逻辑运算的控制算法,每一个ICU回路的执行,均可由程序员设定ICU程序,包括对全部输出所指定的初始值,同时系统管理中央计算机能够完成,对全部ICU设定点的程序显示和修改。全部ICU程序均可以由智能控制单元独立的自动执行,也可以由操作员手动执行。-智能控制单元监控软件具有接通、分断时间积分运算,根据开关量状态进行时间(含接通时间积算和分断时间),并与设备运行极限时间比较,实现设备管理自动化。积算的时间以1min精度累计,达1×104h以上,当设定运行时间极限积算值超过极限设定值时,系统发出请求设备维修报警。-由内部程序决定的输出点开/关控制。-由内部程序决定模拟量的输出值,用于驱动调节阀、变速电机、变频调速器、调节风门的位置。-智能控制单元接受中央计算机管理系统传送的各种时间程序、事件程序、逻辑控制模式、过程控制模式及控制指令,以具体实施中央计算机管理系统的所有功能。2)空调机设备监控功能-空气处理机的监控原理是根据温度传感器所检测的温度送往智能控制单元与设定点温度相比较,用比例加积分、微分控制,输出相应的控制电压信号,以调节电动调节阀动作,使回风温度保持在所设定的温度范围内。3)给排水设备监控功能根据系统需求,对空调水系统、生活用水系统,以及消防用水系统的设备运行状态进行监视、故障报警和启停控制,自动切换备用水泵;对水泵、水箱、关健阀门和水池(水箱)的水位进行监视,报警及故障提示。对给排水系统进行节能控制,系统管理中心制定检修和保养计划,并按照系统运行状况自动开列设备维护和管理工作单。4)变配电设备监控功能对智能化高低压控制柜切换开关的电压、电流、功率、频率的数值进行统计、过限报警以及状态监视。对变压器的进行温度监视。对系统进行节能控制,交连开关的切换状态监视,以及动力设备联动控制。故障报警和负荷记录分析,对自发电机组的参数、工作状态进行监测,显示故障和过载报警。对租户的用电量进行自动计量。5)公共照明监控功能可以将智能化内的公共照明设备按需分成若干组别,以时间区域程序来设定设备的开/关,以达到节能效果。当有保安报警时,相应区域的照明灯开启。智能化的艺术照明和室外照明的自动控制。6)电梯设备监控功能对智能化内电梯设备进行集中监测和管理。通过BAS系统监控中心,以图形方式显示电梯的运行状态,当电梯发生故障时,向系统管理中心报警。建立电梯运行档案和维护档案。第二章、系统设备配置及连接示意图2.1系统配置需求-本次设计主要针对南昌市广场南路恒茂国际华城5A级写字楼实现网络控制平台下建筑智能设备监控自动化系统BAS,并满足国家对智能化大楼甲级设计的技术应用与功能要求。-恒茂写字楼内公共建筑物内的空调设备和冷热源设备的运行状态显示、控制、参数设置、查询、故障报警的监控与节能运行管理;-恒茂写字楼内给排水机电设备(水泵、电控阀等相关设备)运行状态显示、控制、参数设置、查询、故障报警的监控与节能运行管理;-恒茂写字楼内蓄水池(含消防水池)、污水池的水位高低状态的检测;给排水机电设备的运行状态显示、控制、参数设置、查询、故障报警的监控与节能运行管理;-恒茂写字楼内变配电设备与电力供应状态显示、控制、参数设置、查询、故障报警的监控与节能运行管理;-恒茂写字楼内电梯运行楼层状态的显示、查询、故障报警的监控与节能运行管理;以及停电时的紧急状态处理;-公共照明的开启、关闭,以及时间设定节能运行管理;-公共泛光照明控制回路的开启设定节能运行管理;-照明控制:以时间或事件的程序控制方式,开启或关闭按区域划分的照明组。……2.2系统设备连接示意图BMS网络服务器(BASiSweb-1)BMS网络服务器(BASiSweb-1)机电设备监控主机(BASiServer)大楼Intranet局域网络交换机大楼Intranet局域网络交换机BAS区域控制器BAS区域控制器(NIU-4)控制输出(DO/AO)状态输入(DI/AI)现场DDC(QADDCPE)控制输出(DO/AO)状态输入(DI/AI)现场DDC(QADDCPE)机电设备监控管理系统BAS设备连接示意图智能大楼网络平台下设备监控BAS管理集成系统图……2.3系统主要设备配置简介2.3.1NIU-4机电设备监控区域控制器配置:RS485控制总线/12个通用输出点(D1或AI)/8个通用输入点(DO)/4个数字量输出点(AO)2.3.2现场DDC控制器配置:RS485控制总线/6个通用输入点(D1或AI)/6个通用输出点(DO)/2个模拟量输出点(AO)2.3.3水位开关-型号:61F/新加坡QA/OEM-配置:开关量信号2.3.4电压传感器-型号:RTX-V/新加坡QA/OEM-配置:0-10V/模拟量信号2.3.5电流传感器-型号:RTX-A/新加坡QA/OEM-配置:0-10V/模拟量信号2.4上述主要设备硬件电路的设计框图:外部采集电路A/D转换电路D/A转换电路外部存储器按键电路LED显示电路控制器单片机AT89S52电源电路MAX232电平转换外部采集电路A/D转换电路D/A转换电路外部存储器按键电路LED显示电路控制器单片机AT89S52电源电路MAX232电平转换电路PC机图3系统硬件设计框图第三章BAS各楼宇控制子系统设计界面3.1与调节/控制的风阀及水阀的设计界面一般系统中风阀与水阀的规格及控制模式,由设备工程师根据工况条件计算确定。因此,风阀与水阀调节/控制设计应与设备工程师配合,了解风阀与水阀的电动操作机构,配置相适应控制器。实际工程设计中,设备招标前风阀与水阀的电动操作机构往往难以准确确定,DDC输出类型。还存在另一种情况,调节阀由控制工程师选配,这时需设备工程师提出控制工况要求,控制工程师应根据管径计算选择调节阀规格及控制模式。风阀的控制应根据工况要求选择电动操作机构或配电子定位装置。3.2、与配电控制箱的设计界面◎配电控制箱内设本地与远程转换开关和控制用隔离中间继电器(无源或有源AC220V,见下图),本地手动控制,远程靠BAS的DDC向配电控制装置发出遥控启/停信号,并接收风机运行状态、过负荷及本地/远程控制转换开关状态信号。◎本地DDC的电源(AC220V)由配电控制箱提供,上图DDC有源控制和无源控制两种方式,笔者认为优选有源控制,因有时配电控制回路并未设控制隔离变压器,这样无源控制触点有可能直接接人AC220V回路,造成与其他控制线路不能共管敷设;另一方面,自控系统的控制电源宜由自己提供,避免造成扯皮现象。以上这些需要在采购配电控制箱之前提出来,便于厂家加工。3.3、与制冷机组、电梯等自带控制装置的设计界面一种是将监控信号采用干接点的方式接人BAS的DDC;一种是采用通信接口点对点或总线的方式接入BAS。干接点的方式实现起来比较简单,也比较可靠,不足之处是采集的信息量比较少;采用通信接口的方式可以克服干接点的不足,但实现起来比较难,受通信协议是否标准、厂家是否开放编码表等因素的制约。3.4、与变配电、照明等系统的设计界面系统中的遥控单元、智能化仪表或开关、照明控制单元、电参数变送器等自动化器件,应配合强电设计选配,预置在配电柜或照明箱中。第四章、软件系统设计4.1主程序流程图系统由AT89S52单片机作为中央控制器,控制各功能模块的正常工作及数据的接收和处理。系统分为五个模块,分别为:时钟、串行通信、键盘扫描、显示子程序。但在此我们没有外部传感器采集电路,因而不能进行A/D和D/A转换,整个软件系统是这样来设计的:首先上位机编辑好源程序再转换为相应的可执行的二进制代码文件由串口通信程序经过串口传送到单片机中存储。通过按键来控制系统的功能,主程序的流程图如下图所示:开始开始系统初始化系统初始化键盘处理子程序键盘处理键盘处理子程序键盘处理时钟时钟处理子程序时钟时钟处理子程序串行通信串行处理子程序串行通信串行处理子程序A/D、D/A转换A/D、D/A转换LED显示LED显示返回返回图:系统主程序主程序流程图图:系统主程序主程序流程图4.2各子模块程序设计4.2.1时钟处理模块时钟子程序的流程图如图所示:开始开始定时中断10ms定时中断10ms是否为60?是否为60?YN是否为60?是否为60?NY小时加1,分钟复位小时加1,分钟复位是否为24?Y是否为24?YN秒加1,毫秒复位分钟加1,秒复位秒加1,毫秒复位分钟加1,秒复位Y小时复位返回小时复位返回图18时钟流程图4.2.2键盘处理模块设有5个按键分别由P2.3—P2.7来检测,当开关被按下时为“0”电平,因此要取反向和0X0F作AND运算,但同时只能按下一个键,其源程序如下所示://onekeydetectVoidInputkey1(void){Bytekeytmp;Keytmp=~(P2.3-P2.7)&0x0f;//”0”:activeIf(keytmp==1)keydata=KEY1;Elseif(keytmp==2)keydata=KEY2;Elseif(keytmp==4)keydata=KEY3;Elseif(keytmp==8)keydata=KEY4;Elseif(keytmp==16)keydaata=KEY5;}4.2.3显示模块显示模块程序的流程较简单,在此就不画流程图,其源程序如下所示:voidScrShift(ucharkeyIndex) /*六位数码管顺序左移*/{uchari; for(i=5;i>0;i--){DisplayArray[i]=DisplayArray[i-1]; }DisplayArray[0]=c_keyCode[keyIndex]; } voidClearScr(void) /*清屏*/{uchari; for(i=0;i<6;i++) {DisplayArray[i]=0x00;} }4.2.4串行通信模块串行通信子程序的流程图如图所示:开中断开中断串口是否空闲?串口是否空闲?YN发送数据发送数据接收数据接收数据关空闲信号关空闲信号返回返回图:串行通信程序流程图4.3运用电脑串行通信采集外部DDC控制设备的数据程序设计4.3.1主要电脑控件软件代码设计'最小化右下角PrivateDeclareFunctionShell_NotifyIconLib"shell32.dll"Alias"Shell_NotifyIconA"(ByValdwMessageAsLong,lpDataAsNOTIFYICONDATA)AsLong'dwMessage可以是以下NIM_ADD、NIM_DELETE、NIM_MODIFY标识符之一PrivateConstNIM_ADD=&H0'在任务栏中增加一个图标PrivateConstNIM_DELETE=&H2'删除任务栏中的一个图标PrivateConstNIM_MODIFY=&H1'修改任务栏中个图标信息PrivateConstNIF_MESSAGE=&H1'NOTIFYICONDATA结构中uFlags的控制信息PrivateConstNIF_ICON=&H2PrivateConstNIF_TIP=&H4PrivateConstWM_MOUSEMOVE=&H200'当鼠标指针移至图标上PrivateConstWM_LBUTTONUP=&H202'单击事件PrivateConstWM_DBUTTONUP=&H203'双击事件PrivateConstWM_RBUTTONUP=&H205PrivateTypeNOTIFYICONDATAcbSizeAsLong'该数据结构的大小hwndAsLong'处理任务栏中图标的窗口句柄uIDAsLong'定义的任务栏中图标的标识uFlagsAsLong'任务栏图标功能控制,可以是以下值的组合(一般全包括)'NIF_MESSAGE表示发送控制消息;'NIF_ICON表示显示控制栏中的图标;'NIF_TIP表示任务栏中的图标有动态提示。uCallbackMessageAsLong'任务栏图标通过它与用户程序交换消息,处理该消息的窗口由hWnd决定hIconAsLong'任务栏中的图标的控制句柄szTipAsString*64'图标的提示信息EndTypeDimtAsNOTIFYICONDATADimNodeIDAsStringPrivateSubForm_Load()'加载串口'设置默认发送接收关闭状态blnAutoSendFlag2=FalseblnReceiveFlag2=FalseblnAutoSendFlag5=FalseblnReceiveFlag5=FalseblnAutoSendFlag6=FalseblnReceiveFlag6=FalseblnAutoSendFlag7=FalseblnReceiveFlag7=False'默认显示宽度位数为8intHexWidth=11'接收初始化intReceiveLen=0'默认发送方式为ASCIItwoResceerMesfiveResceerMessixResceerMessevResceerMesNodeID=1EndSubPrivateSubSetComm(ByRefcomAsInteger)SelectCasecomCase2WithMSComm2If.PortOpen=TrueThen.PortOpen=FalseEndIf.CommPort=com.Settings="9600,N,8,1".InBufferSize=1024.OutBufferSize=1024.InputMode=comInputModeBinary.InputLen=0.SThreshold=0.InBufferCount=0.OutBufferCount=0IfNot.PortOpenThenOnErrorResumeNext.PortOpen=TrueIfErrThenMsgBox"串口已经被占用"ExitSubEndIfEndIfEndWithCase5WithMSComm5If.PortOpen=TrueThen.PortOpen=FalseEndIf.CommPort=com.Settings="9600,N,8,1".InBufferSize=1024.OutBufferSize=1024.InputMode=comInputModeBinary.InputLen=0.SThreshold=0.InBufferCount=0.OutBufferCount=0IfNot.PortOpenThenOnErrorResumeNext.PortOpen=TrueIfErrThenMsgBox"串口已经被占用"ExitSubEndIfEndIfEndWithCase6WithMSComm6If.PortOpen=TrueThen.PortOpen=FalseEndIf.CommPort=com.Settings="9600,N,8,1".InBufferSize=1024.OutBufferSize=1024.InputMode=comInputModeBinary.InputLen=0.SThreshold=0.InBufferCount=0.OutBufferCount=0IfNot.PortOpenThenOnErrorResumeNext.PortOpen=TrueIfErrThenMsgBox"串口已经被占用"ExitSubEndIfEndIfEndWithCase7WithMSComm7If.PortOpen=TrueThen.PortOpen=FalseEndIf.CommPort=com.Settings="9600,N,8,1".InBufferSize=1024.OutBufferSize=1024.InputMode=comInputModeBinary.InputLen=0.SThreshold=0.InBufferCount=0.OutBufferCount=0IfNot.PortOpenThenOnErrorResumeNext.PortOpen=TrueIfErrThenMsgBox"串口已经被占用"ExitSubEndIfEndIfEndWithEndSelectEndSubPrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SelectCaseCLng(X)CaseWM_MOUSEMOVECaseWM_DBUTTONUPfrmMain.Visible=TrueCaseWM_LBUTTONUPEndSelectEndSubPrivateSubForm_Resize()IffrmMain.WindowState=1Thent.cbSize=Len(t)t.hwnd=Me.hwndt.uID=0t.uFlags=NIF_ICONOrNIF_MESSAGEOrNIF_TIPt.uCallbackMessage=WM_MOUSEMOVEt.hIcon=Me.Icon.Handlet.szTip="QuantumAutomationLiftServer"&Chr(13)&Chr(10)Shell_NotifyIconNIM_ADD,tApp.TaskVisible=FalsefrmMain.HidefrmMain.WindowState=0ElsefrmMain.ShowEndIfEndSubPrivateSubMSComm2_OnComm()DimbytInput()AsByteDimintInputLenAsIntegerSelectCaseMSComm2.CommEventCasecomEvReceive'IfblnReceiveFlag1ThenIfNotMSComm2.PortOpenThenMSComm2.CommPort=2MSComm2.Settings=strSetMSComm2.PortOpen=TrueEndIf'此处添加处理接收的代码MSComm2.InputMode=comInputModeBinaryintInputLen=MSComm2.InBufferCountReDimbytInput(intInputLen)bytInput=MSComm2.InputCalltwoInputManage(bytInput,intInputLen)'CallGetDisplayText'CalldisplayIfNotblnAutoSendFlag2AndNotblnReceiveFlag2ThenMSComm2.PortOpen=FalseEndIf'EndIfok=TrueEndSelectEndSubPrivateSubMSComm5_OnComm()DimbytInput()AsByteDimintInputLenAsIntegerSelectCaseMSComm5.CommEventCasecomEvReceive'IfblnReceiveFlag5ThenIfNotMSComm5.PortOpenThenMSComm5.CommPort=5MSComm5.Settings=strSetMSComm5.PortOpen=TrueEndIf'此处添加处理接收的代码MSComm5.InputMode=comInputModeBinaryintInputLen=MSComm5.InBufferCountReDimbytInput(intInputLen)bytInput=MSComm5.InputCallfiveInputManage(bytInput,intInputLen)'CallGetDisplayText5'Calldisplay5IfNotblnAutoSendFlag5AndNotblnReceiveFlag5ThenMSComm5.PortOpen=FalseEndIf'EndIfEndSelectEndSubPrivateSubMSComm6_OnComm()DimbytInput()AsByteDimintInputLenAsIntegerSelectCaseMSComm6.CommEventCasecomEvReceive'IfblnReceiveFlag1ThenIfNotMSComm6.PortOpenThenMSComm6.CommPort=6MSComm6.Settings=strSetMSComm6.PortOpen=TrueEndIf'此处添加处理接收的代码MSComm6.InputMode=comInputModeBinaryintInputLen=MSComm6.InBufferCountReDimbytInput(intInputLen)bytInput=MSComm6.InputCallsixInputManage(bytInput,intInputLen)'CallGetDisplayText'CalldisplayIfNotblnAutoSendFlag6AndNotblnReceiveFlag6ThenMSComm6.PortOpen=FalseEndIf'EndIfok=TrueEndSelectEndSubPrivateSubMSComm7_OnComm()DimbytInput()AsByteDimintInputLenAsIntegerSelectCaseMSComm7.CommEventCasecomEvReceive'IfblnReceiveFlag1ThenIfNotMSComm7.PortOpenThenMSComm7.CommPort=7MSComm7.Settings=strSetMSComm7.PortOpen=TrueEndIf'此处添加处理接收的代码MSComm7.InputMode=comInputModeBinaryintInputLen=MSComm7.InBufferCountReDimbytInput(intInputLen)bytInput=MSComm7.InputCallelvInputManage(bytInput,intInputLen)'CallGetDisplayText'CalldisplayIfNotblnAutoSendFlag7AndNotblnReceiveFlag7ThenMSComm7.PortOpen=FalseEndIf'EndIfok=TrueEndSelectEndSubPrivateSubTimer1_Timer()Dims1AsStringSendCInt(NodeID),CInt(NodeID+1)s1=Mid(ReceiveMes2,11,1)Text1.Text=s1'IfCStr(NodeID)=s1ThenResceCInt(NodeID)txtReceive.Text=txtReceive.Text+SendMes+Chr$(13)+Chr$(10)+ReceiveMes2+ReceiveMes5+ReceiveMes6+ReceiveMes7+Chr$(13)+Chr$(10)txtReceive.SelLength=1txtReceive.SelStart=Len(txtReceive.Text)'EndIfNodeID=NodeID+1IfNodeID=8ThenNodeID=1EndSubPrivateFunctionSend(iiAsInteger,jjAsInteger)DimlongthAsIntegerstrSendText="A5810"+CStr(ii)+"00008"+CStr(jj)+"5A"SendMes="TX:"&Replace(strSendText,"","")longth=strHexToByteArray(strSendText,bytSendByte())'SetComm(2)'WithMSComm2'Iflongth>0Then'.Output=bytSendByte'EndIf'EndWith'SetComm(5)'WithMSComm5'Iflongth>0Then'.Output=bytSendByte'EndIf'EndWithSetComm(6)WithMSComm6Iflongth>0Then.Output=bytSendByteEndIfEndWith'SetComm(7)'WithMSComm7'Iflongth>0Then'.Output=bytSendByte'EndIf'EndWithEndFunctionPrivateFunctionResce(iAsInteger)DimfloorAsStringDimstateAsStringDimcodeAsIntegerIfReceiveMes2<>""Thenfloor=SixteenTurnTen(CStr(Mid(ReceiveMes2,18,2)))state=SixteenTurnTen(CStr(Mid(ReceiveMes2,22,2)))code=SixteenTurnTen(CStr(Mid(ReceiveMes2,11,1)))WritePrivateProfileString"datasourse","inNodeno"+CStr(code),CStr(code),"F:\qa\Bin\lift.ini"WritePrivateProfileString"datasourse","floow"+CStr(code),floor,"F:\qa\Bin\lift.ini"WritePrivateProfileString"datasourse","state"+CStr(code),state,"F:\qa\Bin\lift.ini"EndIfIfReceiveMes5<>""Thencode=0floor=SixteenTurnTen(CStr(Mid(ReceiveMes5,18,2)))state=SixteenTurnTen(CStr(Mid(ReceiveMes5,22,2)))code=SixteenTurnTen(CStr(Mid(ReceiveMes5,11,1)))WritePrivateProfileString"datasourse","inNodeno"+CStr(code+4),CStr(code+4),"F:\qa\Bin\lift.ini"WritePrivateProfileString"datasourse","floow"+CStr(code+4),floor,"F:\qa\Bin\lift.ini"WritePrivateProfileString"datasourse","state"+CStr(code+4),state,"F:\qa\Bin\lift.ini"Text2.Text=CStr(floor)+CStr(state)EndIfIfReceiveMes6<>""Thencode=0floor=SixteenTurnTen(CStr(Mid(ReceiveMes6,18,2)))state=SixteenTurnTen(CStr(Mid(ReceiveMes6,22,2)))code=SixteenTurnTen(CStr(Mid(ReceiveMes6,11,1)))WritePrivateProfileString"datasourse","inNodeno"+CStr(code+11),CStr(code+11),"F:\qa\Bin\lift.ini"WritePrivateProfileString"datasourse","floow"+CStr(code+11),floor,"F:\qa\Bin\lift.ini"WritePrivateProfileString"datasourse","state"+CStr(code+11),state,"F:\qa\Bin\lift.ini"EndIfIfReceiveMes7<>""Thencode=0floor=SixteenTurnTen(CStr(Mid(ReceiveMes7,18,2)))state=SixteenTurnTen(CStr(Mid(ReceiveMes7,22,2)))code=SixteenTurnTen(CStr(Mid(ReceiveMes7,11,1)))WritePrivateProfileString"datasourse","inNodeno"+CStr(code+15),CStr(code+15),"F:\qa\Bin\lift.ini"WritePrivateProfileString"datasourse","floow"+CStr(code+15),floor,"F:\qa\Bin\lift.ini"WritePrivateProfileString"datasourse","state"+CStr(code+15),state,"F:\qa\Bin\lift.ini"EndIfEndFunctionPrivateFunctionSixteenTurnTen(ByValvarNumAsString)AsStringSixteenTurnTen=Val("&H"&CStr(varNum))EndFunction'2号端口PrivateSubtwoResceerMes()'接收数据IfblnReceiveFlag2ThenIfNotblnAutoSendFlag2AndNotblnReceiveFlag2ThenMSComm2.PortOpen=FalseEndIfElseIfNotMSComm2.PortOpenThenMSComm2.CommPort=2MSComm2.Settings=strSetMSComm2.PortOpen=TrueEndIfMSComm2.InputLen=0MSComm2.InputMode=0MSComm2.InBufferCount=0MSComm2.RThreshold=1EndIfblnReceiveFlag2=NotblnReceiveFlag2EndSub'5号端口PrivateSubfiveResceerMes()'接收数据IfblnReceiveFlag5ThenIfNotblnAutoSendFlag5AndNotblnReceiveFlag5ThenMSComm5.PortOpen=FalseEndIfElseIfNotMSComm5.PortOpenThenMSComm5.CommPort=5MSComm5.Settings=strSetMSComm5.PortOpen=TrueEndIfMSComm5.InputLen=0MSComm5.InputMode=0MSComm5.InBufferCount=0MSComm5.RThreshold=1EndIfblnReceiveFlag5=NotblnReceiveFlag5EndSub'6号端口PrivateSubsixResceerMes()'接收数据IfblnReceiveFlag6ThenIfNotblnAutoSendFlag6AndNotblnReceiveFlag6ThenMSComm6.PortOpen=FalseEndIfElseIfNotMSComm6.PortOpenThenMSComm6.CommPort=6MSComm6.Settings=strSetMSComm6.PortOpen=TrueEndIfMSComm6.InputLen=0MSComm6.InputMode=0MSComm6.InBufferCount=0MSComm6.RThreshold=1EndIfblnReceiveFlag6=NotblnReceiveFlag6EndSub'7号端口PrivateSubsevResceerMes()'接收数据IfblnReceiveFlag7ThenIfNotblnAutoSendFlag7AndNotblnReceiveFlag7ThenMSComm7.PortOpen=FalseEndIfElseIfNotMSComm7.PortOpenThenMSComm7.CommPort=7MSComm7.Settings=strSetMSComm7.PortOpen=TrueEndIfMSComm7.InputLen=0MSComm7.InputMode=0MSComm7.InBufferCount=0MSComm7.RThreshold=1EndIfblnReceiveFlag7=NotblnReceiveFlag7EndSub'**********************************'字符串表示的十六进制数据转化为相应的字节串'返回转化后的字节数'**********************************FunctionstrHexToByteArray(strTextAsString,bytByte()AsByte)AsIntegerDimHexDataAsInteger'十六进制(二进制)数据字节对应值DimhstrAsString*1'高位字符DimlstrAsString*1'低位字符DimHighHexDataAsInteger'高位数值DimLowHexDataAsInteger'低位数值DimHexDataLenAsInteger'字节数DimStringLenAsInteger'字符串长度DimAccountAsInteger'计数strTestn=""'设初值HexDataLen=0strHexToByteArray=0StringLen=Len(strText)Account=StringLen\2ReDimbytByte(Account)Forn=1ToStringLenDo'清除空格hstr=Mid(strText,n,1)n=n+1If(n-1)>StringLenThenHexDataLen=HexDataLen-1ExitForEndIfLoopWhilehstr=""Dolstr=Mid(strText,n,1)n=n+1If(n-1)>StringLenThenHexDataLen=HexDataLen-1ExitForEndIfLoopWhilelstr=""n=n-1Ifn>StringLenThenHexDataLen=HexDataLen-1ExitForEndIfHighHexData=ConvertHexChr(hstr)LowHexData=ConvertHexChr(lstr)IfHighHexData=-1OrLowHexData=-1Then'遇到非法字符中断转化HexDataLen=HexDataLen-1ExitForElseHexData=HighHexData*16+LowHexDatabytByte(HexDataLen)=HexDataHexDataLen=HexDataLen+1EndIfNextnIfHexDataLen>0Then'修正最后一次循环改变的数值HexDataLen=HexDataLen-1ReDimPreservebytByte(HexDataLen)ElseReDimPreservebytByte(0)EndIfIfStringLen=0Then'如果是空串,则不会进入循环体strHexToByteArray=0ElsestrHexToByteArray=HexDataLen+1EndIfEndFunction'**********************************'字符表示的十六进制数转化为相应的整数'错误则返回-1'**********************************FunctionConvertHexChr(strAsString)AsIntegerDimtestAsIntegertest=Asc(str)Iftest>=Asc("0")Andtest<=Asc("9")Thentest=test-Asc("0")ElseIftest>=Asc("a")Andtest<=Asc("f")Thentest=test-Asc("a")+10ElseIftest>=Asc("A")Andtest<=Asc("F")Thentest=test-Asc("A")+10Elsetest=-1'出错信息EndIfConvertHexChr=testEndFunctionPrivateSubTimer8_Timer()IfLen(txtReceive.Text)>1078ThentxtReceive.Text=""EndIfEndSub4.3.2采集DDC数据程序调试界面程序调试界面运行之后结果如下图结束语以上是对计算机网络平台下实现智能建筑设备监控系统的应用及解决方案的一个介绍,我们知道智能建筑控制系统不仅可以满足和实现不同的设备监视及控制要求,实现建筑智能设备的高层管理,改善工作和居住环境,提高工作效率,还可以节约能源,延长建筑设备寿命,减少维护费用。随着建筑和智能设备技术的进步,智能设备和建筑融为一体,已成为建筑艺术的一部分,让我们大家共同努力,将更多的智能控制系统应用到智能建筑的设计中去,营造出艺术、智能化的建筑环境,赋予建筑与生命。致谢 经过几个月的努力,我按时完成了毕业设计。毕业设计是对电子科技大学网络学院所学知识的综合应用,也是理论走向实践的第一步,在此设计过程中,我更深刻地理解了设计的概念,扩展了知识面,加深理解了某些知识点,提高了独立思考和自学的能力,更重要的是提高了实践能力,为以后走向工作岗位奠定了基础,这将使我终身受益。当懂得很多以前没有弄懂的知识时,心中充满了欣慰。在此首先感谢母校的辛勤培育之恩;其次,感谢电子科技大学网络教育学院计算机科学技术及应用系给我提供了很好的设计环境,使我的设计得以顺利的进行。最后,感谢设计指导老师,他渊博的专业知识,严谨的治学作风,育人求实的工作态度都体现在这次设计的指导中;每当我遇到困难时,他总是耐心细致地给我讲解,帮助我度过一个又一个难关,使得我的设计能有条不紊的进行。对在整个毕业设计过程中,老师给予的指导和帮助,我表示衷心的感谢;另外系上其他老师和同学都给了我大力支持和帮助,对这些老师和同学表示诚挚的谢意;谢谢你们。在未来的工作和学习中,我将以更好的成绩来回报各位领导和老师。
参考文献[1]杨将新,李华军等.单片机程序设计及应用[M].电子工业出版社,2006:142—154.[2]范风强,兰蝉丽.单片机语言C51应用实战集锦[M].电子工业出版社,2005:212—23
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年过敏源地刺模拟试题(含答案)
- 多项式多参数依赖系统稳定性分析:理论、方法与应用
- 多重视角下我国P2P网贷平台风险管理的剖析与对策
- 多通道心电采集系统:从原理到创新设计的深度剖析
- 2027届北京市海淀区中学关村中学中考物理全真模拟试卷含解析
- 江苏省南通市通州区2027届中考二模物理试题含解析
- 2027届江苏省扬州市仪征市新集初级中学中考物理模拟预测题含解析
- 2026届通渭县数学三下期中教学质量检测试题(含答案解析)
- 2026届运城市闻喜县数学三年级第二学期期中教学质量检测模拟试题(含解析)
- 2026年结核病知识竞赛试题(含答案)
- 河南的介绍教学课件
- 工程QC培训教学课件
- 2024-2025学年福建省福州市鼓楼区多校六年级(上)期中数学试卷
- 2025-2026华为ICT大赛-云赛道理论考试题库(核心500题)
- 青岛版二年级数学上册第六单元“用2-6的乘法口诀求商”教学设计
- 个人校本研修方案模板
- Unit 5 Period 1 Listening and Speaking(教学设计)英语人教版2019必修第一册
- 2025包头辅警考试真题
- 高级英语2 (第四版)张汉熙 练习答案
- 2024-2025学年江苏省苏州市高二上学期11月期中考试生物试题(解析版)
- 收购矿山调研报告范文
评论
0/150
提交评论