Professional Documents
Culture Documents
OpenCNC MACRO
By: SYNTEC
Date: 2015/05/28
Version: 9.40
CF 2015/06/22
:
http://confluence.syntecclub.com.tw/pages/viewpage.action?pageId
=19793903
01 2004/12/07 V9.0
02 #1010 2006/01/25 V9.1
03 #1504 2006/03/28 V9.2
04 2010/07/10 Syntec V9.3
05 #1461~1476 2010/9/27 V9.4
1. MACRO /
05 2010/09/29 V9.5
2.
1. MACRO XML
06 2011/07/10 V9.6
2.
07 #1881~#1896 2011/08/10 V9.7
08 MSG 2011/12/1 V9.8
09 Macro 2011/12/27 V9.9
10 #20001~#26001 2012/01/05 V9.10
1. #1834~#1847
11 2012/02/29 V9.11
2. #1821#1829#1831
12 2012/03/22 V9.12
13 / 2012/04/02 V9.13
1.
14 2. 2012/06/14 V9.14
3.
1. MSTG
15 2012/09/03 V9.15
2. G
16 1. #1504 2012/11/21 V9.16
17 SETDRAW 2012/12/13 V9.17
18 SETDRAW 2013/01/23 V9.18
19 2013/05/03 V9.19
20 1. 2013/06/04 V9.20
21 #1941~1976 2013/06/28 V9.21
1. #1504/#1512/#7001~
22 2013/07/07 V9.22
2.
23 #1826 2013/10/29 V9.23
24 1. #1803~#1807 2013/11/25 V9.24
25 1. 2013/12/20 V9.25
26 PARAM "" 2013/12/23 V9.26
27 #1881 2013/12/26 V9.27
28 MACRO GETARG 2014/02/11 V9.28
Macro
29 2014/02/14 V9.29
(L, #12)
30 #1~#26 2014/03/11 V9.30
31 2014/06/26 V9.31
32 COS #1 = -1 2014/07/09 V9.32
33 Macro 2014/07/10 V9.33
34 G 2014/08/18 V9.34
35 #1517 2014/08/29 V9.35
36 #1510 2015/3/23 V9.36
37 9.3 G 2015/4/14 V9.37
READDIREADDO SETDO
38 2015/4/20 V9.38
39 #1822 2015/04/30 V9.39
40 STD 2015/05/28 V9.40
Contents
1 ....................................................................................................................... 1
2 ............................................................................................................... 1
3 (Block Format) ...................................................................................... 2
4 (Operator) .................................................................................................. 4
5 ............................................................................................................... 5
5.1 ................................................................................................ 5
5.2 GOTO .................................................................................................... 6
5.3 CASE ..................................................................................................... 7
5.4 IF ............................................................................................................ 8
5.5 REPEAT ................................................................................................ 9
5.6 WHILE ................................................................................................. 10
5.7 FOR ...................................................................................................... 11
5.8 EXIT .................................................................................................... 12
5.9 (Comment) ........................................................................... 13
6 (Functions Listing) .................................................................................. 14
7 ......................................................................................................... 23
7.1 (Call Method) ....................................................................... 23
7.2 (Return Methods) ................................................................. 24
8 ............................................................................................................. 25
8.1 (Global variable) .................................................................. 25
8.2 (Local variables) .................................................................. 25
8.3 (System variables) ................................................................ 26
8.3.1 (Modal information, #1000~#1056) .................................... 26
8.3.2 /(Operation control/status, #1500~#1624) ........... 27
8.3.3 (Current position, #1301~#1476) ......................................... 28
8.3.4 (Runtime state, #1800~#1976)............................................. 29
8.3.5 (Modal variables, #1080~#3100) ......................................... 30
8.3.6 (Customer param., #4001~#5500) ....................................... 31
8.3.7 (Interface signals, #6001~#6032) ........................................ 31
8.3.8 (Tool compensation, #10000~#15288) ................................ 31
8.3.9 (Workpiece coordinate system offset value,
#20001~#20656) .................................................................................................. 32
8.3.10 (Reference point position, #26001~#26076) ................... 33
9 G ............................................................................................ 34
9.1 MACRO ...................................................................... 34
9.2 MACRO ...................................................................... 35
9.3 G ................................................. 36
9.4 G ................................................................. 36
10 MACRO ..................................................................................... 38
10.1 MACRO ...................................................................... 38
10.2 DOS ............................................................. 38
10.3 WinCE ......................................................... 38
11 MACRO ..................................................................................... 39
11.1 .............................................................................................. 39
11.2 MSG .................................................................... 39
12 ..................................................................................................................... 41
12.1 Registry ........................................................................... 41
12.2 G ......................................................................... 42
12.3 MACRO ...................................................................................... 44
12.4 MACRO XML .................................................................... 47
1.
MACRO
MACRO
-1-
2.
%
@MACRO ISO
MACRO
% @MACRO
IF @1 = 1 THEN
G00 X100.;
ELSE
G00 Y100.;
END_IF;
M30;
ISO
%
G00 X100.;
G00 Y100.;
G00 X0;
G00 Y0;
M30;
-1-
3. (Block Format)
3 (Block Format)
/ N G X Y Z A B C I J K F S T D M
/ PLC C41
N
G N
X X G G
Y Y G G
Z Z G G
A A G G
B B G G
C C G G
I X G G
J Y G G
K Z G G
F G
S G
T G
D G
M G
(1.10.)
1. G (G15G17G70 ) G (G73G84 )
2. M T
3. S
4. F
5. H
6. D
7. T
8. M
9. B
10. G (G0G1 ) G (G4G51G68 )
1. G
2. GETARG
(1) DEHIJKLMPQRT
-2-
3. (Block Format)
-3-
4. (Operator)
4 (Operator)
()[] 1
Identifier () 2
- 3
NOT 3
* 4
/ 4
MOD 4
+ 5
- 5
<,>,<=,>= 6
= 7
<> 8
&,AND 9
XOR 10
OR 11
2. / 2 = 0.5
1/ 2.0 = 0.5
1/2 = 0
(1/2)*1.0 = 0
-4-
5.
5.1
<> := <>;
@1 := 123;
#1 := 456;
#10 := 12; // #10 12
@10 := 12; // @10 12849
PS ASCII
SCANTEXT
#1:= 123;
@[#1] := 567; // @123=567
@[#1+7]:=890; // @130=890
-5-
5.
5.2 GOTO
GOTO n;
N N
N
% @MACRO
#1 := 1;
#2 := 10;
G01 G90 X0. Y0. F1000;
IF( #1 = 1 ) THEN
GOTO #2;
END_IF;
IF( #1 = 2 ) THEN
GOTO 100;
END_IF;
N10
G01 G90 X50. Y0. F1000;
M30;
N100
G01 G90 X0. Y50. F1000;
M30;
-6-
5.
5.3 CASE
CASE <> OF
<>:
<>
<>, <>:
<>
<>, <>,>:
<>
ELSE
<>
END_CASE;
CASE
% @MACRO
#1 := 1;
G01 G90 X0. Y0. F1000;
CASE #1 OF
1:
X(1.0*#1) Y(1.0*#1);
2:
X(2.0*#1) Y(2.0*#1);
3, 4, 5:
X(3.0*#1) Y(3.0*#1);
ELSE
X(4.0*#1) Y(4.0*#1);
END_CASE;
M30;
-7-
5.
5.4 IF
IF <> THEN
<>
ELSEIF <> THEN
<>
ELSE
<>
END_IF;
IF
% @MACRO
#1 := 3.0;
G01 G90 X0. Y0. F1000;
IF #1 = 1 THEN
X(1.0*#1) Y(1.0*#1);
ELSEIF #1 = 2 THEN
X(2.0*#1) Y(2.0*#1);
ELSEIF #1 = 3 THEN
X(3.0*#1) Y(3.0*#1);
ELSE
X(4.0*#1) Y(4.0*#1);
END_IF;
M30;
-8-
5.
5.5 REPEAT
REPEAT
<>
UNTIL <>
END_REPEAT;
REPEAT
% @MACRO
#10 := 30.;
#11 := 22.5.;
#12 := #10/2;
#13 := #11/2;
#14 := 2.0;
#15 := 1.5;
G01 G90 X#12 Y#13 F1000;
REPEAT
G00 X(#12+#14) Y(#13+#15);
G01 X(#12+#14) Y(#13-#15);
G01 X(#12-#14) Y(#13-#15);
G01 X(#12-#14) Y(#13+#15);
G01 X(#12+#14) Y(#13+#15);
#14 := #14 + 2.0;
#15 := #15 + 1.5;
UNTIL (#14 > #12) OR (#15 > #13) END_REPEAT;
M30;
REPEAT/WHILE/FOR
SLPPE()
-9-
5.
5.6 WHILE
WHILE <> DO
<>
END_WHILE;
WHILE
% @MACRO
#10 := 30.;
#11 := 22.5.;
#12 := #10/2;
#13 := #11/2;
#14 := 2.0;
#15 := 1.5;
G01 G90 X#12 Y#13 F1000;
WHILE (#14 <= #12) AND (#15 <= #13) DO
G00 X(#12+#14) Y(#13+#15);
G01 X(#12+#14) Y(#13-#15);
G01 X(#12-#14) Y(#13-#15);
G01 X(#12-#14) Y(#13+#15);
G01 X(#12+#14) Y(#13+#15);
#14 := #14 + 2.0;
#15 := #15 + 1.5;
END_WHILE;
M30;
REPEAT/WHILE/FOR
SLPPE()
-10-
5.
5.7 FOR
FOR < 1> := 1> TO < 2> BY < 3> DO
<>
END_FOR;
FOR
1
1
2
3
% @MACRO
#10 := 30.;
#11 := 22.5.;
#12 := #10/2;
#13 := #11/2;
#14 := 2.0;
#15 := 1.5;
G01 G90 X#12 Y#13 F1000;
FOR #6 := 0 TO 3 BY 1.0 DO
G00 X(#12+#14) Y(#13+#15);
G01 X(#12+#14) Y(#13-#15);
G01 X(#12-#14) Y(#13-#15);
G01 X(#12-#14) Y(#13+#15);
G01 X(#12+#14) Y(#13+#15);
#14 := #14 + 2.0;
#15 := #15 + 1.5;
END_FOR;
M30;
REPEAT/WHILE/FOR
SLPPE()
-11-
5.
5.8 EXIT
EXIT;
% @MACRO
#10 := 30.;
#11 := 22.5.;
#12 := #10/2;
#13 := #11/2;
#14 := 2.0;
#15 := 1.5;
#16 := 1.0;
G01 G90 X#12 Y#13 F1000;
FOR #6 := 0 TO 3 BY 1.0 DO
IF((#14 = 4) & (#16 = 1)) THEN
EXIT;
END_IF;
G00 X(#12+#14) Y(#13+#15);
G01 X(#12+#14) Y(#13-#15);
G01 X(#12-#14) Y(#13-#15);
G01 X(#12-#14) Y(#13+#15);
G01 X(#12+#14) Y(#13+#15);
#14 := #14 + 2.0;
#15 := #15 + 1.5;
END_FOR;
M30;
-12-
5.
5.9 (Comment)
(* <> *)
// <>
% @MACRO
G00 G90 X0. Y0.; //
M30;
% @MACRO
(*
*)
G00 G90 X0. Y0.;
G00 G90 X10. Y0.;
G00 G90 X10. Y10.;
G00 G90 X0. Y10.;
G00 G90 X0. Y0.;
M30;
-13-
6. (Functions Listing)
6 (Functions Listing)
ABS
Ex:
#10 := -1.1;
#1 := ABS(#10); // #1 = 1.1
#2 := ABS(-1.2); // #2 = 1.2
ACOS
Ex:
#10 := 1;
#1 := ACOS(#10); // #1 = 0
#2 := ACOS(-1); // #2 = 180
ALARM
Ex:
ALARM(300); // 300
ALARM(301, ALARM 301 Content);
: 19
: 39
ASIN
Ex:
#10 := 1;
#1 := ASIN(#10); // #1 = 90
#2 := ASIN(-1); // #2 = -90
ATAN
Ex:
#10 := 1;
#1 := ATAN(#10); // #1 = 45
#2 := ATAN(-1); // #2 = -45
AXID
(VACANT, #0)
Ex:
Y2(Pr326=202) Y
(Pr322=200)
#1 := AXID(Y); // #1 = 2
#2 := AXID(Y2); // #2 = 6
CEIL
Ex:
#10 := 1.4;
#1 := CEIL(#10); // #1 = 2
#2 := CEIL(1.5); // #2 = 2
CLOSE OPEN
-14-
6. (Functions Listing)
PRINT
CLOSE(); //
COS
Ex:
#10 := 180;
#1 := COS(#10); // #1 = -1
#2 := COS(-180); // #2 = -1
DBLOAD XML
DBOPEN(FLAT\\TAB01);
// FLAT\TAB01
DBLOAD( 0 );
// 0
DBLOAD( 1 );
// 1
DBOPEN XML XML
GNCFILES
DBOPEN(Test);
// GNCFILES\Test
#1 = 51;
DBOPEN(FLAT\\AB#1[3]ZZ );
// FLAT\\AB051ZZ [3]
DRAWHOLE SETDRAW
(
)
DRAWMARK(,
,) (
)
0-1-2-
FLOOR
Ex:
#10 := 1.4;
#1 := FLOOR(#10); // #1 = 1
#2 := FLOOR(1.5); // #2 = 1
GETARG
O0001
-15-
6. (Functions Listing)
G101 X30. Y40. Z1=40. Z2=50.;
G0101 GETARG
#1 := GETARG(X); // X 30.#1
#2 := GETARG(Z1); // Z1 40.#2
#3 := GETARG(W);
// W #3 (VACANT, #0)
1. DEHIJKLMPQRT
G101 X30. Y40. Z1=40. D50.;
// D 50.
G101 X30. Y40. Z1=40. D1=50.;
//
2. ABCFSUVWXYZ
G101 X30. Y40. Z50.; // Z 50.
G101 X30. Y40. Z1=50.; // Z1 50.
GETTRAPARG G66/G66.1 Trap
O0001
G66 P100 X100. Y100.
G01 X20.
O0100 GETTRAPARG
#1 := GETARG(X);
// X 100.#1
#2 := GETTRAPARG(X);
// Trap X 20.#2
MAX
Ex:
#10 := 1.2;
#20 := 4.5;
#1 := MAX(#10, #20); // #1 = 4.5
#2 := MAX(-1.2, -4.5); // #2 = -1.2
MIN
Ex:
#10 := 1.2;
#20 := 4.5;
#1 := MIN(#10, #20); // #1 = 1.2
#2 := MIN(-1.2, -4.5); // #2 = -4.5
MSG MACRO
-16-
6. (Functions Listing)
Ex:
MSG(100); // ID
MSG(); //
MSG(100, ); // ID +
: 19
: 39
OPEN
PRINT
COM RS232
Pr3905
OPEN(PROBE.NC);
// PROBE.NC
OPEN(COM); //
PRINT(\p); // %
FOR #1 = 1 TO 5000 DO
#30 := #1 * 10.;
PRINT(G01 X#30); // G01 X10.0
END_FOR;
PRINT(\p); // %
CLOSE(); //
PARAM
Ex:
#1 := PARAM(3204);
// Pr3204(PLC )
POP (STACK)
5
5 POP
Ex:
PUSH(5); // 5
#1 := POP(); // (#1 = 5)
PRINT
\,
\\ \
\@ @
\# #
\p %
@53 = 20 ;
#3 = 23.1 ;
PRINT( G01 X#3 Y@53 Z20.0 ) ;
-17-
6. (Functions Listing)
G01 X23.100 Y20 Z20.0 ;
PRINT(G01 X(\@20/\@30) Y\#20/2.0) ;
G01 X(@20/@30) Y#20/2.0 ;
PUSH (STACK) PUSH
Ex:
PUSH(#1); // #1
PUSH(#3); // #3
RANDOM
Ex:
#1 := RANDOM();
READDI (I ) READDIREADDO
I/O
READDO(O )
@52 := READDI(31); // I31 @52
#88 := READDO(11); // O11 #88
G90 G10 L1000 P4000 R READDI(15); // I15
R4000
1. 10.116.23
2. I/O
READDIREADDO
3. I/O 0~511
COR-138 I/O
ROUND
Ex:
#10 := 1.4;
#1 := ROUND(#10); // #1 = 1
#2 := ROUND(1.5); // #2 = 2
SCANTEXT
ASCII
% @MACRO
@1:=12;
#1:=SCANTEXT(1);
OPEN(NC);
PRINT(@1);
PRINT(#1);
CLOSE();
M30;
-18-
6. (Functions Listing)
@1 = 12849
#1 = 12
SETDO(O , O SETDO
) O O (12)
SETDO(3, 1); // O3 on
SETDO(8, 0); // O8 off
1. 10.116.23
2. PLC SETDO MACRO
SETDO O1 on PLC O1 off
PLC SETDO
3. O 0~511
COR-138 I/O
SETDRAW()
or 1. RGB
SETDRAW(,
,) 2. DRAWHOLE
RGB
3. DRAWHOLE
* G G01
RGB
0: 0 1: 8388608
2: 32768 3: 8421376
4: 128 5: 8388736
6: 32896 7: 12632256
8: 8421504 9: 16711680
10: 65280 11: 16776960
12: 255 13: 16711935
14: 65535 15: 16777215
SETDRAW
DRAWHOLE SETDRAW
-19-
6. (Functions Listing)
Ex
%@MACRO
#3:=SETDRAW(#1,#2,#18);
// #3 #2 #18
DRAWHOLE();
SETDRAW(#3); //
M99;
SIGN -1 10 0
Ex:
#10 := 4;
#1 := SIGN(#10); // #1 = 1
#2 := SIGN(-4); // #2 = -1
#3 := SIGN(0); // #3 = 0
SIN
Ex:
#10 := 90;
#1 := SIN(#10); // #1 = 1
#2 := SIN(-90); // #2 = -1
SLEEP
(FOR, WHILE)
Ex:
SLEEP();
SQRT
Ex:
#10 := 4;
#1 := SQRT(#10); // #1 = 2
#2 := SQRT(9); // #2 = 3
STD( 1, 2) 17 (BLU) IU
1. 1
2. 2 #1600#1600
17
Ex:
// Pr17=2, BLU = 0.001mm
#9 := 100;
#10 :=STD(#9,#1600);
// #9 100.000#10 0.1mm
STDAX( 1, 2)
1
2
Ex:
#24 := STDAX(#24,X);
-20-
6. (Functions Listing)
#3 := STDAX(#3,A);
STKTOP (STACK)
Ex:
PUSH(5); // 5
PUSH(6); // 6
PUSH(7); // 7
#1 := STKTOP[0]; // #1 = 7
#2 := STKTOP[1]; // #2 = 6
#3 := STKTOP[2]; // #3 = 5
SYSVAR(,
) 1 2
Ex:
#1 := SYSVAR(1, 1000);
// #1000()
TAN
Ex:
#10 := 45;
#1 := TAN(#10); // #1 = 1
#2 := TAN(-45); // #2 = -1
WAIT WAIT
% @MACRO
N1 G10 L1000 P50 R1; // R50 1
N2 G94 G01 X100. F1; // Reset
N3 WAIT();
N4 G10 L1000 P50 R0; // R50 0
N5 M30;
N2 N3
WAIT N3
R50 1
CHKMN( TRUE FALSE
) :
%@MACRO
#51 := CHKMN(5566); //#51
IF #51=0 THEN //
ALARM(501, The manufacturer code is invalid.);
END_IF
(:10.116.6A)
CHKSN() TRUE FALSE
:
%@MACRO
#52 := CHKSN(M9A0001); //#52
-21-
6. (Functions Listing)
IF #52=0 THEN //
ALARM(502, The serial number is invalid.);
END_IF
(:10.116.6A)
CHKMT() TRUE FALSE
:
%@MACRO
#53 := CHKMT(MILL); //#53
IF #53=0 THEN //
ALARM(503, The machine type is invalid.);
END_IF
(:10.116.6A)
CHKMI() TRUE FALSE
SUPER s
10B 10B11A 11A
:
%@MACRO
#54 := CHKMI(s); //#54
IF #54=0 THEN //
ALARM(504, The hardware type is invalid.);
END_IF
(:10.116.6A)
STR2INT( )
1:
%@MACRO
@1:=5555;
#1:= SCANTEXT(1); // #1 = 5555
#2:= STR2INT(#1); // #2 = 5555
2:
%@MACRO
#1:=STR2INT(100); // #1 = 100
3:
%@MACRO
#1:=STR2INT(123.456); // #1 = 123
:
-22-
7.
L 1
-23-
7.
-24-
8.
MACRO
-25-
8.
-26-
8.
-27-
8.
10.116
G33
R/
#1514 012 Long
W
R/
#1517 Long
W
#1600 (//) Pr17(, BLU) R Long
(10 /1 /0.1 ) Pr17(
#1602 R Long
, BLU)
U/V/W X/Y/Z
#1604 0 U/V/W R Long
1 X/Y/Z
#1606 R Long
G31 C Bit
#1608 R Long
01
R/
#1610 Long
W
, G54: #1040=1; G55: #1040=2; G56: #1040=3 R/
#1612 Long
W
Pr1871~P1876 R/
#1614 Long
W
#1616 R Long
#1618 R Long
#1620 R Long
#1622 R Long
#1624 R Long
-28-
8.
1417(U); 1418(V); 1419(W)
#1421~
Current encoder position of in workpiece coordinate machine R Double
#1436
#1441~
G31 C Bit R Double
#1456
#1461~
(Pr3852) R Double
#1476
-29-
8.
R/
#1829 Double
W
#1831 , G51.2 / G113 / G114.1 / G114.3 R Double
#1832 /, 90/91 R Double
#1833 , 00/01/02/03/33/34/35 R Double
#1834 , 17/18/19 R Double
#1835 /, 90/91 R Double
#1836 , 22/23 R Double
#1837 , 94/95 R Double
#1838 /, 70/71 R Double
#1839 , 40/41/42 R Double
#1840 , 43/44/49 R Double
#1841 , 50/51 R Double
#1842 , 96/97 R Double
#1843 , 61/62/63/64 R Double
#1844 , 68/69 R Double
#1845 , 25/26 R Double
#1846 , 12.1/13.1 R Double
#1847 , 15/16 R Double
#1851 - -
#1881
R/
~ Double
W
#1896
#1901
R/
~ G92 Double
W
#1916
R/
#1930 G92 Double
W
#1931
R/
~ G92 Double
W
#1933
#1941
R/
~ (IU) Double
W
#1956
#1961
R/
~ (IU) Double
W
#1976
-30-
8.
#3100
MACRO MACRO
(H) (D)
#11001(1 ) #10001(1st)
st
1 #13003 #12003 #14003 #15003
#11002(2nd) #10002(2nd)
-31-
8.
#11003(3rd) #10003(3rd)
#11401(4th) #10401(4th)
#11402(5th) #10402(5th)
#11403(6th) #10403(6th)
#11004(1st) #10004(1st)
#11005(2nd) #10005(2nd)
#11006(3rd) #10006(3rd)
2 #13006 #12006 #14006 #15006
#11404(4th) #10404(4th)
#11405(5th) #10405(5th)
#11406(6th) #10406(6th)
st st
#11286(1 ) #10286(1 )
#11287(2nd) #10287(2nd)
#11288(3rd) #10288(3rd)
96 #13288 #12288 #14288 #15288
#11686(4th) #10686(4th)
#11687(5th) #10687(5th)
#11688(6th) #10688(6th)
0 0
Double
-32-
8.
-33-
9. G
9 G
G
MACRO G
MACRO
9.1 MACRO
N1 G54 G90
N2 G0201 GETARG X1
G0201 X1 #1
#10 G90/G91
Y G00 10mm
G90/G91
N3 G0201 G00(#1000=0)
X G00 -20mm
N4 G0202 #24 X
G0202 X #1
#10 G90/G91
Y G00 -10mm
G90/G91
N5 G0202 202
G0202
N6
% @MACRO // G0201
#1 := GETARG(X1); // X110.
#1 := STD(#1, #1600);
#10 := #1004; // G90/G91
G91 G00 Y#1; // Y10.
G#10; // G90/G91
M99; //
% % @MACRO // G0202
N1 G54 G90 #1 := STD(#24, #1600); // X-10.
N2 G201 X1=10. // G0201 #10 := #1004; // G90/G91
N3 X-20. // G0 G91 G00 Y#1; // Y-10.
N4 G202 X-10. // G0202 G#10; // G90/G91
N5 X-20. // G0202 #1000 := 202; //
N6 M30 M99; //
% @MACRO // G0202
#1 := STD(#24, #1600); // X-20.
#10 := #1004; // G90/G91
G91 G00 Y#1; // Y-20.
G#10; // G90/G91
#1000 := 202; //
M99; //
-34-
9. G
9.2 MACRO
MACRO (Local Variables, #1 ~ #400)
(Global Variables, @1 ~ @165535) MACRO
(A_, B_, , Z_, X1=_, Y1=_, )
X1
GETARG(address)
Address Variable Number Address Variable Number Address Variable Number
A #1 J #5 T #20
B #2 K #6 U #21
C #3 L #12 V #22
D #7 M #13 W #23
E #8 P #16 X #24
F #9 Q #17 Y #25
H #11 R #18 Z #26
I #4 S #19 X1 GETARG(X1)
(Modal Variables#2001 ~ #2100; #3001 ~ #3100)
VACANT MACRO
MACRO (Custom Parameter,
#4001 ~ #4100, #5001 ~ #5100)
MACRO G (G91/G90,G40/G41/G42,, etc)
MACRO MACRO
MACRO MACRO (#1000)
MACRO #1000 MACRO
MACRO MACRO
G00/G01 /G02/G03/G31/G33#1000
STD()
G92/G54/G52
MACRO MACRO
G/M G/M
WAIT()
MACRO M99;
-35-
9. G
9.3 G
G
G200~G999 G
G200 MACRO G0200
G200.1 MACRO G200001
G200.10 MACRO G200010
G200.100 MACRO G200100
G
DOS C:\CNC\MACRO
CE DiskC:\OpenCNC\MACRO
9.4 G
G
G00/G01/G02/G03 MACRO
37013710
0 G00/G01/G02/G03 MACRO
-1 G00 MACRO(G0000)
1 G01 MACRO(G0001)
2 G02 MACRO(G0002)
3 G03 MACRO(G0003)
4 G53 MACRO(G0053)
1. G G G
2. G G900000 G00
3. G (G53 )
G00 X100.
Y100.
Y100. G00 Y100.
4. G G
5. G00 G01 G00
G00 G00
G00
6. G7.1G12.1 G72G75
,A,R,C
7. G53
1. 10.114.50 G G
G
-36-
9. G
10.114.49
2. G 900000 (#1000 := 900000)
10.114.50
3. 10.116.16A10.116.17 G53 MACRO(G0053)
-37-
10. MACRO
10 MACRO
10.1 MACRO
%@MACRO
ALARM(xxx); // xxx
M30;
10.2 DOS
C:\CNC\EXE\APPDATA.RES\CNCCHI.STR
C:\CNC\EXE\APPDATA.RES\CNCENG.STR
C:\CNC\EXE\APPDATA.RES\CNCLOC.STR
24xxx="1;MSG=" xxx
24
CNCCHI.STR
24003="1;MSG= 0"
CNCENGSTR
24003="1;MSG= max arc length can not be negative"
10.3 WinCE
DiskC\OCRes\CHT\String\AlarmMacro_CHT.Xml
DiskC\OCRes\Common\String\AlarmMacro_Com.Xml
DiskC\OCRes\L\String\AlarmMacro_L.Xml L
<Message ID="AlarmMsg::Macro::ID=xxx" Content=""
/> xxx
Macro 48 31
CusMacroAlarmMsg_CHT.Xml
<Message ID="AlarmMsg::Macro::ID=3" Content=" 0" />
CusMacroAlarmMsg_Common.Xml
<Message ID="AlarmMsg::Macro::ID=3" Content="max arc length can not be
negative" />
-38-
11. MACRO
11 MACRO
11.1
MACRO
MSG "ESC"
11.2 MSG
MSG(100); // ID
MSG(""); //
-39-
11. MACRO
: 19
: 39
-40-
12
12.1 Registry
(Bit)
R0~R39 CNC
R40~R49 PLC
R50~R80 / /
R81~R100 3401~3420
R101~R102 / /
R103~R255
/ /
R256~R511
R512~R639
CNC
R640~R1023
/
R1024~R1032 / /
R1033~R2049 / /
Pr3810=0 /
R2050~R2090 Pr3810=1 M Code /
R2091~R2099 / /
Pr3228=0
R2100~R3100 / /
Pr3228=1
R3101~R4095 / /
R4096~R5999 CNC
R6000~R7999 (Fram) / /
R8000~R8255 CNC /
R8256~R9999 CNC
R10000~R10999 CNC / /
R11000~R14999 CNC
R15000~R19999 CNC / /
R20000~R65535 /
DOS R0~R7999
12.2 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
12.
G91
G92
G94 (mm/min.)
G95 (mm/rev.)
G96
G97
-43-
12.
12.3 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 TAPER
IF (#1000 <> 21 ) THEN
// WHEN FIRST ENTRY, CLEAR TAPER MODAL STATE
#2070 := 0;
#2071 := 0;
#2072 := #0;
END_IF;
-44-
12.
// 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
// PROCESS X ADDRESS
IF( #24 <> #0 ) THEN
#21 := #24 - #1301;
END_IF;
// PROCESS Z ADDRESS
IF( #26 <> #0 ) THEN
#23 := #26 - #1303;
END_IF;
-45-
12.
END_FOR;
// RETURN
M99;
-46-
12.
xml
xml
xml
xml GNCFILES ( Pr3219
)
<?xml version="1.0" encoding="UTF-16"?>
<CycleFile>
<Cycle Name="Cycle_HerdonProg">
<Field Name="Col_Y" Value="17.63"/>
<Field Name="Col_Z" Value="12.98"/>
<Field Name="Col_X" Value="0.00"/>
<Field Name="Col_A" Value="267.54"/>
</Cycle>
<Cycle Name="Cycle_HerdonProg">
<Field Name="Col_Y" Value="21.34"/>
<Field Name="Col_Z" Value="13.20"/>
<Field Name="Col_X" Value="2.26"/>
<Field Name="Col_A" Value="300.87"/>
</Cycle>
<Cycle Name="Cycle_HerdonProg">
<Field Name="Col_Y" Value="91.19"/>
<Field Name="Col_Z" Value="13.20"/>
<Field Name="Col_X" Value="2.26"/>
<Field Name="Col_A" Value="443.29"/>
</Cycle>
<Cycle Name="Cycle_HerdonProg">
<Field Name="Col_Y" Value="21.55"/>
<Field Name="Col_Z" Value="12.98"/>
<Field Name="Col_X" Value="0.00"/>
<Field Name="Col_A" Value="116.95"/>
-47-
12.
</Cycle>
<Cycle Name="Cycle_HerdonProg">
<Field Name="Col_Y" Value="21.16"/>
<Field Name="Col_Z" Value="12.98"/>
<Field Name="Col_X" Value="-6.05"/>
<Field Name="Col_A" Value="150.00"/>
</Cycle>
</CycleFile>
xml DBLOAD
OCRes\Common\Schema\
<?xml version="1.0" encoding="UTF-16"?>
<Schema>
<Cycle name="Cycle_HerdonProg">
<Field>
<Name>Col_X</Name>
<InputStorage>@1200</InputStorage> Col_X
<InputFormat>Variant</InputFormat>
<DefaultValue></DefaultValue>
</Field>
<Field>
<Name>Col_Y</Name>
<InputStorage>@1201</InputStorage> Col_Y
<InputFormat>Variant</InputFormat>
<DefaultValue></DefaultValue>
</Field>
<Field>
<Name>Col_Z</Name>
<InputStorage>@1202</InputStorage> Col_Z
<InputFormat>Variant</InputFormat>
<DefaultValue></DefaultValue>
</Field>
<Field>
<Name>Col_A</Name>
<InputStorage>@1203</InputStorage> Col_A
<InputFormat>Variant</InputFormat>
<DefaultValue></DefaultValue>
</Field>
<Field>
<Name>Col_B</Name>
<InputStorage>@1204</InputStorage> Col_B
<InputFormat>Variant</InputFormat>
<DefaultValue></DefaultValue>
</Field>
<Field>
<Name>Col_C</Name>
<InputStorage>@1205</InputStorage> Col_C
-48-
12.
<InputFormat>Variant</InputFormat>
<DefaultValue></DefaultValue>
</Field>
</Cycle>
</Schema>
MACRO
// GNCFILES\Test 5 @1:=5;
@1:=DBOPEN(Test);
// 1 DBLOAD 0
// @1200=0.00 @1201=17.63 @1202=12.98 @1203=267.54
DBLOAD( 0 );
// 2 DBLOAD 1
// @1200=2.26 @1201=21.34 @1202=13.20 @1203=300.87
DBLOAD( 1 );
-49-