999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux的開放式數(shù)控系統(tǒng)譯碼解釋器的研究

2018-11-05 02:54:56黃繼威林述溫周小宇
機(jī)械制造與自動(dòng)化 2018年5期
關(guān)鍵詞:指令程序

黃繼威,林述溫,周小宇

(福州大學(xué) 機(jī)械工程及自動(dòng)化學(xué)院,福建 福州 350116)

0 引言

開放式數(shù)控系統(tǒng)的出現(xiàn)為智能數(shù)控技術(shù)的發(fā)展創(chuàng)造了有利條件。堅(jiān)持走數(shù)控系統(tǒng)開放化的技術(shù)路線,跟蹤掌握數(shù)控技術(shù)的最新進(jìn)展,解決其中的關(guān)鍵技術(shù),有利于為新一代國產(chǎn)開放式數(shù)控系統(tǒng)的研制打下堅(jiān)實(shí)的基礎(chǔ)[1-2]。解釋器是數(shù)控系統(tǒng)的核心部分之一,數(shù)控系統(tǒng)解釋器通過獲取ISO標(biāo)準(zhǔn)的數(shù)據(jù)指令,并將其轉(zhuǎn)換為內(nèi)部命令用來控制機(jī)床和執(zhí)行數(shù)控系統(tǒng)的輔助功能。數(shù)控機(jī)床采用G代碼來完成這些操作[3-4]。如何準(zhǔn)確、高效地對(duì)數(shù)控程序代碼進(jìn)行譯碼就成為數(shù)控系統(tǒng)開發(fā)過程中的關(guān)鍵問題。

鑒于高速高精、大數(shù)據(jù)量處理要求和開放式數(shù)控系統(tǒng)發(fā)展趨勢(shì),基于Linux平臺(tái)開發(fā)了一種低成本、柔性化、可配置的開放式數(shù)控系統(tǒng)。現(xiàn)有的數(shù)控譯碼解釋器進(jìn)行譯碼的方式主要有兩種:編譯式譯碼和解釋式譯碼。編譯式一次性解析所有加工程序,速度快,但占用較大的系統(tǒng)資源。解釋式每次只解析一段加工程序,結(jié)構(gòu)簡(jiǎn)單,要求譯碼速度足夠快以滿足后續(xù)插補(bǔ)模塊對(duì)加工數(shù)據(jù)的要求,這種方式對(duì)實(shí)時(shí)性的要求較為苛刻。

為滿足本數(shù)控系統(tǒng)粗精異步插補(bǔ)的需求,實(shí)現(xiàn)高速高精運(yùn)動(dòng)控制,通過對(duì)以上兩種方式的分析,結(jié)合其各自的優(yōu)點(diǎn),采用緩沖區(qū)中斷機(jī)制進(jìn)行分段預(yù)讀譯碼,避免了資源浪費(fèi)和實(shí)時(shí)性要求高的問題,并開發(fā)不同類型的五軸譯碼解釋器以滿足數(shù)控系統(tǒng)的可配置功能要求。

1 譯碼的層次結(jié)構(gòu)及譯碼方式的選擇

目前,國際上通用的數(shù)控機(jī)床的加工程序主要基于標(biāo)準(zhǔn) ISO 6983 的G、M代碼語言編寫而成的。最常用的程序段字地址格式如下所示:

Nxxx Gxx Xxx Yxx Zxx Fxx Sxx Txx Mxx

1.1 譯碼的層次結(jié)構(gòu)

解釋器譯碼流程如圖1所示。首先,在本數(shù)控系統(tǒng)中數(shù)控程序的文件格式為***.ncc,解釋器識(shí)別該格式文件的并初始化寄存器,然后逐行讀取數(shù)控程序代碼文件,經(jīng)預(yù)處理過濾去除掉多余的注釋信息和空格,得到有效的字符程序段;接著執(zhí)行詞法分析和語法分析,若出現(xiàn)錯(cuò)誤則返回錯(cuò)誤編號(hào)進(jìn)行錯(cuò)誤處理并在人機(jī)界面顯示錯(cuò)誤信息,否則,將計(jì)算結(jié)果保存在預(yù)讀寄存器中。若有刀具補(bǔ)償指令就調(diào)用刀具補(bǔ)償模塊進(jìn)行刀具補(bǔ)償;計(jì)算并將底層控制指令存儲(chǔ)到執(zhí)行寄存器中,最后將指令添加到命令緩沖區(qū)中,若命令緩沖區(qū)的數(shù)據(jù)未達(dá)設(shè)定的值,那么就繼續(xù)讀取下一行數(shù)控程序代碼,若緩沖區(qū)已滿,則譯碼模塊處于等待狀態(tài),等待任務(wù)管理器的再次調(diào)用。

