0 引言
目前電力系統(tǒng)的通信、監(jiān)控和數(shù)據(jù)采集系統(tǒng)采用的是一種分布式的通信結(jié)構(gòu)。伴隨著新設備、新技術的應用,在當前我國的電力系統(tǒng)內(nèi),對終端單元的通信、監(jiān)控和數(shù)據(jù)采集存在著三大問題:一是分布式系統(tǒng)的工作效率較低;二是終端種類繁多,并且通信協(xié)議互不兼容;三是主站的數(shù)據(jù)采集前端子系統(tǒng)(工控采集板、協(xié)議轉(zhuǎn)換板等)適應性較差,實際使用效果難以令人滿意。
電力系統(tǒng)所需要的,應該是這樣一種主站數(shù)據(jù)采集前端子系統(tǒng):首先它應該可以實現(xiàn)與多種類型的終端單元進行通信與數(shù)據(jù)采集;其次,它應該可以兼容多種通信協(xié)議;然后,最為重要的是它可以智能地、自動地完成對終端單元的數(shù)據(jù)采集和協(xié)議轉(zhuǎn)換任務;最后,這個子系統(tǒng)還應該價廉物美,具有良好的經(jīng)濟性。
1 采集與監(jiān)控系統(tǒng)結(jié)構(gòu)
在變電站和工業(yè)現(xiàn)場的微機監(jiān)控應用系統(tǒng)中,要采集許多遠程現(xiàn)場數(shù)據(jù)點,這時主站PC機與下位機通過串行通訊來完成命令與現(xiàn)場采集數(shù)據(jù)的傳輸。目前比較通用的是在PC機或工控機內(nèi)安裝數(shù)據(jù)采集板卡,如A/D卡及422、485卡。這些數(shù)據(jù)采集設備存在以下缺陷:安裝麻煩、價格昂貴;受計算機插槽數(shù)量、地址、中斷資源限制,可擴展性差;在一些電磁干擾性強的測試現(xiàn)場,無法專門對其做電磁屏蔽,導致采集的數(shù)據(jù)失真。通用串行總線(Universal Serial Bus,簡稱USB)是1995年康柏、微軟、IBM、NEC等公司為了解決傳統(tǒng)總線的不足推廣的一種新型串行通信標準。該總線接口具有安裝方便、高帶寬、易擴展等優(yōu)點,已經(jīng)逐漸成為現(xiàn)代數(shù)據(jù)傳輸?shù)陌l(fā)展趨勢?;赨SB的數(shù)據(jù)采集系統(tǒng)充分利用USB總線的上述優(yōu)點,有效解決了傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的缺陷。本設計就是將RS-232、RS-485與傳輸距離短但高速、可靠易擴展的USB相結(jié)合,形成了能夠多點、快速、可靠、低成本的遠距離數(shù)據(jù)采集系統(tǒng)。
2 適配器的硬件電路實現(xiàn)
通信適配器硬件結(jié)構(gòu)如上圖1所示。微控制器采用AT89C52,該控制器具有運算速度快、兼容MCS51指令集的特點,內(nèi)部集成 8Kflash,性價比高。外接看門狗電路MAX706,可為微控制器提供可靠的保護。為了防止外界干擾對MCU的影響,單片機與下位機通訊的接口采用光耦隔離,控制接口的隔離采用TLP521-2,收發(fā)的RXD、TXD采用6N137隔離。
USB接口采用PHILIPS的USB控制芯片PDIUSBD12,該控制芯片能夠?qū)崿F(xiàn)微控制器的并行總線到USB口的總線接口功能,而且編程方便,適用于多種微控制器,內(nèi)部集成實現(xiàn)USB功能的PLL、SIE、FIFO模塊,與普通的微控制器配合就可以實現(xiàn)功能完備的USB外設。對于一個微控制器而言,PDIUSBD12就象一個帶8位數(shù)據(jù)總線和一個地址位(占兩個位置)的存貯器件。與USB的連接是通過1.5kΩ上拉電阻將D+(用于高速 USB器件)置為高來實現(xiàn)的。1.5kΩ上拉電阻集成在PDIUSBD12內(nèi)部,默認狀態(tài)下不與VCC相連。連接的建立通過外部/系統(tǒng)微控制器發(fā)出命令來實現(xiàn)。這就允許系統(tǒng)微控制器在決定與USB建立連接之前完成初始化時序。USB總線連接可以重新初始化而不需要拔出電纜。
考慮到現(xiàn)在工業(yè)領域常用的總線有RS232、RS485等,采用MAXIM公司的MAX232、MAX485接收發(fā)送器實現(xiàn)電平轉(zhuǎn)換。與外界的接口采用光電開關,通過上位機初始化設置總線類型選擇與外界的接口方式,從而有效的避免了設置值與實際操作中接法的不一致。又因為RS-485總線為并接式二線制接口,一旦有一只芯片故障就可能將總線“拉死”,因此對其二線口VA、VB與總線之間應加以隔離。通常在VA、VB與總線之間各串接一只 4~10Ω的PTC電阻,同時與地之間各跨接5V的TVS二極管,以消除線路浪涌干擾。如沒有PTC電阻和TVS二極管,可用普通電阻和穩(wěn)壓管代替,同時在該芯片外接0.1uf的電容,也可以有效的防止外界的干擾。
3 適配器的軟件設計
適配器的軟件主要包括AT89C52微控制器的軟件以及上位機的管理軟件。考慮到上位機的處理速度優(yōu)勢,將協(xié)議轉(zhuǎn)換的工作交由上位機的客戶服務程序來完成。單片機AT89C52主要實現(xiàn)智能的終端與協(xié)議識別以及與下位機的通信和數(shù)據(jù)轉(zhuǎn)存。由于采用USB接口與上位機通信不占用上位機系統(tǒng)的CPU 時間,這樣即把上位機從通信瓶頸中解脫出來,又充分利用了上位機的速度優(yōu)勢。
3.1 單片機控制程序設計
單片機的控制程序由三部分組成:首先是初始化部分,完成單片機和所有外圍電路(包括PDIUSBD12)的初始化以及終端和協(xié)議的識別;其次是主循環(huán)部分,等待來自數(shù)據(jù)采集或上位機的數(shù)據(jù)并實現(xiàn)數(shù)據(jù)的轉(zhuǎn)存;最后是中斷服務程序,完成相應的中斷處理功能。
設備安裝完后準備運行前,操作人員可利用上位機管理軟件提供的用戶界面初始化一些系統(tǒng)參數(shù),如總線類型、終端類型等等。當選擇智能搜索終端時,單片機按次序調(diào)用儲存在其內(nèi)部閃存中的各種相關協(xié)議,并通過通訊接口向外發(fā)出握手指令等待終端響應。如果終端返回信號并且信號格式與單片機發(fā)出的相同(即二者的協(xié)議相同),則認為該終端有效;如果終端返回信號與單片機發(fā)出的不同,或者連接超時,則認為該終端無效或不存在。單片機將最終搜索結(jié)果即終端信息表寫入存儲器指定單元,并通知微機讀取,以備隨后的通信使用。
當選擇從智能終端采集數(shù)據(jù)時,單片機通過順序查詢上述儲存的搜索結(jié)果,得到終端的類型。然后,根據(jù)不同的終端調(diào)用相應的協(xié)議,發(fā)出采集數(shù)據(jù)的指令。適配器上的CPU與下位機之間是一對多的通信模式,默認狀態(tài)下,采用循環(huán)采集,各終端有一預先指定的固定的通信地址。對一個固定的終端而言,CPU發(fā)出握手信號,遠方終端響應,則相應的信息經(jīng)RS232/RS485接收,由CPU存入RAM62256的指定地址;接收完成后,CPU將接收到的數(shù)據(jù)經(jīng) D12傳給上位機;上位機的客戶服務程序?qū)ι蟼魃蟻淼臄?shù)據(jù)進行解碼、校驗,如有誤,通知終端重傳;如無誤,則將解碼后的信息轉(zhuǎn)存入計算機指定的內(nèi)存,并備份到相應的文檔,供其他的客戶服務程序使用。根據(jù)系統(tǒng)的特點,還可以采用定點采集方式對指定終端進行數(shù)據(jù)采集與監(jiān)控。以下給出單片機主程序流程圖(圖 2)。
圖2:微控制器主程序流程圖
3.2 上位機的程序設計
從上位機來看,適配器為它的一個USB外設。因此上位機必須提供USB外設的驅(qū)動程序。上位機的管理軟件包括客戶服務程序以及USB驅(qū)動程序。
客戶服務程序(Client software)是駐留在上位機的與USB系統(tǒng)軟件交互作用的軟件。它確定需要與功能(即USB外設)進行什么樣的傳輸,當它需要與功能進行傳輸時,提出一個請求,并生成一個IRP(I/O中斷請求包),然后進行USBD(USB Driver)調(diào)用,把IRP通過USBD接口傳送給USBD。當該傳輸請求被服務后,客戶服務軟件接收IRP完成狀態(tài)的通知。如果該傳輸涉及功能到主機的數(shù)據(jù)傳輸,則客戶服務軟件可以訪問與該IRP有關的數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)。
USB驅(qū)動程序(USBD)是駐留在上位機的為客戶提供通用服務的軟件實體,它管理主控制器上的一個或多個功能。它通過調(diào)用適當?shù)闹骺刂破黩?qū)動程序(HCD)將用戶IRP中的數(shù)據(jù)轉(zhuǎn)化為設備端點的數(shù)據(jù),或通過回調(diào)適當?shù)腍CD將設備端點的數(shù)據(jù)轉(zhuǎn)化為客戶IRP中的數(shù)據(jù)。USBD接收來自配置軟件的配置請求,該配置軟件是駐留在上位機上的負責配置USB設備的軟件,它描述所希望的設備配置:端點、傳輸類型、傳輸周期、數(shù)據(jù)規(guī)模等。USBD基于帶寬有效性以及總線容納該請求類型的能力,接受或拒絕配置請求。如果它接受了一個請求,則USBD為所希望類型的請求者創(chuàng)建一個管道。一旦設備被配置,軟件客戶可以請求IRP在它與其功能端點之間進行數(shù)據(jù)傳送。
主控制器驅(qū)動程序(HCD)是從主控制器中抽象出來的USB軟件層,它提供了一個SPI(系統(tǒng)編程接口)與主控制器交互作用,并隱藏了主控制器的硬件實現(xiàn)細節(jié)。當用管道傳送IRP時,HCD把它們添加到事務表中。當一個IRP完成時,HCD會通知發(fā)出該請求的軟件客戶IRP已經(jīng)完成。如果IRP 包括從功能到軟件客戶的數(shù)據(jù)傳送時,則把數(shù)據(jù)放在客戶指定的數(shù)據(jù)緩沖區(qū)。
USB驅(qū)動程序的編寫往往是USB設備開發(fā)過程中最困難的,通常采用Windows DDK來實現(xiàn)。目前有許多軟件廠商提供各種各樣的驅(qū)動程序生成工具,如Computerware的DriverStudio,BlueWaters的 DriverWizard等。本設計中筆者就是采用DriverStudio軟件生成的程序框架,添加了適當?shù)挠脩舸a,完成了適合與本設計的驅(qū)動程序的編寫。
上位機的客戶服務程序是用VC++6.0編寫的,協(xié)議轉(zhuǎn)換是根據(jù)智能終端與協(xié)議識別所形成的終端信息表調(diào)用相應的協(xié)議轉(zhuǎn)換程序來實現(xiàn)的。用戶可以很方便的擴展用戶所需的協(xié)議。
4 結(jié)語
USB由于其連接的方便性、通信速度的快速性、接口的簡單性,必將在計算機技術應用領域得到廣泛的應用。本文提出的智能多協(xié)議通信適配器可以廣泛地應用于實時監(jiān)控、實時數(shù)據(jù)采集等場合,也可以增強協(xié)議辨識和增加協(xié)議轉(zhuǎn)換功能,使它能自適應地應用于與具有標準通信協(xié)議和規(guī)范化的數(shù)據(jù)格式而又缺少詳細技術資料的智能終端通信中。