Vai al contenuto
PLC Forum


Costruire Un Pid


roberto8303

Messaggi consigliati

ok...ci sto lavorando ma i calcoli per ''normalizzare'' i tre valori da pannello set point kp e chi mi stanno portando via un bel po di tempo,o escono numeri infiniti o il box diventa rosso, sto sbagliando qualcosa, tutto questo perche, nella differenza del SET POINT - RIF TACHO voglio che sia un box in real,e non un box sottrazione di numeri intero, in modo da non perdere decimali nella sottrazzione. :angry:

quindi il fermo del motore avviene perche nel riferimento ci dovra essere 0 punti e 0volt non solo con il contatto aperto forward o reverse...

Link al commento
Condividi su altri siti


  • Risposte 89
  • Created
  • Ultima risposta

Top Posters In This Topic

  • roberto8303

    58

  • Livio Orsini

    32

SET POINT - RIF TACHO

Roberto azzzz..., ma guarda un poco come sono le variabili! :lol:

Tacho la leggi e la converti A/D in numero 0<n<32000, che è intero! Idem per il set point o valore di consegna.

L'errore in questo caso può essere solo un intero. Idem se lavori con un encoder, non esistono decimanli d'impulsi, almeno il contatore o conta un impulso o non lo conta :)

L'unico calcolo dove serve veramente il real è l'integrale. Perchè? perchè se moltiplichi un errore >=1 per un coefficiente <1 hai dei decimali, decimali che integrati, cioè sommati, alla fine possono causare un errore grande se trascurati.

Quindi tutto in integer trannne il calcolo dell'integrale che, alla fine, ritrasformi in intero per sommarlo al proporzionale. idem per l'eventuale derivativo.

Anche l'uscita del D/A_C può essere solo un intero. Se anche usi bus di campo per collegarti all'inverter tutti i comandi ed i dati sono in interi.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

voglio che sia un box in real,e non un box sottrazione di numeri intero, in modo da non perdere decimali nella sottrazzione.

:lol:non farci caso stamattina ero un po nervoso e confuso :rolleyes: per via del hmi, delle cifre prima e dopo il punto e il punto ecc ecc

comunque, ti aggiorno come va, ho completato tutto e i calcoli li ho corretti tutti, anche quelli integer che volevo fare in real :) c era ancora il problema della divsione per 100 per il riferimento da pannello, che poi ho spostato nell interrupt e li rimane stabile come lo scrivo nel pannello ;)

Allora, sono partito con riferimento 25000 e kp 0.55 e chi 0,25 e tutto sembra funzionare, il motore ruota costante il riferimento è preciso a 5,70volt anche se vedo sull inverter che la frequenza oscilla, freno il motore il valore della frequenza si alza, è cosa piu bella sull osciolloscopio è ancora piu stabile il segnale! quindi rilascio il motore, riprende i giri e lo faccio ruotare a vuoto,dopo circa 7-8 secondi sul andamento della tabella di stato, dove l andamento del segnale della tacho e dell uscita al motore 0-10v era una ''linea bella dritta'' incomincia ad increstarsi...e il motore appena appena a singhiozzare, quindi lo rifreno e si appiattisce di nuovo tutto, che vuole dire? perche con il tempo nasce un instabilita? entra forse in gioco la parte Derivativa??

Link al commento
Condividi su altri siti

entra forse in gioco la parte Derivativa??

Se la componente derivativa non ce l'hai non può essere dovuto al derivativo.

Da come descrivi sembra esserci un guadagno tropo elevato; potrebbe anche trattarsi di disturbi, ma in questo caso l'instabilità va e viene.

..anche se vedo sull inverter che la frequenza oscilla,...
Questo dovrebbe essere corretto; il regolatore varia la frequenza per mantenere costante la velocità, se fosse un motore in cc vedresti variare la tensione di armatura.

Tieni presente che il proporzionale corregge gli errori dinamici e l'integrale quelli statici (non proprio corretto al 100% ma può andare :) ).

Quindi se abbassi il Ki impiega più tempo a recuperare l'errore ma aumenta la stabilità; idem se riduci Kp: l'errore istantaneo aumenta ma il sistema è più stabile.

Comunque Roberto l'esperienza bisogna farsela poco alla volta; ascoltare i consigli di uno più esperto aiuta, ma certe cose si devono imparare sulla propria pelle enon esiste altro metodo.

Link al commento
Condividi su altri siti

Se la componente derivativa non ce l'hai non può essere dovuto al derivativo.

no io intendevo che la devo implementare, è il caso? che effetto avra in tal caso?

