(中山市拓普康自控設(shè)備技術(shù)有限公司,廣東 528400)
本文基于ARM9TDMI+FPGA的嵌入式硬件平臺(tái)和eCOS嵌入式實(shí)時(shí)操作系統(tǒng)設(shè)計(jì)彈簧機(jī)控制器,實(shí)現(xiàn)彈簧機(jī)系統(tǒng)高精度的位置控制。比之于臺(tái)灣的基于工控PC板的系統(tǒng),成本更低,集成度更高,運(yùn)行更穩(wěn)定可靠。
本設(shè)計(jì)系列化產(chǎn)品目前已經(jīng)產(chǎn)業(yè)化,以高精度、高可靠性、高性價(jià)比的巨大優(yōu)勢(shì)打破了臺(tái)灣彈簧機(jī)控制器在國(guó)內(nèi)彈簧機(jī)市場(chǎng)的壟斷格局,顯著提高了國(guó)產(chǎn)彈簧機(jī)械的市場(chǎng)競(jìng)爭(zhēng)力,創(chuàng)造了顯著的經(jīng)濟(jì)效益和社會(huì)效益。
彈簧機(jī)控制器采用整體式結(jié)構(gòu),4軸伺服電機(jī)控制,總體結(jié)構(gòu)示意圖如圖1所示。

圖1 彈簧機(jī)系統(tǒng)組成
彈簧機(jī)控制器主機(jī)提供以下接口:
伺服驅(qū)動(dòng)器控制接口:5個(gè)軸控制接口,提供包括脈沖+方向輸出、PC信號(hào)輸入、伺服報(bào)警信號(hào)輸入等;
I/O接口:24輸入/16輸出,輸入接口包括探針、急停、倍率開關(guān)(4個(gè)輸入)、送線架報(bào)警信號(hào)、啟動(dòng),輸出信號(hào)包括8個(gè)汽缸;
人機(jī)接口:按鍵輸入,LCD顯示,USB接口;
MPG接口:支持手持操作盒接入,包括手搖脈沖發(fā)生器信號(hào)接入和軸選、倍率等信號(hào)的接入。
控制器硬件部分分為如下主要部件:CPU模塊、FPGA模塊、IO接口、人機(jī)接口,結(jié)構(gòu)框圖如圖2所示。

圖2 硬件結(jié)構(gòu)框圖
CPU模塊采用ARM9TDMI為核心處理器,F(xiàn)PGA實(shí)現(xiàn)運(yùn)動(dòng)控制所需輸入信號(hào)解碼、輸出信號(hào)編碼,實(shí)現(xiàn)多軸聯(lián)動(dòng)實(shí)時(shí)運(yùn)動(dòng)控制輸出。
IO接口提供信號(hào)調(diào)理功能:將CPU和FPGA的輸出信號(hào)調(diào)理成彈簧機(jī)各組件設(shè)備所能接受的信號(hào)、將設(shè)備的反饋信號(hào)調(diào)理使得FPGA和CPU可以處理。
人機(jī)接口為用戶提供操作使用系統(tǒng)的接口,顯示彈簧機(jī)實(shí)時(shí)運(yùn)行狀態(tài)。
軟件平臺(tái)基于eCOS實(shí)時(shí)多任務(wù)操作系統(tǒng),由各功能模塊有機(jī)聯(lián)系而構(gòu)成。軟件結(jié)構(gòu)框圖如圖3所示。

