專利名稱:基于宏程序的代碼調(diào)試及仿真的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是一種數(shù)控加工代碼程序調(diào)試和仿真方法和裝置,特別涉及的是一 種基于宏程序的代碼調(diào)試及仿真的方法和裝置。
背景技術(shù):
隨著全球競(jìng)爭(zhēng)日益劇烈,數(shù)控加工作為保證產(chǎn)品質(zhì)量、提高勞動(dòng)生產(chǎn)率及實(shí)現(xiàn)自 動(dòng)化的重要手段被廣泛應(yīng)用到汽車、航空、模具等各個(gè)制造領(lǐng)域。而數(shù)控機(jī)床是否能充分發(fā) 揮其作用,重要的一點(diǎn)在于其所使用的數(shù)控程序的效率和易用性。在實(shí)際生產(chǎn)中有很多結(jié) 構(gòu)相似、尺寸不同的零件,如果每批零件都去編制數(shù)控加工程序,將浪費(fèi)大量時(shí)間。充分利 用宏程序是解決這些問(wèn)題非常有效的措施。包含有變量、轉(zhuǎn)向、比較判斷等功能的指令稱為 宏指令,包含有宏指令的程序稱為宏程序。對(duì)于反復(fù)進(jìn)行同一切削動(dòng)作的程序,可以使用宏 程序進(jìn)行編制,簡(jiǎn)單的宏指令代表了復(fù)雜的加工動(dòng)作。數(shù)控機(jī)床加工零件是靠數(shù)控指令程序控制完成的。為確保數(shù)控程序的正確性,防 止加工過(guò)程中干涉和碰撞的發(fā)生,在實(shí)際生產(chǎn)中,常采用試切的方法進(jìn)行檢驗(yàn)。但這種方法 費(fèi)工費(fèi)料,代價(jià)昂貴,使生產(chǎn)成本上升,增加了產(chǎn)品加工時(shí)間和生產(chǎn)周期。后來(lái)又采用軌跡 顯示法,即以劃針或筆代替刀具,以著色板或紙代替工件來(lái)仿真刀具運(yùn)動(dòng)軌跡的二維圖形 (也可以顯示二維半的加工軌跡),有相當(dāng)大的局限性。對(duì)于工件的三維和多維加工,也有 用易切削的材料代替工件(如,石蠟、木料、改性樹(shù)脂和塑料等)來(lái)檢驗(yàn)加工的切削軌跡。但 是,試切要占用數(shù)控機(jī)床和加工現(xiàn)場(chǎng)。同時(shí)仍然存在以下問(wèn)題1)編寫宏程序,主要是采用手工編寫加工代碼,耗費(fèi)時(shí)間較長(zhǎng),容易出現(xiàn)錯(cuò)誤,無(wú) 法勝任復(fù)雜形狀零件的編程。據(jù)國(guó)外資料統(tǒng)計(jì),當(dāng)采用手工編程時(shí),一段程序的編寫時(shí)間與 其在機(jī)床上運(yùn)行加工的實(shí)際時(shí)間之比,平均約為30 1,而數(shù)控機(jī)床不能開(kāi)動(dòng)的原因中有 20% 30%是由于加工程序編制困難,編程時(shí)間較長(zhǎng)。2)使用CAM軟件進(jìn)行自動(dòng)編程,是解決了手工編寫的問(wèn)題,但生成的加工代碼比 較長(zhǎng),不具有通用性,換一個(gè)類似的零件,還得需要重新生成程序代碼。3)宏程序調(diào)試?yán)щy,無(wú)法顯示變量的中間值,真實(shí)的模擬程序的運(yùn)行、程序的跳 轉(zhuǎn)。鑒于上述缺陷,本發(fā)明創(chuàng)作者經(jīng)過(guò)長(zhǎng)時(shí)間的研究和實(shí)踐終于獲得了本創(chuàng)作。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種基于宏程序的代碼調(diào)試及仿真的方法和裝置,用以 克服現(xiàn)有技術(shù)中存在的缺陷。為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案在于,首先提供一種基于宏程序的代碼 調(diào)試及仿真的方法,其包括的步驟為步驟a 輸入加工代碼程序;
步驟b 以程序段為單位編譯所述的代碼程序,建立語(yǔ)句樹(shù);步驟c 遍歷所述語(yǔ)句樹(shù),計(jì)算結(jié)果,生成軌跡數(shù)據(jù);步驟d 選擇進(jìn)入調(diào)試和仿真環(huán)境;步驟e 進(jìn)行單段執(zhí)行或是斷點(diǎn)設(shè)置執(zhí)行到某一程序段。其中,所述的步驟b包括
步驟bl 建立所述語(yǔ)句樹(shù)的頭節(jié)點(diǎn);步驟b2 判斷正在編譯的程序段是否有錯(cuò)誤,如果有錯(cuò)誤顯示錯(cuò)誤信息,執(zhí)行下 述步驟b4 ;步驟b3:建立語(yǔ)句結(jié)點(diǎn),并與所述語(yǔ)句樹(shù)中對(duì)應(yīng)的父節(jié)點(diǎn)建立連接,判斷是否還有 程序段沒(méi)有編譯完成,是,則編譯下一程序段并執(zhí)行上述步驟b2,否,則執(zhí)行下述步驟b4 ;步驟b4:完成。其中,所述的步驟e包括步驟el 在每一程序段,設(shè)置唯一標(biāo)識(shí)的特征,作為斷點(diǎn)執(zhí)行或程序跳轉(zhuǎn)的標(biāo)識(shí);步驟e2 建立一個(gè)變量表,存儲(chǔ)變量信息;步驟e3 對(duì)語(yǔ)句樹(shù)的每一結(jié)點(diǎn)進(jìn)遍歷;步驟e4 當(dāng)變量信息中的變量值發(fā)生變化時(shí),更新變量表中變量信息。其次提供一種基于宏程序的代碼調(diào)試及仿真的裝置,其包括—輸入模塊,其用以輸入加工代碼程序;一反讀模塊,以程序段為單位編譯所述的代碼程序,建立語(yǔ)句樹(shù);一執(zhí)行模塊,遍歷所述語(yǔ)句樹(shù),計(jì)算結(jié)果,生成軌跡數(shù)據(jù);一啟動(dòng)模塊,用以選擇進(jìn)入調(diào)試和仿真環(huán)境;一調(diào)試和仿真模塊,用以進(jìn)行單段執(zhí)行或是斷點(diǎn)設(shè)置執(zhí)行到某一程序段。較佳的,所述的反讀模塊中還設(shè)有判斷單元,用以判斷程序段解析是否有錯(cuò)誤。較佳的,還包括一顯示模塊,其用以進(jìn)行代碼顯示、圖形顯示、變量顯示以及錯(cuò)誤 提示。與現(xiàn)有技術(shù)比較本發(fā)明的有益效果在于,解決了宏程序的編輯與調(diào)試問(wèn)題;降低 了操作難度和風(fēng)險(xiǎn),增強(qiáng)了加工的安全性,提高了產(chǎn)品加工的合格率;減少加工準(zhǔn)備時(shí)間, 提高了生產(chǎn)效率。節(jié)省了資金,降低了成本。
圖1為本發(fā)明基于宏程序的代碼調(diào)試及仿真的方法實(shí)施例的流程圖;圖2為本發(fā)明基于宏程序的代碼調(diào)試及仿真的方法中宏程序的分類示意圖;圖3為本發(fā)明基于宏程序的代碼調(diào)試及仿真的方法中語(yǔ)句樹(shù)實(shí)施例的結(jié)構(gòu)圖;圖4為本發(fā)明基于宏程序的代碼調(diào)試及仿真的方法中調(diào)試的流程圖;圖5為本發(fā)明基于宏程序的代碼調(diào)試及仿真的裝置的較佳實(shí)施例的功能結(jié)構(gòu)框 圖。
具體實(shí)施例方式以下結(jié)合附圖,對(duì)本發(fā)明上述的和另外的技術(shù)特征和優(yōu)點(diǎn)作更詳細(xì)的說(shuō)明。
對(duì)于本具體實(shí)施方式
而言,加工代碼程序理解為一個(gè)數(shù)控加工代碼是由多個(gè)程 序段組成的,每個(gè)程序段執(zhí)行一個(gè)加工步驟,而一個(gè)程序段又可以由若干個(gè)字組成,字是組 成程序段的基本元素,由字構(gòu)成數(shù)控系統(tǒng)的指令。隨著數(shù)控技術(shù)的發(fā)展,現(xiàn)在大多數(shù)數(shù)控系 統(tǒng)不僅能夠處理一般的準(zhǔn)備功能和輔助功能,而且能夠處理宏程序。宏程序是數(shù)控編程的重要補(bǔ)充,其中變量的用途有運(yùn)算、遞增量或遞減量、與一 個(gè)表達(dá)式比較后,決定是否實(shí)現(xiàn)跳轉(zhuǎn)功能的條件分支、將變量值傳遞到零件程序中去;其中 運(yùn)算又包括算術(shù)運(yùn)算(賦值、加、減、乘、除、絕對(duì)值、四舍五入等);函數(shù)運(yùn)算(正弦、余弦、 正切、反正切、平方根等);邏輯操作(與、或);比較操作(等于、大于、小于、大于或等于、小 于或等于、不等于)。請(qǐng)參閱圖1所示,其為本發(fā)明基于宏程序的代碼調(diào)試及仿真的方法實(shí)施例的流程 圖;所述的基于宏程序的代碼調(diào)試及仿真的方法,其包括的步驟為步驟a 輸入加工代碼程序;步驟b 以程序段為單位編譯所述的代碼程序,建立語(yǔ)句樹(shù);步驟c 遍歷所述語(yǔ)句樹(shù),計(jì)算結(jié)果,生成軌跡數(shù)據(jù); 步驟d 選擇進(jìn)入調(diào)試和仿真環(huán)境;步驟e 選擇單段執(zhí)行或設(shè)置斷點(diǎn)執(zhí)行到某一程序段。較佳的,上述步驟b包括步驟bl 建立所述語(yǔ)句樹(shù)的頭節(jié)點(diǎn);步驟b2 判斷正在編譯的程序段是否有錯(cuò)誤,如果有錯(cuò)誤顯示錯(cuò)誤信息,執(zhí)行下 述步驟b4 ;步驟b3 建立語(yǔ)句結(jié)點(diǎn),并與所述語(yǔ)句樹(shù)中對(duì)應(yīng)的父節(jié)點(diǎn)建立連接,判斷是否還 有程序段沒(méi)有編譯完成,是,則編譯下一程序段并執(zhí)行上述步驟b2,否,則執(zhí)行下述步驟 b4 ;步驟b4:完成。上述步驟b2所述的錯(cuò)誤原因通常分為兩類,一類是解析時(shí)出錯(cuò),主要是語(yǔ)法錯(cuò) 誤,如語(yǔ)句的格式錯(cuò)誤、字符串無(wú)法識(shí)別等;另一類是執(zhí)行出錯(cuò),如循環(huán)超過(guò)最大循環(huán)次數(shù) 限制,變量沒(méi)有定義等錯(cuò)誤。錯(cuò)誤信息將告知編程人員哪一個(gè)程序段的哪里出錯(cuò)了,出了什 么問(wèn)題,極大地提示編程人員,幫助其更快的解決程序中的錯(cuò)誤。本發(fā)明基于宏程序的代碼調(diào)試及仿真的方法中步驟b和步驟e尤為重要,參閱圖2 所示,其為本發(fā)明基于宏程序的代碼調(diào)試及仿真的方法中宏程序的分類示意圖;根據(jù)加工 代碼的特點(diǎn),本發(fā)明將程序段語(yǔ)句分為G代碼語(yǔ)句、循環(huán)定義語(yǔ)句、變量定義語(yǔ)句、變量賦 值語(yǔ)句、WHILE語(yǔ)句、IF語(yǔ)句、GOTO語(yǔ)句、子程序語(yǔ)句、模態(tài)調(diào)用語(yǔ)句等。每一種語(yǔ)句,均是 從“語(yǔ)句類”派生。如果加工代碼解析沒(méi)有錯(cuò)誤時(shí),則建立語(yǔ)句樹(shù)。語(yǔ)句樹(shù)由一系列的語(yǔ)句結(jié)點(diǎn)組成, 直觀地表示了各個(gè)語(yǔ)句之間的關(guān)系,即父子關(guān)系與兄弟關(guān)系。請(qǐng)參閱圖3所示,其為本發(fā)明基于宏程序的代碼調(diào)試及仿真的方法中語(yǔ)句樹(shù)實(shí)施 例的結(jié)構(gòu)圖;其是以下面一段程序語(yǔ)言為例建立的,并且建立語(yǔ)句樹(shù)是實(shí)現(xiàn)本發(fā)明的一個(gè) 關(guān)鍵00001 ;
#1 = 0;#2=1;WHILE[#2 LE 10]DO 1 ;#1 = #l+#2 ;#2 = #2+1 ;END 1 ;M30 ;WHILE語(yǔ)句是宏程序中的一種,DO標(biāo)志作用域開(kāi)始,END標(biāo)志作用域結(jié)束。作用域 內(nèi) 的語(yǔ)句結(jié)點(diǎn)均為WHILE語(yǔ)句結(jié)點(diǎn)的子結(jié)點(diǎn),也就是說(shuō)WHILE是它們的父結(jié)點(diǎn)。每編譯一 個(gè)程序段,如果沒(méi)有錯(cuò)誤,就生成一個(gè)語(yǔ)句結(jié)點(diǎn),就聯(lián)結(jié)到語(yǔ)句樹(shù)的相應(yīng)位置。請(qǐng)參閱圖4所示,其為本發(fā)明基于宏程序的代碼調(diào)試及仿真的方法中調(diào)試的流程 圖;其是針對(duì)上述步驟e所述的進(jìn)行單段執(zhí)行或是斷點(diǎn)設(shè)置執(zhí)行到某一程序段,其實(shí)現(xiàn)的 步驟為步驟el 在每一程序段,設(shè)置唯一標(biāo)識(shí)的特征,作為斷點(diǎn)執(zhí)行或程序跳轉(zhuǎn)的標(biāo)識(shí);步驟e2 建立一個(gè)變量表,存儲(chǔ)變量信息;步驟e3 對(duì)語(yǔ)句樹(shù)的每一結(jié)點(diǎn)進(jìn)遍歷;步驟e4 當(dāng)變量信息中的變量值發(fā)生變化時(shí),更新變量表中變量信息。編程人員可以在變量watch窗口中,鍵入需要觀察的變量名,以確定程序是否與 要求的一致。編程人員可以選擇單步執(zhí)行程序,或者斷點(diǎn)執(zhí)行到某一段。在調(diào)試與仿真過(guò)程中,通過(guò)實(shí)時(shí)顯示變量、軌跡,通過(guò)觀察代碼、變量、軌跡三者相 互關(guān)系,可以簡(jiǎn)單地確定程序是否滿足要求,哪里不合要求,需要怎么調(diào)整。利用此發(fā)明可以對(duì)多種數(shù)控系統(tǒng)的加工代碼進(jìn)行仿真與調(diào)試,支持宏程序的調(diào)試 與仿真,極大的方便了編程人員編寫代碼、檢驗(yàn)代碼。本發(fā)明可用于機(jī)床數(shù)控系統(tǒng)、CAM軟件使用?;谏鲜龅乃枷?,本發(fā)明同時(shí)還提供一種基于宏程序的代碼調(diào)試及仿真的裝置。請(qǐng)參閱圖5所示,其為本發(fā)明基于宏程序的代碼調(diào)試及仿真的裝置的較佳實(shí)施例 的功能結(jié)構(gòu)框圖,其包括一輸入模塊1,其用以輸入加工代碼程序;一反讀模塊2,以程序段為單位編譯所述的代碼程序,建立語(yǔ)句樹(shù),其首先設(shè)置所 述語(yǔ)句樹(shù)的父節(jié)點(diǎn);判斷正在編譯的程序段是否有錯(cuò)誤,如果有錯(cuò)誤顯示錯(cuò)誤信息,完成編 譯;如果沒(méi)有錯(cuò)誤,則建立語(yǔ)句結(jié)點(diǎn),并與所述語(yǔ)句樹(shù)中對(duì)應(yīng)的父節(jié)點(diǎn)建立連接,然后對(duì)下 一個(gè)程序段進(jìn)行編譯,直到所有的加工代碼全部解析完成,此時(shí)對(duì)應(yīng)的語(yǔ)句樹(shù)就建立起來(lái) 了。一執(zhí)行模塊3,遍歷所述語(yǔ)句樹(shù),計(jì)算結(jié)果,生成軌跡數(shù)據(jù);一啟動(dòng)模塊4,用以選擇進(jìn)入調(diào)試和仿真環(huán)境;一調(diào)試和仿真模塊5,用以進(jìn)行單段執(zhí)行或是斷點(diǎn)設(shè)置執(zhí)行到某一程序段,其首先 在每一程序段,設(shè)置唯一標(biāo)識(shí)的特征,作為斷點(diǎn)執(zhí)行或程序跳轉(zhuǎn)的標(biāo)識(shí);然后建立一個(gè)變量 表,存儲(chǔ)變量信息;對(duì)語(yǔ)句樹(shù)的每一結(jié)點(diǎn)進(jìn)遍歷;當(dāng)變量信息中的變量值發(fā)生變化時(shí),更新變量表中變量信息。較佳的,所述的反讀模塊2中還設(shè)有判斷單元21,用以判斷程序段解析是否有錯(cuò)
誤。
較佳的,還包括一顯示模塊6,其用以進(jìn)行代碼顯示、圖形顯示、變量顯示以及錯(cuò) 誤提示。以上所述僅為本發(fā)明的較佳實(shí)施例,對(duì)本發(fā)明而言僅僅是說(shuō)明性的,而非限制性 的。本專業(yè)技術(shù)人員理解,在本發(fā)明權(quán)利要求所限定的精神和范圍內(nèi)可對(duì)其進(jìn)行許多改變, 修改,甚至等效,但都將落入本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
一種基于宏程序的代碼調(diào)試及仿真的方法,其特征在于,其包括的步驟為步驟a輸入加工代碼程序;步驟b以程序段為單位編譯所述的代碼程序,建立語(yǔ)句樹(shù);步驟c遍歷所述語(yǔ)句樹(shù),計(jì)算結(jié)果,生成軌跡數(shù)據(jù);步驟d選擇進(jìn)入調(diào)試和仿真環(huán)境;步驟e進(jìn)行單段執(zhí)行或是斷點(diǎn)設(shè)置執(zhí)行到某一程序段。
2.根據(jù)權(quán)利要求1所述的基于宏程序的代碼調(diào)試及仿真的方法,其特征在于,所述的 步驟b包括步驟bl 建立所述語(yǔ)句樹(shù)的頭節(jié)點(diǎn);步驟b2 判斷正在編譯的程序段是否有錯(cuò)誤,如果有錯(cuò)誤顯示錯(cuò)誤信息,執(zhí)行下述步 驟b4 ;步驟b3:建立語(yǔ)句結(jié)點(diǎn),并與所述語(yǔ)句樹(shù)中對(duì)應(yīng)的父節(jié)點(diǎn)建立連接,判斷是否還有程 序段沒(méi)有編譯完成,是,則編譯下一程序段并執(zhí)行上述步驟b2,否,則執(zhí)行下述步驟b4 ; 步驟b4:完成。
3.根據(jù)權(quán)利要求2所述的基于宏程序的代碼調(diào)試及仿真的方法,其特征在于,所述的 步驟e包括步驟el 在每一程序段,設(shè)置唯一標(biāo)識(shí)的特征,作為斷點(diǎn)執(zhí)行或程序跳轉(zhuǎn)的標(biāo)識(shí); 步驟e2 建立一個(gè)變量表,存儲(chǔ)變量信息; 步驟e3 對(duì)語(yǔ)句樹(shù)的每一結(jié)點(diǎn)進(jìn)遍歷;步驟e4 當(dāng)變量信息中的變量值發(fā)生變化時(shí),更新變量表中變量信息。
4.一種基于宏程序的代碼調(diào)試及仿真的裝置,其特征在于其包括 一輸入模塊,其用以輸入加工代碼程序;一反讀模塊,以程序段為單位編譯所述的代碼程序,建立語(yǔ)句樹(shù); 一執(zhí)行模塊,遍歷所述語(yǔ)句樹(shù),計(jì)算結(jié)果,生成軌跡數(shù)據(jù); 一啟動(dòng)模塊,用以選擇進(jìn)入調(diào)試和仿真環(huán)境;一調(diào)試和仿真模塊,用以進(jìn)行單段執(zhí)行或是斷點(diǎn)設(shè)置執(zhí)行到某一程序段。
5.根據(jù)權(quán)利要求4所述的基于宏程序的代碼調(diào)試及仿真的裝置,其特征在于所述的 反讀模塊中還設(shè)有判斷單元,用以判斷程序段解析是否有錯(cuò)誤。
6.根據(jù)權(quán)利要求5所述的基于宏程序的代碼調(diào)試及仿真的裝置,其特征在于還包括 一顯示模塊,其用以進(jìn)行代碼顯示、圖形顯示、變量顯示以及錯(cuò)誤提示。
全文摘要
本發(fā)明為一種基于宏程序的代碼調(diào)試及仿真的方法和裝置,其中所述的方法包括的步驟為步驟a輸入加工代碼程序;步驟b以程序段為單位編譯所述的代碼程序,建立語(yǔ)句樹(shù);步驟c遍歷所述語(yǔ)句樹(shù),計(jì)算結(jié)果,生成軌跡數(shù)據(jù);步驟d選擇進(jìn)入調(diào)試和仿真環(huán)境;步驟e進(jìn)行單段執(zhí)行或是斷點(diǎn)設(shè)置執(zhí)行到某一程序段。
文檔編號(hào)G06F11/36GK101968767SQ201010515758
公開(kāi)日2011年2月9日 申請(qǐng)日期2010年10月15日 優(yōu)先權(quán)日2010年10月15日
發(fā)明者白俊濤, 賈喜存, 高玉鳳 申請(qǐng)人:北京數(shù)碼大方科技有限公司