模擬機(jī)訓(xùn)練系統(tǒng)操作模塊研究
2016-8-2 來源:天津職業(yè)技術(shù)師范大學(xué) 作者:岳剛
4.1 模擬訓(xùn)練系統(tǒng)的需求分析
數(shù)控編程技術(shù)類課程是大中專院校數(shù)控機(jī)械專業(yè)必修的一類專業(yè)課[57]。它作為一項(xiàng)側(cè)重動手能力培養(yǎng)的課程,在實(shí)際授課中必須穿插一定的試驗(yàn)實(shí)訓(xùn)課程來使學(xué)生充分理解和掌握課程的精髓。數(shù)控程序的編寫和現(xiàn)場機(jī)床實(shí)踐是授課的一個必需環(huán)節(jié)[58]。但是由于資金不足、場地匱乏等限制條件,當(dāng)前大中專院校機(jī)床配備明顯不足,甚至?xí)霈F(xiàn)同一專業(yè)學(xué)生不能在同一學(xué)期進(jìn)行數(shù)控實(shí)訓(xùn)的現(xiàn)象,這就違背了理論結(jié)合實(shí)踐的初衷[59],無法使理論與實(shí)踐相互印證。因此,面對五軸數(shù)控機(jī)床配備不足的實(shí)情展開了模擬訓(xùn)練系統(tǒng)研究。
該系統(tǒng)主要用于教學(xué)及培訓(xùn),專門為職業(yè)院校以及工科大學(xué)數(shù)控類課程實(shí)踐打造,以解決大規(guī)模數(shù)控實(shí)訓(xùn)與培養(yǎng)學(xué)生動手操作能力的難題,同時也解決了機(jī)床數(shù)量與學(xué)生數(shù)量不匹配的供需矛盾[60]。使用模擬訓(xùn)練系統(tǒng)能夠讓加工制造類企業(yè)方便的實(shí)現(xiàn)加工代碼的編寫和檢驗(yàn),為真實(shí)機(jī)床的使用節(jié)省了時間,提高了生產(chǎn)效率[61]。此模擬訓(xùn)練系統(tǒng)以西門子840D 為藍(lán)本,所研發(fā)的模擬訓(xùn)練系統(tǒng)需要擁有此機(jī)床的主要功能,模擬訓(xùn)練系統(tǒng)需要滿足以下幾點(diǎn)要求:
(l)該機(jī)床的一比一立體模型可以在模擬訓(xùn)練系統(tǒng)中實(shí)現(xiàn)與實(shí)體機(jī)床相同的各種運(yùn)動及切削效果。
(2)支持實(shí)時的手動輸入加工代碼、能夠支持各種 CAD/CAM 軟件編寫而生成的加工代碼。
(3)擁有反饋能力:可以針對刀具、零件、床身的相互碰撞做出變色發(fā)聲等警告和反饋;具有欠切、過切反饋功能;能給虛擬機(jī)床各軸設(shè)置行程限制,超出時發(fā)出警告;有一定的加工代碼差錯功能等。
(4)可以完成五軸數(shù)控機(jī)床各種加工輔助的模擬,比如三色光狀態(tài)顯示燈,切屑,切削聲音等,令模擬器更加接近真實(shí)機(jī)床。
(5)通過立體模型運(yùn)動模擬工件切削過程,并且能夠?qū)αⅢw模型進(jìn)行局部放大或縮小、調(diào)整視角等操作。
(6)擁有人性化的后臺及前臺人機(jī)交互頁面,使操作者體驗(yàn)到與真實(shí)機(jī)床相同的感受。具有一定的幫助信息,具有五軸數(shù)控機(jī)床二次開發(fā)功能及實(shí)訓(xùn)功能。
4.2 仿真系統(tǒng)的功能模型
由上一節(jié)模擬器系統(tǒng)總體需求分析可以推出模擬機(jī)訓(xùn)練系統(tǒng)必須擁有以下功能:
1.模擬切削場景功能
對于模擬機(jī)訓(xùn)練系統(tǒng)立體仿真的要求,此系統(tǒng)需要支持立體模型導(dǎo)入,用專業(yè)繪圖軟
件來進(jìn)行模型的構(gòu)建,實(shí)現(xiàn)完善系統(tǒng)模擬性能,模擬場景有:
1)機(jī)床結(jié)構(gòu)模型的組建以及模擬背景組建
2)毛坯的外形尺寸、夾具的外形尺寸定義。
3)加工用刀具的構(gòu)建。允許使用已構(gòu)建的刀具庫內(nèi)的刀具信息來進(jìn)行重定義,也允許直接指定刀具各部分外形和大小來構(gòu)建新的刀具。
2.模擬切削動作的功能
需要擁有下列功能:
1)五軸數(shù)控機(jī)床模擬訓(xùn)練機(jī)系統(tǒng)和西門子 840D 實(shí)體數(shù)控系統(tǒng),在加工代碼、零偏設(shè)定等方面保持一致。可以識別標(biāo)準(zhǔn) G 代碼加工程序。
2)模擬功能。可以模擬五軸數(shù)控機(jī)床各軸、刀庫、絲杠等組件的移動過程,動態(tài)化的再現(xiàn)五軸數(shù)控機(jī)床切削時刀具相對毛坯移動以及切屑掉落過程;可以利用色彩的改變,以及聲音表示刀具與毛坯、刀具與機(jī)床的碰撞等事件。
3)可以動態(tài)模擬五軸數(shù)控機(jī)床自動換刀的過程,并且能通過手輪完成加工偏置的測量與輸入。
4)可以針對五軸數(shù)控機(jī)床的多種附加功能做出模擬,例如三色光指示燈隨加工狀態(tài)的變化。
3.檢驗(yàn)分析的功能
加工質(zhì)量檢驗(yàn)功能。能夠?qū)⑶邢鬟^程中或切削完成后的零件三維模型導(dǎo)出,然后測量零件尺寸以及觀察零件形狀是否符合預(yù)期標(biāo)準(zhǔn)。同時,具備一種對照功能,即比較加工后零件與預(yù)期零件之間的差別,根據(jù)有無差別以及差別大小,推算出工件加工過程中是否發(fā)生過切或欠切過程。
4.完全模擬機(jī)床界面
依據(jù)西門子 840D 機(jī)床界面構(gòu)建軟件前臺界面,擁有當(dāng)前坐標(biāo)顯示、加工偏置設(shè)定等輔助界面,并且完全開放可二次開發(fā),能夠依據(jù)自身需求進(jìn)行定制。
4.3.1 仿真系統(tǒng)開發(fā)環(huán)境的選擇
五軸數(shù)控模擬訓(xùn)練機(jī)系統(tǒng)是一臺具有鍵盤面板手輪等硬件以及機(jī)床三維模型的教學(xué)儀器[62]。伴隨著電子計(jì)算機(jī)顯卡 CPU 等圖像和數(shù)據(jù)處理硬件的飛速進(jìn)步,以及三維建模仿真算法和軟件快速發(fā)展,虛擬加工技術(shù)越來越完美的呈現(xiàn)出機(jī)床的實(shí)際加工運(yùn)動狀態(tài),這給五軸數(shù)控模擬訓(xùn)練機(jī)系統(tǒng)的搭建提供了不同種類的研發(fā)環(huán)境和技術(shù)手段。通過大量閱讀文獻(xiàn),以及網(wǎng)絡(luò)調(diào)研,綜合考慮研發(fā)目的以及應(yīng)用環(huán)境,能夠使用的技術(shù)方案如下:
a:基于VC++以及三維繪圖軟件研發(fā);
b:基于VRML 技術(shù)的研發(fā);
c:基于 C#和 Open GL 的二次開發(fā)。
雖然已經(jīng)有許多技術(shù)人員基于 Open GL 做了機(jī)床模擬器的研發(fā)與運(yùn)用領(lǐng)域的探索[63][64]。北航李軍峰運(yùn)用 Open GL 對數(shù)控機(jī)床進(jìn)行了加工模擬仿真研究[63],不過他討論的內(nèi)容只是機(jī)床仿真系統(tǒng)的構(gòu)建以及模擬工件切削過程,對添加硬件的完全型模擬數(shù)控技術(shù)研究以及專門為實(shí)訓(xùn)課程所開發(fā)的教學(xué)功能性數(shù)控系統(tǒng)研究較為淺顯。缺乏適合于特殊用戶的數(shù)控模擬教學(xué)及虛擬仿真系統(tǒng),功能的深度開發(fā)與探索較為淺顯[65]。
本課題是在目前較為先進(jìn)的數(shù)控機(jī)床基礎(chǔ)上進(jìn)行虛擬仿真器的構(gòu)建以及模擬系統(tǒng)的開發(fā)。使用對象是廣大學(xué)生以及培訓(xùn)工作人員,在 Open GL 上進(jìn)行二次開發(fā)可以減少開發(fā)周期以及開發(fā)成本[66],同時基于 Open GL 的技術(shù)成熟度,數(shù)控仿真器的開發(fā)更加方便快捷。通過對比所提出各個方案的多種優(yōu)點(diǎn)以及缺點(diǎn),同時聯(lián)合本論文的實(shí)際研究對象和研究方法,選擇 Open GL 與 C#進(jìn)行聯(lián)合開發(fā)方案,作為五軸數(shù)控機(jī)床的模擬器控制系統(tǒng)的開發(fā)平臺。
4.3.2 Open GL 概述
一般來說,數(shù)控加工模擬軟件其最主要的部分就是仿真過程的顯示,仿真模擬的外放過程決定了編制軟件的水平層次,具備優(yōu)秀的圖像顯示以及完備的人機(jī)交互功能是一個虛擬仿真軟件必不可少的功能[67]。采用完備的圖形技術(shù)標(biāo)準(zhǔn)作為模擬軟件圖形顯示的主要技術(shù)支持非常有必要。基于圖形標(biāo)準(zhǔn)在圖像顯示的重要作用,計(jì)算機(jī)技術(shù)的發(fā)展帶動了圖像顯示領(lǐng)域的發(fā)展[68],目前,主要的圖形顯示標(biāo)準(zhǔn)有 Core、Hoop S、Open GL 等。在市場競爭與產(chǎn)品的更新?lián)Q代下,Open GL 脫穎而出稱為了目前國內(nèi)外 3D 圖形顯示領(lǐng)域的基本標(biāo)準(zhǔn),具有重要的領(lǐng)域地位。基于 Unix 平臺的 PC 機(jī)下的 Open GL 已經(jīng)得到了比較成熟的使用。以下是對 Open GL 圖形庫基本內(nèi)容的簡單介紹[69]。
Open GL 全稱為開放式圖想編輯庫(Open Garphics Library),計(jì)算機(jī)的發(fā)展以及人們對圖形見面觀賞效果的質(zhì)量要求,推動了計(jì)算機(jī)圖形庫軟件的發(fā)展,Open Garphics Library就是在這樣一個環(huán)境下所誕生的產(chǎn)品[70]。該軟件由上百個過程程序與函數(shù)共同構(gòu)成,采用圖形編輯庫內(nèi)部的圖形編輯函數(shù)函數(shù),使用人員可以構(gòu)建出質(zhì)量優(yōu)越的三維模型,不需要操作人員具有專業(yè)的數(shù)學(xué)圖像處理知識,只需要采用特定的方式,構(gòu)建好自己所需要的圖形編輯軟件[71]。在 Open GL 編輯環(huán)境下,使用者能夠采用較少的步驟構(gòu)建具有較高質(zhì)量的三維圖像,在動畫的制作上,Open GL 使用起來也能得心應(yīng)手。Open GL的原型是 SGI 公司為了將客戶從傳統(tǒng)的計(jì)算機(jī)編程軟件與硬件系統(tǒng)中解脫出來而開發(fā)的一款圖形開發(fā)環(huán)境,主要是為圖形工作站服務(wù),它具有獨(dú)立于窗口操作與計(jì)算機(jī)硬件環(huán)境等特點(diǎn),進(jìn)行圖形編輯時不用花較多的時間去理解系統(tǒng)的主要結(jié)構(gòu)和控制指令,采用固定格式進(jìn)行應(yīng)用程序的編制就可以在支持 Open GL 系統(tǒng)的平臺進(jìn)行軟件的執(zhí)行[73]。
a)Open GL 的主要特點(diǎn)
(1)工業(yè)標(biāo)準(zhǔn):Open GL 的應(yīng)用標(biāo)準(zhǔn)由專門研究 Open GL 構(gòu)架的審查委員會進(jìn)行技術(shù)指導(dǎo),在審查委員會的監(jiān)督下,Open GL 做到了行業(yè)開放、無商業(yè)利益牽連,兼容性優(yōu)良的圖形標(biāo)準(zhǔn)。
(2)穩(wěn)定性:Open GL 經(jīng)過 10 多年各種平臺的實(shí)際應(yīng)用效果檢驗(yàn),器不斷的優(yōu)化與根性使其具備了良好的控制特性與編寫規(guī)范,其軟件具備向后兼容性,對于軟件和硬件的跟新十分方便。
(3)可擴(kuò)展性:Open GL 中具有一種自動擴(kuò)展的軟件接口,即 API。采用該擴(kuò)展程序,可以對圖形編輯軟件進(jìn)行額外功能的擴(kuò)展;
(4)簡單易用性:基于 Open GL 的優(yōu)越控制結(jié)構(gòu),簡單的設(shè)計(jì)以及完整的邏輯控制程序,使得用戶在該圖形編制界面下,可以采用較少的程序代碼就可以得到完整的程序,同時 Open GL 內(nèi)部刻錄了系統(tǒng)硬件的相關(guān)信息,程序開發(fā)人員在進(jìn)行程序編制時不用對硬件進(jìn)行詳細(xì)設(shè)計(jì)[73]。
b)OPen GL 提供的基本功能
(l)二維和三維造型:由于現(xiàn)實(shí)中的各種實(shí)際物體均能采用點(diǎn)、線、面進(jìn)行三維描述,Open GL 具有完整的圖形編輯命令,對實(shí)際物體的模擬繪制十分簡單方便。
(2)圖形變換:由于復(fù)雜的圖形可以通過基本單元經(jīng)過不同的變換進(jìn)行實(shí)現(xiàn),Open GL中具備系列基本變換,因此可以對基本圖形單元進(jìn)行合理的控制變化,產(chǎn)生所需要的圖形。
(3)光照處理:為使所繪制的圖形具有較為真實(shí)的視感,需要對三維圖形進(jìn)行光照處理和渲染。
(4)著色:Open GL 內(nèi)部具有多種模型的著色方式,其一是 RGB 顏色編輯模式,另一種是顏色索引模式。
(5)反走樣:Open GL 中主要采用位圖模式進(jìn)行圖形的編制,而位圖模式在繪圖時會產(chǎn)生邊界鋸齒,該鋸齒稱為圖形走樣,為了降低和弱化這種圖像邊界鋸齒,Open GL 內(nèi)部具有多個點(diǎn)、線、面以及多邊形的反走樣函數(shù)程序,可以有效的對圖像邊界鋸齒進(jìn)行弱化和消除,達(dá)到清晰顯示的目的。
(6)融合:在 Open GL 中,為了使三維模型具有較高的實(shí)物視覺體驗(yàn),對三維模型進(jìn)行半透明或者透明處理是主要技術(shù)手段,而該手段實(shí)現(xiàn)需要采用圖像融合技術(shù)進(jìn)行模擬。
(7)霧化:霧化效果在圖形編輯中具有較高的使用頻率,由于霧化可以模擬真實(shí)環(huán)境中霧的存在,在模型的構(gòu)建時具有一定的使用意義,而 Open GL 軟件包中的“fog”就可以對模型圖形進(jìn)行系統(tǒng)霧化效果實(shí)現(xiàn)。
(8)紋理映射:計(jì)算機(jī)圖形圖像顯示學(xué)中,所有具有顏色、值、光亮度等數(shù)據(jù)三維物體所構(gòu)成的矩形數(shù)組被稱為模型的紋理。三維模型的紋理映射就是把該物體所具有的紋理數(shù)組在模型表面進(jìn)行投影,從而使該模型具有更加直觀的表達(dá)效果。
(9)動畫效果:在 Open GL 中,動畫的實(shí)現(xiàn)是該軟件包的主要特點(diǎn)之一,Open GL 通過設(shè)置 RI 圖形緩沖區(qū)區(qū)來實(shí)現(xiàn)動畫的演示是目前主流的實(shí)現(xiàn)形式[74]。為了在虛擬軟件中得到運(yùn)動平滑的界面動畫,模型的動態(tài)過程必須在被投影到屏幕前在系統(tǒng)內(nèi)存中建立相應(yīng)的界面幀,才能保證動畫播放的流暢度。而 Open GL 通過運(yùn)用雙通道緩沖方式,在系統(tǒng)內(nèi)存中了構(gòu)建多個基本場景界面幀,屏幕對動畫進(jìn)行幀的播放時,后臺內(nèi)存中存儲著下一界面的多個幀,該方式對運(yùn)動動畫的顯示效果十分具有優(yōu)勢,對于高速運(yùn)動的圖像仍能快速處理。
c)Open GL 的工作流程
首先,控制程序從左側(cè)進(jìn)入 Open GL 的軟件程序包,通過其中包含有幾何數(shù)據(jù)以及像素?cái)?shù)據(jù)兩者,經(jīng)過求值器、像素操作,紋理映射、光柵化等多種圖像處理方式,最后生產(chǎn)待顯示的圖像幀。在該處理過程中,基于的 Open GL 函數(shù)分析包,會將得到的數(shù)據(jù)儲存在程序列表中,并按照一定的順序進(jìn)行解算處理,圖像處理的求值過程是對所輸入數(shù)據(jù)的求值多項(xiàng)式進(jìn)行幾何曲線以及曲面的擬合繪制;然后會對圖像的各個定點(diǎn)以及微型圖元進(jìn)行對應(yīng)的組合,同時采用特殊的變換方法對定點(diǎn)和光照進(jìn)行有效處理,將圖元進(jìn)行修改和裁剪,從而得到適合實(shí)際視覺的大小[43]。而在后續(xù)的圖像數(shù)據(jù)光柵化中,Open GL 主要采用對點(diǎn)、線、多邊形進(jìn)行二維數(shù)值描述的方法,生產(chǎn)對應(yīng)的像素儲存和圖像幀的緩存地址;當(dāng)所輸入的處理對象是像素?cái)?shù)據(jù)時,上述過程中的“求值器”將不再起作用,而會在像素值處理階段進(jìn)行處理,該階段的處理結(jié)果可以儲存為模型的紋理內(nèi)存,從而在圖像的光柵操作中進(jìn)行分析時使用[35],同時也可以采用與幾何模型數(shù)據(jù)相同的方式進(jìn)行數(shù)據(jù)光柵化。
d)Open GL 的動畫技術(shù)
數(shù)控加工模擬軟件的動態(tài)顯示是仿真系統(tǒng)的主要功能之一,采用基于 Open GL 開發(fā)包的仿真過程動畫顯示具有突出的技術(shù)優(yōu)勢。
Open GL 開發(fā)包的數(shù)控仿真動畫實(shí)現(xiàn)主要采用雙重緩沖算法以及交互函數(shù),雙重緩沖區(qū)包含兩個部分:前緩沖區(qū)域以及后緩沖區(qū)域[37]。雙重緩沖作用方式是當(dāng)前端緩沖區(qū)域畫面得到顯示時,后端緩沖區(qū)域同時處理下一階段的緩沖內(nèi)容,前緩沖區(qū)域的目標(biāo)內(nèi)容得到顯示后,后緩沖區(qū)域的內(nèi)容進(jìn)行顯示,顯示的同時前緩沖區(qū)域?qū)ο乱粠膬?nèi)容進(jìn)行處理,當(dāng)后緩沖區(qū)域的內(nèi)容顯示結(jié)束后[43],再次顯示前端緩沖區(qū)域所處理完成的內(nèi)容;此過程進(jìn)行重復(fù)運(yùn)行,就會得到圖形的連續(xù)顯示效果。Open GL 所采用的雙緩存顯示技術(shù),繪制圖像的同時可以對上一幀的內(nèi)容進(jìn)行顯示,十分方便的克服了模擬動畫播放時屏幕閃爍的問題,可以對復(fù)雜的動畫圖像進(jìn)行顯示和處理,其主要缺點(diǎn)就是圖像的顯示速度會受制于圖像的加工速度[42]。采用基于 Open GL 的雙緩存技術(shù),能夠在數(shù)控仿真模擬軟件中進(jìn)行有效運(yùn)用,實(shí)現(xiàn)對數(shù)控加工過程中的剛體運(yùn)動、變形、模型變化、視覺效果的有效處理和實(shí)時顯示。同時 Open GL 提供了基于 Windows 系統(tǒng)的 API 擴(kuò)展函數(shù):Sw Pa Bueffsr 可以對緩沖區(qū)的處理對象進(jìn)行快速交換,功能十分完備可靠。
e)系統(tǒng)的開發(fā)平臺
基于 Open GL 圖形庫的技術(shù)特點(diǎn)和應(yīng)用優(yōu)勢,目前主流的系統(tǒng)程序編寫軟件,Visua1C++6.0、C++Builder 以及 C#等,都采用了 Open GL 圖形庫作為自身的擴(kuò)展模塊,用來加強(qiáng)系統(tǒng)編譯軟件對圖形圖像的分析及處理能力,而其中之一的 C#,是目前最為成熟的窗口可視化程序開發(fā)平臺,其隸屬于微軟公司,也是目前軟件開發(fā)領(lǐng)域中非常優(yōu)秀的開發(fā)平臺之一,其強(qiáng)大的功能以及相對簡單的使用性,十分適合本系統(tǒng)的開發(fā)[49]。
4.3.3 模型構(gòu)建
通過 Open GL 按實(shí)際比例進(jìn)行機(jī)床模型的繪制,模擬各軸的運(yùn)動,實(shí)現(xiàn)數(shù)控系統(tǒng)的手輪控制功能,構(gòu)建模型如下圖:

