A. 如何用宏程序車偏心圓
車偏心的宏程利用G32與車削同心軸不同,偏心軸車削徑向進給後,當z 向開始進給時主軸的旋轉角度應與前一刀嚴格一致,否則偏心軸的軸線偏移方向將是隨機的,會導致偏心軸車出來出現很多問題而以失敗告終。因此在正常切削進給前加入G32引導程 ,G32指令運行時與G0、G02、G03 等准備功能不同,其刀具的軸線進給時刻不是隨機的。只有當數控系統接收到主軸脈沖編碼器發出的zero 脈沖信號後才可驅動z軸電機進給,因此G32指令在 車削螺紋多次進給時才不會亂加。車削偏心軸用G32,二者之間不允許做暫停,能有效解決主軸的定向問題。另外還需注意,在切削過程中不允許操作者改變機床操作面板上的進給倍率修調旋鈕(G32進給倍率修調將被屏蔽,其他插補功能不會屏蔽)
B. 法拉克G代碼(車床和加工中心),循環指令格式,指令格式要詳細,舉例子,宏程序怎麼弄的!要詳細 11
數控編程(數控技術)---標准G代碼與標准M代碼
數控機床標准G代碼
准備功能字是使數控機床建立起某種加工方式的指令,如插補、刀具補償、固定循環等。G功能字由地址符G和其後的兩位數字組成,從G00—G99共100種功能。JB3208-83標准中規定如下表:
表 准備功能字G
代碼 功能作用范圍 功能 代碼 功能作用范圍 功能
G00 點定位 G50 * 刀具偏置0/-
G01 直線插補 G51 * 刀具偏置+/0
G02 順時針圓弧插補 G52 * 刀具偏置-/0
G03 逆時針圓弧插補 G53 直線偏移注銷
G04 * 暫停 G54 直線偏移X
G05 * 不指定 G55 直線偏移Y
G06 拋物線插補 G56 直線偏移Z
G07 * 不指定 G57 直線偏移XY
G08 * 加速 G58 直線偏移XZ
G09 * 減速 G59 直線偏移YZ
G10-G16 * 不指定 G60 准確定位(精)
G17 XY平面選擇 G61 准確定位(中)
G18 ZX平面選擇 G62 准確定位(粗)
G19 YZ平面選擇 G63 * 攻絲
G20-G32 * 不指定 G64-G67 * 不指定
G33 螺紋切削,等螺距 G68 * 刀具偏置,內角
G34 螺紋切削,增螺距 G69 * 刀具偏置,外角
G35 螺紋切削,減螺距 G70-G79 * 不指定
G36-G39 * 不指定 G80 固定循環注銷
G40 刀具補償/刀具偏置注銷 G81-G89 固定循環
G41 刀具補償--左 G90 絕對尺寸
G42 刀具補償--右 G91 增量尺寸
G43 * 刀具偏置--左 G92 * 預置寄存
G44 * 刀具偏置--右 G93 進給率,時間倒數
G45 * 刀具偏置+/+ G94 每分鍾進給
G46 * 刀具偏置+/- G95 主軸每轉進給
G47 * 刀具偏置-/- G96 恆線速度
G48 * 刀具偏置-/+ G97 每分鍾轉數(主軸)
G49 * 刀具偏置0/+ G98-G99 * 不指定
註:*表示如作特殊用途,必須在程序格式中說明
數控機床標准M代碼
輔助功能字是用於指定主軸的旋轉方向、啟動、停止、冷卻液的開關,工件或刀具的夾緊和松開,刀具的更換等功能。輔助功能字由地址符M和其後的兩位數字組成。JB3208-83標准中規定如下表:
表 輔助功能字M
代碼 功能作用范圍 功能 代碼 功能作用范圍 功能
M00 * 程序停止 M36 * 進給范圍1
M01 * 計劃結束 M37 * 進給范圍2
M02 * 程序結束 M38 * 主軸速度范圍1
M03 主軸順時針轉動 M39 * 主軸速度范圍2
M04 主軸逆時針轉動 M40-M45 * 齒輪換檔
M05 主軸停止 M46-M47 * 不指定
M06 * 換刀 M48 * 注銷M49
M07 2號冷卻液開 M49 * 進給率修正旁路
M08 1號冷卻液開 M50 * 3號冷卻液開
M09 冷卻液關 M51 * 4號冷卻液開
M10 夾緊 M52-M54 * 不指定
M11 松開 M55 * 刀具直線位移,位置1
M12 * 不指定 M56 * 刀具直線位移,位置2
M13 主軸順時針,冷卻液開 M57-M59 * 不指定
M14 主軸逆時針,冷卻液開 M60 更換工作
M15 * 正運動 M61 工件直線位移,位置1
M16 * 負運動 M62 * 工件直線位移,位置2
M17-M18 * 不指定 M63-M70 * 不指定
M19 主軸定向停止 M71 * 工件角度位移,位置1
M20-M29 * 永不指定 M72 * 工件角度位移,位置2
M30 * 紙帶結束 M73-M89 * 不指定
M31 * 互鎖旁路 M90-M99 * 永不指定
M32-M35 * 不指定
註:*表示如作特殊用途,必須在程序格式中說明
[ 指令格式的說明 ]
指令 說 明
G17 指定圓弧在XpYp 平面
G18 指定圓弧在XpZp 平面
G19 指定圓弧在YpZp 平面
G02 順時針方向圓弧插補(CW)
G03 逆時針方向圓弧插補(CCW)
Xp__ X 軸或平行於X 軸的指令值(由參數No.1022 設定)
Yp__ Y 軸或平行於Y 軸的指令值(由參數No.1022 設定)
Zp__ Z 軸或平行於Z 軸的指令值(由參數No.1022 設定)
I__ 圓弧中心相對於起點的X 軸的距離(帶符號)
J__ 圓弧中心相對於起點的Y 軸的距離(帶符號)
K__ 圓弧中心相對於起點的Z 軸的距離(帶符號)
R__ 圓弧半徑指定的帶符號的圓弧半徑
F__ 沿圓弧的進給率
G 代碼組別 功能附註
G00 01 快速定位 模態
G01 直線插補 模態
G02 順時針圓弧插補 模態
G03 逆時針圓弧插補 模態
G04 00 暫停 非模態
*G10 數據設置 模態
G11 數據設置取消 模態
G17 16 XY平面選擇 模態
G18 ZX平面選擇(預設) 模態
G19 YZ平面選擇 模態
G20 06 英制(in) 模態
G21 米制(mm) 模態
*G22 09 行程檢查功能打開 模態
G23 行程檢查功能關閉 模態
*G25 08 主軸速度波動檢查關閉 模態
G26 主軸速度波動檢查打開 非模態
G27 00 參考點返回檢查 非模態
G28 參考點返回 非模態
G31 跳步功能 非模態
*G40 07 刀具半徑補嘗取消 模態
G41 刀具半徑左補嘗 模態
G42 刀具半徑右補嘗 模態
G43 00 刀具長度正補嘗 模態
G44 刀具長度負補嘗 模態
G45 刀具長度補嘗取消 模態
G50 00 工件坐標原點設置,最大主軸速度設置 非模態
G52 局部坐標系設置 非模態
G53 機床坐標系設置 非模態
*G54 14 第一工件坐標系設置 模態
G55 第二工件坐標系設置 模態
G56 第三工件坐標系設置 模態
G57 第四工件坐標系設置 模態
G58 第五工件坐標系設置 模態
G59 第六工件坐標系設置 模態
G65 00 宏程序調用 非模態
G66 12 宏程序模態調用 模態
*G67 宏程序模態調用取消 模態
G73 00 高速深孔鑽孔循環 非模態
G74 工旋攻螺紋循環 非模態
G75 精鏜循環 非模態
*G80 10 鑽孔固定循環取消 模態
G81 鑽孔循環
G84 攻螺紋循環 模態
G85 鏜孔循環??
G86 鏜孔循環 模態
G87 背鏜循環 模態
G89 鏜孔循環 模態
G90 01 絕對坐標編程 模態
G91 增量坐標編程 模態
G92 工件坐標原點設置 模態
註:1.當機床電源打開或按重置鍵時,標有"* "符號的G代碼被激活,即預設狀態。
2 . 不同組的G代碼可以在同一程序段中指定;如果在同一程序段中指定同組G代碼,.最後指定的G代碼有效。
3.由於電源打開或重置,使系統被初始化時,已指定的G20或G21代碼保持有效.
4.由於電源打開被初始化時,G22代碼被激活;由於重置使機床被初始化時, 已指定的G22或G23代碼保持有效.
編碼字元的意義
字元 意義
A 關於X軸的角度尺寸
B 關於Y軸的角度尺寸
C 關於Z軸的角度尺寸
D 刀具半徑偏置號
E 第二進給功能(即進刀速度,單位為 mm/分鍾)
F 第一進給功能(即進刀速度,單位為 mm/分鍾)
G 准備功能
H 刀具長度偏置號
I 平行於X軸的插補參數或螺紋導程
J 平行於Y軸的插補參數或螺紋導程
L 固定循環返回次數或子程序返回次數
M 輔助功能
N 順序號(行號)
O 程序編號
P 平行於X軸的第二尺寸或固定循環參數
Q 平行於Y軸的第三尺寸或固定循環參數
R 平行於Z軸的第三尺寸或循環參數圓弧的半徑
S 主軸速度功能(表標轉速,單位為 轉/分)
T 第一刀具功能
U 平行於X軸的第二尺寸
V 平行於Y軸的第二尺寸
W 平行於Z軸的第二尺寸
X 基本尺寸
Y 基本尺寸
Z 基本尺寸
FANUC數控系統的准備功能M代碼及其功能
M代碼 功能 附註
M00 程序停止 非模態
M01 程序選擇停止 非模態
M02 程序結束 非模態
M03 主軸順時針旋轉 模態
M04 主軸逆時針旋轉 模態
M05 主軸停止 模態
M06 換刀 非模態
M07 冷卻液打開 模態
M08 冷卻液關閉 模態
M30 程序結束並返回 非模態
M31 旁路互鎖 非模態
M52 自動門打開 模態
M53 自動門關閉 模態
M74 錯誤檢測功能打開 模態
M75 錯誤檢測功能關閉 模態
M98 子程序調用 模態
M99 子程序調用返回 模態
C. 「宏程序」是什麼意思
大家都在問宏程序~其實說起來宏就是用公式來加工零件的,比如說橢圓,如果沒有宏的話,我們要逐點算出曲線上的點,然後慢慢來用直線逼近,如果是個光潔度要求很高的工件的話,那麼需要計算很多的點,可是應用了宏後,我們把橢圓公式輸入到系統中然後旦察段我們給出Z坐標並且每沒螞次加10um那麼宏就會自動算出X坐標並且進行切削,實際上宏在程序中主要起到的是運算作用..宏一般分為A類宏和B類宏.A類宏是以G65 Hxx P#xx Q#xx R#xx的格式輸入的,而B類宏程序則是 x0dx0a以直接的公式和語言輸入的和C語言很相似在0i系統中應用比較廣.由於現在B類宏程序的大量使 x0dx0a用很多書都進行了介紹這里我就不再重復了,但在一些老系統中,比如法蘭克OTD系統中由於它的MDI鍵盤上沒有公式符號,連最簡單的等於號都沒有,為此如果應用B類宏程序的話就只能在計算機上編好再通過RSN-32介面傳輸的數控系統中,可是如果我們沒有PC機和RSN-32電纜的話怎麼辦呢,那麼只有通過A類宏程序來進行宏程序編制了,下面我介紹一下A類宏的引用; x0dx0aA類宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式輸入的xx的意思就是數值,是以um級的量輸入的,比如你輸入100那就是0.1MM~~~~~.#xx就是變數號,關於變數號是什麼意思再不知道的的話我也就沒治了,不過還是教一下吧,變數號就是把數值代入到一個固定的模譽地址中,固定的地址就是變數,一般OTD系統中有#0~~~#100~#149~~~#500~#531關閉電源時變數#100~#149被初始化成「空」,而變數#500~#531保持數據.我們如果說#100=30那麼現在#100地址內的數據就是30了,就是這么簡單.好現在我來說一下H代碼,大家可以看到A類宏的標准格式中#xx和xx都是數值,而G65表示使用A類宏,那麼這個H就是要表示各個數值和變數號內的數值或者各個變數號內的數值與其他變數號內的數值之間要進行一個什麼運算,可以說你了解了H代碼A類宏程序你基本就可以應用了,好,現在說一下H代碼的各個含義: x0dx0a以下都以#100和#101和#102,及數值10和20做為例子,應用的時候別把他們當格式就行, x0dx0a基本指令: x0dx0aH01賦值;格式:G65H01P#101Q#102:把#102內的數值賦予到#101中 x0dx0aG65H01P#101Q#10:把10賦予到#101中 x0dx0aH02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的數值加上#103的數值賦予#101 x0dx0aG65 H02 P#101 Q#102 R10 x0dx0aG65 H02 P#101 Q10 R#103 x0dx0aG65 H02 P#101 Q10 R20 x0dx0a上面4個都是加指令的格式都是把Q後面的數值或變數號內的數值加上R後面的數 x0dx0a值或變數號內的數值然後等於到P後面的變數號中. x0dx0aH03減指令;格式G65 H03 P#101 Q#102 R#103,把#102的數值減去#103的數值賦予#101 x0dx0aG65 H03 P#101 Q#102 R10 x0dx0aG65 H03 P#101 Q10 R#103 x0dx0aG65 H03 P#101 Q20 R10 x0dx0a上面4個都是減指令的格式都是把Q後面的數值或變數號內的數值減去R後面的數 x0dx0a值或變數號內的數值然後等於到P後面的變數號中. x0dx0aH04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的數值乘上#103的數值賦予#101 x0dx0aG65 H04 P#101 Q#102 R10 x0dx0aG65 H04 P#101 Q10 R#103 x0dx0aG65 H04 P#101 Q20 R10 x0dx0a上面4個都是乘指令的格式都是把Q後面的數值或變數號內的數值乘上R後面的數 x0dx0a值或變數號內的數值然後等於到P後面的變數號中. x0dx0aH05除指令;格式G65 H05P#101 Q#102 R#103,把#102的數值除以#103的數值賦予#101 x0dx0aG65 H05 P#101 Q#102 R10 x0dx0aG65 H05 P#101 Q10 R#103 x0dx0aG65 H05 P#101 Q20 R10 x0dx0a上面4個都是除指令格式都是把Q後面的數值或變數號內的數值除以R後面的數 x0dx0a值或變數號內的數值然後等於到P後面的變數號中.(余數不存,除數如果為0的話會出現112報警) x0dx0a三角函數指令: x0dx0aH31 SIN正玄函數指令:格式G65 H31 P#101 Q#102 R#103;含義Q後面的#102是三角形的斜邊R後面的#103內存的是角度.結果是#101=#102*SIN#103,也就是說可以直接用這個求出三角形的另 x0dx0a一條邊長.和以前的指令一樣Q和R後面也可以直接寫數值. x0dx0aH32 COS余玄函數指令:格式G65 H32 #101 Q#102 R#103;含義Q後面的#102是三角形的斜邊 x0dx0aR後面的#103內存的是角度.結果是#101=#102*COS#103,也就是說可以直接用這個求出三角形的 x0dx0a另一條邊長.和以前的指令一樣Q和R後面也可以直接寫數值. x0dx0aH33和H34本來應該是TAN 和ATAN的可是經過我使用得數並不準確,希望有知道的人能夠告訴我是為什麼? x0dx0a開平方根指令: x0dx0aH21;格式G65 H21 P#101 Q#102 ;意思是把#102內的數值開了平方根然後存到#101中(這個指令是非常重要的如果在車橢圓的時候沒有開平方跟的指令是沒可能用宏做到的. x0dx0a無條件轉移指令: x0dx0aH80;格式:G65 H80 P10 ;直接跳到第10程序段 x0dx0a有條件轉移指令: x0dx0aH81 H82 H83 H84 H85 H86 ,分別是等於就轉的H81;不等於就轉的H82;小於就轉的H83;大於就轉的H84;小於等於就轉的H85;大於等於就轉的H86; x0dx0a格式:G65 H8x P10 Q#101 R#102;將#101內的數值和#102內的數值相比較,按上面的H8x的碼帶入H8x中去,如果條件符合就跳到第10程序段,如果不符合就繼續執行下面的程序段. x0dx0a用 戶 宏 程 序 x0dx0a能完成某一功能的一系列指令像子程序那樣存入存儲器,用一個總指令來它們,使用時只需給出這個總指令就能執行其功能。 x0dx0al 所存入的這一系列指令——用戶宏程序 x0dx0al 調用宏程序的指令————宏指令 x0dx0al 特點:使用變數 x0dx0a一. 變數的表示和使用 x0dx0a(一) 變數表示x0dx0a#I(I=1,2,3,…)或#[<式子>] x0dx0a例:#5,#109,#501,#[#1+#2-12] x0dx0a(二) 變數的使用x0dx0a1. 地址字後面指定變數號或公式 x0dx0a格式:<地址字>#I x0dx0a<地址字>-#I x0dx0a<地址字>[<式子>] x0dx0a例:F#103,設#103=15則為F15 x0dx0aZ-#110,設#110=250則為Z-250 x0dx0aX[#24+#18*COS[#1]] x0dx0a2. 變數號可用變數代替 x0dx0a例:#[#30],設#30=3則為#3 x0dx0a3. 變數不能使用地址O,N,I x0dx0a例:下述方法下允許 x0dx0aO#1; x0dx0aI#26.00×100.0; x0dx0aN#3Z200.0; x0dx0a4. 變數號所對應的變數,對每個地址來說,都有具體數值范圍 x0dx0a例:#30=1100時,則M#30是不允許的 x0dx0a5. #0為空變數,沒有定義變數值的變數也是空變數 x0dx0a6. 變數值定義: x0dx0a程序定義時可省略小數點,例:#123=149 x0dx0aMDI鍵盤輸一. 變數的種類 x0dx0a1. 局部變數#1~#33 x0dx0a一個在宏程序中局部使用的變數 x0dx0a例:A宏程序B宏程序 x0dx0a…… x0dx0a#10=20X#10不表示X20 x0dx0a…… x0dx0a斷電後清空,調用宏程序時代入變數值 x0dx0a2. 公共變數#100~#149,#500~#531 x0dx0a各用戶宏程序內公用的變數 x0dx0a例:上例中#10改用#100時,B宏程序中的 x0dx0aX#100表示X20 x0dx0a#100~#149斷電後清空 x0dx0a#500~#531保持型變數(斷電後不丟失) x0dx0a3. 系統變數 x0dx0a固定用途的變數,其值取決於系統的狀態 x0dx0a例:#2001值為1號刀補X軸補償值 x0dx0a#5221值為X軸G54工件原點偏置值 x0dx0a入時必須輸入小數點,小數點省略時單位為μm x0dx0a一. 運算指令 x0dx0a運算式的右邊可以是常數、變數、函數、式子 x0dx0a式中#j,#k也可為常量 x0dx0a式子右邊為變數號、運算式 x0dx0a1. 定義 x0dx0a#I=#j x0dx0a2. 算術運算 x0dx0a#I=#j+#k x0dx0a#I=#j-#k x0dx0a#I=#j*#k x0dx0a#I=#j/#k x0dx0a3. 邏輯運算 x0dx0a#I=#JOK#k x0dx0a#I=#JXOK#k x0dx0a#I=#JAND#k x0dx0a4. 函數 x0dx0a#I=SIN[#j] 正弦 x0dx0a#I=COS[#j] 餘弦 x0dx0a#I=TAN[#j] 正切 x0dx0a#I=ATAN[#j] 反正切 x0dx0a#I=SQRT[#j]平方根 x0dx0a#I=ABS[#j]絕對值 x0dx0a#I=ROUND[#j]四捨五入化整 x0dx0a#I=FIX[#j]上取整 x0dx0a#I=FUP[#j]下取整 x0dx0a#I=BIN[#j]BCD→BIN(二進制) x0dx0a#I=BCN[#j]BIN→BCD x0dx0a1. 說明 x0dx0a1) 角度單位為度 x0dx0a例:90度30分為90.5度 x0dx0a2) ATAN函數後的兩個邊長要用「1」隔開 x0dx0a例:#1=ATAN[1]/[-1]時,#1為了35.0 x0dx0a3) ROUND用於語句中的地址,按各地址的最小設定單位進行四捨五入 x0dx0a例:設#1=1.2345,#2=2.3456,設定單位1μm x0dx0aG91X-#1;X-1.235 x0dx0aX-#2F300;X-2.346 x0dx0aX[#1+#2];X3.580 x0dx0a未返回原處,應改為 x0dx0aX[ROUND[#1]+ROUND[#2]]; x0dx0a4) 取整後的絕對值比原值大為上取整,反之為下取整 x0dx0a例:設#1=1.2,#2=-1.2時 x0dx0a若#3=FUP[#1]時,則#3=2.0 x0dx0a若#3=FIX[#1]時,則#3=1.0 x0dx0a若#3=FUP[#2]時,則#3=-2.0 x0dx0a若#3=FIX[#2]時,則#3=-1.0 x0dx0a5) 指令函數時,可只寫開頭2個字母 x0dx0a例:ROUND→RO x0dx0aFIX→FI x0dx0a6) 優先順序 x0dx0a函數→乘除(*,1,AND)→加減(+,-,OR,XOR) x0dx0a例:#1=#2+#3*SIN[#4]; x0dx0a7) 括弧為中括弧,最多5重,園括弧用於注釋語句 x0dx0a例:#1=SIN[[[#2+#3]*#4+#5]*#6];(3重) x0dx0a一. 轉移與循環指令 x0dx0a1.無條件的轉移 x0dx0a格式:GOTO1; x0dx0aGOTO#10; x0dx0a2.條件轉移 x0dx0a格式:IF[<條件式>]GOTOn x0dx0a條件式: x0dx0a#jEQ#k 表示= x0dx0a#jNE#k 表示≠ x0dx0a#jGT#k 表示> x0dx0a#jLT#k 表示< x0dx0a#jGE#k 表示≥ x0dx0a#jLE#k 表示≤ x0dx0a例:IF[#1GT10]GOTO100; x0dx0a… x0dx0aN100G00691X10; x0dx0a例:求1到10之和 x0dx0aO9500; x0dx0a#1=0 x0dx0a#2=1 x0dx0aN1IF[#2GT10]GOTO2 x0dx0a#1=#1+#2; x0dx0a#2=#2+1; x0dx0aGOTO1 x0dx0aN2M301.循環 x0dx0a格式:WHILE[<條件式>]DOm;(m=1,2,3) x0dx0a… x0dx0a… x0dx0a… x0dx0aENDm x0dx0a說明:1.條件滿足時,執行DOm到ENDm,則從DOm的程序段 x0dx0a不滿足時,執行DOm到ENDm的程序段 x0dx0a2.省略WHILE語句只有DOm…ENDm,則從DOm到ENDm之間形成死循環 x0dx0a3.嵌套 x0dx0a4.EQNE時,空和「0」不同 x0dx0a其他條件下,空和「0」相同 x0dx0a例:求1到10之和 x0dx0aO0001; x0dx0a#1=0; x0dx0a#2=1; x0dx0aWHILE[#2LE10]DO1; x0dx0a#1=#1+#2; x0dx0a#2=#2+#1; x0dx0aEND1; x0dx0aM30;
D. 宏程序如何使用
宏就是用公式來加工零件的,普通加工程序直接用指定G代碼和移動距離。
指令(EQ為=,NE不等於, GT大於, LT小與, GE大於等於 ,LE小於等於)WH DO END是運算指令也是英文縮寫。
例賦值#2等於5,運算#2=#2+1 運行一次後#2值就是6,運行n次#2值為5+n。
宏程序的作用
數控系統為用戶配備了強有力的類似於高級語言的宏程序功能,用戶可以使用變數進行算術運算、邏輯運算和函數的混合運算,此外宏程序還提供了循環語句、分支語句和子程序調用語句,利於編制各種復雜的零件加工程序,減少乃至免除手工編程時進行繁瑣的數值計算,以及精簡程序量。
以上內容參考:網路-宏程序