亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于正則表達(dá)式的譯碼方法研究

        2022-09-02 03:23:46趙慶志王宏甲王嘉琦
        制造業(yè)自動(dòng)化 2022年8期
        關(guān)鍵詞:定義

        劉 洋,趙慶志,王宏甲,王嘉琦

        (山東理工大學(xué) 機(jī)械工程學(xué)院,淄博 255000)

        0 引言

        數(shù)控加工是現(xiàn)在使用較為廣泛的一種自動(dòng)化加工方式,數(shù)控系統(tǒng)作為數(shù)控加工設(shè)備的核心部分,起到了存儲(chǔ)、計(jì)算、控制的作用,通過數(shù)字、字母、符號(hào)組成的標(biāo)準(zhǔn)代碼對(duì)數(shù)控設(shè)備進(jìn)行驅(qū)動(dòng),在數(shù)控系統(tǒng)中,譯碼模塊是傳遞加工信息的核心部分,是人與數(shù)控設(shè)備交流的媒介[1~3]。所以高效而準(zhǔn)確的譯碼模塊是數(shù)控系統(tǒng)的必備部分。

        逐字比較法在傳統(tǒng)數(shù)控系統(tǒng)中的應(yīng)用較為廣泛,基于逐字比較法的譯碼模塊開發(fā)代碼行數(shù)較多,且代碼繁瑣,對(duì)于多種類組合線段的加工軌跡加工效率較低?,F(xiàn)階段對(duì)于基于正則表達(dá)式的譯碼方法開發(fā)仍有很大的完善空間。

        QT是一個(gè)基于C++的跨平臺(tái)圖形用戶界面程序開發(fā)框架,本文采用C++作為編程語(yǔ)言,基于QT平臺(tái),通過Qstring類對(duì)NC代碼進(jìn)行定義,QregularExpression類對(duì)NC代碼進(jìn)行詞語(yǔ)法匹配,結(jié)合正則表達(dá)式類對(duì)NC代碼的譯碼模塊進(jìn)行優(yōu)化設(shè)計(jì),實(shí)現(xiàn)高效準(zhǔn)確的譯碼模塊開發(fā)。

        1 正則表達(dá)式

        1.1 正則表達(dá)式簡(jiǎn)介

        正則表達(dá)式又稱為規(guī)則表達(dá)式,可預(yù)先將普通字符串以及特殊字符進(jìn)行組合完成一組邏輯公式,根據(jù)組合完成的邏輯公式可以對(duì)Qstring類數(shù)據(jù)進(jìn)行分析處理,判斷輸入的字符串?dāng)?shù)據(jù)是否符合預(yù)先設(shè)定的表達(dá)式的特征,然后對(duì)接收字符串?dāng)?shù)據(jù)進(jìn)行查找、匹配、替換、分割等操作。正則表達(dá)式高效的檢索效率非常適合對(duì)已經(jīng)規(guī)范的NC代碼進(jìn)行分析和處理,可在QT平臺(tái)基于正則表達(dá)式類開發(fā)數(shù)控系統(tǒng)的譯碼模塊[4,5]。

        1.2 正則表達(dá)式基本語(yǔ)法規(guī)則

        正則表達(dá)式的字符分為普通字符和特殊字符,特殊字符又稱為元字符,主要使用元字符對(duì)字符串模板進(jìn)行設(shè)置。

        Perl語(yǔ)言是在unix環(huán)境下運(yùn)行的一種編程語(yǔ)言,Perl對(duì)字符有著很強(qiáng)的處理能力,通用表達(dá)式、量詞、斷言等是Perl語(yǔ)言的元字符的主要組成部分,通用表達(dá)式的作用是對(duì)有特殊意義的字符進(jìn)行表達(dá),量詞對(duì)通用表達(dá)式的表達(dá)次數(shù)進(jìn)行記錄,文本的聲明則需要斷言來進(jìn)行。正則表達(dá)式的元字符和其對(duì)應(yīng)的功能如表1所示。

        表1 常用正則表達(dá)式元字符功能說明

        1.3 正則表達(dá)式在QT中的實(shí)現(xiàn)

        譯碼模塊開發(fā)環(huán)境選擇QT5.7社區(qū)版,此版本封裝的QregularExpression類以Perl語(yǔ)言的正則表達(dá)為基礎(chǔ),優(yōu)化且兼容Perl的正則表達(dá)式。

        定義的QregularExpression類包括模式選項(xiàng)和模式字符串,兩者構(gòu)成它的正則表達(dá)式。模式字符串通過給構(gòu)造函數(shù)賦值定義正則表達(dá)式的格式,配合模式選項(xiàng)可以進(jìn)一步更改模式字符串的代表含義。

        完成正則表達(dá)式的類定義后,QregularExpression內(nèi)的匹配函數(shù)match()返回?cái)?shù)據(jù)類型仍然為QregularExpression類。反回類內(nèi)封裝了hasMatch()函數(shù)可以判斷正則表達(dá)式的匹配情況,hasMatch()函數(shù)反回?cái)?shù)據(jù)類型內(nèi)封裝了capture()函數(shù),capture()反回的數(shù)據(jù)類型最終為QString字符串。例如若捕捉字符X即函數(shù)可賦值capture(”X”),即為按照定義的正則表達(dá)式匹配后捕獲的字符串。

        以此為根據(jù),可以根據(jù)設(shè)定的正則表達(dá)式來匹配捕獲NC代碼中的坐標(biāo)信息,可以通過正則表達(dá)式來對(duì)坐標(biāo)字符串X?Y??jī)?nèi)的坐標(biāo)信息進(jìn)行提取且匹配到X以及Y軸方向。編寫的捕獲實(shí)驗(yàn)程序如圖1所示:

        圖1 正則表達(dá)式示例程序

        2 譯碼模塊的總體框架設(shè)計(jì)

        譯碼模塊需要從標(biāo)準(zhǔn)的NC代碼中提取加工信息,包括加工軌跡線段類型、主軸轉(zhuǎn)速、進(jìn)給速度、加工坐標(biāo)等[6~8]。NC代碼預(yù)先寫到txt的文本中,通過編寫的上位機(jī)對(duì)txt文件進(jìn)行訪問,經(jīng)過正則表達(dá)式對(duì)文件內(nèi)容中的有用加工信息匹配和提取,譯碼流程如圖2所示:

        圖2 譯碼模塊流程圖

        3 譯碼模塊的功能設(shè)計(jì)

        3.1 代碼預(yù)處理

        NC代碼主要包括標(biāo)準(zhǔn)G代碼和M代碼,同時(shí)較為常用的有刀具功能T、進(jìn)給速度F、以及主軸轉(zhuǎn)速S和坐標(biāo)XYZ[9,10]。譯碼模塊將對(duì)以上的字母和數(shù)字組合而成的NC代碼進(jìn)行處理分析并且提取信息,定義的NC代碼編寫以FANUC數(shù)控系統(tǒng)的代碼格式為標(biāo)準(zhǔn)。

        當(dāng)上位機(jī)載入NC代碼文件后,開始逐行對(duì)內(nèi)容進(jìn)行讀取,去除文件中的無(wú)用信息,調(diào)用正則類中的preprocess()函數(shù),此函數(shù)的形參為Qstring類,可對(duì)應(yīng)上位機(jī)識(shí)別代碼文件后創(chuàng)建生成的字符串類。

        對(duì)于空格以及換行符的去除,調(diào)用Qsting::remove()函數(shù)可直接完成。正則表達(dá)式QregularExpression類則用來去除注釋,由于注釋一般用“\”來與代碼內(nèi)容進(jìn)行分隔,因此用來匹配的正則表達(dá)式為QregularExpression char_reg(“\.*”)。

        “.”作為正則表達(dá)式中的元字符可匹配任意字符,“*”表示可多次匹配前導(dǎo)字符,通過此正則表達(dá)式可以完成對(duì)注釋內(nèi)容的過濾。

        3.2 代碼詞語(yǔ)法分析

        完成NC代碼的預(yù)處理后,接下來的詞法分析的作用是對(duì)NC代碼的指令字母與坐標(biāo)字母后的參數(shù)組合進(jìn)行分析,判斷加工代碼中的組合是否符合規(guī)范標(biāo)準(zhǔn),然后在操作界面上做出反饋。舉例與代碼行數(shù)字母N匹配的正則表達(dá)式如下所示,可對(duì)NC代碼行數(shù)N進(jìn)行詞法分析匹配。

        其它參數(shù)字母的正則表達(dá)式可按此方法定義。

        當(dāng)NC代碼中的字母全部為合法字符后,下一步需要匹配其語(yǔ)法是否符合規(guī)范。NC代碼的語(yǔ)法匹配就是確保指令G代碼以及功能M代碼不重復(fù)或者錯(cuò)序出現(xiàn),防止加工順序產(chǎn)生沖突[11~13],當(dāng)檢測(cè)出錯(cuò)誤時(shí)也可以產(chǎn)生反饋,語(yǔ)法匹配的流程圖如圖3所示:

        圖3 語(yǔ)法匹配流程圖

        本課題在應(yīng)對(duì)語(yǔ)法匹配時(shí)對(duì)每一行代碼通過正則表達(dá)式進(jìn)行匹配,保證單行代碼中的指令代碼和輔助代碼只出現(xiàn)一次,提取代碼數(shù)據(jù)采用匹配刪除法,以G代碼為例利用G代碼的正則表達(dá)式對(duì)指令代碼進(jìn)行提取儲(chǔ)存后刪除匹配過的代碼,同時(shí)對(duì)創(chuàng)建的全局變量賦值,防止數(shù)據(jù)的重復(fù)定義。

        4 譯碼模塊的實(shí)際加工測(cè)試

        4.1 基于QT的上位機(jī)開發(fā)

        譯碼模塊和整個(gè)數(shù)控系統(tǒng)的開發(fā)平臺(tái)都為QT5,譯碼模塊編寫完成后檢測(cè)其是否可以正確識(shí)別NC代碼,在開發(fā)的上位機(jī)中加入了圖形仿真模塊可以直接顯示譯碼后的加工路徑,通過對(duì)加工路徑的模擬判斷譯碼是否成功。NC代碼和模擬加工路徑仿真結(jié)果如圖4所示。

        圖4 上位機(jī)界面仿真

        4.2 基于STM32的下位機(jī)開發(fā)

        將PC機(jī)作為上位機(jī),下位機(jī)的控制板選擇基于ARM架構(gòu)的STM32F4系列單片機(jī)。運(yùn)行通過POWERMILL軟件生成的組合線段的加工代碼來進(jìn)行測(cè)試實(shí)驗(yàn)。加工軌跡是直線和圓、雙曲線、拋物線的組合線段,加工效果如圖5所示。

        圖5 加工測(cè)試

        在加工過程中,雕刻機(jī)運(yùn)行較為平穩(wěn),沒有明顯的震動(dòng),雕刻加工軌跡平滑,實(shí)驗(yàn)表明,本文提出的基于正則表達(dá)式的譯碼方式在QT平臺(tái)上可行。

        5 結(jié)語(yǔ)

        本課題實(shí)現(xiàn)了基于正則表達(dá)式的譯碼模塊在QT5平臺(tái)上的開發(fā),同時(shí)在QT5平臺(tái)開發(fā)了數(shù)控系統(tǒng)進(jìn)行實(shí)際的加工測(cè)試,實(shí)驗(yàn)結(jié)果表明,QT5的正則表達(dá)式QregularExpression類開發(fā)的譯碼模塊效率和精度較好,可以用作譯碼模塊的開發(fā)。

        猜你喜歡
        定義
        以愛之名,定義成長(zhǎng)
        活用定義巧解統(tǒng)計(jì)概率解答題
        例談橢圓的定義及其應(yīng)用
        題在書外 根在書中——圓錐曲線第三定義在教材和高考中的滲透
        永遠(yuǎn)不要用“起點(diǎn)”定義自己
        海峽姐妹(2020年9期)2021-01-04 01:35:44
        嚴(yán)昊:不定義終點(diǎn) 一直在路上
        定義“風(fēng)格”
        成功的定義
        山東青年(2016年1期)2016-02-28 14:25:25
        有壹手——重新定義快修連鎖
        修辭學(xué)的重大定義
        99久久国产露脸精品竹菊传媒 | 国产女优一区在线观看| 国产电影无码午夜在线播放| 欧美大黑帍在线播放| 欧美亚洲日本国产综合在线| 亚洲免费av电影一区二区三区| 国产精品毛片大尺度激情| 国产嫩草av一区二区三区| 欧美a级在线现免费观看| 欧美性xxxx极品高清| 亚洲性无码av在线| 无码国产一区二区色欲| 久久精品一区二区熟女| 人妻少妇出轨中文字幕| 77777亚洲午夜久久多人| 第九色区Aⅴ天堂| 久久伊人亚洲精品视频| 亚洲av无码一区二区三区天堂古代| 国产日韩成人内射视频| 国产91精品丝袜美腿在线| 亚洲精品456在线播放狼人| 二区三区三区视频在线观看| 精品无码久久久久久国产| 色先锋资源久久综合5566| 亚洲中文字幕无码不卡电影| 亚州中文热码在线视频| 巨大巨粗巨长 黑人长吊| 久久精品国产四虎| 国产精品久久中文字幕亚洲| 最新露脸自拍视频在线观看| 老师脱了内裤让我进去| 91精品啪在线看国产网站| 久久精品国产亚洲av天美| 宅男666在线永久免费观看| 亚洲欧美另类自拍| 一区二区亚洲精美视频| 性欧美丰满熟妇xxxx性久久久| 性色av 一区二区三区| AV中文字幕在线视| 亚洲一区二区三区地址| 中文亚洲欧美日韩无线码|