MC_CamIn

Descrizione funzionale

Questo blocco funzione attiva l'accoppiamento di un asse master e di un asse subordinato con il profilo di una camma elettronica specificato in una tabella camma.

La libreria supporta i seguenti tipi di camma (leggi di movimento) tramite la libreria CommonMotionTypes (vedere ST_MultiCam e ET_CamType nella guida della libreria CommonMotionTypes per informazioni):

  • Linea retta

  • Seno semplice

  • Polinomio generico di quinto grado

  • Polinomio standard di quinto grado

ST_MultiCam è la stessa struttura dati utilizzata da PacDrive3 e quindi può essere creata con lo stesso editor camma.

 AVVERTIMENTO
FUNZIONAMENTO IMPREVISTO DELL'APPARECCHIATURA
Verificare la posizione fisica dell'asse subordinato all'inizio della camma e verificare che corrisponda alla posizione nella definizione della camma.
Il mancato rispetto di queste istruzioni può provocare morte, gravi infortuni o danni alle apparecchiature.

Nel caso della modalità di avvio di un asse subordinato assoluto, la commutazione tra due camme con alcune combinazioni di scalatura asse subordinato e master tramite gli ingressi MasterScaling e SlaveScaling può provocare salti nella posizione dell'asse subordinato se non viene impostato un offset appropriato della posizione dell'asse subordinato nel punto di commutazione.

 AVVERTIMENTO
FUNZIONAMENTO IMPREVISTO DELL'APPARECCHIATURA
Verificare di aver impostato l'offset corretto della posizione dell'asse subordinato se si commuta tra due camme in modalità di avvio asse subordinato assoluto e si utilizza la scalatura asse subordinato e master tramite gli ingressi MasterScaling e SlaveScaling.
Il mancato rispetto di queste istruzioni può provocare morte, gravi infortuni o danni alle apparecchiature.
NOTA: L'area di lavoro totale dell'asse dipende dalla sua parametrizzazione. Per evitare danni meccanici a causa del superamento di un'area di lavoro limitata definita, è buona norma limitare il movimento incorporando finecorsa nel progetto per arrestare l'asse, se necessario.

Meccanismo di salita in rampa

Il blocco funzione fornisce un meccanismo di salita in rampa. Il meccanismo di salita in rampa viene attivato impostando l'ingresso SlaveStartMode su RampIn e configurato tramite gli ingressi VelocityOffsetRampIn, AccelerationOffsetRampIn, DecelerationOffsetRampIn e JerkOffsetRampIn. La direzione di salita in rampa di un asse modulo può essere impostata tramite l'ingresso RampInDirection.

Camma interpolata

Il blocco funzione consente di implementare le camme interpolate. Sono disponibili quattro tipi di camme interpolate:

  • Interpolazione lineare

  • Interpolazione con legge camma Poly5

  • Interpolazione lineare non equidistante

  • Interpolazione cubica

La camma viene interpolata da un array di punti camma. Per utilizzare una camma interpolata, creare un array nell'applicazione con almeno 3 punti e fino a 10000 punti.

Interpolazione lineare:

L'array descrive la funzione della camma (Y = f(X)). I valori specificati per l'array sono le coordinate Y dei punti camma. Tali valori Y sono distribuiti uniformemente lungo l'asse X (ossia le coordinate X sono determinate dal blocco funzione). I valori dell'array sono assegnati in ordine crescente ai singoli punti da sinistra a destra, a partire dall'indice array più basso come il valore X più basso.

Interpolazione con legge camma Poly5:

L'array descrive la funzione della camma in termini di posizione del master (X), posizione dell'asse subordinato (Y), velocità al punto camma (V, corrisponde alla pendenza) e accelerazione al punto camma (A, corrisponde alla curvatura). Utilizzare valori crescenti strettamente monotoni per X.

Interpolazione lineare non equidistante:

L'interpolazione lineare non equidistante consente di definire una camma con punti aventi diverse distanze di coordinata X tra due punti consecutivi. Utilizzare valori crescenti strettamente monotoni per X.

Interpolazione cubica:

La modalità di interpolazione cubica consente di definire punti di interpolazione non equidistanti utilizzati per l'interpolazione con spline cubiche. I punti di interpolazione equidistanti possono essere specificati definendo esplicitamente i valori X e Y. Utilizzare valori crescenti strettamente monotonici per X. La spline cubica naturale standard viene utilizzata per un massimo di 100 punti di interpolazione (la curvatura ai punti limite è uguale a zero). Questo algoritmo precalcolato fornisce una curvatura continua. In caso di più di 100 punti di interpolazione, si utilizza l'interpolazione della spline cubica di Hermite (nessuna curvatura continua). I precalcoli non sono richiesti.

