基于LonWorks現場總線的電能檢測系統設計與實現
摘要:詳細介紹了基于LonWorks現場總線的電能檢測系統的硬件與軟件設計,在軟件設計中采用了面向對象方法,并給出了其問題描述與主題層。
本文引用地址:http://www.j9360.com/article/255602.htm關鍵詞:LonWorks 現場總線 OOA 電能檢測
電力系統是一類特殊的系統,安全性和可靠性要求很高。達到這個目標的關鍵是要保證現場設備之間可靠通信,實現配電網綜合自動化。基于LonWorks現場總線的電能檢測系統是配電網綜合自動化的一個子集,它完成電網數據的采集與監控。LonWonrks網絡是將控制系統接入層域網絡(LAN),用網絡節點代替LAN中的工作站,每個節點可以實現點到點的信息傳送,具有極其良好的互操作性,從而使整個網絡實現了無中心的真正的分布式控制模式。因此采用LonWorks總線技術可以把整個復雜配電網綜合自動系統分解為相對簡單的多個子系統。LonWorks網絡采用ISO/OSI模型的全部7層協議和面向對象的設計方法。通過網絡變量將網絡通信設計簡化為參數設置,其通信速率為78.125kbps或1.25Mbps,直接通信距離可達2700m。LonWorks網絡支持雙絞線、通軸電纜、光纖、無線射頻、紅外線、電力線等多種通信介質,被譽為通用控制網絡。目前已經有2600多家公司不同程序地介入了LonWorks技術,1000多家公司已經推出了LonWorks產品,并進一步組織起LowMark互操作協會。它已被廣泛應用于樓宇自動化、家庭自動化、保安系統、辦公設備、工業過程控制等行業。
1 基于LonWorks現場總線的電能檢測系統的硬件設計
LonWorks網絡系統由智能節點組成,每個智能節點可具有多種功能的I/O功能。在本系統中,基于LonWorks總線的網絡模型如圖1所示。圖中,神經元芯片和通信協議是LonWorks網絡的技術核心。LonWorks網絡采用LonTalk協議,該協議可由Neuron芯片自帶,也可固化在外部存儲器中。神經元芯片采用3120。它有3個8位CPU,第一個用于完成LonTalk協議的第一層和第二層功能,成為介質訪問控制處理器,實現介質訪問的控制與處理;第二個用于完成第三層至第六層的功能,成為網絡處理器,實現網絡的尋址、處理、背景診斷、路徑選擇、軟件計時和網絡管理,并實現網絡通信控制、收發數據包等;第三個是指用處理器,執行操作系統服務與用戶程序。芯片中還具有存儲信息緩沖區,用以實現CPU之間的數據傳輸,并作為網絡緩沖區和應用緩沖區。圖中,電能檢測儀負責檢測電網的電能參烽,負責采集電網上的電壓、電流、頻率等變量,并能在儀表掉電時長期(時間由用戶的要求和系統存儲空量確定)保存數據。其具體要求為:(1)實時檢測A、B、C三相電壓、電流的頻率;(3)檢測A、B、C三相有功、無功功率;(4)支持兩種通信模式:LonWorks總線方式和RS232串行方式;(5)保存整點時刻的電壓、電流等數據;(6)從儀表第一次工作時開始累計總的正常運行時間和停電時間;(9)用數碼管顯示和鍵盤輸入實現與用戶的交互,用戶可以在現場察看和設置儀表的運行參數和歷史記錄。圖中,電容器組用于對電網的無功補償,其它現場設備為電網自動化的其它智能節點。由于系統主要是監控計算機的軟件編制、上位監控PC機與神經元芯片3120的接口設計以及電能檢測儀的設計。下面對這幾個方面進行介紹。
1.1 電能檢測儀的硬件設計
電能檢測儀實質上是本系統的一個智能節點,它主要完成現場電能數據的采集與處理并能根據上位監控機的要求把數據傳送到上位監控機,同時它也能根據用戶求設置其工作參數。在本系統中,根據具體的設計要求,電能檢測儀可分為電壓電流檢測模塊、頻率檢測模塊、數據存儲模塊、多路轉換模塊、互感器模塊、LonWorks通信模塊、RS232通信模塊和鍵盤與顯示接口,其原理如圖2所示。電壓、電流檢測模塊負責實時檢測三線電壓、四線電流;頻率檢測模塊負責實時檢測A、B、C三相電壓和電流的頻率;RS232通信模塊負責電能檢測儀與外部RS232網絡和單片機的通信;EEPROM負責長期保存用戶所需的電壓、電流等歷史數據;LonWorks通信模塊負責神經元芯片與LonWorks網絡和單片機通信。RS232通信模塊、鍵盤與顯示模塊、多路轉換模塊等技術已經非常成熟,本文不再詳述。本文著重介紹LonWorks通信模塊和電壓電流檢測模塊。
普通數字電壓、電流表只能測量直流電壓、電流。如果要測量交流電壓、電流,必須增加交流/直流(AC/DC)轉換器。它一般有兩種轉換方式:平均值轉換和真有效值轉換。本系統采用真有效值方法檢測電壓、電流。其核心是TRMS/DC轉換器,這類電路現已實現單片集成化。本系統中有效轉換芯片采用AD公司的AD536,它是一種低功耗、精密的TRMS/DC轉換器;AD轉換芯片采用TI公司生產的TLC1543,它是10位的ADC,最大采樣速率66kbps。電壓電流采樣原理框圖如圖3所示。圖中,MC14052是雙四選一多路模擬開關。89C52的P1.5、P1.6用于選通MC14052的模擬通道。在任一時刻,只有一相電壓和電流輸入通道被選通。兩片AD536分別對交流電壓、交流電流進行真有效值轉換,轉換結果送到串行A/D芯片TLC1543進行模/數轉換。89C52的P1.0~P1.4對TLC1543進行控制,完成采樣過程。
LonWorks通信模塊的功能是實現神經元芯片3120與89C52單片機的通信以及神經元芯片3120與LonWorks總線的通信。神經元芯片支持串行操作和并行操作。對于串行操作,它用得最多的是I2C總線方式。在這種總線方式下,其IO8,IO9端口可被定義成I2C總線接口(此時IO8為串形時鐘線SCA,IO9為串行數據線SDA)。在軟件編寫上,要首先將IO8,IO9定義為I2C總線方式,定義格式為:IO_8 i2c io_ob_ject_name。
Io_object_name為對該I/O對象的命名。由于IO8、IO9成對使用,故只需要定義IO8.在本系統中,選用的是并行方式。神經元芯片提供了專門的并行口通信協議,共有三種并行口通信模式,即master、slave A、slave B模式。Master模式是一種智能的并行I/O對象模式,在這種模式下,神經元芯片master對從CPU發起并建立同步操作。從CPU必須是工作于slave A模式或模擬的slave A模式的神經元芯片。工作于slave A模式的神經元芯片使用了握手信號線HS,HS才數據出現在同一個時鐘周期內。雖然這種模式主要用于與master模式的神經元芯片接口,但是它同樣適用于外部CPU(非神經元芯片)。Slave B模式與slave A模式相似。它們不同之處在于:前者的握手信號出現在不同的時鐘周期內,而后者出現在同一個時鐘周期,在這種模式下,主CPU必須是外部CPU。外部CPU與神經元芯片的接口可以使用slave A,也可以使用slave B。在本系統中,89C52與神經元芯片3120的通信方式采用并行方式,3120的工作模式為slave A。因為神經元芯片3120的握手信號是集電極開路,因此需要接一個上位電阻。89C52的硬件妝口如圖4所示。神經元芯片3120并行I/O接口包含8個I/O數據線和3個控制線。在slave A模式下,IO0~IO7為數據信號端,IO8為CS#信號端,IO9為R/W#信號端,IO10為HS信號端,CS#信號由80C52驅動,有效表示正在進行數據傳輸,脈沖下沿將數據寫入80C52或3120中。R/W#信號在CS#有效時控制數據的讀寫,它由80C52控制。HS信號由3120驅動,它通知80C52、3120正處于忙狀態。當HS為高電平,表示3120正在讀寫數據;當HS為低電平,表示3120數據已經處理完畢,可以進行下一次通信了。
神經元芯片使用令牌心會協議實現多種設備共享總線,在任何時刻只能有一個設備將數據送到總線上。虛擬寫令牌在80C52與3120間進行巡回。獲得虛擬令牌的CPU擁有向總線發送數據垢權力。否則只能從總線上讀取數據。其過程如下:如果3120具有虛擬令牌,在向總線發送完一個字節后HS變為高電平,80C52從總線上取走數據后,HS自動變為低(由神經元芯片韌件完成);如果89C52擁有寫令牌,在它使得CS#和R/W#變為低電平、3120取走數據之前,一直查詢IO10,如果為低,表示3120已經取走數據,可以發送下一個字節了。
1.2 LonWorks與PC機硬件接口設計
在本系統中,上位監控PC機與神經元芯片的接口是通過ISA擴展槽完成的,其原理圖如圖5所示。圖中,GAL16V8將ISA總線的地址線A0、A1和寫信號線IOW#進行譯碼,共有兩路輸出。一路用于選通神經元芯片,另一路用于控制地址鎖存器74245。當74245選通時,D0和HS形成直通,PC端程序讀取數據線內容,屏蔽掉D0之外的位后,獲取神經元芯片的握手信號HS狀態;當74245未被選通時,進行正常的數據傳輸。
PC機中僅使用A0~A9地址位來表示I/O口地址,即有1024個口地址。前512個提供給系統電路板使用,后512個供擴充插槽使用。當A9=0時,表示為系統板上的I/O口地址;當A9=1時,表示為擴充槽接口卡上的口地址。因此在制作接口電路卡時,其中地址要保證A9=1。在1024個口地址中,有很多已被IBM或其他廠商制作的各種與主機配套的接口卡占用,有些保留有待今后繼續開。因此一般用戶可以使用的口址范圍是:200~03FF。在本系統中,經GAV片譯碼后,神經元芯片和地址鎖存器74245的口地址分別為200H和201H。
2 基于LonWorks現場總線的電能檢測系統的軟件設計
本系統的軟件設計主要包括兩部分。第一部分為下位機的軟件設計,它主要完成現場數據收集、處理與存儲;配置3120的工作模式;80C52與3120進行通信,把數據傳輸到3120并進而傳輸到上位監控機等。在本系統中使用了Neuron C編程語言,現以并行口讀寫為例說明其特點,對并行口讀寫首先要用下面的語句聲明并行口對象:
IO_0 parallel slave/slave_b/master io_object_name
Io_in和io_out分別用于對并行口進行讀寫。為了使用并行口對象,io_in和io_out需要定義parallel_io_interface結構,如下所示:
Struct parallel_io_interface {
Unsigned length;//length of data field
Unsigned data[maxlength];//data field }pio_name;
Neuron C內部還有許多函數和事件很容易訪問神經元芯片并行I/O對象,如io_in_ready,io_out_request,io_out_ready等。
第二部分為上位監控機的軟件設計,在本系統的軟件設計采用了面向對象的軟件設計方法。由于本系統是整個配電自動化系統的一部分,因此,它有效地提高了系統的可護性與可擴充性。面向對象的分析是針對問題域和系統的,它分為5個層次,即對象——類層、屬性層、服務層、結構層和主題層。本文將對本系統的問題域和主題層進行描述。
其問題域描述為:(1)擁有一個用戶登記界面,用戶需要輸入現場子站的基本屬性,包括配電名稱、儀表號、檢測容量和線路號等;(2)用戶可以遠程查詢現場儀表的運行參數,包括量程、輸入回路數、無功投入門限、投入延時、電壓上下限等;(3)用戶可以遠程查詢子站月數據、整點數據;(4)用戶可以遠程設置子站的運行參數;(5)允許在通信中,用戶隨時中斷通信;(6)根據用戶的查詢條件可以輸出報表,并提供打印功能;(7)能夠維護數據,如導入導出數據;(8)要求保存用戶的最新參數設置,在每次運行程序時能夠調入。
根據問題域的描述及其對象層、屬性層和服務層的分析,把其主要層分為用戶界面、文件系統、報表輸出和通信。我們將注冊表和數據庫歸于文件系統是由于兩者都涉及文件的存儲,其中CregisterTable封裝了與注冊表相關的API函數和RegCreateKey、RegOpenKey、RegQueryValue等,Cdatabase采用動態性生成技術,以方便數據庫組態。主題層的描述如圖6所示。對系統進行了面向對象分析與設計之后,即可進入軟件的具體實現。本系統用Visual C++6.0開發。由于關于VC++編程的資料非常多,本文不再對數據庫組態、界面組態以及上位機與下位機通信協議進行詳述。
本系統是我們為廣東一家公司開發的電能檢測系統,已經交付使用。作為整個電網自動化的一個子集,本系統由于采用了LonWorks總線和面向對象技術,因而容易進行擴展和維護。以上詳細地介紹了基于LonWorks的電能監控系統的軟硬件設計,雖然有一定的特殊性,但對于其它的LonWorks總線系統設計仍具有一定的參考意義。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論