基于USB從機技術(shù)的絕緣電阻表自動檢定系統(tǒng)通信接口設(shè)計
隨著我國電力工業(yè)的快速發(fā)展,電氣設(shè)備預(yù)防性實驗成為保障電力系統(tǒng)安全運行和維護工作的一個重要環(huán)節(jié)[1]。絕緣診斷是檢測電氣設(shè)備絕緣缺陷或故障的重要手段。絕緣電阻表作為測試絕緣電阻的專用儀表,要保證其測量精度在國家規(guī)定范圍之內(nèi),須定期進行檢定。目前的絕緣電阻表檢定系統(tǒng)均為孤立檢測裝置,其報表生成和對歷史數(shù)據(jù)的查詢均由人工完成,已無法滿足儀表檢定行業(yè)對該檢定裝置的智能化要求[2]。
USB作為一種基于令牌式且對外設(shè)有統(tǒng)一接口的新型高速串行標準總線,具有使用便捷、易擴展、低成本、低干擾、速度快等特點[3],將USB從機技術(shù)應(yīng)用于絕緣電阻表自動檢定系統(tǒng),使現(xiàn)有孤立的檢定裝置[1]與主機有機地融合成智能化檢定裝置,實現(xiàn)檢測數(shù)據(jù)快速上傳,配合主機軟件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)可自動、快速生成檢定報表(檢定原始記錄、檢定證書、檢定通知書等),設(shè)備送檢單位可在較短時間內(nèi)得到直觀、準確的檢定結(jié)果,減少了人工操作,提高了檢定效率。在信息管理系統(tǒng)中,檢定裝置與主機可快速進行信息交互,達到檢定裝置的智能化要求。
1 絕緣電阻表自動檢定系統(tǒng)構(gòu)成
基于USB從機技術(shù)的絕緣電阻表自動檢定系統(tǒng)為MCU+PC結(jié)構(gòu)形式,MCU單元完成數(shù)據(jù)檢測功能,檢測單元采用8 bit MCU,主要完成數(shù)據(jù)顯示、存儲、通信、功能選擇及初始化等工作,PC單元完成報表生成功能。其結(jié)構(gòu)如圖1所示。
在絕緣電阻表自動檢測系統(tǒng)中,由從機檢測8位十進制開關(guān)信號,經(jīng)從機處理后存入相應(yīng)數(shù)據(jù)的存儲區(qū)。檢定時,利用按鍵、程序下載口或USB接口進行檢定參數(shù)設(shè)定;然后將檢測的電阻信息、溫濕度信息及檢測參數(shù)信息送入存儲器保存并顯示;最后將主機所需信息經(jīng)USB從機接口快速上傳或經(jīng)USB主機接口實現(xiàn)報表快速輸出;在從機模式時,依靠主機發(fā)送指令來完成數(shù)據(jù)的自動檢測和快速上傳。
本文選用CH375A芯片作為USB總線接口控制器,其內(nèi)部集成了PLL倍頻器、主從USB接口SIE、數(shù)據(jù)緩沖區(qū)、被動并行接口、異步串行接口、命令解釋器、控制傳輸?shù)膮f(xié)議處理器、通用的固件程序等部件[3]。CH375A還具備串行、并行通信兩種接口方式以及主機(HOST)、從機(DEVICE/SLAVE)兩種工作模式。本設(shè)計采用并行通信、從機模式的被動接口硬件連接方式和內(nèi)部固件編程方法,通過中斷方式控制數(shù)據(jù)傳輸??蓪⒍鄠€CH375A直接掛接到MCU系統(tǒng)總線上,實現(xiàn)外圍設(shè)備及器件共存。在從機模式時,端點2的上傳區(qū)和下傳區(qū)各有64 B的數(shù)據(jù)緩沖單元;上傳、下傳端點號地址分別為0x82和0x02;主機端輸出和輸入端點各有64 B的數(shù)據(jù)緩沖區(qū),且與端點2共享一組緩沖區(qū),即主機端的輸出緩沖區(qū)為端點2的上傳緩沖區(qū),輸入緩沖區(qū)為端點2的下傳緩沖區(qū)。本設(shè)計正好利用該特點,通過端點2批量上傳和下傳數(shù)據(jù)到緩沖區(qū),實現(xiàn)信息快速交互。
系統(tǒng)選用具有超強抗干擾、高速、低功耗的8 bit STC89C52RD+單片機為從機核心控制器,其內(nèi)置看門狗 WATCH-DOG電路、512 B RAM和4 KB Flash存儲器[4],使用時無需擴展存儲器和附加外置看門狗電路。簡化的外圍電路,可方便地應(yīng)用到絕緣電阻表自動檢測系統(tǒng)中。
系統(tǒng)中的USB接口主要用于主機與從機間信息的快速傳輸。通過主機軟件可快速實現(xiàn)主機模式與從機模式的切換。在從機模式時,可為主機快速添加設(shè)備,設(shè)備插入后,實現(xiàn)從機信息快速上傳和報表信息的快速生成。主機模式下可實現(xiàn)檢測報表快速輸出。下面詳細介紹該通信接口的硬件設(shè)計和軟件實現(xiàn)方法。
2 系統(tǒng)通信接口硬件設(shè)計
絕緣電阻表自動檢定系統(tǒng)由USB接口電路、STC89C52RD+單片機、電源電路、時鐘電路、看門狗電路、人機接口電路、電阻信息檢測電路、存儲器電路、溫濕度檢測電路、打印機接口電路和程序下載電路等硬件組成。
該通信接口的硬件電路主要由USB從機控制芯片CH375A、USB插座、電源、信號線及保護電路組成。CH375A與STC89C52RD+單片機組成的USB通信接口電路如圖2所示。
圖中,CH375A的數(shù)據(jù)總線(D0~D7)與STC89C52RD+的P0端口相連,地址數(shù)據(jù)選擇輸入端(A0)與P2.0相連,讀信號控制端(RD#)與P3.7相連,寫信號控制端(WR#)與P3.6相連,片選信號控制端(CS#)與P2.1相連,中斷信號輸出端(INT#)與P3.2相連。可靈活地選用位尋址或總線方式編程,也可在不變動硬件電路的情況下,完成CH375A主機模式與從機模式的相互切換。當CS#為低電平時,選中CH375A芯片,若A0為低電平,選擇數(shù)據(jù)端口,可進行數(shù)據(jù)讀寫;若A0為高電平,選擇命令端口,可進行命令的寫入。當采用總線方式編程時,CH375A的命令地址和數(shù)據(jù)地址分別為0x81000、x8000。采用12 MHz晶振、并行數(shù)據(jù)傳送方法和優(yōu)化的模塊化軟件,全速模式下,其傳輸速度可達12 Mb/s[3]。
從機工作電源由主機USB接口總線提供,根據(jù)USB 2.0總線規(guī)范,主機可提供4.4~5.25 V的電壓、總線電流為100 mA的電源,其中最大總線電流不超過500 mA[5]。據(jù)此要求,參見圖2,圖中Vcc為5 V電源,經(jīng)2 Ω常溫?zé)崦綦娮鑂1限流,其壓降小于0.3 V,達到了從機系統(tǒng)的供電要求。
工業(yè)環(huán)境的干擾因素非常復(fù)雜,系統(tǒng)電磁兼容設(shè)計十分重要[6]。當接口切換至主機模式時,外設(shè)與USB接口共用MCU電源,存儲器插入時會導(dǎo)致電流瞬間變化,對檢定系統(tǒng)產(chǎn)生干擾;另外,靜電和雷擊也會對裸露USB接口構(gòu)成破壞。因此,在CH375A的V3引腳接入1 μF去耦電容、電源接入點并接兩個100 μF去耦電容、數(shù)據(jù)總線(D0~D7)上串接22 Ω抑制共模干擾的電阻和10 kΩ的上拉電阻;在PCB設(shè)計時,盡量使晶振和去耦電容靠近CH375A芯片,以減小寄生電容的產(chǎn)生;為了減小外部信號串入干擾,信號線D+和D-貼近、平行且在兩側(cè)布置地線,為了減少系統(tǒng)高頻輻射對其他電路的影響,在元件周圍布置了環(huán)繞地線;并在系統(tǒng)接口外部實施整體屏蔽,降低測試高壓對接口的影響。
3 系統(tǒng)通信接口軟件設(shè)計
絕緣電阻表自動檢定系統(tǒng)的軟件主要包括從機應(yīng)用程序、CH375內(nèi)部固件程序、Windows平臺下的USB驅(qū)動程序、應(yīng)用程序和微打印應(yīng)用程序五部分,如圖3所示。
在從機應(yīng)用程序中,采用總線(字節(jié))編程方式和中斷方式讀寫數(shù)據(jù),由CH375A初始化程序模塊(包括VID和PID設(shè)定、CH375A工作模式設(shè)定、中斷系統(tǒng)初始化)、內(nèi)部固件程序模塊和數(shù)據(jù)檢測程序模塊、信息交互程序(讀寫程序)模塊、主機模式下報表輸出程序模塊等組成;在主機應(yīng)用程序中,利用 API函數(shù)對CH375A數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)進行讀寫操作,以C++ Builder 2010為軟件平臺進行主機界面開發(fā),access 2003為軟件平臺進行信息管理系統(tǒng)開發(fā),Word 2003為軟件平臺進行報表編輯和輸出開發(fā),XML為C++ Builder 2010與Word 2003之間數(shù)據(jù)交換橋梁。下面詳細介紹通信接口關(guān)鍵部分的程序設(shè)計、源代碼及程序說明。
3.1 系統(tǒng)通信接口從機關(guān)鍵部分程序設(shè)計
從機應(yīng)用程序主要包括CH375A讀寫子程序、CH375A初始化子程序、信息交互子程序(中斷子程序)、檢測子程序和微打印機控制程序等部分。其中,讀寫子程序是依據(jù)CH375A讀寫時序,采用字節(jié)尋址方法進行,利用宏定義方法對數(shù)據(jù)端口和命令端口進行定義,以降低程序?qū)τ布囊蕾?,增強程序的可讀性和移植性。
CH375A讀寫子程序如下:
//寫命令子函數(shù)
void CH375_Write_Cmd(uchar cmd)
{ CH375_CMD_PORT=cmd;
}
//寫數(shù)據(jù)子函數(shù)
void CH375_Write_Dat(uchardat)
{ CH375_DAT_PORT=dat;
}
//讀數(shù)據(jù)子函數(shù)
uchar CH375_Read_Dat()
{ return CH375_DAT_PORT;
}
在初始化程序模塊中,首先將芯片的VID和PID寫入CH375A(可采用默認值);再將工作模式2(模式2為設(shè)備模式,若要實現(xiàn)接口功能切換,此模式為默認模式,接口連接識別成功后,在設(shè)定時間內(nèi)若無數(shù)據(jù)輸入,則自動切換至主機模式)寫入CH375A中;20 ms后開放中斷,完成初始化。
在信息交互程序模塊中,當CH375A收到數(shù)據(jù)或發(fā)送完數(shù)據(jù)后,INT#引腳產(chǎn)生低電平,申請單片機中斷,隨即進入從機中斷函數(shù),進行信息傳輸和處理。信息交互程序流程如圖4所示。
進入中斷后,首先讀取(GET_STATUS)中斷狀態(tài),同時清除當前中斷請求。然后對讀入狀態(tài)進行分析判斷,若狀態(tài)為EP2_OUT,表示CH375A成功接收到下傳數(shù)據(jù),再鎖定數(shù)據(jù)緩沖區(qū),防止數(shù)據(jù)緩沖區(qū)數(shù)據(jù)遭到破壞;若狀態(tài)為EP2_IN,表示數(shù)據(jù)上傳已成功,此時CH375A的數(shù)據(jù)緩沖區(qū)仍處于鎖定狀態(tài),需軟件解鎖。CH375A成功接收到數(shù)據(jù)后,從機通過API函數(shù)RD_USB_DATA讀取數(shù)據(jù),讀入后緩沖區(qū)自動解鎖。然后判斷是否有數(shù)據(jù)上傳,有則通過API函數(shù)WR_USB_DATA7進行上傳,完成后退出;否則自動退出。當CH375A將數(shù)據(jù)成功上傳后,主機判斷是否還有數(shù)據(jù)要上傳,有則利用WR_USB_DATA7進行數(shù)據(jù)上傳,完成后利用API函數(shù)USB_UNLOCK對CH375的數(shù)據(jù)緩沖區(qū)進行解鎖,然后退出;否則利用USB_UNLOCK對數(shù)據(jù)緩沖區(qū)進行解鎖,然后退出。
若CH375A工作在主機模式下,此時可啟用報表輸出程序。由STC89C52RD+來檢測微型打印機狀態(tài)和選通微型打印機,條件滿足后,從機將檢測信息及檢定輔助信息經(jīng)CH375A并行接口輸出到微型打印機,完成報表的自動生成。使系統(tǒng)擺脫對主機的依賴,實現(xiàn)系統(tǒng)對報表快速輸出的功能。報表輸出模塊程序流程如圖5所示。
3.2 系統(tǒng)通信接口主機關(guān)鍵部分程序設(shè)計
絕緣電阻表自動檢定系統(tǒng)主機應(yīng)用程序主要包括Windows平臺下的USB驅(qū)動程序、主機應(yīng)用程序及報表輸出程序。
本文采用組件庫豐富且支持強大網(wǎng)絡(luò)和數(shù)據(jù)庫功能的C++ Builder 2010作為前臺軟件開發(fā)平臺。首先,利用C++ Builder新建一個DLL類的(動態(tài)鏈接庫)工程;再以DllEntryPoint為入口函數(shù)、dllimport為出口函數(shù)創(chuàng)建CH373A的動態(tài)鏈接庫;然后將創(chuàng)建的CH375DLL.H、CH375DLL.LIB、CH375DLL.DEF文件導(dǎo)入工程中,即可完成動態(tài)庫的鏈接。通過調(diào)用CH375OpenDevice(0)來開啟CH375A從機設(shè)備[7],將CH375DLL.H文件中定義的變量INVALID_HANDLE_VALUE與返回值比較,若相等,則表示CH375A設(shè)備打開成功,否則表示設(shè)備打開失敗,主機界面中可顯示相應(yīng)提示信息;依據(jù)協(xié)議,做好等待從機信息準備;完成后退出。主機與CH375A進行信息交互的流程,如圖6所示。
若將C++ Builder 2010的Timer控件觸發(fā)時間設(shè)為100 μs,1 s內(nèi)可完成10 000次批量數(shù)據(jù)傳輸。完全可以滿足用戶對絕緣電阻表自動檢測系統(tǒng)的快速檢定要求。目前,該系統(tǒng)已投入使用,其絕緣電阻表自動檢定系統(tǒng)與上位機間進行USB通信的測試界面如圖7所示。
本設(shè)計基于USB從機技術(shù)的通信接口,可自動識別主機和微型打印機,實現(xiàn)設(shè)備的快速連接。在絕緣電阻表自動檢定系統(tǒng)中應(yīng)用,使得原有檢測裝置與主機融為一體,可完成數(shù)據(jù)的自動檢測、快速上傳及自動生成編輯功能強大的Word報表,系統(tǒng)數(shù)據(jù)庫方便了用戶對檢定數(shù)據(jù)的管理,提高了工作效率,實現(xiàn)了自動化、智能化檢定。本文采用C語言模塊化編程方式,可快速移植和二次開發(fā),有利于USB從機技術(shù)在智能檢測設(shè)備和高速數(shù)據(jù)采集系統(tǒng)中的廣泛應(yīng)用。
參考文獻
[1] 楊世海,陳彥華.電測儀表及其應(yīng)用[M].北京:中國電力出版社,2009.
[2] 中國經(jīng)濟報告課題組.2010年儀表檢定儀行業(yè)發(fā)展研究報告[R].北京:北京君略產(chǎn)業(yè)研究院,2010.
[3] 周洪建.基于DriverStudio的USB設(shè)備驅(qū)動程序的設(shè)計[J].福建電腦,2007(10):141-142.
[4] USB總線接口芯片CH375中文手冊.http://www.winchiphead.com/download/CH375/CH375DS1.PDF.2011-02-11.
[5] 李云勝,李曉虹.基于STC單片機的商品電子防盜系統(tǒng)設(shè)計[J].自動化與儀表,2009(7):38-41.
[6] 張林昌.發(fā)展我國的電磁兼容事業(yè)[J].電工技術(shù)學(xué)報, 2005,20(2):23-28.
[7] 周興,戴勝華.基于單片機的USB數(shù)據(jù)采集系統(tǒng)設(shè)計[J].儀器儀表標準化與計量,2006(1):25-27.
評論