圖 4-2 虛擬機(jī)床模型
4.3 機(jī)床手輪功能的實(shí)現(xiàn)
本節(jié)研究了模擬數(shù)控系統(tǒng)的手輪操作實(shí)現(xiàn)方法。研究了一種利用 C#與 Open GL 完成實(shí)體手輪操作模擬數(shù)控系統(tǒng)的算法。使用 C#完成手輪操作處理程序,完成手輪的通訊,并進(jìn)行轉(zhuǎn)換,實(shí)現(xiàn)響應(yīng);利用 Open GL 模擬各軸的移動,完成模擬數(shù)控系統(tǒng)的實(shí)體手輪操作,并公開了核心部分的程序源代碼[21]。通過這種方式,編寫出的程序代碼,具備很強(qiáng)的開放性和可移植性。
手輪操作在數(shù)控機(jī)床操作中占據(jù)著非常主要的地位,在切削前對刀、機(jī)床各軸小范圍移動等都要通過手輪完成[32]。手輪操作的實(shí)現(xiàn)難點(diǎn)是手輪大輪與選中軸移動的跟隨性,跟隨性能夠分成兩個部分,運(yùn)動距離與運(yùn)動速度。本章研究了一種利用 C#與 Open GL 完成實(shí)體手輪操作模擬數(shù)控系統(tǒng)的算法。
4.3.1 硬件結(jié)構(gòu)
以手輪為控制機(jī)構(gòu),工控機(jī)為處理中樞,實(shí)現(xiàn)五軸數(shù)控機(jī)床模擬器中的虛擬機(jī)床與手輪的運(yùn)動跟隨。系統(tǒng)硬件連接如圖 4-2 所示。系統(tǒng)連接框圖如圖 4-3 所示。

