Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
strumenti:qmoveplus:j1p20:p1p20f-023:mdo_p1p20f-023 [2021/06/11 14:45] – [8.5 Gestione delle variabili] qem201 | strumenti:qmoveplus:j1p20:p1p20f-023:mdo_p1p20f-023 [2021/06/11 16:53] (versione attuale) – [9.4 Esempio 4: JMPSUB] qem201 | ||
---|---|---|---|
Linea 419: | Linea 419: | ||
\\ Nei posizionamenti multipli gli assi partono dalla posizione in cui si trovano e raggiungono la posizione con coordinate specificate come argomento. Tali coordinate possono essere espresse direttamente come valore oppure possono essere contenute in uno dei registri predisposti per ogni asse. | \\ Nei posizionamenti multipli gli assi partono dalla posizione in cui si trovano e raggiungono la posizione con coordinate specificate come argomento. Tali coordinate possono essere espresse direttamente come valore oppure possono essere contenute in uno dei registri predisposti per ogni asse. | ||
\\ I posizionamenti multipli contemporanei vengono realizzati muovendo alla massima velocità l’asse che deve compiere più spazio, mentre l’asse che deve compiere meno spazio si adegua posizionandosi con una velocità inferiore. In tal modo il posizionamento dei due assi si conclude in modo quasi contemporaneo. Si dice “quasi” dato che non si tiene conto della parte di accelerazione e di decelerazione e quindi il posizionamento risultante può non risultare perfettamente rettilineo tra il punto di partenza e il punto di arrivo (vedi figura di esempio). La velocità di posizionamento per default è quella massima. | \\ I posizionamenti multipli contemporanei vengono realizzati muovendo alla massima velocità l’asse che deve compiere più spazio, mentre l’asse che deve compiere meno spazio si adegua posizionandosi con una velocità inferiore. In tal modo il posizionamento dei due assi si conclude in modo quasi contemporaneo. Si dice “quasi” dato che non si tiene conto della parte di accelerazione e di decelerazione e quindi il posizionamento risultante può non risultare perfettamente rettilineo tra il punto di partenza e il punto di arrivo (vedi figura di esempio). La velocità di posizionamento per default è quella massima. | ||
- | + | <WRAP center 30%> | |
- | \\ | + | {{: |
+ | </ | ||
\\ | \\ | ||
+ | |||
I posizionamenti multipli interpolati vengono realizzati calcolando le velocità da assegnare ai due assi in modo che la velocità di posizionamento risultante di un ipotetico utensile vincolato ai due assi sia quella specificata tramite l’istruzione VELXYI. Se non viene specificata la velocità di interpolazione, | I posizionamenti multipli interpolati vengono realizzati calcolando le velocità da assegnare ai due assi in modo che la velocità di posizionamento risultante di un ipotetico utensile vincolato ai due assi sia quella specificata tramite l’istruzione VELXYI. Se non viene specificata la velocità di interpolazione, | ||
\\ Queste due fasi vengono modificate in modo che entrambi gli assi concludano la accelerazione (o decelerazione) nello stesso istante. In questo modo la traiettoria tra punto di partenza e punto di arrivo risulta essere rettilinea (vedi figura). | \\ Queste due fasi vengono modificate in modo che entrambi gli assi concludano la accelerazione (o decelerazione) nello stesso istante. In questo modo la traiettoria tra punto di partenza e punto di arrivo risulta essere rettilinea (vedi figura). | ||
+ | |||
+ | <WRAP center 30%> | ||
+ | {{: | ||
+ | </ | ||
+ | \\ | ||
+ | |||
+ | < | ||
===== - Settaggio delle uscite ===== | ===== - Settaggio delle uscite ===== | ||
Linea 470: | Linea 479: | ||
| {{: | | {{: | ||
| {{: | | {{: | ||
+ | \\ | ||
Nelle figure seguenti riportiamo una esemplificazione grafica delle due istruzioni “JMPSUB n” e “JMPPRG n”. | Nelle figure seguenti riportiamo una esemplificazione grafica delle due istruzioni “JMPSUB n” e “JMPPRG n”. | ||
- | + | <WRAP center 30%> | |
+ | {{: | ||
+ | </ | ||
Una sequenza può essere richiamata con JMPSUB da un’altra sequenza ed essa a sua volta può richiamarne un’altra. Questo annidamento non è infinito ma può essere ripetuto per un massimo di 5 volte. | Una sequenza può essere richiamata con JMPSUB da un’altra sequenza ed essa a sua volta può richiamarne un’altra. Questo annidamento non è infinito ma può essere ripetuto per un massimo di 5 volte. | ||
+ | \\ | ||
< | < | ||
Linea 493: | Linea 503: | ||
Per ogni asse sono disponibili 100 “registri”, | Per ogni asse sono disponibili 100 “registri”, | ||
+ | |||
\\ Per assegnare un valore ad un registro si utilizzano le istruzioni: | \\ Per assegnare un valore ad un registro si utilizzano le istruzioni: | ||
- | * ASSQX 1, 123.45 : che assegna il valore 123.45 al registro 1 per l’asse X | + | |
- | * ASSQY 1, 123.45 : che assegna il valore 123.45 al registro 1 per l’asse Y | + | |
\\ Per assegnare un valore ad una variabile locale si utilizza l’istruzione: | \\ Per assegnare un valore ad una variabile locale si utilizza l’istruzione: | ||
- | * ASSV 1, 123 : che assegna il valore intero 123 alla prima variabile locale. | + | |
\\ | \\ | ||
\\ | \\ | ||
< | < | ||
- | ===== - Storico allarmi | + | |
+ | ====== - Esempi di programmazione | ||
+ | |||
+ | ===== - Esempio 1: Generico ===== | ||
+ | |||
+ | Riportiamo una sequenza programmata in cui viene ripetuta una serie di posizionameni e di settaggi di uscite per un numero di 5 volte impostato nella prima variabile locale: | ||
+ | |||
+ | ^ Passo ^ Istruzione ^ Argomenti | ||
+ | | 1 | ASSV | 1, 4 | V1 = 4 | | ||
+ | | 2 | XY | 0.0, 0.0 | Start di X e Y a 0, 0 | | ||
+ | | 3 | XY | 100.0, 50.0 | Start di XY a 100, 50 | | ||
+ | | 4 | ON | 1 | Attiva uscita “scendipinza” | | ||
+ | | 5 | WAITIS | ||
+ | | 6 | ON | 2 | Attiva uscita “chiudipinza” | | ||
+ | | 7 | WAITIS | ||
+ | | 8 | X | 50.0 | Start di X a 50 | | ||
+ | | 9 | NOWAITSXY | | Disabilita attesa posizionamenti | | ||
+ | | 10 | WAITX< | ||
+ | | 11 | Y | 90.0 | Start di Y a 90” | | ||
+ | | 12 | WAITSXY | ||
+ | | 13 | OFF | 2 | Disattiva uscita “chiudipinza” | | ||
+ | | 14 | WAITIOFF | ||
+ | | 15 | OFF | 1 | Disattiva uscita “scendipinza” | | ||
+ | | 16 | WAITOFF | ||
+ | | 17 | SOMMA | 1, -1 | Somma -1 a V1 (Sottrae 1 a V1) | | ||
+ | | 18 | IFEQ | 1, | ||
+ | | 19 | GOTO | 2 | altrimenti salta al passo 2 | | ||
+ | | 20 | END | ||
\\ | \\ | ||
- | In questa pagina è visualizzato lo storico degli ultimi 200 allarmi intervenuti. | + | |
- | Per ogni allarme è indicata la data e l'ora di intervento. | + | {{: |
\\ | \\ | ||
+ | < | ||
+ | |||
+ | ===== - Esempio 2: Registri ===== | ||
+ | |||
+ | Questo esempio esegue sempre dei posizionamenti, | ||
+ | |||
+ | ^ Passo ^ Istruzione ^ Argomenti | ||
+ | | 1 | ASSV | 1, 0 | V1 = 0 | | ||
+ | | 2 | ASSQX | 1, | ||
+ | | 3 | ASSV | 2, 1 | V2 = 1 , salvo su V2 l' | ||
+ | | 4 | ASSQY | 2, | ||
+ | | 5 | ASSV | 3, 2 | V3 = 2 , salvo su V3 l' | ||
+ | | 6 | ASSV | 4, -2000 | V4 = -2000 | | ||
+ | | 7 | ASSV | 5, -1000 | V5 = -1000 | | ||
+ | | 8 | VELXYI | ||
+ | | 9 | XYI | 0.0, 0.0 | Start di X e Y a 0, 0 in modo interpolato | | ||
+ | | 10 | TON | 1, 1000 | Attiva uscita 1 dopo un secondo | | ||
+ | | 11 | XN | 2 | Start di X a registro asse X con indice V2 (RX[V2]) | | ||
+ | | 12 | YN | 3 | Start di Y a registro asse Y con indice V3 (RY[V3]) | | ||
+ | | 13 | TOFF | 1, 500 | Disattiva uscita 1 dopo 500 ms | | ||
+ | | 14 | SOMMA | 1, 1 | Incrementa di 1 il valore in V1 | | ||
+ | | 15 | SOMMAVX | ||
+ | | 16 | SOMMAVY | ||
+ | | 17 | WAITIT | ||
+ | | 18 | IFEQ | 1, 5, 20 | Se V1 è uguale a 5 salta al passo 20 | | ||
+ | | 19 | GOTO | 9 | altrimenti salta al passo 9 | | ||
+ | | 20 | END | | Fine sequenza | | ||
\\ | \\ | ||
- | {{: | + | |
+ | Il vantaggio di usare i registri, è dato dal fatto che è possibile compilare una serie di quote obiettivo al loro interno e scorrere queste attraverso il semplice incremento di variabili locali, usate in questo caso come indice di registro. | ||
\\ | \\ | ||
+ | < | ||
+ | |||
+ | ===== - Esempio 3: Attesa posizionamenti ===== | ||
+ | |||
+ | In questo esempio viene riproposto il funzionamento delle attese dei posizionamenti. | ||
+ | |||
+ | ^ Passo ^ Istruzione ^ Argomenti | ||
+ | | 1 | VELX% | 20 | Imposta la velocità dell' | ||
+ | | 2 | VELY% | 20 | Imposta la velocità dell' | ||
+ | | 3 | XY | 0.0, 0.0 | Start di X e Y a 0, 0 | | ||
+ | | 4 | NOWAITSXY | ||
+ | | 5 | X | 5000.0 | ||
+ | | 6 | WAITX> | ||
+ | | 7 | Y | 3000.0 | ||
+ | | 8 | WAITY | | Attende che Y sia arrivato a 3000 | | ||
+ | | 9 | Y | -2000.0 | ||
+ | | 10 | WAITY< | ||
+ | | 11 | WAITSX | ||
+ | | 12 | X | -1000 | Start di X a -1000 | | ||
+ | | 13 | WAITSY | ||
+ | | 14 | GOTO | 3 | Salta al passo 3 | | ||
+ | |||
\\ | \\ | ||
- | | {{:strumenti: | + | |
- | | {{: | + | Da notare che se abbiamo disattivato l' |
- | | {{: | + | |
+ | - Inserire WAITSX, WAITSY o WAITSXY, nell' | ||
\\ | \\ | ||
+ | < | ||
+ | |||
+ | ===== - Esempio 4: JMPSUB ===== | ||
+ | |||
+ | Questo ultimo esempio vuole infine dare una descrizione della istruzione di JMPSUB. | ||
+ | |||
+ | **PROGRAMMA 10** | ||
+ | |||
+ | ^ Passo ^ Istruzione ^ Argomenti | ||
+ | | 1 | VELX% | 50 | Imposta la velocità dell' | ||
+ | | 2 | VELY% | 50 | Imposta la velocità dell' | ||
+ | | 3 | VELXYI | ||
+ | | 4 | WAITSXY | ||
+ | | 5 | JMPSUB | ||
+ | | 6 | GOTO | 4 | Salta al passo 4 | | ||
+ | |||
\\ | \\ | ||
- | | {{: | ||
- | < | + | **PROGRAMMA 11** |
+ | ^ Passo ^ Istruzione ^ Argomenti | ||
+ | | 1 | NOWAITSXY | ||
+ | | 2 | JMPSUB | ||
+ | \\ | ||
- | ====== - Info di sistema ====== | + | **PROGRAMMA 12** |
- | Per accedere alla sezione delle info di sistema: | + | ^ Passo ^ Istruzione ^ Argomenti |
+ | | 1 | XYI | 0.0, 0.0 | Start di X e Y a 0, 0 in modo interpolato | | ||
+ | | 2 | X | 1000.0 | ||
+ | | 3 | Y | 1000.0 | ||
+ | | 4 | JMPSUB | ||
- | 1. premere il tasto **MENU** sulla barra in alto {{: | + | \\ |
- | 2. accedere alla funzione con il tasto apposito {{: | + | **PROGRAMMA 13** |
- | {{: | + | ^ Passo ^ Istruzione ^ Argomenti |
+ | | 1 | X | 5000.0 | Start di X a 5000 | | ||
+ | | 2 | WAITX> | ||
+ | | 3 | Y | 5000.0 | ||
+ | | 4 | WAITY | ||
- | Sono elencate le info di diagnostica delle CPU, più altre informazioni utili all' | + | \\ |
- | |**CPU firmware name** |Versione del firmware | | + | Il programma 10 è quello principale e viene utilizzato per inizializzare le velocità e per l' |
- | |**CPU firmware checksum** |Checksum del firmware | | + | \\ \\ Il programma 10 va poi a chiamare il programma 12, il quale esegue una serie di posizionamenti con attesa. |
- | |**CPU serial number** |Serial number della CPU installata | | + | \\ \\ Il programma 12 va poi a chiamare il programma 11, il quale disattiva l' |
- | |**CPU part number** |Part number della CPU installata | | + | \\ \\ Il programma 11 va poi a chiamare il programma 13, il quale esegue dei posizionamenti senza attesa e attende che Y sia fermo. |
- | |**CPU hardware release** |Release hardware della CPU installata | | + | \\ \\ A questo punto il programma 13 termina e torna sul 11 e poi 12, i quali terminano a loro volta. Si ritorna infine al programma 10 il quale esegue un salto a un passo precedente (di riattivazione attesa posizionamenti) e tutto riparte nuovamente. |
+ | \\ | ||
< | < | ||