Você está na página 1de 9

CNC MCS : INSTRUÇÕES BÁSICAS DE PROGRAMAÇÃO

I - Introdução

Os controles MCS aceitam basicamente instruções que podem ser do tipo


conversacional ( MCS ) ou instruções padronizadas pela norma ISO ou ainda uma
mistura delas no mesmo programa.
ISO ( códigos G ) MCS conversational puro Misto MCS / ISO no mesmo
programa
%100 :%100 :%100
N010 G90 :CYC CALL 0 :CYC CALL 0
N020 G54 X -150 Z -30 :CYC CALL 4 X A -150 :G54 X-150 Z-30
:CYC CALL 4 Z A -30
N030 G00 X 100 Y 400 Z150 :POS T X A 100 Y A 400 Z A 150 F0 :G00 X 100 Y 400 Z150
N040 T2 D2 M3 S1200 :CYC CALL 2 M3 S1200 T 2 D2 :T2 D2 M3 S1200
N050 G01 X2.5 Y45 F200 :POS X A 2.5 Y A 45 F200 :POS X A 2.5 Y A 45 F200
N060 Y30 :POS Y A 30 :Y30
N070 Z-80.15 :POS Z A -80.15 :Z-80.15
N080 G91 X10 :POS X I 10 :POS X I 10
N090 G90 Z7 F100 :POS Z A 7 F100 :POS Z A 7 F100
N100 X10 Y10 :POS L X A 10 Y A 10 :POS L X A 10 Y A 10
N110 G02 X-10 Y-10 I -10 J -10 F300 M8 :POL X I -10 Y I -10 :POL X I -10 Y I -10
:POS C X A -10 Y A -10 F300 M8 :POS C X A -10 Y A -10 F300 M8
N120 G01 Z10 F200 :POS Z10 F200 :POS Z10 F200
N130 G03 X10 Y10 R20 F400 :POS C X A 10 Y A 10 R20 F400 :POS C X A 10 Y A 10 R20 F400
N140 M30 :CYC CALL 2 M30 :M30
: :

MCS : Programa Típico de uma peça

; uma linha que começa com ; é uma linha de comentário que o CNC despreza
; quando está recebendo o programa via serial RS232
;

%100 ; você pode inserir um comentário após uma instrução válida como
; esta, pgm = 100
( um texto entre parêntesis é incluído no programa , sem interferir na execução)
( desta forma podemos identificar o programa , informar o número do desenho ,
etc. )

Instruções

:
; o caracter : seguido de uma mudança de linha significa fim de programa
II - Programação MCS conversacional :

II.1 - MOVIMENTO

:POS X A 10 F1000 ; move X em absoluto para 10.000 , avanço = 1000mm/min


:POS X A 10 F1.000 ; move X em absoluto para 10.000, avanço = 1mm/revolution
; note que números inteiros para avanço significam mm/min
; enquanto números com parte decimal significam mm/rotação
:POS Y I -20 ; move Y em incremental -20.000, avanço = modal
:POS Z 30 ; move Z em Absoluto / Incremental conforme condição modal
; anterior 30.000 , avanço modal
:POS X A 10 F200 M3 ; move X em absoluto para 10.000, avanço = 200 ,
; função M3
:POS L X A 10 Y I -20 ; Interpolação linear, 2 eixos , X em absoluto para 10.000
; e Y em incremental -20
:POS C H X A 10 Y I -20 I -5 J 8 F100 ; interpolação circular sentido horário,2
eixos,
; X em absoluto para 10.000 e Y em
; incremental -20 , centro em incremental -5
; na direção X e 8 na direção Y ,
; avanço = 100
:POS C AH X A 10 Y I -20 R13 F100 ; interpolação circular sentido anti-horário,
; 2 eixos, X em absoluto para 10.000 e Y em
; incremental -20 , raio = 13.000,
; avanço = 100
:POS T X A 10 Y I -20 Z I 12,34 ; interpolação linear, 3 eixos , X em
; absoluto para 10.000 , Y em incremental
; -20, e Z em incremental 12.34
:POS T C AH X A 10 Y I -20 Z A 10 R13 F100 M4 ; interpolação helicoidal ,
; sentido anti-horário, 3 eixos , X em
; absoluto para 10.000 ,Y em incremental
; -20 e Z em absoluto para 10 ,
; raio = 13.000, avanço=100 , função M4

