牛序楓 錢(qián)永剛
0.引言
DNC(Distributed Numerical Control)稱(chēng)為分布式數(shù)控,是實(shí)現(xiàn)CAD/CAM和計(jì)算機(jī)輔助生產(chǎn)管理系統(tǒng)集成的紐帶,是機(jī)械加工自動(dòng)化的又一種形式。目前,DNC系統(tǒng)的研究尚存在以下有待解決的技術(shù)問(wèn)題:①DNC系統(tǒng)體系結(jié)構(gòu)的開(kāi)放性不強(qiáng)。國(guó)內(nèi)大部分DNC系統(tǒng)局限于單一供應(yīng)商的制造設(shè)備,平臺(tái)之間可移植性差,不同應(yīng)用程序互操作能力有待提高,不利于系統(tǒng)集成;②DNC系統(tǒng)通信結(jié)構(gòu)多為點(diǎn)對(duì)點(diǎn)式,或采用局域網(wǎng)加點(diǎn)對(duì)點(diǎn)式,不能很好地解決通信競(jìng)爭(zhēng)問(wèn)題;③DND系統(tǒng)與NCP和CAD的接口功能還很弱;④DNC系統(tǒng)控制軟件可重用性不強(qiáng),需要進(jìn)行面向?qū)ο笤O(shè)計(jì)和實(shí)現(xiàn)。本文提出了基于CORBA(通用對(duì)象請(qǐng)求代理結(jié)構(gòu))的車(chē)間層控制系統(tǒng)中DNC系統(tǒng),給上述問(wèn)題以很好的解答,并實(shí)現(xiàn)了軟件的編制及聯(lián)機(jī)調(diào)式。
1.控制系統(tǒng)體系的結(jié)構(gòu)
DNC系統(tǒng)是基于CORBA車(chē)間層控制系統(tǒng)的一個(gè)功能單元,現(xiàn)在的企業(yè)面對(duì)的是一個(gè)多變的需求環(huán)境,因而車(chē)間層控制系統(tǒng)面對(duì)的加工任務(wù)也是多變的。在基于CORBA的車(chē)間層控制系統(tǒng)中,構(gòu)造車(chē)間信息集成和共享的公共平臺(tái)是核心問(wèn)題之一,采用基于客戶/服務(wù)器結(jié)構(gòu)的分布式控制平臺(tái)(如Orbix),既可以將傳統(tǒng)的遞階控制結(jié)構(gòu)變換成更適合信息集成的分布或控制結(jié)構(gòu),又可適應(yīng)不同產(chǎn)品制造過(guò)程(離散制造或連續(xù)制造)中統(tǒng)一的生產(chǎn)管理和組織要求。
車(chē)間層控制系統(tǒng)總體結(jié)構(gòu)分為三層:底層為系統(tǒng)支持層,由分布式計(jì)算環(huán)境和異構(gòu)網(wǎng)絡(luò)集成系統(tǒng)兩個(gè)子層構(gòu)成,提供底層的計(jì)算機(jī)系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)和數(shù)據(jù)系統(tǒng)等系統(tǒng)級(jí)功能;中間層為開(kāi)放式分布處理層,提供統(tǒng)一的集成通信服務(wù),由開(kāi)放式分布處理平臺(tái)和應(yīng)用程序接口組成,最上層為信息集成層,支持多客戶/服務(wù)器的分布式多數(shù)據(jù)庫(kù)集成系統(tǒng),將現(xiàn)有的應(yīng)用和數(shù)據(jù)信息集成到系統(tǒng)中。為實(shí)現(xiàn)控制結(jié)構(gòu)的分布、數(shù)據(jù)庫(kù)的分布以及系統(tǒng)功能的分布,提出的車(chē)間層控制系統(tǒng)軟件采用基于CORBA規(guī)范的分布式對(duì)象體系結(jié)構(gòu)。
CORBA規(guī)范主要特點(diǎn)是實(shí)現(xiàn)軟件總線結(jié)構(gòu)。所謂軟件總線的功能,就是起到類(lèi)似于計(jì)算機(jī)系統(tǒng)硬件總線的作用,只要將應(yīng)用模塊按總線規(guī)范作成軟插件,插入總線即可實(shí)現(xiàn)集成運(yùn)行。實(shí)現(xiàn)軟件總線的核心系統(tǒng)稱(chēng)為ORB(對(duì)象請(qǐng)求代理器),它不僅支持標(biāo)準(zhǔn)的OMG對(duì)象模型,還具有分布進(jìn)程管理和通信管理功能。此外,CORBA定義了IDL(Interface Definition Language)語(yǔ)言,以描述軟件總線上的插銷(xiāo)。IDL提供了對(duì)成員系統(tǒng)的封裝和成員系統(tǒng)之間隔離,任何成員系統(tǒng)作為一個(gè)對(duì)象,通過(guò)IDL對(duì)其接口參數(shù)進(jìn)行定義和說(shuō)明,就可接到ORB上,為其它系統(tǒng)提供服務(wù)或向其它系統(tǒng)提出請(qǐng)求,達(dá)到即插即用效果。
車(chē)間層控制系統(tǒng)劃分為許多獨(dú)立的功能單元,每個(gè)功能單元對(duì)應(yīng)于一個(gè)包含功能接口定義和實(shí)體的抽象對(duì)象,每類(lèi)對(duì)象的接口由屬性和操作組成,由IDL定義的其它功能單元可以透明訪問(wèn)的服務(wù)以調(diào)用該對(duì)象的私有數(shù)據(jù),具體功能的實(shí)現(xiàn)被封裝在實(shí)體里。我們將每類(lèi)對(duì)象按照功能劃分成若干個(gè)子對(duì)象,將其設(shè)計(jì)成為可以直接插在CORBA軟件總線上的對(duì)象插件。
2.DNC系統(tǒng)的地位及功能
DNC系統(tǒng)作為車(chē)間層控制系統(tǒng)的一個(gè)功能單元。
DNC系統(tǒng)功能包括①NC程序及數(shù)據(jù)的傳遞,以某種通信協(xié)議(如RS232C等)實(shí)現(xiàn)通信功能;②機(jī)床狀態(tài)采集和上報(bào);③根據(jù)工序計(jì)劃,自動(dòng)分配N(xiāo)C程序及數(shù)據(jù)到相應(yīng)機(jī)床;④刀具數(shù)據(jù)的分配與傳遞。
3.DNC系統(tǒng)軟件體系結(jié)構(gòu)
基于CORBA的DNC系統(tǒng)軟件的實(shí)現(xiàn)平臺(tái)建立在車(chē)間層控制系統(tǒng)平臺(tái)的基礎(chǔ)上。我們將DNC系統(tǒng)體系結(jié)構(gòu)劃分為三層的客戶/服務(wù)器結(jié)構(gòu),以將表示邏輯、業(yè)務(wù)邏輯和數(shù)據(jù)處理邏輯明確劃分開(kāi)來(lái)。為此,表示層用來(lái)表示信息和收集數(shù)據(jù),此處為由VB實(shí)現(xiàn)的可移植的DNC人機(jī)接口;業(yè)務(wù)層響應(yīng)用戶(或其它的業(yè)務(wù)服務(wù))發(fā)來(lái)的請(qǐng)求,執(zhí)行某種業(yè)務(wù)任務(wù),此處為由VC++來(lái)實(shí)現(xiàn)DNC應(yīng)有程序及NC數(shù)據(jù)管理應(yīng)用程序;數(shù)據(jù)層包括數(shù)據(jù)的定義、維修、訪問(wèn)和更新以及管理,并響應(yīng)業(yè)務(wù)服務(wù)的數(shù)據(jù)請(qǐng)求,此處為經(jīng)IDL功能接口定義封裝的NC局部數(shù)據(jù)庫(kù)(Access)服務(wù)器。這些層并不一定與網(wǎng)絡(luò)上的具體物理位置相對(duì)應(yīng),它們只是概念上的層,借助這些概念可以開(kāi)發(fā)出健壯的、基于組件的應(yīng)用程序。
4.DNC系統(tǒng)軟件的數(shù)據(jù)模型
DNC系統(tǒng)軟件中涉及到數(shù)據(jù)實(shí)體包含四類(lèi):①與制造設(shè)備硬件相關(guān)的數(shù)據(jù)實(shí)體(如機(jī)床等);②與人機(jī)通訊相關(guān)的數(shù)據(jù)實(shí)體(如通訊協(xié)議實(shí)體和串口通訊實(shí)體);③數(shù)控?cái)?shù)據(jù)實(shí)體(如NC程序號(hào)、刀具號(hào)、工序號(hào));④輸入操作指令或派工單實(shí)體。采用面向?qū)ο蠓椒▽⑸鲜鰧?shí)體抽象成為類(lèi),可分為能力單元類(lèi)、NC機(jī)床類(lèi)、NC控制器類(lèi)、通訊協(xié)議類(lèi)、終端服務(wù)器類(lèi)、串口通訊類(lèi)、NC程序類(lèi)等。
DNC應(yīng)用程序中的對(duì)象從這些類(lèi)中繼承下來(lái),每個(gè)對(duì)象的方法即該對(duì)象的成員函數(shù)根據(jù)相應(yīng)的功能需求來(lái)定義。下面以NC機(jī)床類(lèi)的定義為例:
∥ncmach.h -NC Machine Class definations
∥NC Machines are part processors.For this class,a part is loaded,
∥a NC file is downloaded to the device,and the machine is started.
class MACHINE-TOOL{
char* CurrentNCFile; ∥currently loaded NC file
int FixtureStatus; ∥fixture status
public:
MACHINE-TOOL();
char* getCurrentNCFile();
void setCurrentNCFile(char F);
Int getFixtureStatus();
void setFixtureStatus(int S);
virtual int processPart(char PartName);
virtual int downloadNCFile(char File);
virtual int stopMachine();
virtual in graspPart();
virtual int releasePart();
}。
【參考文獻(xiàn)】
[1]Alfred Storr und Joachim Uhl.Objektorientierte Leittechnik.CIM Management,1995,11(1).
[2]張旭梅.集成DNC系統(tǒng)及其運(yùn)行模式探討.計(jì)算機(jī)集成制造系統(tǒng),1998(2).
[3]Firm DL.Broad scope DNC.Manufacturing Engineering,1987,99(2):49~51.