圖1 數(shù)控程序解釋器譯碼流程

1.2 譯碼方式的選擇

編譯式譯碼是一次性地將加工程序進(jìn)行譯碼工作,譯碼完成后得到的數(shù)據(jù)全部交給后續(xù)模塊。當(dāng)代碼量大時(shí),一次性地將代碼進(jìn)行譯碼處理需要耗費(fèi)較多時(shí)間,對(duì)系統(tǒng)實(shí)時(shí)性要求較高,增加系統(tǒng)成本。

解釋式譯碼是將一行的數(shù)控程序代碼作為每一次譯碼的處理對(duì)象,完成當(dāng)前代碼行的譯碼后,立即將譯碼數(shù)據(jù)交由后續(xù)模塊進(jìn)行處理,機(jī)床執(zhí)行動(dòng)作,如此往復(fù),直至整個(gè)代碼文件翻譯完畢。整個(gè)譯碼的過程是以串行方式運(yùn)行,譯碼模塊必須為插補(bǔ)模塊及時(shí)提供足夠的數(shù)據(jù),如果某條指令譯碼過程耗費(fèi)的時(shí)間比較長(zhǎng),而插補(bǔ)模塊已無數(shù)據(jù)可用,就會(huì)造成數(shù)控機(jī)床短時(shí)暫停。

經(jīng)過對(duì)編譯式和解釋式的分析比較,提出了中斷型預(yù)讀譯碼方式。如圖2所示,首先在數(shù)控系統(tǒng)中設(shè)置預(yù)讀段數(shù)(M+N),數(shù)控加工時(shí),譯碼模塊先讀取(M+N)段代碼,并將譯碼后的數(shù)據(jù)按順序存儲(chǔ)到軌跡命令環(huán)形緩沖區(qū)中,但執(zhí)行完N段數(shù)控代碼后,產(chǎn)生中斷命令,系統(tǒng)再次調(diào)用譯碼模塊進(jìn)行譯碼,確保緩沖區(qū)不被插補(bǔ)模塊讀空,保證插補(bǔ)模塊運(yùn)行的連續(xù)性。

為了確保命令的連續(xù)性,本研究中的M值由前瞻速度處理段數(shù)決定,為了使得指令獲取命令隊(duì)列連貫,實(shí)驗(yàn)中的N選取為M的2倍;由于本數(shù)控系統(tǒng)前瞻速度處理段數(shù)為7,故設(shè)置1個(gè)先進(jìn)先出的環(huán)形緩沖區(qū),該緩沖區(qū)大小為21,緩沖區(qū)的管理采用指針來實(shí)現(xiàn)。當(dāng)人機(jī)界面調(diào)用譯碼子模塊進(jìn)行加工前軌跡模擬時(shí)則采用類似于編譯式譯碼方式逐段解析全部的數(shù)控代碼,但解析一行代碼后的數(shù)據(jù)并不進(jìn)行存儲(chǔ),而是直接將數(shù)據(jù)送到加工仿真界面進(jìn)行顯示,如此反復(fù)直到所有刀位點(diǎn)連接為加工軌跡,提前檢查加工軌跡的正確性。

圖2 中斷型譯碼機(jī)制

中斷型預(yù)讀式譯碼的核心思想就是在數(shù)控加工流程中在譯碼模塊數(shù)據(jù)生產(chǎn)和插補(bǔ)模塊消費(fèi)之間設(shè)置一定的緩存區(qū),并采用中斷機(jī)制,用緩存區(qū)的空間占有和中斷機(jī)制來降低譯碼模塊和插補(bǔ)模塊的同步要求,加大操作時(shí)域裕度,避免了整體式譯碼引起的系統(tǒng)資源浪費(fèi)問題,并且克服了解釋式譯碼由于實(shí)時(shí)性差造成的譯碼數(shù)據(jù)獲取不連貫導(dǎo)致數(shù)控機(jī)床短時(shí)暫停的問題,提高了系統(tǒng)的運(yùn)行效率。

2 數(shù)控程序解釋器的設(shè)計(jì)與實(shí)現(xiàn)

