摘要:以精密
離心機(jī)為背景,對(duì)基于DCOM的分布式實(shí)時(shí)診斷與監(jiān)控系統(tǒng)設(shè)計(jì)中涉及的主要問(wèn)題和關(guān)鍵技術(shù)進(jìn)行研究。結(jié)合具體的實(shí)際系統(tǒng),采用分布式組件的方法,實(shí)現(xiàn)了精密
離心機(jī)控制局域網(wǎng)絡(luò),使得整個(gè)系統(tǒng)在系統(tǒng)維護(hù)、實(shí)時(shí)處理能力上有了很大的提高。長(zhǎng)期運(yùn)行的結(jié)果表明,該系統(tǒng)能夠完成測(cè)試任務(wù),并達(dá)到要求的性能指標(biāo)。
關(guān)鍵詞:精密離心機(jī);實(shí)時(shí)故障診斷與監(jiān)控;分布式組件對(duì)象模型;DCOM
中圖分類(lèi)號(hào):U666.1文獻(xiàn)標(biāo)識(shí)碼:A
0 引言
精密離心機(jī)作為一種重要的慣導(dǎo)測(cè)試設(shè)備,屬于復(fù)雜的大型旋轉(zhuǎn)機(jī)械系統(tǒng)。它的高精度特性使得控制、測(cè)量及機(jī)械設(shè)計(jì)趨于復(fù)雜,包括位置控制、速率控制、溫度控制、氣壓控制、濕度控制、超速保護(hù)等子系統(tǒng)。每個(gè)子系統(tǒng)都是獨(dú)立的計(jì)算機(jī)控制系統(tǒng),同時(shí)精密離心機(jī)工作在高速旋轉(zhuǎn)狀態(tài)。為了人員和設(shè)備的安全,整個(gè)離心機(jī)被放置在密閉的鋼結(jié)構(gòu)的保護(hù)罩中,這就要求控制系統(tǒng)具有網(wǎng)絡(luò)通訊、遠(yuǎn)程控制能力,同時(shí)對(duì)系統(tǒng)的實(shí)時(shí)性、可靠性、開(kāi)放性提出了更高的要求。
IBM和Microsoft公司認(rèn)為,未來(lái)的軟件應(yīng)用體系結(jié)構(gòu)必然為分布式網(wǎng)絡(luò)體系結(jié)構(gòu)。面對(duì)這樣的發(fā)
1DCOM分布式組件技術(shù)在工業(yè)控制中的應(yīng)用展趨勢(shì),分布式組件技術(shù)及基于組件技術(shù)的分布式軟件平臺(tái)也將是控制局域網(wǎng)絡(luò)軟件的重要發(fā)展方向。
Microsoft的DCOM即分布式組件對(duì)象模型,支持在局域網(wǎng)、廣域網(wǎng)上不同計(jì)算機(jī)對(duì)象之間的通訊。利用DCOM技術(shù)能夠使控制程序?qū)崿F(xiàn)物理空間上的分布性,而且在DCOM組成的分布式控制局域網(wǎng)絡(luò)中,DCOM已經(jīng)處理了底層的網(wǎng)絡(luò)協(xié)議細(xì)節(jié)問(wèn)題,從而使控制系統(tǒng)開(kāi)發(fā)人員能夠集中精力解決控制對(duì)象的實(shí)際問(wèn)題。