Per avviare una camma interpolata, impostare l'ingresso InterpolationPoints all'indirizzo dell'array dove sono memorizzati i punti camma. Se l'ingresso InterpolationPoints non è uguale a zero su un fronte positivo dell'ingresso Execute, il blocco funzione MC_CamIn avvia una camma interpolata parametrizzata tramite l'ingresso InterpolationParameter. I dati forniti tramite l'ingresso CamTableID vengono ignorati. Se l'ingresso InterpolationPoints è uguale a zero su un fronte positivo dell'ingresso Execute, il blocco funzione avvia la camma e ignora i dati forniti tramite l'ingresso InterpolationParameter.

Il tipo di dati MC_Interpolation_Parameter è utilizzato per parametrizzare la camma interpolata. È un alias della struttura ST_Interpolation_Parameter della libreria MotionInterface. Parametrizzazione:

  • udiNumCamPoints

    Numero di voci dell'array contenenti punti camma. Se l'array è maggiore della quantità di punti camma compilati, gli elementi aggiuntivi dell'array vengono ignorati.

  • lrMinMasterPosition e lrMaxMasterPosition

    Per un array per interpolazione lineare, l’intervallo di posizioni del master viene impostato tramite lrMinMasterPosition e lrMaxMasterPosition. Il punto camma nell'indice array inferiore corrisponde a lrMinMasterPosition. Il punto camma nell'indice array impostato tramite udiNumCamPoints corrisponde a lrMaxMasterPosition. Gli altri punti camma sono distribuiti uniformemente tra queste posizioni master. lrMinMasterPosition e lrMaxMasterPosition vengono ignorati per l'interpolazione Poly5 e l'interpolazione cubica.

  • etInterpolationMode

    Questa enumerazione specifica il tipo di interpolazione.

    • YArrayLinear (la camma è una linea retta tra ciascun punto camma)

    • XYVAArrayPoly5 (polinomio di quinto grado)

    • XYArrayLinear (la camma è una linea retta tra ciascun punto camma, il valore X può essere non equidistante)

    • XYArrayCubic (interpolazione cubica)

 AVVERTIMENTO
FUNZIONAMENTO IMPREVISTO DELL'APPARECCHIATURA
  • Verificare che il numero di punti di interpolazione specificato per l'ingresso InterpolationPoints abbia lo stesso valore specificato per udiNumCamPoints della struttura ST_InterpolationParameter utilizzata per l'ingresso InterpolationParameter se si utilizza una camma interpolata.
  • Verificare che i valori di X delle strutture ST_InterpolationPointXYVA e ST_InterpolationPointXY aumentino strettamente in modo monotonico.
  • Verificare che i dati nell'array dei punti camma non vengano modificati durante l'esecuzione o il buffering della camma.
  • Verificare che non vengano attivate modifiche online durante l'esecuzione della camma.
  • Verificare che il potenziale superamento della posizione dopo la fase sincrona degli assi non provochi movimenti oltre il campo di movimento consentito, ad esempio incorporando finecorsa hardware nel progetto della macchina.
Il mancato rispetto di queste istruzioni può provocare morte, gravi infortuni o danni alle apparecchiature.

Per informazioni sulla parametrizzazione di una camma interpolata tramite ST_InterpolationParameter, consultare la guida della libreria MotionInterface.

Avvio di una camma a una posizione specifica del master

L'ingresso MasterStartPosition viene fornito per avviare una camma nella posizione specificata del master. Questo ingresso viene ignorato a meno che il modo buffer non sia impostato su StartAtMasterPosition mediante MC_BufferMode.

Se viene avviato MC_CamIn con il modo buffer StartAtMasterPosition, l'asse subordinato deve eseguire un'altra camma. In caso diverso, MC_CamIn rileva un errore senza interferire con il movimento dell'asse subordinato. Il valore fornito tramite l'ingresso MasterStartPosition deve essere compreso nell'intervallo di MasterAsSeenBySlave definito dalla camma correntemente in esecuzione. In caso diverso, MC_CamIn rileva un errore senza interferire con il movimento dell'asse subordinato.

Se è già presente un altro job nel buffer dietro la camma correntemente in esecuzione quando si avvia MC_CamIn con il modo buffer StartAtMasterPosition (ingresso Execute impostatoTRUE a), il job nel buffer viene impostato su CommandAborted come se il blocco funzione con il modo buffer StartAtMasterPosition avesse interrotto la camma in esecuzione con il modo buffer Aborting.

