24 基于VB6.0和智能模块的室内环境监控系统设计 基于VB6.0和智能模块的室内环境监控系统设计 ndoor Entironment Base on VB6.0 and Intelligent Module 史延龄 (中国人民工程兵指挥学院,江苏徐州221004) 摘 要 二氧化碳、温度、湿度是室内重要环境参数。运用变送器、智能模块和计算机构成的监控系统,实现了对这些参数的自动 测量与调节。该系统结构简单、成本低、易于推广使用。 关键词:变送器,智能模块,环境监控,VB6 0程序 Abstract CO2,temperature and humidity are important parameters of indoor entironment.By using monitoring system base on transducer.intelligent module and computer,and it can measure,adjust voluntarily the parameters.The system is simple,tow COSt,and easy to use. Keywords:transducer,intelligent module,entironment monitoring,VB6 0 program 地下商场、车站候车室(厅)等大型公共场所,人多,二氧化 碳浓度大,必须经常进行通风换气,另外对温湿度也有相应要 量值等于6.25x(电流测量值一4)。 电阻式温度变送器:感温元件(如铂Pt)的电阻随温度变化 而变化,信号处理电路再把电阻值转换成直流电压或电流信号。 如JCJ100H,当温度为0-50'':C时 温度变送器对应输出直流电 求。经理论研究和实践发现,运用质优价廉的变送器、智能模块 和RS一232/RS一485转换器、自行设计VB6.0程序、再利用现 有办公计算机(办公、监控两不误),就可以构成经济实用的环境 流为4 ̄20mA,温度测量值等于3.125x(电流测量值一4)。 1.3智能测量模块EDA9083 EDA9083(山东力创科技)可测量来自各个变送器的8路 0-20mA直流电流信号和2路频率信号(0.1Hz-3kHz),其测量 结果可以通过RS一485通信接口送到计算机进行处理。他与计 参数自动监测和控制系统。 1 监控系统的电路构成与原理 监控系统电路主要由变送器、智能模块、RS一232/RS一485 转换器和主控计算机等组成。如图1所示。 算机的通信协议为ASClI码或十六进制,其ASCII码指令兼容 于NuDAM、ADAM等模块,可与其他厂家的测量/控制模块通 过RS一485总线组成测控网。 EDA9083的ASCII码通信协议操作指令:EDA908有读配 置(现地址和波特率)、写配置(更改地址或波特率)、读8路电流 值、读频率值、读电流量程(本文20mA)等7条操作指令。 读8路电流值的指令(由主控机发送)与用法。指令为:}} (Addr)<CR>。#为定界符,(Addr)为模块地址00 ̄FF,<CR>为回 车。编程时必须用ASClI码表示指令,如在VB6.0程序中,读8路 图1 系统的电路原理图 电流值(地址O2时)语句为:MSComm1.Output="#OZ'+vbCr。 输出8路电流值的格式与顺序(由主控机接收):当8路电 流值均为0时,输出格式为:>+0.0000+0.0000+0.0000 4- 0.0000+O.0000+O.0000+O.0000+O.0000<CR>(58位ASCfl 1.1红外CO2变送器BM一1000 CO2对于波长4.33 m红外光吸收非常强烈而且不受大气 中其他成分影响,因此可以用来判别大气中CO 的含量。BM一 1000(深圳比盟泰克)可以把CO 浓度转换成相应的直流电流 码)。输出顺序从左至右对应O~7路电流值,输出的每路电流值 均为满量程的百分数,因此每路输出值乘以量程值才是该路的 实际电流测量值。 信号,如CO 浓度为0-5000ppm时,变送器对应输出电流为 4-20mA,CO。测量值等于312.5x(电流测量值一4)。 1 l2温湿度变送器JCJ100H 1.4智能输入/输出模块N一1012 N一1O12(深圳富永通科技)可以采集12路开关状态(输入 变送器厂家常把的湿度、温度变送器制作为一体,简称 温湿度变送器。如JCJ100H(北京久纯健科技)温湿度变送器, 为干接点),通过RS一485总线将开关状态送到计算机进行处 理,计算机也可以将控制命令送到N一1012,通过N-1012的4 个输出继电器Q0~Q3(触点容量为AC250V、3A)去控制有关设 备(如通风机、空调)工作。 N一1012控制和采集指令(由主控机发送)与用法。指令为: 湿敏元件为电容式,感温元件为Ptl00或Ptl000。 电容式湿度变送器:电容式湿敏元件的介电常数随相对湿 度的变化而变化,从而改变了电容值,信号处理电路再把电容值 转换成直流电压或电流信号。如JCJ100H,当相对湿度为O~ 100%RH时,湿度变送器输出直流电流为4 ̄20mA,相对湿度测 (N一1012地址)(控制QO)(控制QI)(控制Q2)(控制Q3)(校验 和)。指令由6部分组成,每部分1个字节。地址取值O0-FF。(控 《工业控制计算机/2010年第23卷第5期 制Q0)~(控制Q3)分别控制输出继电器Q0~Q3的触点状态。 如,当(控制Q0)取0时,输出继电器QO的触点保持原态;当 (控制QO)取1时,继电器Q0的触点闭合;当(控制Q0)取2 时,继电器QO的触点断开。(校验和)为其前面5个字节的累加 和,但不能大于FF。在VB6.0程序中,先把6字节指令分别存人 MSComml Output=out 向N一1O12发送采集控制指令 End If 25 lf n>2 Then 当只有2个模块时 n=0 End If 再从第1个开始 字节型数组如out的out(0)-out(5),然后执行语句MSComm1. End Sub Output=out,就可实现控制和采集指令的功能。 1.5 RS一232/RS一485转换器N一1O8 N一1O8(深圳富永通科技)把微机串口的RS一232信号转换 为智能模块广泛采用的RS一485信号,这样既可以多个智能模 块共用RS一485总线构成监控网络,又可以实现数据的远距离 传输。 2监控系统的VB6.0程序设计 监控系统的 VB6.0程序主要由 I寓(区) 2室(区) 初始化程序、手动 涅度(℃)}嚣. … 温度(℃)蕊: …一 开停风机程序、发 湿度(%) 1 … 湿度(%) : ~ 送读/控制指令程 CO2(pp1) 一 CO2(PP ̄)i292.4—— — 序、接收处理数据 风帆故障蒙聂蓑~ 风机故障 鬣… 程序、数据写人数 最枫状杏南面~ 足机状态}禅 “ 。一 据库程序等组成。 风帆控制 其机控制 这里重点论述两段 自动, j。 静 包i 强r 关键程序。操作与 显示界面如图2所 图2操作与显示界面图 不。 2.1主控机发送读/控制指令程序 主控机按通信顺序先设置通信控件MSComm属性使其符 合EDA9083的要求、并向EDA9083发送读8个电流值指令, 然后根据N一1012的要求再重新设置MSComm属性、并向N一 1012发送采集控制指令,不断重复此过程。使用的另1个控件 是Timer(Interva}属性300)。主要程序如下: Private Sub Timer1 Timer() Dim out(51 As Byte Dim tO As lnteger n=n+1 n为通信顺序(通用)变量 If n:1 Then 与EDA9083通信 MSCOmm1.Settings=”19200,N,8.1,, 设置串口参数(与EDA9083一致) MSCOmm1.InputMode=0 读文本型数据 MSComm1 RThreshold=58 接收58个字符 MSComm1.Output= #02”+vbCr 发送读8个电流值指令 End If lf n=2 Then 与N一1O12通信 MSCOmm1 Settings= 9600.N,8。 设置串口参数(与N一1012一致) MSComm1.InputMode=1 读字节型数据 MSComm1 RThreshold=8 接收8个字节 out(0)=&H1 N一1012地址1存入out(0) out(1)=Q0 用Q0开/停1室风机 out(2)=Q1 用Q1开/停2室风机 out(3)=&H2 Q2继电器未用令其触点断开 out(4)=&H2 Q3继电器未用令其触点断开 tO=out(0) 把Byte型out(0)存入lntege型tO out(5)=(tO+out(1)-I-out(2)+out(3)-I-out(4))Mod 256 (这里不能全用Byte型数据求和)校验和存人out(5) 2.2主控机接收处理数据程序 主控机按通信顺序先接收来自EDA9083的数据、计算显示 测量值、并根据C0 高低自动开停风机,然后再接收来自N一 1O12的数据。使用的主要控件有MSComm、10个TextBox(取 名Text1-Text10),6个Option(取名Option1 NOption6,3个1 组)等。主控机每发送1次读EDA9O83指令或N一1O12采集控 制指令,就触发1次OnComm事件。主要程序如下: Private Sub MSComml—OnComm() Dim io2(7)As Integer 定义Integer型数组 If MSCOmm 1 CommEvent=comEvReceive Then 是接收数据事件 lf n=1 Then 接收处理EDA9083数据 eda=MSComm1 Input 读文本型数据存人eda tl=Val(Mid(eda,10,6)) 20 1室温度采样值 hl=Val(Mid(eda,3,6)) 20 1室湿度采样值 cl=Val(Mid(eda,17,6)) 20 1室CO2采样值 t2=Val(Mid(eda,24,6)) 20 2室温度采样值 h2=Val(Mid(eda,31,6)) 20 2室湿度采样值 c2=Val(Mid(eda,38,6)) 20 2室CO2采样值 If tl>0 Then 1室t1、hl、C1处理 Text1 Text=Round((tl一4) 3.125,1) 计算显示1室温度测量值(保留1位小数) Else:Text1 Text=… 无值时显示空格 End If If h1>0 Then Text2 Text=Round((h1—4) 6l25.1) 计算显示1室湿度测量值 Else:Text2.Text=… 无值时显示空格 End If If C1>0 Then cl=Round((cl一4) 312.5+8,1) 计算1室CO 测量值 Text3Text=C1 显示1室C02测量值 lf Option1.Value=True Then lf cl>4000 Then Q0=&H1 自动开1室风机 Option1.Value=True End If If C1<2000 Then Q0=&H2 自动停1室风机 End If End If Else:Text3 Text=… 无值时显示空格 End If … 2室t2、h2、c2处理同1室(未列出) End If If n=2 Then 接收处理N一1012数据 iol=MSComml Input 读Byte型数据串 If iO1(0)=&H1 Then For k=0 To 7 由Byte型转为Integer型 io2(k)=iol(k) Next (下转第28页) 全自动图书馆通信控制的设计与应用 速度,offset为相对原点位移量,time为加减速时间。 控制流程图如图4所示。 图5动态链接库接口函数测试程序 6)状态查询函数: int stdcall readstate0; 7)指示灯控制函数: 图4运动控制流程图 int stdcal lindicatelight(int num): 其中复位指令完成多轴复位的动作,入书指令完成将书由 人书口送至上架El的动作,出书指令完成将书由下架口送至出 书口的动作,上架指令完成将书送至指定书格的动作,下架指令 完成将书从指定书格取出的动作。 5动态链接库的实现 8)获取回调函数: int SetExecuteProc(EXECUTEPROC Ipfn) 6结束语 采用VisualC++动态链接库,基于多线程、异步I/O操作和 串行通信技术,实现PLC与工控机之间的串行通信,成功应用 于自助图书馆多轴控制系统中,满足了系统功能要求,成功搭建 了应用程序与底层控制器的交互平台,在动态链接库函数中实 现了对I/O监控和多轴运动控制。 参考文献 『1]Marbot R.Couteaux P,Lebihan J—C,Netamzadeh R.Pierre—Du- 基于应用程序由C#开发,故采用常规类型动态库编写接 口函数。 供上层程序调用的几个关键导出函数: 1)图书吸人: int stdcall putin0; 2)图书上架: int stdcall puton(int num): 3)图书下架: int stdcall putoff(int num): plessix A Serial networks for computing applications[C].Solid- State Circuits Conference,1996.Digest of Technical Papers. 43rdlSSCC..1996 IEEE Internationat 8—10 Feb.1996:400—401, 481 4)图书吐出: int stdcall putout(); [2]谭思亮,邹超群.Visual C++串口通信工程开发实例导航[M].北京: 人民邮电出版社,2003:5—70 5)复位: int stdcall rst0; [收稿日期:2010.3.20] (上接第25页) 3结束语 If((io2(0)+i02(1)+io2(2)+io2(3)-t-io2(4)+io2(5)-t-io2 (6))Mod 256)=io2(7)Then (这里不能全用Byte型数据求和)接收数据校验正确时: 上述监控系统已应用于某人防工程项目中,实践证明其性 能可靠。该系统虽然是针对智能模块EDA9083和N-1012设 计的,但只要将部分程序稍加修改,使其符合其他智能模块或智 能仪表的通信协议就可推广使用。 参考文献 [1]二氧化碳检测变送器BM一1000使用手册[K].比盟泰克(深圳)有限 公司,2009 If(io1(6)And&H1)=&H0 Then IN0测1室风机过载 Text4.Text=”过载” Else:Text4.Text=”未过载” End If lf io1(1)=0 Then Q0判1室风机状态 Text5.Text=”工作” [2]工控产品选型手册(2009—2010)[K].北京九纯健科技发展有限公 司。2009 Else:Text5.Text=”停机” End If … 2室风机:IN1监测过载,Q1判断工作状态 [3]EDA9083使用手册[K].山东力创科技有限公司,2009 [4]数据通信和接口转换产品使用手册[K].深圳市富永通科技有限公 司,2009 End If End If End Sub [5]史延龄.基于VB6.0和智能仪表的监测系统[J].电脑编程技巧与维 护,2010(2):117—119 [收稿日期:2010.3.29]