張艷婷,沈曉紅
ZHANG Yan-ting,SHEN Xiao-hong
(北京工商大學(xué) 材料與機(jī)械工程學(xué)院,北京 100048)
開放式數(shù)控系統(tǒng)開發(fā)周期短、功能強(qiáng)大、靈活以及升級(jí)方便,已經(jīng)成為數(shù)控系統(tǒng)的發(fā)展趨勢,它能夠有效解決傳統(tǒng)數(shù)控系統(tǒng)結(jié)構(gòu)封閉、系統(tǒng)柔性差、網(wǎng)絡(luò)功能欠缺等問題,同時(shí)能更好地適應(yīng)現(xiàn)代制造業(yè)網(wǎng)絡(luò)化、集成化的發(fā)展趨勢[1,2]。
IEEE( 國際電氣和電子工程師協(xié)會(huì)) 定義開放式數(shù)控系統(tǒng)為“符合系統(tǒng)規(guī)范的應(yīng)用,可以運(yùn)行在多個(gè)銷售商的不同平臺(tái)上,可以與其他的系統(tǒng)應(yīng)用互操作,并且具有一致風(fēng)格的用戶界面”。它具有開放性、可擴(kuò)展性、互換性、可移植性、互操作性、可縮放性和即插即用等特性[3]。
目前有許多對(duì)開放式數(shù)控系統(tǒng)的研究,但在運(yùn)動(dòng)控制器方面,主要還是集中在基于PC總線的PMAC運(yùn)動(dòng)控制卡和固高GT系列,Soft型的固高GO系列以及嵌入式運(yùn)動(dòng)控制器PA8000NT等,核心部分運(yùn)動(dòng)控制和伺服控制仍是封閉的。軟件芯片的使用只是簡單的程序源代碼的重用,這種移植只能是同一種編程語言下的移植,是一種極為有限條件下的移植,SERCOS總線技術(shù)參數(shù)眾多,大多使用默認(rèn)值,不適應(yīng)高速高精度加工,另外價(jià)格也比較昂貴[4,5]。
本文提出了一種以Windows為平臺(tái),Visual C++6.0為編程語言,借助ACR9000運(yùn)動(dòng)控制器提供的基本指令和動(dòng)態(tài)鏈接庫函數(shù),開發(fā)界面友好、操作方便的開放式數(shù)控系統(tǒng)軟件平臺(tái),能夠結(jié)合硬件平臺(tái)形成數(shù)控系統(tǒng),并將這一系統(tǒng)初步運(yùn)行于我院自主設(shè)計(jì)的超聲數(shù)控加工機(jī)床,實(shí)現(xiàn)了數(shù)控系統(tǒng)的基本功能。
Visual C ++ 6.0具有友好的可視化界面和強(qiáng)大的函數(shù)庫,采用此編程工具可以有效地縮短開發(fā)周期[6,7]。本系統(tǒng)主要利用了單文檔-多視圖的結(jié)構(gòu)和多線程編程技術(shù)。
系統(tǒng)設(shè)計(jì)思路如圖1所示。首先按照模塊化設(shè)計(jì)理念,規(guī)劃開放式數(shù)控系統(tǒng)體系結(jié)構(gòu),將CNC系統(tǒng)中一些功能獨(dú)立、內(nèi)聚力強(qiáng)、相互組合較松散的功能模塊抽象出來,找出其中的基本功能模塊;再對(duì)基本功能模塊進(jìn)行細(xì)化,找出其中包含的功能相對(duì)獨(dú)立的子模塊,并將各子功能模塊和無法細(xì)分的功能模塊作為整個(gè)系統(tǒng)的功能單元;最后對(duì)系統(tǒng)功能單元的屬性和方法進(jìn)行抽象;其中屬性是該功能單元所要處理的信息,方法是該功能單元處理這些信息的行為。抽象出屬性和方法之后,利用面向?qū)ο蠹夹g(shù)對(duì)各個(gè)功能單元進(jìn)行封裝,以形成類;然后,根據(jù)具體開發(fā)要求,選擇所需的類,并實(shí)例化出對(duì)象;按照對(duì)象間的關(guān)系模型,建立具體的數(shù)控系統(tǒng)。如果在以后的應(yīng)用中用戶還有新的應(yīng)用需求,可以構(gòu)造出新的功能單元,并將新類添加到原有系統(tǒng)的對(duì)象間的關(guān)系模型中,從而便捷地建立起新的應(yīng)用系統(tǒng),實(shí)現(xiàn)系統(tǒng)的開放性和可重構(gòu)性。
圖1 數(shù)控系統(tǒng)設(shè)計(jì)原理圖
界面主要由代碼輸入?yún)^(qū),顯示區(qū),控制區(qū),手動(dòng)控制區(qū)四部分組成。而代碼輸入?yún)^(qū)又有插入,修改,刪除和運(yùn)行按鈕??刂茀^(qū)有通訊模塊,仿真模塊,插補(bǔ)編譯,糾錯(cuò)模塊等。顯示區(qū)可以顯示機(jī)床的開關(guān)狀態(tài),冷卻液開關(guān)狀態(tài),主軸的開關(guān)狀態(tài),當(dāng)前的轉(zhuǎn)速以及當(dāng)前的坐標(biāo)位置。手動(dòng)控制區(qū)主要是軸0、軸1、軸2三軸單獨(dú)JOG運(yùn)動(dòng)。主界面如圖2所示。
圖2 主界面圖
ARC9000運(yùn)動(dòng)控制器是美國Parker公司推出的最新Acroloop系列多軸獨(dú)立式控制器,有150MFLOPS,32位浮點(diǎn)DSP;最多8軸伺服或步進(jìn)控制;10/100M以太網(wǎng)或USB2.0高速通信;RS-232/RS-485通信接口。便利的接口型式和高性能的通訊能力使ACR9000具有很高的靈活性,可用于不同的高速高精度的自動(dòng)化機(jī)器裝備上[8]。
控制器提供了ComACRServer.dll動(dòng)態(tài)鏈接庫,庫中的200多個(gè)函數(shù)涵蓋了ACR9000運(yùn)動(dòng)控制器的全部主要功能。通信服務(wù)提供兩層虛擬層面:第一種把物理通信層面集合到函數(shù)性API,包含和四種接口連接在一起的屬性和方法。第二種去除了對(duì)特殊語言的依賴性,通過提供一個(gè)COM組件,只要基于windows編程環(huán)境就能使用這個(gè)API函數(shù),控制方式如圖3所示。
圖3 PC與ACR9000的控制方式
創(chuàng)建通訊模塊連接按鈕,實(shí)現(xiàn)人機(jī)界面與運(yùn)動(dòng)控制器的連接,以實(shí)現(xiàn)信息通訊和命令調(diào)用等所有功能。運(yùn)動(dòng)控制器與PC的連接有四種方式,主要應(yīng)用connect命令,參數(shù)1代表為Bus總線連接,參數(shù)2代表Serial串行接口,參數(shù)3代表Ethernet以太網(wǎng)連接,參數(shù)4代表USB連接,參數(shù)列表如圖4所示。本系統(tǒng)采用Ethernet連接,界面如圖5所示,部分主要代碼如下:
圖4 連接屬性設(shè)置表
圖5 通訊模塊
代碼輸入模塊主要包括數(shù)控代碼的輸入,編輯修改,刪除等功能,通過這些功能能快速準(zhǔn)確的將數(shù)控代碼輸入軟件中,如圖6所示。部分主要程序如下:
圖6 代碼輸入模塊
狀態(tài)顯示模塊可以顯示機(jī)床的開關(guān)狀態(tài),冷卻液開關(guān)狀態(tài),主軸的開關(guān)狀態(tài),當(dāng)前的轉(zhuǎn)速以及當(dāng)前的坐標(biāo)位置,通過這顯示模塊,用戶可以很清楚地看到機(jī)床的運(yùn)行狀態(tài),如圖7所示。部分主要程序如下:
圖7 狀態(tài)顯示模塊
JOG運(yùn)動(dòng)操作模塊主要是手動(dòng)控制軸0、軸1、軸2的單獨(dú)運(yùn)動(dòng)狀態(tài),先選擇要設(shè)置JOG速度的軸,再在文本框中輸入該軸JOG運(yùn)動(dòng)速度,最后單擊“設(shè)置”按鈕讓該設(shè)置生效。單擊JOG+按鈕,對(duì)應(yīng)軸將正轉(zhuǎn),單擊JOG-按鈕,對(duì)應(yīng)軸將反轉(zhuǎn),單擊JOG停,對(duì)應(yīng)軸停止旋轉(zhuǎn)。控制界面如圖8所示。
控制電機(jī)JOG運(yùn)動(dòng)可以通過觸發(fā)ACR9000控制器內(nèi)部的BIT位來實(shí)現(xiàn)。JOG速度設(shè)置可以通過對(duì)內(nèi)部P參數(shù)賦值來實(shí)現(xiàn),對(duì)應(yīng)關(guān)系如表1所示,部分主要程序如下:
圖8 JOG運(yùn)動(dòng)操作模塊
表1 JOG運(yùn)動(dòng)BIT、P參數(shù)對(duì)應(yīng)表
插補(bǔ)程序在每個(gè)插補(bǔ)周期運(yùn)行一次,在每個(gè)插補(bǔ)周期中,根據(jù)指令進(jìn)給速度計(jì)算出一個(gè)微小的直線數(shù)據(jù)段。通常經(jīng)過若干個(gè)插補(bǔ)周期加工完一個(gè)程序段,即從數(shù)據(jù)段的起點(diǎn)走到終點(diǎn)。計(jì)算機(jī)數(shù)控系統(tǒng)是一邊插補(bǔ),一邊加工。而在本次處理周期內(nèi),插補(bǔ)程序的作用是計(jì)算下一個(gè)處理周期的位置增量。它的主要任務(wù)是在每個(gè)采樣周期內(nèi),將插補(bǔ)計(jì)算的理論位置與實(shí)際反饋位置相比較,用其差值去控制進(jìn)給電機(jī),進(jìn)而控制機(jī)床工作臺(tái)(或刀具)的位移。這樣機(jī)床就自動(dòng)地按照零件加工程序的要求進(jìn)行切削加工[9-11]。
本系統(tǒng)采用脈沖增量插補(bǔ)中的數(shù)字積分法又稱DDA(Digital Differential Analyzer)法,利用數(shù)字積分的方法,計(jì)算刀具沿各坐標(biāo)軸的位移,以便加工出所需要的線性。以直線插補(bǔ)為例,界面如圖9所示,部分重要代碼如下:
圖9 插補(bǔ)模塊
當(dāng)代碼輸入完,程序開始運(yùn)行前,對(duì)代碼進(jìn)行檢查,如有錯(cuò)誤就進(jìn)行糾正,如沒有錯(cuò)誤,就進(jìn)行后續(xù)運(yùn)行。另外在系統(tǒng)工作過程中,隨時(shí)發(fā)現(xiàn)系統(tǒng)故障,并指示故障類型,以實(shí)現(xiàn)在線診斷功能,保證系統(tǒng)的正常運(yùn)行,部分主要代碼如下:
仿真模塊主要根據(jù)數(shù)控程序進(jìn)行計(jì)算機(jī)模擬運(yùn)行,根據(jù)模擬的運(yùn)動(dòng)軌跡來判斷原先的程序是否合理,有沒有出錯(cuò)。加工墊片外輪廓的運(yùn)動(dòng)軌跡仿真例子如圖10所示。部分主要代碼如下:
圖10 仿真模塊實(shí)例
論文是基于windows平臺(tái),利用Visual C++6.0編程工具,利用ACR9000運(yùn)動(dòng)控制器,介紹了一款開放式數(shù)控系統(tǒng)軟件平臺(tái)的設(shè)計(jì)。所開發(fā)的系統(tǒng)軟件工作穩(wěn)定,響應(yīng)周期短,可移植性強(qiáng)。實(shí)現(xiàn)了人機(jī)交互界面與運(yùn)動(dòng)控制器的連接,以及機(jī)床的基本功能。由于它是個(gè)開放式數(shù)控系統(tǒng),所以以后在應(yīng)用過程中,需要什么功能,便可以在原有軟件系統(tǒng)上進(jìn)一步進(jìn)行發(fā)。下一步將繼續(xù)完善軟、硬件系統(tǒng),使其更適合超聲加工的特點(diǎn)。
[1] 吳明軍,張旭輝,王孫安. 基于Linux的開放式數(shù)控系統(tǒng)軟件平臺(tái)研究[J]. 組合機(jī)床與自動(dòng)化加工技術(shù). 2006.
[2] 王睿鵬. 基于PC的開放式數(shù)控系統(tǒng)[J]. 計(jì)算機(jī)技術(shù)與應(yīng)用. 2006.
[3] 吳繼忠,譚平. 開放式數(shù)控系統(tǒng)探索[J]. 計(jì)算技術(shù)與信息發(fā)展. 2009.
[4] 張連軍,何春俐. 開放式數(shù)控系統(tǒng)的發(fā)展現(xiàn)狀[J]. 機(jī)械管理開發(fā). 2010.
[5] 龔敏,陳友東.數(shù)控技術(shù)及開放式數(shù)控系統(tǒng)[J]. 機(jī)械設(shè)計(jì)與制造. 2006.
[6] 宋坤.Visual C++開發(fā)實(shí)戰(zhàn)寶典[M]. 清華大學(xué)出版社.2010.
[7] 陳德妙,張桂香. 基于Windows2000下開放式數(shù)控系統(tǒng)軟件的開發(fā)[J]. 組合機(jī)床與自動(dòng)化加工技術(shù). 2005.
[8] 王大宇,劉吉彪. Parker公司ACR9000運(yùn)動(dòng)控制器在二自由度滑臺(tái)中的應(yīng)用[J]. 工程機(jī)械文摘. 2008.
[9] 王世寰,張克國. 可擴(kuò)展插補(bǔ)指令的開放式數(shù)控系統(tǒng)[J].組合機(jī)床與自動(dòng)化加工技術(shù). 2007.
[10] 王永章,杜君文,程國全.數(shù)控技術(shù)[M]. 高等教育出版社. 2001.
[11] 程國標(biāo),郭躍飛. 開放式數(shù)控系統(tǒng)研究[D]. 復(fù)旦大學(xué).2008.