整體結(jié)構(gòu)
當(dāng)客戶進(jìn)程和組件位于不同的機(jī)器時(shí),DCOM僅僅只是用網(wǎng)絡(luò)協(xié)議來(lái)代替本地進(jìn)程之間的通訊。圖1顯示了DCOM的整體結(jié)構(gòu):COM運(yùn)行庫(kù)向客戶和組件提供了面向?qū)ο蟮姆?wù),并且使用RPC和安全機(jī)制產(chǎn)生符合DCOM線路協(xié)議標(biāo)準(zhǔn)的標(biāo)準(zhǔn)網(wǎng)絡(luò)包。
DCOM組件具有位置透明性,無(wú)論它是位于客戶的同一進(jìn)程中,還是在其它地方(甚至在地球的另一端),客戶連接組件和調(diào)用組件的方法都是一樣的。DCOM不僅無(wú)需改變?cè)创a,而且無(wú)需重新編譯程序。一個(gè)簡(jiǎn)單的再配置動(dòng)作就改變了組件與組件之間相互連接的方式。
DCOM由于具有語(yǔ)言獨(dú)立性,使得控制系統(tǒng)開(kāi)發(fā)人員可以選擇他們最熟悉的語(yǔ)言和工具來(lái)進(jìn)行開(kāi)發(fā),特別適合團(tuán)隊(duì)協(xié)作開(kāi)發(fā)。DCOM將網(wǎng)絡(luò)循環(huán)時(shí)間最小化,避免了網(wǎng)絡(luò)中潛在的擁塞。DCOM選擇了無(wú)連接UDP協(xié)議作為的傳輸協(xié)議。協(xié)議的無(wú)連接特性使得DCOM能夠?qū)⒃S多低級(jí)別的確認(rèn)包和實(shí)際的數(shù)據(jù)以及地址合法性檢查(pinging)信息混合起來(lái),從而改善了性能。即使是運(yùn)行在面向連接的協(xié)議上,DCOM也優(yōu)于傳統(tǒng)的面向特殊應(yīng)用的協(xié)議。DCOM使用了WindowsNT提供的擴(kuò)展的安全框架。WindowsNT提供了一套穩(wěn)固的內(nèi)建式安全模塊,DCOM無(wú)需在客戶端和組件上進(jìn)行任何專門(mén)為安全性而做的編碼和設(shè)計(jì)工作,就可以為分布式控制局域應(yīng)用系統(tǒng)提供安全性保障。
總之,DCOM技術(shù)為控制局域網(wǎng)絡(luò)軟件開(kāi)發(fā)的帶來(lái)全新的革命。
2 基于DCOM的分布式實(shí)時(shí)診斷與監(jiān)控系統(tǒng)的結(jié)構(gòu)
精密離心機(jī)系統(tǒng)分別由動(dòng)態(tài)半徑及失準(zhǔn)角測(cè)量系統(tǒng)、溫度控制系統(tǒng)、主軸控制系統(tǒng)、動(dòng)平衡系統(tǒng)、鳥(niǎo)籠控制系統(tǒng)、中心監(jiān)控系統(tǒng)、故障診斷系統(tǒng)組成。

