李理 周華磊
武漢華中數(shù)控股份有限公司
國家高技術(shù)研究發(fā)展計(jì)劃(863計(jì)劃)課題“基于CMC的裝備數(shù)控系統(tǒng)的研制與應(yīng)用”(2012AA041706)
【摘要】 本文基于的是以CMC運(yùn)動控制芯片為核心控制器的數(shù)控裝置,重點(diǎn)介紹其應(yīng)用于機(jī)床控制及加工上的PLC編程部分。CMC運(yùn)動控制芯片是國內(nèi)自主研發(fā)的一款帶G代碼解釋器及運(yùn)動控制硬核的MCU芯片,可應(yīng)用于輕量級運(yùn)動控制場景,其PLC部分支持IEC61131-3標(biāo)準(zhǔn)編程語言。本文中所有PLC代碼部分均采用ST語言編寫,主要包含了機(jī)床安全運(yùn)行檢查及急??刂啤C(jī)床回零、MODBUS通信、G代碼調(diào)度、M代碼實(shí)現(xiàn)、機(jī)床手動控制等部分。
【關(guān)鍵詞】機(jī)床PLC; MODBUS通信; CMC
[Abstract] This paper is based on the CMC motion control chip as the core controller of the numerical control device, focusing on its application in the PLC programming part of the machine tool. CMC motion control chip is an independent research and development MCU with hardcore of G code interpreter and motion control unit which can be used in lightweight motion control scene, The PLC part supports IEC61131-3 standard programming language. In this paper, all the PLC code using ST language writing, mainly includes the machine safety operation inspection and emergency stop control, machine back to zero, Modbus communication realization, G code & M code scheduling, machine tool manual controlling etc.
[Keywords] machine tool PLC programming; MODBUS communication; CMC
在數(shù)控系統(tǒng)中,PLC編程為通用平臺的個(gè)性化應(yīng)用提供了簡單快速的開發(fā)接口,PLC以其簡單、高效、可視化等優(yōu)點(diǎn),便于技術(shù)人員在應(yīng)用現(xiàn)場進(jìn)行編程以滿足控制需求。本文以CMC運(yùn)動控制芯片為平臺,描述了在該平臺下進(jìn)行系統(tǒng)搭建所涉及的各個(gè)方面,包括CMC運(yùn)動控制芯片的介紹,整個(gè)數(shù)控系統(tǒng)的框架,編程語言及工具的介紹,以及重點(diǎn)介紹了其PLC邏輯與控制功能的實(shí)現(xiàn)[1][2]。
1.CMC運(yùn)動控制芯片
CMC運(yùn)動控制芯片為一款國產(chǎn)研發(fā)的帶運(yùn)動控制功能的MCU,最高頻率可達(dá)50MHz。芯片集成了Flash、SRAM、通用定時(shí)器、PLL、實(shí)時(shí)鐘,以及以太網(wǎng)MAC、UART、CAN、SPI、I2C 等多種通信接口。
CMC運(yùn)動控制芯片是將組態(tài)處理、程序存儲、信號輸入輸出、控制算法、通訊接口等全部集成在一個(gè)芯片中的產(chǎn)品,實(shí)現(xiàn)的主要功能可以簡述為:片內(nèi)邏輯控制和運(yùn)動控制,程序處理及調(diào)度管理,數(shù)字量信號處理,多種數(shù)據(jù)接口通信。
本文中所涉及的數(shù)控裝置是以CMC運(yùn)動控制芯片為核心、板載外圍電路的控制單元,包括I/O、串口、AD、DA、進(jìn)給軸等。
2.編程及語言
CMC運(yùn)動控制芯片上位機(jī)PLC編輯軟件能夠支持IEC61131-3所包含的5種編程語言,由于ST語言與通用計(jì)算機(jī)編程語言C語言語法格式更加類似,學(xué)習(xí)成本較低,更利于學(xué)校掌握與熟悉,本文所涉及的所有代碼均采用ST編程語言編寫。
CMC芯片制造商提供的PLC編輯軟件還能夠支持?jǐn)?shù)控系統(tǒng)G代碼編程、運(yùn)行調(diào)試、變量監(jiān)控、常用控制功能塊調(diào)用等,方便開發(fā)與調(diào)試。
程序編寫完后需要進(jìn)行編譯,由CMC組態(tài)軟件翻譯成CMC運(yùn)動控制芯片內(nèi)部運(yùn)動控制單元所能識別的指令,并通過網(wǎng)口通訊下載到CMC芯片的代碼存儲區(qū)。
3.系統(tǒng)框架
基于CMC運(yùn)動控制芯片的數(shù)控系統(tǒng)架構(gòu)如下圖所示:
圖1 CMC數(shù)控系統(tǒng)框架圖
整個(gè)系統(tǒng)框架中,CMC運(yùn)動控制芯片為系統(tǒng)中的主控芯片,外部掛接三個(gè)伺服驅(qū)動器,用于進(jìn)行位置控制,并使用一個(gè)變頻器用于主軸速度控制。運(yùn)動控制器包含32路外部信號輸入及32路外部信號輸出,用于檢測機(jī)床限位、回零、報(bào)警,控制機(jī)床上電、驅(qū)動器使能、刀架控制及潤滑、冷卻等邏輯功能。
CMC運(yùn)動控制器自身并不具備圖形設(shè)備接口,系統(tǒng)中使用網(wǎng)絡(luò)通訊連接HMI設(shè)備,通過MODBUS/TCP協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互、代碼下載等功能。HMI從CMC運(yùn)動控制器中獲取系統(tǒng)運(yùn)行的相關(guān)狀態(tài)及信息,顯示給用戶,同時(shí)HMI負(fù)責(zé)G代碼存儲、編輯、編譯等工作。
另外,CMC運(yùn)動控制器通過SPI總線連接數(shù)控系統(tǒng)功能鍵盤,CMC運(yùn)動控制器將鍵盤點(diǎn)位映射到PLC層,通過編程,實(shí)現(xiàn)鍵盤控制功能。
4 系統(tǒng)PLC編程
4.1 進(jìn)給軸手動控制
機(jī)床在使用過程中,需要手動對進(jìn)給軸進(jìn)行移動。CMC運(yùn)動控制芯片配套的組態(tài)軟件直接提供了單軸運(yùn)動控制功能塊,以實(shí)現(xiàn)當(dāng)按下軸方向移動按鍵時(shí),調(diào)用PLC功能塊實(shí)例,根據(jù)操作需求,傳入運(yùn)動控制參數(shù),以控制進(jìn)給軸移動速度、方向及進(jìn)行軸選擇等。以下代碼片段為實(shí)例化后的單軸運(yùn)動控制功能塊實(shí)例代碼:
MC_SingleAxis_Inst(
Axis := axisSel,
Mode := axisMode,
Direction := axisDir,
InitialVelocity := 10000,
StableVelocity := axisSpeed,
Acc := 500000,
Pulses := axisPulse
);
PLC中根據(jù)功能按鍵的輸入請求,實(shí)時(shí)地傳入不同參數(shù),以適應(yīng)操作需求。
4.2 回參考點(diǎn)
機(jī)床在移動軸的正負(fù)方向都安裝了觸點(diǎn)零位開關(guān),開關(guān)量信號以外部I/O信號的方式接入至CMC運(yùn)動控制器。當(dāng)回零過程被激活,通過組態(tài)軟件進(jìn)行PLC編程,首先控制進(jìn)給軸快速移動至對應(yīng)軸的觸點(diǎn)零點(diǎn)開關(guān)位置,觸發(fā)觸點(diǎn)開關(guān)后,低速緩慢朝反方向移動直至觸點(diǎn)開關(guān)彈開,然后以更低的速度往回零方向移動,直到再次觸發(fā)觸點(diǎn)開關(guān)后,即完成回零過程。
通過實(shí)際測量,發(fā)現(xiàn)通過上述方法進(jìn)行回零,機(jī)床并不能每次都能回到同一個(gè)位置,誤差會在±0.3mm左右,這是因?yàn)榛亓銠z測使用的輕觸開關(guān)是機(jī)械結(jié)構(gòu),并且由于回零速度差異,所以并不能對回零位置做精準(zhǔn)定位。為了提高回零精度,可以在系統(tǒng)側(cè)接入電機(jī)碼盤Z脈沖信號,由于電機(jī)每運(yùn)轉(zhuǎn)一圈就會發(fā)出一個(gè)固定位置的Z脈沖信號,通過檢測該Z脈沖,就可以為系統(tǒng)提供一個(gè)更加精準(zhǔn)的位置參考。
在完成第一步的回零過程后,使進(jìn)給軸電機(jī)繼續(xù)往回零方向以超低的速度移動,并實(shí)時(shí)檢測電機(jī)碼盤Z脈沖信號,檢測到Z脈沖信號后,立即停止移動。至此,整個(gè)回零過程才算真正完成。以此回零方式實(shí)測回零精度在±0.01mm以內(nèi),足以滿足實(shí)際應(yīng)用需求。
圖2 回零過程
4.3 限位急停及超程解除
機(jī)床在移動軸正負(fù)方向的極限位置都安裝了限位開關(guān),例如銑床有X軸正/負(fù)限位、Y軸正/負(fù)限位及Z軸正/負(fù)限位這六個(gè)限位信號,這些信號以外部I/O信號的方式接入至CMC運(yùn)動控制器,通過PLC編程,實(shí)時(shí)監(jiān)測限位信號,當(dāng)限位觸發(fā)時(shí),立刻關(guān)閉驅(qū)動器使能信號,并調(diào)用PLC功能塊,使得CMC運(yùn)動控制器停止脈沖輸出,并清除內(nèi)部運(yùn)動控制單元相關(guān)狀態(tài)標(biāo)識。
限位急停后,當(dāng)PLC中捕獲到超程解除按鍵被按下,電機(jī)將被重新使能,同時(shí)PLC程序只允許移動周向被限位方向的反方向運(yùn)行,繼續(xù)往限位方向移動的請求將被忽略。當(dāng)機(jī)床移動至限位信號釋放的位置后,超程解除完成,限位急停功能將重新啟動。
圖3 限位急停與超程解除流程圖
4.4 G代碼調(diào)度及M代碼及實(shí)現(xiàn)
CMC運(yùn)動控制芯片自帶G代碼解釋器硬核,內(nèi)部含有16塊緩存區(qū)用于存儲編譯后的G代碼數(shù)據(jù),每個(gè)緩沖區(qū)大小為64KB。上位機(jī)通過網(wǎng)絡(luò)傳輸,將交叉編譯后的G代碼傳送至緩沖區(qū),若G代碼數(shù)據(jù)量比較大,或者需要進(jìn)行存儲M代碼,則會在上位機(jī)中,以M代碼為間隔,將G代碼進(jìn)行切片,并將切片后的G代碼以及M代碼片段分別裝入緩存區(qū)塊中,如下圖所示:
圖4 G代碼、M代碼執(zhí)行過程
在PLC中可以調(diào)用功能塊獲取當(dāng)前G代碼執(zhí)行狀態(tài)以及當(dāng)前運(yùn)行的是哪一段G代碼。當(dāng)檢測到當(dāng)前段G代碼執(zhí)行完畢后,此時(shí)與當(dāng)前G代碼段相對應(yīng)的M代碼段將會被自動加載到特殊功能寄存器SFR中,PLC從SFR中逐個(gè)讀取M指令碼,并做相應(yīng)動作。若當(dāng)前M指令段的所有M指令都執(zhí)行結(jié)束后,如果沒有遇到M30指令,則PLC調(diào)用功能塊,將下一個(gè)G代碼段的段號填入功能塊入口后,下一段G代碼便開始執(zhí)行,該段G代碼執(zhí)行結(jié)束后便重復(fù)上面的M代碼執(zhí)行過程。G代碼段和M代碼段如此交替執(zhí)行,直至讀到M30指令,整個(gè)G代碼執(zhí)行結(jié)束。
4.5 Modbus/Tcp通信
系統(tǒng)上下位機(jī)通信物理層使用100M以太網(wǎng),采用Modbus/Tcp協(xié)議通信,CMC組態(tài)軟件提供Modbus/Tcp功能塊,如下面代碼段所示:
modbusWordWrite (
ID,
Dtype,
Addr,
Size,
Data0, Data1, Data2, Data3,
Data4, Data5, Data6, Data7,
Data8, Data9, Data10, Data11,
Data12, Data13, Data14, Data15
);
上下位機(jī)之間協(xié)商好ID、地址及相應(yīng)數(shù)據(jù)便可直接進(jìn)行數(shù)據(jù)交互。下位機(jī)CMC運(yùn)動控制芯片將系統(tǒng)運(yùn)行相關(guān)信息,如當(dāng)前模式、運(yùn)行狀態(tài)、位置信息等通過該功能塊周期性的傳送至上位機(jī)HMI顯示。
4.6 主軸控制
機(jī)床上的主軸需要進(jìn)行速度控制,一般都是使用變頻器驅(qū)動。變頻器的輸入為0~10V的模擬量電壓,變化的模擬量輸入將導(dǎo)致變頻器電源輸出端頻率的變化,進(jìn)而使交流電機(jī)的運(yùn)行速度隨之變化。
CMC運(yùn)動控制器板載4路16bits模擬量輸出,經(jīng)過信號調(diào)理電路后模擬量輸出范圍為-10V~+10V。在PLC中,對接入主軸變頻器的那一路模擬量輸出進(jìn)行數(shù)據(jù)寫入便可實(shí)現(xiàn)主軸電機(jī)速度的線性控制。
在實(shí)際PLC編程中,將0~10V輸出均分為五個(gè)等級,利用MCP鍵盤的波段開關(guān)實(shí)現(xiàn)五級調(diào)速,以滿足不同材質(zhì)加工料件的切削需求。
5 結(jié)束語
本文所提到的所有內(nèi)容均在實(shí)際機(jī)床上進(jìn)行過加工驗(yàn)證,事實(shí)表明,該套系統(tǒng)可以完成常見的車床、銑床乃至加工中心的零部件加工,PLC部分所實(shí)現(xiàn)的功能也能滿足機(jī)床操作的基本需要。
[1]彭瑜,何衍慶. IEC61131-3編程語言及應(yīng)用基礎(chǔ)[M]. 北京:機(jī)械工業(yè)出版社,2009
[2]郇極,靳陽,肖文磊等. 基于工業(yè)控制編程語言IEC61131-3的數(shù)控系統(tǒng)軟件設(shè)計(jì)[M]. 北京:北京航空航天大學(xué)出版社,2011
致謝
基金項(xiàng)目:國家高技術(shù)研究發(fā)展計(jì)劃(863計(jì)劃)課題“基于CMC的裝備數(shù)控系統(tǒng)的研制與應(yīng)用”(2012AA041706)。