电子说
作者:李聪,李春梅,周志群,张瑞芳
1 概述
建筑耗能数量大,比例高,发达国家建筑用能比例一般为全国总能耗的30%~40%,所占能耗比重很大。在我国,建筑能耗占全社会总能耗的27.6%,而民用建筑能耗中住宅能耗占60%。与之对应,建筑节能潜力巨大。
建筑节能,冬季建筑外窗散热是一个大问题。国家标准《建筑外窗保温性能分级及检测方法》(GB/T8484―2002),要求检测建筑外窗的传热系数,判定建筑外窗的保温性能等级。检测标准中采用的检测设备如图1所示。
该装置是基于稳定传热原理,采用标定热箱法检测窗户保温性能。试件一侧为热箱,模拟采暖建筑冬季室内气候条件,另一侧为冷箱,模拟冬季室外气候条件。在对试件缝隙进行密封处理,试件两侧各自保持稳定的空气温度、气流速度和热辐射条件下,测量热箱中电暖气的发热量,减去通过热箱外壁和试件框的热损失,除以试件面积与两侧空气温差的乘积,即可计算出试件的传热系数K值(K值为在稳定传热条件下,外窗两侧空气温差为1℃,单位时间内通过单位面积的传热量以W/(m2·K)计。试件传热系数K值按下式计算:
式中:Q为电暖气的发热功率;M1△θ1为热箱外壁的热损失;M2△θ2为试件框的热损失;S·Λ·△θ3为填充板的热损失;A为试件的面积;△t试件两侧的温差。
2 系统硬件结构
国标中要求热箱空气温度的设定范围为18℃~20℃,冷箱空气温度的设定范围为-19℃~-21℃,所以装置中需要两台温度控制仪表,分别用来控制热室和冷室内的温度。另外,检测过程中需要用到多个温度测点的温度值和电暖气的加热功率,故装置中还需要一台32路温度巡检仪表和一台功率计。以上智能仪表作为整个测控系统的从机部分,主机部分为通用微型计算机,两者通过半双工RS-232/RS-485标准总线接口通信,采用双绞线进行信号传输。在这种系统结构下,作为下位机的智能仪表完成测量控制功能,便于快速构造系统并保证测控精度。
由于从机部分的仪表较多,并且通信协议和通信接口不一致,故系统采用多串口通信。功率计为RS-232接口,故单独为其分配一个串口;32路温度巡检仪和两个温度控制仪为RS-485接口,而PC一般只有RS-232接口,需要RS-232/RS-485接口转换器。系统的总体硬件框图如图2所示。巡检仪按国家标准外接的温度传感器采用铜一康铜热电偶,要求的温度测点很多,所以同类温度测点的热电偶可以并联。具体装置尺寸及材质、热箱外壁和试件框热流系数标定、试件框的面积划分、温度测点的分布、热电偶的筛选和校验等详细要求请参见有关国家标准。
3 系统软件结构
系统软件总体框图如图3所示。它充分利用了Windows系统允许多进程、多线程的编程特点,开辟了两个线程;还利用了VC++的面向对象的设计思想,把有关的数据结构及其操作完全封装类中。系统主要实现的功能有下位机数据采集、主界面显示、实时曲线显示、数据存储、历史曲线显示、检测结果测定、检测报告和历史报告记录的浏览及打印、数据库清理及维护等。
3.1多线程
系统软件的进程分成两个线程:主线程(用户界面线程)和通信线程(辅助线程)。主线程定时启动通信线程,通信线程执行完一次通信任务后挂起。主线程能够提供界面和用户交互,通常用于处理用户输入并响应各种事件和消息,而通信线程主要用来进行上位机与下位机之间的通信。主线程由AppWizard生成,下面主要介绍通信线程的设计。
要创建一个线程,需要调用函数AfxBeginThread。该函数因参数重载不同而具有两种版本,分别对应辅助线程和用户界面线程。无论是辅助线程还是用户界面线程,都需要指定额外的参数以修改优先级、堆栈大小、创建标志和安全特性等。函数AfxBeginThread返回指向CWinThread类对象的指针。同样,在CMain-View的构造函数中调用AfxBeginThread函数:
在启动通信线程之前,必须为线程的主程序编写一个全局函数。这个函数应该返回一个UINT,它应该以一个32位值(声明为IPVOID)作为参数。在启动线程的时候,可以使用这个参数来传递任何东西,在AfxBeginThread函数中传递的是this->GetDocument()(文档类的指针),这样就可以在辅助线程中使用文档类的数据。在辅助线程中,要采集下位机数据,然后挂起线程,等待定时器OnTimer函数恢复线程。
3.2串口通信
辅助线程的主要工作是PC通过串口采集下位机数据,PC机的Windows操作系统不提倡应用程序直接控制硬件,而是通过Windows操作系统提供的设备驱动程序来进行数据传递。基于上述特点,结合本系统多串口通信的特点,使用Visual C++6.0集成开发环境下封装好的串口类CSerialPort来设计串口通信。本系统使用两个串口,串口3用于与功率计之间的通信,串口4用于与巡检仪及温控仪之间的通信。
从机通信协议以巡检仪为例简述如下:波特率设置为2 400 bit/s,帧格式为1个起始位,8个数据位,1个停止位。巡检仪采用ASCII码传输,其下传命令帧格式如表1所示,仪表返回数据帧如图4所示。每个通道的测量值为16位二进制,最高位为测量值的符号标志位,1为负,0为正。接收到返回数据后,在程序中按照协议对其进行相应的处理。
使用CSerialPort类实现双串口通信,先要在对象所有者窗口类头文件(.H)中声明两个CSerialPort的对象,然后调用该类的InitPort函数(主要完成串口号选择、波特率设置等串口的初始化设置),并启动监视串口的工作线程。之后串口接到数据后,会以消息的形式发送到串口的所有者窗口中,只要在该窗口中加入对这些消息的响应即可。
数据发送可以使用CSerialPort::WriteToPort(char*string)函数,鉴于本系统中的通信协议都采用BYTE数据类型进行传送,故把该函数修改为Serial-Port::WriteToPort(BYTE bWriteBuffer[],int nWfite-BufferSize),bWriteBuffer[]为要发送的数据,nWfite-BufferSize为要发送的字节个数。
数据接收需要添加消息响应函数,首先要在对象所有者窗口类头文件(.H)中加入串口接收的响应函数声明。由于没有自动的消息映射机制,必须在消息映射机制的标志处手工添加:
然后在该窗口类的CPP文件中添加消息映射:
ON_MESSAGE(WM_COMM_RXCHAR,OnCommunication)
最后加入消息处理函数OnCommunication,在其中进行相应的接收数据处理即可。
3.3其他部分
系统除了基本测试功能的设计外,还增加了数据存储、历史数据的查询、检测报告的打印等功能。
3.3.1数据库
ODBC(开放式数据库连接)为不同的数据库资源提供一个标准接口,是目前Windows应用程序中应用最广泛的数据接口,已经成为工业标准。为了方便ODBC使用,MFC针对ODBC原始的简单的函数型API,建立了一些抽象类:CDatabase、CRecordset和CRecordView,分别用来支持数据库、记录集和记录视图。MFC的ODBC类与数据库的关系如图5所示。
本系统数据库中建立了实时数据、历史数据和检测结果3张表,故相应用到3个CRecordset的派生类,通过这些派生类的对象调用类中的成员函数,即可进行数据的添加、编辑、删除、查询等操作。
3.3.2打印
如果单纯使用Windows的API函数来实现打印任务,程序的编写将会变得非常繁琐,而利用MFC提供的打印和打印预览的应用程序框架将会使打印任务难度大大降低。要有效使用打印的话,必须理解函数调用的顺序以及知道哪个函数需要被重载。
1)打印机的设备环境和OnDraw()函数
当程序在打印机上打印的时候,它使用了一个CDC类的设备环境对象。这个对象由应用程序框架构造,并把它作为参数传递给视图的OnDraw函数。如果应用程序要将显示结果在打印机上打印出来,OnDraw()函数便担负着双重任务。如果正在显示,OnPaint函数便调用OnDraw,并且设备环境是显示器环境。如果正在打印,OnDraw由另一个CView虚函数OnPrint调用,用一个打印机设备环境作为参数。
2)CView::OnPrint函数
从上面可以看到,基类的OnPrint函数调用OnDraw函数,并且OnDraw函数既可以使用显示器设备环境,也可以使用打印机设备环境。在调用OnPrint函数之前,将会设置映射模式。可以重载OnPrint函数来打印那些未显示的项目,诸如标题、页码等。在重载的OnPrint函数中,可以选择不调用OnDraw函数,来支持打印逻辑,这样就使打印逻辑与显示逻辑分开。
4 系统功能及其实现
系统功能较多,下面主要介绍主界面、测量界面功能的实现。
4.1主界面
国标规定热箱中温度波动幅度不大于0.1℃,冷箱中温度波动幅度不大于0.3℃,并且上述温度的波动不再是单向的,才表示传热过程稳定,然后方可进行后续的测量,所以设定系统运行后的主界面如图6所示。图中,左侧实时显示热箱、冷箱、试件框等温度测点的温度值,右侧绘制热箱内温度、冷箱内温度和供电电压的曲线,具体某一点的数据还可以通过时间游标来查看,并且在后台程序中对国标所要求的温度条件进行判断,如果满足,则弹出消息框给出提示,便可进入其他界面进行下一步的检测。
4.2测量界面
传热过程稳定之后,每隔30 min测量一次参数:电暖气加热功率、热箱空气平均温度、冷箱空气平均温度、热箱外壁内外表面面积加权平均温度之差、试件框热侧冷侧表面面积加权平均温度之差和填充板两表面的平均温差,共测6次。测量界面设计如图7所示。进入该界面后将每隔30 min自动测量一次上述参数,测量完毕后将弹出消息框给出提示。设计中为了实际检测方便,增加了“手动测量”按钮,点击一次该按钮将测量一次。测量完毕后点击“计算结果”按钮,将进行参数求平均并计算检测结果。另外,根据用户需要增加了打印当前数据的功能,点击后进行各参数及检测结果的打印。测量完毕后,点击“报告编辑”即进入检测报告编辑界面,进行报告编辑及榆测记录保存等操作。
5 结束语
本文介绍了建筑外窗保温性能检测系统的组成,并在Visual c++6.0平台下实现了多串口通信、实时曲线绘制、数据库操作等功能。实际应用中表明,该检测系统操作方便,界面简洁直观,检测过程稳定,检测结果准确可靠,具有很强的实用价值。考虑到成本及产品化的要求,温度测量与控制功能也可通过设计专用的仪表实现,有关工作目前正在进行。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !