Questa figura mostra lo schema dei pin del blocco funzione FB_PWM:
Il blocco funzione FB_PWM è stato creato per fornire un'uscita PWM basata sul parametro di ingresso.
L'uscita PWM viene generata con intervalli ON e OFF come per l'ingresso mostrato nel primo diagramma temporale riportato sotto.
Facendo riferimento al secondo diagramma temporale:
oSe i_rIput è un valore positivo, l'uscita PWM è disponibile in q_xPstv. L'ingresso i_rIput dovrebbe trovarsi nel campo da -100 a 100. Il tempo ON di PWM è dato da: tempo PWM ON = (i_rIput x tPwmPeriod) / 100.
oSe i_rIput è un valore negativo, l'uscita PWM è disponibile in q_xNgtv.
oSe i_rIput è maggiore di 100, il valore è limitato a 100 e se i_rIput è minore di –100, il valore è limitato a –100.
oSe i_xPwmInstUpdt è TRUE, la modifica ai parametri di ingresso viene aggiornata all'interno dello stesso ciclo PWM corrente, come mostrato nel diagramma temporale.
oSe i_xPwmInstUpdt è FALSE, la variazione di ingresso viene aggiornata solo in fase di avvio di un nuovo ciclo PWM.
q_xEn è TRUE fintantoché l'ingresso i_xEn è TRUE, a prescindere dall'errore rilevato.
Questa figura mostra il diagramma temporale per il calcolo FB_PWM:
Questa figura mostra il diagramma temporale del blocco funzione FB_PWM:
Esempio con un segnale di frequenza
Il programma crea un segnale Sinusoide ad un determinato periodo (5 secondi/0,2 Hz). Questo segnale Sinusoide è l'ingresso di FB_PWM.
Definizione del blocco funzione SinGen:
L'ingresso stPwmPara.tCycTime del blocco funzione FB_PWM deve avere esattamente lo stesso valore del periodo del POU nel MAST, in questo caso 10 millisecondi (vedere l'area evidenziata da un riquadro rosso).
Il risultato del POU precedente:
Blu Segnale sinusoidale i_rIput a 0,2 Hz (blocco funzione My_Filter_PT1_1).
Verde q_xPstv (un offset viene aggiunto alla traccia).
Rosso q_xNgtv (il segnale viene invertito per la traccia).
La presenza di un parametro non valido negli ingressi del blocco funzione risulta nel rilevamento di un errore e nella generazione dell'ID errore rilevato corrispondente.
In stato Rilevamento errore, l'uscita è impostata su zero.
L'errore rilevato può essere resettato solo utilizzando il fronte di salita dell'ingresso i_xErrRst. L'uscita q_xBusy è TRUE ogniqualvolta il blocco funzione è attivo e non è stato rilevato alcun errore.