圖 2
如圖2所示,每個(gè)系統(tǒng)都是獨(dú)立的計(jì)算機(jī)控制系統(tǒng),DCOM客戶端和組件根據(jù)設(shè)計(jì)配置在各子系統(tǒng)中,通過(guò)100M交換機(jī)組成了局域控制網(wǎng)絡(luò)。
主軸控制系統(tǒng)控制整個(gè)離心機(jī)大臂的旋轉(zhuǎn),其精度和穩(wěn)定性對(duì)整個(gè)系統(tǒng)的影響至關(guān)重要。主軸控制系統(tǒng)控制離心機(jī)的旋轉(zhuǎn)速度、旋轉(zhuǎn)方式和顯示運(yùn)行狀況,同時(shí)負(fù)責(zé)把一些運(yùn)行狀態(tài)傳送到遠(yuǎn)程的中心管理機(jī),并能接收到中心管理機(jī)的控制命令并通過(guò)WDM驅(qū)動(dòng)程序控制主軸的運(yùn)行。
鳥(niǎo)籠控制系統(tǒng)對(duì)精密離心機(jī)系統(tǒng)的精密測(cè)試端進(jìn)行控制,它的精度和穩(wěn)定性同樣對(duì)于被測(cè)慣性器件的測(cè)試精度至關(guān)重要。
動(dòng)平衡系統(tǒng)用于避免由于旋轉(zhuǎn)機(jī)械不平衡而產(chǎn)生振動(dòng)、噪聲及部件破壞等現(xiàn)象,采用自動(dòng)平衡技術(shù)在某些平面上加上或減去校正質(zhì)量,因而改善了運(yùn)動(dòng)部分的質(zhì)量分布,使校正質(zhì)量產(chǎn)生的振動(dòng)與不平衡產(chǎn)生的振動(dòng)相互抵消,消除不平衡力,實(shí)現(xiàn)旋轉(zhuǎn)機(jī)械轉(zhuǎn)子的自動(dòng)平衡。
溫度控制系統(tǒng)對(duì)慣性器件的測(cè)試環(huán)境溫度進(jìn)行控制,從而為測(cè)試設(shè)備提供一個(gè)恒定溫度的測(cè)試環(huán)境,以滿足對(duì)加速度計(jì)測(cè)試的精度要求。
精密離心機(jī)工作在高速旋轉(zhuǎn)狀態(tài)。為了人員和設(shè)備的安全,整個(gè)離心機(jī)被放置在密閉的鋼結(jié)構(gòu)保護(hù)罩中;中心監(jiān)控系統(tǒng)和故障診斷系統(tǒng)位于遠(yuǎn)程操作控制平臺(tái),操作人員通過(guò)中心監(jiān)控系統(tǒng)實(shí)現(xiàn)對(duì)上述各子系統(tǒng)的遠(yuǎn)程控制,發(fā)送控制指令。
同時(shí)各子系統(tǒng)的運(yùn)行狀態(tài)也實(shí)時(shí)顯示在屏幕上,中心監(jiān)控系統(tǒng)還利用視頻監(jiān)控系統(tǒng)直接對(duì)工作倉(cāng)內(nèi)
精密離心機(jī)的工作狀況進(jìn)行實(shí)時(shí)監(jiān)控。
此外對(duì)于精密離心機(jī)系統(tǒng)這樣一個(gè)大型的高速旋轉(zhuǎn)機(jī)械系統(tǒng),其安全性顯得至關(guān)重要,稍有不慎,后果不堪設(shè)想。因此,故障診斷與安保系統(tǒng)必不可少。當(dāng)離心機(jī)大臂高速運(yùn)轉(zhuǎn)時(shí),由于外界干擾或者系統(tǒng)本身的不穩(wěn)定因素,有可能出現(xiàn)旋轉(zhuǎn)速度超過(guò)設(shè)定狀態(tài)或飛車(chē)等各種難以預(yù)料的現(xiàn)象。對(duì)于這些情況,我們?cè)O(shè)置了超速報(bào)警,當(dāng)出現(xiàn)飛車(chē)事故時(shí),能及時(shí)自動(dòng)急停保護(hù),以防止出現(xiàn)人員傷亡或設(shè)備損失等危險(xiǎn)情況。對(duì)于精密離心機(jī)系統(tǒng)這種高速旋轉(zhuǎn)的大型的機(jī)械慣性系統(tǒng)來(lái)說(shuō),提前預(yù)報(bào)比實(shí)時(shí)報(bào)警更加重要,因此故障診斷系統(tǒng)除了具有實(shí)時(shí)診斷報(bào)警功能外,還利用數(shù)據(jù)挖掘技術(shù)實(shí)現(xiàn)歷史數(shù)據(jù)的故障分析。
3 DCOM關(guān)鍵技術(shù)在精密離心機(jī)中具體實(shí)現(xiàn)
下面以運(yùn)行在主軸控制系統(tǒng)上的測(cè)角采集組件為例,說(shuō)明精密離心機(jī)各子系統(tǒng)如何利用DCOM構(gòu)成了局域控制網(wǎng)絡(luò)。

