1 引言
數(shù)控系統(tǒng)作為數(shù)控機(jī)床的核心部件,其功能是接受載體送來的加工信息,經(jīng)計(jì)算和處理后去控制機(jī)床的動作。隨著數(shù)控技術(shù)的不斷發(fā)展,傳統(tǒng)數(shù)控系統(tǒng)由于其采用專用的、封閉式的體系結(jié)構(gòu),已不能適應(yīng)當(dāng)今制造業(yè)市場變化與競爭,也不能滿足現(xiàn)代制造業(yè)向信息化、敏捷制造模式發(fā)展的需要。這就要求CNC 系統(tǒng)必須設(shè)法擺脫其傳統(tǒng)的封閉模式,向開放式方向發(fā)展。我國在最近幾年也開始進(jìn)行開放式CNC 系統(tǒng)的研究,但就總體而論,國內(nèi)開放式數(shù)控系統(tǒng)的開發(fā)還僅僅處于開始階段,還沒有具有自主知識產(chǎn)權(quán)的很成熟的系統(tǒng)。
為解決目前市場需求與封閉控制系統(tǒng)之間的矛盾、開放性不夠的根本缺陷,本文研發(fā)了一套以PMAC 多軸運(yùn)動控制器為核心的開放式數(shù)控系統(tǒng),該系統(tǒng)能滿足現(xiàn)代數(shù)控機(jī)床對開放式數(shù)控系統(tǒng)的要求。
2 PMAC 簡介
美國DELTA TAU 公司推出的PMAC(Programmable Multi-Axis Controller) 全稱為可編程多軸控制器,它是DELTA TAU 公司1990 年推出的基于工控PC機(jī)和Windows 操作系統(tǒng)的多軸、多通道開放式運(yùn)動控制器。該產(chǎn)品提供了運(yùn)動控制、離散控制、內(nèi)務(wù)處理、同主機(jī)的交互等數(shù)控的基本功能。它本身就是一個數(shù)控系統(tǒng),可以單獨(dú)使用。它開放的函數(shù)庫供用戶在Windows 平臺下自行開發(fā)構(gòu)造所需的控制系統(tǒng)。它借助于Motorola 的DSP56001/ 56002 數(shù)字信號處理芯片,可同時控制1 ~ 8 個軸,它的速度、分辨率、帶寬等指標(biāo)遠(yuǎn)優(yōu)于一般的控制器。它甚至可連接MACRO 現(xiàn)場總線的高速環(huán)網(wǎng),直接進(jìn)行生產(chǎn)線的聯(lián)動控制。PMAC 共有四種硬件形式:PMAC - PC ,PMAC - LITE ,PMAC- VME 和PMAC - STD。
PMAC具有開放性的特點(diǎn),給系統(tǒng)集成者和用戶提供了更大的柔性,它允許同一控制軟件在四種不同總線( PC 、LITE 、VME 和STD) 上運(yùn)行,由此提供了多平臺的支持特性,并且每軸可以分別配置成不同的伺服類型和多種反饋類型。
3 系統(tǒng)的硬件結(jié)構(gòu)
CNC 的硬件采用“NC 嵌入PC”的開放式結(jié)構(gòu),如圖1所示。主機(jī)采用工業(yè)PC 機(jī)箱和工控機(jī)電源,PC 主板使用普通商用主板,主頻833MHz ,內(nèi)存128M,硬盤30G,此配置足夠使用戶能使用各種系統(tǒng)軟件以及各種大型CAD/ CAM軟件。CNC的內(nèi)核采用PMAC - LITE型運(yùn)動控制器,以工業(yè)PC作為主機(jī),工控機(jī)的CPU 與PMAC 卡的CPU 構(gòu)成主從式雙微處理器結(jié)構(gòu),兩個CPU各自實(shí)現(xiàn)相應(yīng)的功能,其中PMAC 完成插補(bǔ)運(yùn)算、位置控制、刀補(bǔ)、速度處理、以及PLC 等實(shí)時控制; 工業(yè)PC 則通過調(diào)用Pcomm32 包函數(shù)庫里的相應(yīng)功能函數(shù),實(shí)現(xiàn)數(shù)控系統(tǒng)的基本功能。PMAC 卡插于PC 機(jī)的ISA 總線槽中,接口卡對CNC 控制信息、反饋信息以及PLC 控制信息由進(jìn)行信號轉(zhuǎn)換及隔離。為了實(shí)現(xiàn)PMAC多軸運(yùn)動控制的功能,還需在PMAC板上擴(kuò)展相應(yīng)的I/ O 板、伺服驅(qū)動單元、伺服電機(jī)、編碼器等,最終形成一個完整的控制系統(tǒng)。
圖1 數(shù)控系統(tǒng)結(jié)構(gòu)圖
4 系統(tǒng)的軟件設(shè)計(jì)
在Windows2000 操作系統(tǒng)下,以Visual Basic6. 0為開發(fā)工具采用面向?qū)ο蟮木幊谭椒?充分利用控制卡配套的動態(tài)鏈接庫中的函數(shù),對開放式數(shù)控系統(tǒng)軟件進(jìn)行了開發(fā),實(shí)現(xiàn)了數(shù)控系統(tǒng)的基本功能。具體實(shí)現(xiàn)的功能包括:Windows 風(fēng)格的人機(jī)接口界面、系統(tǒng)初始化預(yù)處理、工作方式的選擇、手輪跟蹤進(jìn)給、機(jī)床狀態(tài)的監(jiān)控、坐標(biāo)位置和轉(zhuǎn)速的實(shí)時顯示、加工程序段及軌跡圖形跟蹤顯示、運(yùn)動程序的編制及下載,數(shù)控程序的譯碼、內(nèi)置PLC功能等。系統(tǒng)軟件主界面如圖2所示。
圖2 系統(tǒng)軟件主界面
4.1 系統(tǒng)初始化
系統(tǒng)的初始化在系統(tǒng)主界面窗口調(diào)入的過程中完成,主要進(jìn)行PMAC 卡參數(shù)的預(yù)置、電機(jī)返回原點(diǎn)以及與服務(wù)器建立TCP/ IP 連接。初始化子過程如下:
Private Sub Form load() Call OpenPmacDevice (0) ′起動PMAC 卡 Call PmacFlush(0) ′清空PMAC 內(nèi)存緩沖區(qū) Call PmacDPRControlPanel (0 , 1) ′置控制面板功能 Call PmacSendLineA(0 , ″# 1j/ # 3j/ # 4j/ # 1hm # 3hm # 4hm″)電機(jī)閉環(huán)控制并返回原點(diǎn)
tcpclient. RemoteHost = ″192. 168. 142. 10″′指定遠(yuǎn)程主機(jī) IP 地址 tcpclient. RemotePort = 1000 初始化端口 tcpclient. Close 關(guān)閉連接 tcpclient. Connect ′請求與主機(jī)連接 End Sub
4.2 工作方式的選擇
本系統(tǒng)設(shè)有7 種工作方式,Auto 、Mdi 、Step 、Handle、Rapid、Jog、Home。各種工作方式間實(shí)現(xiàn)了互鎖,系統(tǒng)不能同時工作于兩種方式下。在機(jī)床運(yùn)行期間,方式選擇無效。圖3 所示的是方式選擇的程序流程圖。方式選擇的實(shí)現(xiàn)使用了一組OptionButton控件,使用Case 語句觸發(fā)各方式,并利用PictureBox控件使用貼圖的方式點(diǎn)亮所選工作方式。方式選擇之前使用條件判斷語句確定機(jī)床是否處于程序運(yùn)動狀態(tài),若是,屏蔽方式選擇操作。
圖3 工作方式選擇流程圖
4.3 手輪跟蹤進(jìn)給( Handle)
手輪直接連接PMAC 的控制面板(Control Panel) 接口J2 ,接好手輪的四個端子:HWCA、HWCB、+ 5V、GND。關(guān)閉伺服,搖動手輪,ENC2 的坐標(biāo)值穩(wěn)定均勻變化。
手輪脈沖編碼器必須占用一個碼盤信號輸入口,跳上短接塊E22 和E23 , 手輪輸入就連接至PMAC 的第2 編碼計(jì)數(shù)器ENC2 ,ENC2 上不能再接任何其它編碼器,而且要保證跳線E26接在1、2 腳上。
控制面板的輸入使能由參數(shù)I2控制,設(shè)置I2=0 ,啟動控制面板輸入功能。
控制面板各輸入點(diǎn)原始狀態(tài)位都為1,當(dāng)前軸的選擇由選擇位FPD0~ FPD3通過外部軸選擇開關(guān)指定,如表1所示。
4.4 機(jī)床狀態(tài)的監(jiān)控、進(jìn)給軸坐標(biāo)值和轉(zhuǎn)速的實(shí)時顯示
這里利用了Timer 定時器控件。系統(tǒng)的每坐標(biāo)每軸的狀態(tài)以及各種參數(shù)變量都存在PMAC 內(nèi)存中,分別用M變量去指向各狀態(tài),可通過操作M變量進(jìn)行狀態(tài)的讀取和參數(shù)的寫入以及完成I/O口的控制,部分程序代碼如下:
Private Sub Timer1 Timer () Dim limit1p ,limit1n ,imit3p ,limit3n , limit4p , limit4n As String Dim PosX, PosY, PosZ, responsex , responsey , responsez As String 3 255 If tcpClient. State = 7 Then 若已與主機(jī)通訊連接,網(wǎng)絡(luò)指示燈閃爍 If Picture12 = LoadPicture () Then Picture12 = LoadPicture (E: \ . . . . . . \ red. bmp) Else : Picture12 = LoadPicture () End If End If Call PmacGetResponseA(0 , limit1p , 2 , m121) 讀取極限狀態(tài) Call PmacGetResponseA(0 , limit1n , 2 , m122) If Val (limit1p) = 1 Or Val (limit1n) = 1 Then If Picture6 = LoadPicture () Then Picture6 = LoadPicture (E: \ . . . \ red. bmp) ′指示極限狀態(tài),紅燈亮 End If Else : Picture6 = LoadPicture () End If Call PmacGetResponseA(0 , PosX, 255 , ″m162″) 取# 1 位置實(shí)際值 Poslabel (0) . Caption = Format (Val (PosX) / 4000/ 32/ 96 , ;# # # # 0. 000″) ;將單位轉(zhuǎn)換為mm Call PmacGetResponseA(0 , responsex , 255 ,m166″) 取# 1 實(shí)際速度 Speedx. Text = Format (Val (responsex) 3 8388608 /3713707 3 60 / 24 , # # # # 0. 000″) rpm
. . . . . . End Sub
4. 5 加工程序段及軌跡圖形跟蹤顯示
同樣也是利用Timer 控件在Timer 事件里執(zhí)行。要將三維圖形二維顯示,可以采用投影映射的方法。軌跡曲線可以看成由無數(shù)條直線組成,加工軌跡實(shí)時跟蹤的時候就采用沿著加工軌跡畫直線的方式,部分程序代碼如下:
Private Sub Timer2 Timer () Dim pro As String 3 255 Call PmacGetResponseA(0 , pro , 255 , ″list pe″)′列出將要 執(zhí)行的下一條程序 display txt (0) . Caption = display txt (1) . Caption display txt (1) . Caption = display txt (2) . Caption display txt (2) . Caption = pro PictureLine.Line - (100 3 (Poslabel (0) . Caption - Poslabel (2) .Caption 3 Cos (45 3 0. 0174532925) / 2) , 100 3 (Poslabel (1) .Caption - Poslabel (2) . Caption 3 Cos (45 3 0. 0174532925) / 2) ) , RGB(255 , 0 , 0) ′加工軌跡實(shí)時顯示 . . . . . . End Sub
4.6 運(yùn)動程序的編制及下載
PMAC 開放式數(shù)控系統(tǒng)的運(yùn)動程序?qū)嶋H上就是軸的運(yùn)動控制程序,在機(jī)床行業(yè)即加工程序。PMAC 的運(yùn)動程序語言有它自己的特點(diǎn),采用類似于BASIC的高級語言編程,以調(diào)用子程序的形式支持機(jī)床行業(yè)的G代碼和M、T、D 代碼編程。
編寫完運(yùn)動程序后,如果是在PWIN 終端窗口編寫的,那么程序已經(jīng)被送到緩沖區(qū)中,可以在終端窗口鍵入“&mBnR”運(yùn)行程序,其中m為坐標(biāo)系號,n 為程序號;如果是在文本編譯器中編寫程序,必須將其下載到PMAC 卡中,部分程序代碼如下:
Private Sub Download Click() Mainform. CommonDialog1.DialogTitle = ″Download A File to PMAC″ Mainform. CommonDialog1. Filter = ″PMAC files | 3 . p ??; 3 . h ; 3 . dat | All files | 3 . 3 ″ Mainform. CommonDialog1. filename = ″″ Mainform. CommonDialog1. ShowOpen If Mainform. CommonDialog1. filename < > ″″Then Call PmacDownloadFile (0 , Mainform. CommonDialog1. filename)
′下載數(shù)控代碼轉(zhuǎn)換程序到PMAC Dim I ,int Fp ,int Fp End As Integer ′定義″\ ″在字符 串中的位置 . . . . . . pro = Mid $(Mainform. CommonDialog1. filename , intFp End + 1 , i) Call PmacSendLineA(0 , ″b″+ pro) ′指定要運(yùn)行的程序號 End If End Sub
由于PMAC 內(nèi)存有限,幾百K以上的大程序不能一次性下載運(yùn)行,這個問題的解決依賴于循環(huán)運(yùn)動程序緩沖區(qū)。循環(huán)運(yùn)動程序緩沖區(qū)允許在程序執(zhí)行期間對程序進(jìn)行下載,并覆蓋已經(jīng)執(zhí)行的程序行,這就能夠連續(xù)執(zhí)行比PMAC 的存儲空間大的程序,并且實(shí)時下載程序行。
每個坐標(biāo)系都有一個循環(huán)緩沖區(qū),為了給一個坐標(biāo)系創(chuàng)建一個循環(huán)緩沖區(qū), 對該坐標(biāo)系選址(&n) 發(fā)出DEFINE ROT{常量} ,其中{常量} 是存儲器中緩沖區(qū)的大小,被定義的緩沖區(qū)在希望加載的程序執(zhí)行點(diǎn)之前的距離應(yīng)該有足夠大的空間。
4.7 數(shù)控程序的譯碼
數(shù)控程序中G代碼和M、T、D 功能指令由G代碼解釋程序、M代碼解釋程序、T代碼解釋程序以及D代碼解釋程序分別進(jìn)行解釋。這四個解釋程序分別以運(yùn)動程序PROG1000、PROG1001、PROG1002 和PROG1003的形式存在,在系統(tǒng)調(diào)試時由PMAC可執(zhí)行程序PEWIN 將它們下載到PMAC 的固定內(nèi)存中,在實(shí)際加工中被PMAC 自動調(diào)用。
PMAC將G、M、T、D代碼作為子程序來調(diào)用,在解釋程序中,可以針對特定的機(jī)床定制代碼。在運(yùn)動程序中遇到G3 代碼時,將會調(diào)用解釋程序PROG1000 ,跳轉(zhuǎn)到行標(biāo)為( 3×1000) 的解釋代碼行,如G17 將跳轉(zhuǎn)到PROG1000 的N17000 行。例如:把G65 定義為螺紋加工循環(huán), 則可以在PROG1000 中加入解釋子程序“N65000...(螺紋加工循環(huán)運(yùn)動程序)...RET”,然后在標(biāo)準(zhǔn)G代碼程序中調(diào)用G65 即可執(zhí)行螺紋加工循環(huán)。
4.8 內(nèi)置PLC 功能的實(shí)現(xiàn)
PMAC自帶的PLC功能,其工作原理同于在工業(yè)控制領(lǐng)域應(yīng)用廣泛的PLC ,都是以循環(huán)邏輯順序來執(zhí)行命令的。但它又不同于其它PLC ,它的編程方式不是其他PLC 的梯圖編程,而是采用類似于BASIC等高級語言的編程方式,無須專用編程器,更加靈活、方便,易于存儲、打印觀看和調(diào)試,并且執(zhí)行速度遠(yuǎn)超過普通PLC。
PMAC 的內(nèi)裝PLC 與NC 共用微處理器,利用微處理器的余力來發(fā)揮PLC 的功能,所以I/ O 點(diǎn)數(shù)較少。PLC 程序在這些方面都非常有用:監(jiān)視模擬和數(shù)字輸入,設(shè)置輸出,發(fā)送信息,監(jiān)視運(yùn)動參數(shù),執(zhí)行命令,改變增益以及開始和停止運(yùn)動。通過PLC 程序可以完全地對PMAC變量和I/ O進(jìn)行操作,并且它具有非同步的特性,因此它能有力地協(xié)助運(yùn)動控制程序完成任務(wù)。
5 結(jié)論
開放式數(shù)控系統(tǒng)是對傳統(tǒng)封閉式數(shù)控系統(tǒng)的突破,是當(dāng)今數(shù)控技術(shù)發(fā)展的趨勢和研究熱點(diǎn),因此本系統(tǒng)的研究是一項(xiàng)跟蹤國際數(shù)控發(fā)展前沿的工作。本系統(tǒng)現(xiàn)已調(diào)試成功,運(yùn)行良好。經(jīng)實(shí)踐證明,該系統(tǒng)是一個可以用于生產(chǎn)的實(shí)用化系統(tǒng),具有較強(qiáng)的設(shè)計(jì)和加工能力。
(審核編輯: 智匯張瑜)
分享