0% found this document useful (0 votes)
39 views11 pages

Macro B Reference Guide - MachMotion

Uploaded by

EMERSON
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views11 pages

Macro B Reference Guide - MachMotion

Uploaded by

EMERSON
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Macro B Reference Guide

Macro B programming may not be included on your MachMotion control. If you are not able to use these macros, contact us for an
upgrade option.

1. Calling macros
Call Formats Example Notes License Required

M98 P__ Q__ L__ 1 M98 P0100 Q5 L2 M98 calls the subroutine spe‐ Any
cified by P (must be 4 digits),
and starts at the line number
specified by Q (optional). It
Run subroutine 0100 twice, will repeat it the number of ti‐
starting at line 5 (N5) mes passed to L (default is 1)

G65 P__ L__ A__ B__ …. 1 G65 P0150 L2 A5 B10 M65 calls a non-modal macro Industrial
specified by P and passes A-Z
(whichever are specified) to
the macro. M65 repeats a
Run macro 0150 twice, pas‐ number of times set by L and
sing 5 into #1 (A) and 10 into does not need to be cancel‐
#2 (B) led. Pound variables A-Z are
wiped after the macro
completes.

G66 P__ A__ B__ …. 1 G66 P1001 A12 B6 G66 is a modal macro call. It is Industrial
2 A10 B5 cancelled by G67. Any lines in
3 G67 between will call the same
macro with whichever para‐
meters you pass it.
Run macro 1001 with A = 12
and B = 6, then run it again
with A = 10 and B = 5, then
cancel the modal.

G67 1 G67 Cancels the modal G66 Industrial

M99 1 M99 Specifies end of subroutine or Any


macro

2. Passing Variables
You can pass variables to macros using letters A-Z, which correspond to pound variables. These are not places to store important
information! Once you leave a function it is unknown what will be in that pound variable. The letters G, L, N, O, and P cannot be used as
variables.

Example:

%
G65 P0100 A5 Pass a value of 5 to macro 0100.
M30
O0100 Start of macro.
#500 = #1 The value of A is stored in #1, and we will save it to #500.
M99 Return from the macro.
%

2.1 Variables

A B C D E F H I J K M Q R S T U V W X Y Z

1 2 3 7 8 9 11 4 5 6 13 17 18 19 20 21 22 23 24 25 26

3. In a macro
3.1 Storage Variables

There are two ranges of pound variables for the user to store values in.

1. #100-#199 : Values will be cleared every time Mach starts up


2. #500-#1000 : Values will be saved every time Mach shuts down

3.2 Arithmetic

There are the basic add/subtract/multiply/divide functions available to the user, as well as some named functions for more advanced
math. When performing arithmetic, the control follows the order of [Brackets, Functions, Multiply, Divide, Add, Subtract].

Function Symbol Example Notes

Assignment = #100 = 5 Sets #100 equal to 5

Addition + #100 = 2 + 3 Sets #100 equal to the value of 2+3


(5)

Subtraction - #100 = 2 – 3 Sets #100 equal to the value of 2-3


(-1)

Multiplication * #100 = 2 * 3 Sets #100 equal to the value of 2*3


(6)

Division / #100 = 2 / 3 Sets #100 equal to the value of 2/3


(0.66)

Absolute Value ABS[ ] #100 = ABS[ -3 ] Sets #100 equal to the absolute va‐
lue of -3 (3)

Rounding ROUND[ ] #100 = ROUND[ 3 / 2 ] Sets #100 equal to the rounded va‐
lue of 3/2 (2)

Round Down (floor) FIX[ ] #100 = FIX[ 3 / 2 ] Sets #100 equal to the floor of 3/2
(1)

Round Up (ceiling) FUP[ ] #100 = FUP[ 3 / 2 ] Sets #100 equal to the ceiling of 3/2
(2)

Sine SIN[ ] #100 = SIN[ 45 ] Sets #100 equal to the sine of the
value (0.707). Takes degrees.

Cosine COS[ ] #100 = COS[ 45 ] Sets #100 equal to the cosine of the
value (0.707). Takes degrees.

Arc Cosine ACOS[ ] #100 = ACOS[ 0.707 ] Sets #100 equal to the arc cosine of
the value in degrees (45)

Tangent TAN[ ] #100 = TAN[ 45 ] Sets #100 equal to the tangent of


the value (1). Takes degrees.

Arc Tangent ATAN[ ] #100 = ATAN[ 1 ] Sets #100 equal to the arc tangent
of the value in degrees (45)

Square Root SQRT[ ] #100 = SQRT[ 9 ] Sets #100 equal to the square root
of the value (3)

Natural Logarithm LN[ ] #100 = LN[ 2.3 ] Sets #100 equal to the natural loga‐
rithm of the value (0.83)

Exponent EXP[ ] #100 = EXP[ 3 ] Sets #100 equal to the constant e


raised to the value passed

Decimal Adding ADP[ ] #100 = ADP[ #3 ]

3.3 Logic Statements