圖 3
如圖3所示,精密離心機(jī)運(yùn)行時(shí),中心管理機(jī)向主軸控制系統(tǒng)發(fā)送控制指令,同時(shí)主軸的運(yùn)行參數(shù),包括角度、速度數(shù)據(jù)也要實(shí)時(shí)傳送到中心控制機(jī),并在監(jiān)控屏幕上顯示,而同時(shí)動(dòng)平衡系統(tǒng)在測(cè)試主軸旋轉(zhuǎn)轉(zhuǎn)子的不平衡性時(shí),也需要主軸的角度數(shù)據(jù)。按照傳統(tǒng)的SOCKET網(wǎng)絡(luò)編程技術(shù),就要在主軸控制系統(tǒng)軟件中為二者分別開(kāi)設(shè)網(wǎng)絡(luò)端口和相應(yīng)的網(wǎng)絡(luò)鏈接傳輸代碼,而利用DCOM的組件復(fù)用特性,只需要在主軸控制系統(tǒng)設(shè)置一個(gè)測(cè)角數(shù)據(jù)采集組件,中心監(jiān)控系統(tǒng)和動(dòng)平衡系統(tǒng)都可以通過(guò)DCOM客戶請(qǐng)求的形式,訪問(wèn)主軸控制系統(tǒng)服務(wù)器,實(shí)現(xiàn)對(duì)測(cè)角數(shù)據(jù)采集。
客戶端程序運(yùn)行在中心監(jiān)控系統(tǒng)和動(dòng)平衡系統(tǒng)之中,為了激活DCOM服務(wù)器,必須在客戶端做如下工作:將服務(wù)器計(jì)算機(jī)名字載入到 COSERVERINFO結(jié)構(gòu)體,然后調(diào)用CoCreateInstanceEx(),包括相應(yīng)的參數(shù)和一個(gè)稱為MULTI_QI的結(jié)構(gòu)體。在任何的 DCOM編程中,首先要做的第一件事情是調(diào)用CoInitialize()。我們將使用默認(rèn)的線程模式,也就是獨(dú)立線程。
//初始化DCOMhr=CoInitialize(0);
進(jìn)行遠(yuǎn)程DCOM連接時(shí),你必須指定服務(wù)器計(jì)算機(jī)的名字。計(jì)算機(jī)的名字可以是一個(gè)標(biāo)準(zhǔn)的UNC計(jì)算機(jī)名字或者是一個(gè)TCP/IP地址。該服務(wù)器的名字將會(huì)被載入到一個(gè)COSERVERINFO結(jié)構(gòu)體中。這個(gè)結(jié)構(gòu)體需要一個(gè)指向?qū)捵址?BR> (wide-character)的指針以得到服務(wù)器的名字。
設(shè)置好COSERVERINFO結(jié)構(gòu)體。我們將把它傳送到CoCreateInstanceEx以指定服務(wù)器。 CoCreateInstanceEx可一次返回超過(guò)一個(gè)接口。它通過(guò)傳送MULTI_QI結(jié)構(gòu)體的一個(gè)數(shù)組來(lái)做到這一點(diǎn)。數(shù)組的每個(gè)元素指定了一個(gè)單一的接口。CoCreateInstanceEx將會(huì)填入到數(shù)據(jù)請(qǐng)求中。
//為CoCreateInstanceEx定義MULTI_QI結(jié)構(gòu)體
MULTI_QIqi[2];
memset(qi,0,sizeof(qi));
qi[0].pIID=&IID_IGetInfo;
qi[1].pIID=&IID_ISomeOtherInterface;
hr=CoCreateInstanceEx(CLSID_GetInfo,NULL,CLSCTX_SERVER,&cs,2,qi);
一切準(zhǔn)備好后,就可以調(diào)用CoCreateInstanceEx。一旦已經(jīng)確定接口被返回了,就表示客戶端連接到DCOM服務(wù)器,你就可以使用這個(gè)接口指針調(diào)用相應(yīng)的方法實(shí)現(xiàn)控制與數(shù)據(jù)采集功能。
4 結(jié)論
目前,精密離心機(jī)各子系統(tǒng)運(yùn)行平臺(tái)為Windows2000平臺(tái),利用DCOM技術(shù)構(gòu)成的控制局域網(wǎng)絡(luò),已經(jīng)實(shí)現(xiàn)遠(yuǎn)程控制和數(shù)據(jù)采集、故障診斷等功能,系統(tǒng)安全可靠。
最后還要指出,一種新的軟件開(kāi)發(fā)技術(shù)是否真正適合應(yīng)用到工業(yè)控制領(lǐng)域,需要我們審慎分析和實(shí)踐的檢驗(yàn)。由于DCOM在遠(yuǎn)程連接、傳輸速度與透過(guò)防火墻訪問(wèn)的能力還存在一定問(wèn)題,所以作者更建議把DCOM技術(shù)應(yīng)用到控制局域網(wǎng)絡(luò)而不是廣域網(wǎng)中。