空调器性能测试系统中的串行通信程序设计_第1页
空调器性能测试系统中的串行通信程序设计_第2页
空调器性能测试系统中的串行通信程序设计_第3页
空调器性能测试系统中的串行通信程序设计_第4页
空调器性能测试系统中的串行通信程序设计_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3卷第2期2004年5月淮阴师范学院学报(自然科学版)JOURNALOFHUAIYINTEACHERSCOLLEGE(NATURALSCIENCEEDITION)Vol13No12May.2004空调器性能测试系统中的串行通信程序设计赵树宇(淮阴师范学院信息传播与技术系,江苏淮安223001)摘要:在介绍空调器性能测试系统组成的基础上,系统介绍了在VisualBasic下利用PComm动态链接库中的函数实现PC机和数据采集仪HP34970A、调节仪DB1000等智能仪表串行通信的程序设计方法,该方法在实际测控系统中已得到应用.关键词:串行通信;VisualBasic;动态链接库;测控系统+中

2、图分类号:TM930.128文献标识码:A文章编号:167126876(2004)02201472050引言在Windows环境下具有面向对象程序设计方法的可视化编程语言VisualBasic(VB)、VisualC+(VC+)等为编写应用软件提供了优良的软件环境.利用可视化编程语言实现异步串行通信通常有两种方法:一是使用MSComm控件;二是直接调用Win32API函数.MSComm控件提供了事件驱动和查询两种方式处理串行通信,最大支持串行口数仅16个;后者支持串行口数虽可多达128个(NT系统中为2562个),但编程时需要许多底层设置,使用非常复杂繁琐且难以理解.而在开发小型测控系统中,广

3、泛采用异步串行通信来实现PC机与智能仪表通信,构成这样的测控系统,关键要解决好PC机与仪表的串行通信问题.通过RS485/232/422总线将智能测控仪表与PC机连接,为测控系统提供了良好的硬件条件;因此,对于测控系统设计者来说,选择一种既能满足系统性能,又能使编程简单省时的串行通信程序设计方法就显得很重要.本文结合在开发空调器性能测试系统中串行通信程序设计的实际经验,以VB环境下的编程为例,介绍一种利用PComm动态链接库中的函数实现PC机和数据采集仪HP34970A、调节仪DB1000以及数字电参数综合测试仪AINUO7950串行通信的程序设计方法.11空调器性能测试系统原理与组成测定空调

4、器制冷量的方法主要有房间热平衡法、焓差法、风管热平衡法和风管量热计法.本文介绍的测试系统中采用了风管量热计法,其中制冷量、循环风量和热泵制热量都是通过多个参数间接测定的,因此各相关参数的测量精度将直接影响测试结果.本测试系统选取了数据采集仪HP34970A、调节仪DB1000以及数字电参数综合测试仪AINUO7950为核心测试仪表,配合铂电阻、压力变送器等传感器,以保证测试系统的精度,达到准确经济合理.图1是测试系统连接图.测试时HP34970A将温度传感器、压力变送器、流量传感器送来的室内侧、室外侧的干湿球温度、大气压力、流量等有关参数采集后送给计算机;被测空调器、加热器和加湿器所消耗的功率

5、与电能由数字电参数综合测试仪测量传送给计算机;DB1000根据传感器送来的信号和计算机设定的工况参数自动调节加热器与加湿器的运行,以保证测试工况的稳定.制冷量、循环风量、热泵制热量及能效比参数等计算参见文献4.测试系统采用MOXA公司的SmartioC168H八串口卡将计算机的串行口扩展到10个,每个串行口收稿日期:2003211218基金项目:江苏省教育厅自然科学基金资助项目(01KJD470006)作者简介:赵树宇(19702),男,江苏淮安人,讲师,硕士,主要从事智能仪表及测控技术等研究.© 1995-2006 Tsinghua Tongfang Optical Disc Co

6、., Ltd. All rights reserved.148淮阴师范学院学报(自然科学版)第3卷分别与HP34970A、DB1000、AINUO7950A等设备相连.计算机与HP34970A和AINUO7950通过RS232接口直接进行通信,计算机与DB1000通过RS232/422转换器及RS422总线进行通信.采用VB作为开发工具,利用PComm动态链接库中的函数进行串行通信程序设计.2PComm动态链接库的使用PComm动态链接库是PCommLite/Pro工具包内嵌的DLL,可兼容多种类型的多串口卡,它提供了端口控制、数据输入/输入、端口状态查询、事件服务、文件传输和特殊功能等七类5