Operator GOTO, IF, and WHILE are used for decision making within a macro. Be careful not to create infinite loops.

Operator Example Notes

N N5 Labels the line with a number, which can be referenced on other


lines.

GOTO GOTO 5 Skip to line 5 (line labeled N5). Can be above or below current
line.

IF IF [condition] GOTO 5 If the condition is true, it will execute the statement on that line.
#100 = 1 If it is false, it will skip it. It is combined with GOTO to create true
GOTO 6 and false sections of code.
N5 #100 = 0
N6 #500 = #100

WHILE WHILE [condition] DO 1 While the condition is true, the code will loop through the code
Statements between DO 1 and END 1. The numbers 1 correspond to each
END 1 other. It can be any number as long as it is the same at both the
start and the end.

3.4 Auxiliary Functions

There are additional pound variables which have functionality that may be useful to the user.

Pound Variable Functionality Example

#3001 Millisecond timer. Setting it to 0 will reset (This function waits 1 second)
the timer, and its value at any point can be #3001 = 0
stored in another pound variable. WHILE [#3001 LE 1000] DO 1
END 1

#3002 Hour timer. Setting it to 0 will reset the ti‐ #100 = #3002
mer, and its value at any point can be sto‐ WHILE[condition] DO 1
red in another pound variable. Statements
END 1
#101 = #3002 - #100
(#101 now holds the difference in hours to
run the while loop)

#3000 Generates alarm. Gcode will be stop and the #3000 = 1 (Example Message)
operator must reset to continue.

#3006 Generates an alarm with an associated mes‐ #3006 = 101 (Example Message)
sage. Requires a reset before continuing.

#3007 Reports the state of Mirror Image, cannot #100 = #3007


be set (use G50 or G51 to set)

#3004 Set this variable with a 3-digit number. Digit #3004 = 110
0 will enable/disable feed hold, digit 1 will (disable exact stop, disable feedrate over‐
enable/disable feedrate override, digit 2 will ride, and enable feed holds)
enable/disable exact stop.

#3005 Changes the units of measurement between #3005 = 1 (sets units to metric)
imperial and metric

#3011 Returns the current data in YYYYMMDD #100 = #3011 (get date)
form #100 = FIX[ #100 / 10000]
(#100 now has just the year)

#3012 Returns the current time in HHMMSS form #100 = #3012

#3100 Returns nil #100 = #3100 (clear #100)

#3101 Returns pi #100 = #3101 * [3 * 3]


(area of a circle = pi * r-squared)

#3102 Returns the constant e #100 = #3102

#6000 Set bit b00X00000 to 1 to step into a su‐ For example, use this gcode to step into a
broutine or macro. Set it to 0 step over it. subroutine:
G10 L50
N6000 R00100000
G11

3.5 System Variables

It is not recommended that you change the values of these pound variables, though they are available to the user. Changing values can
result in unexpected machine movement.

When setting modal groups, multiply the desired value by ten. For instance, to set the active motion g-code (#4001) to a feed rate
move (G01), set #4001 = 10.

Modal Groups

Pound Variable Description

#4001 Active motion G-code

#4002 Active motion plane

#4003 Motion mode (incremental or absolute)

#4004 Arc center mode

#4005 G93 (inverse time) or G94 unit/min

#4006 Imperial or metric units

#4007 Current cutter compensation mode

#4008 Tool length offset

#4009 Canned cycles

#4010 Used for canned cycles, old z or r-plane

#4011 Scale mode


#4012 Modal macro

#4013 Spindle mode

#4014 Coordinate systems

#4015 Exact path or cutting mode

#4016 Coordinate system rotation mode

#4017 Polar mode

#4018 Compensation mode

Buffered Values

Pound Variable Description

#4102 Last buffered B code value

#4107 Last buffered D code value

#4108 Last buffered E code value

#4109 Last buffered F code value

#4111 Last buffered H code value

#4113 Last buffered M code value

#4114 Last buffered N code value

#4115 Last buffered O code value

#4119 Last buffered S code value

#4120 Last buffered T code value

Original Offsets

Pound Variable Description

#4140 Original X Offset

#4141 Original Y Offset

#4142 Original Z Offset

#4143 Original A Offset

#4144 Original B Offset

#4145 Original C Offset

Last Outputs

Pound Variable Description

#5001 Last X Output

#5002 Last Y Output

#5003 Last Z Output

#5004 Last A Output

#5005 Last B Output

#5006 Last C Output


Machine Positions

Pound Variable Description

#5021 Current Mach X Position

#5022 Current Mach Y Position

#5023 Current Mach Z Position

#5024 Current Mach A Position

#5025 Current Mach B Position

#5026 Current Mach C Position

Fixture Offsets

Pound Variable Description

#5030 Fixture X Offset

#5031 Fixture Y Offset

#5032 Fixture Z Offset

#5033 Fixture A Offset

#5034 Fixture B Offset

#5035 Fixture C Offset

Part Positions

Pound Variable Description

#5041 Current X Part Position

#5042 Current Y Part Position

#5043 Current Z Part Position

#5044 Current A Part Position

#5045 Current B Part Position

#5046 Current C Part Position

G92 Offsets

Pound Variable Description

#5050 G92 X Offset

#5051 G92 Y Offset

#5052 G92 Z Offset

#5053 G92 A Offset

#5054 G92 B Offset

#5055 G92 C Offset

G31 Positions
Pound Variable Description

#5061 Probe Part X Coordinate

#5062 Probe Part Y Coordinate

#5063 Probe Part Z Coordinate

#5064 Probe Part A Coordinate

#5065 Probe Part B Coordinate

#5066 Probe Part C Coordinate

#5071 Probe Machine X Coordinate

#5072 Probe Machine Y Coordinate

#5073 Probe Machine Z Coordinate

#5074 Probe Machine A Coordinate

#5075 Probe Machine B Coordinate

#5076 Probe Machine C Coordinate

Head Shift Offsets

Pound Variable Description

#5081 X Position Head Shift

#5082 Y Position Head Shift

#5083 Z Position Head Shift

#5084 A Position Head Shift

#5085 B Position Head Shift

#5086 C Position Head Shift

G76 Values (Lathe


Only)

Pound Variable Description

#5140 Minimum pass depth

#5141 Finish pass depth

#5142 Number of finish passes

#5143 Thread angle

#5144 Chamfer amount

#5145 Cutting method

Cutter
Compensation

Pound Variable Description

#5157 Cutter compensation X value

#5158 Cutter compensation Y value

#5159 Cutter compensation Z value


G30 Coordinates

Pound Variable Description

#5181 Active G30 X Coordinate

#5182 Active G30 Y Coordinate

#5183 Active G30 Z Coordinate

#5184 Active G30 A Coordinate

#5185 Active G30 B Coordinate

#5186 Active G30 C Coordinate

G30 P2
Coordinates

Pound Variable Description

#5351 G30 P2 X Coordinate

#5352 G30 P2 Y Coordinate

#5353 G30 P2 Z Coordinate

#5354 G30 P2 A Coordinate

#5355 G30 P2 B Coordinate

#5356 G30 P2 C Coordinate

G30 P3
Coordinates

Pound Variable Description

#5361 G30 P3 X Coordinate

#5362 G30 P3 Y Coordinate

#5363 G30 P3 Z Coordinate

#5364 G30 P3 A Coordinate

#5365 G30 P3 B Coordinate

#5366 G30 P3 C Coordinate

G30 P4
Coordinates

Pound Variable Description

#5371 G30 P4 X Coordinate

#5372 G30 P4 Y Coordinate

#5373 G30 P4 Z Coordinate

#5374 G30 P4 A Coordinate

#5375 G30 P4 B Coordinate

#5376 G30 P4 C Coordinate


Work Shift
Offsets

Pound Variable Description

#5201 X Work Shift

#5202 Y Work Shift

#5203 Z Work Shift

#5204 A Work Shift

#5205 B Work Shift

#5206 C Work Shift

G60 Approach
Distances

Pound Variable Description

#5440 G60 X Distance

#5441 G60 Y Distance

#5442 G60 Z Distance

#5443 G60 A Distance

#5444 G60 B Distance

#5445 G60 C Distance

G54 Fixture
Offsets

Pound Variable Description

#5221 X Offset

#5222 Y Offset

#5223 Z Offset

#5224 A Offset

#5225 B Offset

#5226 C Offset

G55 Fixture
Offsets

Pound Variable Description

#5241 X Offset

#5242 Y Offset

#5243 Z Offset

#5244 A Offset

#5245 B Offset
#5246 C Offset

G56 Fixture
Offsets

Pound Variable Description

#5261 X Offset

#5262 Y Offset

#5263 Z Offset

#5264 A Offset

#5265 B Offset

#5266 C Offset

G57 Fixture
Offsets

Pound Variable Description

#5281 X Offset

#5282 Y Offset

#5283 Z Offset

#5284 A Offset

#5285 B Offset

#5286 C Offset

G58 Fixture
Offsets

Pound Variable Description

#5301 X Offset

#5302 Y Offset

#5303 Z Offset

#5304 A Offset

#5305 B Offset

#5306 C Offset

G59 Fixture
Offsets

Pound Variable Description

#5321 X Offset

#5322 Y Offset

#5323 Z Offset

#5324 A Offset

#5325 B Offset
#5326 C Offset

G54.1 P1

Pound Variable Description

#7001 X Offset

#7002 Y Offset

#7003 Z Offset

#7004 A Offset

#7005 B Offset

#7006 C Offset

G54.1 P2

Pound Variable Description

#7021 X Offset

#7022 Y Offset

#7023 Z Offset

#7024 A Offset

#7025 B Offset

#7026 C Offset

For more information about Macro B please see the Macro B Quick Reference Guide.

Keywords: Advanced M code MCode M-Code G code GCode G-Code Macro B MacroB macros # pound variables

You might also like