Comportamento insieme all'uscita EndOfProfile:
  • Se la camma in esecuzione termina l'ultimo segmento (uscita EndOfProfile impostata su TRUE) prima che venga raggiunta la posizione MasterStartPosition di un blocco funzione con il modo buffer StartAtMasterPosition, la camma in esecuzione si comporta come se non fosse avviato alcun altro comando.

  • Se la posizione MasterStartPosition di un blocco funzione con il modo buffer StartAtMasterPosition viene raggiunta prima che la camma in esecuzione finisca l’ultimo segmento, la camma in esecuzione si comporta come se fosse stata interrotta dal blocco funzione bufferizzato (CommandAborted è impostato su TRUE, EndOfProfile rimane FALSE).

Comportamento di StartAtMasterPosition con camma periodica in esecuzione:
  • Se un blocco funzione MC_CamIn con il modo buffer StartAtMasterPosition viene attivato durante l'esecuzione di una camma periodica in esecuzione e se la camma in esecuzione raggiunge EndOfProfile prima della posizione MasterStartPosition, la camma in esecuzione "ruota" e imposta la sua uscita EndOfProfile su TRUE per un ciclo.

  • Nel ciclo successivo della camma periodica in esecuzione, la posizione MasterStartPosition viene raggiunta prima che la camma periodica in esecuzione raggiunga EndOfProfile, ossia quando si avvia la nuova camma con il modo buffer StartAtMasterPosition.

La figura seguente illustra questo comportamento:

Legenda:

  • MSP = Posizione MasterStartPosition

  • SAMP = MC_CamIn con modo buffer StartAtMasterPosition attivato

  • EOP = Posizione a EndOfProfile

Comportamento di StartAtMasterPosition con una camma in esecuzione singola:
  • Se un blocco funzione MC_CamIn con il modo buffer StartAtMasterPosition viene attivato durante l'esecuzione di una camma in esecuzione singola e se la camma in esecuzione raggiunge EndOfProfile prima della posizione MasterStartPosition, la camma in esecuzione imposta la sua ’uscita EndOfProfile su TRUE e rimane nella posizione come se non fosse attivata alcuna altra camma.

  • Quando il master "ruota" e viene raggiunta la posizione MasterStartPosition, viene avviato il blocco funzione MC_CamIn con il modo buffer StartAtMasterPosition. CommandAborted è impostato su TRUE, EndOfProfile rimane FALSE.

La figura seguente illustra questo comportamento:

Legenda:

  • MSP = Posizione MasterStartPosition

  • SAMP = MC_CamIn con modo buffer StartAtMasterPosition attivato

  • EOP = Posizione a EndOfProfile

  • MTA = Il master “ruota”

Rappresentazione grafica

Ingressi

Ingresso

Tipo di dati

Descrizione

Master

Axis_Ref

Riferimento all'asse per cui deve essere eseguito il blocco funzione.

Slave

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.

CamTableID

MC_CAM_ID

Identificativo della tabella camma da utilizzare.

Il tipo di dati MC_CAM_ID è un alias di ST_MultiCam della libreria CommonMotionTypes. Per informazioni, consultare la guida della libreria CommonMotionTypes.

BufferMode

MC_Buffer_Mode

Valore predefinito: Aborting

Modo buffer.

Valori possibili:

  • Valore Aborting

  • Valore Buffered

Per una descrizione dei valori, vedere MC_Buffer_Mode.

Periodic

BOOL

Campo valori: FALSE, TRUE.

Valore predefinito: FALSE.

TRUE avvia la modalità periodica per MC_CamIn. Questa modalità ripete continuamente l'esecuzione della camma.

FALSE avvia la camma in modalità single-shot. La posizione dell'asse subordinato del fronte più vicino (primo o ultimo punto camma) viene bloccata se è esterna all'intervallo definito, ossia, l'asse subordinato è fermo (ma ancora nello stato SynchronizedMotion) se la camma è al di fuori dell'intervallo definito.

NOTA: Indipendentemente dal fatto che la camma sia avviata in modalità periodica o single-shot, essa segnala EndOfProfile e un job di movimento bufferizzato (se esiste tale job) si attiva quando si raggiunge EndOfProfile (anche se la camma è definita periodica).

MasterOffset

LREAL

Intervallo valori: -2147483648...2147483647

Valore predefinito: 0

