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