Vai al contenuto
PLC Forum


Implementazione Di Un Pid Digitale


bulbapeppe

Messaggi consigliati

Salve,

ho iniziato a vedere la programmazione di un PLC con un motore CC.

Il PLC è un VTP403 della Kernel (comprato dopo vostro, finora apprezzato, suggerimento). Il motore è della Oriental Motor (anche questo per ora sembra una buona ed economica soluzione che consiglio).

Il problema è che ho scoperto, ad acquisto eseguito, che il PID implementato nel PLC non è adatto al mio motore che ha le seguenti caratteristiche:

- motore comandabile con VDC 0-5V

- un ingresso digitale per impostare la direzione

- la lettura degli impulsi è in una sola direzione.

- VDC=0 si ha velocità nulla (poi se attivo il freno il pignone è fermo altrimenti è libero di muoversi).

Ho deciso di implementare da solo il PID digitale.

Mi sono letto (tra le altre cose) i vostri forum e il manuale (sempre proveniente dal vostro forum) "regolatori PID digitali".

Ho implementato (con grande fatica, ma con ancora pochi risultati) un "PID in forma di velocità" (esempio in http://www.plcforum.it/forums/lofiversion/index.php/t15204.html) con l'obiettivo di eseguire un posizionamento (esempio: dalla posizione 0 voglio arrivare alla 100).

In breve: il PID è un sistema di controllo stabile ed è usatissimo. Però mi sembra che implementando tale controllo la sovraelongazione sia sempre presente (dovrei aumentare il fattore derivativo, ma poi aplificherei i rumori ecc.ecc.e quindi eviterei). Ed invece vorrei partire da una posizione iniziale ed arrivare a quella finale senza sovraelongazione (dovrei immergere un oggetto in un liquido e una sovraelongazione implica che immergo l'oggetto più del dovuto prima di arrivare a regime e non mi è consentito).

C'è modo di farlo? Sbaglio qualcosa nel ragionamento? Se tolgo (vedi formula nel link) la parte U(t-1) (che praticamente fa la funzione di integrale, in quanto in essa è salvato lo "storico") potrei risolvere, ma (teoria dei conrtolli?) in teoria non potrei controllare ingressi costanti credo.

Grazie dell'aiuto!

Link al commento
Condividi su altri siti


Leggi il mio tutorial sulle regolazioni, lo trovi nella sezione didattica, sottosezione elettrotecnica.

Oltre a spiegazioni generali sui regolatori, trovi sia esempi in "pseudoC" di regolatori PID ed esempi di posizionatori, tra cui un sistema autoottimizzante.

La sovraelongazione dipende dal fattore si smorzamento. In un sisitema di posizionamento in genere non è tollerata sovraelongazione, quindi è necesario amntenere lo "xi" prossimo all'unità.

Anche l'uso del detivativo è controproducente; non solo per i fenomeni che descrivi, ma anche perchè tende ad abbassare lo "xi" favorendo i fenomeni di sovra e sotto elongazione.

Link al commento
Condividi su altri siti

Il problema è che ho scoperto, ad acquisto eseguito, che il PID implementato nel PLC non è adatto al mio motore che ha le seguenti caratteristiche:

- motore comandabile con VDC 0-5V

- un ingresso digitale per impostare la direzione

- la lettura degli impulsi è in una sola direzione.

- VDC=0 si ha velocità nulla (poi se attivo il freno il pignone è fermo altrimenti è libero di muoversi).

Non ho capito se è il plc che non va o il motore...

A intuito mi pare che i problemi che elenchi sono facilmente bypassabili...(naturalmente se ho capito bene quello che intendi)

Link al commento
Condividi su altri siti

Ciao,

[at]Livio: grazie, proverò a vedere nella sezione che mi hai descritto. E poi proverò ad implementare il tutto (sto usando il ladder, quindi dovrò rifare il tuo SW da capo immagino) e vedere come va. Per quanto riguarda le lettere che hai menzionato, penso capirò tutto dopo aver letto il manuale.

[at]Lucky67: non è che non va il PLC o il motore (almeno credo, è il primo progetto che faccio da solo con questi strumenti). La difficoltà è che il PLC non implementa un PID che vada bene con quel motore (almeno per quanto detto dal tecnico della casa produttrice e da quanto ho capito dal manuale) e quindi sto cercando di implementare un PID (come suggeritomi dal costruttore del PLC). Ma ho molte difficoltà tra numeri negativi, sovraelongazione e saturazioni varie...

Dopo aver letto il manuale indicatomi da Livio vi terrò aggiornati. Incrocio le dita!

Link al commento
Condividi su altri siti

[at]Livio.

Ho letto il documento che mi hai indicato. Molto interessante. Inoltre, essendo basato sulla pratica, evidenzia molti aspetti pratici interessanti.

Volevo sapere se secondo te (prima che inizio a implementare per ore per poi non avere successo come già fatto per il PID) se implemento in ladder il "Posizionamento" che hai indicato nel paragrafo 6.1 può andare bene a posizionare un singolo motore .

Riassumo il mio sistema:

PLC singolo + singolo motore.

Scopo: posizionamento senza sovraelongazioni.

Ciao e grazie.

Link al commento
Condividi su altri siti

Il sistema è indipendente dal linguaggio usato. L'unica condizione necessaria e sufficiente è che la funzione sia corretta ;) .

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