圖3 軟件結(jié)構(gòu)框圖
底層驅(qū)動(dòng)層為圖形系統(tǒng)和文件系統(tǒng)提供底層驅(qū)動(dòng),提供eCOS的任務(wù)調(diào)度管理,提供對(duì)USB、鍵盤等接口的驅(qū)動(dòng)。通過(guò)eCOS實(shí)時(shí)多任務(wù)管理,將應(yīng)用軟件層各模塊和硬件驅(qū)動(dòng)層聯(lián)系起來(lái),組成系統(tǒng)軟件。
應(yīng)用軟件大致可分為三個(gè)主要任務(wù),即人機(jī)界面、數(shù)據(jù)處理和實(shí)時(shí)控制。這三個(gè)任務(wù)的主要功能如下:
1)人機(jī)界面
人機(jī)界面作為系統(tǒng)和用戶的交互平臺(tái),一方面接受用戶所編寫的程序和指令,另一方面將系統(tǒng)的加工信息反饋給用戶。人機(jī)界面采用類Windows界面的MiniGUI圖形庫(kù)。
人機(jī)界面的功能包括程序的編輯、顯示和管理,系統(tǒng)運(yùn)行狀態(tài)的顯示,參數(shù)管理,系統(tǒng)權(quán)限管理,在線幫助,U盤操作和限時(shí)停機(jī)等功能。
2)數(shù)據(jù)處理
數(shù)據(jù)處理主要是將加工程序或指令進(jìn)行解釋、歸一化的處理,為實(shí)時(shí)控制模塊提供可操作的數(shù)據(jù)。用戶通過(guò)指令式表格的形式編輯程序,支持順序指令、循環(huán)指令和跳轉(zhuǎn)指令,將解釋完成的數(shù)據(jù)傳送給實(shí)時(shí)任務(wù)。
程序的最大長(zhǎng)度為500行,在執(zhí)行完成之后返回程序首行繼續(xù)執(zhí)行。數(shù)據(jù)處理任務(wù)采用一次性將文件內(nèi)容讀入緩沖的形式,在本執(zhí)行周期內(nèi)數(shù)據(jù)不會(huì)改變。在執(zhí)行過(guò)程中,若用戶修改程序,則在下個(gè)執(zhí)行周期有效。數(shù)據(jù)處理執(zhí)行流程如圖4所示。