Quindi se abbassi il chi impiega più tempo a recuperare l'errore ma aumenta la stabilità

e infatti poi ho provato anche ad aumentarlo ed inizia ad oscillare ancora di piu!

L unica cosa non so se si puo fare, vorrei che quando freno il motore invece di aumentare es di 100 la correzione proporzionale, di 150volte, cosi ho piu riferimento o su un sistema a motore dc piu volt sull armatura. come posso fare? secondo me non sto chiedendo troppo, perche ora la regolazione si tiene costante per tenermi il riferimento tacho preciso quando il motore assorbe sull display inverter 0.50A a 0.51A quando lo freno, se lo freno un po di piu a 0.52A il rif tacho se ne scende di 15millivolt...io vorrei recuperarli è possibile?purtroppo se aumento il kp il sistema diventa instabile!

Comunque Roberto l'esperienza bisogna farsela poco alla volta; ascoltare i consigli di uno più esperto aiuta, ma certe cose si devono imparare sulla propria pelle enon esiste altro metodo.

Purtroppo io ho avuto sempre un po questo ''limite'' cio che studio, puo darsi che l ho capito, ma non è detto che lo sappia fare se non lo metto in pratica e funziona! :)

Comunque i tuoi consigli sono piu che preziosi!! l altra giorno ho dato uno sguardo sul pid assistito della cpu, e ti giuro che mi sembra molto piu facile questo che mi hai consigliato,fatto nascere da 0 che non quelli belli e pronti! so che ci vorra un po di tempo e prove per poi capire le differenze tra i due!

Link al commento
Condividi su altri siti

:)

...vorrei che quando freno il motore invece di aumentare es di 100 la correzione proporzionale,.....

Ohh andiamo nel sofisticato! :) Certo che si può fare, ma comincia ad essere una ricetta per chef raffinati, non per casalinghi/e alle prime armi :lol: Queste son tutte "porcate" immonde che si fanno con l'esperienza e quando si è arrivati alla canna del gas :)

Però comicia a fare qualche prova con un bell'anticipo di reazione. E' un derivativo, ma non sull'errore bensì sulla tachimetrica. Gli analogici ce l'anna tutti.

Leggi la tachimetrica e confronta con la lettura precedente. Ci sarà una differenza. Metti una soglia, se il delta supera la soglia allora correggi. In che modo? Iniziamo in modo semplice. Moltiplichi la differenza per un Kd e sommi al proporzionale ed all'integrale, verificando che il totale non ecceda i famosi 2047. Ovviamente attenzione al segno! Non ti dico di più così ci ragioni sopra e lo capisci meglio :superlol:

Link al commento
Condividi su altri siti

mi sembra un indovinello :) comunque avevo pensato gia di fare in un modo sara di sicuro sbagliato scommetto...cioe:

Adesso quando il motore ruota ''libero'' io ho fatto in modo che es 25000punti di set point l inverter fa ruotare il motore ad una velocita che la tachimetrica mi restituisce 24950 punti posso manipolare il segnale di 0-10volt che mando all inverter affinche mia dia una frequenza di uscita diversa...

quindi avevo pensato, se invece di farmi restituire 24950, faccio in modo da avere es 24000 l errore sara invece di 25000-24950, 25000-24000 quindi 1000! quando il motore pero ruota libero quindi a sistema neutro metto un limite in modo che non si considerano quei 1000punti, ma che servono solo per amplificare l errore e quindi l azione di correzione quando ce ne bisogno.

è solo un pensiero eh, sicuro sara sbagliato, quindi ora mi concentro un po a capire quello che mi hai scritto sperando di arrivarci... :)

Link al commento
Condividi su altri siti

Network 14

// CALCOLO LA DIFFERENZA DEL VALORE TACHIMETRICA ISTANTANEO - IL VECCHIO VALORE 20MS PRIMA.

LD SM0.0

INVW VW200

INCW VW200

+I AIW0, VW200

Network 15

// TRASFORMO IL RISULTATO IN DOPPIO INTERO

LD SM0.0

ITD VW200, VD60

Network 16

// TRASFORMO IL DOPPIO INTERO IN REAL PER POTERLO MOLTIPLICARE CON KD

LD SM0.0

DTR VD60, VD64

Network 17

// KD=0.15 LO MOLTIPLICO PER IL VECCHIO VALORE DELLA TACHIMETRICA

LD SM0.0

MOVR VD64, VD74

*R 0.15, VD74

Network 18

// LIMITI SUL DERIVATIVO POSITIVO

LD SM0.0

AR> VD74, 2047.0

MOVR 2047.0, VD74

