基于LabWindows/CVI的通信电源系统自动化测试的实现
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 通信读取系统内部告警信息来进行自动判断。
实际检测和使用表明,该测试方法操作简便,测试周期大大缩短,测试的稳定性,精度都有了质的提高,并且所有测试数据都自动存档,从而有效地提高了产品的品质。
评论