strumenti:qmoveplus:j1p20:p1p20f-023:mdo_p1p20f-023

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
strumenti:qmoveplus:j1p20:p1p20f-023:mdo_p1p20f-023 [2021/06/11 15:30] – [8.4 Gestione sequenza passi] qem201strumenti:qmoveplus:j1p20:p1p20f-023:mdo_p1p20f-023 [2021/06/11 16:53] (versione attuale) – [9.4 Esempio 4: JMPSUB] qem201
Linea 505: Linea 505:
  
 \\ 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 +  * **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+  * **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.+  * **ASSV    1,    123** : che assegna il valore intero 123 alla prima variabile locale.
 \\ \\
 \\ \\
Linea 541: Linea 541:
 |  19   | GOTO      | 2           | altrimenti salta al passo 2 | |  19   | GOTO      | 2           | altrimenti salta al passo 2 |
 |  20   | END                   | Fine sequenza | |  20   | END                   | Fine sequenza |
 +\\
  
 +{{:strumenti:qmoveplus:j1p20:p1p20f-023:es_prg_1.png?600|}}
  
 +\\
 +<html><pagebreak /></html>
 +
 +===== - Esempio 2: Registri =====
 +
 +Questo esempio esegue sempre dei posizionamenti, ma utilizzando i registri per gli assi X e Y.
 +
 +^ Passo ^ Istruzione ^ Argomenti     ^ Commenti ^
 +|  1    | ASSV       | 1,          0 | V1 = 0 |
 +|  2    | ASSQX      | 1,     4000.0 | RX[1] = 4000 , registro delle X con indice 1 |
 +|  3    | ASSV       | 2,          1 | V2 = 1 , salvo su V2 l'indice del registro asse X |
 +|  4    | ASSQY      | 2,     2000.0 | RX[2] = 2000 , registro delle Y con indice 2 |
 +|  5    | ASSV       | 3,          2 | V3 = 2 , salvo su V3 l'indice del registro asse Y |
 +|  6    | ASSV       | 4,      -2000 | V4 = -2000 |
 +|  7    | ASSV       | 5,      -1000 | V5 = -1000 |
 +|  8    | VELXYI     | 100000        | Imposta la velocità per movimenti interpolati a 100000 |
 +|  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    | 4,          1 | Somma il valore in V4 (-200.0) al registro asse X con indice 1 (RX[1]). \\ Decrementa ogni volta di 200 la quota obiettivo. |
 +|  16   | SOMMAVY    | 5,          2 | Somma il valore in V5 (-100.0) al registro asse Y con indice 2 (RX[2]). \\ Decrementa ogni volta di 100 la quota obiettivo. |
 +|  17   | WAITIT     | 5000          | Attende un tempo di 5 |
 +|  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.
 +
 +\\
 +<html><pagebreak /></html>
 +
 +===== - Esempio 3: Attesa posizionamenti =====
 +
 +In questo esempio viene riproposto il funzionamento delle attese dei posizionamenti.
 +
 +^ Passo ^ Istruzione ^ Argomenti     ^ Commenti ^
 +|  1    | VELX%      | 20            | Imposta la velocità dell'asse X al 20% |
 +|  2    | VELY%      | 20            | Imposta la velocità dell'asse Y al 20% |
 +|  3    | XY         | 0.0,      0.0 | Start di X e Y a 0, 0 |
 +|  4    | NOWAITSXY  |               | Disabilita attesa posizionamenti |
 +|  5    | X          | 5000.0        | Start di X a 5000 |
 +|  6    | WAITX>     | 2000.0        | Attesa quota di X > 2000 |
 +|  7    | Y          | 3000.0        | Start di Y a 3000 |
 +|  8    | WAITY      |               | Attende che Y sia arrivato a 3000 |
 +|  9    | Y          | -2000.0       | Start di Y a -2000 |
 +|  10   | WAITY<     | 1000          | Attesa quota di Y < 1000 |
 +|  11   | WAITSX                   | Abilita attesa posizionamenti per asse X |
 +|  12   | X          | -1000         | Start di X a -1000 |
 +|  13   | WAITSY                   | Abilita attesa posizionamenti per asse Y |
 +|  14   | GOTO       | 3             | Salta al passo 3 |
 +
 +\\
 +
 +Da notare che se abbiamo disattivato l'attesa del posizionamento, e vogliamo che un posizionamento sia invece completato abbiamo 2 modalità per farlo:
 +  - Inserire WAITX o WAITY, nell'istruzione successiva al posizionamento. \\ In questo caso l'attesa viene controllata solo per questa istruzione.
 +  - Inserire WAITSX, WAITSY o WAITSXY, nell'istruzione precedente al posizionamento. \\ Questa modalità invece disattiva l'attesa anche per le istruzioni a seguire.
 +
 +\\
 +<html><pagebreak /></html>
 +
 +===== - Esempio 4: JMPSUB =====
 +
 +Questo ultimo esempio vuole infine dare una descrizione della istruzione di JMPSUB.
 +
 +**PROGRAMMA 10**
 +
 +^ Passo ^ Istruzione ^ Argomenti     ^ Commenti ^
 +|  1    | VELX%      | 50            | Imposta la velocità dell'asse X al 50% |
 +|  2    | VELY%      | 50            | Imposta la velocità dell'asse Y al 50% |
 +|  3    | VELXYI     | 60000         | Imposta la velocità per movimenti interpolati a 60000 |
 +|  4    | WAITSXY    |               | Abilita attesa posizionamenti |
 +|  5    | JMPSUB     | 12            | Salta al programma 12 |
 +|  6    | GOTO       | 4             | Salta al passo 4 |
 +
 +\\
 +
 +**PROGRAMMA 11**
 +
 +^ Passo ^ Istruzione ^ Argomenti     ^ Commenti ^
 +|  1    | NOWAITSXY                | Disabilita attesa posizionamenti |
 +|  2    | JMPSUB      | 13           | Salta al programma 13 |
 +
 +\\
 +
 +**PROGRAMMA 12**
 +
 +^ Passo ^ Istruzione ^ Argomenti     ^ Commenti ^
 +|  1    | XYI         | 0.0,     0.0 | Start di X e Y a 0, 0 in modo interpolato |
 +|  2    | X           | 1000.0       | Start di X a 1000 |
 +|  3    | Y           | 1000.0       | Start di Y a 1000 |
 +|  4    | JMPSUB      | 11           | Salta al programma 11 |
 +
 +\\
 +
 +**PROGRAMMA 13**
 +
 +^ Passo ^ Istruzione ^ Argomenti     ^ Commenti ^
 +|  1    | X           | 5000.0       | Start di X a 5000 |
 +|  2    | WAITX>      | 3000.0       | Attesa quota di X > 3000 |
 +|  3    | Y           | 5000.0       | Start di Y a 5000 |
 +|  4    | WAITY                    | Attende che Y sia arrivato a 5000 |
 +
 +\\
 +
 +Il programma 10 è quello principale e viene utilizzato per inizializzare le velocità e per l'attivazione dell'attesa posizionamenti.
 +\\ \\ Il programma 10 va poi a chiamare il programma 12, il quale esegue una serie di posizionamenti con attesa.
 +\\ \\ Il programma 12 va poi a chiamare il programma 11, il quale disattiva l'attesa posizionamenti.
 +\\ \\ Il programma 11 va poi a chiamare il programma 13, il quale esegue dei posizionamenti senza attesa e attende che Y sia fermo.
 +\\ \\ 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.
 +
 +\\
 <html><pagebreak /></html> <html><pagebreak /></html>
  
  • Ultima modifica: 2021/06/11 15:30