Vai al contenuto
PLC Forum


Controllo Di Velocita' Con Un Plc


birkof

Messaggi consigliati

Ciao a tutti,

vi descrivo la mia necessita'.

Ho necessita' di realizzare un controllo di velocita' con il seguente hardware: un PLC con ingressi a conteggio veloce, un encoder incrementale , un motore asincrono.

Come dovrei procedere?

Il PLC e' un siemes s7-300 e so che esistono dei blocchi per realizzare un controllo PID...

Grazie dell'attenzione

Link al commento
Condividi su altri siti


Molto semplicisticamente potresti procedere cosi:

una out analogica e sviluppare nell'OB35 (<= 10 ms)un algoritmino per relazionare la posizione ist. del motore e la velocita dello stesso, molto molto banalmente Velocita=(Quota di arrivo-Quota istantanea)*Guadagno prop. questo poi lo puoi "raffinare" se vuoi gestirlo con segno oppure no, puoi imporre una velocità di gradino etc. io un algoritmo del genere l'ho usato varie volte con discreti risultati.

Ciao

Link al commento
Condividi su altri siti

Dimenticavo...Ovviamente ho anche un inverter che comanda il motore.

Per Omar: cosa intendi per "out analogica"? io ho un enc. incr....

L'algoritmo che usi non comanda l'asse un po' troppo bruscamente?

Come "quota di arrivo" non e' meglio mandare una rampa?

Grazie dell'aiuto

Modificato: da birkof
Link al commento
Condividi su altri siti

Per Omar: cosa intendi per "out analogica"? io ho un enc. incr....

L'algoritmo che usi non comanda l'asse un po' troppo bruscamente?

Come "quota di arrivo" non e' meglio mandare una rampa?

Nel plc devi avere una uscita analogica per comandare in velocità il tuo inverter, la rampa viene creata dall'algoritmo es.:

t0

Quota arrivo= 1000 imp

Quota istantanea 0 imp

Guad.prop=5

vel= (1000-100)*5