II.2 - SUB-ROTINAS

:LBL SET 10 ; define uma marca no programa = 10


:LBS 10 ; (idem) marca = 10
:LBS 0 ; retorno de uma sub-rotina ,caso não
; houve uma chamada prévia, nada faz.
:LBC CALL 10 ; chama uma sub-rotina que inicia na
; marca 10 e que termina na marca LBS 0
:LBR CALL 10 REP 5 ; repete blocos entre LBS 10 e a instrução
; que iniciou o loop de repetição,
; repetindo este trecho por 5 vezes.
:LBP CALL 100 ; chama um outro programa , o programa
; 100, retorna ao final do programa 100. O
; programa chamado deve evitar instruções
; como M30 que zera a pilha de sub-rotinas.
II.3 - COMPENSAÇÃO DE FERRAMENTA

Para Tornos :
TOOL DEF 10 LX 10.37 LZ 20.81 R 1 LC 11 ; define os dados da
; ferramenta número 10
; comprimento X = 10.37
; comprimento Z = 20.81
; raio da ponta R = 1
; lado de corte = 11
TOOL CALL 10 S1000 C ON R0 ; torne ativos os comprimentos
; imediatamente , sem
; compensação de raio ,
; RPM = 1000
TOOL CALL 10 S1000 C OFF R0 ; torne os comprimentos ativos no
; próximo movimento , por
; enquanto sem compensação
de ; raio.
TOOL CALL 10 S1000 C OFF RR+ ; torne os comprimentos e o raio
; da ponta da ferramenta ativos no
; próximo movimento. Compensa
; o raio pela direita .
TOOL CALL 10 S1000 C OFF RL- ; torne os comprimentos e o raio
; da ponta da ferramenta ativos no
; próximo movimento. Compensa
; o raio pela esquerda .

Para Fresadoras :

TOOL DEF 10 L 10.37 R 10 ; define os dados da


; ferramenta número 10
; comprimento L = 10.37
; raio da ponta R = 10
TOOL CALL 10 Z S1000 C ON R0 ; torna ativa a compensação
; de comprimento para o eixo Z
; imediatamente , sem
; compensação de raio
TOOL CALL 10 Z S1000 C OFF R0 ; torna ativa a compensação
; de comprimento para o eixo Z
; no próximo movimento , sem
; compensação de raio
TOOL CALL 10 Y S1000 C OFF RR+ ; torna ativa a compensação
; de comprimento para o eixo Y
; no próximo movimento , com
; compensação de raio a direita
; no plano ortogonal
TOOL CALL 10 Z S1000 C OFF RL- ; torna ativa a compensação
; de comprimento para o eixo Z
; no próximo movimento , com
; compensação de raio a
; esquerda no plano ortogonal
II.4 - CÁLCULOS

Obs.: Os controles da MCS possuem 128 memórias ou registros de ponto flutuante


que o usuário pode manipular para resolver expressões e utilizar os resultados em
programas paramétricos , sub-programas ou MACROS ( ciclos fixos ) .
Estes registros são identificados de H0 até H127 , podendo armazenar números em
ponto flutuante com grande precisão .
O usuário pode resolver expressões como +, - , * , / , seno , coseno , tangente ,
arcotangente , raiz quadrada , distância , módulo , negação , e desvios condicionais,
como menor que, maior ou igual, igual ou diferente. Ele pode também ler
parâmetros e dados do PLC para calcular ou tomar decisões no programa.

