Many CNC technicians these days don’t understand macro programs. They believe that with automatic programming software, there is no need to learn macro programs. In fact, the function of macro programs is very powerful. For example, when writing some batch and repeat programs, using macro programs only requires changing a few data. There is no need to carry out a large number of repeated programming, which can be greatly simplified. operations and significantly improve work efficiency.
Macro programs can use variables to perform arithmetic operations, logical operations, and mixed function operations, and also provide loop instructions, branch instructions, and subroutine call instructions.
Generally speaking: macro programs are suitable for programming a series of parts with the same graphics but of different sizes; suitable for programming a series of parts with the same process path but different position parameters; suitable for programming curves without interpolation; instructions such as parabolas, ellipses and hyperbolas.
1
Representation and use of variables
1. Variable representation
#I(I=1,2,3,…)or#[<式子>]
Example: #5, #109, #501, #[#1+#2-12]
2. Using variables
1. Specify the variable number or formula after the address word
Format:
The “I” here represents the variable number
Example: F#103, if #103=15, it is F15
Z-#110, assuming #110=250 is Z-250
X[#24+#18*COS[#1]]
2. Variable number can be replaced by a variable
example:#[#30]assuming #30=3, it’s #3
3. Variables cannot use addresses O, N, I
Example: Authorized according to the following method
O#1;
I#2 6.00×100.0;
N#3 Z200.0;
4. The variable corresponding to the variable number has a specific value range for each address.
Example: When #30=1100, M#30 is not allowed
5. #0 is an empty variable. Variables without defined variable values are also empty variables.
6. Definition of the variable value:
The decimal point can be omitted when defining the program, for example: #123=149
2
Variable type
1. Local variables #1~#33
A variable is used locally in a macro program and the results of its operation cannot be used in other programs.
Example: A macro program A macro program B
… …
#10=20 X#10 does not mean X20
… …
Cleared after power off, and the variable value is entered when the macro program is called.
2. Public variables #100~#199, #500~#999
Variables common to each user macro program have the same operation results when called by any program.
Example: When #10 is replaced by #100 in the example above, the
X#100 means X20
#100~#149 Clear after power off
#500~#531 variables retained (not lost after power failure)
3. System variables
Fixed-use variables whose values depend on the state of the system
Example: value #2001 is the compensation value of the X axis of tool #1
The value #5221 is the original offset value of the G54 part on the X axis
A decimal point must be entered when typing. When the decimal point is omitted, the unit is μm.
3
Instructions for use
The right side of an operation expression can be a constant, variable, function, or expression.
In the formula, #j, #k can also be constants
The right side of the formula is the number of variables and the operation formula
1. Definition
#I=#j
2. Arithmetic operations
#I=#j+#k
#I=#j-#k
#I=#j*#k
#I=#j/#k
3. Logical operations
#I=#JOK#k
#I=#JXOK#k
#I=#JAND#k
4. Function

#I=SIN[#j] sinus
#I=COS[#j] cosine
#I=TAN[#j] Tangent
#I=ATAN[#j] arctangent
#I=SQRT[#j]square root
#I=ABS[#j]absolute value
#I=ROUND[#j]Rounded
#I=FIX[#j]Charging Adjustment
#I=FUP[#j]Round down
#I=BIN[#j]BCD → BIN (binary)
#I=BCN[#j]BIN → BCD
1) The unit of angle is degree
Example: 90 degrees 30 divided into 90.5 degrees
2) The two side lengths after the ATAN function must be separated by “/”
Example: #1=ATAN[1]/[-1]time, n°1 for 35.0
3) ROUND is used for addresses in statements and is rounded based on the minimum configuration unit of each address.
Example: Suppose #1=1.2345, #2=2.3456, the setting unit is 1 μm
G91 X-#1;X-1,235
X-#2 F300;X-2.346
X[#1+#2];X3.580
has not returned to its original place, it must be replaced by
X[ROUND[#1]+ROUND[#2]];
4) If the absolute value after rounding is greater than the original value, it is rounded up, otherwise it is rounded down.
Example: Suppose #1=1.2, #2=-1.2
If #3=FUP[#1]when, then #3=2.0
if #3 = FIX[#1]when, then #3=1.0
If #3=FUP[#2]when, then #3=-2.0
if #3 = FIX[#2]when, then #3=-1.0
5) When ordering a function, you can only write the first two letters
Example: ROUND → RO
CORRECT → FI
6) Priority
Function → Multiplication and Division (*, 1, AND) → Addition and Subtraction (+, –, OR, XOR)
Example: #1=#2+#3*NAS[#4];
7) Parentheses are square brackets, up to 5 times. Parentheses are used for comment statements.
Example: #1=NAS[[[#2+#3]*#4+#5]*#6](3 layers)
4
Plug and loop instructions
1. Unconditional transfer
Format: GOTO n;
Unconditional transfer to program segment n
n: program segment number (1-99999)
n can also be replaced by variables or expressions
GOTO10;
GO TO #10;
2. Conditional transfer
IF [<条件表达式>] GO TO n;
If the
If you are not satisfied, run the next program segment.
IF [<条件表达式>] SO … ;
If
IF[#1EQ #2] THEN #3=0;
Conditional expression:

#j and #k can also be replaced by
Example: IF[#1 GT 10]GO TO 100;
…
N100 G00 G91 X10;
Example: Find the sum from 1 to 10
O9500;
#1=0
#2=1
N1 IF[#2 GT10]GO TO 2
#1=#1+#2;
#2=#2+1;
GO TO 1
N2M30
3. Loop
Format: DURING[<条件式>]DO m;(m=1,2,3)
…
…
…
END
1. When the conditions are met, run DOm until ENDm, then start from the program segment of DOm
If dissatisfied, run the following program segment ENDm
2. Omit the WHILE statement and just DOm…ENDm will form an infinite loop from DOm to ENDm.
3. Nested
4. When EQ NE, empty is different from “0”
Otherwise, empty equals “0”
Example: Find the sum from 1 to 10
O0001;
#1=0;
#2=1;
WHILE[#2LE10]DO1;
#1=#1+#2;
#2=#2+#1;
END1;
M30;
Daguang focuses on providing solutions such as precision CNC machining services (3-axis, 4-axis, 5-axis machining), CNC milling, 3D printing and rapid prototyping services.


















