Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Implementazione sw di modello matematico

PLC, servomotori, inverter...robot

Moderatori: Foto Utentedimaios, Foto Utentecarlomariamanenti

0
voti

[11] Re: Implementazione sw di modello matematico

Messaggioda Foto UtenteGioArca67 » 9 ago 2021, 10:08

Robi64 ha scritto:kT^2x(n) + 2kT^2x(n-1) + kT^2x(n-2)

Corretto?


Ma il denominatore?
Avatar utente
Foto UtenteGioArca67
4.565 4 6 9
Master EY
Master EY
 
Messaggi: 4588
Iscritto il: 12 mar 2021, 9:36

1
voti

[12] Re: Implementazione sw di modello matematico

Messaggioda Foto UtenteRobi64 » 9 ago 2021, 10:34

I denominatori coincidono, il tuo con il mio. Il punto è un altro.
Ho effettivamente implementato la stessa formula che hai scritto tu nel dominio del tempo discreto ma qui nasce la discrepanza con le curve del tempo continuo ottenute con i tool di antitrasfotrmazione e con i relativi grafici excel e Desmos.
Osservando le curve della simulazione (Tustin / discrete con VC# e PLC) tutto corrispondeva come ξ ed ω. Cioè impostavo questi parametri e l'andamento nel tempo era quello che ci si aspetta (per fare un esmpio con una ω = 1 il periodo dei picchi era di circa 6,3 sec) . Ma era l'ampiezza della forma d'onda che non coincideva con excel/Desmos (erano metà). Allora mi è venuto spontaneo modificare "a caso" i soli parametri che moltiplicano i campioni dell'input cioè quelli al numeratore (anche se è vero quello che dici dato che il termine che moltiplica y(n) deve essere poi diviso per tutti i termini dell'equazione compresi quelli che moltiplicano i campioni dell'ingresso. Questo è quello che nella tua formula è 4 + 2aT bT^2 ). E dato che le curve erano metà di quelle di excel/Desmos li ho moltiplicati per 2, ma neanche tutti perché il termine che moltiplica x(n-1) l'ho lasciato inalterato. Quindi invece di
kT^2x(n) + 2kT^2x(n-1) + kT^2x(n-2)
ho scritto
2kT^2x(n) + 2kT^2x(n-1) + 2kT^2x(n-2)
ed inspiegabilmente (per me) così coincide tutto.
I parametri del denominatore li ho lasciati così come tornano sia a te che a me
Avatar utente
Foto UtenteRobi64
58 2 6
Frequentatore
Frequentatore
 
Messaggi: 244
Iscritto il: 30 giu 2016, 10:21

0
voti

[13] Re: Implementazione sw di modello matematico

Messaggioda Foto UtenteRobi64 » 9 ago 2021, 14:46

Ho plottato in excel anche la curva nel tempo discreto ottenuta da Tustin.
Coincide con excel. A questo punto c'è qualcosa che non quadra nel VC.
Scusatemi
Grazie per il supporto
Avatar utente
Foto UtenteRobi64
58 2 6
Frequentatore
Frequentatore
 
Messaggi: 244
Iscritto il: 30 giu 2016, 10:21

0
voti

[14] Re: Implementazione sw di modello matematico

Messaggioda Foto UtenteRobi64 » 9 ago 2021, 16:11

GioArca67 ha scritto:Penso Tustin:
s = \frac{2}{T}\frac{1 - z^{-1}}{1 + z^{-1}}

La prima T(s) mi viene trasformata in
T(z)=\frac{k T^{2} (1 + 2 z^{-1} + z^{-2})}{4(1 - 2 z^{-1} + z^{-2}) + a 2 T (1 - z^{-2}) + b T^{2}(1 + 2 z^{-1} + z^{-2})}

dove a=2*ξ*ω e b= ω^2
SE non ho fatto stupidate galattiche...


Nel caso di questa trasformata (la posizione) mi ero dimenticato, trascrivendo la f nel tempo continuo derivante dall'antitrasformazione (quella con i tool di rete), al denominatore un fattore. Quindi sia excel che desmos erano sbagliati ma perché scrivevo una f(t) sbagliata. Ora è tutto allineato, simulazione, excel, Desmos.
Per l'altra T(S), della velocità, ancora no. Non è che avresti voglia di trasformare con Tustin anche questa?
Avatar utente
Foto UtenteRobi64
58 2 6
Frequentatore
Frequentatore
 
Messaggi: 244
Iscritto il: 30 giu 2016, 10:21

1
voti

[15] Re: Implementazione sw di modello matematico

Messaggioda Foto UtenteRobi64 » 10 ago 2021, 14:42

Ne sono venuto a capo. Facevo un errore nella gestione del segnale di input (il gradino) nel passare da zero a 1 proprio al transitorio. Ovvero alla prima iterazione il valore della velocità era calcolato correttamente ma alla seconda iterazione Gradino(n-2) era già a 1, ciò essendo errato. Questo si ripercuoteva pesantemente per il calcolo dei valori successivi. Per qualche ragione il calcolo della posizione non era distorto da tale errore o forse lo era ma il valore dell'errore era molto piccolo per caso.
O_/
Avatar utente
Foto UtenteRobi64
58 2 6
Frequentatore
Frequentatore
 
Messaggi: 244
Iscritto il: 30 giu 2016, 10:21

0
voti

[16] Re: Implementazione sw di modello matematico

Messaggioda Foto UtenteGioArca67 » 10 ago 2021, 17:50

C'è qualcosa che non mi torna.
Ma il gradino non è 0 per n<0 e 1 per n>=0?
Avatar utente
Foto UtenteGioArca67
4.565 4 6 9
Master EY
Master EY
 
Messaggi: 4588
Iscritto il: 12 mar 2021, 9:36

0
voti

[17] Re: Implementazione sw di modello matematico

Messaggioda Foto UtenteMarcoD » 10 ago 2021, 18:08

Ma il gradino non è 0 per n<0 e 1 per n>=0?
O forse è 1 costante, ma tutte le variabili X(i), i= -2,-1,0 sono inizializzate a zero.
Avatar utente
Foto UtenteMarcoD
12,2k 5 9 13
Master EY
Master EY
 
Messaggi: 6696
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[18] Re: Implementazione sw di modello matematico

Messaggioda Foto UtenteRobi64 » 11 ago 2021, 9:03

GioArca67 ha scritto:C'è qualcosa che non mi torna.
Ma il gradino non è 0 per n<0 e 1 per n>=0?

Esatto ma come dicevo c'era un errore nel sw di simulazione.

Nella formula discreta della velocità la dipendenza dall'input (ovvero il numeratore della T(S) ) è

2kT* x(n) - 2kT * x(n-2) se antitrasformi T(s) lo vedi perché viene
2kT(1-z^-2) (non riesco a scrivere z alla meno 2 con latex) a meno che non ho sbagliato anche li ma ormai non credo più perché coincide tutto. Ah ovviamente x(..) è l'ingresso al sistema, in questo caso il gradino unitario.
Ovvero non si considera mai il campione precedente all'attuale ma quello ancora prima.
Per cui alla prima iterazione x(n) è si 1 ma ancora x(n-1) e x(n-2) sono nulli ed infatti il primo campione della Y ovvero della posizione è giusto.
Ma al ciclo successivo dovrei avere x(n) = 1, x(n-1) = 1 (anche se non conta) ed x(n-2) = 0 e così funziona.
Ma io per errore nel codice del loop, già all'iterazione qui sopra, caricavo x(n-2) = 1.
Facendo girare il loop a step mi sono accorto che il secondo valore di Y nel ciclo era appunto diverso da excel.
Allora nella colonna con le formule di excel (dove invece la curva è quella corretta) in seconda posizione, invece della formula, ho forzato il valore risultante da sw di simulazione. Valore sbagliato ovviamente ma a quel punto le curve excel e simulata erano identiche.
Allora ho guardato cella dopo cella in excel e alla seconda ho visto che x(2) = 1 mentre x(0) = 0.
Nel loop del sw x(2) = 1 e x(0) = 1.
Questo porta ad avere una Y(2) più piccola di circa la metà. Questo poi genera una curva più bassa anche successivamente dato che è un processo con memoria come tutti i filtri.
Poi nel prosieguo l'errore veniva camuffato dal fatto che essendo un gradino x(n) e x(n-2) sono sempre = 1 a parte il transitorio quando torna a zero.
Avatar utente
Foto UtenteRobi64
58 2 6
Frequentatore
Frequentatore
 
Messaggi: 244
Iscritto il: 30 giu 2016, 10:21

0
voti

[19] Re: Implementazione sw di modello matematico

Messaggioda Foto Utenteclaudiocedrone » 11 ago 2021, 9:15

x^{{-}{2}} per gli esponenti negativi devi abbondare con le graffe :-) metti il cursore su ciò che ho scritto per visualizzare come.