7、0多个函数,这些函数完全屏蔽了通信过程中的底层设置,在VB、VC/C+和Delphi等语言中可直接调用函数完成串行口的初始化和数据的输入输出等通信功能,使用十分方便.2.1PComm主要函数图1测试系统连接示意图1)sioopen(port):为传送/接收数据打开端口号为port的串行口.2)sioclose(port):停止传送/接收数据并关闭端口号为port的串行口.3)siobaud(port,baud):将端口号为port的串行口的波特率设定为baud,本函数中baud用波特率的实际数值表示,如波特率为9600,则调用前将baud赋值为9600.4)sioioctl(port,baud

8、,mode):设置串行口的波特率、奇偶校验、数据位及停止位等通信参数.本函数中baud用波特率的序号表示,如波特率为9600,则用12或VB常量B9600来表示.通信模式为无奇偶校验,数据位8位,停止位1位,则mode在VB中可表示为mode=PNONEOrBIT8OrSTOP1.5)sioflush(port,function):清除指定串行口中输入/输出缓冲区的数据,funtion的取值有0,1,2三种:0表示清除输入缓冲区;1表示清除输入缓冲区;2表示清除输入和输出缓冲区.1)siogetch(port):从串行口的输入缓冲区中读取一个字符.2)sioread(port,buffer,l

9、ength):从串行口的输入缓冲区中读取指定长度的数据到数组buffer中.3)siolinput(port,buffer,length,terminator):从指定串行口的输入缓冲区中读取指定长度的一组数据,若遇到指定的结束字符,则读取结束字符前的一组数据.4)sioputch(port,character):将一个字符写入输出缓冲区.5)siowrite(port,buffer,length):将一组数据写入输出缓冲区.1)sioiqueue(port):读取输入缓冲区中积累的数据长度.2)siooqueue(port):读取输出缓冲区中积累的数据长度.3)siocntirq(port,

10、addr,onoff):开/关串行中断.2.2PComm动态链接库的安装利用PComm的函数实现串行通信的具体步骤有安装PComm动态链接库、调用函数进行端口的初始化、数据输入输出和状态查询等.在VB环境下,安装PComm动态链接库有两种方法:1)运行MOXA软件包光盘上PCommLite/Pro文件夹下Setup.exe,根据提示完成PCommLite/Pro应用程序的安装,完成后PComm动态链接库“PComm.dll”文件被安装到Windowssystem文件夹下,同时VB环境下的模块文件“PComm.bas”被安装到指定的文件夹下.2)不安装PCommLite/Pro应用程序,直接将动

11、态链接库文件“PComm.dll”和模块“PComm.bas”文件© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.第2期赵树宇:空调器性能测试系统中的串行通信程序设计149分别复制到“Windowssystem”和指定的文件夹下即可.2.3PComm函数的调用调用PComm函数之前,在工程中先添加模块“PComm.bas”,具体步骤为:在VB的IDE环境中,选择菜单项“工程/添加模块”,在出现的对话框中选中“现存”标签,在“搜寻”或“查找范围”下拉列表框中选取包括“PComm.bas”文

12、件的文件夹,选取“PComm.bas”后单击“打开”按钮,VB的资源管理器中会出现模块“PComm.bas”.PComm函数的调用格式为:ret=siofunction(parameterlist),其中function是七类函数中具体的功能函数名,parameterlist是函数所需的参数列表,函数调用后返回一个数值赋给变量ret,在编程时根据此值判断调用是否成功.利用PComm函数建立串行通信程序的一般步骤为:首先调用端口控制函数进行端口初始化;然后调用数据输入输出函数进行数据发送/接收;最后调用端口控制函数关闭端口.3PC机与智能仪表的串行通信3.1智能仪表的通信命令HP34970A是一

13、个61/2位的数字万用表的数据采集/开关单元,可直接测量温度、电压、电流、电阻、频率、周期等物理量,内置三个模块插槽,可选择多种插入式模块等进行组合,从而得到高质量的测量、切换和控制能力.HP34970A配有标准的RS232接口,具有与SCPI命令兼容的远程命令系统,可以很方便的与计算机进行通信.通信前首先要设置HP34970A的系统日期和时间和远程RS2232接口,然后才可以使用以下远程命令和仪表进行通信.通信时微机以字符串(ASCII码)形式发送远程命令给仪表,仪表主要功能的命令格式如下:1)配置仪表通道的测量功能:FUNC"<function>",(<

14、;chlist>)2)设置测量通道的量程:<function>:RANG<range>,(<chlist>)3)设置测量的分辨率:<function>:RES<resolution>,(<chlist>)4)配置扫描列表:ROUT:SCAN(<chlist>)5)启动扫描:INIT6)读取数据:FETC?命令中的尖括号“<>”表示所包括的内容必须指定,尖括号本身不作命令发送,其它符号包括空格必须作为命令字符发送.具体含义为:“function”可以有以下取值为“:TEMP”“、VOLT:DC”

15、“、VOLT:AC”、“CURR:DC”、“CURR:AC”、“RES”、“FRES”“、FREQ”和“PER”,表示指定通道测量的分别为温度、直流电压、交流电压、直流电流、交流电流、二线电阻、四线电阻、频率、周期.“chlist”表示通道列表,可以是冒号和逗号隔开的形式,如“101:120,201,203”,表示指定的通道为101至120,以及201和203.“range”表示量程,取值:数值“、MAX”和“MIN”,分别表示具体值、最大和最小值.“resolution”表示分辨率,取值:数值、“MAX”和“MIN”,分别表示设定的分辨率为具体值、最大和最小.仪表接收到启动扫描命令后,将对扫

