董秋艷,郭兵,韓成順,趙清亮
(哈爾濱工業大學精密工程研究所,黑龍江哈爾濱150001)
隨著科學技術的日益發展,各種對稱、非對稱、非球曲面、甚至更為復雜的異形曲面零件的加工越來越引起世界各國制造業的高度重視。這些高精度的曲面類零件廣泛地應用于武器裝備、航空航天、生物醫學、能源及電子信息等領域的尖端設備中[1]。曲面的超精密加工要求加工機床具有高精度、高剛度以及良好的動態性能,同時需要多軸聯動控制技術。因此,數控系統作為超精密機床的控制中心,已成為決定超精密曲面加工的關鍵性因素。目前,超精密機床多采用NC(Numerical Control)嵌入PC型開放式數控系統。這種開放式數控系統具有可移植、可擴展性、交互簡單、運用靈活等優點。
文中根據超精密磨床磨削非球曲面的要求,依托PMAC多軸運動控制卡和上位機工控機組成的開放式數控系統,基于Windows操作平臺,綜合運用VC++6.0和PMAC驅動程序進行了數控系統的軟件開發。
PMAC(Programmable Multi-Axis Controller)是由美國Delta Tau公司推出的具有開放式體系結構的多軸運動控制器。PMAC功能強大,性價比較高,具有精度高、響應快、操作簡單等特點,它采用了Motorola的DSP56系列數字芯片,可以靈活運行多種高級語言,最多可以控制八軸同時運動[2]。
PMAC本身就是一臺完整的計算機,它不僅可以通過自己內部的程序獨立運行,還可以與計算機連接起來進行聯合運行;它是集執行PLC程序、伺服環更新、電機換向更新、資源管理以及與主機通訊于一體的多功能運動控制器,能夠執行多個任務并對任務的優先級做出正確的判斷[3]。
PMAC通過串口、總線 (PC、PCI、STD或者VME)或者雙端口RAM與主機通訊,通過特殊設計的DSPGATES用戶門陣列 IC與各軸通訊[4]。每個PMAC卡都能控制8個軸,最多可以有16個PMAC卡級聯。
基于PMAC的數控系統是開放式數控系統,這主要是由于PMAC硬件結構的開放性和軟件結構的開放性。其中硬件結構的開放性是指它能夠與不同硬件平臺匹配、與各種伺服系統匹配、與各種檢測元件匹配以及與PC機采用多種方式進行通信。軟件結構的開放性是指其人機界面的對外開放性、數控功能的對外開放性和PLC功能的對外開放性以及控制系統定制的對外開放性[5]。
超精密磨床主要用于磨削半球面、非球曲面、圓環面等復雜曲面。由于機床具有高精度、高剛度、高穩定性的運動部件及超精密驅動和反饋系統,具有3個軸和1個超精密回轉工作臺,同時具備在位測量補償加工、砂輪在機修整和在線修銳功能,因此可以磨削超精密精度等級的復雜曲面。機床的總體布局如圖1所示。

圖1 機床的總體布局圖
超精密磨床主軸采用氣體靜壓主軸,精度高,熱變形小,回轉速度大。機床的X軸和Z軸采用液體靜壓導軌,導軌采用T形布局,剛度高,承載能力大,運動平穩,直線運動精度高。同時采用了氣浮二維超精密回轉工作臺,即B軸,可以通過三軸或四軸聯動實現復雜曲面的加工。機床X軸,Z軸均采用直線電機驅動,減少了機械傳動的中間環節,增加了系統的動態剛度,減少了由于傳動帶來的跟隨誤差。
該超精密磨床的數控系統是NC嵌入PC式開放式數控系統,即PMAC嵌入工控機中。如圖2所示,該系統的工控機采用研華公司的工控機,控制卡類型為Turbo PMAC PCI Lite。該數控系統主要由上位機工業控制計算機、PMAC運動控制器、伺服電機及其伺服驅動器、檢測反饋元件四部分組成。其核心部分是下位機PMAC控制器。其中上位機與下位機通過PCI總線通訊。同時由ACC-8P擴展卡將PMAC的JMACH接口信號與伺服驅動器和反饋信號連接起來[4]。
上位機工控機具有存儲量大、運行速度快、操作靈活等特點,主要用于后臺管理、人機交互界面的開放性設計、程序編輯、運動處理及運動實時監測等。下位機PMAC具有實時性強、穩定性好、效率高等特點,主要用于前臺控制,包括各軸運動控制、插補運算、刀具補償、程序執行、反饋信號接收和處理以及機床邏輯功能A/D、D/A轉換等。在實際應用中,用戶通過上位機進行系統相關的數據輸入、命令輸入、參數設定、程序編輯等準備工作,然后通過PCI總線與PMAC進行通訊,再由PMAC根據上位機的要求發送指令給相應的伺服驅動器,由伺服驅動器驅動電機來執行相關指令,推動導軌到指定的位置或者使主軸和B軸按照指定轉速轉動。與此同時,光柵尺或者圓光柵作為檢測反饋元件將采集到的數據不斷地反饋給PMAC,通過PMAC的復合反饋功能使系統具有較好的靜動態特性。