MasterOffset è utilizzato per camme interpolate e camme multiple. Se la camma viene avviata in modalità periodica (ingresso Periodic impostato su TRUE), l'offset viene applicato solo nel primo periodo.

L'offset non è supportato con MasterStartMode Relative.

Calcolo se MC_CamIn viene eseguito con MasterStartMode Absolute, MasterScaling e MasterOffset:

  • stMotionOfMaster.lrPosition = MasterScaling * MasterPosition + MasterOffset

Un offset del master diverso da zero può essere utilizzato solo con il modo buffer Aborting.

Se si utilizza un offset del master diverso da zero, gli assi master e subordinato devono essere disaccoppiati. Questo significa che MC_CamIn non può essere attivo sullo stesso master e sullo stesso asse subordinato quando si cerca di avviare una camma con un offset master.

SlaveOffset

LREAL

Intervallo valori: -2147483648...2147483647

Valore predefinito: 0

Un'analogia meccanica a un offset dell'asse subordinato è una camma saldata con ulteriore spessore costante del livello.

SlaveOffset è utilizzato per camme interpolate e camme multiple. Se la camma viene avviata in modalità periodica (ingresso Periodic impostato su TRUE), l'offset viene applicato solo nel primo periodo.

L'offset non è supportato con SlaveStartMode Relative.

Per un asse modulo, il valore di offset dell'asse subordinato deve essere inferiore al periodo modulo.

MasterScaling

LREAL

Campo valori: un valore LREAL positivo

Valore predefinito: 1

Il fattore MasterScaling consente di calcolare la posizione del master vista dall'asse subordinato moltiplicando la posizione del master (in caso di modalità di avvio assoluto) o l'offset della posizione del master (in caso di modalità di avvio relativo).

SlaveScaling

LREAL

Intervallo valori: -2147483648...2147483647

Valore predefinito: 1

Il fattore SlaveScaling viene applicato moltiplicando la posizione dell'asse subordinato ottenuta dalla camma (in caso di modalità di avvio assoluto) o dall'offset della posizione dell'asse subordinato (in caso di modalità di avvio relativo).

MasterStartMode

MC_Master_Start_Mode

Valore predefinito: Absolute

Valori possibili:

  • Valore Absolute

  • Valore Relative

Per una descrizione dei valori, vedere MC_Master_Start_Mode.

SlaveStartMode

MC_Slave_Start_Mode

Valore predefinito: Relative

Valori possibili:

  • Valore Relative

  • Valore RampIn

  • Valore Absolute

Per una descrizione dei valori, vedere MC_Slave Start_Mode.

RampInDirection

MC_Direction

Direzione della salita in rampa per l'accoppiamento se l'asse subordinato è un asse modulo. La direzione è verso la destinazione assoluta del meccanismo di salita in rampa (dove MC_CamIn viene considerato come InSync) dalla posizione dell'asse subordinato, non il periodo Y del profilo di camma.

Se l'asse subordinato non è un asse modulo, i valori di questo ingresso non hanno alcun effetto.

Valore predefinito: PositiveDirection

Valori possibili:

  • Valore PositiveDirection:

  • Valore NegativeDirection

  • Valore ShortestWay

Per una descrizione dei valori, vedere MC_Direction.

VelocityOffsetRampIn

LREAL

Intervallo valori: -2147483648...2147483647

Valore predefinito: 0

Offset velocità per meccanismo di salita in rampa in unità definite dall'utente.

AccelerationOffsetRampIn

LREAL

Campo valori: un valore LREAL positivo

Valore predefinito: 0

Offset accelerazione per meccanismo di salita in rampa in unità definite dall'utente.

DecelerationOffsetRampIn

LREAL

Campo valori: un valore LREAL positivo

Valore predefinito: 0

Offset decelerazione per meccanismo di salita in rampa in unità definite dall'utente.

JerkOffsetRampIn

LREAL

