基于RTCORBA技術(shù)的嵌入式代理服務(wù)器設(shè)計
關(guān)鍵詞:RTCORBA 代理服務(wù)器 現(xiàn)場總線
引言
現(xiàn)場控制網(wǎng)絡(luò)技術(shù)、信息網(wǎng)絡(luò)集成技術(shù)和分布式實時技術(shù)的發(fā)燕尾服和成熟,使集成信息網(wǎng)絡(luò)和現(xiàn)場控制網(wǎng)絡(luò)的分布式實時測控網(wǎng)絡(luò)成為未來工業(yè)測控系統(tǒng)的發(fā)展方向。在這這樣一個測控網(wǎng)絡(luò)中,實現(xiàn)異構(gòu)網(wǎng)絡(luò)無縫互聯(lián)的關(guān)鍵是代理服務(wù)器。使用基于實時中間件的代理服務(wù)器,既能滿足實時互聯(lián)的要求,又使代理服務(wù)器屏蔽了底層測控設(shè)備的實現(xiàn)細節(jié),減少了系統(tǒng)開發(fā)的難度;同時,基于面向?qū)ο蠹夹g(shù),各種測控設(shè)備的連接與安裝難度也大幅度降低。
本文使用Linux+RTCORBA的系統(tǒng)架構(gòu)設(shè)計一個嵌入式代理服務(wù)器,用于LON網(wǎng)到以太網(wǎng)的互聯(lián),并且使用基于ARM7的單片機實現(xiàn)了該嵌入式代理服務(wù)器。
1 RTCORBA技術(shù)簡介
CORBA是OMG推出的一個重要的工業(yè)規(guī)范,是OMA(Object Model Architecture)的核心部分。OMA所采用的方法,是為面向?qū)ο蟮膽?yīng)用提供一個公共框架,如果符合這一框架,就可以在多種硬件平臺和操作系統(tǒng)上建立一個異質(zhì)的分布式應(yīng)用環(huán)境。
OMG在制訂CORBA規(guī)范時,首先考慮的是互操作性,用以解決異種平臺上的不同對象的協(xié)作問題;所以,需要將CORBA規(guī)范進行擴展,以滿足分布式實時應(yīng)用的需要和測控系統(tǒng)的實時性要求。在1999年3月,OMG發(fā)布了實時CORBA1.0規(guī)范。OMG已將它作為CORBA3.0規(guī)范的一部分。
實時CORBA對原有的規(guī)范進行了擴展,定義了標(biāo)準(zhǔn)的接口和QoS策略,其擴展的具體內(nèi)容為:
*將客戶的CORBA::Current接口擴充為RTCORBA::Current接口;
*將服務(wù)器的PDA擴充為RTPOA;
*將ORB擴充為RTORB;
*增添了RTCORBA::Priority接口和RTCORBA::PriorityMapping接口;
*增添了RTCORBA::Threadpool接口;
*增添了Scheduling Service。
這些擴展可具體分為對處理器資源、內(nèi)存資源和通信資源的管理三個部分。
2 嵌入式代理服務(wù)器設(shè)計與實現(xiàn)
代理服務(wù)器屏蔽了底層測控設(shè)備的實現(xiàn)細節(jié),向上層提供統(tǒng)一的數(shù)據(jù)服務(wù),在測控網(wǎng)絡(luò)中起著紐帶的作用。為了實現(xiàn)分布式實時測控網(wǎng)絡(luò),其中核心的問題之一就是實現(xiàn)一個代理服務(wù)器。由于代理服務(wù)器需要應(yīng)用于工業(yè)現(xiàn)場,要求能在較寬溫度范圍內(nèi)工作,并且還要求封裝牢固(抗振和防沖擊)、導(dǎo)軌安裝、電源冗余、DC供電等。另外,從低功耗、低成本、小何種的角度來看,使用嵌入式系統(tǒng)都優(yōu)于使用通用系統(tǒng),故本文選用嵌入式系統(tǒng)來實現(xiàn)代理服務(wù)器。
整個代理服務(wù)器可以分為硬件平臺層、操作系統(tǒng)層、實時中間件層和應(yīng)用程序四個層次來實現(xiàn),如圖1所示。
2.1 硬件平臺
在這種方案中,代理服務(wù)器一方面通過各種驅(qū)動或服務(wù)程序與現(xiàn)場設(shè)場設(shè)備實時交換數(shù)據(jù),另一方面通過ORB與應(yīng)用程序交換數(shù)據(jù)。代理服務(wù)器可以提供對LON現(xiàn)場總線、常規(guī)通用工業(yè)串行通信總線RS485/RS232、常用DCS/PLC等多種現(xiàn)場控制協(xié)議的支持,其硬件框圖如圖2所示。通過使用代理服務(wù)器,屏蔽了底層的現(xiàn)場總線通信協(xié)議,使用面向?qū)ο蟮姆椒▽⒚恳粋€現(xiàn)場設(shè)備都實現(xiàn)為網(wǎng)絡(luò)中的一個分布式對象;通過對象方法調(diào)用向上層應(yīng)用提供統(tǒng)一的服務(wù),使得上層應(yīng)用可以直接通過調(diào)用代理服務(wù)器中的對象方法來控制底層測控設(shè)備。
(1)微處理器模塊
微處理器模塊包含所有使得微處理器能夠正常工作的部分。它包括微處理器、Flash、SDRAM、電源、JTAG接口電路、復(fù)位電路和晶振電路。根據(jù)需求,我們選用三星公司的基于16/32位ARM7TDMI核的S3C4510B微處理器。它專為以太網(wǎng)通信系統(tǒng)而設(shè)計,具有低成本和高性能的特點,并集成了多種外圍器件。
(2)10M/100Mbps以太網(wǎng)通信模塊
這個模塊用來與以太網(wǎng)通信。S3C4510B內(nèi)嵌了一個以太網(wǎng)控制器,支持媒體獨立接口(MII)和緩沖DMA接口(BDI),可在半雙工或全雙工模式下提供10M/100Mbps以太網(wǎng)接入。實際上芯片已經(jīng)包含以太網(wǎng)MAC控制,但未提供物理層接口,需要外接一塊物理層芯片。
本系統(tǒng)使用RTL8201作為以太網(wǎng)的物理層接口芯片。它的主要功能包括物理編碼子層、物理媒體附件、雙絞線物理媒體子層、10BASE-TX編碼/編解碼器和雙絞線媒體訪問單元等;同時,帶有MII接口,可以簡單方便地與S3C4510B連接,如圖3所示。
S3C4520B的MAC控制器可以控制31個RTL8201,每個RTL8201都必須有不同的PHY地址(00001B~11111B)。系統(tǒng)復(fù)位時,由鎖存引腳9、10、12、13、15的初始狀態(tài)確定PHY地址。但是,由于鎖存引腳也復(fù)用為LED引腳,故不能直接接電路或地。
(3)LON現(xiàn)場總線通信模塊
代理服務(wù)器作為LON現(xiàn)場總線中的一個節(jié)點與現(xiàn)場檢測設(shè)備通信,所以LON現(xiàn)場總線通信模塊要包括與LON網(wǎng)絡(luò)通信和與S3C4510B通信的功能。
LonWorks總線通信模塊主要由神經(jīng)元芯片、LonWorks雙絞線網(wǎng)絡(luò)收發(fā)器、程序存儲器、數(shù)據(jù)存儲器等組成。在該代理服務(wù)器的應(yīng)用中,實際上僅僅把Neuron(TMPN3150)芯片作為通信處理器用,由其按照LonTalk協(xié)議與LonWorks網(wǎng)絡(luò)上的所有智能節(jié)點進行通信,同時將通過并行口與主CPU通信。它將從S3C4510B接收到的來自以太網(wǎng)絡(luò)的其它網(wǎng)段數(shù)據(jù)或上層控制命令通過特定的尋址方式由LonWorks收發(fā)器傳向LonWorks網(wǎng),或?qū)腖onWorks網(wǎng)上接收到的LonTalk協(xié)議報文由通用I/O發(fā)給S3C4510B,再由S3C4510B進行處理。由于開發(fā)Neuron芯片時采用的Neuron C(專門為Neuron芯片設(shè)計的編程語言,從ANSI C中派生出來的)語言,故內(nèi)存占用大。另外,作為通信協(xié)議處理器使用要求有大量的數(shù)據(jù)緩沖區(qū)進行數(shù)據(jù)交換,而僅僅利用TMPN3150內(nèi)部的2KB RAM容量是均無不夠的,因此我們擴展了外部存儲器Flash和RAM。由于采用Flash,可以非常方便地修改用戶程序。
LON現(xiàn)場總線通信模塊原理如圖4所示。
2.2 操作系統(tǒng)層
操作系統(tǒng)層不僅僅是操作系統(tǒng)軟件,它一般包括兩個部分:
①引導(dǎo)加載程序,包括固化在固件(firmware)中的boot代碼(可選)和Boot Loader兩大部分;
②內(nèi)核和文件系統(tǒng),包括 Linux內(nèi)核、根文件系統(tǒng)和建立于Flash內(nèi)存設(shè)備之上的文件系統(tǒng)。
(1)Linux內(nèi)核
作為候選的一種嵌入式操作系統(tǒng),嵌入式Linux以其引入注目的優(yōu)勢,極大地吸引電子設(shè)計工程師從自己書寫的或?qū)S玫腞TOS轉(zhuǎn)移到Linux。UClinux是專為那些沒有MMU(內(nèi)存管理單元)的嵌放式處理器開發(fā)的嵌入式Linux。
圖3
www.uclinux.org為uClinux提供了GNU的交叉編譯器,包括以下組件:
*Gcc交叉編譯器,即在宿主機上開發(fā)編譯目標(biāo)上可運行的二進制文件;
*Binutils輔助工具,包括objdump、as、ld等;
*Gdb調(diào)試器。
使用這些工具搭建了嵌入式應(yīng)用開發(fā)平臺后,就可以在標(biāo)準(zhǔn)的Linux平臺上開發(fā)應(yīng)用了。搭建了開發(fā)平臺主要有以下幾步:
①獲得uClinux-dist的源碼包;
②建立ARM交叉編譯環(huán)境;
③針對硬件修改配置;
④編譯內(nèi)核;
⑤內(nèi)核加載運行。
(2)BootLoader
引導(dǎo)加載程序是系統(tǒng)加電后運行的第一段軟件代碼。在PC中引導(dǎo)加載程序由BIOS(其本質(zhì)就是一段固件程序)和位于硬盤MBR中的OS Boot Loader(如LILO和GRUB等)一起組成。而在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(有的嵌入式CPU也會內(nèi)嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務(wù)就完全由Boot Loader來完成。在一個基于ARM7TDMI核的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時都從地址0x00000000處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的Boot Loader程序。
通過Boot Loader,可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。Boot Loader是嚴重地依賴于硬件而實現(xiàn)的,特別是在嵌入式世界。因此,我們需要設(shè)計與實現(xiàn)自己專有的Boot Loader。
在我們的系統(tǒng)中,內(nèi)核映像與根文件系統(tǒng)映像都被加載到RAM中運行。之所以這樣是因為,雖然在嵌入式系統(tǒng)中內(nèi)核映像與根文件系統(tǒng)映像也可以直接在ROM或Flash這樣的固態(tài)存儲設(shè)備中直接運行,但這種做法無疑是以運行速度的犧牲為代價的,會影響到實時應(yīng)用。
Boot Loader分為stage1和stage2兩大部分。依賴于CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實現(xiàn),以達到短小精悍的目的;而stage2則通常用C語言來實現(xiàn),這樣可以實現(xiàn)較復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。
2.3 ORB
目前基于CORBA規(guī)范的產(chǎn)品有很多,著名的就有Orbix2000、JacORB、MICO、Visibroker、ORBit、TAO等。這些產(chǎn)品各有優(yōu)缺點。這幾種ORB產(chǎn)品中,TAO(The ACE ORB)是美國華盛頓大學(xué)的Douglas C.Schmidt博士領(lǐng)域開發(fā)的一個實時CORBA平臺,是基于ACE創(chuàng)建的。它是一個開放源碼項目,是完全免費的。使用C++語言開發(fā),符合CORBA標(biāo)準(zhǔn),而且還為高性能需求的實時系統(tǒng)進行了優(yōu)化。因此,需要在Linux上安裝ACE/ATO開發(fā)環(huán)境,ACE和TAO可以協(xié)同工作來提供復(fù)雜中間件解決方案。
2.4 應(yīng)用程序開發(fā)
在基于中間件的分布式測控系統(tǒng)中,應(yīng)用軟件的編寫發(fā)生了極大的變化。我們只需使用IDL編寫統(tǒng)一的接口,就不必每次使用都考慮實現(xiàn)細節(jié)。
一個實時CORBA應(yīng)用在邏輯上分為客戶和服務(wù)器兩個部分。客戶端向服務(wù)器端主動發(fā)起服務(wù)請求,服務(wù)器端則被動接收服務(wù)請求。一個實時CORBA應(yīng)用的客戶端常包含多個服務(wù)請求(方法調(diào)用);除此外,還包含在本地執(zhí)行的代碼。在服務(wù)器端,則包含了這個方法的實現(xiàn)。在我們的這個系統(tǒng)中,代理服務(wù)器就是一個服務(wù)器端,測控網(wǎng)絡(luò)中其它的工作站則是客戶端。它們調(diào)用代理服務(wù)器上的方法,以獲取現(xiàn)場檢測數(shù)據(jù)和修改現(xiàn)場設(shè)備的參數(shù)。
ORB機制可以透明地實現(xiàn)傳送請求給對象,并將響應(yīng)返回給提出請求的客戶。通過使客戶不再管理方法激活的具體實現(xiàn),從而簡化了分布式應(yīng)用程序。當(dāng)客戶激活一個方法,ORG負責(zé)定位對象實現(xiàn)并透明的激活。將請求傳輸給對象實現(xiàn)并返回結(jié)果。通常ORB包括對象實現(xiàn)、對象定位和對象通信機制。這些特性允許應(yīng)用開發(fā)者更多地關(guān)心其本身的應(yīng)用領(lǐng)域的開發(fā),而較少考慮低級的分布系統(tǒng)程序設(shè)計。但是,為了提高更豐富的功能,不應(yīng)該僅僅使用CORBA默認的定位、通信機制,還需要使用到CORBA的各種對象服務(wù)。
在我們的實現(xiàn)中,設(shè)備對象都有自己的狀態(tài)信息,這些信息都將通過事件服務(wù)來傳遞。在使用事件服務(wù)之前,應(yīng)先啟動事件服務(wù)器。在我們的系統(tǒng)中使用的是TAO的事件服務(wù)器。啟動事件服務(wù)器后,命名服務(wù)器將注冊到智能代理中,并將事件服務(wù)通常的IOR定入一個文件。然后可以使用這個IOR文件啟動事件提供者程序和使用者程序。
3 總結(jié)
分布式中間件技術(shù)在信息技術(shù)領(lǐng)域已經(jīng)得到了廣泛應(yīng)用。使用分布式中間件技術(shù)可以方便地開發(fā)、集成、升級和維護各種應(yīng)用系統(tǒng),大大降低了構(gòu)建應(yīng)用系統(tǒng)的代價,并極大地提高了生產(chǎn)效率。開發(fā)和應(yīng)用分布式實時測控系統(tǒng)也必將成為起來測控網(wǎng)絡(luò)的發(fā)展方向。
本文使用基于RTCORBA中間件技術(shù)的代理服務(wù)器來連接兩種異構(gòu)網(wǎng)絡(luò),實現(xiàn)LON網(wǎng)到Ethernet的互聯(lián),并且具備了數(shù)據(jù)透明傳輸、無縫互操作、實時的特性,在測控網(wǎng)絡(luò)中具有極大的使用價值和廣闊的發(fā)展前景。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論