圖 4-2 系統(tǒng)硬件連接

圖 4-3 系統(tǒng)連接框圖
手輪通過串口將數(shù)據(jù)傳輸?shù)焦た貦C(jī)上,由工控機(jī)上的 C#語言編寫的上位機(jī)軟件(以后簡稱 C#軟件)進(jìn)行數(shù)據(jù)處理,區(qū)分不同的軸和倍率,以及使能是否按下。將處理后的數(shù)據(jù)通過 API 接口傳輸給Open GL,最終驅(qū)動虛擬數(shù)控機(jī)床相應(yīng)軸的運(yùn)動。
4.3.2 手輪數(shù)據(jù)設(shè)定
手輪通過串口發(fā)送給工控機(jī)的指令,由 C#軟件存儲在相應(yīng)的變量中,手輪與 C#軟件的通訊協(xié)議如表 4-1:
表 4-1 手輪通訊協(xié)議

手輪利用RS485通訊協(xié)議與工控機(jī)相連接來實(shí)現(xiàn)數(shù)據(jù)交換。手輪的核心是旋轉(zhuǎn)編碼器,旋轉(zhuǎn)手輪就能夠生成一個表示當(dāng)前位置的串碼 A,手輪上的各個分度值都具有唯一的串碼A。工控機(jī)接收到手輪發(fā)出的串碼 A1 后,用 A1 和之前記錄的串碼 A0 求差,獲得差值△,當(dāng)△>0 就表示手輪正轉(zhuǎn),當(dāng)△<0 就表示手輪反轉(zhuǎn)。之后把|△|當(dāng)做手輪移動距離。
4.3.3 軟件設(shè)計(jì)
在操作界面能夠?qū)崟r顯示 X、Y、Z、A、C 五個軸的相對位置或絕對位置,手輪當(dāng)前位置,手輪旋轉(zhuǎn)量,手輪倍率,手輪旋轉(zhuǎn)速度。調(diào)試軟件界面如圖 4-4 所示:

