Al momento sui nostri sistemi SlimLine abbiamo la possibilità di gestire solo 2 uscite PWM in hardware, le uscite sono presenti sui moduli CPU MPS054 e MPS056. L’hardware di gestione permette di generare frequenze elevate (Fino a 100Khz) ma l’hardware di uscita presente sul modulo (OptoMOS) taglia la frequenza massima a 2Khz. Per la configurazione dei PWM out gestiti in hardware è previsto il FB SysSetPWMOut.
All’interno dell’ambiente LogicLab è possibile gestire programmi in una Task fast (Eseguita ogni 1mS), il tempo di esecuzione può essere modificato e portato fino a 100uS con il FB SysSetTaskLpTime. Utilizzando il FB PWMOut è possibile gestire all’interno di questa task uscite digitali per generare segnali PWM.
4 PWM out su modulo CPU: essendo le uscite presenti sul modulo possiamo scendere con il tempo di esecuzione task a 200uS, la frequenza massima gestibile in uscita è di 2500Hz. Come si vede dallo screenshot a causa della “granulosità” della esecuzione 5000 volte al secondo si ha un errore sulla frequenza tanto più elevato quanto ci avviciniamo alla frequenza massima di 500Hz.
16 PWM out su modulo PCB124B100: Dovendo gestire il modulo di espansione (L’accesso al bus richiede ca 250 uS) non si può scendere con il con il tempo di esecuzione task. Eseguendo la task ogni 1mS la frequenza massima gestibile in uscita è di 500Hz. Come si vede dallo screenshot gestendo 16 uscite con FB PWMOut a causa della “granulosità” della esecuzione 1000 volte al secondo si ha un errore sulla frequenza tanto più elevato quanto ci avviciniamo alla frequenza massima. Il tempo di esecuzione task è di 108uS con un massimo di 430uS, quindi si potrebbe anche impostare un tempo di esecuzione task inferiore diminuendo la granulosità.
Se anzichè usare l’FB PWMOut gestisco le uscite sincrone con l’esecuzione della task ho una frequenza molto più precisa (Screenshot) ma avrò variazioni solo a multipli del tempo di esecuzione task (500, 250, 167, 125, 100, 83, 71, 62.5, 55.5, 50… Hz).