基于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 通信讀取系統內部告警信息來進行自動判斷。
實際檢測和使用表明,該測試方法操作簡便,測試周期大大縮短,測試的穩定性,精度都有了質的提高,并且所有測試數據都自動存檔,從而有效地提高了產品的品質。
評論