圖 4-4 軟件界面
數(shù)控機(jī)床手輪功能的實(shí)現(xiàn),是數(shù)控機(jī)床控制系統(tǒng)設(shè)計(jì)中的重要的一環(huán),本文詳細(xì)論述了利用 C#軟件和 Open GL 實(shí)現(xiàn)手輪運(yùn)動和速度跟隨的方法,并通過實(shí)驗(yàn)論證了方法的有效性。
4.4 機(jī)床多系統(tǒng)的實(shí)現(xiàn)
本章詳細(xì)的探究了多系統(tǒng)數(shù)控機(jī)床的設(shè)計(jì)過程,獨(dú)創(chuàng)的提出了一種基于 C#和數(shù)控面板的方法,最終實(shí)現(xiàn)集多系統(tǒng)于五軸數(shù)控機(jī)床。通過 C#語言編寫上位機(jī)軟件,主要能夠?qū)崿F(xiàn)多系統(tǒng)界面切換和功能切換的功能,通過各機(jī)床的通用性,使多個系統(tǒng)共存在一個機(jī)床內(nèi),如果想完全換成別的機(jī)床系統(tǒng),除了在軟件界面上切換過來,還需要切換相應(yīng)的面板,這樣的話,在很大程度上提高了數(shù)控機(jī)床的利用率,特別適合用在學(xué)校的實(shí)訓(xùn)教學(xué)之中。
在教學(xué)實(shí)踐中,接觸到的數(shù)控機(jī)床系統(tǒng)往往不止一種,國內(nèi)外有多個廠家發(fā)布了數(shù)控機(jī)床系統(tǒng),例如西門子、海德漢、華中數(shù)控、三菱和 FANUC 等。為提高學(xué)生的適應(yīng)性,學(xué)校通常會同時采購多種數(shù)控機(jī)床,而這些機(jī)床通常床身的區(qū)別性不大,這樣就造出來資源的冗余和浪費(fèi)。因此,需要急需開發(fā)出一套能夠融合多種數(shù)控系統(tǒng)的產(chǎn)品或者系統(tǒng)。
4.4.1 實(shí)現(xiàn)原理
實(shí)現(xiàn)對應(yīng)的功能,需要的硬件主要有:工控機(jī)一臺,西門子 840D、海德漢 530i 的數(shù)控面板。
兩種數(shù)控面板分別通過串口與工控機(jī)相連接并實(shí)現(xiàn)通訊。工控機(jī)將根據(jù)接收到的數(shù)控面板的鍵盤命令進(jìn)行相應(yīng)的運(yùn)算和操作,通過 API 函數(shù)驅(qū)動 Open GL 中的虛擬機(jī)床進(jìn)行相應(yīng)的運(yùn)動。由工控機(jī)處理 Open GL 反饋的運(yùn)動坐標(biāo)及其他參數(shù)數(shù)據(jù),并實(shí)時控制數(shù)控面板上界面的切換和文字的顯示,控制系統(tǒng)的流程圖如圖 4-5 所示:

