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:15] – [8.3 Attese di eventi] 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 452: | Linea 461: | ||
| {{: | | {{: | ||
| {{: | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
\\ | \\ | ||
- | ===== - Diagnostica delle uscite analogiche ===== | + | < |
- | Premendo il tasto relativo alle **uscite analogiche** si accede alla pagina. | + | ===== - Gestione sequenza passi ===== |
- | {{: | + | ^ Istruzione ^ T ^ Argomento/i ^ Descrizione ^ |
+ | | {{: | ||
+ | | {{:strumenti: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | \\ | ||
+ | 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. | ||
+ | \\ | ||
+ | < | ||
- | L' | + | ===== - Gestione delle variabili ===== |
- | Per tornare | + | ^ Istruzione ^ T ^ Argomento/i ^ Descrizione ^ |
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | | {{: | ||
+ | Per ogni asse sono disponibili 100 “registri”, | ||
+ | |||
+ | \\ Per assegnare un valore ad un registro si utilizzano le istruzioni: | ||
+ | * **ASSQX | ||
+ | * **ASSQY | ||
+ | \\ Per assegnare un valore ad una variabile locale si utilizza l’istruzione: | ||
+ | * **ASSV | ||
+ | \\ | ||
+ | \\ | ||
< | < | ||
- | ==== - Diagnostica rete CAN ==== | ||
- | Premendo il tasto relativo alle **informazioni | + | ====== - Esempi |
- | {{: | + | ===== - Esempio 1: Generico ===== |
- | Per tornare al menu di diagnostica premere sul tasto {{: | + | 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 | ||
+ | \\ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | \\ | ||
< | < | ||
- | ====== - Allarmi ====== | + | ===== - Esempio 2: Registri |
- | Per accedere alla sezione degli allarmi: | + | Questo esempio esegue sempre dei posizionamenti, |
- | | + | ^ Passo ^ Istruzione ^ Argomenti |
+ | | | ||
+ | | 2 | ASSQX | 1, 4000.0 | RX[1] = 4000 , registro delle X con indice 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 | | ||
+ | \\ | ||
- | 2. oppure premere | + | Il vantaggio di usare i registri, è dato dal fatto che è possibile compilare una serie di quote obiettivo al loro interno e scorrere queste attraverso |
- | 3. accedere agli allarmi con il tasto {{: | + | \\ |
+ | < | ||
- | {{: | + | ===== - Esempio 3: Attesa posizionamenti ===== |
- | ^Messaggio^Causa| | + | In questo esempio viene riproposto il funzionamento delle attese |
- | |**FOLL - errore di inseguimento**|Rilevato un errore di inseguimento superiore alla soglia permessa. | | + | |
- | |**DATA - errore dati asse**|Uno o più parametri dell' | + | |
- | |**SYNC - sincronismo camma**|L' | + | |
- | |**CANBUS - rmc disconnesso**|Uno | + | |
- | |**CAM - camma rotta**|L' | + | |
- | |**PMS - pms rotto**|L' | + | |
- | |**TOLL - Asse fuori tolleranza**|Concluso un posizionamento fuori tolleranza. | | + | |
- | |**TEST - Errore con encoder test**|Differenza tra l' | + | |
- | |**ALGR - Errore dell' | + | |
- | Sulla barra laterale viene indicato il numero degli allarmi attivi. | + | ^ 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' | ||
- | ===== - Storico allarmi ===== | ||
\\ | \\ | ||
- | In questa pagina è visualizzato lo storico degli ultimi 200 allarmi intervenuti. | + | < |
- | Per ogni allarme è indicata | + | |
+ | ===== - Esempio 4: JMPSUB ===== | ||
+ | |||
+ | Questo ultimo esempio vuole infine dare una descrizione della istruzione di JMPSUB. | ||
+ | |||
+ | **PROGRAMMA 10** | ||
+ | |||
+ | ^ Passo ^ Istruzione ^ Argomenti | ||
+ | | 1 | VELX% | 50 | Imposta | ||
+ | | 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. |
+ | \\ | ||
< | < | ||