Il tipo di dati Axis_Ref è un alias dell'interfaccia IF_Axis della libreria MotionInterface. Per informazioni dettagliate, vedere la libreria MotionInterface.
Il tipo di dati MC_AxisDirection è un alias dell'enumerazione ET_AxisDirection della libreria MotionInterface. Per informazioni dettagliate, vedere la libreria MotionInterface.
Il tipo dati definisce il metodo per l'avvio di un movimento nuovo/nel buffer rispetto al movimento continuo.
Nome |
Valore |
Descrizione |
---|---|---|
Aborting |
0 |
Il movimento continuo viene interrotto e il nuovo movimento viene eseguito immediatamente nel successivo ciclo in tempo reale possibile. |
Buffered |
1 |
Il movimento nuovo/nel buffer viene eseguito non appena il movimento continuo raggiunge lo stato fisso, corrispondente all'uscita del blocco funzione Done, InVelocity, InSync o EndOfProfile, in base al movimento continuo. Il job nel buffer si attiva immediatamente nel ciclo in tempo reale quando il job precedente raggiunge lo stato fisso. Non attende che le uscite diventino TRUE poi nel successivo ciclo del task dell'applicazione. |
BlendingLow(1) |
2 |
Il movimento nuovo/nel buffer viene eseguito non appena il movimento continuo termina, ma senza fermo nel mezzo. La transizione avviene con il valore delle due velocità più basso del movimento continuo e del movimento nuovo/nel buffer. |
BlendingPrevious(1) |
3 |
Il movimento nuovo/nel buffer viene eseguito non appena il movimento continuo termina, ma senza fermo nel mezzo. La transizione avviene con il valore di velocità del movimento continuo. |
BlendingNext(1) |
4 |
Il movimento nuovo/nel buffer viene eseguito non appena il movimento continuo termina, ma senza fermo nel mezzo. La transizione avviene con il valore di velocità del movimento nuovo/nel buffer. |
BlendingHigh(1) |
5 |
Il movimento nuovo/nel buffer viene eseguito non appena il movimento continuo termina, ma senza fermo nel mezzo. La transizione avviene con il valore delle due velocità più alto del movimento continuo e del movimento nuovo/nel buffer. |
StartAtMasterposition(1) |
6 |
Fornito per buffering di una camma da avviare a una posizione specificata del master tramite MC_CamIn. |
(1) Solo per blocchi funzione MC_MoveVelocity, MC_MoveAbsolute, MC_MoveAdditive e MC_MoveRelative |
La tabella seguente fornisce dettagli sul funzionamento del buffering (MC_BufferMode.Buffered) per diversi blocchi funzione:
Blocco funzione |
Il movimento del blocco funzione può essere specificato come movimento bufferizzato |
Il movimento del blocco funzione può essere seguito da un movimento bufferizzato |
Condizione affinché il comando in buffer diventi attivo |
---|---|---|---|
MC_Power |
No |
No(1) |
- MC_Power non è un blocco funzione di movimento. |
MC_MoveVelocity |
Sì |
Sì |
InVelocity |
MC_MoveAbsolute |
Sì |
Sì |
Done |
MC_MoveAdditive |
Sì |
Sì |
Done |
MC_MoveRelative |
Sì |
Sì |
Done |
MC_Home |
No |
No |
Nessuno |
MC_Stop |
No |
Sì |
Done e ingresso Execute impostati a FALSE |
MC_Halt |
Sì |
Sì |
Done |
MC_CamIn |
Sì |
Sì(1) |
EndOfProfile indipendentemente dall'impostazione dell'ingresso Periodic a TRUE o FALSE |
MC_GearIn |
No |
Sì |
InGear |
MC_PhasingAbsolute |
No |
No |
- |
MC_MoveSuperImposed |
No |
No |
- |
MC_CustomJob |
Sì |
Sì |
InSteadyState |
(1) Differisce dalle specifiche secondo PLCopen Motion Control Part 1, Version 2.0. |
Il controller esegue il task dell'applicazione utente (in cui vengono chiamati i blocchi funzione di controllo movimento) in un task separato dal processo di movimento in tempo reale (in cui sono calcolati i valori di destinazione e riferimento ciclici, ad esempio). Per avviare un blocco funzione nello stesso ciclo Sercos in cui il blocco funzione attivo raggiunge lo stato fisso (Done, inVelocity, EndOfProfile, InGear), il blocco funzione deve essere bufferizzato in anticipo. Se si attiva l'avvio (Execute) del successivo blocco funzione tramite, ad esempio, il segnale EndOfProfile del blocco funzione precedente invece di inserirlo nel buffer, può verificarsi uno o più cicli di ritardo in cui nessun blocco funzione è attivo e l'asse rimane fermo. Per informazioni, vedere Concetto di task.
Il tipo di dati MC_CamSwitch è un alias della struttura ST_CamSwitch della libreria MotionInterface. Per informazioni dettagliate, vedere la libreria MotionInterface.
Il tipo di dati MC_CamSwitchMode è un alias dell'enumerazione ET_CamSwitchMode della libreria MotionInterface. Per informazioni dettagliate, vedere la libreria MotionInterface.
Il tipo di dati MC_CamSwitch_Ref è un alias della struttura ST_CamSwitch_Ref della libreria MotionInterface. Per informazioni dettagliate, vedere la libreria MotionInterface.
Il tipo di dati MC_CAM_ID è un alias della struttura ST_MultiCam della libreria CommonMotionTypes. Per informazioni dettagliate, vedere la libreria CommonMotionTypes.
Il tipo di dati definisce la direzione di movimento.
Per MC_MoveVelocity e MC_MoveRelative, la direzione del movimento si inverte (invertendo il segno della velocità o distanza). Ciò è indipendente dal tipo di asse (modulo o lineare).
Per MC_MoveAbsolute e la funzionalità di salita in rampa di MC_CamIn, l'ingresso di direzione specifica la direzione di approccio della posizione di destinazione assoluta. Per questi blocchi funzione, la direzione viene considerata solo per assi modulo. È ignorata per assi lineari (in quanto le posizioni assolute sugli assi lineari vengono raggiunte nella direzione possibile solo matematicamente).
Nome |
Valore |
Descrizione |
---|---|---|
PositiveDirection |
0 |
Senso di movimento positivo |
NegativeDirection |
1 |
Senso di movimento negativo |
ShortestWay(1) |
2 |
La direzione di movimento dipende dalla distanza più breve alla posizione di destinazione risultante dalla direzione positiva o negativa del movimento. |
(1) Solo per blocchi funzione MC_MoveAbsolute e MC_CamIn. |
Il tipo di dati MC_Interpolation_Mode è un alias dell'enumerazione ET_InterpolationMode della libreria MotionInterface. Per informazioni dettagliate, vedere la libreria MotionInterface.
Il tipo di dati MC_Interpolation_Parameter è un alias della struttura ST_Interpolation_Parameter della libreria MotionInterface. Per informazioni dettagliate, vedere la libreria MotionInterface.
Nome |
Valore |
Descrizione |
---|---|---|
Absolute |
0 |
La camma inizia alla coordinata X uguale alla posizione dell'asse master assoluta al momento di inizio. |
Relative |
1 |
La camma inizia alla coordinata X uguale alla X del primo punto camma, che si presume sia correlato alla posizione dell'asse master al momento di inizio. |
Il tipo dati MC_OperationMode specifica il modo operativo per il blocco funzione MC_MoveVelocity tramite l'ingresso OperationMode.
Nome |
Valore |
Descrizione |
---|---|---|
Position |
0 |
Controllo velocità con il loop di controllo posizione attivo nell'azionamento (Cyclic Synchronous Position, Posizione di sincronizzazione ciclica). |
Velocity |
1 |
Cyclic Synchronous Velocity (Velocità di sincronizzazione ciclica), controllo velocità puro. |
Il valore Position esegue un movimento alla velocità impostata all'ingresso Velocity del blocco funzione MC_MoveVelocity. In questo modo operativo, il loop di controllo posizione dell'azionamento resta attivo (Cyclic Synchronous Position). Modo operativo predefinito del blocco funzione MC_MoveVelocity.
Il valore Velocity attiva il modo operativo Cyclic Synchronous Velocity. In questo modo operativo, il loop di controllo posizione dell'azionamento non è attivo (controllo velocità puro).
Il modo operativo Cyclic Synchronous Velocity viene avviato quando il valore all'ingresso OperationMode del blocco funzione MC_MoveVelocity è Velocity e il valore all'ingresso Execute cambia da FALSE a TRUE.
La casella di controllo VelocityOperationMode nella scheda Configurazione delle funzionalità deve essere selezionata per attivare il modo operativo Cyclic Synchronous Velocity.
L'esecuzione di MC_MoveVelocity con il modo operativo Cyclic Synchronous Velocity per un asse il cui azionamento non supporta questo modo operativo o per cui non è stato attivato determina un errore rilevato di MC_MoveVelocity senza influire sul comportamento dell'asse.
Se il modo operativo attivo è Cyclic Synchronous Velocity e vengono eseguiti i blocchi funzione MC_Stop o MC_Halt oppure se viene rilevato un errore determinando una transizione allo stato operativo ErrorStop, il modo operativo Cyclic Synchronous Velocity rimane attivo.
Se si tenta di avviare un blocco funzione di movimento (ad esempio, MC_MoveAbsolute) mentre MC_MoveVelocity viene eseguito nel modo operativo Cyclic Synchronous Velocity, tale blocco funzione di movimento non viene eseguito e l'uscita Error viene impostata su TRUE. MC_MoveVelocity continua l'esecuzione nel modo operativo Cyclic Synchronous Velocity.
Per passare dal modo operativo Cyclic Synchronous Velocity a un altro, arrestare l'asse con il blocco funzione MC_Stop o MC_Halt. L'esecuzione di un blocco funzione qualsiasi diverso da MC_MoveVelocity determina il passaggio del modo operativo da Cyclic Synchronous Velocity al modo operativo utilizzato da tale blocco funzione. Ad esempio, se si desidera passare dal modo operativo Cyclic Synchronous Velocity al modo operativo Cyclic Synchronous Position senza avviare un movimento, è possibile eseguire il blocco funzione MC_MoveRelative con una distanza di 0. Se si desidera cambiare il modo operativo Cyclic Synchronous Velocity senza eseguire un blocco funzione di movimento, disattivare e riattivare lo stadio finale dell'azionamento tramite il blocco funzione MC_Power.
Se il modo operativo richiesto non è confermato dall'azionamento entro 30 cicli Sercos, viene rilevato un errore (uscita Error del blocco funzione corrispondente impostata a TRUE).
Nome |
Valore |
Descrizione |
---|---|---|
Absolute |
0 |
Per avviare la camma, la posizione dell'asse slave è impostata direttamente al primo valore Y calcolato. La posizione dell'asse slave viene calcolata sulla base della definizione di camma e del “master visto dallo slave”. Rispetto alle modalità di avvio slave Relative e RampIn, non vi sono offset e movimenti sovraimposti. Accelerazione e velocità di riferimento sono calcolate in base alla definizione di camma. In caso di differenza tra la posizione dello slave e la relativa posizione di avvio calcolata (valore Y) per la camma e se non è possibile raggiungere tale posizione di avvio in un task di scansione, viene rilevato un errore. Tuttavia, se è possibile raggiungere questa posizione di avvio malgrado la differenza di posizione, tale movimento può avvenire nella forma di un improvviso salto di posizione. |
Relative |
1 |
La camma inizia alla coordinata Y definita da f(X start), dove f() è la funzione camma e l'avvio X è determinato dalla modalità di avvio del master (MC_Master_Start_Mode). Tale Y è correlato alla posizione dell'asse slave corrente. |
RampIn |
2 |
Si presume che la posizione dell'asse slave assoluta sia uguale alla coordinata Y della camma, affinché la camma sia sincronizzata. All'inizio, la camma si avvia come relativa allo slave, ossia f(X start) è correlato alla posizione assoluta dell'asse slave quando si avvia la camma. Viene quindi eseguito un movimento di salita in rampa che sposta l'asse dello slave per allinearsi al sistema di coordinate della posizione dell'asse con il sistema di coordinate di Y. |
AVVERTIMENTO | |
---|---|
Il tipo di dati MC_Track_Ref è un alias della struttura ST_Track_Ref della libreria MotionInterface. Per informazioni dettagliate, vedere la libreria MotionInterface.
MC_Trigger_Ref è un alias di DAL.IF_Trigger. Si tratta di un tipo di ingresso per MC_TouchProbe e MC_AbortTrigger per collegare i blocchi funzione ai corrispondenti ingressi TouchProbe, analogo a Axis_Ref.
L'interfaccia MC_Trigger_Ref/DAL.IF_Trigger fornisce una proprietà CaptureEdge di tipo UINT che può avere un valore da 0 a 2.
Nome |
Valore |
Descrizione |
---|---|---|
FallingEdge |
0 |
Fronte di discesa |
RisingEdge |
1 |
Fronte di salita |
BothEdges |
2 |
Entrambi i fronti di salita e discesa |
VAR
fb_MC_TriggerRef: PLCO.MC_Trigger_Ref;
fb_MC_Touchprobe : PLCO.MC_TouchProbe;
END_VAR
fb_MC_TriggerRef := DRV_Lexium32S.triggerCap1;
fb_MC_TriggerRef.CaptureEdge := MOIN.ET_CaptureEdge.RisingEdge;
fb_MC_Touchprobe(Axis := DRV_Lexium32S.Axis, ifTrigger := fb_MC_TriggerRef);