Skip to main content

Passaggio tra le camme

Fondamentalmente, puoi passare da una telecamera all'altra in qualsiasi momento. Tuttavia, dovresti considerare alcuni punti:

  • Nell'editor camma, la posizione dello slave è definita in modo univoco come valore della funzione della camma. Questa funzione è definita nel campo dei valori master e può essere espressa come segue:

    SlavePosition = CAM( MasterPosition )

  • Poiché la posizione attuale dell'azionamento master si discosta generalmente dal campo dei valori master, per rappresentare un argomento valido è necessario scalare la posizione master nel campo di definizione della funzione camma:

    SlavePosition = CAM( MasterScale*MasterPosition + MasterOffset )

  • In modo simile, devi scalare il valore della funzione (la posizione slave) se l'inizio della camma è in modalità Absolute porterebbe ad un salto:

    SlavePosition = SlaveScale*CAM( MasterPosition ) + SlaveOffset

  • Potrebbe essere necessario applicare entrambi i valori di ridimensionamento, il che risulta quanto segue:

    Slaveposition = SlaveScale*CAM( MasterScale*Masterposition + MasterOffset ) + SlaveOffset

  • I valori appropriati per i parametri di ridimensionamento e offset possono variare da periodo a periodo.

  • Il passaggio da una camma all'altra può essere effettuato in tre modi:

    1. Avviare la seconda camma tramite una seconda istanza di MC_CamIn con BufferMode = MC_BUFFER_MODE.Buffered, StartMode = relative, MasterAbsolute = FALSE, E SlaveAbsolute = FALSE.

      Importante

      Come di CODESYS SoftMotion versione 4.17.0.0

    2. Inizio della nuova camma mediante assegnazione MC_CamIn.CamTableID alla nuova cam (nessun riavvio del MC_CamIn blocco funzione richiesto).

      Questa variante è consigliata se si applicano i seguenti punti al tuo caso d'uso:

      • Tutte le camme seguenti dovrebbero essere eseguite relativamente con MasterAbsolute = FALSE o SlaveAbsolute = FALSE.

      • La nuova camma dovrebbe partire esattamente alla fine della precedente.

      • Nessun altro parametro viene modificato (esempio: SlaveOffset).

        Importante

        • Il salto, spiegato nell'esempio seguente per camme periodiche e SlaveAbsolute = FALSE, fa non valgono per questa variante perché la camma successiva si trova esattamente nelle posizioni finali della camma precedente.

        • La nuova camma viene posizionata esattamente alla fine della camma precedente solo se il passaggio alla nuova camma avviene nello stesso ciclo in cui la camma precedente riporta EndOfProfile = TRUE.

    3. Avvia la nuova cam riavviando il MC_CamIn blocco funzione.

      Questa variante è consigliata se è necessario modificare i parametri per il corretto funzionamento della nuova camma (ad esempio, SlaveOffset dal seguente esempio). Si applicano le restrizioni dell'esempio seguente.

Esempio 9. Esempio

Nell'esempio seguente si passa da CAM1 a CAM2:

CAM1 è costituito da un polinomio di 5° ordine seguito da due segmenti di linea.

_sm_img_cam_switching_1.png

CAM2 è costituito da due segmenti di linea seguiti da un polinomio di 5° ordine.

_sm_img_cam_switching_2.png

Quando si passa da una telecamera all'altra, è necessario considerare quanto segue:

  • Per evitare salti, i valori di velocità e accelerazione al punto finale della prima camma dovrebbero coincidere con i valori al punto di partenza della seconda camma. Nell'esempio questa condizione è soddisfatta perché al punto finale di CAM1 e il punto di partenza di CAM2.

  • Puoi avviare la seconda cam Relative quando è stata definita la posizione iniziale dello slave come 0. Tuttavia, la prima camma deve essere in rodaggio non-periodic modalità. Altrimenti, se CAM1 erano periodici, poi il Relative l'impostazione comporterebbe un salto.

_sm_img_cam_switching_3.png

