Come possiamo aiutarti?

Print

PWM

 

PWM – Modulazione di larghezza di impulso – periodo da 15 Hz a 10 kHz

PWM è l’acronimo di “Pulse Width Modulation”. La modulazione di larghezza di impulso è una funzione molto potente, comunemente utilizzata per controllare il posizionamento delle servovalvole. Viene utilizzata anche per il controllo degli impulsi laser, il controllo del movimento, il controllo dell’intensità luminosa e altre applicazioni. La funzione a impulso singolo è applicabile a qualsiasi esigenza di uscita a impulso singolo.

Un segnale di uscita modulato ad ampiezza di impulso è un segnale che ha un periodo e un “tempo di accensione”, o duty cycle, all’interno di tale periodo. Ad esempio, un tipico controllo di una servovalvola può avere un periodo di 20 millisecondi. La posizione della valvola è controllata dal “tempo di accensione” dell’impulso di uscita, all’interno di questo periodo. La valvola può essere controllata in uno stato completamente chiuso con un tempo di accensione dell’impulso di 1 millisecondo e completamente aperta con un impulso di 3 millisecondi (i tempi effettivi sono definiti dal produttore della valvola). L’apertura parziale (5%, 10%, 53%, ecc.) è generalmente controllata da un impulso “on time” proporzionale ai limiti di apertura e chiusura totale. I segnali PWM standard si ripetono ad ogni incremento di periodo.

La figura a destra illustra un segnale di uscita PWM. La maggior parte delle uscite digitali del PLC Velocio è costituita da uscite a transistor “sinking”, quindi quando l’uscita è attiva, l’uscita si abbassa, portando il segnale a livello basso.
La figura successiva mostra una PWM standard in alto e un’uscita PWM a impulso singolo in basso. Un’uscita PWM a impulso singolo è attiva per il “tempo di accensione” definito all’interno del periodo PWM. Non si ripete. Se si desidera emettere un altro impulso, il programma deve eseguire un altro blocco “Avvia impulso PWM”.

Limiti di applicazione delle PWM : Le PWM possono essere applicate a qualsiasi uscita digitale fisicamente presente sul modulo PLC che contiene il programma applicativo. Ciò significa che qualsiasi uscita digitale Ace o Branch può essere programmata per emettere un segnale PWM dal programma principale dell’applicazione. Qualsiasi PLC Branch Explansion dotato di un proprio programma (subroutine incorporata) può emettere un segnale PWM dalla subroutine incorporata. Le unità di espansione Branch utilizzate come IO di espansione non possono emettere segnali PWM.

Qualsiasi combinazione di uscite digitali, contenute nel PLC con il programma, può avere segnali di uscita PWM. Ogni uscita attiva ha un proprio “tempo di accensione”. Tuttavia, il periodo è comune a tutti i segnali PWM dell’unità PLC.

PWM in vBuilder

PWM è un’attività in background che, una volta eseguita, continuerà a inviare segnali all’uscita. Non chiamare questa funzione a ogni ciclo del PLC, ma solo una volta quando è necessario modificare i suoi parametri.

Quando si inserisce un blocco PWM nel programma, viene visualizzata una finestra di dialogo come quella mostrata di seguito.

In questa finestra di dialogo è possibile impostare il periodo PWM, avviare (continuare/regolare) il funzionamento PWM o arrestare il PWM.

Periodo di impostazione PWM

Il periodo è comune a tutti i PWM del PLC. Il periodo si imposta selezionando il pulsante di opzione “Set Period”, quindi selezionando una variabile tagnamed ui16 o immettendo un numero compreso tra 100 e 65535. La temporizzazione è espressa in microsecondi (1 milione di microsecondi = 1 secondo). Ciò significa che il periodo PWM può variare da 100 microsecondi a poco più di 65 millisecondi.

Se il periodo è impostato su un valore inferiore a 1 millisecondo (un’impostazione inferiore a 1000), sarà attiva solo un’uscita PWM. L’uscita PWM attiva sarà quella con il tempo di accensione più breve.

Se il periodo è impostato su 1 millisecondo o superiore, tutte le uscite definite per il PWM avranno segnali attivi.

In sintesi, per impostare il periodo, selezionare Imposta periodo, selezionare o immettere un numero ui16 (intero a 16 bit senza segno) e fare clic su OK.

