F170_PulseOutput_PWM

Uscita PWM

Questa istruzione fornisce un segnale di uscita con impulsi modulati in larghezza. I parametri per l’emissione di impulsi sono stabiliti in una DUT. 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 (F170_PulseOutput_PWM_DUT)

Indirizzo di partenza dell'area contenente la tabella dati

n_iPulseOutputChannel (INT)

Uscita ad impulsi: 0 o 1

Note

  • Utilizzare la seguente DUT predefinita: F170_PulseOutput_PWM_DUT

  • Nella DUT possono essere specificati i seguenti parametri:

    • Frequenza approssimativa

    • Duty ratio (per ampiezza impulsi e periodo)

      Rapporto tra l'ampiezza impulsi e il periodo di una forma d'onda rettangolare. Per un'uscita ad impulsi in cui l'ampiezza impulsi è 1ms e il periodo di impulso è 4ms, il duty è 0,25 o 25%.

Informazione generale di programmazione

  • Non appena si inizia a modificare un programma online (ossia in modalità RUN) utilizzando questa istruzione, l’emissione di impulsi si arresta.

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

  • 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.

  • Ad un certo punto vicino al duty ratio minimo o massimo, l'uscita viene ritardata, il che potrebbe provocare una discrepanza nel duty ratio rispetto al valore specificato.

  • Il duty ratio può essere modificato per ogni scansione. La modifica diventa effettiva con la successiva emissione di impulsi. L'impostazione della frequenza diventa effettiva solo all'avvio dell'esecuzione di un'istruzione.

  • 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.

Utilizzo della modalità "FP0 compatibile" dell'FP0R

Per svolgere l'FP0R nella modalità "FP0 compatibile", si può scaricare un programma FP0 nell'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

Esempio

Variabili globali

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

DUT

La DUT F170_PulseOutput_PWM_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_EXTERNAL
		X6_bEnablePWM: BOOL:=FALSE;
	END_VAR
	VAR 
		dutPWMControl: F170_PulseOutput_PWM_DUT;
			(*iFrequencyValue := 1: f=2.0Hz, T=502.5ms;*)
		iPulseWidthModulationDuty: INT:=500;
			(*500=50% duty*)
		@'': @'';
	END_VAR

Corpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,E_MOVE!,Instance,15,1,21,5,,?DEN?D?AENO?C);
B(B_VARIN,,iPulseWidthModulationDuty,13,3,15,5,);
B(B_VAROUT,,dutPWMControl.iPulseWidthModulationDuty,21,3,23,5,);
B(B_CONTACT,,X6_bEnablePWM,4,2,6,4,);
L(6,3,15,3);
L(1,3,4,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_CONTACT,,X6_bEnablePWM,4,2,6,4,);
B(B_F,F170_PulseOutput_PWM!,Instance,13,1,26,6,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutPWMControl,11,3,13,5,);
B(B_VARIN,,2,11,4,13,6,);
L(1,3,4,3);
L(6,3,13,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

IF (X6_bEnablePWM) then
    dutPWMControl.iPulseWidthModulationDuty:=iPulseWidthModulationDuty;
END_IF;
IF (X6_bEnablePWM) then
    F170_PulseOutput_PWM(s_dutDataTable := dutPWMControl, 
    n_iPulseOutputChannel := 2);
END_IF;

Corpo IL

Argomenti correlati

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