Molti tecnici CNC non capiscono i programmi macro. Pensano che con il software di programmazione automatica non sia necessario imparare i programmi macro. In effetti, le funzioni dei programmi macro sono molto potenti. Ad esempio, per scrivere alcuni programmi batch e ripetitivi, è sufficiente modificare alcuni dati quando si utilizzano programmi macro. Non è necessario un gran numero di programmazioni ripetute, che possono semplificare notevolmente le operazioni e migliorare notevolmente l'efficienza del lavoro.
I programmi macro possono utilizzare variabili per eseguire operazioni miste di operazioni aritmetiche, operazioni logiche e funzioni e fornire anche istruzioni di ciclo, istruzioni di diramazione e istruzioni di chiamata di subroutine.
In generale: il programma macro è adatto alla programmazione di una serie di pezzi con la stessa grafica ma con dimensioni diverse; è adatto alla programmazione di una serie di pezzi con lo stesso percorso di processo ma con diversi parametri di posizione; è adatto alla programmazione di parabole, ellissi, iperboli e altre curve senza istruzioni di interpolazione.
01
Rappresentazione e uso delle variabili
1. Rappresentazione variabile
#I(I=1,2,3,…) o #[
Esempio: #5, #109, #501, #[#1 plus #2-12]
In secondo luogo, l'uso delle variabili
1. Specificare il numero della variabile o la formula dopo la parola dell'indirizzo
Formato:
Qui "I" sta per numero variabile
Esempio: F#103, se #103=15, allora è F15
Z-#110, se #110=250, è Z-250
X[#24 più #18*COS[#1]]
2. Il numero variabile può essere sostituito da variabile
Esempio: #[#30], se #30=3, sarà #3
3. Le variabili non possono utilizzare gli indirizzi O, N, I
Esempio: sono consentiti i seguenti metodi
O#1;
I#2 6.00×100.0;
N#3 Z200.0;
4. La variabile corrispondente al numero variabile ha un intervallo di valori specifico per ogni indirizzo
Esempio: quando #30=1100, M#30 non è consentito
5. #0 è una variabile vuota e anche una variabile senza un valore di variabile definito è una variabile vuota
6. Definizione del valore della variabile:
Il punto decimale può essere omesso quando il programma è definito, ad esempio: #123=149
02
tipo di variabile
Aggiungi immagini a WeChat: mvm9987 invierà un tutorial CNC
1. Variabili locali #1~#33
Una variabile utilizzata localmente in un programma macro, il risultato dell'operazione non può essere utilizzato da altri programmi.
Esempio: Un programma macro B programma macro
...
#10=20 X#10 non significa X20
...
Verrà cancellato dopo lo spegnimento e il valore della variabile verrà compilato quando viene richiamato il programma macro
2. Variabili pubbliche #100~#199, #500~#999
La variabile comune in ogni programma macro utente ha lo stesso risultato dell'operazione in qualsiasi chiamata di programma.
Esempio: quando il numero 10 nell'esempio precedente viene modificato in #100, il
X#100 significa X20
#100~#149 Vuoto dopo lo spegnimento
#500~#531 Variabili persistenti (non perse dopo lo spegnimento)
3. Variabili di sistema
Variabile a scopo fisso il cui valore dipende dallo stato del sistema
Esempio: #2001 è il valore di compensazione dell'asse X della compensazione utensile n. 1
Il valore #5221 è il valore di offset dell'origine del pezzo G54 dell'asse X
È necessario inserire un punto decimale quando si immette e l'unità è μm quando il punto decimale viene omesso
03
Istruzioni operative
Il lato destro dell'espressione può essere costante, variabile, funzione, espressione
Nella formula, #j e #k possono anche essere costanti
Il lato destro dell'espressione è il numero variabile, l'espressione
1. Definizione
#I=#j
2. Operazioni aritmetiche
#I=#j più #k
#I=#j-#k
#I=#j*#k
#I=#j/#k
3. Operazioni logiche
#I=#JOK#k
#I=#JXOK#k
#I=#JAND#k
4. Funzione
immagine
#I=SIN[#j] seno
#I=COS[#j] coseno
#I=TAN[#j] tangente
#I=ATAN[#j] arcotangente
#I=SQRT[#j] radice quadrata
#I=ABS[#j] valore assoluto
#I=ROUND[#j] Arrotondamento
#I=FIX[#j] arrotonda per eccesso
#I=FUP[#j] Arrotonda per difetto
#I=BIN[#j] BCD→BIN (binario)
#I=BCN[#j] BIN→BCD
1) Gli angoli sono in gradi
Esempio: 90 gradi e 30 minuti sono 90,5 gradi
2) Le due lunghezze laterali dopo la funzione ATAN devono essere separate da "/"
Esempio: #{{0}}ATAN[1]/[-1], #1 è 35.0
3) ROUND è utilizzato per l'indirizzo nell'estratto conto, arrotondato per eccesso secondo l'unità minima di impostazione di ciascun indirizzo
Esempio: Imposta #1=1.2345, #2=2.3456, l'unità di impostazione è 1μm
G91 X-#1; X-1.235
X-#2 F300; X-2.346
X[#1 più #2]; X3.580
non viene restituito e deve essere sostituito da
X[ROUND[#1] più ROUND[#2]];
4) Se il valore assoluto dopo l'arrotondamento è maggiore del valore originale, sarà arrotondato per eccesso, altrimenti sarà arrotondato per difetto
Esempio: Quando #1=1.2, #2=-1.2
Se #{{0}}FUP[#1], allora #3=2.0
Se #{{0}}FIX[#1], allora #3=1.0
Se #{{0}}FUP[#2], allora #3=-2.0
Se #{{0}}FIX[#2], allora #3=-1.0
5) Quando si comanda una funzione si possono scrivere solo le prime due lettere
Esempio: ROUND→RO
FISSA→FI
6) Priorità
Funzione → moltiplicazione e divisione (*, 1, AND) → addizione e sottrazione ( plus , -, OR, XOR)
Esempio: #1=#2 più #3*SIN[#4];
7) Le parentesi sono parentesi quadre, fino a 5 volte, e le parentesi sono usate per dichiarazioni di commento
Esempio: #1=SIN[[[#2 plus #3]*#4 plus #5]*#6]; (3 pesi)
04
Istruzioni Branch e Loop
1. Trasferimento incondizionato
Formato: GOTO n;
Diramazione incondizionata al blocco n
n: numero blocco (1-99999)
n può anche essere sostituito da variabili o espressioni
vai a10;
VAI #10;
2. Trasferimento condizionato
SE [
Se la
Se non sei soddisfatto, esegui il blocco successivo.
SE [
Se la
IF[#1EQ #2] THEN #3=0;
Espressione condizionale:
immagine
#j e #k possono anche essere sostituiti da
Esempio: IF[#1 GT 10] GOTO 100;
…
N100 G00 G91 X10;
Esempio: trova la somma da 1 a 10
O9500;
#1=0
#2=1
N1 SE [#2 GT10] VAI A 2
#1=#1 più #2;
#2=#2 più 1;
VAI 1
N2 M30
3. Ciclo
Formato: MENTRE[
…
…
…
FINEm
1. Quando le condizioni sono soddisfatte, eseguire da DOm a ENDm, quindi dal segmento di programma di DOm
Se non è soddisfatto, eseguire il segmento di programma dopo ENDm
2. Se si omette l'istruzione WHILE e si ha solo DOm...ENDm, verrà formato un ciclo infinito da DOm a ENDm
3. nidificazione
4. EQ NE, vuoto e "0" sono diversi
Altrove, null equivale a "0"
Esempio: trova la somma da 1 a 10
O0001;
#1=0;
#2=1;
MENTRE [#2LE10] DO1;
#1=#1 più #2;
#2=#2 più #1;
FINE1;
M30;





