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