[Automazione] Controllo velocità Motore DC con PLC

Messaggioda Carmelo99 » 26/05/2024, 16:03

Sto lavorando ad un progetto di automazione, ma non capisco bene come impostare il tutto e mi rivolgo a voi per delle delucidazioni.

Devo controllare la velocità di un motore DC (pwm) tramite un segnale in ingresso (rampa). Il tutto attraverso l'uso di un PLC.

Ho già scaricato Zelio Soft e sto imparando il linguaggio Ladder, ma non mi è chiaro come impostare il progetto e come procedere con l'implementazione del sistema su zelio soft
Carmelo99
Junior Member
Junior Member
 
Messaggio: 111 di 119
Iscritto il: 11/03/2019, 16:30

Re: [Automazione] Controllo velocità Motore DC con PLC

Messaggioda ingres » 27/05/2024, 11:43

E' una domanda un pò complessa da rispondere in un post. Mi limito perciò a darti solo una visione di massima.

Come prima cosa ti consiglierei più di studiare e usare il Functional Block Diagram piuttosto che il Ladder.
Il Ladder è più adatto per le logiche (start/stop, sequenze, ecc.) mentre il tuo è un problema di loop di controllo.

Passando al merito, la velocità del motore $omega$ è legata alla tensione di alimentazione $V$ da una caratteristica del tipo (a regime):

$omega = a*V - b$

dove il termine $b$ dipende dalla coppia resistente e da parametri del motore e il termine $a$ da paramentri del motore.

Se fossero perfettamente conosciuti i parametri, non vi fossero problemi di imprecisioni, non linearità, dinamica, ecc., invertendo questa relazione si troverebbe il valore di V per ogni velocità desiderata.

In pratica la cosa non funziona così bene ed è necessario
1) Inserire un sensore di velocità ed acquisire la misura con il PLC
2) generare internamente o acquisire dall'esterno la velocità desiderata (setpoint)
3) inserire un controllore PID (vedi che sia disponibile in Functional Block Diagram) per confrontare la misura di velocità con il setpoint e generare in uscita il segnale di comando da associare alla tensione di alimentazione del motore (0% nessuna tensione, 100% tutta la tensione disponibile).

A questo punto di solito si ha a disposizione una tensione fissa Vcc e bisogna modularla per ottenere la tensione di alimentazione desiderata.
Per farlo basta alternare opportunamente periodi in cui si fornisce la tensione Vcc al motore a periodi in cui non si fornisce nulla (PWM).
E' evidente che scegliendo opportunamente le due durate potrò ottenere qualsiasi tensione tra zero e Vcc e quindi risolvere il problema.
I segnali di comando degli interruttori per applicare o meno la Vcc saranno l'output finale di comando uscente dal PLC.

Per ulteriori approfondimenti puoi ad esempio vedere queste slide.
https://www.dmi.unict.it/santoro/teachi ... toreCC.pdf
Chi non vorrà attingere ad altra intelligenza che alla sua, si troverà ben presto ridotto alla più miserabile di tutte le imitazioni: a quella delle sue stesse opere (Ingres)
ingres
Senior Member
Senior Member
 
Messaggio: 1738 di 1753
Iscritto il: 30/10/2022, 11:45

Re: [Automazione] Controllo velocità Motore DC con PLC

Messaggioda Carmelo99 » 28/05/2024, 10:55

Va bene, quindi mi studio benel il FBD. Quindi come componenti del sistema andrei ad implementare:
- Motore DC
- Sensore di velocità

Per implementare il controllo invece:
1. Rilevo la velocità del motore tramite il sensore di velocità
2. Modulo questa velocità tramite PID agendo sulla tensione in entrata al motore

Tutto corretto?

Il problema è che non ho accesso al PLC, quindi non posso testarlo, ma dovrei comunque riuscire a fare tutto con zelio soft e FBD, giusto?

Poi per quanto riguarda il PID, mi basta inserire il blocco tramite zelio soft? Va calibrato immagino. Ho già avuto a che fare con controllo PID (arduino) e per la calibrazione ho perso anni di vita.

Purtroppo ho poco tempo da dedicare a questo progetto e non ho ancora capito quanto tempo mi prenderà, perché poi comunque devo scrivere una relazione.
Carmelo99
Junior Member
Junior Member
 
Messaggio: 112 di 119
Iscritto il: 11/03/2019, 16:30

Re: [Automazione] Controllo velocità Motore DC con PLC

Messaggioda ingres » 28/05/2024, 17:43

Carmelo99 ha scritto:Tutto corretto?

SI

Carmelo99 ha scritto:Il problema è che non ho accesso al PLC, quindi non posso testarlo, ma dovrei comunque riuscire a fare tutto con zelio soft e FBD, giusto?

