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

3D打印機G代碼預處理優化算法

2019-02-15 07:14:44余道洋
中國機械工程 2019年1期
關鍵詞:指令程序機制

余道洋

合肥工業大學機械工程學院,合肥,230009

0 引言

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

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

1 3D打印機G代碼預處理機制架構

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

(1)PC端的G代碼預處理程序負責將G代碼文件預先進行路徑規劃后,輸出成本文自行定義的預處理文件GPRE文件。

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

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

1.1 G代碼預處理程序流程

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

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

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

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

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

1.2 G代碼預處理文件數據結構

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

由于預處理程序主要做G代碼路徑規劃的預先計算處理,所以本文將G代碼預處理后文件數據結構分為兩類:一類是路徑規劃運算完成后所產生的數據,另一類是不經運算處理直接轉換成數據的狀態控制及輔助功能指令所產生的數據。這兩類數據封包格式分別為:①直線軌跡計算文件封包格式,用于記錄路徑規劃運算完成后所產生的數據,封包大小為84字節;②狀態控制及輔助功能指令封包格式,用于記錄不經運算處理直接轉換成數據的指令,封包大小為12字節。本文規劃了開頭碼與結束碼作為每一段封包的識別標記。

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

1.3 G代碼預處理程序前瞻控制算法

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

1.3.1相鄰程序段轉接處速度優化算法

已知

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

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

1.3.2反向速度規劃算法

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

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

1.3.3熔絲擠出速度優化算法

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

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

2 預處理機制對Marlin固件的修改

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

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

圖3 預處理機制文件處理程序Fig.3 Preprocessing mechanism file processing procedure

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

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

3 實驗結果與分析

本文將G代碼文件結構分為打印前準備、打印中及打印結束3個部分,分別分析如下。

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

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

(3)打印結束。與打印前準備相同,多為設定指令,用于打印結束時設定相關參數,執行關閉風扇并使各軸電機回零等工作。

3.1 預處理機制與原始處理機制執行時間的劃分

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

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

(1)指令讀取時間。比較預處理機制和原始處理機制的從系統中讀取程序到將程序發送到命令緩沖區的時間。

(2)指令執行準備時間。比較由命令緩沖區提出,預處理機制與原始處理機制執行指令分析處理,到路徑規劃前的預備處理時間。

(3)路徑規劃時間。比較原始處理機制進入路徑規劃并將數據輸入到緩沖區時間與預處理機制進入數據復制并將所有參數輸入到緩沖區的時間。

3.2 實驗方法及測量結果分析

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

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

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

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

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

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

3.3 實際打印分析

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

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

4 結語

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

猜你喜歡
指令程序機制
聽我指令:大催眠術
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
自制力是一種很好的篩選機制
文苑(2018年21期)2018-11-09 01:23:06
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
破除舊機制要分步推進
中國衛生(2015年9期)2015-11-10 03:11:12
注重機制的相互配合
中國衛生(2014年3期)2014-11-12 13:18:12
主站蜘蛛池模板: 一区二区无码在线视频| 中文字幕人成人乱码亚洲电影| 色一情一乱一伦一区二区三区小说| 久久精品aⅴ无码中文字幕 | lhav亚洲精品| 麻豆精品在线视频| 欧美日韩专区| 亚洲国产精品不卡在线| 狠狠色噜噜狠狠狠狠奇米777| 欧美精品一区在线看| 久久人与动人物A级毛片| 国产青青草视频| 伊人91视频| 亚洲经典在线中文字幕| 国产精品太粉嫩高中在线观看| 国产精品黄色片| 欧美福利在线| 欧美一道本| 青青草原国产精品啪啪视频| 五月丁香在线视频| 老司机久久精品视频| 精品久久综合1区2区3区激情| 国产对白刺激真实精品91| 国产69精品久久久久孕妇大杂乱| 亚洲美女高潮久久久久久久| 青草视频久久| 国产av无码日韩av无码网站| www.亚洲一区| 国产毛片网站| 在线观看视频一区二区| 亚洲欧美精品一中文字幕| 午夜视频免费一区二区在线看| 午夜精品区| 亚洲AV电影不卡在线观看| 偷拍久久网| 国产激情无码一区二区APP | 五月婷婷亚洲综合| 亚洲精品高清视频| 成年免费在线观看| 天堂av综合网| 欧美国产视频| 在线精品亚洲国产| 欧美国产在线精品17p| 国产精品福利社| 免费不卡视频| 国产精品综合久久久| 尤物精品国产福利网站| 亚洲永久精品ww47国产| 午夜综合网| 2024av在线无码中文最新| 亚洲另类色| 成色7777精品在线| 日本色综合网| 亚洲免费成人网| 粗大猛烈进出高潮视频无码| 久草视频一区| 欧美亚洲欧美| 国产国语一级毛片| 另类欧美日韩| 99久久亚洲综合精品TS| 日韩色图区| 又爽又黄又无遮挡网站| 深爱婷婷激情网| 日韩在线观看网站| 日韩精品亚洲精品第一页| 天天综合网色中文字幕| 久久性视频| 亚洲人成高清| 毛片最新网址| 国产精品无码翘臀在线看纯欲| 亚洲欧美成人综合| 99视频免费观看| 伊人色婷婷| 美女一区二区在线观看| 国产在线麻豆波多野结衣| 久久男人视频| 国产91九色在线播放| a色毛片免费视频| 亚洲无码高清一区二区| www.精品视频| 天天爽免费视频| 精品福利一区二区免费视频|