P. s. Non usare l'asterisco per indicare il prodotto.
"Non farei mai parte di un club che accettasse la mia iscrizione" (G. Marx)
Avatar utente
Foto Utenteclaudiocedrone
21,3k 4 7 9
Master EY
Master EY
 
Messaggi: 15300
Iscritto il: 18 gen 2012, 13:36

0
voti

[20] Re: Implementazione sw di modello matematico

Messaggioda Foto UtenteRobi64 » 11 ago 2021, 9:17

MarcoD ha scritto:Ma il gradino non è 0 per n<0 e 1 per n>=0?
O forse è 1 costante, ma tutte le variabili X(i), i= -2,-1,0 sono inizializzate a zero.


Esatto, ma come scrivevo poco fa al secondo ciclo scrivevo 1 in x(n-2).
Esempio

Ciclo 1) : x(-2) = 0 , x(-1) = 0 , x(0) =1 => Y(0) corretta
Ciclo 2) : x(-1) = 1 , x(0) = 1 , x(1) =1 => Y(1) errata perché dovrebbe essere x(-1) = 0 e non 1
..
..
..
Ciclo n) : x(n-2) = 1 , x(n-1) = 1 , x(n) =1 => Y(n) è corretta solo se non è inficiata dall'errore del ciclo 2 e se non siamo al transitorio di spegnimento del gradino dove dovrà essere allora

Ciclo m) : x(m-2) = 1 , x(m-1) = 1 , x(m) =0
Ciclo m+1) : x(m-1) = 1 , x(m) = 0 , x(m+1) =0
Ciclo m+2) : x(m) = 0 , x(m+1) = 1 , x(m+2) =0
Avatar utente
Foto UtenteRobi64
58 2 6
Frequentatore
Frequentatore
 
Messaggi: 244
Iscritto il: 30 giu 2016, 10:21

PrecedenteProssimo

Torna a Automazione industriale ed azionamenti

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti