You are on page 1of 57

SYNTEC

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)

G101 X30. Y40. Z1=40. D50.;


G101 X30. Y40. Z1=40.
D1=50.;
(2) ABCFSUVWXYZ

G101 X30. Y40. Z50.;G101 X30. Y40. Z1=50.;
(3)

-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.

7.1 (Call Method)


Syntax Description Examples
M98 P_ H_ L_
P_ M98 P10 L2;
H_
L_ O0010
G65 P_ L_
P_ G65 P10 X10.0 Y10.0;
L_
O0010
G66 P_ L_
P_ G66 P10 X10.0 Y10.0;
L_ X20.
Y20.

X20. Y20.
O0010
G66.1 P_ L_
P_ G66.1 P10 X10.0
L_ X20.
G04 X2.;
M30;

X20, G04 X2. M30
O0010
G_ L_ G
L_ G128 L3 X1.0;

G0128
T_ T0000
T T3;
T T0000
T0000
M_ M M13 A_ B_ C_;
M M M0013
M Pr3601~

L 1

-23-
7.

7.2 (Return Methods)


Syntax Description Examples
M99 M99;
M99 P_ M99 P100;
P_ N100

M99 Q_ M99 Q100;
Q_ 100

G67 G66 G67;

-24-
8.

MACRO (Local variable,


#1~#400)(System variable, #1000~#31986)
(Global variable, @1~@165535)

8.1 (Global variable)



@0 VACANT R -
@1~@400 R/W Double
@401~@655 Registry R1~R255 R/W Long
@656~@1999 () R/W Double
@10000~@14095 Registry R0~R4095 R/W Long
@60000~@79999 ( No3813 CE ) R/W Double
@100000~@165535 Registry R0~R65535 R/W Long

@1~@400 No3811
DOS R0~R7999

8.2 (Local variables)



#0 VACANT R -
#1~#26 R Double
#27~#400 R/W Double
MACRO MACRO
VACANT


MACRO

-25-
8.

8.3 (System variables)


8.3.1 (Modal information, #1000~#1056)

, 00/01/02/03/33/34/35 R/
#1000 Long
W
#1002 , 17/18/19 R Long
#1004 /, 90/91 R Long
#1006 , 22/23 R Long
#1008 , 94/95 R Long
#1010 /, 70/71 R Long
#1012 , 40/41/42 R Long
#1014 , 43/44/49 R Long
#1016 , 50/51 R Long
#1018 , 96/97 R Long
#1020 , 61/62/63/64 R Long
#1022 , 68/69 R Long
#1024 , 25/26 R Long
#1026 , 12.1/13.1 R Long
#1028 , 15/16 R Long
#1030 , D R Long
#1032 , H R Long
#1034 , S R Long
#1036 , T R Long
#1038 , M R Long
#1040 , G54: #1040=1; G55: #1040=2; G56: #1040=3 R Long
#1042 , N R Long
G66.1 4(00/01/02/03)(M_
#1044 R Long
S_ T_ F_)
#1046 , F R Double
#1048 R Long
#1050 R Long
#1052 R Long
#1054 (M03/M04/M05) R Long
#1056 Program sequence number after corner processing, N Code R Long
#1062 - -

-26-
8.

8.3.2 /(Operation control/status,


#1500~#1624)

(Quiet)
#1500 R/W Long
01
0 PLC C40
0
1
#1502 1 MST R/W Long
()
0
1 PLC S30(DEN)
1(Feedhold)/(Override)

0/[]
1/ 100%
2(Feedhold)
0[]
1
3(Override)
#1504 0[] R/W Long
1 100%
4(Override)
0[]
1 100%
5(Override)
0[]
1 100%
#1504.2~#1504.5 114.51
1
2
3
4
#1505 5(Override) R/W Long
0[]
1
#1505 #1504 #1505
10.114.56E/10.116.0E/10.116.5
NC
#1506 0 R Long
1
()
0/
#1507 W Long
1
(10.116.x )

#1508 R Long
1234
G04.1
#1512 R Long
01

-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

8.3.3 (Current position, #1301~#1476)



#1301~
R Double
#1316
#1321~
R Double
#1336
#1341~
R Double
#1356
#1361~
G31 C Bit R Double
#1376
#1381~
R Double
#1396
#1401~
(I, J, K) R Double
#1403
#1404~
R Double
#1406
XYZABCUVW
#1411~
1411(X); 1412(Y); 1413(Z) R Double
#1419
1414(A); 1415(B); 1416(C)

-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

8.3.4 (Runtime state, #1800~#1976)



#1800 () R Double
#1801 Z () R Double
#1802 Z () R Double
Z ()
#1803 R Double
10.114.16~10.116.5
Z ()
#1804 R Double
10.114.16~10.116.5
Z ()
#1805 R Double
10.114.16~10.116.5
Z ()
#1806 R Double
10.114.16~10.116.5
Z ()
#1807 R Double
10.114.16~10.116.5

#1815 R Double
01
R/
#1816 (IU/min) Double
W
(Mute)
R/
#1820 G10 L1100 Double
W
01
R/
#1821 Double
W
R/
#1822 F(mm/min) Double
W
R/
#1823 (RPM) Double
W
#1824 , G61/G62/G63/G64 R Double
#1825 , 00/01/02/03/04/33/34/35 R Double
HPCC ()
0 0
#1826 R Double
#1826 HPCC
10.116.0I10.116.6B
#1827 , G54: #1040=1; G55: #1040=2; G56: #1040=3 R Double
( BLU Pr3808 =
#1828 R Double
0 )

-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

8.3.5 (Modal variables, #1080~#3100)



#1080~ R/
() Double
#1099 W
#2001~
() R/W Double
#2100
#3001~ () R/W Double

-30-
8.


#3100
MACRO MACRO

8.3.6 (Customer param., #4001~#5500)



#4001~
( 4001~4100) R Double
#4100
#5001~
( 5001~5500) R Double
#5500
EMC6_C005_#5001~

8.3.7 (Interface signals, #6001~#6032)



MLC C101~C132/ S101~S132
Ex:
#6001~ @1 := #6001; // C101 @1 C101 On@1=1
R/W Double
#6032 0
#6001 := @2; // @2 S1012=1 S101 On
S101 Off

8.3.8 (Tool compensation,


#10000~#15288)

(H) (D)


0 #11000 #10000 #13000 #12000
1 #11001 #10001 #13001 #12001

96 #11096 #10096 #13096 #12096

800 #11800 #10800 #13800 #12800
0 0
96
Double


(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

8.3.9 (Workpiece coordinate system


offset value, #20001~#20656)

#20001~
R/W Double
#20016
#20021~
G54(G54P1) R/W Double
#20036
#20041~
G55(G54P2) R/W Double
#20056
R/W Double
#20121~
G59(G54P6) R/W Double
#20136
#20141~
G59.1(G54P7) R/W Double
#20156
R/W Double
#20301~
G59.9(G54P15) R/W Double
#20316
#20321~
G54P16 R/W Double
#20336
R/W Double
#20641
G54P32 R/W Double
~#20656
16

-32-
8.

8.3.10 (Reference point position,


#26001~#26076)

#26001~
1 R/W Double
#26016
#26021~
2 Pr2801~Pr2816 R/W Double
#26036
#26041~
3 Pr2821~Pr2836 R/W Double
#26056
#26061~
4 Pr2841~Pr2856 R/W Double
#26076
16

1

-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(""); //

MSG(100, ""); // ID+

-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 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

-44-
12.

#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

-45-
12.

#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;

-46-
12.

12.4 MACRO XML


MACRO xml DBLOAD DBOPEN
DBOPEN xml DBLOAD

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-

You might also like