楊 超 謝劍剛
基于區(qū)位碼字典對數(shù)控程序進(jìn)行中文注釋
楊 超 謝劍剛
當(dāng)前數(shù)控機床系統(tǒng)中,數(shù)控程序可讀性差,可查找性弱,不利于重復(fù)使用;并且由于數(shù)控設(shè)備存儲空間較小,軟件功能較弱,無法使用拼音、五筆的普通漢字輸入法。為解決這些缺點,特提出一種利用區(qū)位碼互譯字典和區(qū)位輸入法的中文注釋方法,即向數(shù)控程序中輸入一串區(qū)位碼字符串,通過轉(zhuǎn)換成對應(yīng)GB碼,找到漢字庫中的點陣送給LCD顯示,使得在數(shù)控程序中加入了中文注釋。為避免數(shù)控程序在加入中文注釋之后,數(shù)控機床在加工時產(chǎn)生錯誤,特借鑒C語言的編程注釋和轉(zhuǎn)義字符的方法。在數(shù)控編程語句行中,一串區(qū)位碼注釋的開頭和結(jié)尾加入“*”,用以屏蔽注釋,保護(hù)加工程序。在模擬運行時,數(shù)控系統(tǒng)將區(qū)位碼字符串翻譯并顯示為中文,在不影響數(shù)控機床加工的前提下,提高了數(shù)控程序的可讀性和可查找性,便于程序的修改和重復(fù)使用。
數(shù)控編程是把零件的圖形尺寸、工藝過程、工藝參數(shù)、機床的運動以及刀具位移等內(nèi)容,按照數(shù)控機床的編程格式和能識別的語言記錄在程序單上的全過程。程序編制的方法主要有自動編程和手工編程兩類。近年來數(shù)控技術(shù)發(fā)展十分迅速,數(shù)控機床的普及越來越高,CAD/CAM集成技術(shù)編制數(shù)控加工程序為主流。自動編程具有十分顯著的優(yōu)點:編程速度快、易于加工復(fù)雜型腔和表面、不易出錯。但自動編程的程序代碼因為是利用三維軟件自動生成的,其可讀性差,不能完全了解內(nèi)部的程序,難于看懂和修改,并且軟件價格十分昂貴。手工編程需要花費大量時間且容易出錯,但價格便宜,在加工要求不高的一些中小型企業(yè)仍然被廣泛采用。不管是自動編程還是手工編程,對編制后的復(fù)雜、大型的程序,事后要想看懂每段程序的含義是十分困難的。特提出一種在數(shù)控程序中加入以“*”開頭和結(jié)尾的中文注釋的方法?!?”的主要作用是屏蔽注釋內(nèi)容,保護(hù)加工程序的可執(zhí)行性,以免數(shù)控機床加工時出現(xiàn)錯誤。
目前的數(shù)控機床系統(tǒng)中,只有三種字符的輸入和顯示形式,即英文大寫字母、數(shù)字和特殊字符(%)。所以想要在數(shù)控程序中加入中文注釋,需要利用區(qū)位輸入法。在實現(xiàn)區(qū)位輸入法之前,需要先準(zhǔn)備區(qū)位碼互譯字典。該字典為中文與區(qū)位碼互譯字典,即既可以將漢字翻譯成區(qū)位碼,又可以將區(qū)位碼翻譯成漢字。該字典安裝在數(shù)字設(shè)備中,將所有常用漢字和漢字區(qū)位碼一一對應(yīng),存儲在數(shù)字設(shè)備的存儲器中,以便數(shù)字設(shè)備能夠直接準(zhǔn)確搜索到漢字的區(qū)位碼。
將漢字、字母和數(shù)字組成的原字符串輸入到字典的編輯框中,利用數(shù)字設(shè)備的搜索能力,直接將一個一個漢字翻譯成其對應(yīng)的區(qū)位碼,形成一串?dāng)?shù)字字符。原字符串中的非漢字字符不被翻譯,直接在其前后冠以轉(zhuǎn)義字符“/”,以便保留原字符串中的字母和數(shù)字,以免與翻譯出來的漢字區(qū)位碼產(chǎn)生混淆。為便于清楚看到每個漢字對應(yīng)的區(qū)位碼,采用逐字分格,數(shù)字設(shè)備能自動將新字符串按照4位數(shù)字為一個漢字區(qū)位碼進(jìn)行分格,如圖1所示。
圖1 區(qū)位碼互譯字典
區(qū)位碼翻譯成漢字
在數(shù)控機床中輸入,并且數(shù)控系統(tǒng)讀入?yún)^(qū)位碼字符串之后,數(shù)控系統(tǒng)能自動將區(qū)位碼翻譯成對應(yīng)的漢字。這個過程與上述相反,但原理相同,不再贅述。
圖2 數(shù)控程序中輸入?yún)^(qū)位碼字符串
圖3 轉(zhuǎn)換后的數(shù)控程序和注釋
自動編程
在自動編程生成程序文本之后,一旦程序脫離了三維軟件,程序語句含義必然十分難懂。因為計算機軟件功能強大,可在軟件模擬運行的同時,在程序語句行中直接加入中文注釋,但為了保護(hù)程序的可執(zhí)行性,要加入以“*”開頭和結(jié)尾的轉(zhuǎn)義字符。加入了中文注釋后的自動編程的程序文本,在導(dǎo)入數(shù)控機床之前,被嵌入了區(qū)位碼互譯字典的三維軟件能自動將中文注釋翻譯成區(qū)位碼字符串,輸入到數(shù)控機床中。再由數(shù)控機床模擬運行,系統(tǒng)自動按照每4位數(shù)字進(jìn)行分割、讀取,存入寄存器之中。
手工編程
利用上述區(qū)位碼互譯字典,在準(zhǔn)備好的數(shù)控程序和區(qū)位碼字符串后,開始輸入。為避免數(shù)控系統(tǒng)在分割數(shù)字字符串時產(chǎn)生混淆,出現(xiàn)錯誤,需要在非漢字區(qū)位碼字符前后加入轉(zhuǎn)義字符“/”,保護(hù)并在屏幕中顯示出轉(zhuǎn)義字符“/”內(nèi)的非漢字字符。在進(jìn)行數(shù)控編程時,數(shù)控顯示界面左側(cè)正常輸入數(shù)控程序,右側(cè)的同一行中輸入以“*”開頭的注釋部分,連續(xù)輸入一串字符串,例如圖1中的“2212 306328512504/3/448547632246/ABO/”;輸入完成之后再以“*”結(jié)尾。若一行之中內(nèi)容較長,需要兩行顯示,則需要加入換行轉(zhuǎn)義字符“”。在輸入換行轉(zhuǎn)義字符“”后,顯示界面的輸入光標(biāo)自動與上一行的“*”對齊,用以銜接注釋部分的內(nèi)容,而不影響左側(cè)數(shù)控程序的輸入。例如輸入圖2之中的內(nèi)容。
在輸入完成之后,一般需要模擬運行調(diào)試程序,在模擬運行的時候,輸入的區(qū)位碼字符串,被讀入ROM,數(shù)控系統(tǒng)自動將“*”內(nèi)的區(qū)位碼串按照每4位數(shù)字進(jìn)行分割、讀取。若行中存在換行轉(zhuǎn)義字符“”,系統(tǒng)自動銜接“”前后的內(nèi)容,并仍然按照每4位數(shù)字進(jìn)行分割、讀取,存入寄存器之中。
系統(tǒng)讀取寄存器之中的漢字區(qū)位碼后,通過轉(zhuǎn)換成GB碼,在經(jīng)過查找它所對應(yīng)的漢字庫中的點陣,送給LCD顯示?!?”用以屏蔽注釋,保護(hù)程序,直接保留、顯示。兩個“/”之間的非漢字字符,將直接刪除“/”后被顯示出來。換行轉(zhuǎn)義字符“”也被刪除。圖2中的內(nèi)容被轉(zhuǎn)換之后,顯示如圖3所示。
本文提出一種區(qū)位碼互譯字典,可以將漢字和區(qū)位碼互譯,而非漢字字符不翻譯,直接在其前后分別冠以轉(zhuǎn)義字符“/”,加以保護(hù)。
本文利用漢字區(qū)位輸入法,將以“*”開頭和結(jié)尾的區(qū)位碼字符串,經(jīng)過數(shù)控系統(tǒng)的翻譯、轉(zhuǎn)換和LED顯示,最終在數(shù)控界面中顯示出中文注釋加入了中文注釋后的程序,不僅有了中文文件名注釋,提高了程序的可查找性;還在關(guān)鍵語句中加入了注釋,解決了數(shù)控程序含義難懂的問題,提高了程序的可讀性,便于修改和重復(fù)使用。
10.3969/j.issn.1001-8972.2015.17.019