在解釋器中,設(shè)計(jì)了3個(gè)寄存器用于存儲(chǔ)譯碼數(shù)據(jù)。按照數(shù)據(jù)流方向分別為數(shù)控代碼預(yù)讀寄存器、當(dāng)前狀態(tài)寄存器和執(zhí)行寄存器,這3個(gè)寄存器用來存儲(chǔ)解釋器執(zhí)行過程中產(chǎn)生的所有譯碼數(shù)據(jù)。其中,預(yù)讀寄存器是用來存儲(chǔ)將要執(zhí)行的下一行的數(shù)控程序代碼;當(dāng)前狀態(tài)寄存器是用來存儲(chǔ)當(dāng)前數(shù)控系統(tǒng)的運(yùn)行狀態(tài)信息;執(zhí)行寄存器是用來存儲(chǔ)已完成分類封裝的可以用于控制層執(zhí)行的底層控制指令。

1) 預(yù)讀寄存器

如圖3所示,預(yù)讀寄存器中主要用來存儲(chǔ)經(jīng)過詞法分析和語法分析后,提取一行數(shù)控程序代碼的有效加工信息,存儲(chǔ)一行數(shù)控程序中出現(xiàn)的所有詞并保存相應(yīng)的參數(shù)數(shù)值。在數(shù)控程序語言中最小的語法單位是一個(gè)“詞”,一個(gè)G代碼、M代碼、軸坐標(biāo)或者其他加工參數(shù)都稱為一個(gè)詞。并且當(dāng)前程序段的代碼、程序段說明等也將進(jìn)行存儲(chǔ),并保留了當(dāng)前有效模態(tài)代碼、代碼和運(yùn)動(dòng)代碼的空間。由于在一行數(shù)控程序中所有的詞不太可能同時(shí)出現(xiàn),因此在數(shù)據(jù)結(jié)構(gòu)中一個(gè)詞對(duì)應(yīng)著兩個(gè)不同的變量,開關(guān)類型的變量表示該詞是否出現(xiàn),參數(shù)類型用來保存相應(yīng)的參數(shù)值。

預(yù)讀寄存器中存儲(chǔ)的代碼段結(jié)構(gòu)體CNC_LINECODE_STRUCT的基本定義如以下代碼所示:

typedef struct CNC_LINECODE_STRUCT

{

int nNumber; //行號(hào)

int gCodes[G_GROUP] ; // 存儲(chǔ)G代碼

int mCodes[M_GROUP] ; // 存儲(chǔ)M代碼

ON_OFF aFlag; //是否有A坐標(biāo)值的標(biāo)志

double aNumber; // A坐標(biāo)值

char comment[COMMENT_LEN] ; // 存儲(chǔ)程序段注釋

}LineCodeStruct;

圖3 預(yù)讀寄存器結(jié)構(gòu)

2) 當(dāng)前狀態(tài)寄存器

如圖4所示,當(dāng)前狀態(tài)寄存器是一個(gè)用來存儲(chǔ)解釋器的全局信息和所有加工參數(shù)的全局?jǐn)?shù)據(jù),解釋器內(nèi)所有模塊都將對(duì)該數(shù)據(jù)進(jìn)行相應(yīng)的操作。主要的數(shù)據(jù)有:G代碼文件名、當(dāng)前有效的模態(tài)G代碼和M代碼、加工點(diǎn)的當(dāng)前坐標(biāo)、當(dāng)前編程坐標(biāo)系原點(diǎn)偏移、刀位點(diǎn)所處平面等主要信息。

與該寄存器相對(duì)應(yīng)的當(dāng)前狀態(tài)數(shù)據(jù)結(jié)構(gòu)體CNC_SETTING_STRUCT的基本定義如下:

typedef struct CNC_SETTING_STRUCT

{

char filename[NAME_LEN] ; // 程序文件名

int gCodes[G_GROUP] ; // G代碼

int mCodes[M_GROUP] ; // M代碼

double xCurrent; // 加工點(diǎn)當(dāng)前x坐標(biāo)

double xOriginOffset; //編程坐標(biāo)系原點(diǎn)x軸偏移

ACTIVE_PLANE plane; //刀位點(diǎn)所處平面

}SettingStruct;

圖4 當(dāng)前狀態(tài)寄存器結(jié)構(gòu)

3) 執(zhí)行寄存器

