
- •第一章OpenCnc发展环境安装及使用说明
- •第二章OpenCnc Structure Motion language 一、Block Format
- •三、Expressions Operators
- •五、Functions Listing
- •六、Variables
- •程序批注 (Comment)
- •七、Macro Program Call Methods:
- •Return Methods:
- •Argument specification
- •System Variables
- •Modal information
- •Operation control/status
- •Single Block Control Word(#1502)
- •Feed Control Word(#1504)
- •Current position
- •Runtime state variable
- •Workpiece coordinate system compensation values (workpiece zero point offset values)
- •Reference point position
- •八、扩充插值G码(Extended Interpolation g Code)宏程序说明:
- •九、macro 撰写需注意事项:
- •十、macro范例:
Workpiece coordinate system compensation values (workpiece zero point offset values)
There are only 16 workpiece coordinate system in this version
#20001~#20006 |
External workpiece zero point offset value |
R/W |
#20021~#20026 |
Workpiece 1 zero point offset value,G54 |
R/W |
#20041~#20046 |
Workpiece 2 zero point offset value,G55 |
R/W |
… |
|
R/W |
#25981~#25986 |
Workpiece 299 zero point offset value |
R/W |
Reference point position
The reference point 1 is always at home position
There are only 4 reference points in this version
#26001~#26006 |
Reference point 1 position |
R/W |
#26021~#26026 |
Reference point 2 position |
R/W |
#26041~#26046 |
Reference point 3 position |
R/W |
… |
|
R/W |
#31981~31986 |
Reference point 300 position |
R/W |
八、扩充插值G码(Extended Interpolation g Code)宏程序说明:
#1000是目前的插值模式,当宏程序希望在离开后保留此宏插值模式,请在宏程序离开前将#1000设为自己宏的号码。
此后只要有轴向位移指令的单节就会自动呼叫此宏程序,其实际行为将由此宏程序定义之。
此宏插值模式在遇到G00/G01 /G02/G03/G31/G33,或其它扩充插值宏等差值指令时自动解除。
例:
开发一个有模式循环的宏指令G21,其主程序语法如下:
.
.
G21 X_ Z_ R_; // G21模式
X_; // G21模式
X_; // G21模式
X_; // G21模式
G00 Z_; // G00模式
.
.
宏程序架构
% @MACRO
. // 宏主程序
.
.
#1000 := 21; // 设定G21为目前的插值模式
M99;
九、macro 撰写需注意事项:
程序内容第一行需为%@MACRO。
每一行结束需加”;”。
程序最后需加”M99;”才能返回到主程序。
指定变量需使用”:=”符号,不可仅用”=”符号。
例如: #30:=100; //将变量#30指定为整数100
档名储存需依照下列原则。
例如: 撰写G100之MACRO,需将该MACRO程序存在C:\CNC\MACRO
目录底下,且文件名需为G0100,不需扩展名。
撰写G100.1之MACRO,需将该MACRO程序存在C:\CNC\MACRO
目录底下,且文件名需为G100001,不需扩展名。
系统在执行加工时对于MACRO程序会事先预解,因此MACRO执行速度会超前G、M code指令,因此变量指定或资料读取须与G、M code指令发出时间排程相同时,请于变量指定或数据读取前加WAIT()指令,否则该变量指定或该笔数据读取将无法与G、M code同步。
请尽量在程序内容中多加入批注,养成良好习惯,增加程序可读性可帮助后续维护及问题排除。
十、macro范例:
取材自车床G21车床车牙模式循环宏,其规格请参考车床程序使用手册
% @MACRO
// WHEN NO X(U) Z(W) ARGUMENTS,THEN LOAD MODAL INFORMATION
// ELSE DO THREAD CUTTING
// #8(E) LEAD COUNT PER INCH
// #18(R) TAPER AMOUNT
// #2070 RECORDED TAPER AMOUNT
// #2071 RECORDED Z AXIS AMOUNT
// PROCESS NO ARGUMENT CASE WHICH MAY CAUSE FROM MODAL RESTORE
IF( #21 = #0 AND #23 = #0 AND #24 = #0 AND #26 = #0 ) THEN
M99;
END_IF;
// PROCESS TAPER
IF (#1000 <> 21 ) THEN
// WHEN FIRST ENTRY, CLEAR TAPER MODAL STATE
#2070 := 0;
#2071 := 0;
#2072 := #0;
END_IF;
IF( #18 <> #0 ) THEN
// THERE ARE TAPER ADDRESS, RECORD IT INTO MODAL VARIABLE
#2070 := #18;
ELSE
// NO TAPER ADDRESS APPEAR, INHERIT MODAL STATE
#18 := #2070;
END_IF;
IF( #9 <> #0 ) THEN
// THERE ARE LEAD ADDRESS, RECORD IT INTO MODAL VARIABLE
#2072 := #9;
ELSE
// NO LEAD ADDRESS APPEAR, INHERIT MODAL STATE
#9 := #2072;
END_IF;
IF( #23 <> #0 OR #26 <> #0 ) THEN
// WHEN THERE ARE W OR Z ADDRESS APPEAR, THEN
// CHECK WHICH KIND OF COMMAND BEEN ADDRESS, AND
// SAVE IT INTO MODAL VARIABLE
IF( #26 <> #0 ) THEN
// Z ADDRESS
#2071 := #26 - #1303;
ELSE
// W ADDRESS
#2071 := #23;
END_IF;
ELSE
// WHEN THERE ARE NO Z/W ADDRESS, THEN INHERIT IT FROM
// MODAL VARIABLE
#26 := #2071 + #1303;
END_IF;
// PROCESS E ADDRESS
IF( #8 <> #0 AND #9 = #0 ) THEN
IF( #1008 = 94 ) THEN
// FEED PER MINUTE, CALCULATE MM/MIN = LEAD * SPINDLE SPEED
#9 := (25.4 * #1034) / #8;
#2072 := #9;
ELSE
// FEED PER REVOLUTION, CALCULATE MM/REV = LEAD
#9 := 25.4 / #8;
#2072 := #9;
END_IF;
END_IF;
// STANDARDIZE ARGUMENT
#9 := STD(#9,#1600);
#21 := STD(#21,#1600);
#23 := STD(#23,#1600);
#24 := STD(#24,#1600);
#26 := STD(#26,#1600);
#18 := STD(#18,#1600);
// working variable
// #31 chamfer start point relative to block end X
// #32 chamfer block X-direction displacement
// #33 chamfer amount
// #36 thread head number iterative count
// #37 thread start angle
// READ CHAMFER AMOUNT
#33 := (#4043 * #9) / 10.0;
// COPY X,Z INFORMATION INTO U,W
// PROCESS X ADDRESS
IF( #24 <> #0 ) THEN
#21 := #24 - #1301;
END_IF;
// PROCESS Z ADDRESS
IF( #26 <> #0 ) THEN
#23 := #26 - #1303;
END_IF;
// process H addesss, the head number
IF( #11 <> #0 ) THEN
#11 := ROUND(#11);
ELSE
// set default head number
#11 := 1;
END_IF;
// CALCULATE CHAMFER START POINT RELATIVE TO BLOCK END POINT IN X
#31 := (SIGN(#23) * #33 * 2 * #18)/#23;
// CALCULATE CHAMFER BLOCK X-DIRECTION DISPLACEMENT
#32 := -SIGN(#21)*#33*2;
FOR #36:=1 TO #11 DO
// calculate thread start angle
#37 := (360.0 / #11) * (#36 - 1);
G00 U( #21 + #18*2 );
G33 U-(#18*2-#31) W(#23-SIGN(#23)*#33) Q#37 F(#9*#11);
G33 U#32 W(SIGN(#23)*#33) Q#37;
G00 U-#21-#32-#31;
G00 W-#23;
END_FOR;
// SET INTERPOLATION MODE TO 21
#1000 := 21;
// RETURN
M99;
第三章 附件
基本G码指令一览表
项 目 |
功 能 名 称 |
G00 |
直线快速定位 |
G01 |
直线补间、切削进给 |
G02 |
圆弧补间(顺时钟) |
G03 |
圆弧补间(逆时钟) |
G04 |
暂停指定时间 |
G10 |
可程序资料输入 |
G15 |
取消极坐标命令 |
G16 |
极坐标命令 |
G17 |
设定XY工作平面 |
G18 |
设定ZX工作平面 |
G19 |
设定YZ工作平面 |
G28 |
原点回归 |
G29 |
从参考点复归 |
G30 |
任意参考点回归 |
G31 |
跳跃功能 |
G33 |
螺牙切削 |
G40 |
刀具半径补偿消除 |
G41 |
刀具半径左补偿 |
G42 |
刀具半径右补偿 |
G43 |
刀具长度正补偿 |
G44 |
刀具长度负补偿 |
G49 |
刀具长度补偿取消 |
G50 |
取消放大缩小 |
G51 |
放大缩小 |
G52 |
设定区域坐标(子工件坐标) |
G53 |
机械坐标定位 |
G54 |
设定工件坐标系统 |
G55 |
设定第二工件坐标系统 |
G56 |
设定第三工件坐标系统 |
G57 |
设定第四工件坐标系统 |
G58 |
设定第五工件坐标系统 |
G59 |
设定第六工件坐标系统 |
G65 |
单一宏程序呼叫 |
G66 |
模式宏程序呼叫 |
G67 |
模式宏程序呼叫取消 |
G67 |
取消坐标旋转 |
G68 |
坐标旋转 |
G70 |
英制单位加工 |
G71 |
公制单位加工 |
G90 |
绝对位置输入方式 |
G91 |
相对位置输入方式 |
G92 |
加工位置坐标系统设定 |
G94 |
每分钟进给量(mm/min.) |
G95 |
每转进给量(mm/rev.) |
G96 |
等表面切削速度 |
G97 |
等表面切削速度取消 |