Vai al contenuto
PLC Forum


Creare Una Variabile Di Uscita Analogica


Plg75

Messaggi consigliati

Salve a tutti.

Ho un problema con plc AB compact logix programmato con rslogix5000

Devo creare un'uscita analogica ad esempio tra 0 e 5 volt con andamento a rampa, ma ho un serio problema. Se creo ad esempio un ciclo for ed impongo ad una tag di variare da 0 a 1000 e poi la scrivo sulla porta analogica (con l'opportuno valore di conversione per la tensione), il valore letto sulla tag di uscita non è continuo, tipo 1, 2, 3, 4... ma "salta" 12, 55, 1000, 200.

Io credo che sia un problema di velocità di scansione del for(scritto in testo strutturato!) ma non riesco a venirne fuori!

Spero che quacuno mi possa aiutare...

Grazie a tutti

Plg

Link al commento
Condividi su altri siti


Gianluca Caredda

Dove leggi il valore del tag di uscita? Se lo stai leggendo da RSLogix5000 in modalità online è normale che veda questo valore, soprattutto se la variazione nel tag in uscita è molto rapida. Questo succede perchè RSLogix comunica con il PLC con una velocità limitata, e i valori vengono aggiornati molto più lentamente di qunato non succeda nell'uscita del PLC.

Link al commento
Condividi su altri siti

In effetti la leggo in modalità on line, ma il problema si presenta anche a valle.

Se con l'oscilloscopio leggo il canale analogico trovo lo stesso saltello di valori di tensione...

Potresti consigliarmi come generare una serie di valori continui in modo alternativo senza il for?

Grazie

Plg

Link al commento
Condividi su altri siti

Gianluca Caredda

Puoi usare un contatore abbinato ad un timer: imposti un timer in modo che una volta raggiunto il preset (ad es. 50 ms):

- attivi il contatore che incrementa di un unita il valore accumulato

- rifaccia partire il timer.

Quando il contatore raggiunge il valore massimo richiesto devi resettarlo in modo da ripartire da zero.

Link al commento
Condividi su altri siti

grazie, grazie e ancora grazie.

ho appena finito di scrivere il programma con il temporizzatore e il counter, funziona!!!

Vi ringrazio ancora.

Plg

Link al commento
Condividi su altri siti

  • 1 month later...

Per fare una cosa ben fatta, dovresti creare una Tag che venga incrementata, in maniera precisa, ad intervalli di tempo precisi.

Puoi usare una Task periodica schedulata ad esempio ogni 10ms.

dentro questa task inserisci il tuo programma e la tua SubRoutine.

In questa SubRoutine usando il linguaggio che Vuoi (Ladder o ST),

devi incrementare la tua Tag (ad Esempio in Real) con uno step di

Incremento.

Questo step di Incremento (Rampa in Accelerazione)

o Step di Decremento (Rampa in Decelerazione), deve essere Calcolato in base

al tempo di Accelerazione o Decelerazione che tu vui ottenere dalla tua rampa.

Esempio Rampa da 0 > 10.00V in 5sec con Task da 10ms

10.00 / (5 sec * 0.01s) = Step 0.002

Link al commento
Condividi su altri siti

Se non vuoi far fatica ricordati che puoi usare il Linguaggio FBD, e usare

l'istruzione di rampa a Doppia S "SCRV".

il Valore AccRate e DecRate va Calcolato (ValoreMax / Tempo in Sec)

Esempio Accelerazione in 7sec al valore massimo di 10 ,

il valore di AccRate = 10 / 7sec = 1.4285.

Ricordati che devi adattare correttamente il Valore di uscita della Rampa

al Valore Analogico .

per Esempio 1794-OE4 oppure 1794-IE4XOE2 10Volt Corrisposte a 31206

1756-OF4 puoi scegliere tu l'unità ingegneristica che piu' ti piace.

Link al commento
Condividi su altri siti

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...