圖2 基于PMAC的開放式數控系統硬件結構圖
上位機軟件是基于 Windows操作系統,使用VC++6.0開發的。Delta Tau公司為PMAC上位軟件開發提供了軟件開發包PcommSever。PcommSever是一個包含50多種函數功能的軟件包。上位機與PMAC的通訊和數據交換都可以通過PcommSever中的函數來實現。
該系統軟件分為4個操作窗體,一個父窗體,3個子窗體,每個窗體及其功能都封裝成一個類。軟件結構如圖3所示。父窗體是操作的主界面,如圖4所示。主界面的設計采用了模塊化設計思想,主要包括狀態監測模塊、初始化模塊、程序模塊、運動控制模塊、PID調節模塊、輔助及其他模塊。

圖3 數控系統的軟件結構

圖4 程序主界面
軟件系統的設計充分體現了數控系統的開放性特點,如果該軟件不能滿足用戶需求,用戶可以根據自己的需要開發新的功能模塊。同時,系統軟件作為人機交互界面,可以通過軟件上的簡單操作與PMAC進行數據交換,并將從PMAC得到的信息顯示在主界面上。此外,該軟件的模塊化設計使界面美觀簡潔、操作簡單、友好交互,可以減少操作者的勞動強度,提高工作效率。打開系統軟件首先顯示登陸界面,以提示用戶在操作機床過程中應該注意的問題。然后進入系統的主界面,其中主界面的各個模塊的功能如下所示:
狀態監測模塊:此模塊包括各軸狀態監測模塊,工作模態監測模塊,進給速度倍率監測模塊。各軸狀態監測模塊實時地監測各軸電機是否上電和閉環、各軸是否處于運動狀態以及運動過程中是否觸及限位開關,同時實時動態地反映從PMAC采集回來的X軸和Z軸的實際位置以及B軸和C軸的轉動角度。工作模態監測模塊反映此時機床處于哪種工作模式下,其中包括JOG運動模式、手輪輸入模式、自動運行模式、編輯模式、回零模式以及手動快速運動模式等。進給速度倍率監測模塊用以顯示進給速率值的百分比。
初始化模塊:此模塊的主要功能是給各個電機上電及閉環,其上電和閉環狀態會在狀態監測模塊中顯示出來。
程序模塊:此模塊由兩部分組成,除了主界面上的程序模塊外還包括一個程序編輯子界面 (如圖5所示)。主界面上的程序模塊用于打開下載前不需要進行編輯的程序,然后進行下載和運行。程序編輯子界面用于打開下載前需要編輯的程序,這時候可以通過該子界面打開程序,并對程序進行編輯和保存,同時可以將程序下載到PMAC中或者將程序從PMAC讀取至上位機中。

