F173_PulseOutput_PWM

Istruzione uscita ad impulsi con specifica del canale (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 (F173_PulseOutput_PWM_DUT)

Indirizzo di partenza dell'area contenente la tabella dati

n_iPulseOutputChannel* (costante decimale)

Canale uscita ad impulsi:

FP-XH C30 T/P: 0–3

FP-XH C60 T/P: 0–5

FPS: 0,2

FP-X, FP-XH relè: 0,1

FP-X, FP-XH 16k transistor: 0–2

FP0R, FP0H, FP-X, FP-XH 32 transistor: 0–3

FP-XH 32k transistor: 0–5

Note

Utilizzare la seguente DUT predefinita: F173_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 ratio è 0,25 o 25%.

Informazione generale di programmazione

  • Il duty ratio, in particolare quando vicino al valore minimo o massimo, può presentare discrepanze rispetto al duty ratio specificato a seconda della tensione del carico e della corrente di carico.

  • Il duty ratio può essere modificato per ogni scansione.

  • La costante di frequenza K non può essere modificata durante l'esecuzione dell'istruzione. Se modificata, non produrrà effetti sulla frequenza ma sulla risoluzione del duty ratio.

  • Se il duty ratio viene modificato in un valore che non rientra nell'intervallo permesso mentre l'istruzione è ancora in esecuzione, il duty ratio viene regolato sul valore massimo. Quando l'esecuzione dell'istruzione inizia, viene visualizzato un errore di funzionamento.

  • Se la frequenza viene modificata in un valore che non rientra nell'intervallo permesso mentre l'istruzione è ancora in esecuzione, la risoluzione viene regolata su 100. Quando l'esecuzione dell'istruzione inizia non vengono visualizzati errori di funzionamento.

  • Se il duty ratio viene modificato in 100% o superiore mentre l'istruzione viene eseguita, la frequenza viene regolata al valore massimo alla risoluzione specificata. Quando l'esecuzione dell'istruzione inizia non vengono visualizzati errori di funzionamento.

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

  • FP-X, FP0R: Mentre viene eseguita un'istruzione uscita ad impulsi e gli impulsi vengono emessi, il flag di controllo dell'uscita ad impulsi (p.es. sys_bIsPulseChannel0Active) del rispettivo canale è TRUE. Finché questo flag è TRUE non può essere eseguita nessun'altra istruzione uscita ad impulsi.

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

  • FPS: L’esecuzione dell’istruzione di controllo di interpolazione circolare F176_PulseOutput_Center imposta il flag controllo interpolazione circolare (sys_bIsCircularInterpolationActive) su TRUE. Lo stato di questo flag viene mantenuto fino a quando viene raggiunto il valore target (anche se la condizione di esecuzione non è più TRUE). Durante questo lasso di tempo non è possibile eseguire altre istruzioni uscita ad impulsi

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

  • FP-X, FP0R: Impostate "uscita PWM" per il canale desiderato nei registri di sistema.

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

Esempio

Variabili globali

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

DUT

La DUT F173_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: F173_PulseOutput_PWM_DUT:=iFrequencyValue := 1;
			(*iFrequencyValue := 1: f=2.0 Hz, T=502.5 ms; 
*)
		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_CONTACT,,X6_bEnablePWM,5,2,7,4,);
B(B_F,E_MOVE!,Instance,16,1,22,5,,?DEN?D?AENO?C);
B(B_VARIN,,iPulseWidthModulationDuty,14,3,16,5,);
B(B_VAROUT,,dutPWMControl.iPulseWidthModulationDuty,22,3,24,5,);
L(7,3,16,3);
L(1,3,5,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,F173_PulseOutput_PWM!,Instance,16,0,29,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutPWMControl,14,2,16,4,);
B(B_VARIN,,2,14,3,16,5,);
B(B_CONTACT,,X6_bEnablePWM,5,1,7,3,);
L(7,2,16,2);
L(1,2,5,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

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

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