:FUNC 0 ATR P0 H0 P1 10 ; H0 = 10
:FUNC 0 ATR P0 H2 P1 H3 ; H2 = H3
:FUNC 1 ADD P0 H2 P1 H3 P2 10.15 ; H2 = H3 + 10.15
:FUNC 1 ADD P0 H100 P1 1.23456 P2 1.23E-4 ; H100 = 1.23456 + 0.000123
:FUNC 2 SUB P0 H2 P1 H3 P2 -27 ; H2 = H3 - 27
:FUNC 3 MULT P0 H0 P1 H127 P2 3.1415 ; H0 = H127 * 3.1415
:FUNC 4 DIV P0 H0 P1 H127 P2 3.1415 ; H0 = H127 / 3.1415
:FUNC 5 ABS P0 H0 P1 H127 ; H0 = ABS(H127) , sempre
; positivo
:FUNC 6 REST P0 H0 P1 H127 P2 3.1415 ; H0 = resto de divisão
; (H127 / 3.1415)
:FUNC 7 NEG P0 H0 ; H0 = -H0 , mudança de sinal
:FUNC 8 RAD P0 H0 P1 488.97 ; H0 = raiz quadrada (488.97)
:FUNC 9 PI P0 H13 ; H13 = π , 3.141....
:FUNC 10 SEN P0 H2 P1 H3 ; H2 = sin ( H3 )
:FUNC 11 COS P0 H2 P1 H3 ; H2 = cos ( H3 )
:FUNC 12 TAN P0 H2 P1 H3 ; H2 = tan ( H3 )
:FUNC 13 ATG P0 H2 P1 H3 ; H2 = atan ( H3 )
:FUNC 14 DIST P0 H2 P1 H3 P2 H4 ; H2 = raiz ( H3 2 * H4 2 )
:FUNC 15 JE LBL 10 P1 H15 P2 10 ; desvia p/ label 10 se
; ( H15==10)
:FUNC 16 JNE LBL 10 P1 H15 P2 10 ; desvia p/ label 10 se
; ( H15!=10)
:FUNC 17 JP LBL 10 P1 H15 P2 10 ; desvia p/ label 10 se
; ( H15>=10)
:FUNC 18 JN LBL 10 P1 H15 P2 10 ; desvia p/ label 10 se
; ( H15<10)
:FUNC 19 PLCR P0 H2 P1 M200 ; H2 = lê memória do PLC ,
; endereço = 200
:FUNC 20 PLCW P0 M100 P1 10 ; escreve na memória do PLC ,
; endereço = 200, valor = 10
:FUNC 21 PARR P0 H2 P1 P100 ; H2 = leitura de parâmetro de
; máquina, endereço = 100
:FUNC 22 TDFR P0 H30 P1 10 P2 0 ; H30 = lê dado do corretor de
; ferramenta 10 , índice 0
:FUNC 23 TDFW P0 H30 P1 10 P2 1 ; escrita no corretor 10 ,
; índice 1 , dado = H30

II.5 - CICLOS FIXOS


:CYC CALL 1 T 10 ; tempo de espera , 10 x 0.1 segundos
:CYC 1 T 10 ; idem

:CYC CALL 2 M3 ; função M , no exemplo M3


:CYC CALL 2 M3 M8 M21 ; até 3 funções M por CYC 2
:CYC 2 M3 S1200 ; rotação Snnnn , nnnn = rotações / min
:CYC 2 T3 D5 ; estação T = 3 , corretor ( data ) = 5
:CYC 2 B5 ; arredondamento de cantos (R = 5 )
:CYC 2 B-5 ; chanfro (projeção = 5 )

:CYC CALL 3 X A 10 Z A 20 P1.5 A45 U 3 ; ciclo de corte de rosca


; onde X e Z são as coordenadas da posição final
; P = passo da rosca
; A = ângulo de saída no final da rosca
; U = distância para início da saída

:CYC CALL 4 X A 10.15 ; preset eixo X , X = 10.15 após este bloco


:CYC CALL 4 Y I 1 ; preset eixo Y , Y = atual + 1 após este bloco

:CYC CALL 5 E ON 12 ; condição = TRUE se entrada 12 ativa