圖4 數(shù)據(jù)處理流程圖
3)實(shí)時(shí)控制
實(shí)時(shí)控制作為系統(tǒng)的總控任務(wù),是應(yīng)用軟件中優(yōu)先級(jí)最高的任務(wù)。實(shí)時(shí)控制需要完成的功能包括:
(1)系統(tǒng)狀態(tài)和工作方式的處理,保證系統(tǒng)狀態(tài)的唯一性和確定性;
(2)自動(dòng)方式下的加減速處理和插補(bǔ)計(jì)算;
(3)手動(dòng)方式下的處理,包括手動(dòng)進(jìn)給的加減速;
(4)原點(diǎn)方式下的返回原點(diǎn)處理;
(5)測(cè)試方式下的運(yùn)行處理;
(6)I/O端口的管理。
實(shí)時(shí)控制任務(wù)每4ms(或者2ms)調(diào)度執(zhí)行一次,且優(yōu)先級(jí)最高;數(shù)據(jù)處理任務(wù)每16ms調(diào)度執(zhí)行一次;人機(jī)界面作為主程序,不參與系統(tǒng)任務(wù)的調(diào)度,作為背景程序始終在空閑時(shí)間內(nèi)運(yùn)行。這樣,系統(tǒng)的調(diào)度周期是確定的、固定的,每個(gè)任務(wù)按照設(shè)定的時(shí)間節(jié)拍運(yùn)行。
系統(tǒng)的4ms定時(shí)中斷由硬件FPGA提供,不僅能夠保證任務(wù)運(yùn)行節(jié)拍的一致性,而且時(shí)鐘中斷源保證唯一性。這樣,系統(tǒng)將不會(huì)在中斷程序中處理這些任務(wù),只是在中斷服務(wù)程序中把這些任務(wù)喚醒,然后就退出中斷,既可以提高系統(tǒng)的響應(yīng)能力,又可以從軟件方面保證系統(tǒng)的準(zhǔn)確定時(shí)。
不同的彈簧機(jī)機(jī)型需要不同的軸控配置,二軸控制應(yīng)用包括凸輪軸和送線軸,三軸控制包括凸輪軸、轉(zhuǎn)芯軸和送線軸,五軸控制是在三軸控制的基礎(chǔ)上增加卷取軸和夾耳軸,或者是上、下切刀軸。本設(shè)計(jì)最大支持5軸控制,根據(jù)具體的彈簧機(jī)機(jī)型需求,控制軸數(shù)可在1到5軸之間靈活設(shè)置,對(duì)應(yīng)著運(yùn)行不同的控制程序,以滿足具體的應(yīng)用需求。
按照行業(yè)規(guī)范軸的指示代號(hào)有固定的約定:X軸表示凸輪軸、Y軸表示送線軸、Z軸表示轉(zhuǎn)芯軸、A軸表示卷取軸和B軸表示夾耳軸。如果不需要其中某軸參與運(yùn)動(dòng),可直接通過(guò)面板按鈕禁止該軸。采用這種方法,機(jī)床的調(diào)試比較容易,不需要進(jìn)行過(guò)多的參數(shù)設(shè)置。
彈簧機(jī)控制器的運(yùn)動(dòng)控制,每個(gè)軸可以單獨(dú)運(yùn)動(dòng),也可以進(jìn)行聯(lián)動(dòng)。各軸之間的運(yùn)動(dòng)關(guān)系均為直線插補(bǔ),在運(yùn)動(dòng)過(guò)程中根據(jù)具體彈簧成型控制的需求,需要檢測(cè)探針的信號(hào)。
程序運(yùn)行時(shí),先將整個(gè)程序讀入緩沖,順序解釋指令并將數(shù)據(jù)填充到插補(bǔ)緩沖區(qū),在數(shù)據(jù)處理的過(guò)程中需要注意以下四個(gè)問(wèn)題:
1)運(yùn)動(dòng)指令的區(qū)分,是進(jìn)行聯(lián)動(dòng)還是順序運(yùn)動(dòng),那么需要一個(gè)標(biāo)志給插補(bǔ);
2)遇到條件跳轉(zhuǎn)指令時(shí),需要等待插補(bǔ)的運(yùn)行結(jié)果再?zèng)Q定處理順序;
3)遇到循環(huán)指令時(shí),直接將指令解釋后送給插補(bǔ)緩沖區(qū);
4)當(dāng)運(yùn)行過(guò)程中修改程序時(shí),待整個(gè)程序執(zhí)行完之后將文件重新載入。
實(shí)時(shí)控制部分取得數(shù)據(jù)之后,根據(jù)軸的運(yùn)動(dòng)關(guān)系進(jìn)行插補(bǔ)。插補(bǔ)過(guò)程中有兩種形式:一種是聯(lián)動(dòng),相關(guān)軸進(jìn)行直線插補(bǔ);另一種是順序運(yùn)動(dòng),即某個(gè)軸先直線運(yùn)動(dòng),待運(yùn)動(dòng)完成之后再執(zhí)行其他軸的運(yùn)動(dòng)。在有些過(guò)程中,需要檢測(cè)探針的信號(hào),如果探針信號(hào)檢測(cè)到,則跳到下一行執(zhí)行;如果探針信號(hào)未檢測(cè)到,則給出記錄探針失敗次數(shù),達(dá)到探針失敗設(shè)定最大值時(shí)報(bào)警。運(yùn)動(dòng)控制采用前直線加減速方式,段和段之間需要準(zhǔn)停控制,不采用前瞻處理。在運(yùn)動(dòng)過(guò)程中,可以通過(guò)手輪實(shí)時(shí)修改倍率,倍率范圍是0~300%。
控制器的數(shù)據(jù)處理過(guò)程大致可分為4部分,如圖5所示。
1)文件信息
文件信息主要是人機(jī)界面將數(shù)據(jù)傳送給數(shù)據(jù)處理,主要包括文件名稱,數(shù)據(jù)處理任務(wù)在得到文件名稱之后,讀取文件內(nèi)容,開始進(jìn)行數(shù)據(jù)處理。
如果在運(yùn)行過(guò)程中,用戶修改了程序內(nèi)容,那么待收到修改完成信號(hào)之后,人機(jī)界面將該標(biāo)志傳給數(shù)據(jù)處理,數(shù)據(jù)處理在整個(gè)程序執(zhí)行完后,重新讀取文件內(nèi)容。

