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