專利名稱:一種數控代碼編譯器以及基于其建立數控系統軟件的方法
技術領域:
本發明涉及代碼編譯,尤其是涉及一種數控代碼編譯器以及基于其建立數控系統軟件的方法。
背景技術:
由通用軌跡運動控制模塊作為下位機,由工業控制計算機作為上位機所構成的數控系統,是一種新型的數控系統硬件結構,在研制這種結構的數控系統過程中,必須配用數控系統軟件。所述數控系統軟件在實施工件加工的控制時,必須對數控(Numerical Control,簡稱為NC)程序中的代碼進行語法、意義的翻譯,根據翻譯的結果調用相應的控制函數完成對各個軸的控制,即實現加工控制,目前上述翻譯功能大多是由解釋型NC代碼編譯器完成的,基于解釋型NC代碼編譯器建立數控系統軟件的方法,包括以下步驟(1)由上位機將NC程序下傳送入下位機,大型NC程序,不能全部一次送入,而需分批多次下傳;(2)在下位機對NC程序進行編譯;(3)控制方式是下位機讀取一條NC代碼,編譯處理一條,并根據編譯處理結果調用控制函數實現加工控制,是解釋型控制模式,即邊解釋、邊識別、邊控制,其NC代碼編譯器實際上是NC代碼解釋器,它與控制軟件融為一體。這種建立數控系統軟件的方法存在的問題,一是NC代碼編譯器和控制程序共同占用下位機的CPU、RAM資源,造成資源緊張,不利于下位機運行高級控制算法實現高精度控制,不利于多軸的實時控制的實現;二是NC代碼編譯器嵌套在實時控制軟件中,使下位機的控制軟件變得復雜;此外,NC程序中有子程序,大型NC程序,不能全部一次送入,而需分批多次下傳,在解決調用NC子程序的跳轉與返回,以及保證控制的實時性方面存在非常大的障礙。
發明內容
本發明要解決的一個技術問題是克服現有技術的缺陷,提出一種數控代碼編譯器。所述數控代碼編譯器是協議整數包(Protocol Integer Data Packet,簡稱為PIDP)數控代碼編譯器,簡稱PIDP_NC代碼編譯器。
本發明要解決的另一個技術問題是克服現有技術的缺陷,提出一種基于上述數控代碼編譯器建立數控系統軟件的方法。
對于一種數控代碼編譯器來說,本發明的技術問題是這樣加以解決的這種數控代碼編譯器的特點是,其構建包括1)定義即編制NC命令的目標碼;2)設計制定對應NC命令的PIDP的格式及內容包括PIDP的格式、以及多參數、無參數和單參數命令的PIDP制定;3)設計編寫在上位機運行的PIDP_NC代碼編譯器,有以下步驟①打開NC程序文件用打開文件函數打開NC程序文件、至少創建一個用于存儲目標碼的目標文件、一個用于記錄編譯結果的報告文件;②對NC程序文件進行整理將帶有子程序的NC程序宏擴展處理成沒有子程序的順序型NC程序文件;③對順序型NC程序文件進行PIDP編譯包括對編譯中所用的變量設置初始值;通過系統配置文件設置系統參數變量;循環調用行編譯函數,按順序將每一個NC命令編譯成一個PIDP,并將編譯產生的PIDP序列以目標文件的形式存儲在上位機的硬盤中;還包括調用PIDP整理函數完成速度預算,以及完成在一行編譯后可能有的多個PIDP的整理;④判斷編譯結果是否正確是,就生成報告正確信息的文件;否,就生成報告出錯信息的文件;⑤關閉所有文件,程序結束。
所述PIDP的格式是特定數據格式,在填入數據后成為PIDP目標碼。所述PIDP_NC代碼編譯器的功能是將NC代碼編譯成特定數據格式的目標碼,將NC程序編譯成特定數據格式且完全順序執行意義的目標碼文件。
所述PIDP目標碼都是由整型數據(Integer Data,簡稱為ID)編碼組成。
如“G00~G99”對應的命令目標碼為“1000~1099”;所述PIDP的特定數據格式是命令目標碼+序號+包長度+參數。其中包長度隨參數的不同而不一樣,參數隨NC代碼命令的不同而不一樣,坐標、速度、角度數據放大后都以ID存儲,以方便數據傳送,下位機只要縮小相同倍數便能獲得實際的浮點型數據。
如NC代碼為“N006 G01X10.35Y20.68Z20.00”,對應的PIDP如表1所示。
表1
對于一種數控代碼編譯器來說,本發明的技術問題是這樣進一步加以解決的所述PIDP_NC代碼編譯器由PIDP_NC源程序文件、PIDP_NC_lib庫文件和PIDP_NC_sys系統配置文件及幫助信息文件PIDP_NC_help組成。
所述PIDP_NC代碼編譯器適用于Windows2000、WindowsXP和Linux操作系統。
所述PIDP_NC代碼編譯器適用于由Java、C和C++開發的數控系統軟件。
對于一種基于數控代碼編譯器建立數控系統軟件的方法來說,本發明的技術問題是這樣加以解決的這種基于數控代碼編譯器建立數控系統軟件的方法,有以下步驟(1)構建PIDP_NC代碼編譯器;(2)在上位機中采用PIDP_NC代碼編譯器將NC程序編譯成特定數據格式且完全順序執行意義的目標碼文件;(3)上位機按順序分批將PIDP目標碼送入下位機循環緩沖區;(4)下位機從循環緩沖區中按順序讀取包括下位機循環緩沖區管理PIDP和下位機用PIDP目標碼,經過對PIDP中數據識別判定出對應NC命令的意義,同時得到對應的數據,根據命令的意義調用相應的運動控制函數,實現加工控制。
對于一種基于數控代碼編譯器建立數控系統軟件的方法來說,本發明的技術問題是這樣進一步加以解決的所述數控代碼編譯器的PIDP的格式是特定數據格式,在填入數據后成為由整型數據編碼組成的PIDP目標碼。
所述PIDP的特定數據格式是命令目標碼+序號+包長度+參數。其中包長度隨參數的不同而不一樣,參數隨NC代碼命令的不同而不一樣,坐標、速度、角度數據放大后都以ID存儲。
與現有技術對比,本發明具有以下優點(1)本發明的PIDP_NC代碼編譯器預先在上位機運行,與下位機完全分離,不占用下位機的CPU和RAM資源,有利于下位機有充足資源運行高級算法實現高精度和多軸實時控制,將下位機軟件簡單化,下位機的軟件設計不必考慮NC代碼的編譯問題;(2)本發明先采用宏擴展技術將帶有子程序的NC程序整理成沒有子程序的順序型NC程序文件,再對順序型NC程序文件中的NC代碼進行按順序PIDP編譯,每一個NC命令編譯成一個PIDP,采用完全順序執行意義的PIDP序列數據結構實現大型NC程序順序分批下傳,下位機采用循環緩沖區管理PIDP,無論NC程序有多么大,都能實現數控加工控制,以滿足大型NC程序連續加工的需求,這種完全順序執行意義不存在跳轉與返回的復雜問題,即徹底解決了NC子程序的跳轉和返回的難題;(3)下位機采用的目標數據是PIDP,其第一個單元是命令目標碼,第三個單元是包長度,長度單元之后是對應命令目標碼的參數,而且全部單元中的數據都是ID,使下位機的控制軟件明顯變得簡單、便于識別,根據命令目標碼和包長度就可以方便地選調相應的函數和方便地提取擬用的相應參數,即軌跡控制函數調用很方便,從而使下位機更容易實現控制,還解決了不同下位機系統的通用性問題,可以廣泛適用多種下位機系統。由于不同的下、上位機,甚至是不同浮點型數據格式的下、上位機,其ID格式都相同,由ID構成的PIDP不必增加格式轉換,就能保證下位機獲取正確數據;(4)本發明的PIDP_NC代碼編譯器可以獨立開發,具有較高的經濟價值和技術價值。它只涉及將NC代碼變成PIDP和將NC程序變成完全順序執行意義的PIDP序列目標文件,只要提供調用方式和PIDP格式說明手冊,用戶就能使用。
(5)本發明的PIDP數據結構及下位機循環緩沖管理PIDP方式,為數控系統中的上、下位機軟件提供了一種接口模式,有利于數控軟件的標準化,PIDP的包長可變,預算工作如速度預算可以移至上位機,以進一步減輕下位機的負載。
本發明適用于由工業控制計算機和通用運動控制模塊構成的上下位機結構的數控系統,以及分部式軌跡運動控制系統。
下面結合具體實施方式
對本發明進行詳細的說明圖1是本發明一具體實施方式
的PIDP_NC代碼編譯器的主程序流程圖;圖2是本發明一具體實施方式
的編譯模塊的程序流程圖;圖3是本發明一具體實施方式
的行編譯函數的程序流程圖;圖4是本發明一具體實施方式
的行PIDP編譯函數的程序流程圖;圖5是本發明一具體實施方式
的下位機用PIDP實現加工控制的程序流程圖。
具體實施例方式
一種基于PIDP_NC代碼編譯器建立CNC2000數控系統軟件的方法由CNC2000數控系統構建的數控雕刻機可以進行各種字體的漢字雕刻、三維塑像雕刻、三維模型的加工。
(一)PIDP_NC代碼編譯器的技術要求上位機操作系統是Windows2000、WindowsXP或Linux,應用軟件系統用C程序、C++程序或JAVA程序開發;有數控系統配置文件;內存256MB,硬盤30GB,CPU為至少32位;下位機通用運動控制模塊,CPU為至少32位,帶運動控制函數;通信接口并行總線,嵌入式結構、32位;RS-232/485,分離式。
(二)PIDP_NC代碼編譯器的功能規劃PIDP_NC代碼編譯器的功能規劃參見表2。
表2
(三)為CNC2000數控系統建立軟件的方法,有以下步驟(1)構建PIDP_NC代碼編譯器,包括1)定義即編制NC命令的目標碼;NC命令包括G命令、M命令、H命令、T命令、P命令和S命令。
G命令中G00~G99的目標碼分別為1000~1099;M命令中M00~M99的目標碼分別為2000~2099;其它命令的目標碼的編碼設計參見表3,該表用于建立軟件過程中翻閱核查、增加和修改目標碼的定義。
定義數控命令目標碼的原則采用ID表示目標碼;命令目標碼的碼段劃分必須清楚,便于記憶;命令目標碼與數控命令的關系必須一一對應。
表3
2)設計制定對應NC命令的PIDP的格式及內容包括PIDP的格式、以及多參數、無參數和單參數命令的PIDP制定;目標碼的數據組織格式定義為PIDP。
①PIDP由四部分構成,其格式設計如下
命令目標碼為NC命令的目標碼,用于標識NC命令,下位機利用其調用相應的控制函數,實現加工控制,占用一個整型單元。
序號為NC程序的行序號,占用一個整型單元。
包長度從命令目標碼開始到參數部分結束,總共占用的整型單元數目。
參數部分為參數區,包括0、1或多個參數,每個參數占用一個整型單元,參數數目可以增加,以適用于多軸數控系統和多項預算的要求。
上述各部分都用ID表示,PIDP采用上述格式表示,描述一條NC代碼。
NC代碼的語法與意義以《FANUC Series 16 FANUC Series 18操作說明書》為參考。
②多參數數控命令的PIDP制定例1快速定位G00的目標碼及PIDP格式G00或G0命令的目標碼及PIDP編碼格式參見表4。
表4
表4中1000為G00或G0命令的目標碼;長度9表示該命令占用9個ID單元;X為X軸坐標,X*10000將浮點數放大并以ID編碼保存,且以絕對坐標為準;Y為Y軸坐標,Y*10000將浮點數放大并以ID編碼保存,且以絕對坐標為準;Z為Z軸坐標,Z*10000將浮點數放大并以ID編碼保存,且以絕對坐標為準;下位機將坐標數據除以10000,還原成浮點數據。
對于G00/G0命令,Vs和Ve不用,Vmo為G00的速度,其值從編譯器的系統配置文件中獲得。
例2直線運動G01的目標碼及PIDP格式G01或G1命令的目標碼及PIDP編碼格式參見表5。
表5
表5中1001為G01或G1的命令目標碼;長度9表示該命令占用9個ID單元;X、Y、Z與G00相同。
Vs為開始速度、Vm為穩定速度即中間速度、Ve為段尾速度,這些速度數據通過速度計算函數得,并乘以1000以ID存盤。
例3圓弧運動G02(或G03)的目標碼及PIDP編碼格式參見表6。
表6
表6中Angle為圓弧的扇形角,以弧度為單位,放大倍數為106,并以ID編碼保存。圓弧起點為當前點,圓弧終點為(Xe、Ye、Ze),起始速度Vs,穩定速度Vm,終點速度Ve。這些速度數據根據控制算法的要求給出,以進一步減少下位機的計算負載。一般情況下是按NC程序提供的速度數據乘以權值填入Vm。當運動控制函數需要一個軌跡段的Vs、Vm和Ve時,根據軌跡段間的相關性要求如速度平滑采取適當的算法獲得這些速度數據。
③無參數命令的PIDP制定例4單NC命令的目標碼及編碼格式
XY平面指定命令G17的PIDP格式參見表7。
表7
絕對坐標命令G90的PIDP格式參見表8。
表8
例5輔助功能M命令的目標碼及編碼格式命令M03的PIDP格式參見表9。
表9
冷卻液泵開啟命令M08的PIDP格式參見表10。
表10
④單參數命令的PIDP制定例6其它命令的目標碼及編碼格式暫停時間命令P的PIDP格式見參表11。
表11
主軸轉速命令S的PIDP格式參見表12。
表12
3)設計編寫在上位機運行的PIDP_NC代碼編譯器例7加工一個矩形的NC程序如表13表13
運行PIDP_NC代碼編譯器,所產生對應的PIDP格式目標序列如表14所示,表14中每個單元格是一個PIDP。表13、14說明了NC程序與PIDP序列的關系,PIDP_NC代碼編譯器的任務是將表13編譯成表14。
表14
設計編寫在上位機運行的PIDP_NC代碼編譯器,有以下①~⑤步驟①打開NC程序文件用打開文件函數打開NC程序文件,分別創建一個用于存儲目標碼的目標文件、一個用于記錄編譯結果的報告文件和一個用于閱讀的閱讀文件,參見圖1。
②對NC程序文件進行整理將帶有子程序的NC程序宏擴展處理成沒有子程序的順序型NC程序文件。
具體實現方式如下設NC程序的文件名為“scode.txt”,新的NC程序文件名為“newNC.txt”。
對“scode.txt”設置兩個文件指針P1和P2,P1用于正常行讀取指針,讀一行后將其寫入“newNC.txt”文件;當遇到“M98”的行時,不將含有“M98”的行寫入“newNC.txt”,而是用P2指針搜索“scode.txt”;當搜索到對應的子程序編號時,從子程序編號行的下一行開始讀取一行并寫入“newNC.txt”文件,直至“M99”為止;再繼續通過P1去讀取“scode.txt”,直至文件結束。
對“scode.txt”還設置P3、P4、P5指針,分別用于對第二、三、四層子程序的搜索,以符合國際標準規定的有最多四層子程序可以調用。
所述文件整理是一種宏擴展處理,用比較簡單的函數程序實現。整理的結果如下例8NC程序的整理整理前的NC程序 整理后的順序型NC程序N0010 G01X10Y10N0010 G01X10Y10N0011 M98P1000 N1000 G01Z30N0012 G01X30Y30N1001 G01Z60N0013 M98P00022000 N0012 G01X30Y30N0014 M30 N2000 G01Z20N2001 G01Z60O1000 N0014 M30N1000 G01Z30N1001 G01Z60N1003 M99O2000N2000 G01Z20N2001 G01Z60N2003 M99③對順序型NC程序文件進行PIDP編譯包括對編譯中所用的變量設置初始值;通過系統配置文件設置系統參數變量;循環調用行編譯函數,按順序將每一個NC命令編譯成一個PIDP,并將編譯產生的PIDP序列以目標文件的形式存儲在上位機的硬盤中;還包括調用PIDP整理函數完成速度預算,以及完成在一行編譯后可能有的多個PIDP的整理;程序框圖參見圖2和表15,表15是循環式編譯控制程序的N-S圖表。
具體實現步驟如下a~ia,變量設置初始值,對程序中所用的變量如出錯計數器變量、英/米制標志變量等設置初始值;b,設置系統參數變量,通過系統配置文件設置系統參數變量如軸的最大允許速度值、加速度值、刀長度補償值、機械坐標系的極限值;c,判文件是否結束?是,結束編譯,進入步驟④;否,進入d步;d,判總出錯標志是否置位?是,結束編譯,進入步驟④;否,進入e步;e,讀出一行NC代碼;f,判是否為NC程序的開始?是,生成表示開始的PIDP并存盤,進入c步;否,接著判是否為NC程序的結束?是結束,生成表示結束的PIDP并存盤,并設置結束標志,進入c步;不是結束,進入g步;g,判是否為NC程序號?是,生成表示程序號的PIDP并存盤,進入c步;否,進入h步;h,判是否為NC代碼行?是,調用NC代碼行編譯函數,進入c步;否,進入i步;i,判是否為注釋行?是,忽略此行,直接進入c步;否,認為是非法信息,出錯計數器增一,出錯信息寫入報告文件,進入c步。
所述h步驟調用NC代碼行編譯函數,參見圖3,包括提取并過濾NC代碼行序號;調用行PIDP編譯函數;調用PIDP整理函數。所述行PIDP編譯函數程序框圖,參見圖4,其中“*treat()”表示對應“*”開頭的NC命令字符的PIDP編譯函數,例如“Gtreat()”表示對G命令的編譯,這類函數至少有14個,它們的實現原理是相同的。
表15
例9;對一行NC代碼“N102 G01x10.8y30.6”,提取并過濾NC代碼行序號后,余下“G01x10.8y30.6”存入數組stmp[],通過識別stmp
來決定調用哪個*treat()函數?由于iv=0,stmp[iv]為‘G’,因此,調用Gtreat()。這時數組下標變量iv++,Gtreat()從stmp[iv]按序讀取數字字符“01”,并存入數組cnum[]數組,連續數字字符提取完成后,判斷cnum[]的串長度是否等于0或大于2,是,為語法有錯,不進行編譯而進行有錯處理;否,為語法無錯,就將cnum[]中的字符串轉換成整型數,并存入v1變量,利用switch(v1){……}語句識別出為G01命令,進而將G01的目標碼1001寫入PIDP的緩沖區的第一個單元,程序編號102寫入第二個單元,長度9寫入第三個單元,至此Gtreat()執行結束。以后的“x10.8y30.6”由Xtreat()和Ytreat()函數來進行編譯,并將編譯的數據寫入第四、第五單元。由于本例中無Z數據,就將當前的Z數據直接寫入第六單元,并將當前的速度數據寫入第八單元,而第七、第九單元先寫入0,在需要Vs、Ve的情況下,等待以后由PIDP整理函數最終確定這些速度數據。
所述將經過行編譯程序產生的PIDP按要求整理并寫入目標文件的具體要求包括a.必需的順序要求例如NC01X10.2Y10.8M08,M08的PIDP要位于G01X10.2Y10.8的PIDP之前。
b.可選的相關性要求在加工過程中本段加工軌跡與前繼段、后續段的相互關系,例如軌跡段之間的速度銜接越平滑越好。這種相互關系主要取決于數控軟件中的運動控制函數需要Vs、Vm、Ve時,PIDP整理函數才采用速度預算最終確定這些速度數據。
所述PIDP整理程序如下a.將當前PIDP存入緩沖區BuffData中,緩沖區Buff_result用于存儲一批有相關性運動NC命令的PIDP;b.判是否為運動NC命令,可通過是否有X、Y、Z坐標數據判別,是,執行c;否,執行g;c.判是否為G00命令如果是G00命令,再判是否是一批的開始,即Buff_result中是否有數據,無數據為一批的開始,狀態變量Seg_count=0表示為一批的開始是,將G00的PIDP寫入目標文件,然后返回;否,將前一批PIDP進行相關速度預算,并將Buff_result中的數據寫入目標文件,將G00的PIDP寫入目標文件,然后返回;如果不是G00命令,執行d;d.判是否為G01命令
如果是G01命令,再判是否是一批的開始是,將G01的PIDP存入Buff_result,然后返回;否,再進行是否相關性判別是,將PIDP存入Buff_result,然后返回;否,對前一批PIDP進行速度預算并將前一批PIDP寫入目標文件,將當前G01的PIDP寫入Buff_result,然后返回;如果不是G01命令,執行e;e.判是否為G02或G03如果是G02或G03命令,再判是否一批的開始是,將PIDP存入Buff_result,然后返回;否,再進行是否相關性判別是,將PIDP存入Buff_result,然后返回;否,對前一批PIDP進行速度預算并將前一批PIDP寫入目標文件,將當前G02或G03的PIDP存入Buff_result,然后返回;如果不是G02也不是G03,執行f;f.判是否為G28命令是,再判Seg_count是否等于0是,將G28的PIDP寫入目標文件,然后返回;否,對Buff_result中的數據進行速度預算,并將buff_result中的PIDP寫入目標文件,接著將G28的PIDP寫入目標文件,然后返回;如果不是G28,執行g;g.判是否為一批的開始是,將當前的PIDP寫入目標文件,然后返回;否,將Buff_result中的PIDP進行速度預算,并將預算后的PIDP寫入目標文件,接著將當前的PIDP寫入目標文件,然后返回。
④判斷翻譯結果是否正確通過出錯計數器是否大于0來判斷是否正確,否為正確,產生表示正確的報告并存盤,進入⑤;是為不正確,直接進入⑤。
⑤關閉所有文件,程序結束。
(2)在上位機中運行PIDP_NC代碼編譯器,將NC程序翻譯成特定數據格式且完全順序執行意義的目標碼文件。
上位機的軟件通過調用格式system(“PIDP_NC sgcode.txt”)運行PIDP_NC代碼編譯器,其中PIDP_NC是可執行文件;sgcode.txt為NC程序文件.運行的結果是產生內容為PIDP序列的sgcode.obj目標文件,將NC代程序編譯成特定數據格式且完全順序執行意義的目標碼文件。
(3)上位機按順序分批將PIDP目標碼送入下位機循環緩沖區。
下位機循環緩沖區由兩個同容量緩沖區buffer1和buffer2組成,上位機在整個加工過程中不斷地查詢緩沖區buffer1、buffer2的狀態變量buffer1_status、buffer2_status,如果其中某個變量的值為零,就向該緩沖區寫入PIDP數據,寫入步驟如下1)在上位機開辟臨時緩沖區PC_buff,變量x清零,sum_size清零,指針指向PC_buff首地址,PC_buff與buffer1大小相同;2)從目標文件中按順序讀出一個PIDP,并得到該PIDP的長度值x;3)按順序將PIDP寫入PC_buff,sum_size=sum_size+x;4)判斷sum_size+m的值是否大于PC_buff的長度,是,進入步驟5);否,繼續步驟2);其中m大于或等于最大PIDP的長度,推薦值是60;5)將PC_buff剩余單元填入數據0x80000000,表示后續單元不是有效的PIDP;6)通過緩沖區狀態變量判別下位機是否有空閑緩沖區,是,進入步驟7);否,繼續判別;7)用嵌入系統提供的數據通信操作函數,將PC_buff數據寫入下位機的空閑緩沖區中;8)置當前緩沖區狀態變量為1,表示該緩沖區數據不能被覆蓋,至此,一批PIDP下傳結束,x清零,sum_size清零,指針指向PC_buff首地址,轉至步驟2),如此循環直到目標文件結束。
(4)下位機使用PIDP。
下位機從循環緩沖區中按順序讀取包括下位機循環緩沖區管理PIDP和下位機用PIDP目標碼,經過對PIDP中數據識別判定出對應NC命令的意義,同時得到對應的數據,根據命令的意義調用相應的運動控制函數,實現加工控制。
1)下位機從循環緩沖區中按順序讀取包括下位機循環緩沖區管理PIDP和下位機用PIDP目標碼。
上位機已經分別將第一、二批數據送入下位機循環緩沖區Buffer1、Buffer2,下位機的控制軟件首先從Buffer1按序讀取數據,經識別算法調用相應的運動控制函數實現數控加工,使用完Buffer1中的數據,就將buffer1_statue變量置零,接著使用Buffer2的數據,此時buffer2_statue=1,上位機又同時將第三批數據送入Buffer1,下位機使用完Buffer2中的數據,又將buffer2_statue變量置零,接著又使用Buffer1,此時buffer1_statue=1,上位機又同時將第四批數據送入Buffer2,PIDP數據是依次循環送入Buffer1、Buffer2,使用PIDP也是依次循環使用Buffer1、Buffer2;軟件設計規劃時,定義循環緩沖區Buffer1、2的大小為2KB或更小,采用循環緩沖區隊列,無論NC程序多么大,即無論PIDP目標文件多么大,下位機的數據緩沖RAM只需要4KB,可以顯著節省下位機的存儲空間。
2)下位機經過對PIDP識別判定出對應NC命令的意義,同時得到對應的數據,根據命令的意義調用相應的運動控制函數,實現加工控制。
下位機獲取一個PIDP,用switch(){…}語句對PIDP中第一個單元進行命令目標碼識別,如果是1001,調用直線運動控制函數;如果是1002,調用圓弧運動控制函數;如果是其它整數,就調用其它的相應的函數,以實現加工控制,參見圖5。在調用上述函數時,由于PIDP中有包長度數據和參數,可以從中獲得函數需要的參數。
以上內容是結合具體的優選實施方式對本發明所作的進一步詳細說明,不能認定本發明的具體實施只局限于這些說明。對于本發明所屬技術領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬于本發明由所提交的權利要求書確定的專利保護范圍。
權利要求
1.一種數控代碼編譯器,其特征在于其構建包括1)定義即編制NC命令的目標碼;2)設計制定對應NC命令的PIDP的格式及內容包括PIDP的格式、以及多參數、無參數和單參數命令的PIDP制定;3)設計編寫在上位機運行的PIDP_NC代碼編譯器,有以下步驟①打開NC程序文件用打開文件函數打開NC程序文件、至少創建一個用于存儲目標碼的目標文件、一個用于記錄編譯結果的報告文件;②對NC程序文件進行整理將帶有子程序的NC程序宏擴展處理成沒有子程序的順序型NC程序文件;③對順序型NC程序文件進行PIDP編譯包括對編譯中所用的變量設置初始值;通過系統配置文件設置系統參數變量;循環調用行編譯函數,按順序將每一個NC命令編譯成一個PIDP,并將編譯產生的完全順序執行意義的PIDP序列以目標文件的形式存儲在上位機的硬盤中;還包括調用PIDP整理函數完成速度預算,以及完成在一行編譯后可能有的多個PIDP的整理;④判斷編譯結果是否正確是,就生成報告正確信息的文件;否,就生成報告出錯信息的文件;⑤關閉所有文件,程序結束。
2.按照權利要求1所述的數控代碼編譯器,其特征在于所述PIDP的格式是特定數據格式,在填入數據后成為PIDP目標碼。
3.按照權利要求1或2所述的數控代碼編譯器,其特征在于所述PIDP目標碼都是由整型數據編碼組成。
4.按照權利要求3所述的數控代碼編譯器,其特征在于所述PIDP的特定數據格式是命令目標碼+序號+包長度+參數。
5.按照權利要求4所述的數控代碼編譯器,其特征在于由PIDP_NC源程序文件、PIDP_NC_lib庫文件和PIDP_NC_sys系統配置文件及幫助信息文件PIDP_NC_help組成。
6.按照權利要求5所述的數控代碼編譯器,其特征在于適用于Windows2000、WindowsXP和Linux操作系統。
7.按照權利要求6所述的數控代碼編譯器,其特征在于適用于由Java、C和C++開發的數控系統軟件。
8.一種基于數控代碼編譯器建立數控系統軟件的方法,其特征在于有以下步驟(1)構建PIDP_NC代碼編譯器;(2)在上位機中采用PIDP_NC代碼編譯器將NC程序編譯成特定數據格式且完全順序執行意義的目標碼文件;(3)上位機按順序分批將PIDP目標碼送入下位機循環緩沖區;(4)下位機從循環緩沖區中按順序讀取包括下位機循環緩沖區管理PIDP和下位機用PIDP目標碼,經過對PIDP中數據識別判定出對應NC命令的意義,同時得到對應的數據,根據命令的意義調用相應的運動控制函數,實現加工控制。
9.按照權利要求8所述的基于數控代碼編譯器建立數控系統軟件的方法,其特征在于所述數控代碼編譯器的PIDP的格式是特定數據格式,在填入數據后成為由整型數據編碼組成的PIDP目標碼。
10.按照權利要求8或9所述的基于數控代碼編譯器建立數控系統軟件的方法,其特征在于所述PIDP的特定數據格式是命令目標碼+序號+包長度+參數。
全文摘要
本發明公開了一種數控代碼編譯器,還公開了一種基于其建立數控系統軟件的方法,其特征在于有以下步驟(1)構建PIDP_NC代碼編譯器;(2)在上位機中采用PIDP_NC代碼編譯器將NC程序編譯成特定數據格式且完全順序執行意義的目標碼文件;(3)上位機按順序分批將PIDP目標碼送入下位機循環緩沖區;(4)下位機從循環緩沖區中按順序讀取包括下位機循環緩沖區管理PIDP和下位機用PIDP目標碼,經過對PIDP中數據識別判定出對應NC命令的意義,同時得到對應的數據,根據命令的意義調用相應的運動控制函數,實現加工控制。有利于下位機運行高級算法實現高精度和多軸實時控制,將下位機軟件簡單化,還徹底解決了NC子程序的跳轉和返回的難題,可以廣泛適用多種下位機系統。
文檔編號G05B19/18GK1811632SQ20051012100
公開日2006年8月2日 申請日期2005年12月19日 優先權日2005年12月19日
發明者唐強平, 姜家吉, 周學才, 黃銳軍, 覃國蓉, 吳瑜 申請人:深圳信息職業技術學院