專利名稱:實(shí)現(xiàn)數(shù)控系統(tǒng)中指令與硬件交互的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)控機(jī)床系統(tǒng)領(lǐng)域,特別涉及數(shù)控機(jī)床系統(tǒng)運(yùn)動(dòng)控制領(lǐng)域,具體是一種實(shí)現(xiàn)數(shù)控系統(tǒng)中指令與硬件交互的方法。
背景技術(shù):
制造業(yè)是國民經(jīng)濟(jì)的基礎(chǔ)產(chǎn)業(yè),制造業(yè)的水平高低是衡量一個(gè)國家工業(yè)發(fā)達(dá)程度的重要標(biāo)志。數(shù)控機(jī)床質(zhì)量水平高低,關(guān)系著國家制造業(yè)水平的高低。在現(xiàn)有的技術(shù)中我們經(jīng)常使用機(jī)床系統(tǒng)進(jìn)行相應(yīng)的控制運(yùn)動(dòng)操作。在機(jī)床控制運(yùn)動(dòng)系統(tǒng)中,機(jī)床指令發(fā)送到機(jī)床控制卡中。如果采取傳統(tǒng)的方式,那么指令傳輸方式非常低效。這樣就可能達(dá)不到我們想要的控制機(jī)床運(yùn)動(dòng)軌跡。另外由于不斷申請(qǐng)內(nèi)存、釋放內(nèi)存、復(fù)制內(nèi)存等操作,造成了性能的損失。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于,克服現(xiàn)有技術(shù)中存在的問題,提供一種實(shí)現(xiàn)數(shù)控系統(tǒng)中指令與硬件交互的方法,內(nèi)存空間可重復(fù)使用、容易理解,數(shù)據(jù)傳送安全。適用范圍較為廣泛的數(shù)控機(jī)床系統(tǒng)中實(shí)現(xiàn)高速指令傳輸?shù)姆椒?。為了解決上述問題本發(fā)明的技術(shù)方案是這樣的
實(shí)現(xiàn)數(shù)控系統(tǒng)中指令與硬件交互的方法,其特征包括以下步驟
1)定義指令
la)定義一個(gè)指令內(nèi)存空間塊,通常是最大指令內(nèi)存空間的大??;
lb)使用一個(gè)標(biāo)識(shí)符,便于指令識(shí)別;
Ic)根據(jù)指令標(biāo)識(shí)符,在指令中放置不同的指令信息;
2)環(huán)形緩沖區(qū)內(nèi)存申請(qǐng)、指令寫入、指令讀??; 2a)系統(tǒng)定義讀數(shù)據(jù)位置指針和寫數(shù)據(jù)位置指針;
2b)系統(tǒng)申請(qǐng)一塊內(nèi)存空間,其內(nèi)存空間大小是指令的內(nèi)存空間倍數(shù); 2c)系統(tǒng)將讀數(shù)據(jù)位置指針和寫數(shù)據(jù)位置指針都指向步驟2b)申請(qǐng)的內(nèi)存空間的開始位置;
2d)在RO申請(qǐng)上述數(shù)據(jù)結(jié)構(gòu)內(nèi)存空間,然后把其數(shù)據(jù)指針傳送到應(yīng)用程序R3 ;(R0和 R3是CPU設(shè)定的特權(quán)級(jí),分別為RO、Rl、R2、R3。RO擁有最高級(jí)別,能夠訪問計(jì)數(shù)機(jī)所有的資源,操作系統(tǒng)運(yùn)行于此層;R3是最低級(jí)別,無法訪問系統(tǒng)內(nèi)核資源,應(yīng)用程序運(yùn)行在此層, 簡單來說R3不能訪問RO數(shù)據(jù),RO可能訪問R3數(shù)據(jù)); 3)指令寫入
3a)系統(tǒng)進(jìn)入指令寫入操作;
3b)判斷環(huán)形緩沖區(qū)中是否已經(jīng)滿了 ;
3c)如果環(huán)形緩沖區(qū)未滿,則把指令放入環(huán)形緩沖隊(duì)列中,也就是把指令數(shù)據(jù)復(fù)制到環(huán)形緩沖區(qū)中;3d)如果緩沖區(qū)已滿,則等待一段時(shí)間,返回上述3b)步驟; 4)指令讀取
4a)系統(tǒng)輪詢環(huán)形緩沖區(qū)中是否有數(shù)據(jù)可讀;
4b)如果有數(shù)據(jù)可讀,則定義一個(gè)指令變量,然后從環(huán)形緩沖區(qū)中取出一個(gè)指令,并把指令數(shù)據(jù)復(fù)制到指令變量中;
4c)如果無數(shù)據(jù)可讀,處理其他操作,然后進(jìn)入上述4a)步驟。所述指令內(nèi)存空間塊,在各個(gè)指令中都是一樣的;指令都有一個(gè)標(biāo)識(shí),標(biāo)識(shí)該指令的是具體完成什么功能;指令中帶有相關(guān)指令信息的數(shù)據(jù)區(qū)。所述環(huán)形緩沖區(qū)的空間大小為L,L制n,其中,N為系統(tǒng)定義的指令個(gè)數(shù),η為指令的空間大小。有益效果采用該發(fā)明的實(shí)現(xiàn)數(shù)控系統(tǒng)中指令與硬件交互的方法,由于在數(shù)控機(jī)床系統(tǒng)中采用環(huán)形緩沖區(qū)內(nèi)存共享,并使用緩沖區(qū)中只有一個(gè)讀寫,這樣我們的數(shù)控機(jī)床系統(tǒng)節(jié)省了 RO到R3傳輸花費(fèi),提高了性能還節(jié)省空間,由于我們定義的緩沖區(qū),只要求一個(gè)線程用于讀操作,一個(gè)線程用于寫操作,這樣該數(shù)控機(jī)床系統(tǒng)對(duì)于指令交互是線程安全的。
下面結(jié)合附圖和具體實(shí)施方式
來詳細(xì)說明本發(fā)明; 圖1為本發(fā)明的寫入指令流程。圖2為本發(fā)明的讀取指令流程。圖3為系統(tǒng)結(jié)構(gòu)流程圖。
具體實(shí)施例方式
為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,下面結(jié)合具體圖示,進(jìn)一步闡述本發(fā)明。參看圖1、圖2、圖3
首先對(duì)數(shù)控機(jī)床技術(shù)領(lǐng)域中的幾個(gè)名詞進(jìn)行解釋
指令——指用于控制板卡的命令信息,在驅(qū)動(dòng)中被解釋成有意義的信息。邏輯正方向——指環(huán)形緩沖區(qū)中先存入數(shù)據(jù)到后存入數(shù)據(jù)在環(huán)形緩沖區(qū)中的排列的邏輯方向。邏輯負(fù)方向——指環(huán)形緩沖區(qū)中先存入數(shù)據(jù)到后存入數(shù)據(jù)在環(huán)形緩沖區(qū)中的排列的邏輯方向的反方向。該實(shí)現(xiàn)數(shù)控系統(tǒng)中指令與硬件交互的方法,其特點(diǎn)是所述的系統(tǒng)中設(shè)置有一個(gè)環(huán)形緩沖區(qū),所述的方法包括定義指令1)、環(huán)形緩沖區(qū)內(nèi)存申請(qǐng)2、、指令寫入幻、指令讀取 4)。1)所述的定義指令方法包括以下步驟
la)定義一個(gè)指令內(nèi)存空間塊,通常是最大指令的大小;
lb)使用一個(gè)標(biāo)識(shí)符,便于指令識(shí)別;
Ic)根據(jù)指令標(biāo)識(shí)符,在指令中放置不同的指令信息。指令在定義是有三個(gè)要點(diǎn)指令所申請(qǐng)內(nèi)存空間大小在各個(gè)指令中都是一樣的;指令都有一個(gè)表示是何種指令的標(biāo)識(shí)符;指令帶有相關(guān)指令信息的數(shù)據(jù)區(qū)。2)所述的環(huán)形緩沖區(qū)內(nèi)存申請(qǐng)步驟
2a)系統(tǒng)定義讀數(shù)據(jù)位置指針和寫數(shù)據(jù)位置指針; 2b)系統(tǒng)申請(qǐng)一塊內(nèi)存空間,其空間大小是指令的內(nèi)存空間倍數(shù); 2c)系統(tǒng)將讀數(shù)據(jù)位置指針和寫數(shù)據(jù)位置指針都指向上一步驟申請(qǐng)的內(nèi)存空間的開始位置;
2d)在RO申請(qǐng)上述數(shù)據(jù)結(jié)構(gòu)內(nèi)存空間,然后把其數(shù)據(jù)指針傳送到應(yīng)用程序R3 ;(R0 和R3是CPU設(shè)定的特權(quán)級(jí),分別為R0、R1、R2、R3。RO擁有最高級(jí)別,能夠訪問計(jì)數(shù)機(jī)所有的資源,操作系統(tǒng)運(yùn)行于此層;R3是最低級(jí)別,無法訪問系統(tǒng)內(nèi)核資源,應(yīng)用程序運(yùn)行在此層。簡單來說R3不能訪問RO數(shù)據(jù),RO可能訪問R3數(shù)據(jù))。該數(shù)控系統(tǒng)中實(shí)現(xiàn)環(huán)形緩沖區(qū)的空間大小L,根據(jù)以下公式確定 L = Nn
其中,N為系統(tǒng)定義的指令個(gè)數(shù),η為指令的大小。3)指令寫入步驟
3a)系統(tǒng)進(jìn)入指令寫入操作; 3b)判斷環(huán)形緩沖區(qū)中是否已經(jīng)滿;
3c)如果環(huán)形緩沖區(qū)未滿,則把指令放入環(huán)形緩沖隊(duì)列中,也就是把指令數(shù)據(jù)復(fù)制到環(huán)形緩沖區(qū)中。復(fù)制步驟如下
3d)如果環(huán)形緩沖區(qū)有指令,則讀數(shù)據(jù)位置指針與寫數(shù)據(jù)位置指針?biāo)赶蛑噶钣涗洸皇峭粋€(gè),如果不是則等待一段時(shí)間,返回上述步驟北);
3c2)如果寫數(shù)據(jù)指針?biāo)赶蛑噶钣涗浀奈恢门c寫入讀數(shù)據(jù)位置指令所指向的指令位置單元,在正方向的距離不等于系統(tǒng)預(yù)定的指針數(shù)1個(gè),如果不是則等待一段時(shí)間,返回上述步驟3b);
3c3)系統(tǒng)將指令中的信息寫入到所述的寫數(shù)據(jù)位置指針?biāo)赶虻挠涗泦卧校?3c4)系統(tǒng)將讀數(shù)據(jù)位置指針?biāo)赶虻闹噶钗恢孟蜻壿嬚较蛞苿?dòng)一個(gè)單位。3d)如果環(huán)形緩沖區(qū)已滿,等待一段時(shí)間,返回上述步驟3b)中; 4)指令讀取步驟
4a)系統(tǒng)輪詢環(huán)形緩沖區(qū)中是否有數(shù)據(jù)可讀;
4b)如果有數(shù)據(jù)可讀,則定義一個(gè)指令變量,然后從環(huán)形緩沖區(qū)中取出一個(gè)指令,并把指令數(shù)據(jù)復(fù)制到指令變量中。寫數(shù)據(jù)步驟如下
4bl)判斷所述的讀數(shù)據(jù)位置指針?biāo)赶虻闹噶钗恢门c寫數(shù)據(jù)位置指針?biāo)赶虻闹噶钗恢貌灰恢?,且讀數(shù)據(jù)位置指針與首數(shù)據(jù)位置指針?biāo)赶虻闹噶钗恢貌灰恢?;如果不一致?則進(jìn)入下一步,否則系統(tǒng)將進(jìn)入上述步驟如)中;
4b2)如果讀數(shù)據(jù)指針的邏輯正方向的下一個(gè)指令位置指針與寫入數(shù)據(jù)位置指針不一致。如果不一致,則進(jìn)入下一步,否則系統(tǒng)將進(jìn)入上述步驟如)中;
4b3)系統(tǒng)把此時(shí)的讀數(shù)據(jù)位置指針的指令信息讀取出來,并放入到上述步驟4b)申請(qǐng)的變量中;
4b4)系統(tǒng)將讀數(shù)據(jù)位置指針向邏輯正方向移動(dòng)一個(gè)指令單位; 4b5、)系統(tǒng)處理所讀取的指令,然后系統(tǒng)進(jìn)入上述步驟如)中。
4c)如果無數(shù)據(jù)可讀,等待一段時(shí)間,然后進(jìn)入上述步驟如)中。該數(shù)控機(jī)床系統(tǒng)中實(shí)現(xiàn)環(huán)形緩沖區(qū)中設(shè)置有讀數(shù)據(jù)位置指針,寫數(shù)據(jù)位置指針, 所述的將數(shù)控機(jī)床系統(tǒng)中的指令寫入到環(huán)形緩沖區(qū),包括以下步驟
1、如果環(huán)形緩沖區(qū)沒有任何指令單元,則讀數(shù)據(jù)位置指針、寫數(shù)據(jù)位置指針指向同一個(gè)記錄單元;
2、如果環(huán)形緩沖區(qū)有指令,則讀數(shù)據(jù)位置指針與寫數(shù)據(jù)位置指針?biāo)赶蛑噶钣涗洸皇峭粋€(gè);
3、如果寫數(shù)據(jù)指針?biāo)赶蛑噶钣涗浀奈恢门c寫入讀數(shù)據(jù)位置指令所指向的指令位置單元,在正方向的距離不等于系統(tǒng)預(yù)定的指針數(shù)一 1個(gè);
4、系統(tǒng)將指令中的信息寫入到所述的寫數(shù)據(jù)位置指針?biāo)赶虻挠涗泦卧校?br>
5、系統(tǒng)將讀數(shù)據(jù)位置指針?biāo)赶虻闹噶钗恢孟蜻壿嬚较蛞苿?dòng)一個(gè)單位。該數(shù)控機(jī)床系統(tǒng)中實(shí)現(xiàn)環(huán)形緩沖區(qū)中設(shè)值有讀數(shù)據(jù)位置指針,寫數(shù)據(jù)位置指針寫入,所述的將數(shù)控機(jī)床系統(tǒng)中的對(duì)于環(huán)形緩沖進(jìn)行讀取的方式,包括以下步驟
1、如果所述的讀數(shù)據(jù)位置指針?biāo)赶虻闹噶钗恢门c寫數(shù)據(jù)位置指針?biāo)赶虻闹噶钗恢貌灰恢?,且讀數(shù)據(jù)位置指針與首數(shù)據(jù)位置指針?biāo)赶虻闹噶钗恢貌灰恢拢?br>
2、如果讀數(shù)據(jù)指針的邏輯正方向的下一個(gè)指令位置指針與寫入數(shù)據(jù)位置指針不一
致;
3、系統(tǒng)將讀數(shù)據(jù)位置指針向邏輯正方向移動(dòng)一個(gè)指令單位;
4、系統(tǒng)把此時(shí)的讀數(shù)據(jù)位置指針的指令信息讀取出來。采用該發(fā)明的數(shù)控機(jī)床系統(tǒng)中實(shí)現(xiàn)指令傳輸方法,由于在數(shù)控機(jī)床系統(tǒng)中采用環(huán)形緩沖區(qū)內(nèi)存共享,并使用緩沖區(qū)中只有一個(gè)讀寫,這樣我們的數(shù)控機(jī)床系統(tǒng)節(jié)省了 RO到 R3傳輸花費(fèi),提高了性能還節(jié)省空間,由于我們定義的緩沖區(qū),只要求一個(gè)線程讀操作,一個(gè)線程寫操作,這樣該數(shù)控機(jī)床系統(tǒng)對(duì)于指令交互是線程安全的。以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書及其等同物界定。
權(quán)利要求
1.實(shí)現(xiàn)數(shù)控系統(tǒng)中指令與硬件交互的方法,包括以下步驟1)定義指令la)定義一個(gè)指令內(nèi)存空間塊,通常是最大指令的大小,在各個(gè)指令中都是一樣的;lb)使用一個(gè)標(biāo)識(shí)符,便于指令識(shí)別; Ic)根據(jù)指令標(biāo)識(shí)符,在指令中放置不同的指令信息;Id)指令都有一個(gè)標(biāo)示為什么樣類型指令的標(biāo)示符;指令中帶有相關(guān)指令信息的數(shù)據(jù)區(qū);2)環(huán)形緩沖區(qū)內(nèi)存申請(qǐng)、指令寫入、指令讀取; 2a)系統(tǒng)定義讀數(shù)據(jù)位置指針和寫數(shù)據(jù)位置指針;2b)系統(tǒng)申請(qǐng)一塊內(nèi)存空間,其空間大小是指令的內(nèi)存空間倍數(shù); 2c)系統(tǒng)將讀數(shù)據(jù)位置指針和寫數(shù)據(jù)位置指針都指向上一步驟申請(qǐng)的內(nèi)存空間的開始位置;2d)在RO申請(qǐng)上述數(shù)據(jù)結(jié)構(gòu)內(nèi)存空間,然后把其數(shù)據(jù)指針傳送到應(yīng)用程序R3 ; 2e)環(huán)形緩沖區(qū)的空間大小為L,L=Nn,其中,N為系統(tǒng)定義的指令個(gè)數(shù),η為指令的空間大小;3)指令寫入3a)系統(tǒng)進(jìn)入指令寫入操作;3b)判斷環(huán)形緩沖區(qū)中是否已經(jīng)滿了 ;3c)如果環(huán)形緩沖區(qū)未滿,則把指令放入環(huán)形緩沖隊(duì)列中,也就是把指令數(shù)據(jù)復(fù)制到環(huán)形緩沖區(qū)中;3d)如果緩沖區(qū)已滿,則等待一段時(shí)間,返回上述3b)步驟;4)指令讀取4a)系統(tǒng)輪詢環(huán)形緩沖區(qū)中是否有數(shù)據(jù)可讀;4b)如果有數(shù)據(jù)可讀,則定義一個(gè)指令變量,然后從環(huán)形緩沖區(qū)中取出一個(gè)指令, 并把指令數(shù)據(jù)復(fù)制到指令變量中;4c)如果無數(shù)據(jù)可讀,處理其他操作,然后進(jìn)入上述4a)步驟。
全文摘要
實(shí)現(xiàn)數(shù)控系統(tǒng)中指令與硬件交互的方法,其特點(diǎn)是所述的系統(tǒng)中設(shè)置有一個(gè)環(huán)形緩沖區(qū),所述的方法包括定義指令、環(huán)形緩沖區(qū)內(nèi)存申請(qǐng)、指令寫入、指令讀取。本方法中由于在數(shù)控機(jī)床系統(tǒng)中采用環(huán)形緩沖區(qū)內(nèi)存共享,并使用緩沖區(qū)中只有一個(gè)讀寫,這樣我們的數(shù)控機(jī)床系統(tǒng)節(jié)省了R0到R3傳輸花費(fèi),提高了性能還節(jié)省空間,由于我們定義的緩沖區(qū),只要求一個(gè)線程讀操作,一個(gè)線程寫操作,這樣該數(shù)控機(jī)床系統(tǒng)對(duì)于指令交互是線程安全的。
文檔編號(hào)G05B19/19GK102478813SQ20101055351
公開日2012年5月30日 申請(qǐng)日期2010年11月22日 優(yōu)先權(quán)日2010年11月22日
發(fā)明者孫文秀 申請(qǐng)人:大連創(chuàng)達(dá)技術(shù)交易市場有限公司