国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python編程語言的絎縫機NC代碼的自動生成

2019-12-17 01:05張子立楊九銅梅宇亮朱志松
毛紡科技 2019年11期
關鍵詞:花型圓弧圓心

張子立,楊九銅,梅宇亮,朱志松

(南通大學 機械工程學院,江蘇 南通 226019)

隨著現(xiàn)代制造產業(yè)的高速發(fā)展,數(shù)控技術在高精度、高效率和柔性自動化方面有著突出的優(yōu)勢。隨著計算機高速發(fā)展,在絎縫機的生產加工過程中,手動人工NC編程、程序試切驗證等傳統(tǒng)的制造工藝已經(jīng)無法滿足當前產品多樣化、個性化的需求[1-3]。為了實現(xiàn)加工過程的自動化、智能化,必須對現(xiàn)有的系統(tǒng)進行升級改進。因此,可將開放式數(shù)控系統(tǒng)運用于絎縫機進行升級改造。

絎縫機數(shù)控系統(tǒng)分為上位機和下位機2部分,上位機為PC機,用來實現(xiàn)花型圖案的設計與繪制、運行參數(shù)設置、加工過程監(jiān)控、運動控制、加工過程模擬仿真等功能;下位機采用倍福工控機,用來解釋NC代碼(數(shù)控加工代碼)并控制伺服驅動器發(fā)送脈沖信號,以控制絎縫機的機械加工過程。這類數(shù)控系統(tǒng)將PC機的信息處理能力和運動控制卡的控制能力有機結合,具有可靠性高、功能強、性能好,操作簡單方便,開發(fā)周期短,成本低等優(yōu)點,廣泛應用于制造業(yè)自動化控制等各個領域。

本文針對此類絎縫機數(shù)控系統(tǒng)設計了一種NC代碼自動生成系統(tǒng),該系統(tǒng)能將在上位機繪制的花型文件直接轉化為NC代碼,并在上位機進行模擬仿真以校驗NC代碼,使用自動生成的方式大大提高了絎縫機加工系統(tǒng)的工作效率,校驗系統(tǒng)提升了NC代碼的準確率和加工的準確性。

1 花型圖案數(shù)據(jù)分析

用戶使用花型圖案設計軟件設計并繪制所需圖案,圖案對應的花型圖案文件為dat文件。繪制的圖形是矢量圖形,該文件利用終點坐標和類型代碼來表示點、線、多邊形、圓弧等幾何圖元[4]。對矢量圖形的參數(shù)進行分析,花型參數(shù)格式見圖1。圖中每一行參數(shù)表示一段軌跡路線,其中包含了NC代碼類型、X軸起點坐標、Y軸起點坐標、X軸終點坐標、Y軸終點坐標、圓心坐標、圓弧順逆、進給速度等參數(shù)。

圖1 花型參數(shù)格式

參數(shù)意義如下:

NC代碼類型:參數(shù)分為4類,用于對NC代碼的類型進行區(qū)分。0表示直線插補,2表示快速定位,1表示圓弧插補,-1出現(xiàn)在每個花型文件的最后表示回到起始點。

X、Y軸的起始和終點坐標:用2個坐標間的差值表示每行NC代碼X、Y軸的進給量。

圓心坐標:在圓弧插補時需輸入圓心坐標參數(shù)。

圓弧順逆:參數(shù)為1表示逆時針圓弧,參數(shù)為0表示順時針圓弧。

編寫數(shù)據(jù)處理函數(shù)對花型文件進行處理,分為以下幾個步驟:

①選定花型文件并逐行讀取。每行花型文件表示花型圖案中的每條軌跡,讀取到的數(shù)據(jù)根據(jù)軌跡的不同在生成NC代碼前分組。

②轉換數(shù)據(jù)類型。將數(shù)據(jù)轉換成多維數(shù)組,并將數(shù)組中數(shù)據(jù)類型轉化為float浮點數(shù)類型,用于NC文件生成時的運算。

③將多維數(shù)組轉化為列表,完成數(shù)據(jù)的前期處理。

2 NC代碼生成

2.1 花型圖案數(shù)據(jù)讀取及預處理

為了便于用戶使用和提升系統(tǒng)的人機交互性,利用圖形用戶界面開發(fā)軟件PyQt5設計開發(fā)了GUI圖形用戶界面,用于進行NC代碼軌跡路線的顯示和文件的選取。Qt是一套跨平臺的C ++庫,可以實現(xiàn)傳統(tǒng)的UI開發(fā)。PyQt5是Qt的一套全面的Python(編程語言)綁定,它擁有超過35個擴展模塊,并使Python能夠在所有支持的平臺上用作應用程序開發(fā)語言[5-6]。通過使用PyQt5中QFileDialog.getOpenFileName函數(shù)實現(xiàn)對花型文件的讀取,循環(huán)調用readlines()函數(shù)逐行讀取花型文件中數(shù)據(jù)?;ㄐ臀募x取方法如下:

file_name=QFileDialog.getOpenFileName(self,"open file dialog","./","(*.dat)")

with open(file_name[0], ′r′,encoding=′utf-8′) as f:

for line in f.readlines():

L.append(line.split()

L列表中參數(shù)包含空格等不必要元素,使用itertools.groupby()函數(shù)刪除列表中的空格,調用np.array().astype(float)函數(shù)將列表轉換為多維數(shù)組,并將多維數(shù)組中數(shù)據(jù)類型轉換為float類型,便于后續(xù)計算。采用np.tolist()函數(shù)將數(shù)組再次轉換為列表,列表命名為data,對data的操作便于后續(xù)對關鍵參數(shù)的提取。通過識別、提取列表中的關鍵參數(shù),獲得生成NC代碼時所需NC代碼類型、坐標、速度等。為方便調用生成NC代碼中參數(shù),將列表中的關鍵參數(shù)進行定義。參數(shù)定義見圖2。

圖2 參數(shù)定義

2.2 NC代碼生成

在數(shù)控程序加工過程中,機床的運動由G、M代碼來指定,用以描述NC系統(tǒng)的具體運動過程[7]。它將圖紙中工件點、線、面的信息提取為加工的運動路徑[8]。因此在本文控制系統(tǒng)中,將處理完的數(shù)據(jù)列表編譯為NC代碼是整個系統(tǒng)中關鍵的一步。

通過對花型文件數(shù)據(jù)的分類整理計算,對照NC代碼標準格式,寫入獲得的NC代碼參數(shù),最后將生成各段NC代碼按順序寫入NC文件中,NC代碼生成算法流程如圖3所示。NC代碼生成程序采用內嵌多路分支結構進行構建,每路分支對應一個編譯處理函數(shù),有利于提高程序運行效率。

圖3 NC代碼生成算法流程圖

對data中參數(shù)進行分析,data中數(shù)據(jù)類型分成3類,分別為快速定位,直線插補,圓弧插補。生成NC代碼前,先建立一個名為gcode的空列表用于存儲生成后的NC代碼。通過上述對花型圖案數(shù)據(jù)的分析可知,生成NC代碼的過程為:從data中截取坐標加工、速度等參數(shù),利用字符串的連接,將連接后的每條NC代碼采用列表的append方法將函數(shù)添加到gcode列表中。當data中NC代碼類型參數(shù)為“0”時,生成直線插補準備功能字G01,將data中的X軸、Y軸的終點坐標返回一個string格式對象并分別置于X、Y字符后,將data中進給速度參數(shù)返回string格式對象并放入F字符后,連接后的NC代碼如G01X′+str(x2) ′+Y′+str(y2) ′+F′+str(xyv) ′所示。當data中NC代碼類型參數(shù)為“2”時,生成準備功能字G00進行快速定位,將data中X軸坐標、Y軸坐標、機床加工進給速度返回string格式對象并依次連接,如G00X′+str(x2) ′+Y′+str(y2) ′+F′+str(xyv) ′所示。方法如下:

if (data[i][0]==0):

gcode.append(′G01X′+str(x2)+′Y′+str(y2)+′F′+str(xyv))

elif (data[i][0]==2):

gcode.append(′G00X′+str(x2)+′Y′+str(y2)+′F′+str(xyv))

式中:x2、y2表示加工終點坐標;xyv為進給速度。

圓弧插補的NC代碼生成有別于快速定位和直線插補,在機床加工工程中圓弧加工存在順圓和逆圓的差別,因此圓弧插補存在G02、G03 兩種準備功能字分別表示逆圓和順圓[9]。花型文件數(shù)據(jù)中采用起始點、終結點、圓心坐標和圓弧順逆參數(shù)4個要素來表示圓弧,圓弧插補NC代碼采用G03 (G02)XYIJF的形式表示[10~11]。當data中NC代碼類型參數(shù)為“1”時,判定進行圓弧插補生成。當data中圓弧順逆參數(shù)為“0”時表示順時針圓弧,生成準備功能字G03,將data中X軸、Y軸終點坐標參數(shù)返回一個string格式對象放入X、Y字符后,圓弧插補中I、J表示圓心相對于起始點坐標,將圓心的坐標值減去起點坐標值算出圓心相對起點增量,圓心增量轉化為string格式后填入I、J之后,用于表示圓心相對坐標。當data中圓弧順逆參數(shù)為“1”時,生成準備功能字G02,其后的NC代碼按采用順時針圓弧NC代碼生成方式。其中在此處計算的半徑R用于后續(xù)NC代碼的校驗。方法如下:

if (data[i][0]==1) :

R=np.sqrt((dCenterX-x1)**2+(dCenterY-y1)**2)

I=dCenterX-x1

J=dCenterY-y1

if (direction==0):

gcode.append(′G03X′+str(x2)+′Y′+str(y2)+′I′+str(I) +′J′+str(J)+′F′+str(xyv))

else:

gcode.append(′G02X′+str(x2)+′Y′+str(y2)+′I′+str(I) +′J′+str(J)+′F′+str(xyv))

式中:dCenterX、 dCenterY為圓心絕對坐標;I、J為圓心相對坐標。生成的NC代碼以字符串的形式表示,每一段NC代碼都按data中數(shù)據(jù)的順序存儲在建立的gcode列表中。將gcode列表中的NC代碼寫入NC文件。

3 NC代碼校驗

為檢驗生成NC代碼的準確性,利用生成的NC代碼在GUI界面中進行花型繪制,使用與原始花型圖案不同顏色的線條加以區(qū)分。2個花型圖案對比便于用戶發(fā)現(xiàn)生成的NC代碼和原始花型圖案間的差異。NC代碼圖形的生成采用在Python框架下PyQt5進行開發(fā)。運用PyQt5中提供的圖元選項QGraphicsLineItem定義drawline函數(shù),用于繪制直線;利用圖元選項QGraphicsPathItem定義繪圖函數(shù)drawcle,用于繪制圓弧?;ㄐ蛨D案使用圖形項item進行表示,花型圖案中每個元素對應一個item,所有item圖形項的集合表示整個花型圖案。定義繪圖函數(shù)如下:

def drawline(x1,y1,x2,y2):

item=QtWidgets.QGraphicsLineItem(x1,y1,x2,y2)

ig.addToGroup(item)

def drawcle(x1,y1,cx0,cy0,R,start,span):

path.moveTo(x1,y1)

path.arcTo(QtCore.QRectF(cx0-R,cy0-R, 2*R, 2*R),start,span)

item=QtWidgets.QGraphicsPathItem(path)

ig.addToGroup(item)

式中:x1、y1為起點坐標;cx0、cy0為圓心坐標;R為半徑;start為起始角度;span為圓弧包角。

調用QGraphicsLineItem繪制坐標起點和終點分別為(x1,y1),(x2,y2)的直線,建立名為ig的Group列表用于存儲item圖形項,調用addToGroup()函數(shù),將生成的item圖形項存入到Group列表中。采用path路徑的方法繪制圓弧,以同樣方式添加到Group列表中。生成的NC代碼和花型圖案分別見圖4、5。

圖4 生成的NC代碼(部分)

圖5 生成的花型圖案

將NC代碼準備功能字作為標記位,用于調用不同繪圖函數(shù),采用多路循環(huán)分支結構分別進行直線、圓弧的繪制和坐標移動。當準備功能字為G0時,用path.moveTo()函數(shù)進行坐標移動,只將坐標移動到終點坐標的位置不進行畫圖操作。當讀取準備功能字G01時,調用drawline函數(shù),將起點坐標和終點坐標作為直線繪制函數(shù)的參數(shù),(x1,y1)和(x2,y2)分別表示線段的起點和終點坐標。當讀取準備功能字為G02/G03時,調用drawcle函數(shù)進行圓弧的繪制,drawcle函數(shù)用7個參數(shù)描述圓?。篨軸起點坐標、Y軸起點坐標、圓心X坐標、圓心Y坐標、半徑、起始角度、圓弧包角。其中,(x1,y1)和(dCenterX, dCenterY)分別表示起點坐標、圓心坐標,圓弧半徑通過以下公式求出:R=np.sqrt((dCenterX-x1)**2+(dCenterY-y1)**2)。start參數(shù)表示圓弧起始角度,使用start=np.arccos((x1-dCenterX)/R)計算得出。span參數(shù)表示圓弧包角, 其正負表示圓弧旋轉的順逆。

按上述方法,根據(jù)NC代碼中順序分別調用drawline、drawcle繪圖函數(shù)和位移函數(shù),繪制出花型圖案即可在GUI界面上顯示出來。

4 結束語

本文基于Python設計了一種NC代碼自動生成方法,具有一定的創(chuàng)新性。在本文方法中,程序實現(xiàn)簡單,可以滿足絎縫機加工的各種工藝需求,提升絎縫機的自動化加工水平,該方法能有效地提升NC代碼的準確率并監(jiān)管絎縫機加工過程。實驗證明,程序運行穩(wěn)定可靠,生成的NC文件已用于絎縫機的生產加工,同時NC文件校驗系統(tǒng)的反饋表明NC文件的準確率達到了預期效果。此外,該方法基于Python進行設計開發(fā),可以很好地移植到其他系統(tǒng)中廣泛使用。

猜你喜歡
花型圓弧圓心
淺析圓弧段高大模板支撐體系設計與應用
離心泵雙圓弧圓柱形葉片的幾何方程
哥特式浪漫
半圓與半圓弧
呼倫貝爾野生芍藥和栽培芍藥的繁殖生物學特性
基于交互式分割的蕾絲花型檢索算法
以圓周上一點為圓心作圓的圖的性質及應用
我國觀賞植物花型基因研究進展
如何讓學生更好地掌握圓弧連接的畫法
參考答案