16、描列表中的各个通道进行测量,将测量结果存储在读数存储器中,并且每组测量结果都标上测试时间.接收到读取数据命令后,将所有测量结果发送到RS232口.DB1000是数字指示调节仪,可选配RS2232C/422A/485三种通信接口中的一种,根据空调器测试系统要求,需要使用6个调节仪,因此选取了带RS2422A通信接口的仪表,这样可以通过一个RS2232接口和一个RS232/422转换器直接与多达32个DB仪表连接,从而实现仪表运行参数的监控和设定.通信前© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights rese

17、rved.150淮阴师范学院学报(自然科学版)第3卷首先要设置DB1000的通信参数,主要有波特率、每个仪表编号(即地址,不可重复,范围为0199),然后使用远程命令和仪表进行通信.远程命令以字符串(ASCII码)形式发送给仪表.通信时建立数据线的命令格式为“ENQADHADLCRLF”.格式中“ENQ”为表示建立数据线询问符(05H),是值为05H的ASCII码字符“;ADHADL”为DB的编号,如果仪表编号为“01”,则ADH、ADL为“0”和“1”“;CR”和“LF”表示结束符分别0DH和0AH.DB应答数据格为“ACKADHADLCRLF”,其中“ACK”为06H.数据线放弃命令格式为

18、“EOTCRLF”.格式中“EOT”为表示放弃数据线指令(04H).通信时数据传送的格式为“STXTEXTETXBCCLBCCHCRLF”.格式中“STX”表示命令/数据文本开始符(02H)“;TEXT”表示具体命令/数据“;ETX”表示文本结束符“;BCCL”和“BCCH”分别为校验和的低位和高位.PC与DB通信命令分为两类:一是PC向DB要求数据命令;二是PC对DB进行参数设定命令.发送/接收不同命令/数据由命令中不同“TEXT”来决定.具体命令参见仪表使用手册附录中的通信格式一览,此处不再赘述.AINUO7590可以测量三相电压、电流、功率、频率、功率因素和电能量.它和PC之间的通信较为

19、简单,在设置好波特率后,就可接收PC送来的命令:如收到数据请求命令,就直接将测量结果发送给PC;如收到启动电能累计,则仪表开始计量电能.命令格式为“HMLCMD”,格式中“、”分别为命令起始和结束标记“;HML”表示仪表的编号,用三位数字表示;CMD表具体命令,有三种取值,分别为字符P(启动累计)、U(发送数据)和(清除).发送时以字符的ASCII码值发送.3.2通信程序设计Subtest()sioRet=sioopen(portHP)打开串口设置,设置通信参数sioRet=sioioctl(portHP,B115200,PNONEOrBIT8OrSTOP1)a=SentToHp("

20、FUNC"+Chr(34)+"VOLT:DC"+Chr(34)+",(211:216)")配置211:216通道功能为测量直流电压a=SentToHp("VOLT:DC:RANG10,(211:216)")配置量程为10Va=HpConfig("ROUT:SCAN(101:107,201:216)")配置扫描列表a=SentToHp("INIT")开始扫描a=SentToHp("FETC?")发送数据到PCLenBuf=sioiqueue(portHP)串口收到数据

21、长度lenwr=sioread(portHP,buf(1),LenBuf)读取数据到buf中对数组buf的数据处理CloseHp关闭串口EndSub具体编程时,在通用模块中为各种类型仪表编写实现通信功能的通用过程或函数.这样可以实现模块资源的共享,可使程序后期维护方便.PC与DB1000的通信流程和HP34970A相似,这里不再阐述.© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.第2期赵树宇:空调器性能测试系统中的串行通信程序设计1513.3通信程序设计应注意的问题在测试系统现场调试中

22、发现,HP34970A数据采集/开关单元在接收和处理PC送来的远程命令需要一定时间,因此,PC在向仪表发送多条远程命令时,相邻命令间必须插入一定的延时,根据实际调试情况,取100mS延时可以保证通信的可靠.此外,根据测量通道功能及扫描数量的不同,在发送启动扫描命令后,读取数据也需要延时,具体延时根据现场测量整定.的状态查询,针对不同的状态,进行不同的响应.通信中数据采集单元出现的错误,一般仪表均提供了的错误代码,根据代码设计相应的处理子程序;与DB通信出错,多表现为否定应答,此时程序要重新发送命令和数据,如多次发生相同的错误,可给出警示,提醒工作人员及时排除硬件故障,从而保证采集系统可靠的工作.增加容错处理代码可显著提高测试系统的稳定性.4结束语本文在研制空调器综合性能测试系统时,在VB下编写了测试系统软件,利用PComm中的函数编写了串行通信程序,在现场已可靠运行至今.实践证明,利用PCo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论