Vai al contenuto
PLC Forum


Come Generare Un Do Pwm Da Un Valore Di Regolazione 0-100%


Messaggi consigliati

Inserito:

Buongiorno,

avrei la necessità di generare un'uscita PWM partendo da un valore di regolazione 0-100% appoggiato ad una variabile (non utilizzando le funzioni già integrate delle 2 DO già PWM).

Qualcuno ha idea dell'algoritmo che dovrei applicare?

Grazie

Roberto


Inserita:

Dipende, e molto, dal periodo del PWM.

Tanto per fare un esempio.

Se pensi di avere un periodo pari a 100 ms per evere una risolozione dello 1% dovresti aggiornare l'uscita ogni ms. Farlo da programma non è per niente agevole, rischi di impegnare troppo il ciclo di programma solo per questa funzione.

Differente è l'uso delle funzion Hw già previste, perchè lavorano in background direttamente dallo SO del PLC.

Comunque, in linea di principio l'algoritmo è semplicissimo.

COnsideri 100 il perido del PWM, quindi il duty cycle, espresso in % del totale sarà il tempo di "on" secondo la relazione:

Ton = (On * 100) / T, dove On è la percentuale di duty, T è il periodo di PWM.

Ti crei un temporizzatore con cadenza pari al periodo di PWM, ad ogni inizio periodo alzi l'uscita e fai iniziare un temporizzatore con tempo pari a Ton, allo scadere del temporizzatore abbassi l'uscita.

Inserita:

Grazie per la dritta!

Nei prossimi giorni faccio delle prove e Vi aggiorno.

PS Purtroppo non posso utilizzare la funzione hardware già prevista perché devo controllare 10 uscite PWM differenti ed indipendenti

Roberto

Inserita:

Ciao Livio,

scusa la domanda ma come faccio con TIA Portal a fare in modo che il risultato Ton = (On * 100) / T alimenti un IEC Timer? (dovrei convertire un numero in un timer ma non ho trovato come fare...)

Grazie

Roberto

Inserita:

Non penso che possa essere fatto con Tia Portal. Il calcolo lo deve eseguire il PLC nel suo programma, è una moltiplicazione di 2 interi divisa per un altro intero, è quasi banale.

Io in te mi preoccuperei di come fare i 20 (10 on e 10 off) temporizzatori che sia precisi ed abbiano una risoluzione sufficiente.

Non dici nulla in ordine alla tua applicazione, però pensa ben a tutte le implicazioni.

Hai poi anche il problema delle uscite che devono essere voloci epilotate diretamente senza passare attraverso alla tabella immagine.

Inserita:

Ciao,

per evitare il proliferare di timer, ecc. ho cambiato un po' filosofia.

Ho creato un OB ciclico a 100 ms e, al suo interno, mi vado a calcolare i tempi di ON e OFF di ogni uscita PWM.

In questa maniera dovrei migliorare sia la precisione che le performance!!

Cosa ne pensate?

Roberto

Inserita:

Purtroppo non posso utilizzare la funzione hardware già prevista perché devo controllare 10 uscite PWM differenti ed indipendenti

Perchè non puoi usare le funzioni hardware(credo tu intendessi software) del TIA? Su Che duty cycle pensavi di stare? Perchè se sei nell'ordine dei ms ok, ma se hai piu spazio di manovra è fattibilissimo( io me lo sono fatto).

Inserita:

Il duty cycle dovrebbero essere abbastanza tranquillo nell'ordine dei secondi.

Il problema è che devo usare gestire la termoregolazione di una zona tramite due uscite PWM (una di riscaldamento e una di raffreddamento).

Per fare questo le due alternative che mi sono venute in mente sono:

- Utilizzo di 2 PID indipendenti e inversi l'uno all'altro (uno per riscaldo e uno per raffreddamento). In questa maniera potrei sfruttare l'uscita PWM che già esce dal blocco PID_Compact.

- Utilizzo di 1 solo PID che regola da -100 a +100. In questa maniera se siamo < 0 devo crearmi la gestione manuale di un DO PWM di raffreddamento e se siamo > 0 devo crearmi la gestione manuale di un DO PWM di riscaldamento (questo perché non posso sfruttare il calcolo del DO PWM che esce dal PID_Compact)

Se qualcuno ha qualche altra idea più semplice è ben accetta!

Roberto

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...