:CYC CALL 5 E OFF 12 ; condição = TRUE se entrada 12 desligada

:CYC CALL 6 J 100 ; desvio para marca LBS 100


:CYC CALL 6 J ON 100 ; desvio para marca LBS 100 se condição TRUE
:CYC CALL 6 J OFF 100 ; desvio para marca LBS 100 se condição FALSE
II.6 - CICLOS DE USUÁRIO ( MACROS )

O usuário pode definir ciclos fixos ou MACROS :


Forma Geral :

:CYC CALL nn NOME_OPCIONAL PAR_1_OPCIONAL ... PAR_15_OPCIONAL

exemplo:
:CYC CALL 33 ROSCA X 10 Y 20 P1.5 PROF 3 N 5 ACAB 0.1

esta pode ser uma MACRO definida por um usuário ,que chama o sub-programa 33,
cujo nome é ROSCA , passando os seguintes parâmetros para os registros de ponto
flutuante :
H0 = 10 ;X
H1 = 20 ;Y
H2 = 1.5 ;P
H3 = 3 ; PROF
H4 = 5 ;N
H5 = 0.1 ; ACAB

O sub-programa 33 utiliza estes dados para gerar os movimentos necessários


retornando ao final para o programa do usuário que originou a chamada.

Com estes recursos, os controles MCS podem realizar ciclos fixos e permitir ao
usuário criar seus próprios ciclos , e utilizá-la como uma instrução ( MACRO) em
seus programas.

OBS.: O usuário pode incluir ciclos com os quais está acostumado , por exemplo os
ciclos HEIDENHAIM ( pocket , drilling , threading .... ) e adapta-los para a linguagem
MCS conversacional ou simplesmente emulá-los em nosso CNC.

HEIDENHAIM : MCS conversational: ( nn >= 20 )

CYCL DEF nn ........ CYC CALL nn ......


CYCL CALL nn .......

II.7 - FUNÇÕES M

M 00 ; parada programada
M 01 ; parada opcional
M 02 ; final de programa
M 03 ; rotação eixo árvore sentido horário
M 04 ; rotação eixo árvore sentido anti-horário
M 05 ; interrompe a rotação
M 06 ; troca de ferramenta
M 07 ; refrigeração fraca
M 08 ; liga refrigeração
M 09 ; desliga refrigeração
M 13 ; M3 + M8
M 14 ; M4 + M8
M 15 ; M5 + M9
M 30 ; final de programa
M nn ; nn não listado acima => função dependente do PLC
III - PROGRAMAÇÃO ISO ( CÓDIGOS G )

III.1 - FORMA GERAL

% nnnnn ; número do programa


N nnnn ; opcional , marca o número do bloco, sem execução
G nn ; código G, podem ser inseridos até 4 códigos G por bloco,
; execução conforme o código ( nn )
X (-)nnnnn.nnn ; coordenada X
Y (-)nnnnn.nnn ; coordenada Y
Z (-)nnnnn.nnn ; coordenada Z

F nnnnn .nnn ; avanço para movimentos, mm/min ou mm/rot conforme o


; o estado modal ativo

F nnnnn ; Tempo para ciclo de espera

R nnnnn.nnn ; raio para interpolação circular

I (-)nnnnn.nnn ; cota de centro incremental na direção X


J (-)nnnnn.nnn ; cota de centro incremental na direção Y
K (-)nnnnn.nnn ; cota de centro incremental na direção Z

S nnnnn ; rotação da árvore ( r.p.m. ou m/min, de acordo com o


; estado modal ativo)

M nnn ; função auxiliar, até 3 por linha , execução depende do


; código M ( nnn )

T nn ; estação da torre
D nn ; corretor, offsets ativos no próximo bloco

A nnn ; ângulo para coordenadas polares , ângulo de saída de rosca

P (-)nnn.nnn ; passo da rosca

L nnnnn ; número de sub-rotina

( ; início de linha de comentário , a ser incluída no programa


) ; final de linha de comentário

; ; diz ao CNC para desprezar caracteres até o final da linha

