Macro Development Tool User Guide V9.0

Download as pdf or txt
Download as pdf or txt
You are on page 1of 40

SYNTEC

Marco Development Tool User Guide

By: SYNTEC Date: 2010/7/15 Version: 9.0

Abstract
The develop environment is designed for the programmer to design and test the Macro program. By executing his program offline, the programmer can test it and know where the logical error is by graphic interface.

Edition check in ID 01 Record 1.new Date Author Edition V9.0 2006/07/20 James_lin

Contents
1 OpenCNC Developer Tool Introduction ............................................................. 1 1.1 System require.................................................................................... 1 1.2 Install ................................................................................................. 1 1.3 Using opencnc .................................................................................... 2 Macro Structure Motion language ...................................................................... 4 2.1 Block Format ..................................................................................... 4 2.2 2.3 File format ......................................................................................... 5 Expressions ........................................................................................ 6 2.3.1 Operators .................................................................................... 6 2.4 Statements .......................................................................................... 7 2.4.1 Assignment ................................................................................. 7 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 GOTO ........................................................................................ 7 EXIT .......................................................................................... 7 CASE ......................................................................................... 8 REPEAT .................................................................................... 9 WHILE ......................................................................................10

2.4.7 FOR............................................................................................ 1 2.4.8 IF................................................................................................ 1 2.5 Functions Listing ................................................................................ 2 2.6 Variables ............................................................................................ 8 2.6.1 Global variable table ................................................................... 8 2.6.2 R Resource table ..................................................................... 8 2.6.3 Comment .................................................................................... 8 2.7 Macro Program .................................................................................. 9 2.7.1 Call Methods: ............................................................................. 9 2.7.2 Return Methods: ........................................................................10 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.7.10 2.7.11 2.7.12 Argument specification ..............................................................10 System Variables .......................................................................11 Modal information .....................................................................11 Single Block Control Word(#1502) ...........................................13 Feed Control Word(#1504) ........................................................13 Current position .........................................................................14 Runtime state variable ...............................................................14 Modal variables .........................................................................15 Custom parameter ......................................................................15 Interface signals .........................................................................15

2.7.13 2.7.14 2.7.15

Mode Group Variables...............................................................15 Tool compensation variable(R/W) .............................................15 Workpiece coordinate system compensation values (workpiece

zero point offset values) ............................................................................16 2.7.16 Reference point position ............................................................16 2.8 Hinting of write extension G code .................................................17 2.9 I.Extended Interpolation G Code ...................................................17 2.10 MACRO example ..........................................................................18 3 Appendix ..........................................................................................................21 3.1 Basic G Code Table ...........................................................................21

1. OpenCNC Developer Tool Introduction

OpenCNC Developer Tool Introduction


Processor80486 or above OSWindows2000 Xp HDabout 1MB free space

1.1 System require

1.2 Install
1. 2. Close other program first And run setup.exe file Wait a moment and then follow screen will appear

3.

Click Next

4. 5.

Choice Browse to change program install folder and click NEXT to continue Wait a moment to install done

-1-

1. OpenCNC Developer Tool Introduction

1.3 Using opencnc


Operation guidance 1. Click [start]->[Program]->[opencnc]->[macro dev] to enter themain program screen Feed Hold Reset Cycle start Graph setting

Edit program Load file

Output region Program

override

Hint or alarm region

2. 3.

write a macro and load itthen click Cyclestart the output will simulation on the screen function

-2-

1. OpenCNC Developer Tool Introduction

4. 5. 6.

Single Stepstep and step to run the program,and click cycle start again between every step Mill or Lathe select set the space

Z X
7. 8.

Z X Y

X Z

Draw Machine or Clear Machine Simulationdirect draw the resoult on the output Graph region

-3-

2. Macro Structure Motion language

2
/ / N G X Y Z A B C I J K F S T D M N

Macro Structure Motion language


The format for a Motion Control block( single line of code ) is describe below. G X Y Z A B C I J K F S T D M

2.1 Block Format

Block Delete function validated at he option of operator. If you use a sequence number, it must be the first in the block. The preparatory function(s) G must follow N. The linear dimension words follow G. Specify the X axis first. The linear dimension words follow G. Specify the Y axis second. The linear dimension words follow G. Specify the Z axis third. The rotary dimension words follow G. Specify the X axis first. The rotary dimension words follow G. Specify the Y axis second. The rotary dimension words follow G. Specify the Z axis third. The interpolation words follow the dimension words. Specify the X axis first. The interpolation words follow the dimension words. Specify the Y axis second. The interpolation words follow the dimension words. Specify the Z axis third. must follow the last dimension( and interpolation ) to which it applies. Spindle Speed Function shall follow immediately the Feed Function or Dimension word. The tool function selection follow S. The selection of tool compensation must follow K. Any miscellaneous function(s) that you specify must last in the block, just ahead of the end of block character.

-4-

2. Macro Structure Motion language

2.2 File format


% is head charthe line is also called head line When head line have keyword @MACROall statement at this file will process with this MACRO guidebookIf head line without keyword @MACROstatement at this file will process with standart ISO filethat means that will cant use MACRO Syntax@MACRO keyword are all capitals char Example 1: MACRO file formate % @MACRO IF @1 = 1 THEN G00 X100.; ELSE G00 Y100.; END_IF; M99; Example 2ISO file formate % //head line G00 X100.; G00 Y100.; G00 X0; G00 Y0; M99;

-5-

2. Macro Structure Motion language

2.3 Expressions
2.3.1 Operators
Operator Parenthesis Function Evaluation Negative Complement Multiply Divide Modulus Add Subtract Comparison Equality Inequality Boolean/Bitwise AND Boolean/Bitwise Exclusive OR Boolean/Bitwise OR Symbol ()[] Identifier( argument list ) NOT * / MOD + <,>,<=,>= = <> &,AND XOR OR Precedence 1 2 3 3 4 4 4 5 5 6 7 8 9 10 11

-6-

2. Macro Structure Motion language

2.4 Statements
2.4.1 Assignment
Syntax<Variable>: = <expression>; DescriptionAssign a value to variable. Example @1 := 123; #1 := #3;

2.4.2 GOTO
SyntaxGOTO n; DescriptionJump to line numbers N Example 1 GOTO #3; Example % @MACRO // Start MACRO language IF( #1 = 2 ) THEN GOTO 100; G01 X10. Y10.; N100 G01 X30. Y30.; M02;

2.4.3 EXIT
SyntaxEXIT; DescriptionBreak loop or exit jump control Example Refer to WHILE example

-7-

2. Macro Structure Motion language

2.4.4 CASE
Syntax CASE <INT expression> OF <INT>: <Statement list> <INT>,<INT>,<INT>: <Statement list> <INT>,<INT>: <Statement list> ELSE <Statement list> END_CASE; DescriptionConditional execution by cases. According to the result of INT expression in the CASE, controller executes corresponding program block. Example % @MACRO // Start MACRO language #1 := 8; G01 G91 G92 X20. Y15. F200000; CASE #1 OF 1: X(1.0*1); Y(1.0*1); 2: X(1.0*2); Y(1.0*2); 3,4,5: X(1.0*#1); Y(1.0*#1); ELSE X(1.0*6); Y(1.0*6); END_CASE; X(1.0) Y(1.0); M30;

-8-

2. Macro Structure Motion language

2.4.5 REPEAT
Syntax REPET <Statement list> UNTIL <Condition> END_REPEAT; DescriptionREPEAT loop control Example % @MACRO // Start MACRO language #10 := 30.; #11 := 22.5.; #12 := #10/2; #13 := #11/2; #14 := 2.0; #15 := 1.5; G01 G92 X#12 Y#13 F200.0; REPEAT G00 X(#12+#14) Y(#13+#15); G01 X(#12+#14) Y(#13-#15); X(#12-#14) Y(#13-#15); X(#12-#14) Y(#13+#15); X(#12+#14) Y(#13+#15); #14 := #14 + 2.0; #15 := #15 + 1.5; UNTIL (#14 > #12) OR (#15 > #13) END_REPEAT; X(1.0) Y(1.0); M30;

-9-

2. Macro Structure Motion language

2.4.6 WHILE
Syntax WHILE <Condition> DO <Statement list> END_WHILE; DescriptionWHILE loop control Example % @MACRO // Start MACRO language #10 := 20.; #11 := 15.; #12 := #10/2; #13 := #11/2; #14 := 2.0; #15 := 1.5; G01 G92 X#12 Y#13 F200.0; WHILE (#14 <= #12) AND (#15 <= #13) DO G00 X(#12+#14) Y(#13+#15); G01 X(#12+#14) Y(#13-#15); X(#12-#14) Y(#13-#15); IF #14 > 6.0 THEN EXIT; END_IF; X(#12-#14) Y(#13+#15); X(#12+#14) Y(#13+#15); #14 := #14 + 2.0; #15 := #15 + 1.5; END_WHILE; X(-5.0) Y(5.0); M02;

-10-

2. Macro Structure Motion language

2.4.7 FOR
Syntax FOR <INT variable1> := <expression1> TO <expression2> [ BY <expression3>] DO <Statement list> END_FOR; DescriptionFOR loop control variable1 : loop control variable expression1 : loop start numberlong or double expression2 : loop end numberlong or double expression3 : loop increasedecreasenumberlong or double statement list :execute statement Examples % @MACRO // Start MACRO language #1 := 2.0; (*INITIAL RADIUS*) #2 := 8.0; (*FINIAL RADIUS*) #3 := 9; (* SIDES*) #4 := 360.0 / #3; (*THETA*) #5 := (180.0 + #4)/2; (*START ANGLE*) G91 G92 X0. Y0. F300000; G01 X(#1); FOR #6:=#1 TO #2 BY 2.0 DO #7 := 2.0 * #6 * COS(180.0-#5); #8 := (#7/2.0) / COS(180.0/6); #9 := #5; G01 X(1.0); FOR #10:= 1 TO #3 DO G03 X(#7*COS(#9)) Y(#7*SIN(#9)) I(#8*COS(#9-180.0/6)) J(#8*SIN(#9-180.0/6)); #9 := #9 + #4; END_FOR; END_FOR;

-1-

2. Macro Structure Motion language

2.4.8 IF
Syntax IF <Condition> THEN <Statement list> ELSEIF <Condition> THEN <Statement list> ELSE <Statement list> END_IF; Descriptionconditional execution Examples % @MACRO // Start MACRO language #1 := 3.0; G01 G91 G92 X20. Y15. F200000; IF #1 = 1 THEN X(1.0*1); Y(1.0*1); ELSEIF #1 = 2 THEN X(1.0*2); Y(1.0*2); ELSEIF #1 = 3 THEN X(1.0*3); Y(1.0*3); ELSE X(1.0*4); Y(1.0*4); END_IF; X(1.0) Y(1.0); M30;

-1-

2. Macro Structure Motion language

2.5 Functions Listing


Function ABS Description Calculates the absolute value of a number Ex: #1 := ABS(-2.3); // #1 will be 2.3 Calculates the arc cosine of a number Ex: #1 := ACOS(#10); Calculates the arc sine of a number Ex: #1 := ASIN(#10); Calculates the arc tangent of a number Ex: #1 := ATAN(#10); Calculates the cosine of a number Ex: #1 := COS(#10); Determines the maximum of two inputs Ex1: #1 := MAX(10,20); // #1 will be 20 Ex2: #1 := MAX(#2,#3); Determines the minimum of two inputs Ex1: #1 := MIN(10.0,20.0); // #1 will be 10.0 Ex2: #1 := MIN(#10,#11); Calculate the sine of a number. Ex: #1 := SIN(#10); Calculates the square root of a number. Ex1: #2 := SQRT(3); // #2 will be 1.732.. Ex2: #2 := SQRT(#10); Calculates the tangent of a number. Ex: #1 := TAN(#10); Return sign of a number, 1 for negative number, 1 for positive number, 0 for zero number. Ex: IF( SIGN(#10) > 0 ) THEN . END_IF; Return the smallest integer that is greater than or equal to a number. Ex1: #2 := CEIL(2.3); // #2 will be 3 Ex2: -2-

ACOS

ASIN

ATAN

COS

MAX

MIN

SIN

SQRT

TAN

SIGN

CEIL

2. Macro Structure Motion language Function FLOOR Description #2 := CEIL(#10); Return the largest integer that is less than or equal to a number Ex1: #2 := FLOOR(2.3); // #2 will be 2 Ex2: #2 := FLOOR(#10); Return the value of the argument rounded to the nearest long value Ex1: #2 := ROUND(2.3); // #2 will be 2 Ex2: #2 := ROUND(#10); Standardize arguments, read a number, in argument one, by least increment method, in argument two, when necessary for decimal point programming Ex: #9 := STD(#9,#1600); // normalize by distance axis Push value into Macro stack. Ex: PUSH(#1); // push #1 variable into stack PUSH(#3); // push #3 variable into stack Pop value from Macro stack. Ex: #1 := POP(); // popup a value to #1 Peek the stack value by index form top one. Ex: STKTOP(0) the most top element value STKTOP(1) the element value below top one STKTOP(2) the element value below top two etc Issue Macro alarm Ex: ALARM(300); // issue macro alarm id 300 ALARM(#1); // #1 must be integer Temporarily give up this cycle execution Ex: SLEEP(); Wait until all previous motion/logic commands are finished. Ex: WAIT(); Generates a pseudorandom number. Ex: #1 := RANDOM(); Lookup axis identifier, the axis identifier is the machine axis number. When the specified axiss name not exist,

ROUND

STD

PUSH

POP

STKTOP

ALARM

SLEEP

WAIT

RANDOM

AXID

-3-

2. Macro Structure Motion language Function Description then return value will be vacant. Ex: Assume 6th axiss name is Y2, 2nd axiss name is Y, then AXID(Y) will return 2 AXID(Y2) will return 6 Standardize arguments, read a number, in argument one, by least increment method, in argument two is axis address Ex: #24 := STDAX(#24,X); // normalize by X dimension #3 := STDAX(#3,A); // normalize by A dimension Open file, if success then return 1, otherwise return 0 PRINT() function will work after this function execute If file name is COMsystem will open RS232 portand parameter 3905..etc will need to set Example OPEN(PROBE.NC); //open PROBE.NC file for output data Example OPEN(COM); //open serial port PRINT("\p"); //output % char FOR #1 = 1 TO 5000 DO #30 = #1 * 10.; PRINT( "G01 X#30" ); //output G01 X10.000 END_FOR; PRINT(\p); //outpur %char CLOSE(); //close serial port Close the file which open with OPEN functionWhen program end then all open file will close automatic Avoid PRINT function after close file example CLOSE(); // close file This function is for output string to file usethe variable that inside the string will change to its valueif this function run success then it will return 1, otherwise will return 0 example @53 = 20; #3 = 23.1; PRINT(G01 X#3 Y@53 Z20.0); Output result G01 X23.100 Y20 Z20.0; Char \ is skip charspecial char define as follow \\ outpur \ char \@ outpur @ char \# outpur # char \p outpur % char Example for output: -4-

STDAX

OPEN(file name)

CLOSE()

PRINT(this is output string)

2. Macro Structure Motion language Function Description G01 X(@20/@30) Y#20/2.0; The Syntax format is: PRINT(G01 X(\@20/\@30) Y\#20/2.0); GETARG(address) Read caller argument in subroutine example O0001 main program G101 X30. Y40. Z1=40. Z2=50.; . G0101 extension G code macro #1 = GETARG(X); // the value of X argument will store in #1 #2 = GETARG(Z1); // the value of Z1 argument will put in #2 #3 = GETARG(W); // without W argument, #3 will be VACANT GETTRAPARG(address) For G66/G66.1 modal macro call handler to get trap blocks information example O0001 main program G66 P100 X100. Y100. G01 X20. . O0100 subroutine #1 = GETARG(X); // Get X argument 100. to #1 #2 = GETTRAPARG(X); // Get trap block X argument 20. to #2 DBOPEN(filename) Load specify XML database example DBOPEN(FLAT\\TAB01); // load FLAT\\TAB01 database example #1 = 51; DBOPEN(FLAT\\AB#1[3]ZZ ); //load FLAT\\AB051ZZ database[3] mean 3 available value DBLOAD( CycleNo ) Load data from current XML data base example // load FLAT\\TAB01 database DBOPEN(FLAT\\TAB01); // load first data DBLOAD( 0 ); // load second data DBLOAD( 1 ); COMMENT(comment This function can output comment stringthe variable that string) inside the string will change to its valueif this function

-5-

2. Macro Structure Motion language Function Description run success then it will return 1, otherwise will return 0 example @53 = 20; #3 = 23.1; COMMENT(// G01 X#3 Y@53 Z20.0); Resoult: // G01 X23.100 Y20 Z20.0; Char \ is skip charspecial char define as follow \\ define \ char \@ define @ char \# define # char \p define % char If the output is: // THIS IS TURNING CYCLE Then Syntax format is COMMENT(// THIS IS TURNING CYCLE); DRAWHOLE() Draw a hole using current tool radius, line color, fill color at current position. This function only take effect under graphics simulation DRAWMARK(shape,siz Draw a mark with specified shape, size, color at current e,color) position. The marker will fix in size not regards to zoom scaling. Size: In Pixel Shape:0:Circle,1:Square;2:Diamond. This function only take effect under graphics simulation SETDRAW(LineColor) To assign draw style or LineColor: use for draw contouring line SETDRAW(LineColor,Fi ToolRadius: use for draw hole radius size llColor,ToolRadius) FillColor: use for fill hole interior. This function only take effect under graphics simulation PARAM( no ) To read specified system parameter number #1 = PARAM(3204) // to access PLC scan time interval SYSVAR( AxisGroupI To read system variable of specified coordinate system. D, No ) AxisGroupID axis group identifier, 1 for first axis group, 2 for 2nd axis group, etc No The system variable number. e.g. #1 = SYSVAR( 1, 1000 ); // to read interpolation mode of first axis group. SCANTEXT( No ) To scan text string from global variable. Notes: Because string is local, so only can stores in local variable, and can not save to global variable. That is, following will get wrong result. e.g. // scan string text from @300 #1 = SCANTEXT(300);

-6-

2. Macro Structure Motion language Function Description // following will get wrong result @100 = #1; // @100 will loss string information DBOPEN(ABC_@100); // this will got wrong result // following will get correct result #100 = #1; // #100 contain valid string from @300~ DBOPEN(ABC_#300); // correct result

-7-

2. Macro Structure Motion language

2.6 Variables
Vacant Local System Global #0@0 is always VACANT #1 ~ #50 #1000 ~ @1~

2.6.1 Global variable table


Variables @1~@400 @401~@449, @481~@500 @450~@480 @10000~ @14095 Usage Macro Internal variables CNC PLC Interface Macro R/W R PLC N/A MMI R R

Macro PLC Interface R/W Corresponding to PLC register R0~R4095

R/W

2.6.2 R Resource table


Variables Example R/W rule Macro or MMI R R/W R R/W R/W R R/W PLC Refer to PLC guide book R/W R R/W R/W Refer to PLC guide book R/W Bit Access Yes Yes Yes Yes Yes Yes No No Perma nent No No No Yes Yes No No No

R0~R39 R40~R49 R50~R80 R81~R100

R101~R102 R103~R255 R256~R511 R512~R639 CNC system interface R640~R1023 R1023~R4095 User define

CNC system interface PLC Alarm area User define area Corresponding to system parameter 3401~3420 Tool state User define

2.6.3

Comment
(* This is comment *) // This is comment

-8-

2. Macro Structure Motion language

2.7 Macro Program


2.7.1 Call Methods:
Syntax M98 P_ H_ L_ Description Subprogram call, P_ subroutine name H_ start N number L_ repeat times Macro call P_ subroutine name L_ repeat times Modal macro callfor every move block P_ subroutine name L_ repeat times Examples M98 P10 L2;

G65 P_ L_ addresses

G65 P10 X10.0 Y10.0;

G66 P_ L_ addresses

G66.1 P_ L_ addresses Modal macro callfor every block P_ subroutine name L_ repeat times

G_ L_ addresses T_

M_ addresses

External G call L_ repeat times Tool selection by subprogram, any T code inside T-subprogram will be treat as ordinary T call. M Code Macro Call M13 A_ B_ C_; Call M0013 Macro M13 must register in parameter No.3601~

Example G66 P10 X10.0 Y10.0; X20. Y20. Description X20 and Y20. move command block will call O0010 Example G66.1 P10 X10.0 X20. G04 X2.; M31; Description X20G04 X2 and M31.every block will call O0010 G128 L3 X1.0;(will call G0128 three times) T3;(will call T0000)

-9-

2. Macro Structure Motion language

2.7.2 Return Methods:


Syntax M99 M99 P_ Description Return Return and go to specified label P_ sequence number Return and go to specified line number Q_ line number Modal macro call cancel Examples M99; M99 P100; Return to main program N100 M99 Q100; Return to main program line100 G67;

M99 Q_

G67

2.7.3 Argument specification


Address A B C D E F H I Variable Number Address Variable Number Address Variable Number #1 J #5 U #21 #2 K #6 V #22 #3 M #13 W #23 #7 P #16 X #24 #8 Q #17 Y #25 #9 R #18 Z #26 #11 S #19 #4 T #20 About extension address X1=Please use Macro function GETARG(address) to get value

-10-

2. Macro Structure Motion language

2.7.4 System Variables


No. #0 #1~#50 Account VACANT Local variable for macro program R/W R/W R/W

2.7.5 Modal information


#1000 #1002 #1004 #1006 #1008 #1010 #1012 #1014 #1016 #1018 #1020 #1022 #1024 #1026 #1028 #1030 #1032 #1034 #1036 #1038 #1040 #1042 #1044 #1046 #1048 #1050 #1052 #1054 #1056 #1058 Interpolation mode, 00/01/02/03/33/34/35 Contouring plane selection mode, 17/18/19 Absolute/Incremental command mode, 90/91 Stored stroke check mode, 22/23 Cutting feed mode, 94/95 Inch/Metric mode, 20/21 Cutter compensation mode, 40/41/42 Tool length compensation mode, 43/44/49 Scaling mode, 50/51 Spindle speed mode, 96/97 Cutting feedrate control mode, 61/62/63/64 Rotation mode, 68/69 Spindle speed fluctuation detection mode, 25/26 Polar coordinate interpolation mode, 12/13 Polar coordinate command mode, 15/16 Cutter radius offset selection number, D Code Tool length offset selection number, H Code Cutting condition selection number, S Code Tool selection number, T Code Miscellaneous function number, M Code Current workpiece coordinate number Program sequence number, N Code Last block interpolation mode, could be 4(dwell) or vacant(M_ S_ T_ F_) for G66.1 modal macro call Feedrate command, F Code Callers current line number Program start sequence number Program start line number Spindle operation state(M03/M04/M05) Program sequence number after corner processing, N Code The spindle number before restart R/W R R R R R R R R R R R R R R R R R R R R R R R R R R R R R

-11-

2. Macro Structure Motion language

Operation control/status
#1500 #1502 #1504 #1506 #1508 #1510 Quiet mode, 1(Quiet mode), 0(Normal mode) Single block control word Feed control word Simulation mode, 1(in simulation mode),0(in normal mode) my session ID inside mode group The current active session of multi-session program in CNC main system. 0 for execute the multi-session program simultaneously; 1 to execute $1 program only; 2 to execute $2 program only. Distance least input increment Time/Rotation angle least input increment Use U/V/W addresses as X/Y/Z axis incremental command mode, 1(Use as X/Y/Z incremental command), 0(As normal axis command) The count of element in macro stack. Flag for skip function position latched, 1 for latched, 0 for not latched. Spindle orientation stop angle Default workpiece number Default spindle speed Break point sequence number Break point line number Current sequence number Current point line number Current active spindle ID R/W R/W R/W R R R

#1600 #1602 #1604

R R R

#1606 #1608 #1610 #1612 #1614 #1616 #1618 #1620 #1622 #1624

R R R/W R/W R/W R R R R R

-12-

2. Macro Structure Motion language

2.7.6 Single Block Control Word(#1502)


Description Bit 0 Single block inhibit. 0(default): single block enabled, 1: single block disabled. When single block stop is disabled, single block stop operation is not performed even if the single block switch(by MLC C bit) is set to ON. Bit 1 (not yet implement) Completion of an auxiliary function. 0(default): to be awaited, 1: not to be wait. When a wait for the completion of auxiliary functions (M, S, and T functions) is not to be waited, program execution proceeds to the next block before completion of auxiliary functions. Also, distribution completion signal DEN is not output. When the power is turned on, the value of this variable is 0. When single block stop is disabled, single block stop operation is not performed even if the single block switch(by MLC C bit) is set to ON.

2.7.7 Feed Control Word(#1504)


Bit 0 Description Feedhold Inhibit. 0(default): feedhold enabled, 1: feedhold disabled. When feed hold is disabled: When the feed hold button is held down, the machine stops in the single block stop mode. However, single block stop operation is not performed when the single block mode is disabled with variable #1502. When the feed hold botton is pressed then released, the feed hold lamp(by MLC S bit) come on, but the machine does not stop; program execution continues and the machine stops at the first block where feed hold is enabled. Override Inhibit. 0(default): override enabled, 1: override disabled. When ederate override is disabled, an override of 100% is always applied regardless of the setting of the ederate override switch(by MLC Register) on the machine operators panel (not yet implement) Exact stop inhibit. 0(default): exact stop enabled, 1: exact stop disabled. When exact stop check is disabled, no exact stop check(position check) is made even in blocks including those which do not perform cutting When the power is turned on, the value of this variable is 0. When feed hold is disabled: 1. When the feed hold button is held down, the machine stops in the single block stop mode. However, single block stop operation is not performed when the single block mode is disabled with variable #1502. 2. When the feed hold botton is pressed then released, the feed hold lamp(by MLC S bit) come on, but the machine does not stop; program execution continues and the machine stops at the first block where feed hold is enabled. When feedrate override is disabled, an override of 100% is always applied regardless of the setting of the feedrate override switch(by MLC Register) on the machine operators panel. When exact stop check is disabled, no exact stop check(position check) is made even in blocks including those which do not perform cutting. -13-

Bit 1

Bit2

2. Macro Structure Motion language

2.7.8 Current position


#1301~#1316 #1321~#1336 #1341~#1356 #1361~#1376 Block end position in workpiece position Current position in machine coordinate, this value cant be read during movement. current position in workpiece coordinate Skip signal position in workpiece coordinate, the tool position where the skip signal is turned on in a G31 ( skip function ) block is held in these variables, Tool length compensation vector Last arc block center vector,(I,J,K) Block end position in workpiece position, index by 1441(X);1442(Y);1443(Z) Current encoder position of in workpiece coordinate machine R R R R

#1381~#1396 #1401~#1403 #1411~#1413 #1421~#1436

R R R R

2.7.9 Runtime state variable


#1800 #1801 #1802 #1810 #1811 #1812 #1815 #1816 #1820 Rigid tapping tracking error in revolution Rigid tapping z-direction tracking error in BLU Rigid tapping tracking error, maximum magnitude Guidance remain distance, in LIU Guidance x-direction remain distance, in LIU Guidance y-direction remain distance, in LIU Indicator for is in guidance function, 0: No; 1: Yes Guidance ederate, in IU/min Mute state, discard all command during mute state ON. 0: OFF, 1: ON, this state variable also available from G10 L1100 command Accumulated cutting length, in IU Cutting Feedrate Command, in mm/min Spindle Speed Command, in RPM Active Feed Control Mode, G61/G62/G63/G64 Active interpolation G code mode Active workpiece coordinate number Active number of high precision high speed parameter Workpiece coordinate system shifting amount. R R R R R R R R/W R/W

#1821 #1822 #1823 #1824 #1825 #1827 #1829 #1901~1916

R/W R/W R/W R R R R R/W

-14-

2. Macro Structure Motion language

2.7.10 Modal variables


Modal variables will automatically be clear to vacant when system been reset #2001~#2100 Modal variable for internal use R/W #3001~#3100 Modal variable for manufacturer R/W

2.7.11 Custom parameter


#4001~#4100 #5001~#5100 Custom parameter for internal use Custom parameter for manufacturer R R

2.7.12 Interface signals


#6001~#6032 Bit value interface of MLC (Corresponding to C101~C132/ S101~S132 ) ,example: @1 := #6001; // assign C101 value into @1 #6001 := @2; // assign @2 value into S101 R/W

2.7.13 Mode Group Variables


Mode group variables will automatically be clear to vacant when specified mode group be reset #7001~#7050 Modal variable for internal use R/W #7101 The number of axis group in mode group R

2.7.14 Tool compensation variable(R/W)


The compensation number 0 all have zero value There are only 400 compensation value in this version Compensation Tool length compensation(H) Cutter compensation(D) Number Geometric Wear Geometric Wear compensation compensation compensation compensation 0 #11000 #10000 #13000 #12000 1 #11001 #10001 #13001 #12001 . . . . . . . . . . 200 #11200 #10200 #13200 #12200 . . . . . . . . . . 400 #11400 #10400 #13400 #12400 . . . . . . . . . . 999 #11999 #10999 #13999 #12999

-15-

2. Macro Structure Motion language

2.7.15 Workpiece coordinate system compensation values (workpiece zero point offset values)
#20001~#20006 #20021~#20026 #20041~#20046 #25981~#25986 There are only 16 workpiece coordinate system in this version External workpiece zero point offset value R/W Workpiece 1 zero point offset value,G54 R/W Workpiece 2 zero point offset value,G55 R/W R/W Workpiece 299 zero point offset value R/W

2.7.16 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 #26021~#26026 Reference point 2 position #26041~#26046 Reference point 3 position #31981~31986 Reference point 300 position R/W R/W R/W R/W R/W

-16-

2. Macro Structure Motion language

2.8 Hinting of write extension G code


Use locol variable #1~#50 for program variable usually Modal Variables(#4001~#4100#5001~#5100) is the resource for extended G-code. For saving the use of this resource, please use it when share data between G-code. Please use the argument to call the extended G-code. Please use the default value in the extension G-code by Custom Parameter ( #4001~#4100, #5001~ #5100 ) Dont change the status of Modal G-code(G91/G90,G40/G41/G42,,etc). If needs, please recover it when you exit. Please use the function named STD() when you using the argument of length and angle. The Simulation function is invalid when you setting the coordinator by G-code like G92, G54 and G52.

2.9 I.Extended Interpolation G Code


The variable #1000 record the interpolation mode so when exit macro and you want to keep this macro for interpolation modeyou only need to set #1000 as G code number Then every axis move statement after this macro will call this macro When read G00/G01/G02/G03/G31/G33system will stop extended G code interpolation Example Developer a macro with cycle mode G21and following are program Syntax . . G21 X_ Z_ R_; // G21 mode X_; // G21 mode X_; // G21 mode X_; // G21 mode G00 Z_; // G00 mode . . Macro architectonic % @MACRO . // Macro main program . . #1000 := 21; // Set G21 as current interpolation mode M99;

-17-

2. Macro Structure Motion language

2.10 MACRO example


This sample show the lathe G21 macro please refer Lathe Programming Manual for other G code specification % @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;

-18-

2. Macro Structure Motion language 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

-19-

2. Macro Structure Motion language // 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;

-20-

3. Appendix

3
Code G00 G01 G02 G03 G04 G10 G15 G16 G17 G18 G19 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

Appendix
Function POSITIONING LINEAR INTERPOLATION CIRCULAR INTERPOLATION (Clockwise) CIRCULAR INTERPOLATION (CounterClockwise) Dwell PROGRAMMABLE DATA INPUT CANCEL POLAR COORDICATES COMMAND MODE POLAR COORDICATES COMMAND MODE XY PLANE SELECTION ZX PLANE SELECTION YZ PLANE SELECTION RETURE TO REFERENCE POSITION RETURE FROM REFERENCE POSTION 2nd,3rd and 4th REFERENCE PPOSTION RETURE SKIP FUNCTION THREAD INTERPOLATION CANCEL CUTTER COMPENSTAION LEFT CUTTER COMPENSTAION RIGHT CUTTER COMPENSTAION POSTIVE TOOL LENGTH COMPENSATION NEGATIVE TOOL LENGTH COMPENSATION CANCEL TOOL LENGTH COMPENSATION SCALING PROGRAMMABLE MIRROR IMAGE LOCAL COORDINATE SYSTEM MECHINE COORDICATE SYSTEM SELECTION WORKPIECE COORDICATE SELECTION SECOND WORKPIECE COORDICATE SELECTION THIRD WORKPIECE COORDICATE SELECTION FOURTH WORKPIECE COORDICATE SELECTION FIVETH WORKPIECE COORDICATE SELECTION SIXTH WORKPIECE COORDICATE SELECTION SIMPLE CALL MACRO CALL CANCEL MACRO CALL CANCEL COORDINATE ROTATION COORDINATE ROTATION INPUT IN INCH INPUT IN MM ABSOLUTE COMMEND INCREMENT COMMEND

3.1 Basic G Code Table

-21-

3. Appendix Code G92 G94 G95 G96 G97 Function SETTING OF WORK COORDICATE SYSTEM FEED UNIT SETTING (mm/min.) FEED UNIT SETTING (mm/rev.) CONSTANT LINEAR VELOCITY CONTROL ON SURFACE CANCEL CONSTANT LINEAR VELOCITY CONTROL ON SURFACE

-22-

You might also like