L'ingrandimento mostra la transizione da CAM1 a CAM2. Le linee blu contrassegnano le valutazioni delle funzioni camma nelle posizioni master x1 e x2.

Ora esamineremo il caso sfavorevole di periodic:

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=TRUE);

Il richiamo avvia una valutazione della camma nella posizione master x1, che è inferiore alla posizione finale del master di CAM1. Poi CAM1 viene valutato per impostazione predefinita e restituisce un punto 1 come posizione per lo schiavo.

CAM(x2, CAM1, PERIODIC:=TRUE);

Per la successiva chiamata del modulo, la posizione master x2 è al di fuori dell'intervallo di valori master di CAM1, il cui limite è segnato dalla linea tratteggiata verde e coincide con l'asse orizzontale del punto 3p. quindi, il EndOfProfile è impostato. Perché CAM1 è stato avviato nel periodic modalità, il suo riavvio avviene alla fine dell'intervallo di valori, che alla fine cede il punto 2p come risultato della chiamata del modulo.

CAM(EXECUTE:=FALSE);

Passa alla nuova camma

CAM(x2, CAM2, PERIODIC:=TRUE);

Seconda valutazione in posizione magistrale x2. Questa volta, il nuovo CAM2 viene valutato. A seguito di CAM2 è iniziato in Relative modalità, la posizione attuale dello slave (2p) viene aggiunto come offset all'immagine della funzione camma di CAM2. Questo sposta il punto iniziale del suo grafico nel punto 3p e la sua valutazione nella posizione di master x2 rende il punto 4p, e quindi un salto sfavorevole.

Seleziona il non-periodic modalità per evitare salti:

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=FALSE);

Il richiamo avvia una valutazione della camma nella posizione master x1, che è inferiore alla posizione finale del master di CAM1. Poi CAM1 viene valutato di default e restituisce il punto 1 come posizione per lo slave.

CAM(x2, CAM1, PERIODIC:=FALSE);

Per la successiva chiamata del modulo, la posizione master x2 è al di fuori dell'intervallo di valori master di CAM1, il cui limite è segnato dalla linea tratteggiata verde e coincide con l'asse orizzontale del punto 3n. quindi, il EndOfProfile è impostato. Perché CAM1 è stato avviato nel non-periodic modalità, posizione slave (2n) assegnato alla posizione master x2 è identico alla posizione dello slave al raggiungimento della fine del campo di valori CAM1 (3n).

CAM(EXECUTE:=FALSE);

Passa alla nuova camma.

CAM(x2, CAM2, PERIODIC:=FALSE);

Seconda valutazione in posizione magistrale x2. Questa volta, il nuovo CAM2 viene valutato. A seguito di CAM2 è iniziato in Relative modalità, la posizione attuale dello slave (2n) viene aggiunto come offset all'immagine della funzione camma di CAM2. Questo sposta il punto iniziale del suo grafico nel punto 3n e la sua valutazione nella posizione di master x2 rende il punto 4n, che si trova sulla retta specifica passante per i punti 1 e 3n.

Per avviare la camma Absolute modalità, è necessario assicurarsi che lo slave sia in una posizione di partenza appropriata. Se il campo di valori del master coincide con il periodo dello slave, la commutazione tra camme non presenta complicazioni, indipendentemente dal fatto che le camme siano periodiche o meno.

Nell'esempio sopra, puoi iniziare CAM2 in Absolute modalità quando i periodi del master e dello slave concordano con l'intervallo di valori master di CAM2 (ognuno è a 360°).

In caso contrario, ad esempio quando è il periodo dello schiavo 270° (indicato dalla linea azzurra), quindi il Absolute opzione non è consentita senza intraprendere ulteriori azioni.

_sm_img_cam_switching_4.png

In questo caso lo slave è a 90° quando si passa da CAM1 a CAM2. Di partenza CAM2 in Absolute la modalità provoca un salto a 0° (indicato da una linea grigia).

Tuttavia, il salto può essere impedito impostando l'offset slave sul valore appropriato di 90°.