如圖5所示,執(zhí)行寄存器中主要存儲(chǔ)控制層可以直接識(shí)別并執(zhí)行的命令消息,解釋器執(zhí)行過程中通過NML提供的append(NMLmsg) 函數(shù)將命令消息送到執(zhí)行寄存器中。其主要存儲(chǔ)了直線運(yùn)動(dòng)指令、圓弧運(yùn)動(dòng)指令、延時(shí)指令、換到指令、開關(guān)量控制指令等。以圓弧運(yùn)動(dòng)指令為例,

class CNC_TRAJ_CIRCLE_MOVE:public CNC_TRAJ_CMD_MSG

{

public:

CNC_TRAJ_CIRCLE_MOVE():

CNC_TRAJ_CMD_MSG(CNC_TRAJ_CIRCLE_MOVE_TYPE,

sizeof(CNC_TRAJ_CIRCLE_MOVE));

void update(CMS * cms); // 狀態(tài)更新函數(shù)

PoseStruct endPt; //圓弧終點(diǎn)

CartesianStruct center; //圓弧圓心

CartesianStruct normal; //圓弧法向

int turn; //圓弧方向

int type; //圓弧類型

double vel,maxVel,acc; //速度,最大速度,加速度

};

圖5 執(zhí)行寄存器結(jié)構(gòu)

3 解釋器測(cè)試驗(yàn)證

在Linux系統(tǒng)平臺(tái)上,搭建了基于PC+可編程IO卡的開放式數(shù)控系統(tǒng)。基于以上對(duì)解釋器譯碼的研究,對(duì)解釋器相應(yīng)的寄存器、預(yù)處理模塊、詞法分析模塊、語法分析模塊等進(jìn)行了擴(kuò)展,開發(fā)了五軸X-Y-Z-A-C型、X-Y-Z-A-B型解釋器,用以支持五軸數(shù)控系統(tǒng)譯碼功能,并為數(shù)控系統(tǒng)的可配置功能提供配置項(xiàng)。

如圖6所示,數(shù)控系統(tǒng)解釋器正在執(zhí)行1個(gè)五軸數(shù)控加工程序的譯碼。將X-Y-Z-A-C型譯碼解釋器配置到所開發(fā)的數(shù)控系統(tǒng)中。從圖6(a)中可以看出,該數(shù)控程序解釋編譯并未發(fā)現(xiàn)錯(cuò)誤。而當(dāng)數(shù)控加工程序中出現(xiàn)“B”或“b”時(shí),如圖6(b)所示,人機(jī)界面中出現(xiàn)錯(cuò)誤提示“其他非法的數(shù)控代碼或符號(hào)存在”,并且準(zhǔn)確定位到所處行數(shù)。這是由于所開發(fā)的解釋器是X-Y-Z-A-C型的,無法識(shí)別含“B”或“b”字符的數(shù)控加工程序,所以在詞析階段就顯示錯(cuò)誤提示。

圖6 解釋器X-Y-Z-A-C型五軸譯碼結(jié)果比較

同樣,如圖7所示,在所開發(fā)的數(shù)控系統(tǒng)中的譯碼解釋器配置為X-Y-Z-A-B型。在圖7(a)中該解釋器能夠識(shí)別數(shù)控程序中的“B”代碼并完成譯碼功能。在圖7(b)無法識(shí)別“C”代碼,故在人機(jī)界面中提示第9行有錯(cuò)誤:“其他非法的數(shù)控代碼或符號(hào)存在”。并且系統(tǒng)能夠及時(shí)地識(shí)別出不符合規(guī)則的代碼段,如第6行錯(cuò)誤:“同一行中存在兩個(gè)字符B”,第8行錯(cuò)誤:“B字符后面不存在數(shù)字”。

圖7 解釋器X-Y-Z-A-B型五軸譯碼結(jié)果比較

如圖8所示,以X-Y-Z-A-C型為例,將譯碼成功的五軸加工程序輸送到加工仿真模塊進(jìn)行模擬仿真。實(shí)驗(yàn)結(jié)果證明:所開發(fā)的解釋器符合預(yù)期的要求,能夠較好地實(shí)現(xiàn)五軸數(shù)控加工程序的譯碼并進(jìn)行仿真加工。

圖8 解釋器X-Y-Z-A-C型五軸模擬仿真

為了驗(yàn)證本譯碼解釋器能夠?yàn)楹罄m(xù)的處理模塊提供正確的譯碼數(shù)據(jù),采用圖8中的五軸數(shù)控程序,以直線加減速算法為例進(jìn)行了仿真實(shí)驗(yàn)。直線加減速參數(shù)設(shè)定為:進(jìn)給速度F為500mm/min,各直線軸的最大允許速度為3 000mm/min,各軸最大加速度為1 000mm/s2。如圖9所示為所獲得的進(jìn)給速度曲線圖。可知,解釋器為后續(xù)的速度處理模塊提供了正確的譯碼數(shù)據(jù),能夠滿足數(shù)控系統(tǒng)的加工需求。