圖5 程序編輯子界面
運動控制模塊:此模塊包括JOG運動控制模塊、B軸和C軸控制模塊,用以設置各軸的運動位置、運動速度和運動方向,并使各軸進行正反方向運動和回零運動。
PID調節模塊:此模塊用于打開PID調節相關的PmacTurningPro2軟件和PmacPlot32Pro2軟件。此外,該模塊還設置了階躍信號整定和拋物線信號整定過程中可能出現的曲線形狀,并指出供用戶參考的相應調節方法,以提高工作效率。
輔助功能及其他模塊:此模塊包括油泵的開啟和關閉、氣泵和冷卻液的狀態監測以及急停和退出軟件系統。基于安全性考慮,設置了電機閉環前必須開啟油泵和電機處于閉環時不能停止油泵的保護方法。
軟件系統采用顯式鏈接的方式將PcommSever.exe添加到VC++6.0的MFC程序中,由此導入了PcommSever.exe中的封裝類IPmacDevice。軟件系統的各個功能模塊都是基于VC++6.0的MFC程序框架,調用類IPmacDevice中的函數實現的。其中軟件的主要功能是通過 GetResponseEx(dwDevice,FALSE,&pAnswer,&Pstatus)函數實現的[6]。
對于整個系統軟件,要先解決上位機與PMAC的通訊問題。首先在程序中聲明IPmacDevice類型的全局 變 量 PmacDevice, 然 后 通 過 PmacDevice.SelectDevice(NULL,&dwDevice,&pbSuccess)和PmacDevice.Open(dwDevice,&pbSuccess)函數建立通訊[7]。
狀態監測模塊要完成顯示狀態信息和更新界面信息的功能。例如X軸 (即#1軸)的運動狀態監測是調 用 PmacDevice.GetResponseEx(dwDevice,"M140",FALSE,&pAnswer,&pStatus)實現的。該函數向PMAC發送不同的M變量指令,并從PMAC得到響應指令pAnswer,然后將變量pAnswer轉換成int型變量,判斷該int型變量的值得出此時電機是否上電。各軸位置信息的實時更新是通過定時器實現的,以X軸為例,X軸的位置是通過定時器發送WM_TIMER消息,然后在OnTimer()消息響應函數中調用GetResponseEx()函數向PMAC發送"#1p"指令來更新的。此外,模塊中其他狀態監測功能與X軸的運動狀態監測功能的實現方法基本一致。
初始化模塊中,X軸上電功能是通過函數GetResponseEx()來改變變量M7904的值實現的。按下按鈕時,先判斷電機的上電狀態,如果電機未上電,則令M7904=1給電機上電,如果電機已上電,則令M7904=0使電機斷電。同時利用定時器控件來改變當前電機的上電狀態。其他初始化按鈕的實現方法基本類似。
JOG運動控制模塊主要用來進行加工前的對刀工作。速度控制通過改變變量Ix22來實現,其中x表示電機號。運動模式通過函數GetResponseEx()向PMAC發送"#xj:"和"#xj="指令來實現,而正負方向的運動通過向PMAC發送指令"#Xj+"和"#Xj-"來實現。
PID調節模塊程序調用指令:WinExec("C:Program FilesDelta TauPMAC Executive Pro2SuitePmacTuningPro2 PmacTuningPro2.exe",SW _SHOWNORMAL)
程序模塊的部分功能實現指令如下:
程序運行指令:PmacDevice.GetResponseEx(dwDevice,command,0,&pAnswer,&pStatus)
程序終止指令:PmacDevice.GetResponseEx(dwDevice,"A",0,&pAnswer,&pStatus)
程序下載指令:PmacDevice.Download(dwDevice,filepath,1,1,1,1,&pbSuccess);其中 filepath 表示要打開的文件路徑。
程序上傳指令:PmacDevice.GetResponseEx(dwDevice,str,0,&pAnswer,&pStatus);其 中 str=LIST PROG N,N表示需要上傳到主機的程序號。
根據超精密磨床的特點和加工要求,設計開發了一套基于PMAC的開放式數控系統。該數控系統采用上位機和下位機結合的方式,上位機工控機負責后臺管理和人機交互,下位機PMAC負責運動控制和信號處理;采用模塊化的設計方法,基于VC++的MFC基礎類框架,調用PMAC軟件開發包的封裝類,形成了一套功能齊全、交互友好、可以進行二次開發的數控系統軟件。該數控系統開發周期短、成本低、具有良好的開放性,目前已在超精密磨床上投入使用,經過長期可靠運行,可以滿足加工制造的要求。
【1】陳明君,郭偉星,李旦.基于PMAC開放式數控系統的研究與應用新進展[J].航空精密制造技術,2005,41(2):28-31.
【2】PMAC用戶手冊.北京鈞義志成科技發展有限責任公司,2006.
【3】PMAC Quick Reference.DELTA TAU Data Systems Inc.,2009.
【4】Bai J,Sun L,Pan J,et al.Research and Development of Embedded Numerical Control System Based on Digital Signal Processor[C]//Mechatronic and Embedded Systems and Applications,Proceedings of the 2nd IEEE/ASME International Conference on.IEEE,2006:1 -5.
【5】劉毅.基于PMAC的微小型機床數控系統研究[D].哈爾濱:哈爾濱工業大學,2006.
【6】Software Reference Manual.DELTA TAU Data Systems Inc.,2003.
【7】PcommServer Library of PMAC Functions.DELTA TAU Data Systems Inc.,2009.