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

        ?

        3D打印機(jī)G代碼預(yù)處理優(yōu)化算法

        2019-02-15 07:14:44余道洋
        中國機(jī)械工程 2019年1期
        關(guān)鍵詞:指令程序機(jī)制

        余道洋

        合肥工業(yè)大學(xué)機(jī)械工程學(xué)院,合肥,230009

        0 引言

        傳統(tǒng)方法中,當(dāng)一個三維模型需要打印時,首先由三維建模軟件或設(shè)備建立一個三維模型,然后將三維模型文件轉(zhuǎn)換成目前大多數(shù)3D打印機(jī)系統(tǒng)通用的STL格式,再經(jīng)過切片軟件將三維模型按照用戶設(shè)定的層高將模型切成一層層的截面進(jìn)而對每一層截面進(jìn)行路徑規(guī)劃,最后生成3D打印機(jī)通用的格式G代碼文件輸入到3D打印機(jī)進(jìn)行打印[1-2]。3D打印機(jī)的控制系統(tǒng)Marlin在處理G代碼時,需要經(jīng)過字符串識別命令并轉(zhuǎn)換提取數(shù)值,接著執(zhí)行相對應(yīng)的工作[3],當(dāng)G代碼命令為直線移動時,則須執(zhí)行直線坐標(biāo)運算、直線軌跡規(guī)劃及連接速度計算等運算;控制系統(tǒng)在打印過程中還要處理中斷、溫度檢測、加熱溫度控制及打印頭移動控制等任務(wù)[4]。Marlin系統(tǒng)及其他開源3D打印機(jī)控制系統(tǒng),目前只支持單核處理器,只能應(yīng)付目前的工作需求,若在產(chǎn)品開發(fā)過程中增加新功能導(dǎo)致處理器無法負(fù)擔(dān)時,只有使用更快更好的處理器來回應(yīng),這就限制了3D打印機(jī)日后的發(fā)展。

        為了突破開源3D控制系統(tǒng)的限制,本文提出改變原有的開源打印機(jī)的代碼處理模式架構(gòu),使用一種新的代碼處理方式,將部分處理程序在PC段先行運算處理完畢后,再輸入3D打印機(jī)中執(zhí)行,以此提升代碼處理的速度和效率,減少處理器負(fù)擔(dān)并節(jié)省CPU處理時間,并可為系統(tǒng)留下更多的發(fā)展空間,且通過PC端的預(yù)處理可得到更優(yōu)化的運算結(jié)果。本文選定由切層軟件自動生成的G代碼程序進(jìn)行外部處理,于PC端設(shè)計程序軟件,輸入G代碼程序,處理完成后輸出成自行定義的文件格式,再輸入到修改后的Marlin系統(tǒng)中進(jìn)行處理,并與原始處理機(jī)制進(jìn)行兩者處理時間差異的比較,以證明預(yù)處理機(jī)制的優(yōu)點。

        1 3D打印機(jī)G代碼預(yù)處理機(jī)制架構(gòu)

        本文研究的3D打印機(jī)G代碼預(yù)處理機(jī)制架構(gòu)采用間接打印的方式。當(dāng)切層軟件將STL文件轉(zhuǎn)換成G代碼后,先經(jīng)由本文研究開發(fā)的G代碼預(yù)處理程序預(yù)先處理轉(zhuǎn)換成自行定義的GPRE格式文檔,存儲于PC機(jī)中,再通過串口輸入到打印機(jī)中進(jìn)行打印,因此,本文研究的3D打印機(jī)G代碼預(yù)處理架構(gòu)分為兩大部分:

        (1)PC端的G代碼預(yù)處理程序負(fù)責(zé)將G代碼文件預(yù)先進(jìn)行路徑規(guī)劃后,輸出成本文自行定義的預(yù)處理文件GPRE文件。

        (2)在熔融沉積成形(fused deposition modeling,FDM)3D打印機(jī)端將Marlin系統(tǒng)固件修改成一個不需執(zhí)行路徑規(guī)劃運算的軟件系統(tǒng)。

        一般3D打印機(jī)在打印零件時是一邊編譯G代碼一邊執(zhí)行打印,所以G代碼的預(yù)處理就是將原本由3D打印機(jī)控制系統(tǒng)Marlin所需處理的G代碼程序移出至PC端先行編譯,然后輸入至打印機(jī)執(zhí)行打印。由于在原來的Marlin中打印時G代碼文件的處理都是依序讀入命令及運算處理再存入隊列架構(gòu)的塊緩沖器中,等待電機(jī)驅(qū)動程序提取,加上運算時絕大部分的運算參數(shù)皆為固定參數(shù)或是由前次運算產(chǎn)生,所以G代碼的預(yù)處理程序就是將一部分處理程序由3D打印機(jī)的控制系統(tǒng)“移植”到PC端由軟件來處理。

        1.1 G代碼預(yù)處理程序流程

        預(yù)處理程序工作可分為文件輸入與輸出、指令分析與字符轉(zhuǎn)換、指令運算處理3個部分,工作流程見圖1。

        圖1 G代碼預(yù)處理程序流程圖Fig.1 G code preprocess flowchart

        (1)文件的輸入與輸出。當(dāng)預(yù)處理程序開始時,會先根據(jù)輸入的文件名開啟文件,并建立文件名相同、后綴名為GPRE的預(yù)處理文件,并將預(yù)處理的結(jié)果存入該文件中。

        (2)指令分析與字符轉(zhuǎn)換。以“行”為單位讀取文件內(nèi)容并分析,首先判斷該行的指令類別,對G預(yù)備功能指令或M輔助功能指令分別進(jìn)行處理;若為G預(yù)備功能指令,那么接著將由字符組成的G代碼指令中代表數(shù)值的部分轉(zhuǎn)換成數(shù)值,再將所轉(zhuǎn)出的功能參數(shù)分別存入相應(yīng)的暫存器中,供指令運算處理提取使用。

        (3)指令運算處理。當(dāng)代碼指令分析完成后,根據(jù)指令的不同進(jìn)入各自的處理程序,并進(jìn)行判斷。①若為G預(yù)備功能命令,則進(jìn)入預(yù)備功能處理程序,再根據(jù)不同命令分別作如下不同處置:若G為G0或G1指令,由于G0和G1基本功能類似,G0和G1指令在Marlin中被視為同一功能,因此在執(zhí)行預(yù)處理時,也被視為同一功能,首先提取代表各移動軸移動的目標(biāo)點位置及移動速度參數(shù),再開始進(jìn)行路徑規(guī)劃,計算各軸電機(jī)移動參數(shù),運算結(jié)果按照本文規(guī)劃的文件封包格式存入預(yù)處理文件中;若為G92指令,則根據(jù)指令參數(shù)重設(shè)該軸位置參數(shù),下次運算時會以新位置參數(shù)來計算移動位置。②若為M輔助功能命令,則進(jìn)入輔助功能處理程序,由于輔助功能命令是作為變更內(nèi)部系統(tǒng)設(shè)定及動作的功能命令,無需預(yù)處理,因此所有輔助功能命令都是按照規(guī)劃的文件格式,直接轉(zhuǎn)換成數(shù)值封包存入預(yù)處理文件中的。

        1.2 G代碼預(yù)處理文件數(shù)據(jù)結(jié)構(gòu)

        分析3D打印G代碼文件時會發(fā)現(xiàn),打印指令絕大部分都是由G1指令構(gòu)成的,因此G代碼預(yù)處理的工作重點就是連續(xù)的直線路徑規(guī)劃。直線路徑規(guī)劃的工作是輸入各軸目標(biāo)位置及目前速度后,計算目前位置移動到下一個位置時,控制步進(jìn)電機(jī)動作所需的各項參數(shù)。由于步進(jìn)電機(jī)在啟動時速度不能太大,必須要有一個加速過程,因此在G代碼文件預(yù)處理時,要規(guī)劃加減速算法,本文經(jīng)過綜合考慮,采用梯形加減速速度控制算法。經(jīng)計算產(chǎn)生的參數(shù)及說明見表1,表1中的步數(shù)是指步進(jìn)電機(jī)轉(zhuǎn)動一個步距角時,驅(qū)動執(zhí)行機(jī)構(gòu)所移動的直線位移。

        由于預(yù)處理程序主要做G代碼路徑規(guī)劃的預(yù)先計算處理,所以本文將G代碼預(yù)處理后文件數(shù)據(jù)結(jié)構(gòu)分為兩類:一類是路徑規(guī)劃運算完成后所產(chǎn)生的數(shù)據(jù),另一類是不經(jīng)運算處理直接轉(zhuǎn)換成數(shù)據(jù)的狀態(tài)控制及輔助功能指令所產(chǎn)生的數(shù)據(jù)。這兩類數(shù)據(jù)封包格式分別為:①直線軌跡計算文件封包格式,用于記錄路徑規(guī)劃運算完成后所產(chǎn)生的數(shù)據(jù),封包大小為84字節(jié);②狀態(tài)控制及輔助功能指令封包格式,用于記錄不經(jīng)運算處理直接轉(zhuǎn)換成數(shù)據(jù)的指令,封包大小為12字節(jié)。本文規(guī)劃了開頭碼與結(jié)束碼作為每一段封包的識別標(biāo)記。

        表1 采用梯形加減速控制算法的直線軌跡參數(shù)

        1.3 G代碼預(yù)處理程序前瞻控制算法

        為了保證大量微小線段的連續(xù)運行,避免在運動過程中出現(xiàn)停頓,G代碼預(yù)處理程序必須具備對多段微小線段進(jìn)行預(yù)讀的前瞻控制功能,提前優(yōu)化相鄰程序段轉(zhuǎn)接處速度和判別減速區(qū)域[5],實現(xiàn)程序轉(zhuǎn)折和減速區(qū)域的平滑過渡,從而避免沖擊,提高打印成形質(zhì)量。前瞻控制通過提前檢查將在某一特定程序段內(nèi)執(zhí)行的數(shù)據(jù),以驗證控制系統(tǒng)能否處理所要求的路徑,如果檢查結(jié)果顯示存在問題,就要對程序指令中速度進(jìn)行修正,包括相鄰程序段轉(zhuǎn)接處速度優(yōu)化算法、反向速度規(guī)劃算法及熔絲擠出速度優(yōu)化算法等。

        1.3.1相鄰程序段轉(zhuǎn)接處速度優(yōu)化算法

        已知

        式中,δ為圖2中OA的長度,本文預(yù)設(shè)δ=0.1mm;θ為相鄰路徑段之間的夾角,即第一條路徑段終點處的進(jìn)給方向與第二條路徑段起點處的進(jìn)給方向之間的夾角。

        圖2 連接速度計算示意圖Fig.2 Schematic diagram of connection speed calculation

        1.3.2反向速度規(guī)劃算法

        對于單個線性程序段來說,在插補(bǔ)過程中需要提前預(yù)測減速點,確定何時進(jìn)入減速區(qū)域,從而保證在系統(tǒng)運行到終點時,速度達(dá)到預(yù)定值[6]。切片軟件生成的G代碼多為微線段,對于連續(xù)微線段的插補(bǔ),由于線段長度很短,則減速點可能在上一個程序段中,甚至在轉(zhuǎn)接點之前多個程序段中,因此在插補(bǔ)過程中僅僅保證本程序段終點速度沒有超過最高限速是不行的。并且由于沒有預(yù)見到后面的減速情況,可能在插補(bǔ)到某個程序段處,基于減速能力的限制,系統(tǒng)無法減速到該程序段終點限制速度,從而產(chǎn)生過沖。

        本文為了保證在打印過程中不產(chǎn)生過沖,G代碼預(yù)處理程序采用對所預(yù)讀的程序段進(jìn)行反向速度規(guī)劃的方式進(jìn)行速度規(guī)劃。該過程從預(yù)讀程序段的最后一段Nn開始反向計算各段程序Nj(j=1,2,…,n)所允許的最大初速度,具體計算方法是根據(jù)每段給定的末速度ve及運動距離s,以梯形加減速作為速度曲線進(jìn)行倒推,求得最大初速度vs,并將計算出的第Nj段允許的最大初速度作為第Nj-1段的最大允許末速度。

        1.3.3熔絲擠出速度優(yōu)化算法

        切層軟件生成的G代碼程序熔絲擠出速率一般為恒定的,然而,沿著刀具路徑的切向速度并不是保持恒定的,在接近程序段轉(zhuǎn)接處要減速,通過程序段轉(zhuǎn)接處又要加速,導(dǎo)致的結(jié)果是多余的熔料可能沉積在相鄰路徑轉(zhuǎn)接處[7]。

        本文熔絲擠出速度優(yōu)化算法的目標(biāo)是:根據(jù)打印頭進(jìn)給速度的不同適當(dāng)調(diào)節(jié)熔絲擠出速率。為此,本文假定在打印過程中熔絲擠出速率與打印頭進(jìn)給速率保持一定的比例關(guān)系。具體算法為:預(yù)處理程序先前瞻一定的程序段,根據(jù)1.3.1節(jié)算法,已知前瞻程序段相鄰段之間的夾角,提前計算相鄰程序段轉(zhuǎn)接處速度,然后根據(jù)比例關(guān)系計算出熔絲擠出速率,將計算結(jié)果寫入相關(guān)表格中。由本文算法分析可知,在相鄰程序段轉(zhuǎn)接處,根據(jù)轉(zhuǎn)接處速度大小自動調(diào)整熔絲擠出速率,避免了多余的熔料沉積在轉(zhuǎn)接處,進(jìn)而提高了打印質(zhì)量。

        2 預(yù)處理機(jī)制對Marlin固件的修改

        由于本文采用了預(yù)處理機(jī)制,從而需對Marlin固件程序作部分修改,使得Marlin能夠接收及處理預(yù)處理程序完成的文件。由于原始Marlin文件的G代碼處理程序并非只處理打印時的G代碼文件,還包含系統(tǒng)工作時通過下達(dá)G代碼指令的方式執(zhí)行系統(tǒng)參數(shù)變更等工作,所以無法直接使用預(yù)處理程序取代原有的G代碼處理程序。本文采用兩者并存的方式,額外增加預(yù)處理機(jī)制以處理GPRE文件,并保留原有的工作模式,只在進(jìn)行文件讀取時增加了文件類型的判別及處理,而對原有的處理程序并未作任何改變。

        預(yù)處理機(jī)制的Marlin文件處理程序如圖3所示,G代碼文件處理流程部分與原來相同。而新增加的GPRE文件處理部分則分為兩個部分,分別為文件封包的讀取及文件封包的處理。

        圖3 預(yù)處理機(jī)制文件處理程序Fig.3 Preprocessing mechanism file processing procedure

        (1)文件封包的讀取。在Marlin原來的讀取程序上,增加讀取文件類型判斷,若為GPRE文件則會進(jìn)入封包接收模式讀取封包資料,并在接收完成后存入為預(yù)處理機(jī)制新增加的緩沖區(qū)中,等待封包處理程序提取。

        (2)文件封包的處理。由于在執(zhí)行預(yù)處理時已將封包分為兩類,因此文件封包的處理只需判斷封包的類型即可,若為直線軌跡,計算文件封包則直接將文件提取存入運動塊緩沖區(qū)交由電機(jī)驅(qū)動程序使用,若為其他指令封包格式,則在判斷指令功能后交由相關(guān)程序執(zhí)行,因為所有指令參數(shù)皆為數(shù)值類型,較原有的G代碼處理程序節(jié)省了字符-數(shù)值間的轉(zhuǎn)換時間,因此減少了處理流程。

        3 實驗結(jié)果與分析

        本文將G代碼文件結(jié)構(gòu)分為打印前準(zhǔn)備、打印中及打印結(jié)束3個部分,分別分析如下。

        (1)打印前準(zhǔn)備。多為設(shè)定指令,用于打印前設(shè)定各項參數(shù)等工作。

        (2)打印中。大多由直線移動指令組成,還有些風(fēng)扇設(shè)定指令,用于控制打印時的風(fēng)量及開關(guān)。

        (3)打印結(jié)束。與打印前準(zhǔn)備相同,多為設(shè)定指令,用于打印結(jié)束時設(shè)定相關(guān)參數(shù),執(zhí)行關(guān)閉風(fēng)扇并使各軸電機(jī)回零等工作。

        3.1 預(yù)處理機(jī)制與原始處理機(jī)制執(zhí)行時間的劃分

        為了能夠比較G代碼預(yù)處理機(jī)制與原始處理機(jī)制在程序運作上的效率差異,本文選擇程序執(zhí)行時間作為兩者執(zhí)行效率差異的依據(jù)。由于所有的G代碼指令中,G1移動指令的處理是本文預(yù)處理的重點,其程序執(zhí)行時間最能比較出兩者之間的差異,因此以G1指令處理程序的執(zhí)行時間作為比較量,并且將整個處理程序分為三個階段(圖4)分別測量其執(zhí)行時間,三階段的分段說明如下。

        圖4 處理程序執(zhí)行三階段Fig.4 Three stages of processing program execution

        (1)指令讀取時間。比較預(yù)處理機(jī)制和原始處理機(jī)制的從系統(tǒng)中讀取程序到將程序發(fā)送到命令緩沖區(qū)的時間。

        (2)指令執(zhí)行準(zhǔn)備時間。比較由命令緩沖區(qū)提出,預(yù)處理機(jī)制與原始處理機(jī)制執(zhí)行指令分析處理,到路徑規(guī)劃前的預(yù)備處理時間。

        (3)路徑規(guī)劃時間。比較原始處理機(jī)制進(jìn)入路徑規(guī)劃并將數(shù)據(jù)輸入到緩沖區(qū)時間與預(yù)處理機(jī)制進(jìn)入數(shù)據(jù)復(fù)制并將所有參數(shù)輸入到緩沖區(qū)的時間。

        3.2 實驗方法及測量結(jié)果分析

        實驗以μs作為測量的時間單位,使用文件內(nèi)容只有G1指令的G代碼文件與同樣文件進(jìn)行預(yù)處理轉(zhuǎn)換后的GPRE文件作為測量用的測試文件,分別測量三個階段程序的執(zhí)行時間,每一階段皆取前100次測量時間進(jìn)行記錄,整理各階段平均執(zhí)行時間及總時間,結(jié)果如圖5所示。下面針對每一階段測量結(jié)果進(jìn)行分析和討論。

        圖5 程序執(zhí)行階段時間比較圖Fig.5 Time comparison diagram of the program execution phase

        (1)指令讀取時間。本文采用串口將經(jīng)過預(yù)處理機(jī)制后的GPRE文件傳輸?shù)組arlin控制器中,在串口傳輸速率設(shè)定為57 600 bit/s時,文件讀取時間為圖5中第一階段黑色柱形圖所表示的時間,而原始G代碼指令讀取時間為第一階段中白色柱形圖所表示的時間。由圖5可以看出,在相同的傳輸條件下,采用預(yù)處理機(jī)制后文件讀取時間較長,這是因為預(yù)處理后的G1文件封包長度(84字節(jié))為原始G代碼G1指令平均長度(28字節(jié))的3倍。

        (2)指令執(zhí)行準(zhǔn)備時間。當(dāng)程序進(jìn)入處理程序時,經(jīng)過預(yù)處理后的文件平均處理時間為85 μs,為原始G代碼程序處理時間的20%;由測量結(jié)果發(fā)現(xiàn),預(yù)處理機(jī)制在這一部分只做數(shù)據(jù)轉(zhuǎn)移及判斷的動作,因此大部分的時間固定為85 μs,而原始G代碼處理程序中有許多判斷式,每次的程序流程都不一樣,所以每次時間都不固定,在250~500 μs之間。

        (3)路徑規(guī)劃時間。預(yù)處理機(jī)制在這一個階段的執(zhí)行時間平均為50 μs,因為預(yù)處理程序在這個部分只有建立新的運動塊緩沖區(qū)及將數(shù)據(jù)復(fù)制到緩沖區(qū)中的操作,而原始機(jī)制在這個階段需要執(zhí)行路徑規(guī)劃運算,因此平均執(zhí)行時間達(dá)到1 000 μs左右。

        雖然預(yù)處理機(jī)制在第一階段耗費的時間較長,但在第二及第三階段耗費的時間明顯比原始G代碼處理機(jī)制時間要少。通過計算分析,由圖5可以看出,預(yù)處理機(jī)制執(zhí)行總時間約為原始G代碼處理機(jī)制執(zhí)行總時間的80%。

        3.3 實際打印分析

        本文采用相同打印材料及工況,使用原始機(jī)制及G代碼預(yù)處理機(jī)制分別實際打印同一個三維模型,打印結(jié)果如圖6所示。就打印品質(zhì)來說,經(jīng)過G代碼預(yù)處理后,作品品質(zhì)有了一定的提升,主要表現(xiàn)在圖6b作品的輪廓更完整,外觀平整度更好,在輪廓轉(zhuǎn)接處沒有多余熔料堆積,這主要歸結(jié)于圖6b作品在預(yù)處理機(jī)制中使用了前瞻控制算法。

        (a)原始機(jī)制(b)G代碼預(yù)處理機(jī)制圖6 實際打印作品Fig.6 Actual printing works

        4 結(jié)語

        本文在原有3D打印機(jī)控制系統(tǒng)Marlin固件文件處理架構(gòu)上加以變化,提出將G代碼于PC端進(jìn)行預(yù)處理后再輸入3D打印機(jī)中進(jìn)行打印操作,實驗測量和實際打印結(jié)果表明,此方法改善了打印品質(zhì),同時提升了文件處理的速度及效率,減少了打印機(jī)處理器系統(tǒng)負(fù)擔(dān)并可為控制系統(tǒng)留下更多的擴(kuò)展空間。

        猜你喜歡
        指令程序機(jī)制
        聽我指令:大催眠術(shù)
        試論我國未決羈押程序的立法完善
        ARINC661顯控指令快速驗證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        自制力是一種很好的篩選機(jī)制
        文苑(2018年21期)2018-11-09 01:23:06
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        破除舊機(jī)制要分步推進(jìn)
        注重機(jī)制的相互配合
        欧美亚州乳在线观看| 亚洲av色福利天堂久久入口| 啪啪无码人妻丰满熟妇| 粗大挺进尤物人妻一区二区| 草莓视频中文字幕人妻系列| 成人综合亚洲国产成人| 丝袜美腿亚洲综合一区| 亚洲一二三区免费视频| 亚洲国产精品久久久久秋霞小说| 最新中文字幕av无码不卡| 欧美69久成人做爰视频| 国产国拍精品av在线观看按摩 | 国产高清天干天天视频| 国产精品农村妇女一区二区三区| 国产熟女自拍av网站| 寂寞人妻渴望被中出中文字幕| 国产精品毛片一区二区三区| 日本aⅴ大伊香蕉精品视频| 在线观看欧美精品| 亚洲天堂免费一二三四区| 日本高清一区二区不卡| 亚洲精品午夜久久久九九 | 亚洲AV成人综合五月天在线观看| 青青草好吊色在线视频| 上海熟女av黑人在线播放| 国产亚洲精品美女久久久久| av素人中文字幕在线观看| 一区二区三区视频| 欧美亚洲国产精品久久高清| 亚洲另类激情专区小说婷婷久 | 成年女人在线观看毛片| 亚洲视频在线中文字幕乱码| 国产高清视频在线不卡一区| 亚洲精品电影院| 猫咪免费人成网站在线观看| 亚洲中文字幕在线一区二区三区| 激情综合五月天开心久久| 成人男性视频在线观看| 插鸡网站在线播放免费观看| 痉挛高潮喷水av无码免费| 最近中文av字幕在线中文|