在linux下通常使用gedit或vim直接編寫.c程序,然後通過gcc指令編譯。以Ubuntu系統為例,內詳細過程如下:
1、進入容桌面Temp文件夾
Ⅱ 華中數控基本編程指令有哪些
二)常用G代碼的使用
▲ G50:坐標軸設定(實際上是:根據刀具的實際位置,確定工件坐標系的X、Z坐標值)
G50指令執行後,不產生運動,但工件坐標系按指令值作了更新。
使用舉例:G50 X100 Z250;
其實質含義是:工件坐標系的X坐標立即被被修改為100,Z坐標修改為250。,系統立即以新的坐標值顯示。一股用於錄入方式下通過對刀建立工件坐標系。
關於工件坐標系(即編程所使用的坐標系):
以車床主軸旋轉軸線作為X方向的零位(即徑向零位)。
Z軸方向的零位(即軸向零位)可根據工件情況確定,一般以卡盤端面或工件右端面作為零位。
坐標系的正負方向:以離開工件方向為正,即Z軸為主軸旋轉軸線、從左向右為正,X軸為徑向走刀方向、從中心向外為正(從車削加工的角度來看,常規的切削進刀方向大都是朝向X、Z軸的負方向)。
當使用絕對值編程時,X坐標始終是正值(除特殊情況外),Z坐標則不一定。
當使用相對值編程時,常規的外園車削均是朝向負方向的,所以U、W值常常是負值。(相對值編程時,刀具的前進方向與坐標軸正方向一致為正,相反為負,簡言之,即進去為負,出來為正)。
▲ G00 快速移動
使用舉例:G00 X50 Z200;或用相對坐標:G00 U15 W5;
後面帶的二個尺寸欄位X 、Z 或U、W用以指示移動的目標位置。執行G00的結果是使刀具從當前位置向目標位置快速移動。
G00實際上不屬於插補命令,執行時X、Z軸各自獨立運動,,如某一坐標軸先到達後,該軸先停止運動,另一軸繼續(沿X或Z方向)移動。因此,移動軌跡一般開始是一段鈄直線,然後是一段平行於X或Z軸的直線。
使用G00時必須注意刀具是否可能與工件相碰。
▲ G01 直線插補
使用舉例:G01 X50 Z200 F20;或用相對坐標:G01 U15 W5;
與G00相似,用X 、Z 或U、W指示插補運動結束時的目標位置。
大多數車削加工,如外園、內孔、端面、錐面均使用G01來完成。
程序中使用G01的注意事項:
①程序中,如果是首次使用G01,必須指定進給量F值,以後如進給量不變,則F欄位可省略。
②使用G01前,必須保證刀具的當前位置為正確位置(由於G01中只指定了插補的終點位置,並未指明插補的起點位置)
③G00、G01及其坐標值都是模態指令,下一程序段中可省略相同的欄位。
如: N0010 G00 Z200;
N0020 X90;(作用等於G00 X90 Z200;)
N0030 G01 Z150 F70;
N0040 X95; (作用等於G01 X95 Z150 F70;)
▲ G02、G03 園弧插補
使用舉例:
G00 X50 Z152;(快速定位到起點)
G01 G150;
G02 X150 Z100 R50 F30;
(X150、Z150為園弧的終點坐標,R50為園弧的半徑)
也可以用從起點到園心的坐標距離I、K來表示:
G02 X150 Z100 I50 F30;(I50:指起點至園心的X方向距離為50,Z方向的距離為零,K0可省略。)
注意事項:
①本車床只使用前刀架,順逆時針的判斷與標准相反。
②本例中園弧從右面小頭向左切削,為逆時針,用G02指令。如從大端處向右面小端加工園弧,則應使用G03。
③I、K的值注意正負號:從起點向園心的方向與坐標軸正方向一致為正。
④I值屬於半徑方向的距離,不要用直徑計算。
▲ G04 暫停
用法舉例:G04 P500;(暫停500毫秒,即0.5秒)
G04 X3.5;(暫停3.5秒)
可用於切槽、台階端面等需要刀具在加工表面作短暫停留的埸合。
《三》 單一固定循環G90、G92、G94
單一固定循環把「G00快速接近工件」→」插補運動走刀」→」插補退刀」→」G00快速返回」這四動作組合在一起。以簡化程序。
▲G90:內外園車削循環
使用舉例:
G90 X50 Z35 F0.2 (園柱面車削)
G90 X50 Z35 R2.5 F0.2 (園錐面車削,R2.5指起點半徑與終點半徑之差)
注意事項:
①工件餘量大時,可多次調用G90,例如:
G90 X75 Z20 F0.2;
X70;(由於是模態,相同的欄位不必重復鍵入)
X65;
②與G01在用法上的區別:
G01必須事先把刀具用指令移動到正確的起點位置,以保證加工尺寸
G90車削開始時的起點X坐標是由本段自動計算後移動到位的,故在G90的上一個程序段中,應把刀具移動到一個合適的退刀位置。
▲G94的用法與G90相似,用於端面切削,G92在螺紋車削中介紹。
《四》 復合型車削固定循環
(1)粗精車指令配合使用的G70—G73,其中G70為精車指令(與G71或G72或G73配合使用),此類指令在程序中的使用由三部分組成,以G71為例說明如下:
#第一部份:有二個G71程序段,第一個G71用來規定每一次粗車的吃刀深度,退刀量等;第二個G71用來確定與精車程序段的關系,保證精車餘量、並開始粗車。
#第二部份:用來確定精車的軌跡路線,由若干個程序段組成。供精車時使用,並為粗車時提供數據。
#第三部份:G70程序段,即實際開始精車的指令。
使用舉例:
N20 G00 X200 Z302;(快速定位到粗車起點)
N30 G71 U5 R1 F30;(U5:每次粗車切深5mm-半徑方向;R1:每次退刀1mm)
N40 G71 P50 Q80 U0.6 W0.2;
(P50:描述精車軌跡的第一個程序段號是N50)
(Q80:描述精車軌跡的最後一個程序段號是N80)
(U0.6、W0.2:留給精車的徑向餘量、軸向餘量)
N50 G00 X100;(描述精車軌跡的第一個程序段,)
(注意:1、在此段中徑向快速定位到正確的開始精車位置。
2、此段不允許有Z方向的定位。
3、從N50、N80各段不可省略程序段號。
4、從N50到N80各段的X、Z方向坐標值只允許單向減少或單向增大。)
N60 G01 Z260 F20;
N70 G01 X195 Z210;
N80 G01 Z200;(描述精車軌跡的最後一個程序段)
(可在此處插入換也指令)
N110 G70 P50 Q80;(開始精車,實際執行N50到N80間各程序段)
N120 G00 X220 Z320;(精車結束,退出)
▲上述G71+G70指令的粗車是以多次Z軸方向走刀以切除工件餘量,為精車提供一個良好的條件,適用於毛坯是園鋼的工件。
▲G72+G70車削循環,與G71相似,但粗車是以多次X軸方向走刀來切除工件餘量,適用於毛坯是園鋼、各台階面直徑差較大的工件。
▲G73+G70車削循環,基本用法相同,但各次粗車的運動軌跡與精車軌跡相似,適用於一些毛坯為鍛件、鑄件,這類毛坯已初步具有成品的外形,不宜使用G71、G72指令。
(2)G75外園切槽循環例:
G00 X81 Z-30 ;(定位到槽的起點,注意考慮切刀寬度)
G75 R0 ;(R0:每次X方向退刀0,即直接切到槽底)
G75 X50 Z-80 P16000 Q5000 R0 F50
X,Z:槽的終點坐標。
P:X方向每次切入深度(半徑值,單位0.001mm)。
Q:Z方向每次移動量(單位0.001mm),注意應小於切刀寬度。
R:每次Z方向退刀量。
(3)G76循環指令在螺紋加工中介紹。
《五》 螺紋加工
本系統螺紋加工指令有三條:G32、G92、G76。公制的導程用F指定,英制的每英寸牙數用I指定。
(1)G32:是最基本的螺紋加工指令。
用法舉例:G32 X15.2 Z100 F2;
X15.2、Z100是螺紋終點坐標,F2:導程(單頭螺紋即為螺距)為2(若為每英寸牙數,則使用I,如I11,為每英寸11牙。使用該指令前,應先將刀具定位到正確的起點位置,只要使起點的X坐標小於(內螺紋則為大於)終點的X坐標,即可車出錐螺紋。刀具在Z軸方向的起點位置應距離工件≥2倍導程。
(2)G92:為單一固定循環,G92每執行一次,可完成快速進刀--螺紋切削—快速退刀—返回起點。
G92還能在螺紋車削結束時,按要求有規則退出(稱為螺紋退尾倒角),因此可在沒有退刀槽的情況下車削螺紋。
用法舉例:G92 X15.2 Z100 F2;
意義與G32相同,但在使用G92前,只須把刀具定位到一個合適的起點位置(X方向處於退刀位置),執行G92時系統會自動把刀具定位到所需的切深位置。而G32則不行:起點位置的X方向必須處於切入位置。
車錐螺紋舉例:G92 X29.2 Z150 R-1.5 I11(R-1.5:起點半徑與終點半徑之差。
(3)G76:
為復合型螺紋切削循環,由二個G76程序段組成,指定有關參數後可自動運行多次循環,直到把螺紋車好。
G76根據牙型角(GSK980TA限定為80o,、60o,、55o,、30o,、29o,、0o ,GSK980TD沒有這種限制)沿鈄向逐次切入,以保證刀具為單側切削刃工作,可避免扎刀的發生。隨著螺紋的逐漸切深,系統按規律減少切削深度,直到達到設定的最小切削深度後,按最小切削深度進刀。
使用舉例:
N10 G00 X80 Z280;(快速定位到起點)
N20 G76 P030660 Q50 R0.1;(P後面的6位數分別表示:精車次數3次、螺尾倒角量為6,即退尾長度為螺距的60%,牙型角60度。)
(Q50:最小切削深度0.05(半徑值、指令中單位為0.001)、
(R0.1:留給精車的餘量0.1(半徑值))
N30 G76 X71 Z200 R0 P1949 Q250 F3;(X、Z為螺紋終點位置)
(R0:車錐螺紋時指定起點與終點的半徑差,此處R0為直螺紋,可省略)
(P1949:半徑方向的螺紋牙高為1.949,指令中單位為0.001)
(Q250::第一次半徑方向切入深度為0.25mm,指令中單位為0.001)。
▲ 螺紋加工應注意的事項:
①主軸轉速:不應過高,尤其是是大導程螺紋,過高的轉速使進給速度太快而引起不正常,一些資料推薦的最高轉速為:
使用伺服進給電機時:導程*主軸每分鍾轉速不超過3000
②切入、切出的空刀量,為了能在伺服電機正常運轉的情況下切削螺紋,應在Z軸方向有足夠的空切削長度,一些資料推薦的數據如下:
切入空刀量≥2倍導程; 切出空刀量≥0.5倍導程
③螺紋加工過程中不應變換轉速。
《七》T代碼與刀補:
T代碼用來選擇刀具號並指定刀補號。
如T0202;第一個02為選擇02號刀具,第二02為指定02號刀補值為當前刀補值。
通常刀具號應與刀補號一致,但00號刀補系統設定為取消刀補,即刀補值為零,有時程序要求取消刀補(如在用G50設定坐標系時),可使用如:
T0100;即使用1號刀,同時取消刀補。
《六》 F代碼及G98、G99:
F代碼用於指定進刀量。
G98、G99 用於每分鍾進給量、每轉進給量的變換
系統默認的進給量單位為G98即: 毫米/分鍾,普通車床加工一般採用毫米/轉,
習慣普通車床每轉走刀量的工人可在在插補指令開始前,使用G99指令(如G99 F0.15)把系統進給量設置為每轉進給量。然後在插補指令中用F欄位確定實際進給量.
《八》S代碼及G96、G97、G50 S
▲S代碼用於指定主軸轉速,如S500,即500轉/分,但如果在G96恆線速狀態下,則為切削加工線速度。
▲G96恆線速、G97取消恆線速、G50 S主軸最高轉速限制。
加工端面時,如果主軸轉速固定,由於加工表面直徑的變化,切削速度也隨著變化,有可能導致表面粗糙度不一致等現象,恆線速控制可隨著工件直徑的減小而相應增加主軸轉速,有助於提高加工表面質量、提高生產率。
恆線速情況下車端面時,刀具接近工件中心時,轉速會變得相當大,這是很危險的,必須使用G50 S來限制最高轉速:
使用舉例:G50 S2000;(限制最高轉速為2000轉/分)
G96 S150;(恆線速開始,指定切削速度為150米/分)
G01 X10; (開始車端面)
G97 S200;(取消恆線速,指定轉速為200轉/分
《七》 調用子程序(用戶宏程序)及G65指令
使用子程序可以減少編程工作量,避免重復勞動,並可使程序結構清晰,便於閱讀分析。GSK980T用戶宏程序是一種可以使用變數的子程序,這類子程序被主程序調用時,可以根據變數的不同取值,作出相應的的處理,使用靈活,功能較強。
例:M98 P0050008;(005:調用5次;0008:所調用子程序號為O0008)
M98 P0008;(只調用一次)
說明:980T的子程序是一個獨立的程序,也稱為宏程序,應該把子程序作為一個單獨的程序進行編寫並保存,
子程序的最後一個程序段為:M99;。系統執行到M99後,即返回主程序,執行M98的下一程序段。
M98,M99舉例
主程序 O0007;
M03 S1500 T0101;
G00 X81 Z0;
M98 P0050008;
G00 X90 Z200;
M30;
子程序 O0008;
G00 W-10;
G01 X0 F150;
G00 X82;
M99;
Ⅲ 數控編程的指令有哪些
1.2.3.2. 運動方式相關 G 指令
* 倒角、倒圓 G01 指令
倒角控制機能可以在兩相鄰軌跡之間插直線倒角或圓弧倒角。
l )直線倒角
格式: G01X__Z__ C
功能:直線倒角G01,指令刀具從A點到B點,然後到C點(見圖1一10)。
說明:X、Z:在G90時,兩相鄰直線的交點,即G點的坐標值;
在 G91 時.是G點相對於起始直線軌跡的始點A點的移動距離。
C :是相鄰兩直線的交點6,相對於倒角始點A的距離。
2 )圓弧倒角
格式:G01X__Z__R__:
功能:圓弧倒角G01,指令刀具從A點到B點,然後到c點(見圖1一11)。
說明:X、Z:在G90時.是兩相鄰直線的交點,即G點的坐標值;
在091時,是G點相對於起始直線軌跡的始點A點的移動距離。
R: 是倒角圓弧的半徑值。
實例1-12
(根據下列格式套用,編輯數據參.實用簡單)
參見圖1-12
%1012(絕對指令編程)
N1 G92 X70 Z60
N2 G90 G01 XO Z70F300 M03
N3 G01 X26 C3
N4 Z48 R3
N6 Z0
N7 G00 X70 Z60
N8 M05
N9 M30
%1112(噌量指令編程)
N1 G92 X70 Z80
N2G91 G00X—70Z—10
N3 G01 X26 C3 F300
N4 Z—22 R3
N5 X39 Z—14C3
N6 Z—34
N7 G00 X5 Z80
N8 M30
註: 1 、使用增量指令編程進行倒角控制時,如O1112程序的N3、N4程序段,其指令必須汾別從點D、G開始計算距離,而不是從點E、H開始。
2 、單段工作方式下,刀具將在點D、G處停止前進,而非停於E、H點。
3 、在螺紋切削程序段中不得出現倒角控制指令。
4 、如X、Z軸指定的移動量比指定的R或C小時,系統將報警。
5 、在 G01 狀態下. C 、 R 指令均出現時,以後出現的為准。
Ⅳ 如何使用SSE指令集編寫應用程序
1、編譯器的自動矢量化
-mfpmath=sse
僅建議在P4和以上級別的處理器上使用該選項。
-mmmx
-msse
-msse2
-msse3
-m3dnow
-mssse3(gcc-4.3新增)
-msse4.1(gcc-4.3新增)
-msse4.2(gcc-4.3新增)
-msse4(含4.1和4.2,gcc-4.3新增)
是否使用相應的擴展指令集以及內置函數,需要按照自己的cpu做選擇。
2、使用C/C++類庫
目前,GNU
GCC等大多數編譯器都提供了對SSE指令集的變成支持,允許用戶在C++代碼中不用編寫匯編代碼,就可以直接通過調用庫函數而直接使用SSE指令。
3、使用編譯器的內嵌原語(Intrinsics)
SSE的intrinsics的規則
_mm_<opcode>_<suffix>
其中,<opcode>是指令的類別,像add、sub等等,<suffix>是指令的種類。在SSE浮點運算指令中,只有兩種:ps和ss。
ps:Packed
Single-precision,指對寄存器中的四個單精度浮點同時進行運算。
ss:Scaler
Single-precision,指對寄存器中的DATA0進行運算。
編程時需要包含下表所示的頭文件:
mmintrin.h
MMX
xmmintrin.h
SSE
emmintrin.h
SSE2
pmmintrin.h
SSE3
tmmintrin.h
SSSE3
intrin.h
SSE4A
smmintrin.h
SSE4.1
nmmintrin.h
SSE4.2
mm3dnow.h
3DNOW
說明:如果導入一個高版本的指令集頭文件,那麼一般就不需要在導入低版本的指令了。
4、使用內嵌匯編
指令語法特徵
如:PADDUSW(無符號飽和模式的字組相加)
前綴:P代表成組數據類型
操作指令:如ADD、SUB等
後綴:US為無符號飽和處理
S為有符號飽和處理
B、W、D、Q分別為位元組組、字組、雙字組、四字。
GCC的asm結構
用匯編編寫的程序運行速度快,但開發速度非常慢,效率也很低。如果只是想對關鍵代碼段進行優化,更好的辦法是將匯編指令嵌入到C語言程序中,充分利用高級語言和匯編語言各自的優點。一般來講,在C代碼中嵌入匯編語句要比「純粹」的匯編語言代碼復雜的多,因為需要解決如何分配寄存器,以及如何與C代碼中的變數相結合等問題。內聯匯編能夠靈活操作,而且可以使其輸出通過C變數顯示出來。因為它具有這種能力,所以asm可以用作匯編指令和C程序之間的介面。使用__asm__關鍵字,如果超過一行的指令,每行要加上雙引號,並且後面加上\n\t。如果希望確保編譯器不會在「asm」內部優化指令,可以在「__asm__」後面使用關鍵字「volatile」。
內聯匯編的基本要素
具體語法結構,請看我的一篇博文:《GCC內嵌匯編》文章連接:
http://blog.chinaunix.net/u3/119372/showart_2417924.html
基本要素說明:
限定符
意義
「m」 「v」 「o」
內存單元
「r」
任意寄存器
「q」
寄存器eax,ebx,ecx,edx之一
「i」 「h」
直接操作數
「E」 「F」
浮點數
「g」
任意
「a」 」b」 」c」 」d」
分別表示寄存器eax,ebx,ecx,edx
「S」 」D」
寄存器esi,edi
「I」
常數(0至31)
5、SSE編程注意事項
數據對齊
CPU內存單元以16Byte為邊界,如果數據在運算之前不進行對齊,會是指令運算產生大量延時。
GCC:
float
__attribute__((aligned(16))) a[4]={1.2f,3.5f,1.7f,2.8f};
VC:
__declspec(align(16)) float a[4]={1.2f,3.5f,1.7f,2.8f};