Cosa implica la compilazione o l'interpretazione del codice G della macchina?

1

Il codice G e il codice M che abbiamo usato per istruire il tornio CNC, le stampanti 3D e le macchine per incidere, a mio avviso, non sono un linguaggio di programmazione, ma un linguaggio di scripting come Python, dove script come G00, T01, M18 ecc suggerirebbe al micro-controller di chiamare una funzione (ad es. Matematica numerica).

Dove sono queste funzioni o libreria di funzioni? Esiste una libreria standard ISO C / C ++ che richiama questa chiamata G-Code da?

Sto cercando di capire in che modo una macchina "capisce" il codice G e dove sta recuperando la serie di logiche e movimenti a cui punta il codice G. Ad esempio, prendi firmware Marlin . Doveva analizzare il codice G e istruire i motori passo-passo di conseguenza, ma non sto soddisfacendo la matematica e la logica passando attraverso i codici. Sembra che l'MCU capisca magicamente cosa è il codice G e compila i binari della macchina e emette il rispettivo segnale digitale.

Credo di essere frainteso o mancante di alcune informazioni, che non trovo in wikipedia.

    
posta KMC 28.02.2016 - 22:12
fonte

1 risposta

4

Il codice G è stato creato per essere estremamente facile da analizzare da dispositivi con risorse di calcolo estremamente limitate. È quasi più un formato di file di dati che un linguaggio di programmazione. Non c'è un passo "compilazione". Viene interpretato come letto, riga per riga, con un piccolo buffer per evitare problemi meccanici dovuti alla latenza temporale. Non esiste anche una "libreria standard". Tipicamente il firmware deve essere ricompilato per ogni diversa combinazione di microcontrollore e hardware del motore utilizzato, e ci vuole un bel po 'di lavoro per supportare anche quelle che potrebbero sembrare quelle piccole variazioni.

Nel caso del firmware Marlin, all'interno di Marlin_main.cpp hai una funzione get_command() che mantiene una coda piena di comandi e hai un process_next_command() che contiene un'enorme istruzione switch per tirare il comando successivo dalla coda e chiamata la funzione appropriata.

Per quanto riguarda le funzioni individuali, dipende molto dal tipo di hardware che hai collegato, ma se sai di avere una determinata frequenza di clock, un certo tipo di motori passo-passo, collegati a determinati assi, con un certa risoluzione, connessa a determinati pin, è possibile elaborare i pin giusti per alternare al momento giusto per dire, muovere la testa in linea retta da un punto b lungo l'asse x con una certa velocità. Da lì è davvero solo un grosso problema per implementare tutti i diversi comandi richiesti con il timing corretto.

    
risposta data 29.02.2016 - 00:22
fonte

Leggi altre domande sui tag