I/O utente
- Pedro
- God
- Messaggi: 7021
- Iscritto il: domenica 6 aprile 2008, 18:44
- Località: Roma
I/O utente
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."
- shineworld
- Senior
- Messaggi: 673
- Iscritto il: venerdì 18 marzo 2016, 9:44
- Località: Vicenza
- Contatta:
Re: I/O utente
Con macro si descrive un sistema che in se è molto articolato.
In RosettaCNC si parla di macro:
- Macro locali, presente nel programma principale, e richiamabili con M98, G65, G66. Iniziano con la lettera O<numero_macro> e finiscono con M99.
- Ci sono macro esterne e memorizzate sulla cartella privata macros di ogni macchina (<dati utente>\RosettaCNC-1\machines\<macchina>\macros.
Queste possono essere richiamate per nome
1 - avere un nome (eg: flange_holes) e richiamate con M98 p"flange_holes" o con G65/G66 p"flange_holes" <parametri A B C...>.
2 - avere un numero (eg: 210.ngc) e richiamate con M98 p201 o con G65/G66 p201 <parametri A B C...>.
3 - essere il codice di un nuovo comando custom G (200..499) o M(100.199) ed avere nome m100.ngc g400.ngc ed e essere
richiamate nel codice con M100 <parametri A B C...> G400 <parametri A B C...> con un normale comando del linguaggio estendendone
quindi facilmente il set nativo.
Sto sviluppando la possibilità di avere dei bottoni sulla UI per richiamare delle macro quando la CNC è in stato di IDLE (non sta lavorando) e
di fare la stessa cosa con alcuni ingressi della scheda configurati per richiedere l'esecuzione di una macro (sempre con CNC in IDLE).
Penso sarà disponibile se non con il prossimo rilascio al massimo con quello che seguirà.
In questo momento ho finito la gestione dei comandi dinamici, ovvero la possibiltà di gestire e modificare dinamicamente il codice G in esecuzione sulla base di input numerici da utente, stato di un ingresso, probing, etc. che però hanno effetto solo quando la CNC va eseguire il blocco di codice G in cui è presente un M66 (test ingresso), M109/M120 (interfaccia UI con utente), G38.2/3/4/5 probing.
Un esempio, sebbene non propriamente una lavorazione reale, del nuovo sistema dinamico in questo video:
https://youtu.be/9Bq6dk-wTik
Nella prima parte si vede infatti che quando il codice arriva alla linea 5:
attende per 3 secondi che lo stato dell'ingresso utente 1 vada o sia HIGH e se questo non succede toglie dinamicamente dal percorso utensile un'intera lavorazione fatta con un ciclo custom (G66/G67) chiamando una macro esterna p9212 che fa una svuotatura usando internamente il G12 di fanuc.
Questo è un esempio di come durante l'esecuzione di un programma si possa o meno eseguire una macro in un punto specifico in base allo stato di un ingresso.
Per la seconda domanda le uscite utente sono gestibili in una macro tramite la funzione:
Spero di aver centrato le richieste.
In RosettaCNC si parla di macro:
- Macro locali, presente nel programma principale, e richiamabili con M98, G65, G66. Iniziano con la lettera O<numero_macro> e finiscono con M99.
- Ci sono macro esterne e memorizzate sulla cartella privata macros di ogni macchina (<dati utente>\RosettaCNC-1\machines\<macchina>\macros.
Queste possono essere richiamate per nome
1 - avere un nome (eg: flange_holes) e richiamate con M98 p"flange_holes" o con G65/G66 p"flange_holes" <parametri A B C...>.
2 - avere un numero (eg: 210.ngc) e richiamate con M98 p201 o con G65/G66 p201 <parametri A B C...>.
3 - essere il codice di un nuovo comando custom G (200..499) o M(100.199) ed avere nome m100.ngc g400.ngc ed e essere
richiamate nel codice con M100 <parametri A B C...> G400 <parametri A B C...> con un normale comando del linguaggio estendendone
quindi facilmente il set nativo.
Sto sviluppando la possibilità di avere dei bottoni sulla UI per richiamare delle macro quando la CNC è in stato di IDLE (non sta lavorando) e
di fare la stessa cosa con alcuni ingressi della scheda configurati per richiedere l'esecuzione di una macro (sempre con CNC in IDLE).
Penso sarà disponibile se non con il prossimo rilascio al massimo con quello che seguirà.
In questo momento ho finito la gestione dei comandi dinamici, ovvero la possibiltà di gestire e modificare dinamicamente il codice G in esecuzione sulla base di input numerici da utente, stato di un ingresso, probing, etc. che però hanno effetto solo quando la CNC va eseguire il blocco di codice G in cui è presente un M66 (test ingresso), M109/M120 (interfaccia UI con utente), G38.2/3/4/5 probing.
Un esempio, sebbene non propriamente una lavorazione reale, del nuovo sistema dinamico in questo video:
https://youtu.be/9Bq6dk-wTik
Nella prima parte si vede infatti che quando il codice arriva alla linea 5:
Codice: Seleziona tutto
M66 P1 L1 Q3
Questo è un esempio di come durante l'esecuzione di un programma si possa o meno eseguire una macro in un punto specifico in base allo stato di un ingresso.
Codice: Seleziona tutto
(External data handling)
G0 X0 Y0 Z0 F5000
G1 X100
M66 P1 L1 Q3
M109 P"Input level 1 is #5398" q4
WHILE [#5398 EQ 1] DO01
G66 p9212 x0 y50 d30 a8 r20 z-20 q1 h1 t1 f5000
Y50
G67
Y0
BREAK01
END01
G1 X200
G38.2 Z-100 F100
M109 P"Input level 2 is #5398" q4
G1 X300 F5000
#5399 = 10.0 ; Set the default value
M109 Q3 P"Please enter a number"
M109 P"User wrote #5399" q4
G65 P1000
G1 X400
#5399 = 20.0 ; Set the default value
M109 Q3 P"Please enter a number"
M109 P"User wrote #5399" q4
WHILE [#5399 LE 20] DO01
G65 P1000
GOTO 1
END01
WHILE [#5399 GT 20] DO01
G65 P1000
#5399=[#5399-1]
END01
N1
G1 Y100
#5399 = 0.0 ; Set the default value
M109 Q3 P"Please enter rotation angle"
G68 X0 Y0 R#5399
#5399=50
G65 P1000
M2
( draw a box of user entered size )
o1000
G91
G1 X#5399
Y#5399
X-#5399
Y-#5399
G90
M99
Codice: Seleziona tutto
M62 P<numero_uscita> Turn out ON
M63 P<numero_uscita> Turn out OFF
- Pedro
- God
- Messaggi: 7021
- Iscritto il: domenica 6 aprile 2008, 18:44
- Località: Roma
Re: I/O utente
tutto molto chiaro
ringrazio e chiedo: con il comando attendi per n secondi l'input N. x posso inserire una macro nidificata, mentre attendo l'input x attendo un input y? se si, quante nidificazioni posso fare?
ringrazio e chiedo: con il comando attendi per n secondi l'input N. x posso inserire una macro nidificata, mentre attendo l'input x attendo un input y? se si, quante nidificazioni posso fare?
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."
- shineworld
- Senior
- Messaggi: 673
- Iscritto il: venerdì 18 marzo 2016, 9:44
- Località: Vicenza
- Contatta:
Re: I/O utente
In questo momento non sono possibili altre operazioni (macro) su attesa di un'istruzione dinamica ma solo come effetto della conclusione della stessa.
Ci devo pensare su un po', si può sempre mettere mano al codice e cambiare le cose...
Ci devo pensare su un po', si può sempre mettere mano al codice e cambiare le cose...
- Pedro
- God
- Messaggi: 7021
- Iscritto il: domenica 6 aprile 2008, 18:44
- Località: Roma
Re: I/O utente
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."
- shineworld
- Senior
- Messaggi: 673
- Iscritto il: venerdì 18 marzo 2016, 9:44
- Località: Vicenza
- Contatta:
Re: I/O utente
Essendo di base un PLC non è precluso che in futuro non apriremo la possibilità di costruire blocchi di codice in linguaggio strutturato o grafico da usare per operazioni real-time e cicliche, oppure che tramite la G100 non creiamo un set di funzioni real-time prefatte da attivare/disattivare...
Il sistema è ancora un libro bianco su tante aspetti e su cui abbiamo molta libertà d'azione
Codice: Seleziona tutto
G100 P A B C … Internal PLC function Call
- Pedro
- God
- Messaggi: 7021
- Iscritto il: domenica 6 aprile 2008, 18:44
- Località: Roma
Re: I/O utente
a mio modestissimo modo di vedere alcune funzioni già potrebbero servire come input, esterni o da pannello, durante il runtime come, una per tutte, l'attivazione e disattivazione del lubrorefrigerante, utile se si sta eseguendo un gcode che non lo prevedeva ma che in lavorazione appare utile o l'attivazione disattivazione dell'aspiratore trucioli; sono solo piccoli esempi
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."
- shineworld
- Senior
- Messaggi: 673
- Iscritto il: venerdì 18 marzo 2016, 9:44
- Località: Vicenza
- Contatta:
Re: I/O utente
Durante la lavorazione sono disponibili dei bottoni su toolbar per attivare e disattivare al volo alcune uscite (Aux1..Aux4) fatto apposta per avviare in corso d'opera eventuali extra-lubrificazioni, soffio aria, etc.
- Pedro
- God
- Messaggi: 7021
- Iscritto il: domenica 6 aprile 2008, 18:44
- Località: Roma
Re: I/O utente
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."