SI

Carmelo99 ha scritto:Poi per quanto riguarda il PID, mi basta inserire il blocco tramite zelio soft? Va calibrato immagino. Ho già avuto a che fare con controllo PID (arduino) e per la calibrazione ho perso anni di vita.

Come parte di un corso di automazione credo che ci aspetti nella relazione:
- la descrizione del sistema fisico e di controllo tramite uno schema a blocchi con relative funzioni di trasferimento
- il tuning del PID in modo oggettivo tramite l'uso di criteri applicati alla funzione di trasferimento ad anello aperto oppure ad anello chiuso derivante dallo schema a blocchi. Come parametri del PID peraltro mi limiterei solo ai guadagni proporzionale e integrale (eviterei al momento il derivativo).

In tale schema a blocchi l'unica funzione di trasferimento da stimare, al di fuori di quella del PID, è quella del motore (le altre sono sostanzialmente dei valori di conversione).
Questa stima può essere fatta su base teorica avendo i dati del motore e del carico, oppure, se hai a disposizione il motore, sperimentalmente.
In quest'ultimo caso si parte con una tensione applicata tale che il motore stia già girando e sia a regime, e quindi si applica un'ulteriore variazione $Delta V$.
La velocità aumenterà di una quantità $Delta omega$ con un andamento che dovrebbe essere del I ordine.
Si calcola il guadagno statico $a=(Delta omega)/(Delta V)$ e la costante di tempo $tau$ e si inserisce la funzione $F(s)= a/(1+s tau)$ come funzione di trasferimento del motore nello schema a blocchi.
A questo punto assieme alla funzione del PID si dovrebbe avere una funzione di trasferimento in anello chiuso del II ordine che ti permette di valutare i guadagni del regolatore per sintesi diretta.
In alternativa, come detto, comunque esistono parecchi criteri di tuning del PID che puoi usare, a cominciare da quello famoso anche se un pò vecchiotto di Ziegler-Nichols

https://it.wikipedia.org/wiki/Controllo_PID
Chi non vorrà attingere ad altra intelligenza che alla sua, si troverà ben presto ridotto alla più miserabile di tutte le imitazioni: a quella delle sue stesse opere (Ingres)
ingres
Senior Member
Senior Member
 
Messaggio: 1741 di 1753
Iscritto il: 30/10/2022, 11:45

Re: [Automazione] Controllo velocità Motore DC con PLC

Messaggioda Carmelo99 » 04/06/2024, 17:18

Perfetto, grazie. Ho impostato il tutto con PID e senza PID in zelio soft. Illustro quello che ho fatto così potete correggermi se ho fatto degli errori.

Controllo con PID

Immagine

Algoritmo PID
$ u(t) = Kp *e(t) + Ki*int_(0)^(tau) e(tau) d(tau) + Kd * (d)/dt e(t) $

Dove:
• u(t) è il segnale di controllo.
• e(t) è l'errore a tempo t.
• Kp, Ki, e Kd sono i guadagni proporzionale, integrale e derivato.

Implementazione pratica in Zelio Soft 2

Spiegazione del diagramma di controllo PID
• I1 (Abilita): attiva il controllo PID quando l'ingresso è alto.
• NUM (Set Point Speed ​​Input): ingresso della velocità desiderata.
• Blocco PID: implementa l'algoritmo di controllo PID.
• Blocco GAIN: scala l'uscita del controller PID per il motore.
• XT (velocità di uscita): segnale di feedback dal motore, che indica la velocità effettiva.

Descrizione:
1. Ingresso di abilitazione (I1): quando attivo, il circuito di controllo PID è operativo.
2. Ingresso set point (NUM): qui viene inserita la velocità del motore desiderata.
3. Controller PID: confronta la velocità impostata con la velocità effettiva del motore (feedback) e regola il segnale di controllo per ridurre al minimo l'errore.
4. Regolazione guadagno: scala il segnale di controllo dal controller PID.
5. Controllo motore: invia il segnale di controllo in scala al motore, regolandone la velocità.
6. Feedback velocità in uscita (XT): la velocità effettiva del motore viene reimmessa nel controller PID per la regolazione continua.

Grafico Matlab


Immagine



Controlo a Loop aperto


Immagine

Sistema di controllo ad anello aperto
Caratteristiche del controllo ad anello aperto

• Nessun feedback: non si regola in base all'output.
• Azioni di controllo predefinite: basate sulla calibrazione iniziale e sulle impostazioni fisse.
• Semplicità: più facile da progettare e implementare.
• Precisione: dipende dalla calibrazione precisa e dalle condizioni operative stabili.

