雷立群,王戩
(吉林農(nóng)業(yè)科技學(xué)院機械與土木工程學(xué)院,吉林吉林 132101)
數(shù)控系統(tǒng)是一種典型的多任務(wù)實時控制系統(tǒng),系統(tǒng)中的強實時控制部分主要是插補運算和位置控制脈沖的輸出。眾所周知,插補是數(shù)控機床控制刀具運動軌跡的核心,傳統(tǒng)的數(shù)控系統(tǒng)多因?qū)崟r性原因,主要采用硬件來實現(xiàn)強實時控制部分[1-3],硬件實現(xiàn)的數(shù)控系統(tǒng)限制了系統(tǒng)的體系結(jié)構(gòu),為開放式數(shù)控系統(tǒng)的實現(xiàn)增加了難度。而采用全軟件的方法實現(xiàn)數(shù)控系統(tǒng)是實現(xiàn)開放式數(shù)控系統(tǒng)最簡潔的途徑,文獻[4]提出采用引入外部時鐘中斷的方法,有效解決了Windows操作系統(tǒng)高精度定時時鐘的問題,使全軟件數(shù)控系統(tǒng)的實現(xiàn)成為可能。作者在此基礎(chǔ)上構(gòu)建了Windows操作系統(tǒng)全軟件結(jié)構(gòu)的整體建模,實驗證明這種數(shù)控系統(tǒng)的結(jié)構(gòu)模型是可行的。
數(shù)控加工是一種復(fù)雜的控制過程,在加工過程中同一時間段中可能需要同時完成兩種不同的功能。例如,系統(tǒng)在插補的同時,需要不斷地翻譯并向內(nèi)存送入數(shù)控代碼。同時,系統(tǒng)還要能夠隨時接收用戶發(fā)出的緊急控制信息等。全軟件數(shù)控系統(tǒng)在總設(shè)計上的關(guān)鍵在于如何使系統(tǒng)能夠更為精確和快速地響應(yīng)控制,因此在程序的總體設(shè)計上盡量避免程序之間相互調(diào)用而產(chǎn)生的軟件延時問題。
數(shù)控系統(tǒng)在整體上采用了分層的軟件結(jié)構(gòu),圖1給出了數(shù)控系統(tǒng)各個部分之間的相互關(guān)系(雙箭頭表示它們之間可以進行雙向數(shù)據(jù)傳輸),可以清楚地看到數(shù)控系統(tǒng)的軟件結(jié)構(gòu)以及系統(tǒng)的控制策略。數(shù)控系統(tǒng)由底層WDM程序與頂層控制應(yīng)用程序兩部分組成:WDM程序主要負責系統(tǒng)的強實時控制部分,如外部硬件中斷的截取、控制脈沖的輸出等;而頂層應(yīng)用程序則主要負責數(shù)控代碼的編譯、控制參數(shù)的設(shè)置、加工位置信息的顯示等。
圖1 數(shù)控系統(tǒng)整體結(jié)構(gòu)框圖
從圖中可以看到,WDM程序位于控制結(jié)構(gòu)的中間部分。因此在控制的過程中,底層的WDM程序必然要不斷地同外部硬件以及頂層應(yīng)用程序通信。
從圖1可以看到全軟件數(shù)控系統(tǒng)整體上分為3個大的部分,這3個大的部分文中采用了多線程的編程實現(xiàn)方式,包括主線程、數(shù)據(jù)處理線程和插補線程。在程序的實現(xiàn)上,一方面要考慮如何避免線程之間的切換對強實時控制部分產(chǎn)生的影響,另一方面又要協(xié)調(diào)好各個線程之間的同步關(guān)系,以保證系統(tǒng)的整體控制結(jié)構(gòu)更加合理完善。下面對各線程的功能進行一一介紹:
(1)主線程。負責對數(shù)控文件的處理(例如,對文件的編輯、修改、存儲和讀入等),以及接收用戶的控制信息和輸出系統(tǒng)的顯示信息,如系統(tǒng)的啟動、暫停、繼續(xù)執(zhí)行、倍率調(diào)整等的控制以及加工中刀具的位置、進給速度等內(nèi)容的顯示。
(2)數(shù)據(jù)處理線程。該線程主要負責對數(shù)控代碼的處理,包括數(shù)控文件的編譯、向內(nèi)存中存放編譯完成的數(shù)控指令、負責實時接收插補過程中傳遞過來的各種需要顯示的數(shù)據(jù)信息和命令等。
(3)插補線程。主要用于實現(xiàn)系統(tǒng)中實時性較強的插補運算、位置控制等內(nèi)容。圖2為各線程之間的狀態(tài)示意圖。
圖2 線接觸加工數(shù)控系統(tǒng)線程之間的同步關(guān)系
從圖2中可以看到各個線程之間具有如下的關(guān)系:
(1)主線程負責激活和掛起其他的線程。當接收到啟動加工的信息后主線程負責激活數(shù)據(jù)處理線程和插補線程,當加工結(jié)束或接收到暫停信息時,主線程負責掛起其他的線程。
(2)線程之間的同步關(guān)系。插補線程與數(shù)據(jù)處理線程之間總是按照:插補線程→數(shù)據(jù)處理線程→插補線程→數(shù)據(jù)處理線程…這樣的過程交替執(zhí)行的。在插補過程中,數(shù)據(jù)處理線程一直處于等待狀態(tài),準備接收插補線程發(fā)來的編譯數(shù)控文件并存入數(shù)控代碼的命令,或者是接收用于顯示刀具運動位置的數(shù)據(jù)。因此,它們之間存在著線程之間的同步問題。插補線程和數(shù)據(jù)處理線程之間是通過Win32事件通知的方式進行通信的。具體的實現(xiàn)過程是:在數(shù)據(jù)處理線程中創(chuàng)建一個事件后,直接將該事件句柄傳遞給插補線程,然后等待插補線程發(fā)送事件消息。插補線程通過類KEvent獲取這個事件的一個對象指針后,通過設(shè)置事件信號狀態(tài)來觸發(fā)應(yīng)用程序。
在插補線程中,當插補周期結(jié)束時,如果需要繼續(xù)向內(nèi)存空間填充數(shù)控指令時,則通過在延遲過程調(diào)用(DPC)函數(shù)內(nèi)設(shè)置事件為信號狀態(tài),通知應(yīng)用程序,程序如下:
VOIDSampleISADevice::dpc
{
m_pEventToSignal->Set();
}
數(shù)據(jù)處理線程通過下面的方式接收插補線程發(fā)送過來的通知信息:
while(1)
{
WaitForSingleObject(hEvent1,INFINITE);//等待插補命令執(zhí)行完畢…//執(zhí)行相應(yīng)的操作}
文中采用前后臺的方式設(shè)計了Windows操作系統(tǒng)下數(shù)控系統(tǒng)的軟件結(jié)構(gòu),其中前臺軟件用C++Bulider設(shè)計完成,后臺采用WDM設(shè)備驅(qū)動程序設(shè)計實現(xiàn),數(shù)控系統(tǒng)軟件可實現(xiàn)對直線、圓弧輪廓的走刀控制。
數(shù)控系統(tǒng)的控制界面和加工運動控制過程中的位置顯示界面如圖3所示,下面對各部分進行具體的介紹。
(1)控制界面
控制面板由兩部分組成,在設(shè)計時依據(jù)的是界面簡單、清晰,控制方式便捷的原則進行的。它位于主功能界面的右方,用開關(guān)按鍵以及分頁等進行設(shè)計的。
(2)顯示界面
顯示面板也由兩部分組成,位于控制面板的左上方和右上方,主要用于顯示加工中各個坐標軸的運動位置、加工中的進給速度等。
圖3 線接觸加工數(shù)控系統(tǒng)控制界面
圖4 控制界面
圖5 顯示界面
提出了采用多線程的程序結(jié)構(gòu)模式實現(xiàn)全軟件控制系統(tǒng),控制系統(tǒng)的強實時部分在Windows操作系統(tǒng)底層的驅(qū)動程序部分實現(xiàn),管理程序和顯示程序等弱實時控制部分在應(yīng)用程序?qū)用鎸崿F(xiàn),各個控制部分之間通過中斷及線程通信來實現(xiàn)。數(shù)控系統(tǒng)軟件最終實現(xiàn)了對9個軸電機驅(qū)動器的控制,實驗證明:控制系統(tǒng)的極限加工進給速度可達到1 500 mm/min,系統(tǒng)的最小脈沖當量是0.037μm,數(shù)控系統(tǒng)可實現(xiàn)對空間直線、圓弧等輪廓的加工控制。
[1]賴曉豐,劉敬猛,李善鋒.基于ARM和運動控制器的嵌入式數(shù)控系統(tǒng)設(shè)計[J].機床與液壓,2011,39(6):86-88.
[2]朱利東,殷蘇民.基于嵌入式實時操作系統(tǒng)的開放式數(shù)控系統(tǒng)的研究[J].機床與液壓,2004(1):92-95.
[3]楊恒宗,傅星,張師偉.基于DSP與單片機的激光加工數(shù)控系統(tǒng)的研究[J].組合機床與自動化加工技術(shù),2005(12):35-37.
[4]雷立群,于振文.基于Windows的全軟件數(shù)控系統(tǒng)實現(xiàn)方法研究[J].機床與液壓,2012,40(9):94-97,20.
[5]何航.Windows開發(fā)式數(shù)控系統(tǒng)軟件設(shè)計與研究[D].成都:電子科技大學(xué),2004.
[6]LEI L Q,WANG K Q,HAN J.Implementation Study about the Software CNCSystem Based on Windows[J].Advanced Materials Research,2011,411:264-269.
[7]武安河,邰銘,于洪濤.Windows2000/XPWDM設(shè)備驅(qū)動程序開發(fā)[M].北京:電子工業(yè)出版社,2003:1-354.