Intervallo valori: un valore LREAL positivo e zero

  • Valori positivi: limite jerk (in unità/s3) (jerk massimo con cui si modifica l'accelerazione).

  • Zero: limite jerk disattivato. L'accelerazione passa da zero al valore massimo (jerk infinito).

Valore predefinito: 0

InterpolationPoints

POINTER TO BYTE

Indirizzo di memoria di un array con lunghezza da 3 fino a 10.000. Il tipo di array dipende dal valore di etInterpolationMode per l'ingresso InterpolationParameter, ARRAY OF LREAL o ARRAY OF ST_InterpolationPointXYVA.

Intervallo di valori: 0 e 3 ... 10000

Valore predefinito: 0

NOTA: Il valore deve essere uguale a quello udiNumCamPoints di ST_InterpolationParameter utilizzato dall'ingresso InterpolationParameter. Per informazioni, consultare la guida della libreria MotionInterface.

InterpolationParameter

MC_Interpolation_Parameter

Utilizza MC_InterpolationParameter per la parametrizzazione di una camma interpolata. Per informazioni, vedere MC_InterpolationParameter.

MasterStartPosition

LREAL

Intervallo valori: -2147483648...2147483647

Valore predefinito: 0

Posizione del master (visto dall'asse subordinato) di una camma precedente quando diventa attiva una nuova camma.

Questo ingresso viene ignorato, a meno che StartAtMasterPosition sia utilizzato per MC_BufferMode.

Uscite

Uscita

Tipo di dati

Descrizione

InSync

BOOL

Campo valori: FALSE, TRUE.

Valore predefinito: FALSE.

  • FALSE: se gli assi non sono accoppiati e la camma non è elaborata.

  • TRUE: se gli assi sono accoppiati e la camma è elaborata.

Busy

BOOL

Campo valori: FALSE, TRUE.

Valore predefinito: FALSE.

  • FALSE: il blocco funzione non è in fase di esecuzione.

  • TRUE: il blocco funzione è in fase di esecuzione.

Active

BOOL

Campo valori: FALSE, TRUE.

Valore predefinito: FALSE.

  • FALSE: il blocco funzione non controlla il movimento dell'asse.

  • TRUE: il blocco funzione controlla il movimento dell'asse.

CommandAborted

BOOL

Campo valori: FALSE, TRUE.

Valore predefinito: FALSE.

  • FALSE: l'esecuzione non è stata interrotta.

  • TRUE: l'esecuzione è stata interrotta da un altro blocco funzione.

Error

BOOL

Campo valori: FALSE, TRUE.

Valore predefinito: FALSE.

  • FALSE: il blocco funzione è in esecuzione, nessun errore è stato rilevato durante l'esecuzione.

  • TRUE: è stato rilevato un errore nell'esecuzione del blocco funzione.

ErrorID

ET_Result

Questa enumerazione fornisce informazioni diagnostiche.

EndOfProfile

BOOL

Campo valori: FALSE, TRUE.

Valore predefinito: FALSE.

  • FALSE: l'ultimo segmento della camma non è stato completato.

  • TRUE: dopo il completamento dell'ultimo segmento della camma.

RampInDuration

TIME

Indica il tempo che precede il completamento della procedura di salita in rampa e l'impostazione dell'uscita InSync su TRUE.

Note

Rispetto alle specifiche di PLCopen Motion Control Part 1, Version 2.0, la libreria non fornisce un blocco funzione separato MC_CamTableSelect. La tabella camma è specificata come un ingresso di MC_CamIn.

La libreria non fornisce un blocco funzione separato MC_CamOut. Un blocco funzione in esecuzione può essere sostituito da un altro blocco funzione.

Questo blocco funzione fornisce alta flessibilità per movimenti assoluti e relativi. Ad esempio, non esiste necessariamente una relazione tra il modulo di un asse master (o subordinato) e il periodo di applicazione di una camma nella direzione X (o Y). Perciò, le correzioni dell'offset possono essere applicate al volo regolando leggermente il periodo applicazione del profilo di camma nella direzione X o Y. Questo non sarebbe possibile con il modulo asse che non può essere modificato mentre l'asse esegue un blocco funzione.

Le funzioni FC_GetCamSlaveMovementFromGivenMasterForInterpolatedCam e FC_GetCamSlaveMovementFromGivenMasterForMultiCam della libreria MotionInterface assistono l'utente nel recupero della posizione dell'asse dopo un'interruzione o un arresto di un movimento risultante da un errore rilevato. Queste funzioni calcolano la velocità, l'accelerazione e la posizione di destinazione di un asse subordinato nel momento dell'esecuzione della funzione se questo asse è accoppiato al movimento di un asse master attraverso una camma. L'asse subordinato non viene spostato o altrimenti influenzato. Queste funzioni possono essere richiamate una sola volta per determinare le condizioni di avvio dell'asse subordinato, in modo che non entri in rampa. Non possono essere utilizzate ciclicamente per leggere continuamente i valori dell'asse subordinato.

Le funzioni FC_GetMasterPositionFromGivenSlavePositionForInterpolatedCam e FC_GetMasterPositionFromGivenSlavePositionForMultiCam della libreria MotionInterface consentono di calcolare la posizione del master da una data posizione dell'asse subordinato.