Processo di calibrazione

1. Definire le prestazioni desiderate:
• Impostare il valore di uscita target (ad esempio, la velocità del motore).
2. Impostare gli ingressi di controllo:
• Determinare sperimentalmente gli input di controllo necessari per raggiungere l'output target in condizioni normali.
3. Test:
• Avviare il sistema con gli ingressi di controllo impostati e misurare l'uscita.
4. Regolazione:
• Regolare gli input di controllo in base ai risultati per ridurre al minimo l'errore tra l'output desiderato e quello effettivo.
5. Calibrazione finale:
• Fissare gli ingressi di controllo una volta ottenute le prestazioni desiderate in condizioni operative normali.

Spiegazione del diagramma di controllo ad anello aperto
• I1 (Abilita): attiva il controllo ad anello aperto quando l'ingresso è alto.
• NUM (Set Point Speed ​​Input): ingresso della velocità desiderata.
• Blocco GAIN (Set Point): scala l'ingresso della velocità del setpoint.
• Blocco GAIN (fattore di calibrazione): regola il segnale di controllo in base a un fattore di calibrazione predefinito.
• XT (Output Speed): Segnale di uscita per la velocità del motore.

Descrizione:
1. Ingresso di abilitazione (I1): quando attivo, il controllo ad anello aperto è operativo.
2. Ingresso set point (NUM): qui viene inserita la velocità del motore desiderata.
3. Scalatura del setpoint (GAIN): scala l'ingresso del setpoint.
4. Fattore di calibrazione (GAIN): regola il segnale di controllo in base alla calibrazione predefinita.
5. Controllo motore: invia il segnale di controllo regolato al motore.
6. Velocità di uscita (XT): determina direttamente la velocità del motore senza regolazione del feedback.

Grafico in MATLAB


Immagine





Regolazione dei controller PID

Passaggi per la regolazione PID

1. Imposta i guadagni iniziali:
• Inizia con Ki=0 e Kd=0.
• Aumentare Kp finché il sistema non oscilla.

2. Regola Kp:
• Trovare il guadagno critico nel punto in cui il sistema inizia a oscillare e impostare Kp su un valore in cui l'oscillazione è accettabile ma non troppo aggressiva.

3. Presenta Ki:
• Aumentare gradualmente Ki per eliminare l'errore di stato stazionario. Osservare la risposta del sistema e interrompere l'aumento del Ki prima che le oscillazioni diventino significative.

4. Aggiungi Kd:
• Aumentare Kd per migliorare la stabilità del sistema e ridurre il superamento.

5. Messa a punto:
• Ottimizzare Kp, Ki e Kd per ottenere l'equilibrio desiderato tra velocità di risposta, stabilità e superamento minimo.


Calibrazione dei sistemi a circuito aperto

Passaggi per la calibrazione
1. Imposta l'output desiderato:
• Definire la velocità target del motore in condizioni operative normali.

2. Ingresso di controllo iniziale:
• Applicare un segnale di controllo e misurare la velocità del motore risultante.

3. Regola l'ingresso di controllo:
• Regolare in modo incrementale l'ingresso di controllo per ridurre al minimo l'errore tra la velocità del motore desiderata e quella effettiva.

4. Fattore di calibrazione della registrazione:
• Una volta raggiunta la velocità desiderata, registrare l'ingresso di controllo come fattore di calibrazione.

5. Test in condizioni:
• Verificare che l'ingresso di controllo calibrato mantenga la velocità desiderata in varie condizioni. Regolare se necessario.




P.s. So che è un po' confusionario, ma ho cercato di riassumere i puntoi chiave del progetto. Ho sbagliato qualcosa? La mia idea è quella di mettere a confronto i due metodi di contorllo utilizzati. Se li ho implementati correttamente però ahahaha

Grazi in anticipo
Carmelo99
Junior Member
Junior Member
 
Messaggio: 113 di 119
Iscritto il: 11/03/2019, 16:30

Re: [Automazione] Controllo velocità Motore DC con PLC

Messaggioda ingres » 04/06/2024, 21:16

Tutto abbastanza corretto.
L'unica osservazione è che il comportamento iniziale del PID è abbastanza "nervoso". Sicuro di non aver esagerato con il derivativo? Io avrei tenuto magari un minimo di sovraelongazione ma un comportamento più "smooth".
Chi non vorrà attingere ad altra intelligenza che alla sua, si troverà ben presto ridotto alla più miserabile di tutte le imitazioni: a quella delle sue stesse opere (Ingres)
ingres
Senior Member
Senior Member
 
Messaggio: 1748 di 1753
Iscritto il: 30/10/2022, 11:45


Torna a Ingegneria

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite