L'asse slave (inseguitore) viene gestito essenzialmente tramite 4 fasi successive (vedere stru_follow per la descrizione delle keyword):
•M_POSITIONING: l'asse slave si porta alla posizione qParkSlave, utilizzando i parametri di velocità velMaxSlave e l'accelerazione accMaxSlave.
•M_WAITING: l'asse rimane fermo; vengono eseguiti i calcoli per verificare se è arrivato il momento di partire in inseguimento. In questa fase vengono effettuati i controlli di congruenza che consentono la partenza dell'inseguimento (direzione master e velocità master, quota qSyncMaster rispetto alla quota master attuale, quota qSyncSlave rispetto alla quota slave attuale). Viene inoltre verificato che l'accelerazione asse slave sia sufficiente. Viene dato codice M_LOW_ACCELERATION in caso contrario.
•M_FOLLOWING: l'asse si muove nella direzione specificata dal parametro slaveDirection, eseguendo un movimento ad accelerazione costante calcolato per raggiungere la velocità dell'asse master in corrispondenza della quota slave qSyncSlave e della quota master qSyncMaster. L'inseguimento tiene conto anche di eventuali variazioni di velocità del master durante il ciclo.
•M_REACHED: l'asse slave si mantiene agganciato al master, in base alla sua velocità corrente, fino a che sia stata raggiunta o superata la quota slave qSyncOut. A questo punto vengono incrementate di masterCycle la grandezza qSyncMaster e di slaveCycle le grandezze qPark, qSyncSlave, qSyncOut per predisporsi al ciclo successivo. La variabile fase viene impostata a M_POSITIONING e il ciclo ricomincia.
Il parametro kSlaveMaster risulta molto utile in quei casi in cui l'unità di misura dell'asse slave è differente da quella dell'asse master (caso tipico un master espresso in mm e uno slave in gradi). Specificando il fattore K esistente fra i due assi è possibile eseguire l'inseguimento come se le grandezze fossero omogenee fra loro.
Nel caso si desideri realizzare un inseguimento ciclico con assi monodirezionali (es. master convogliatore, slave ganascia di taglio a due pale) occorre specificare un valore di passo per entrambi gli assi (nell'esempio, MasterCycle = lunghezza prodotto, SlaveCycle = 180 gradi). Questi valori vengono utilizzati dalla funzione per incrementare automaticamente le quote di sincronismo (master e slave), la quota di fine inseguimento e la quota di attesa. Gli incrementi avvengono tutti insieme al momento dell'abbandono della fase di sincronismo.
Se l'asse slave è invece dotato di moto alternativo (es. asse di taglio mosso da vite senza fine) occorre specificare per esso SlaveCycle = 0. In questo modo, alla fine del ciclo, l'asse slave ritorna alla posizione qPark (che è la medesima per tutti i cicli) mentre il prossimo sincronismo sull'asse master (qSyncMaster) viene incrementato.
Se si desidera effettuare un inseguimento "one shot", cioè senza ripetizione automatica, è sufficiente specificare MasterCycle = 0. In questo modo, una volta terminato il primo ciclo di inseguimento, non si ripresentano le condizioni per partire con un nuovo ciclo fino a quando l'utente non inserisce direttamente un valore aggiornato di qSyncMaster.
La prima volta che la funzione viene chiamata, è necessario aver preventivamente caricato nella struttura stru_follow una serie di valori opportuni. Anche il parametro status deve essere stato inizializzato a M_POSITIONING (posizionamento iniziale). Questo parametro può essere utilmente consultato da parte del software applicativo R3 durante lo svolgimento del ciclo. È compito del software applicativo garantire che al momento della chiamata della funzione le tabelle contengano dati coerenti.
|