基于LabWindows/CVI的通信电源系统自动化测试的实现
扫描二维码
随时随地手机看文章
通信电源系统是整个通信网络的心脏和源动力,在通信系统中的地位举足轻重。为确保通信电源系统可以安全可靠的运行,在生产过程中必须对它的各项性能参数进行全面的检测。
原有对通信电源系统的测试方法为手动测试,操作人员不仅要连接许多线缆和设备,而且要人工判断系统的各个量值。它的测试时间长,重复测试结果的一致性差,人为因素多,测试不稳定,测试数据不容易存档,等等。因此,电源系统的性能得不到足够的保障。
本文提出的测试方法,首先启动气动装置实现测试端口的自动连接,这便省去了人工连接线路;然后基于LabWindows/CVI 的开发环境,利用GPIB 卡控制各种仪器和设备,通过TCP/IP 通信的方式与电源系统对话。该方法可以快速可靠地完成各个参数的测试,从而提高了效率,并且可对测量数据自动存档。
1 概 述
1 .1 LabWindows/CVI 简介
LabWindows/CVI 是美国NI (National Instruments)公司推出的交互式C 语言开发平台。它将功能强大﹑使用灵活的C 语言平台与用于数据采集分析和显示的测控专业工具有机地结合起来,利用它的集成化开发环境﹑交互式编程方法﹑函数面板和丰富的库函数大大增强了C 语言的功能,为熟悉C 语言开发设计的人员编写检测系统﹑自动测试环境﹑数据采集系统﹑过程监控系统等应用软件提供了一个理想的软件开发环境。
虚拟仪器技术是近几年发展起来的新一代仪器技术,它的实质是利用计算机来模拟传统仪器的各项功能。LabWindows/CVI 是开发虚拟仪器应用程序的软件工具中的佼佼者,和其它虚拟仪器开发工具相比,它的主要特点有:
(1)LabWindows/CVI 以功能强大、最为流行的C语言为基础,一般程序员无须再花时间去学习其它计算机语言,从而节省了开发时间。
(2)友好的界面编辑方式,在程序设计中灵活地应用各种工具可以方便程序设计,减轻程序员负担。
(3)各种功能强大的软件包大大增强了LabWindows/CVI 的性能,这些软件包括接口函数库、信号处理函数库、Windows SDK 等。
1 .2 GPIB 总线技术
GPIB (General Purpose Interface Bus )被称为通用接口总线,是最早由HP 公司提出的一种接口仪器标准(HP IB ),1975 年被改进为IEEE485 标准。目前的协议为488 .2 。GPIB 总线是广泛用于自动测试系统的一种并行外总线标准,是专为仪器控制应用而设计的。它是一种用于连接设备的总线,计算机、电压表、信号发生器、示波器等都可以通过GPIB 总线连接起来,组成一功能系统。
该系统的特点是:积木式结构,可拆卸、易于重建;控制器可以是计算机、微处理器或简单的程序;数据传送可靠,使用灵活,价格低廉。正是由于以上特点,GPIB 广泛应用于对测试仪器进行计算机控制、计算机与计算机之间的通讯,以及对其它电子设备的控制。
LabWindows/CVI 中的GPIB 函数库可以实现打开/关闭GPIB 设备、总线配置、I/O 读写、GPIB 设备控制、总线控制和板控制等功能。
1 .3 TCP/IP 通信技术
Internet 中使用最为广泛的网络协议为TCP/IP协议集。TCP 协议是TCP/IP 协议集中隶属于传输层的传输控制协议。IP 协议是Internet 网络中隶属于网络层的基础协议。IP 协议提供可靠的、尽力的、无连接的数据投递服务,构成了Internet 网络数据传输的基础。TCP 协议以此为基础增加了连接管理和确认重发等机制,向更高层的应用程序提供面向连接的、可靠的传输服务。
在LabWindows/CVI 中可利用TCP 函数库进行网络传输,在每次连接中都涉及到服务器和客户。
其中TCP 服务器可以通过网络向客户应用程序发送或从客户应用程序接收数据。TCP 客户可以向TCP服务器应用程序发送连接请求,并从服务器接收数据。服务器注册后就等待客户向它发出连接请求,而客户只能向已经存在的服务器发出连接请求。
2 系统的硬件设计
通信设备直流供电系统的组成如图1 。系统的输入为交流220V,整流器一方面给通信设备供电,另一方面又给蓄电池充电,以补充蓄电池因局部放电而失去的电量,控制器用于监控系统的状态,直流配电架主要连接和转换直流供电系统中整流器和蓄电池组向通信设备供电的电源设备。蓄电池组用于保证不间断供电。
图1 直流供电系统的组成
该电源系统测试的部件主要由一台计算机、一块GPIB 卡、数据采集器、直流电源、负载测试治具和待测系统等组成,如图2 。
图2 电源系统测试的硬件结构图
数据采集器Agilent 34970A 可配置成20 至120个通道,6 位半分辨率,250 通道/秒扫描速率,50 000 个读数存贮,0。004 %基本直流精度,可测量交直流电流、电阻、频率和周期,以及由热电耦、热电阻和热敏电阻提供的温度直流和交流电压,标准GPIB 和RS232 接口。在该测试系统中,它主要用来控制继电器,通道切换和量测电压。
直流电源Agilent 3645A,主要用来模拟蓄电池的功能,实现电池的过压、欠压和低压断电。
测试治具内部由继电器组,告警指示灯和气动装置组成。气动装置用于自动连接测试端点。继电器组主要用于切换不同的测试设备和开关。告警指示灯共有4 组红绿灯,用于查看不同的系统告警,如断路告警、熔丝告警、温度告警等。
待测电源系统由两个模块,一个控制器和一个直流配电架组成。模块用于整流,将220 V交流变为54 V直流。控制器用于设定系统的电压,监控系统的状态。直流配电架用于放置模块和控制器,它装有自动空气断路器、接触器、熔断器等部件,为不同容量的负载分配电能,当直流供电异常时,产生告警起到保护作用。
交流电220 VAC 用于模块的输入供电。
负载用于模拟通信设备,用来提供AC 供电和电池供电时系统的负载。该系统测试时负载设定为20 A。
3 系统的软件开发
系统软件以Labwindows 8 。5 为编程语言,可运行在Windows XP,Vista 和Windows7 之上。
3 .1 测试流程
根据测试要求,首先制定一个合理的测试流程,如图3 所示,可分为三大部分,第一部分为自检,第二部分为AC 交流部分,第三部分为DC 直流部分(即电池部分)。
(1)自检。操作人员将待测电源系统放置在治具上后,先进行自检,对系统中所有设备进行复位并初始化,检测系统供电的状态是否正常。
(2 )AC 部分。自检通过后, 先输入交流电220 VAC,在这一部分,先量测空载时系统输出电压、电流、系统状态,加载后量测系统电压及电流,并检测模块是否均流,接着将负载切换到电池端,量测电池电压及电流,然后执行一些告警测试,包括直流过压、欠压、熔丝告警、断路器告警、温度告警等。
(3)DC 部分。检测电池供电后系统的输出电压、电流、检测AC 告警、电池过压告警、欠压告警,实现低压关机功能。
3 .2 核心代码解析
下面列出几个关键的测试代码。
(1)GPIB 通信代码
GPIB/GPIB-488 .2 函数库一共包括10 个子类,分别为Open/Close 子类,Configuration 子类,I/O子类,Device Control 子类,Bus Control 子类,BoardControl 子类,Callbacks 子类,Locking 子类,Thread-Specific Status 子类,GPIB-488 .2 子类,该测试方法中主要应用GPIB-488 .2 子类中的函数实现GPIB 通信。
图3 测试流程图
SendIFC (0);//对所有GPIB 设备初始化。
Send (Board _Index,address ,buffer ,Byte _Count ,EOT_Mode );//发送地址和写数据。Board_Index 表示GPIB 名称,address 表示仪器地址,buffer表示要发送的信息,Byte _Count 表示发送信息的字节长度,EOT_Mode 表示发送模式。
Receive (Board _Index,address ,buffer ,Byte _Count ,Termination);//接收地址,从GPIB 设备中读取数据。Termination 表示数据传输终止符。
(2)TCP/IP 通信代码
该电源系统可通过网络端口进行网络通信,以读取系统内部信息。
由于要读取系统信息属于客户向服务器发出连接,因此先确定该通信属于客户程序。与TCP 服务器连接时,我们必须获得服务器的名称或IP 地址和服务器的端口号。
ConnectToTCPServer (&serverHandle ,server-PortNumber ,serverName ,ClientCallback,callback-Data ,timeout );//注册TCP 服务器,参数serverHandle 表示得到的连接句柄。参数serverPortNumber 和server-Name 表示服务器的端口号和名称,ClientCallback 和callbackData 表示TCP 回调函数名和回调数据。参数timeout 表示超时限制。
ClientTCPWrite (portHandle ,writeData ,data-Size ,timeout );//向服务器发送数据,参数writeData表示发送到服务器的数据,dataSize 表示数据块的大小。
ClientTCPRead (portHandle ,buffer ,dataSize ,timeout );//从服务器读取数据。参数buffer 表示存放从服务器读来的数据块的缓冲区。
DisconnectFromTCPServer (serverRouteHandle);//注销TCP 服务器。
(3)HP34970 控制代码
由于HP34970 提供了程序的功能面板大大方便了编程,我们只需要调用其中的库函数指令,即可实现测试中所需要的通道切换和量值。
hp34970_relay_Operate (1 ,6 ,ON);//控制继电器6 闭合。
hp34970 _relay_Operate (1 ,6 ,OFF);//控制继电器6 打开。
meter _Measure (METER1);//读取表1 的电压值。
switch_lfmux_DMM (101);//切换测试通道至MUX101 。
4 总 结
在软件调试过程中也曾出现了一些问题,经过分析,都得到了解决:
(1)将大量数值变量放置在C 文件中,导致程序的可读性、可维护性较差。
解决方法:建立一个INI 配置文件,将所需要的测试数值和范围存储在该文件内,这样一旦要修改数值,只需更改INI 文件中的数据,无需重新编译C 文件。
(2 )TCP/IP 通信读取数据不稳定,会出现误码或乱码。
解决方法:设置断点,单步运行调试后发现,部分是由于不同指令输入后读取的数据大小不同,一些数据超出了Buffer 的最大范围,只需将Buffer 设定到合适数值范围即可。
另外,也可能是由于数据类型设置错误导致,在字符串处理过程中,数据类型有整型、浮点型、字符型等,必须设置相符的数据类型,否则有可能导致误码甚至编译不通过。
(3)提示操作员查看告警灯状态的次数有8 次,明显太多,不利于生产也不符合自动化测试的理念。
解决方法:改变测试方法,由目测告警灯状态的判断方法,改为通过TCP/IP 通信读取系统内部告警信息来进行自动判断。
实际检测和使用表明,该测试方法操作简便,测试周期大大缩短,测试的稳定性,精度都有了质的提高,并且所有测试数据都自动存档,从而有效地提高了产品的品质。