圖5 數(shù)據(jù)處理模塊圖
系統(tǒng)不支持從文件任意行啟動(dòng),每次按下“啟動(dòng)”按鈕之后,數(shù)據(jù)處理任務(wù)從文件首行開始進(jìn)行處理。
2)程序數(shù)據(jù)
程序數(shù)據(jù)是數(shù)據(jù)處理任務(wù)將文件內(nèi)容進(jìn)行處理之后的數(shù)據(jù),并且傳送給實(shí)時(shí)控制任務(wù)。數(shù)據(jù)處理在將探針檢測(cè)信號(hào)送給實(shí)時(shí)控制時(shí),需要等待運(yùn)行結(jié)果;另一個(gè)需要實(shí)時(shí)控制任務(wù)給出程序啟動(dòng)標(biāo)志,這個(gè)數(shù)據(jù)結(jié)構(gòu)比較簡(jiǎn)單,還可以使用函數(shù)調(diào)用的方式實(shí)現(xiàn),這里就不再列出了。
3)非易失數(shù)據(jù)
數(shù)據(jù)用來(lái)保存一些需要掉電記憶的數(shù)據(jù),比如設(shè)定的零件數(shù)和已完成的零件數(shù),當(dāng)前載入的文件名稱,數(shù)據(jù)量應(yīng)該比較少。這部分?jǐn)?shù)據(jù)實(shí)時(shí)寫入NVRAM中,掉電不會(huì)丟失。
4)實(shí)時(shí)信息
這部分?jǐn)?shù)據(jù)是實(shí)時(shí)運(yùn)行過(guò)程中的信息,其數(shù)據(jù)結(jié)構(gòu)如下所示:

5)其他數(shù)據(jù)
彈簧機(jī)控制器不需要進(jìn)行刀偏和刀補(bǔ),所以這方面的數(shù)據(jù)文件可以不用考慮。參數(shù)以數(shù)據(jù)文件的形式進(jìn)行存儲(chǔ),上電后系統(tǒng)對(duì)參數(shù)文件進(jìn)行校驗(yàn)。
由于該系統(tǒng)指令相對(duì)比較簡(jiǎn)單,面對(duì)用戶的指令為表格式編程指令,而后臺(tái)程序指令格式可描述為:每行的程序使用字母加數(shù)值的方式組成指令字、指令字間有空格分割,每行由換行符號(hào)分割,文件結(jié)束標(biāo)志代表程序的結(jié)束。
本文設(shè)計(jì)的彈簧機(jī)控制器,采用了嵌入式平臺(tái),經(jīng)實(shí)際驗(yàn)證,比市場(chǎng)上原來(lái)的主流產(chǎn)品工作更加穩(wěn)定,且成本更低,有效推動(dòng)了行業(yè)的發(fā)展,使得國(guó)內(nèi)彈簧加工行業(yè)降低了總體設(shè)備開銷,更具競(jìng)爭(zhēng)力。同時(shí)該系列產(chǎn)品也為公司帶來(lái)良好的經(jīng)濟(jì)效益。
[1]周永強(qiáng).三軸數(shù)控彈簧機(jī)電氣控制系統(tǒng)的設(shè)計(jì)[J].機(jī)電工程技術(shù)2014(9):114-117.
[2]羅文彪,丘雨斌.數(shù)控彈簧機(jī)控制系統(tǒng)的設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2006(5):67-68.
[3]深圳市研控自動(dòng)化科技有限公司. 研控伺服驅(qū)動(dòng)器在數(shù)控彈簧機(jī)上的應(yīng)用[J].伺服控制,2012(3):37-38.
[4]常躍軍.基于一種新型數(shù)控?zé)峋韽椈蓹C(jī)的成形設(shè)計(jì)[J].新技術(shù)新工藝,2013(6):91-94.
[5]曹輝榮,謝云臣.NC彈簧機(jī)的發(fā)展動(dòng)向[J].內(nèi)燃機(jī)燃油噴射和控制,1996(3):5-8.