圖9 進(jìn)給速度曲線圖

4 結(jié)語

基于Linux平臺(tái)開發(fā)了數(shù)控程序解釋器,該解釋器采用緩沖區(qū)中斷機(jī)制進(jìn)行分段預(yù)讀譯碼,避免了PC機(jī)資源浪費(fèi)和由于實(shí)時(shí)性差導(dǎo)致的指令獲取不連續(xù)的問題;并且該解釋器根據(jù)模塊化設(shè)計(jì)思路,采用面向?qū)ο蠹夹g(shù)進(jìn)行開發(fā)不同類型的五軸譯碼解釋器,滿足可配置功能需求。程序結(jié)構(gòu)簡(jiǎn)單明了,代碼簡(jiǎn)潔高效,具有良好的開放性和通用性。經(jīng)過實(shí)驗(yàn)證明,該解釋器實(shí)現(xiàn)了對(duì)數(shù)控機(jī)床各種指令和功能的正確解釋譯碼,完全可以用于計(jì)算機(jī)實(shí)際加工和仿真。該編譯器在開放式數(shù)控系統(tǒng)的開發(fā)、可配置功能的實(shí)現(xiàn)和數(shù)控虛擬仿真軟件的開發(fā)方面有很好的應(yīng)用前景。

猜你喜歡
指令程序
聽我指令:大催眠術(shù)
試論我國未決羈押程序的立法完善
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動(dòng)“離婚”程序程序
殺毒軟件中指令虛擬機(jī)的脆弱性分析
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 国产人成在线视频| 伊人久久福利中文字幕| 五月婷婷丁香综合| 91无码视频在线观看| 在线色国产| 美女被操黄色视频网站| 58av国产精品| 亚洲愉拍一区二区精品| 蜜芽一区二区国产精品| 久热这里只有精品6| 国产综合日韩另类一区二区| 欧美一级专区免费大片| av一区二区三区高清久久| 婷婷成人综合| 日韩在线1| 亚洲人成网址| 久久伊人操| 日本亚洲国产一区二区三区| 国产成人亚洲精品无码电影| 波多野结衣无码中文字幕在线观看一区二区 | 黄色网在线| 国产精品嫩草影院视频| 成人日韩视频| 毛片三级在线观看| 呦视频在线一区二区三区| 中文字幕啪啪| 久久中文电影| 国产高清在线观看| 小说区 亚洲 自拍 另类| 午夜少妇精品视频小电影| 久久国产黑丝袜视频| 九色在线视频导航91| 无码一区中文字幕| 国产成本人片免费a∨短片| 99尹人香蕉国产免费天天拍| 亚洲性日韩精品一区二区| 亚洲欧洲日韩综合| 国产激情在线视频| 伊人久久婷婷五月综合97色| 另类专区亚洲| 一本久道久综合久久鬼色| 国产黄色免费看| 亚洲综合色区在线播放2019| 国精品91人妻无码一区二区三区| 国产在线视频导航| 91免费观看视频| 青青草原国产| 亚洲一欧洲中文字幕在线| 影音先锋丝袜制服| 58av国产精品| 久久国语对白| 58av国产精品| 欧美性精品不卡在线观看| 精品欧美视频| 精品自拍视频在线观看| 99久久性生片| 亚洲最大福利视频网| 99免费视频观看| 亚洲无码A视频在线| 99热这里只有精品国产99| 91蜜芽尤物福利在线观看| 五月婷婷欧美| 亚洲AV无码乱码在线观看裸奔 | 国产精女同一区二区三区久| 亚洲国产91人成在线| 成人一级黄色毛片| 茄子视频毛片免费观看| 欧美激情,国产精品| 中文无码影院| 欧美特黄一级大黄录像| 试看120秒男女啪啪免费| 精品视频一区二区三区在线播| 免费高清毛片| 国产精品手机在线播放| 无码有码中文字幕| 青青草原国产精品啪啪视频| 欧美性猛交xxxx乱大交极品| 国产99欧美精品久久精品久久| 亚洲一区二区黄色| 色综合久久综合网| 找国产毛片看| 婷婷色狠狠干|