Si vuole creare un Function Block per la generazione di un segnale PWM. Da notare che è meglio creare una Function Block FB e non una funzione FC in quanto potrebbe essere utile avere diverse istanze con diversi valori del Periodo T e del duty cycle, e quindi utilizzando una Function Block i Timer utilizzati possono essere inseriti all’interno della FB come istanze multiple, ovvero le istanze dei Timer saranno delle variabili statiche della FB.
La funzione avrà le seguenti Variabili:
Input:
- “Periodo” di tipo “Time”
- “duty_cycle” di tipo “Int” (valore percentuale che può assumere valori tra 0 e 100)
Output:
- “segnale” di tipo “Bool” che rappresenta il segnale PWM che vogliamo generare
- “errore” di tipo “Bool” che è pari ad 1 se “duty_cycle” non è compreso tra 0 e 100.
Static:
- “Timer1” di tipo “TON”
- “Timer2” di tipo “TON”
- “tempo_on” di tipo “Time”
- “tempo_off” di tipo “Time”
Temp:
- “dint_duty_cycle” di tipo “DInt”
La funzione è la seguente: