Questo blocco funzione consente di controllare un asse da un algoritmo personalizzato che calcola posizione, velocità e accelerazione dell'asse impostate ciclicamente.
Il blocco funzione creato per programmare un profilo di movimento deve estendere FB_CustomJobBase della libreria MotionInterface. Il blocco funzione viene quindi fornito all'ingresso CustomJob.
Ingresso |
Tipo di dati |
Descrizione |
---|---|---|
Master |
Axis_Ref |
Riferimento all'asse per cui deve essere eseguito il blocco funzione. Può essere lasciato non assegnato se il job personalizzato (fornito all'ingresso CustomJob) non utilizza un asse master. Se viene assegnato un asse, il callback al blocco funzione utente per definire il profilo di movimento ottiene i valori di movimento dell'asse master. In alternativa, i valori di movimento dell'asse master vengono forniti come zero. |
Axis |
Axis_Ref |
Riferimento all'asse per cui deve essere eseguito il blocco funzione. |
Execute |
BOOL |
Campo valori: FALSE, TRUE. Valore predefinito: FALSE. Un fronte di salita dell'ingresso Execute avvia il blocco funzione. Il blocco funzione continua a essere eseguito e l'uscita Busy è impostata a TRUE. È possibile riavviare questo blocco funzione durante l'esecuzione. I valori di destinazione vengono sovrascritti dai nuovi valori nel momento in cui si verifica il fronte di salita. |
BufferMode |
I valori di destinazione (posizione, velocità, accelerazione) dell'asse vengono sovrascritti dai nuovi valori nel ciclo del task di movimento quando il blocco funzione diventa attivo sull'asse. Valore predefinito: Aborting Modo buffer. Valori possibili:
Per una descrizione dei valori, vedere MC_Buffer_Mode. |
|
OperationMode |
Modo operativo per blocco funzione Valore predefinito: Position |
|
CustomJob |
MOIN.FB_CustomJobBase |
Un'istanza di un tipo di blocco funzione creato dall'utente che deve essere derivata da FB_CustomJobBase. L'istanza del blocco funzione può essere configurata con parametri aggiuntivi (ad esempio,. posizione di destinazione, velocità, accelerazione, jerk, ecc.) in base ai requisiti dell'algoritmo utilizzato dal job personalizzato. Sostituire i metodi seguenti:
Non sostituire gli altri metodi di questo blocco funzione. |
Uscita |
Tipo di dati |
Descrizione |
---|---|---|
InSteadyState |
BOOL |
Campo valori: FALSE, TRUE. Valore predefinito: FALSE, come segnalato dal job personalizzato
|
Busy |
BOOL |
Campo valori: FALSE, TRUE. Valore predefinito: FALSE, come segnalato dal job personalizzato
|
Active |
BOOL |
Campo valori: FALSE, TRUE. Valore predefinito: FALSE.
|
CommandAborted |
BOOL |
Campo valori: FALSE, TRUE. Valore predefinito: FALSE.
|
Error |
BOOL |
Campo valori: FALSE, TRUE. Valore predefinito: FALSE.
|
ErrorID |
Questa enumerazione fornisce informazioni diagnostiche. |
Se si utilizza il blocco funzione MC_SetPosition con un blocco funzione MC_CustomJob, si possono verificare salti di posizione se non si considera la posizione di offset nel calcolo della posizione.
AVVERTIMENTO | |
---|---|
Per evitare potenziali salti di posizione, basare il calcolo della posizione dell'asse per il ciclo successivo sull'ultima posizione fisica (secondo Axis.lrPosition) dell'asse, oppure verificare che la posizione di offset sia considerata correttamente nel calcolo della posizione.
Se si utilizza il blocco funzione MC_CustomJob con un asse modulo, la posizione generata tramite il metodo CalculateMovement viene corretta tramite modulo se si verifica un overflow del modulo. Questa correzione si basa sul salvataggio dell'offset modulo in MC_CustomJob. Ciò implica che se il calcolo è basato sull'ultima posizione di riferimento (come per Axis.lrPosition), la posizione per il ciclo successivo deriva della grandezza del salto modulo.
AVVERTIMENTO | |
---|---|
Se viene fornito un asse per l'ingresso Master, i nuovi valori di destinazione o di riferimento per l'asse master per il ciclo in tempo reale in esecuzione vengono calcolati prima dell'attivazione di MC_CustomJob. Pertanto, l'implementazione del job personalizzato ottiene valori aggiornati (appena calcolati dal ciclo in tempo reale) dall'asse master quando viene chiamato a calcolare i propri valori per l'asse subordinato.
Se il modo operativo è impostato su Velocity tramite l'ingresso OperationMode e se l'azionamento non è in grado di funzionare nel modo operativo Cyclic Synchronous Velocity, il blocco funzione MC_CustomJob rileva un errore. L'asse non viene interessato.