F168_PulseOutput_Trapezoidal

Controllo trapezoidale

Questa istruzione effettua automaticamente un controllo trapezoidale secondo i parametri della DUT specificata. Gli impulsi vengono emessi dal canale specificato quando il flag di controllo per tale canale è FALSE e la condizione di esecuzione è TRUE.

Parametri

Ingresso

s_dutDataTable (F168_PulseOutput_Trapezoidal_DUT)

Indirizzo di partenza dell'area contenente la tabella dati

n_iPulseOutputChannel (costante decimale)

Uscita ad impulsi: 0 o 1

Note

Utilizzare la seguente DUT predefinita: F168_PulseOutput_Trapezoidal_DUT

  • Codice di controllo

  • Velocità iniziale e finale

  • Velocità target

  • Tempo di accelerazione/decelerazione

  • Valore target

  • Fine tabella (fisso)

  1.  (1) Velocità iniziale e finale
  2.  (2) Velocità target
  3.  (3) Tempo di accelerazione/decelerazione
  4.  (4) Valore target
  5.  (5) Flag di controllo dell'uscita ad impulsi
  6.  (6) Condizione di esecuzione

La frequenza dell'uscita ad impulsi cambia secondo il tempo di accelerazione/decelerazione. La differenza fra velocità target e velocità iniziale determina il tipo di rampa.

Informazione generale di programmazione

  • Nei registri di sistema impostare un contatore veloce assegnato ad un canale di uscita ad impulsi su "Non utilizzato".

  • Durante il lavoro ai programmi nella modalità operativa RUN l’uscita ad impulsi si arresta, ma riprende dopo che sono state scaricate le modifiche al programma.

  • Se sia il programma principale sia il programma di interrupt contengono un codice per lo stesso canale, essi non devono poter esser eseguiti contemporaneamente.

  • Il flag di controllo del contatore veloce (p.es. sys_bIsHscChannel0ControlActive) e il flag di controllo dell’uscita ad impulsi (p.es. sys_bIsPulseChannel0Active) vengono allocati allo stesso numero di flag interno speciale (p.es. R903A). Pertanto, quando viene eseguita un'istruzione contatore veloce o un'istruzione uscita ad impulsi, il flag di controllo del contatore veloce (p.es. sys_bIsHscChannel0ControlActive) e il flag di controllo dell'uscita ad impulsi (p.es. sys_bIsPulseChannel0Active) per il canale utilizzato sono TRUE. Finché questo flag è TRUE non può essere eseguita nessun’altra istruzione contatore veloce o istruzione uscita ad impulsi.

  • L’uscita ad impulsi si arresta quando viene superato il limite superiore del valore corrente interno se la rotazione avviene solo in un solo senso. Come contromisura, resettare il valore corrente su 0 prima di eseguire questa istruzione. L'uscita ad impulsi non si arresta se l'FP0R viene usato nella modalità "FP0 compatibile" perché il range di dati per il valore corrente è un valore a 32 bit con segno.

  • Si raccomanda vivamente di incorporare un'opzione di stop uscita impulsi nel proprio programma di posizionamento.

  • Lo stato del flag di controllo del contatore veloce o del flag di controllo dell'uscita ad impulsi può variare durante lo svolgimento di una scansione. For example, if the number of received bytes is read more than once different statuses may exist within one scan.

Svolgimento dell'FP0Rnella modalità "FP0 compatibile"

Per svolgere l'FP0R nella modalità "FP0 compatibile", si può scaricare un programma FP0 nell'FP0R. Si prega di tenere presenti le seguenti restrizioni:

  • L'FP0R supporta dati a 32 bit con segno per il valore corrente ed il valore target; l'FP0 supporta dati a 24 bit con segno. Nella modalità "FP0 compatibile", il conteggio e l'uscita ad impulsi continuano anche se i dati eccede il range dell'FP0.

  • Il duty ratio ammonta sempre al 25% indipendentemente dalle impostazioni nelle istruzioni. Con la tipologia di uscita ad impulsi “impulsi/direzione,” gli impulsi sono emessi all’incirca 300ms dopo che è stato emesso il segnale della direzione; contemporaneamente viene tenuto conto delle caratteristiche del motore.

  • L'FP0R non supporta l'impostazione "nessun conteggio". Il conteggio avanti viene invece effettuato con l'istruzione uscita ad impulsi FP0 impostata su "nessun conteggio".

  • La frequenza massima dell'uscita ad impulsi è di 10000Hz.

  • È indispensabile che l'istruzione sull'uscita ad impulsi non impieghi un'uscita usata al tempo stesso come uscita normale.

  • Affinché un programma FP0 possa svolgersi nella modalità “FP0 compatibile”, i tipi di PLC (C10, C14, C16, C32, e T32) devono corrispondere perfettamente. La modalità "FP0 compatibile" non è disponibile per l'F32 tipo FP0R.

Uscite e variabili di sistema per FP0, FP-e

Numeri canale e uscita ad impulsi

Canale n.° Uscita ad impulsi Tipologia di uscita ad impulsi

0

Y0

Impulso

Y2

Direzione

1

Y1

Impulso

Y3

Direzione

Variabili di sistema per le aree di memoria utilizzate. I valori fra parentesi sono validi per FP0 T32.

Descrizione

Variabile di sistema

Uscita ad impulsi: flag di controllo per il canale

0

sys_bIsPulseChannel0Active

1

sys_bIsPulseChannel1Active

Uscita ad impulsi: valore corrente per il canale

0

sys_diPulseChannel0ElapsedValue

1

sys_diPulseChannel1ElapsedValue

Uscita ad impulsi: valore target per il canale

0

sys_diPulseChannel0TargetValue

1

sys_diPulseChannel1TargetValue

Codice di controllo per contatore veloce o uscita ad impulsi

sys_wHscOrPulseControlCode

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • se il numero di canale o valori della tabella dati sono fuori del campo ammissibile
  • se la velocità iniziale < 40

  • se la velocità iniziale > la velocità massima

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • se il numero di canale o valori della tabella dati sono fuori del campo ammissibile
  • se la velocità iniziale < 40

  • se la velocità iniziale > la velocità massima

Esempio

Variabili globali

Nella lista variabili globali si definiscono variabili alle quali possono accedere tutti i POU del progetto.

DUT

La DUT F168_PulseOutput_Trapezoidal_DUT è predefinita nella FP Library.

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU.La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	VAR
		dutTrapez: F168_PulseOutput_Trapezoidal_DUT:=wControlCode := 16#102,
iInitialAndFinalSpeed := 1000,
iTargetSpeed := 7000,
iAccelerationAndDecelerationTime := 300,
diTargetValue := 10000;
	END_VAR
	VAR_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		@'': @'';
		@'': @'';
	END_VAR

Corpo del POU

Quando X0_bMotorSwitch passa a TRUE la funzione viene eseguita.

Corpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,2,6,4,R);
B(B_VARIN,,dutTrapez,11,3,13,5,);
B(B_VARIN,,0,11,4,13,6,);
B(B_F,F168_PulseOutput_Trapezoidal!,Instance,13,1,28,6,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
L(6,3,13,3);
L(1,3,4,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

IF DF(X0_bMotorSwitch) then
    F168_PulseOutput_Trapezoidal(s_dutDataTable := dutTrapez,
    n_iPulseOutputChannel :=0);
END_IF;

L'ultima revisione: 2022-06-28Feedback su questa paginaPanasonic hotline