vel=5000, siccome 5000>4095(max risoluzione dell'out)

vel=4095 (valore analogico)

t1

Quota arrivo= 1000 imp

Quota istantanea 500 imp

Guad.prop=5

vel= (1000-500)*5

vel=2500 (valore analogico)

t2

Quota arrivo= 1000 imp

Quota istantanea 900 imp

Guad.prop=5

vel= (1000-900)*5

vel=500 (valore analogico)

Chiaro?

A questo aggiungop che si potrebbe gestire anche una rampa di accelerazione

Link al commento
Condividi su altri siti

Il PLC è comunque piuttosto lento, quindi non puoi pretendere una grossa precisioe di regolazione.

Credo che il blocco pid FB41 possa andare bene, ma perchè non usi un inverter con retroazione da encoder? Penso che la cosa sia molto più semplice e sicura.

Link al commento
Condividi su altri siti

ma perchè non usi un inverter con retroazione da encoder? Penso che la cosa sia molto più semplice e sicura.

Perchè non un brushless con pilotaggio in emuazione passo passo? La scelta di una soluzione dipende sempre dall'efficacia (precisione) necessaria e dai costi relativi oltre ad una consigliabile semplicità di realizzo. Comprare un bel Ferrari per andare alla tabaccheria d'angolo è sicuramente togo ma ahimè è anche abbastanza sprecato oltre a necessitare dell'obbligatorio titolo di guida.

Saluti

Modificato: da omar
Link al commento
Condividi su altri siti

Penso che la retroazione da encode sull'inverter costi di meno del tempo impiegato per sviluppare tutto il circuito di retroazione da PLC.

Dipende da quante volte si riesce ad riutilizzare il software sviluppato. Se si tratta di un'applicazione unica sicuramente conviene acquistare la retroazione su inverter.

Se si usa su decine di impianti allora si può valutare la soluzione con la retroazione su PLC

Link al commento
Condividi su altri siti

Sto valutando anche la possibilita' di usare un inverter con retroazione da encoder. Il mio problema sono pero' i costi. LA macchina che devo sviluppare deve costare il meno possibile e deve essere prodotta in serie e quindi sto pensando a una serie di soluzioni taglia-costi.

ciao

Link al commento
Condividi su altri siti

Penso che la retroazione da encode sull'inverter costi di meno del tempo impiegato per sviluppare tutto il circuito di retroazione da PLC.

Eccotelo GRATIS!!!!!!!(Non mi sembra che ci voglia un granchè per scriverlo) :D:D:D:D

//Lettura valore corrente encoder (Quota reale)

RdEn: L PEW 264; // Read canale 0

T DB12.DBW 1158;

L 0;

>=I ; // Check ok valore

SPB Vel0;

L 0;

T DB12.DBW 1158;

NETWORK

TITLE =

//Calcolo valore errore DeltaQ=Quota teorica-Quota reale

//Calcolo velocita analogica VelAnCalc=DeltaQ * Kp

Vel0: NOP 0;

L DB12.DBW 1030;

L DB12.DBW 1158;

-I ;

T DB12.DBW 1160; // Calcolo DeltaQ

L DB12.DBW 1082;

*I ;

T DB12.DBD 1162; // Calcolo VelAnCalc

NETWORK

TITLE =

//Check range velocita analogica calcolata

L DB12.DBD 1162;

L DB12.DBW 1026;

<=D ;

SPB ChGr;

L DB12.DBW 1026;

T DB12.DBD 1162;

SPA ChB;

ChGr: L DB12.DBD 1162;

L DB12.DBW 1080;

>=D ;

SPB ChB;

L DB12.DBW 1080;

T DB12.DBD 1162;

NETWORK

TITLE =

//Check buffer velocita analogica

ChB: L DB12.DBW 1166;

L DB12.DBD 1162;

>=I ;

SPB AggV;

L DB12.DBW 1166;

L DB12.DBW 1084;

+I ;

T DB12.DBW 1166;

L DB12.DBD 1162;

<=I ;

SPB Chv1;

AggV: L DB12.DBD 1162;

T DB12.DBW 1166;

NETWORK

TITLE =

//Attuazione velocita analogica

Vel1: L DB12.DBW 1166;

SLW 3;

T PAW 272;

Link al commento
Condividi su altri siti

Ciao Omar,

grazie Omar per il codice, a buon rendere! volevo solo chiedere un chiarimento..

Io, da buon pivello, non ho mai usato personalmente un encoder incr. e volevo chiedere come devo fare. Io ho 4 ingressi "counter" su plc ..se collego i due canali dell'encoder (i due treni di impulsi..) ai due ingressi cosa succede? dove mi trovo il conteggio incrementale all'interno del plc?

Grazie ancora dell'aiuto

Link al commento
Condividi su altri siti

Io, da buon pivello, non ho mai usato personalmente un encoder incr. e volevo chiedere come devo fare. Io ho 4 ingressi "counter" su plc ..se collego i due canali dell'encoder (i due treni di impulsi..) ai due ingressi cosa succede? dove mi trovo il conteggio incrementale all'interno del plc?

Innanzitutto parlando di un encoder incrementale non si parla di treni di impulsi ma di fasi (se fai una ricerca in rete potrai trovare sicuramente un poco di tutorial sugli encoder), la CPLD inserita nella scheda di conteggio (o chi per essa) controllando lo stato della fase B rispetto alla fase A decide se incrementare o decrementare la variabile di conteggio, il conteggio pùò essere singolo (sola rilevazione del fronte di salita della fase A), doppio (vengono rilevati il fronte di salita e il fronte di discesa della fase A) o quadruplo (vengono rilevati i fronti di salita e di discesa delle fasi A e B ) la selezione del tipo di conteggio viene fatta in funzione dalla risoluzione "elettrica" che si vuole ottenere es. se un encoder ha risoluzione meccanica di 1mm per ogni inpulso in conteggio singolo una unità di conteggio sarà di 1mm se invece è in conteggio quadruplo ogni impulso dell'encoder genererà quattro unità di conteggio per cui la risoluzione di ogni unità di conteggio sarà 1/4 quindi 0,25mm. Inoltre c'è la gestione della eventuale fase Z per la sincronizzazione (reset o preset) del conteggio. Il valore di conteggio è accessibile dal programma utente plc in una particolare area di memoria. Nel caso del S7-300 sarà una word di periferia.

Saluti

Modificato: da omar
Link al commento
Condividi su altri siti

Se usi una cpi della serie compact è possibile avere direttamente la frequenza di conteggio su una word. La parametrizzazzione è possibile tramite la configurazione hardware ed è piuttosto semplice.

Con queste cpu l'encoder deve avere le uscite a transistor PNP oppure PUSH-PULL non è quindi possibile utiizzare un encoder con uscite line driver.

Io utilizzerei il regolatore PID della bibbioteca standard (SFB41/FB41) pultroppo non ho nessun programma già fatto.

Aggiorna poi il forum, vorrei sapere quale soluzione hai adottato

Link al commento
Condividi su altri siti

A parte la teoria secondo me valuta questo :

quanto veloce deve essere il controllo ?

Se è lento puoi calcolare in modo preciso la velocità letta e seguire il consiglio di Omar, se invece devi seguire un profilo veloce allora mi sa che devi adottare altre misure.

ciao

Link al commento
Condividi su altri siti

Per Federico: cosa intendi quando dici "quanto e' veloce il controllo", giusto per capirci..il tempo di accelerazione di cui ho la necessita' e' pari a 1s. Tu tieni conto di altri "tempi di salita" (vibrazioni, elasticita' ecc.)?

ciao

Link al commento
Condividi su altri siti

Ciao, nel senso che:

se hai un disturbo alla velocità tu la devi correggere in un certo tempo, dipende quanto sei disposto aspettare prima di avere di nuovo la velocità programmata.

Per farti un esempio forse migliore, se devi inseguire un riferimento costante magari basta che entro 1s il tuo sistema sia a regime, quindi sai che per correggere un errore di X% hai bisogno di n_secondi. Se devi inseguire una rampa ovviamente il tutto deve essere più veloce ... non so se mi son spiegato :) ... se invice di una rampa è una interpolazione allora si deve essere ancora più veloci con controllo più reattivi ...

è come nei PId quando si guarda il tempo di annullamento dell'errore (detta alla buona insomma).

ciao

Link al commento
Condividi su altri siti

  • 1 month later...

Scusa Birkof,

l'inverter che intendi usare non possiede gà un ingresso a cui collegare la retroazione di velocità da encoder?

Questa domanda te la faccio perchè, collegandomi a quello che diceva Federico, la soluzione con anello di velocià nel plc che controlla un inverter V/F è particolarmente sottoperformante in termini di precisione e di velocità di risposta.

Se può andar bene o no dipende dalle performance di cui il tuo sistema ha bisogno.

Probabilmente se non ti servono performance notevoli, e se il motore lavora con carico abbastanza costante, magari te la puoi cavare senza encoder, ad anello aperto, impostando correttamente il valore di scorrimento del motore nell'inverter. Comunque se sei nel dubbio l'unica soluzione che certamente ti toglie da ogni empasse è l'inverter vettoriale retroazionato.

ciao.

:)

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