段智敏 徐曉龍
(沈陽理工大學(xué)機(jī)械工程學(xué)院,遼寧沈陽 110159)
開放式數(shù)控系統(tǒng)因其具有模塊化、標(biāo)準(zhǔn)化、可移植性、二次開發(fā)性和網(wǎng)絡(luò)化等特點(diǎn),已經(jīng)成為數(shù)控系統(tǒng)的發(fā)展趨勢。開放式數(shù)控系統(tǒng)能夠在多種平臺上運(yùn)行,可以和其他系統(tǒng)互操作,并能給用戶提供一種統(tǒng)一風(fēng)格的用戶交互界面。通俗地說,開放式數(shù)控系統(tǒng)允許用戶根據(jù)自己的需要進(jìn)行選配和集成,更改或擴(kuò)展系統(tǒng)的功能從而適應(yīng)不同的應(yīng)用需求。而且,組成系統(tǒng)的各部件可以來源于不同的供應(yīng)商,并且相互兼容。
目前,開放式數(shù)控系統(tǒng)使用的運(yùn)動控制器通常以PC硬件插件(運(yùn)動控制卡)的形式與PC構(gòu)成硬件平臺,系統(tǒng)基于PC總線形式。但這種形式無法適應(yīng)未來計算機(jī)技術(shù)的發(fā)展以及硬件的標(biāo)準(zhǔn)化。
本文介紹了一種基于ACR9000獨(dú)立式運(yùn)動控制器的開放式數(shù)控銑削實驗平臺。該系統(tǒng)硬件平臺由PC、ACR9000運(yùn)動控制器以及CYCLONE交流伺服系統(tǒng)構(gòu)成,并以Windows為軟件開發(fā)平臺,MFC為編程語言,開發(fā)上位機(jī)程序。
MFC是微軟提供的基礎(chǔ)類庫,以C++類的形式封裝了Windows API函數(shù)。MFC編程語言具有良好的可視化界面,減少了應(yīng)用程序開發(fā)人員的工作量,縮短了開發(fā)周期。
模塊化是數(shù)控系統(tǒng)開放的基礎(chǔ)?;谀K化的設(shè)計理念,將系統(tǒng)軟件平臺進(jìn)行功能細(xì)分,按照功能的不同各自獨(dú)立成功能模塊。根據(jù)各功能模塊具體實現(xiàn)的功能,設(shè)計出成員變量和成員函數(shù)(即屬性和方法)?;诿嫦?qū)ο蟮乃枷雽⒊橄蟪龅某蓡T變量和成員函數(shù)封裝成特定的類,在應(yīng)用程序中,通過類的實例化即可實現(xiàn)特定功能。同時,如果需要對現(xiàn)有系統(tǒng)進(jìn)行功能的完善或擴(kuò)充,只需修改現(xiàn)有的類或構(gòu)造出新的類,從而實現(xiàn)系統(tǒng)的可升級性和可擴(kuò)展性。
系統(tǒng)軟件平臺主要實現(xiàn)以下幾個功能:控制器通訊、JOG運(yùn)動、X軸Y軸聯(lián)動、位置信息讀取、插補(bǔ)運(yùn)動以及數(shù)控編程等功能。上位機(jī)界面如圖1所示。
ACR9000是美國Parker公司最先進(jìn)的獨(dú)立式運(yùn)動控制器,可控制1到8軸(步進(jìn)或伺服)。具有便利的接口形式和高性能的通訊能力,如10/100 M以太網(wǎng)或USB2.0高速通訊等。ACR9000過人之處在于他能夠與不同品牌的PC和PLC進(jìn)行接口,功能強(qiáng)大的高速DSP(150/75 MHz,32位浮點(diǎn))使 ACR9000完全勝任多任務(wù)伺服控制。本系統(tǒng)使用的控制器型號為P1U2M0,可控制X軸和Y軸運(yùn)動。
ACR9000運(yùn)動控制器提供COM庫供我們開發(fā)上位機(jī)程序(GUI)。該庫名稱為 ComACRServer.tlb,是一個32位OLE自動化(COM)服務(wù)器,支持C++、VB6、C#、VB.NET等開發(fā)語言,庫中的200多個函數(shù)涵蓋了ACR9000的全部主要功能。COM庫中提供的接口函數(shù)可以分為以下4類:
IStatus:用于讀取控制器中的參數(shù)和狀態(tài)等。
IControl:用于對控制器進(jìn)行一些控制操作,實現(xiàn)參數(shù)和狀態(tài)位的寫入等。
ITerminal:用于與控制器之間實現(xiàn)字符串的通訊。
IUtility:實現(xiàn)控制器程序的下載等。
本系統(tǒng)采用Import將COM庫加載到應(yīng)用程序中,通過AfxOleInit函數(shù)對COM庫初始化。同時,根究任務(wù)的需要選擇所需的接口類,利用智能指針定義接口對象,智能指針可使接口對象的創(chuàng)建工作更加簡單,而且它提供了自動銷毀生成的COM對象機(jī)制。最后對定義的接口對象按照COM的方式做一些初始化工作。部分代碼如下:
通訊模塊主要功能是將上位機(jī)界面與控制器連接,從而實現(xiàn)上位機(jī)與控制器的信息傳遞和指令發(fā)送。本系統(tǒng)中上位機(jī)與控制器是通過以太網(wǎng)進(jìn)行連接,因此在通訊之前要設(shè)置IP地址,必須確保主機(jī)IP地址與ACR9000設(shè)在一個網(wǎng)段中(控制器的默認(rèn)IP為192.168.10.40),同時根據(jù)上位機(jī)與控制器的物理層連接方式,確定連接函數(shù)的參數(shù)。在界面中添加連接按鈕,并在連接按鈕的響應(yīng)函數(shù)內(nèi)調(diào)用COM庫中Connect函數(shù),即可實現(xiàn)通訊連接。同理,在斷開按鈕的響應(yīng)函數(shù)內(nèi)調(diào)用Disconnect函數(shù),可將上位機(jī)與控制器的連接斷開。部分主要代碼如下:
該模塊用于讀取控制器中各軸的當(dāng)前位置、實際位置和跟隨誤差等信息?;赩C定時器技術(shù),在通訊模塊內(nèi)設(shè)定定時器時間間隔,并觸法定時器工作。同時,在響應(yīng)函數(shù) OnTimer內(nèi),添加了自定義函數(shù)readParem,用于讀取控制器信息。參數(shù)讀取需調(diào)用IStatus接口中的GetACRCustom函數(shù),通過向控制器發(fā)送查詢字符串來獲取所需的控制器內(nèi)部信息。部分代碼如下:
在X軸Y軸聯(lián)動模塊中,通過對運(yùn)動模式的選擇以及雙軸聯(lián)動速度和各軸位置的設(shè)置,實現(xiàn)手動控制電動機(jī)運(yùn)動。電動機(jī)運(yùn)動控制需調(diào)用IControl接口中的Move函數(shù)。基于ACR-View配置時各軸所屬坐標(biāo)系情況,用nMoveProfile屬性指定Move函數(shù)所作用的坐標(biāo)系。在電動機(jī)運(yùn)動的過程中,通過觸發(fā)ACR9000控制器內(nèi)部指定的BIT位,可以控制運(yùn)動的暫停與繼續(xù),類似于機(jī)床的進(jìn)給保持功能。部分代碼如下:
插補(bǔ)運(yùn)動模塊可實現(xiàn)逐點(diǎn)比較法直線插補(bǔ)、逐點(diǎn)比較法圓弧插補(bǔ)、數(shù)字積分法直線插補(bǔ)以及數(shù)字積分法圓弧插補(bǔ),如圖2所示?;诓逖a(bǔ)算法及相關(guān)參數(shù)的設(shè)置,可實現(xiàn)插補(bǔ)運(yùn)動仿真,圖3所示為DDA圓弧插補(bǔ)仿真實例。在伺服驅(qū)動器的位置控制模式下,通過上位機(jī)對控制器的脈沖及方向控制,可實現(xiàn)電動機(jī)的插補(bǔ)運(yùn)動,插補(bǔ)功能主要流程如圖4所示。
以DDA圓弧插補(bǔ)為例,部分代碼如下:
數(shù)控編程模塊可以實現(xiàn)數(shù)控指令的輸入、修改、插入和刪除。圖5所示為數(shù)控編程界面,并根據(jù)數(shù)控程序?qū)崿F(xiàn)加工軌跡仿真和電動機(jī)控制,如圖6所示。
數(shù)控模塊的核心在于數(shù)控代碼的轉(zhuǎn)換,而代碼轉(zhuǎn)化的重點(diǎn)在于對數(shù)控指令的信息提取與保存。本系統(tǒng)對數(shù)控指令的信息提取是通過構(gòu)造函數(shù)實現(xiàn)的,根據(jù)提取信息的不同構(gòu)造出不同的成員函數(shù),這樣既解決了信息提取問題,又為系統(tǒng)升級提供便利。將提取好的信息保存在動態(tài)數(shù)組中,這不僅保存了數(shù)控指令中的數(shù)據(jù)信息,又為查詢上一數(shù)控指令行中的所需數(shù)據(jù)提供便利。在ACR9000運(yùn)動控制器自帶的ACROBasic語言中可以找出與數(shù)控指令功能相同的指令,如MOV 與 G01、CIRCW 與 G02、CTRCCW 與 G03、M02 與ENDP等?;谶@種對應(yīng)關(guān)系,可將數(shù)控指令轉(zhuǎn)換成ACROBasic指令。然后將轉(zhuǎn)換好的指令保存在文本文檔內(nèi),并發(fā)送至控制器中。最后,通過觸發(fā)控制器內(nèi)部的BIT位實現(xiàn)程序讀取,進(jìn)而控制電動機(jī)運(yùn)轉(zhuǎn)。部分代碼如下:
本文介紹了系統(tǒng)軟件平臺的構(gòu)建方式以及各功能模塊的具體實現(xiàn),充分利用ACR9000運(yùn)動控制器所提供的COM庫和設(shè)備自帶的ACROBasic語言,實現(xiàn)了上位機(jī)通訊、電機(jī)控制、代碼解釋等功能。
本系統(tǒng)已調(diào)試成功,各模塊運(yùn)行狀況良好,滿足實驗要求,該系統(tǒng)將應(yīng)用于我校機(jī)電控制實驗室的教學(xué)實驗中。下一步會根據(jù)教學(xué)需要進(jìn)一步完善和提升軟件系統(tǒng)功能。
[1]周舟,張洛平.基于運(yùn)動控制器的開放式數(shù)控系統(tǒng)[J].機(jī)床與液壓,2003(3):94-95.
[2]孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.
[3]趙萬軍,鄧正華.基于VC++的數(shù)控DDA圓弧插補(bǔ)軌跡仿真[J].制造業(yè)自動化,2012,34(3):125 -127.
[4]朱玉璽,崔如春,鄺小磊.計算機(jī)控制技術(shù)[M].北京:電子工業(yè)出版社,2010.
[5]劉瑛,謝富春.基于UMAC的開放式數(shù)控平臺的構(gòu)建與應(yīng)用[J].制造技術(shù)與機(jī)床,2008(12):93-95.
[6]張艷婷,沈曉紅.基于ACR9000的開放式數(shù)控系統(tǒng)軟件平臺研究[J].制造業(yè)自動化,2011,37(11):117 -121.
[7]許小明,王碩桂.基于PC的開放式數(shù)控系統(tǒng)代碼編譯器的開發(fā)[J].機(jī)床與液壓,2009,37(11):41 -44.