圖 4-5 控制系統(tǒng)流程圖
4.4.2 工控機(jī)程序編寫
工控機(jī)作為多系統(tǒng)機(jī)床的核心,綜合處理各組成部件間的信息,讓數(shù)控面板、手輪、指示燈等硬件和虛擬數(shù)控機(jī)床有機(jī)的結(jié)合在一起,協(xié)調(diào)工作。軟件的原理是將各系統(tǒng)的數(shù)控編程語言進(jìn)行轉(zhuǎn)化,轉(zhuǎn)化成統(tǒng)一的程序代碼。并且將需要顯示的數(shù)據(jù),如各軸坐標(biāo)值、主軸轉(zhuǎn)速、當(dāng)前刀號等數(shù)據(jù)做為全局變量,實(shí)現(xiàn)數(shù)據(jù)處理的通用化;另外在更換系統(tǒng)時,可以直接提取相應(yīng)的變量,實(shí)現(xiàn)數(shù)據(jù)顯示的通用化。
程序的功能完全可由目前很成熟的、簡單的 C#編程語言來實(shí)現(xiàn)。下面就代表性代碼進(jìn)行說明。
首先是機(jī)床當(dāng)前狀態(tài),機(jī)床當(dāng)前狀態(tài)是指在機(jī)床運(yùn)行過程中所處的狀態(tài),比如切削狀態(tài)、當(dāng)前刀具偏置、當(dāng)前倍率等數(shù)據(jù)。這些數(shù)據(jù)通過全局變量來存儲可以實(shí)現(xiàn)各系統(tǒng)通用化的調(diào)用,下面是機(jī)床當(dāng)前狀態(tài)的申明:
Public Bool jc_xunhuan_start // 機(jī)床循環(huán)啟停,循環(huán)啟動為 1,循環(huán)停止為 0
Public Int jc_m oshi// 機(jī)床模式。
Public Bool jc_wcs_mcs// 機(jī)床坐標(biāo)狀態(tài),1 代表 wcs,0 代表 mcs
Public Int bzw_開始讀坐標(biāo)//運(yùn)行狀態(tài)為 0 停止?fàn)顟B(tài)為 1
Public Double jc_ 擺頭偏置_x // 機(jī)床的擺頭偏置 x Public Double jc_ 擺頭偏置_y // 機(jī)床的擺頭偏置 y
Public Double jc_ 擺頭偏置_z // 機(jī)床的擺頭偏置 z
Public Double jc_ 已存偏置_x(16)//機(jī)床的已存偏置 x(相應(yīng)軸對刀后)
Public Double jc_ 已存偏置_y(16)//機(jī)床的已存偏置 y(相應(yīng)軸對刀后)
Public Double jc_ 已存偏置_z(16)//機(jī)床的已存偏置 z(相應(yīng)軸對刀后)
Public String jc_ 當(dāng)前零點(diǎn)偏移//設(shè)置當(dāng)前激活的零點(diǎn)偏移,如 G54 等,若為空則未激活任何零點(diǎn)偏移
Public Double jc_ 切削進(jìn)給倍率//切削進(jìn)給倍率
Public Double jc_ 快速進(jìn)給倍率//切削進(jìn)給倍率
Public String jc_ 手輪倍率 //手輪倍率
Public String jc_ 手輪軸 //當(dāng)前手輪軸
Public String jc_ 手輪位置 //當(dāng)前手輪大輪位置—之前
Public String jc_ 手輪位置_當(dāng)前//當(dāng)前手輪大輪當(dāng)前位置
Public Int jc_手輪串口號//運(yùn)行狀態(tài)為 0 停止?fàn)顟B(tài)為 1
Public Int jc_西門子鍵盤串口號
Public Int jc_海德漢鍵盤串口號
Public Long jc_ 開機(jī)延遲 //默認(rèn)為 25000
研究了一種基于工控機(jī)和 C#實(shí)現(xiàn)多面板數(shù)控機(jī)床的方法,以 FANUC 系統(tǒng)的數(shù)控編程語言為例,詳細(xì)說明了實(shí)現(xiàn)方法及思路。工控機(jī)界面通過 C#語言編寫,同時工控機(jī)實(shí)現(xiàn)了對數(shù)據(jù)的分析和處理,集成了數(shù)控機(jī)床控編程系統(tǒng),達(dá)到了節(jié)約了購置成本的效果。完全自主搭建好的多系統(tǒng)數(shù)控機(jī)床,已成功的應(yīng)用在自主研發(fā)的五軸數(shù)控機(jī)床模擬訓(xùn)練機(jī)上,并且達(dá)到了理想效果。
表 4-2 面板通訊協(xié)議

