五軸聯(lián)動(dòng)數(shù)控系統(tǒng)軟硬件設(shè)計(jì)實(shí)例
更新時(shí)間:2015-12-25 16:39:39點(diǎn)擊次數(shù):4268次
一、五軸聯(lián)動(dòng)數(shù)控系統(tǒng)的硬件設(shè)計(jì)
在五軸聯(lián)動(dòng)數(shù)控系統(tǒng)開(kāi)發(fā)過(guò)程中,我們選擇工控機(jī)作為設(shè)計(jì)的基礎(chǔ)。工控機(jī)本身符合多種工業(yè)標(biāo)準(zhǔn),是一種開(kāi)放化的計(jì)算機(jī)系統(tǒng),與常用的微機(jī)有良好的兼容性,有大量的軟硬件的支持。目前工控機(jī)底板插槽總線類(lèi)型主要有兩種:ISA總線(工業(yè)標(biāo)準(zhǔn)總線)和PCI總線(外圍設(shè)備接口)。ISA總線的數(shù)據(jù)傳輸速率比較低,但已能滿足數(shù)控系統(tǒng)的需要。同時(shí),高總線速率會(huì)對(duì)各功能模塊的硬件提出更高的要求。因此,我們選用ISA總線作為所有模塊設(shè)計(jì)的基礎(chǔ)。
由于五軸聯(lián)動(dòng)插補(bǔ)算法復(fù)雜,有大量浮點(diǎn)運(yùn)算,對(duì)實(shí)時(shí)性要求又較高,我們選用Pentium 166 CPU完成插補(bǔ)運(yùn)算。另外,系統(tǒng)中各個(gè)坐標(biāo)軸還需具備位置控制功能,位置控制實(shí)時(shí)性很強(qiáng),且控制軸數(shù)比較多,該任務(wù)與插補(bǔ)共用一個(gè)CPU會(huì)導(dǎo)致數(shù)控系統(tǒng)主機(jī)負(fù)擔(dān)太重,實(shí)時(shí)性不易保證,而且故障風(fēng)險(xiǎn)過(guò)于集中,較好做法是每根軸采用一個(gè)獨(dú)立的CPU進(jìn)行控制,采用層次式體系結(jié)構(gòu)構(gòu)成系統(tǒng)。根據(jù)位置控制CPU與主機(jī)交互信息方法的不同,分為兩種結(jié)(見(jiàn)圖1)。第一種結(jié)構(gòu)把位置控制板直接插到工控機(jī)底板的ISA插槽中,在這種情況下,主機(jī)與多個(gè)位控板之間直接進(jìn)行信息傳輸,由于位控板CPU速度低,數(shù)據(jù)通訊階段會(huì)浪費(fèi)主機(jī)CPU資源,控制軸數(shù)越多,主機(jī)CPU的效率就越低。此外,主機(jī)還需采取措施來(lái)保證多個(gè)位控板在時(shí)間上的準(zhǔn)確同步。因此,我們選擇了第二種結(jié)構(gòu)。第二種結(jié)構(gòu)采用單獨(dú)的通訊機(jī)完成主機(jī)與位控板之間的信息傳遞。通訊機(jī)一方面通過(guò)雙口存儲(chǔ)器與主機(jī)之間進(jìn)行信息交換,另一方面通過(guò)自建的局部總線與位控板進(jìn)行信息交換。雙口存儲(chǔ)器容量為2kb,它同時(shí)也起數(shù)據(jù)緩沖器的作用。這種方案大大減少了主機(jī)用于信息交換的CPU時(shí)間。
通訊機(jī)在系統(tǒng)中起著承上啟下的作用。它接收Pentium 166插補(bǔ)得出的各坐標(biāo)軸位置指令,通過(guò)并行口把這些指令分發(fā)給位控板。另外,通訊機(jī)還提供對(duì)數(shù)控面板按鍵及指示燈的管理功能。通訊機(jī)的設(shè)計(jì)見(jiàn)圖2。圖中的仿ISA總線,提供了通訊機(jī)與位控板之間傳輸信息的通道。這時(shí)的“仿ISA總線”是根據(jù)位控板及常用控制插卡的需要而設(shè)計(jì)的,它重建了標(biāo)準(zhǔn)ISA總線的部分信號(hào),包括:I/O操作所需的各種信號(hào)線、中斷信號(hào)線、就緒控制、電源線等。按照“仿ISA總線”設(shè)計(jì)的位控板與標(biāo)準(zhǔn)的ISA總線完全兼容。這樣做有兩個(gè)好處:①在系統(tǒng)開(kāi)發(fā)階段,通訊機(jī)與位控板的設(shè)計(jì)和調(diào)試工作可借助微機(jī)各自單獨(dú)完成,兩者之間無(wú)先后依賴(lài)關(guān)系;②在控制軸數(shù)較少的系統(tǒng)中,可以采用圖1 中的第一種結(jié)構(gòu),把位控板直接插到工控機(jī)的底板上,方便地實(shí)現(xiàn)對(duì)系統(tǒng)的重組。
在設(shè)計(jì)過(guò)程中,在通訊機(jī)與位控板之間,我們?cè)捎昧俗远x的專(zhuān)用總線。專(zhuān)用總線效率高,但根據(jù)專(zhuān)用總線設(shè)計(jì)的位控板與工控機(jī)不兼容,互換性較差,開(kāi)發(fā)、調(diào)試與維護(hù)都比較麻煩。為此,我們對(duì)這一部分進(jìn)行重新設(shè)計(jì),走開(kāi)放化道路,采用“仿ISA總線”向標(biāo)準(zhǔn)總線靠近,收到了良好的效果。
二、數(shù)控系統(tǒng)軟件的開(kāi)放化設(shè)計(jì)
開(kāi)放化數(shù)控系統(tǒng)的軟件設(shè)計(jì)首先需要選擇合適的操作系統(tǒng)和軟件開(kāi)發(fā)工具。目前常用的操作系統(tǒng)如DOS、Windows 3.1、Windows 95、Windows NT等均被應(yīng)用到數(shù)控系統(tǒng)中。DOS本質(zhì)上是一種單任務(wù)操作系統(tǒng),在DOS下的多任務(wù)只能通過(guò)中斷技術(shù)來(lái)實(shí)現(xiàn)。數(shù)控系統(tǒng)各軟件功能模塊一般不能同時(shí)執(zhí)行,若要同時(shí)執(zhí)行,需自行解決模塊之間的調(diào)度問(wèn)題。但DOS的規(guī)模很小,人們對(duì)DOS的了解比較多,在DOS上開(kāi)發(fā)應(yīng)用程度相對(duì)容易。Windows 3.1是一種非搶先多任務(wù)操作系統(tǒng),可同時(shí)完成多個(gè)任務(wù)。其缺點(diǎn)在于某個(gè)任務(wù),如任務(wù)A得到CPU資源時(shí),其它任務(wù)是否能順利執(zhí)行完成取決于A是否能及時(shí)處理完其本次事件,因此實(shí)時(shí)性沒(méi)有保證。Windows 95和Windows NT都是性能優(yōu)異的搶先式32位多任務(wù)操作系統(tǒng),操作介面良好,就功能而言,適合數(shù)控系統(tǒng)的需要。但在工業(yè)場(chǎng)合使用,其穩(wěn)定性有待證實(shí)。綜合考慮的結(jié)果,我們選擇了DOS操作系統(tǒng)。與此相應(yīng),我們選擇Turbo C++ 3.0作為軟件開(kāi)發(fā)工具。
軟件設(shè)計(jì)工作分為三個(gè)部分:主機(jī)軟件、通訊機(jī)軟件和位置控制卡軟件。制訂完善的通訊協(xié)議是其首要問(wèn)題。為了保證可靠傳輸數(shù)據(jù),通訊機(jī)構(gòu)件采用分時(shí)處理的方法分別完成與主機(jī)及位控卡的信息傳輸。其時(shí)間上的同步關(guān)系見(jiàn)圖3。時(shí)間片的劃分及三部分之間的同步關(guān)系由通訊機(jī)進(jìn)行控制。第一時(shí)間片開(kāi)始時(shí),通訊機(jī)向主機(jī)及位控卡發(fā)出同步信號(hào),通知主機(jī)向雙口RAM中寫(xiě)入新的數(shù)據(jù),同時(shí)使位控卡開(kāi)始位置控制運(yùn)算。第二個(gè)時(shí)間片內(nèi),通訊機(jī)從雙口RAM中取出位置指令,分發(fā)給各個(gè)位控卡,同時(shí)從各位控卡采集實(shí)際位置數(shù)據(jù),寫(xiě)入雙口RAM。
主機(jī)軟件主要由NC程序編輯模塊、手動(dòng)操作、電氣控制模塊、通訊模塊、自動(dòng)加工、機(jī)床參數(shù)調(diào)整、系統(tǒng)定位、螺矩補(bǔ)償?shù)裙δ苣K構(gòu)成。下面以電氣控制模塊為例說(shuō)明軟件模塊的開(kāi)放化設(shè)計(jì)方法。
電氣控制是所有機(jī)床必不可少的一部分。在數(shù)控機(jī)床中,其實(shí)現(xiàn)方法有三種:外裝式PLC、嵌入式PLC和虛擬PLC。市場(chǎng)上現(xiàn)有的各種PLC一般具有通訊功能,可以通過(guò)通訊接口與數(shù)控系統(tǒng)構(gòu)成一個(gè)整體,這種電氣控制方式稱(chēng)為外裝式PLC;此外,也可以設(shè)計(jì)一個(gè)智能型I/O接口卡,通過(guò)總線直接與數(shù)控系統(tǒng)構(gòu)成一體,卡上帶有CPU,完成開(kāi)關(guān)邏輯運(yùn)算與控制,這種方式為嵌入式實(shí)現(xiàn)。也可以直接利用數(shù)控系統(tǒng)主機(jī)CPU周期性地進(jìn)行邏輯運(yùn)算,配合普通的開(kāi)關(guān)量 I/O卡實(shí)現(xiàn)對(duì)電氣開(kāi)關(guān)的控制,這種方式稱(chēng)為虛擬PLC。
如果采用常規(guī)的程序設(shè)計(jì)方法,對(duì)于以上三種電氣控制方式,就得設(shè)計(jì)不同的軟件接口,數(shù)控系統(tǒng)軟件主體就會(huì)直接涉及到電氣控制的實(shí)現(xiàn)方式及其細(xì)節(jié),一旦控制方式發(fā)生變化,將不得不對(duì)軟件進(jìn)行大量修改。這樣編寫(xiě)出的軟件通用性較差,難以適應(yīng)預(yù)料之外的變化。為了增加軟件與硬件之間的相互獨(dú)立性,我們運(yùn)用面向?qū)ο蠹夹g(shù)對(duì)系統(tǒng)進(jìn)行了開(kāi)放化設(shè)計(jì)。
顯然,不論哪一種控制方式,其目標(biāo)都是相同的。經(jīng)認(rèn)真分析,我們找出了三者之間的共同點(diǎn),由此得出一抽象類(lèi)CPlc,它提供了數(shù)控機(jī)床電氣控制所有的外部特征,為數(shù)控系統(tǒng)主體軟件提供了完備的消息處理函數(shù),數(shù)控系統(tǒng)中其它部分只需向PLC對(duì)象發(fā)送消息(message)就可使電氣開(kāi)關(guān)做出相應(yīng)的動(dòng)作。該部分不涉及電氣操作過(guò)程中的細(xì)節(jié)。
在抽象類(lèi)CPlc的基礎(chǔ)上,針對(duì)三種方式分別定義了派生類(lèi)CExernalPlc、CEmbedPlc和CVirtualPlc,在這些類(lèi)中,完成消息的解釋及硬件的操作。按照這種設(shè)計(jì)思想得到的電氣控制部分軟件具有圖4所示的結(jié)構(gòu)。由圖中可以看出,這種設(shè)計(jì)方法在數(shù)控系統(tǒng)主體軟件與電氣控制硬件之間加入了抽象類(lèi)層次,使其相互依賴(lài)性減弱,成為相對(duì)獨(dú)立的兩部分。運(yùn)用這種方法得到的數(shù)控系統(tǒng)軟件具有與設(shè)備無(wú)關(guān)的特征。當(dāng)有新的硬件設(shè)備出現(xiàn)時(shí),只需在原抽象類(lèi)上派生出新的對(duì)象類(lèi),按照共同的標(biāo)準(zhǔn)對(duì)消息進(jìn)行解釋?zhuān)倏v硬件做出相應(yīng)的動(dòng)作即可,無(wú)需對(duì)軟件其它部分做任何修改,大大提高了軟件設(shè)計(jì)的效率,實(shí)際上,在對(duì)消息的數(shù)據(jù)結(jié)構(gòu)及其意義做出明確的規(guī)范后,其它任何人都可以參照該規(guī)范設(shè)計(jì)出新的電氣控制硬件及相應(yīng)的驅(qū)動(dòng)程序,集成入系統(tǒng)中。這也是軟件開(kāi)放化設(shè)計(jì)的主要目的。