\n or \r ; encerra linha , CNC espera pela próxima linha.


III.2 - códigos G

G 00 ; modal, movimento rápido ativo


G 01 ; modal movimento linear ativo
G 02 ; modal movimento circular horário ativo
G 03 ; modal movimento circular anti-horário ativo
G 04 ; ciclo de tempo ativo
G 09 ; aproximação precisa, cantos vivos
G 10 ; modal movimento rápido em coordenadas polares ativo
G 11 ; modal movimento linear ativo, coordenadas polares
G 12 ; modal movimento circular horário ativo, coordenadas polares
G 13 ; modal movimento circular anti-horário ativo, coord. polares
G 17 ; modal plano XY ativo
G 18 ; modal plano ZX ativo
G 19 ; modal plano YZ ativo
G 40 ; modal compensação de raio OFF
G 41 ; modal compensação de raio ON , à esquerda
G 42 ; modal compensação de raio ON , à direita
G 53 ; zero absoluto ( zero máquina )
G 54 ; zero peça 1 ( default )
G 55 ; zero peça 2
G 56 ; zero peça 3
G 57 ; zero peça 4
G 58 ; offsets incrementais ( 1 ) para zero peça ativo
G 59 ; offsets incrementais ( 2 ) para zero peça ativo
G 64 ; relaxe transição nos cantos ( arredondamento não preciso )
G 70 ; unidades imperiais ( polegadas )
G 71 ; sistema métrico ( default )
G 90 ; coordenadas em absoluto ( default )
G 91 ; coordenadas incrementais
G 92 ; máxima rotação da árvore para velocidade de corte constante
G 94 ; avanço em mm/min ( default )
G 95 ; avanço em mm/rot
G 96 ; velocidade de corte constante ( S m/min ) , avanço em mm/rot
G 97 ; cancela vel. corte constante ( S rot/min ) , avanço em mm/rot
III.3 - FUNÇÕES M

M 00 ; parada programada
M 01 ; parada opcional
M 02 ; final de programa
M 03 ; rotação eixo árvore sentido horário
M 04 ; rotação eixo árvore sentido anti-horário
M 05 ; interrompe a rotação
M 06 ; troca de ferramenta
M 07 ; refrigeração fraca
M 08 ; liga refrigeração
M 09 ; desliga refrigeração
M 13 ; M3 + M8
M 14 ; M4 + M8
M 15 ; M5 + M9
M 30 ; final de programa
M nn ; nn não listado acima => função dependente do PLC

III.4 - CICLOS FIXOS (G) MACROS

O usuário pode definir ciclos fixos ( código G) , via MACROS

Forma geral :

G nn NOME_OPCIONAL PAR_1_OPCIONAL ... PAR_15_OPCIONAL

exemplo:
G 33 X 10 Y 20 P1.5 Q 3 K 5 L 0.1

este poderia ser um ciclo definido pelo usuário , que chama o sub-programa 33 ,
cujo nome não foi definido ( poderia se ROSCA) , passando os seguintes
parâmetros para registros de ponto flutuante :
H0 = 10 ;X
H1 = 20 ;Y
H2 = 1.5 ;P
H3 = 3 ;Q
H4 = 5 ;K
H5 = 0.1 ;L

O sub-programa utiliza estes dados para sua execução e após concluir sua função
retorna ao programa do usuário que originou a chamada.
Com estes recursos, os controles MCS podem realizar ciclos fixos e permitir ao
usuário criar seus próprios ciclos , e utilizá-la como uma instrução ( MACRO) em
seus programas.
OBS.: O usuário pode incluir ciclos com os quais está acostumado , por exemplo os
ciclos FANUC ( pocket , drilling , threading .... ) e adapta-los para a linguagem MCS
ISO ou simplesmente emulá-los em nosso CNC.

FANUC : MCS ISO: ( nn != códigos G reservados )


G 81 X 10 Y 20 ..... G 81 X 10 Y 20 ..... ; mesmos parâmetros

Você também pode gostar