Network 19

// LIMITI SUL DERIVATIVO NEGATIVO

LD SM0.0

AR< VD74, -2047.0

MOVR -2047.0, VD74

Network 20

// ARROTONDO IL DERIVATIVO REAL A DOPPIO INTERO

LD SM0.0

ROUND VD74, VD68

Network 21

// TRASFORMO IL DERIVATIVO VD68 IN NUMERO INTERO

LD SM0.0

DTI VD68, VW300

Network 22

// SOMMO IL PROPORZIONALE + L INTEGRALE RISULTATO IN VW108

LD SM0.0

MOVW VW100, VW108

+I VW106, VW108

Network 23

// SOMMO (P+I) + D RISULTATO IN VW110

LD SM0.0

MOVW VW108, VW110

+I VW300, VW110

Network 24

// SOMMO VW110 CON SET POINT VW102 E METTO IN USCITA.

LD SM0.0

MOVW VW110, VW112

+I VW102, VW112

Network 25

LD SM0.0

MOVW VW112, AQW0

comincia ad essere una ricetta per chef raffinati, non per casalinghi/e alle prime armi

purtoppo non sono bravo a cucinare :P

Queste son tutte "porcate" immonde che si fanno con l'esperienza e quando si è arrivati alla canna del gas

dove sta l errore? che il box differenza del primo segmento mi diventa rosso a volte? e il riferimento derivativo cambia spesso di segno?? :blink:

non farmi aprire la canna del gas!! :superlol:

Link al commento
Condividi su altri siti

Leggi la tachimetrica e confronta con la lettura precedente. Ci sarà una differenza

TITLE=COMMENTI SUL PROGRAMMA

Network 1 // Titolo del segmento

// trasferisco AIW0 IN VW200

LD SM0.0

MOVW AIW0, VW200

Network 2

// VW200-VW202 RISULTATO IN VW204

LD SM0.0

MOVW VW200, VW204

-I VW202, VW204

Network 3

// SPOSTO IL RIFERIMENTO ISTANTANEO VW200 IN VW202 CHE SARA LA MEMORIA DEL VECCHIO CAMPIONAMENTO

LD SM0.0

MOVW VW200, VW202

purtroppo oggi non ho avuto modo di provare, ma penso si faccia cosi per leggere la tachimetrica e poi confrontarla con la memoria della vecchia lettura...è giusto??

Link al commento
Condividi su altri siti

Si, hai messo in VW204 il differenziale di velocità (con dt = 20ms) ed in VW202 la memoria dell'ultimo campionamento

Link al commento
Condividi su altri siti

Allora, ho provato anche il derivativo, non sono tanto soddisfatto di come il sistema risponde, devo riuscire a regolare bene i tre fattori kp chi e kd, con il metodo che mi hai detto,non l ho fatto perche ho rimasto nella prova kp a 0,4 chi a 0,18 e kd l ho provato sia a 0.05 che fino a 0,4 e ho notato due funzionamenti diversi, con kd basso il sistema sembra rispondere bene, aumentando la frequenza, ma a motore libero comunque ci sono oscillazioni che in ogni modo modificando o kp o chi non riesco a stabilizzare. quando invece alzo kd succede che a motore libero le oscillazioni sono piu deboli meno nervose, ma piu lunghe nel tempo nel variare da un min di 6,70 volt a 7,30volt circa , valore misurato sulla tachimetrica con l oscilloscopio.e in piu andando a vedere nella tabella di stato, il limite che ho messo alla derivata di 2047 e -2047 spesso fa avverare il confronto. ah comunque il derivativo cambia spesso di segno è normale?

Link al commento
Condividi su altri siti

Il derivativo è un filtro passa alto, quindi esalta tutti i transitori disturbi compresi; va usato con moderazione e molta attenzione. E' normale che inverta spesso di segno, se ci ragioni bene capisci che deve essere così.

Attenzione, non si può spremere sangue da un rapa. Più di tanto un sistema non può dare. Un azioanmento composta da asincrono e inverter V/f non può dare le prestazioni di un cc. Con l'anello esterno di velocità puoi arrivare ad annullare, a regime, gli errori di velocità; le prestazioni di reattività alle prese di carico rimarranno inevitabilmente legate alle prestazioni del sistema, cioè lente.

Link al commento
Condividi su altri siti

ho capito, vabbe a me è servito per imparare praticamente, comunque il prossimo regolatore con plc devo avere la possibilita di collegare il pannello e plc sulla cpu! è molto comodo visualizzare nella tabella di stato le variazioni del P I D variando kp chi kd.

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