Avvio PWM

La selezione Start definisce l’uscita e il tempo di accensione del segnale PWM. Inoltre, consente di scegliere tra impulso continuo o singolo. Se il PWM deve essere utilizzato per un segnale PWM a tempo di attivazione variabile, ogni volta che il blocco viene eseguito, il tempo di attivazione aggiornerà il suo valore al periodo successivo.

Nella selezione del Pin di uscita, è necessario inserire il nome di un’uscita digitale presente sul PLC. La finestra di dialogo consente di selezionare qualsiasi nome di bit. Tuttavia, se il tagname selezionato non è quello di un’uscita digitale del PLC, il PWM non verrà eseguito. Se si avvia un PWM in una subroutine, il tagname deve essere un riferimento a un’uscita digitale del PLC.

Il tempo di attivazione può essere un qualsiasi valore ui16 (0-65535) o una variabile tagnamed.

Se si seleziona il funzionamento continuo, gli impulsi PWM continueranno, un impulso per periodo, finché non si esegue un blocco Stop PWM per l’uscita. Se si seleziona Impulso singolo, verrà emesso un impulso nel periodo successivo. Al termine del periodo, l’uscita verrà impostata in base allo stato dell’uscita digitale del programma.

Arresto PWM

Per posizionare un blocco per l’arresto di un’uscita PWM, è sufficiente selezionare il pulsante di opzione Stop e scegliere il nome del nome dell’uscita. Se si inserisce il blocco Stop in una subroutine, inserire il riferimento all’uscita come Pin di uscita

Problemi di PWM

Il PWM utilizza i timer per il periodo e il tempo di accensione. Un microcontrollore dispone di un numero limitato di temporizzatori, pertanto utilizziamo 2 temporizzatori per generare PWM per un massimo di 24 uscite digitali. Ciò significa che se lo spegnimento deve avvenire nello stesso momento per due segnali PWM diversi, uno dovrà attendere l’altro (un certo numero di microsecondi). Se entrambe le PWM sono impostate in modo continuo, non dovrebbe esserci jitter, perché la sequenza tra le due PWM sarà la stessa.

Se il programma avvia costantemente le due PWM, la causa potrebbe essere il jitter. La funzione PWM mantiene una tabella delle PWM attive. Le PWM sono ordinate dalla più breve alla più lunga. Se il programma del cliente avvia i PWM a ogni scansione e i tempi di due o più uscite PWM sono gli stessi, la tabella verrà costantemente aggiornata. Se possono riavviare un PWM solo quando cambia il tempo di accensione, dovrebbero vedere meno jitter.

PWM con un tempo di accensione del 100%

Ottengo un periodo raddoppiato quando il tempo di accensione è del 100%!

Il PWM viene eseguito in microsecondi. Esiste un limite al numero di istruzioni della CPU che possono essere eseguite in un microsecondo. La funzione PWM utilizza due timer: uno per il periodo e uno per la fine del ciclo successivo. Al termine del periodo, si verifica uno stato di gara tra questi due timer. Se il periodo successivo inizia prima del tempo di spegnimento del ciclo, il PWM perderà un ciclo. Pertanto, si consiglia di limitare il tempo di accensione alla lunghezza del periodo meno 2 o 3 microsecondi.

Anche i PWM multipli influiscono su questo aspetto. Se sono in funzione più PWM simultanei, si consiglia di ridurre il tempo di accensione di uno o due microsecondi.

Suggeriamo di utilizzare un tempo di accensione minimo di circa 2 microsecondi. Il problema è più raro sull’impulso minimo, ma può verificarsi anche in questo caso.

Non si tratta di un bug. Si tratta di fisica. Ci sono dei limiti a ciò che può verificarsi in un periodo di tempo molto breve.

PWM sull’oscilloscopio

con periodo di 350 microsecondi e valore di “On Time” di 175, 115 e 35 microsecondi
Una resistenza di pull-up da 10 KOhms è posta tra i 5 V (ultimo pin) e l’uscita (pin da 1 a 7). Viene eseguita una misura tra l’uscita e GND (primo pin 0).

valore del “Tempo di accensione” 175 microsecondi = 50% del periodo

valore “On Time” 115 microsecondi = 33% del periodo

valore “On Time” 35 microsecondi = 10% del periodo