4.5 機(jī)床面板功能的實(shí)現(xiàn)
機(jī)床面板是用戶與機(jī)床進(jìn)行交互的主要輸入裝置,為了給用戶提供真實(shí)的操作體驗(yàn),機(jī)床面板采用采用物理面板。面板采用單片機(jī)加矩陣鍵盤的形式,鍵盤自主設(shè)計(jì)制作,采用雙單片機(jī)并聯(lián)模式,滿足組合按鍵按下的需求。面板通訊協(xié)議如表4-2 所示。
4.6 虛擬電機(jī)運(yùn)動的實(shí)現(xiàn)
五軸數(shù)控機(jī)床通過控制電機(jī)的轉(zhuǎn)動,帶動絲杠,進(jìn)而實(shí)現(xiàn)各軸運(yùn)動,在運(yùn)動過程中有連續(xù)性;而虛擬機(jī)床通過改變各軸與機(jī)床的相對位置,來實(shí)現(xiàn)五個軸的運(yùn)動,因此改變相對位置值之后,相應(yīng)的軸會立即運(yùn)動到指定位置,這就和實(shí)際機(jī)床運(yùn)動有沖突了。
為使虛擬機(jī)床運(yùn)行達(dá)到與實(shí)際機(jī)床相同的視覺效果,特別設(shè)計(jì)了虛擬電機(jī)運(yùn)動算法。
參考 PLC 控制伺服電機(jī)的方法,有兩種方式:
第一種:一般的 PLC 都具備高速脈沖輸出口,通常有兩個。通過這兩個高速脈沖輸出口,就可以直接驅(qū)動伺服電機(jī),電機(jī)運(yùn)動的速度跟高速脈沖輸出口的脈沖頻率成正比,電機(jī)旋轉(zhuǎn)的圈數(shù)跟高速脈沖輸出口的脈沖個數(shù)成正比,如果需要反轉(zhuǎn),再通過一個 I/O 信號就行。第二種:有一些 PLC 是具備定位模塊的,比如 GE,這種定位模塊是通過讀取 PLC中 CPU模塊傳過來的運(yùn)行命令的數(shù)據(jù),最終轉(zhuǎn)換成能夠驅(qū)動伺服電機(jī)的方向和脈沖。由于定位模塊內(nèi)部接口是為控制伺服而設(shè)計(jì)的,所以能夠和伺服驅(qū)動器進(jìn)行數(shù)據(jù)上的交換,能夠讀出伺服報(bào)警信號信號,伺服使能信號,伺服定位結(jié)束信號,還有其他的一些伺服電機(jī)控制方面的信號。
伺服電機(jī)控制的方式一共可以分為兩種,分別為脈沖控制和模擬電壓控制。
1、脈沖控制方式可以細(xì)分為位置控制模式和轉(zhuǎn)矩控制模式;
2、模擬電壓模擬電壓控制一般通過模擬量去控制伺服電機(jī),可通過 PLC 的模擬量輸出去控制伺服電機(jī),同時也可通過定位模塊去控制。
所以為使虛擬電機(jī)能達(dá)到同樣的連續(xù)運(yùn)動效果,可以模擬電機(jī)的脈沖運(yùn)動效果,將結(jié)果分段顯示,將剩余移動位移轉(zhuǎn)化為有限個小的位移,以脈沖的形式發(fā)送移動指令,這樣就能達(dá)到把瞬間移動轉(zhuǎn)化為多個瞬間移動,然后每個瞬間移動之間,插入一個小的延時,這樣就可以得到連續(xù)的效果。
理論上講延時越小則觀察到的連續(xù)性越好,但是對于程序來講,延時越小發(fā)出的脈沖越多,過大的頻率會導(dǎo)致系統(tǒng)卡頓,經(jīng)測試,極限頻率為 100Hz 左右,所以延時大于 10ms即可;而電影的播放速度為 24 幀每秒,即 42.6ms/幀,也就是延時應(yīng)該小于 42.6ms,所以每幀的時間差可以取 Δt =40ms ,這樣既可以騙過人眼,讓使用者認(rèn)為運(yùn)動是連續(xù)的,又不至于影響系統(tǒng)的穩(wěn)定性。
然后是脈沖的個數(shù) N,也就是完成一個運(yùn)動需要的脈沖數(shù)量;每個脈沖移動的距離Δs ;還有最后一個脈沖移動的距離δs 。
下面可以開始構(gòu)建電機(jī)運(yùn)動函數(shù)了,函數(shù)輸入值為所選坐標(biāo)軸 axis、位移 S 和速度 V(若 S>0 則正向移動,若 S<0 則反向移動),這樣可以計(jì)算出移動用時 t。基于以上討論,可以推導(dǎo)出如下公式:

用這幾個公式可以構(gòu)成虛擬電機(jī)的運(yùn)動主函數(shù),把輸入的位移和速度值分解為脈沖數(shù)、每個脈沖所走距離、最后一個脈沖所走距離,然后循環(huán)調(diào)用運(yùn)動子函數(shù)。虛擬電機(jī)運(yùn)動主函數(shù)構(gòu)建偽代碼如下:
static void Dian Ji(Double S ,Double V,Int axis)
{Int N
Double d S
Double dd S
Int axis
Double t
t = S / V //計(jì)算總時間
N = Math.Floor(t / 40) + 1 //計(jì)算總脈沖次數(shù)
d S = Math.Floor(S / N) //計(jì)算每個脈沖所走距離
dd S = S / N - d S //計(jì)算最后一次脈沖的剩余移動量
XNDJ( N, d S,dd S,axis) //調(diào)用電機(jī)子函數(shù)} 然后構(gòu)建虛擬電機(jī)的運(yùn)動子函數(shù):
static void XNDJ(Int N,Double d S,Double dd S,Int axis )
{//虛擬電機(jī)函數(shù),參數(shù)分別為脈沖數(shù)、每個脈沖所走距離、最后一個脈沖所走距離、所選坐標(biāo)軸
//其中調(diào)用的函數(shù)有
//Move To(Int axis,Double s )//(使選定軸 axis 移動距離 s)
//Sleep YS(Int time )//(使程序延時,單位 ms)
//其中使用的全局變量有
Int Stop XNDJ (用來停止相應(yīng)軸的電機(jī)運(yùn)動函數(shù),0 為不停止,不為 0 則停止相應(yīng)軸)
If (N > 1)
{For(i = 2;i < N+1;i++) //完成前N-1 次脈沖
{Move To( axis,d S) //完成前 N-1 次脈沖中每次對應(yīng)軸的移動
I f (Stop XNDJ = = axis)
{ return}//跳出循環(huán)條件Sleep YS (40)//延時 40ms }
Move To (axis,dd S) //完成最后一次脈沖的剩余移動量}
在虛擬電機(jī)的運(yùn)動函數(shù)中,輸入?yún)?shù)為脈沖數(shù)、每個脈沖所走距離、最后一個脈沖所走距離、所選坐標(biāo)軸,每次調(diào)用可以完成相應(yīng)軸的有限次的移動,直到移動結(jié)束;也可以響應(yīng)中斷,比如用戶點(diǎn)擊了循環(huán)停止按鈕或改變了電機(jī)運(yùn)動倍率。
初期用的是系統(tǒng)的自帶延時函數(shù),發(fā)現(xiàn)使用時會使系統(tǒng)失去響應(yīng),用戶無法進(jìn)行其他操作,直到延時結(jié)束才能響應(yīng),所以雖然比較簡單,但并不能應(yīng)用在這里。新的延時函數(shù),使用的是系統(tǒng)開機(jī)時間,先記錄延時開始時的系統(tǒng)開機(jī)時間,再不斷請求開機(jī)時間,將獲取的新的開機(jī)時間與起始開機(jī)時間的差和延時長度對比,若差大于延時長度,則跳出循環(huán)。
4.7 本章小結(jié)
本章主要從五軸手?jǐn)?shù)控機(jī)床模擬訓(xùn)練機(jī)的功能分析入手,分析和比較了三種虛擬機(jī)床的開發(fā)方案,選擇基于 Open GL 以及C# 這兩款工具來進(jìn)行五軸數(shù)控機(jī)床模擬機(jī)的開發(fā),并簡單描述了Open GL 這款工具的主要特點(diǎn),分析了Open GL 的功能優(yōu)勢。
在上章中提到,五軸數(shù)控機(jī)床模擬器是基于 C#和 Open GL 進(jìn)行二次開發(fā),軟件開發(fā)平臺基于 Windows 系統(tǒng),就需要將機(jī)床原有的伺服系統(tǒng)進(jìn)行模擬,使原伺服系統(tǒng)及伺服電機(jī)可以在 Windows 中模擬出來,使模擬器中機(jī)床的運(yùn)行符合真實(shí)機(jī)床的運(yùn)行規(guī)律;同時可以驅(qū)動手輪、面板、鍵盤、指示燈等硬件,實(shí)現(xiàn)對用戶輸入的響應(yīng),包括鍵盤和手輪按鍵的觸發(fā),面板界面菜單的顯示,指示燈的點(diǎn)亮和熄滅等。最終效果是使用戶體驗(yàn)到操作真實(shí)五軸數(shù)控機(jī)床的感覺,最大程度的實(shí)現(xiàn)仿真教學(xué)的真實(shí)性。
投稿箱:
如果您有機(jī)床行業(yè)、企業(yè)相關(guān)新聞稿件發(fā)表,或進(jìn)行資訊合作,歡迎聯(lián)系本網(wǎng)編輯部, 郵箱:skjcsc@vip.sina.com
如果您有機(jī)床行業(yè)、企業(yè)相關(guān)新聞稿件發(fā)表,或進(jìn)行資訊合作,歡迎聯(lián)系本網(wǎng)編輯部, 郵箱:skjcsc@vip.sina.com
更多本專題新聞
專題點(diǎn)擊前十
| 更多