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