Automatizzare sistema in Simulink

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto Utentesteelman
0 2
Messaggi: 16
Iscritto il: 26 mar 2012, 16:30
0
voti

[1] Automatizzare sistema in Simulink

Messaggioda Foto Utentesteelman » 31 gen 2013, 11:24

Gentili esperti del forum,
sono un ingegnere civile, quindi non sono molto esperto di programmazione, per questo mi scuso in anticipo se la mia discussione può risultare agli occhi di persone più esperte di me un vera sciocchezza. :D
Ho creato un modello in simulink per effettuare alcune simulazioni. Allegato al present post.
due_vasche_in_serie.zip
(11.58 KiB) Scaricato 180 volte

Per generare il sistema, ho utilizzato diversi blocchi, quali: gain, sistemi lineari con funzione di trasferimento, e traslazione temporale.
poiché devo tarare il modello, quindi devo effettuare un gran numero di simulazioni...la mia domanda è:
C'è un modo per automatizzare il cambio di parametri presenti nel modello? Cioè posso creare un vettore di valori da assegnare ai gain, alle funzioni di trasferimento e ai lag-time? Oppure devo variare volta per volta manualmente i suddetti parametri?
Ringrazio tutti per la gentile partecipazione alla mia problematica.

Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes
1
voti

[2] Re: Automatizzare sistema in Simulink

Messaggioda Foto Utentedimaios » 31 gen 2013, 17:47

Lo puoi fare con il comando sim di Matlab. ( link ).
In pratica puoi simulare con piu' combinazioni delle variabili di ingresso fornendole come parametri e ricavi come variabili di uscita stati e segnali per il post-processing.
Ingegneria : alternativa intelligente alla droga.

Avatar utente
Foto Utentesteelman
0 2
Messaggi: 16
Iscritto il: 26 mar 2012, 16:30
0
voti

[3] Re: Automatizzare sistema in Simulink

Messaggioda Foto Utentesteelman » 1 feb 2013, 15:57

Caro dimaios, meno male che esisti, ogni volta che ho dei dubbi, compari e mi fornisci dei formidabili suggerimenti! :D
In ogni caso, poiché sono abbastanza impedito in termini di programmazione, purtroppo :( , non vorrei risultare ripetitivo e logorroico, ma non ho capito una cosa.
Il comando sim, mi permette di simulare più volte il sistema cambiando la sola funzione di ingresso? Oppure di volta in volta è possibile cambiare anche la funzione di trasferimento dei miei blocchi?
Questo procedimento spero sia automatico, cioè volendo simulare il sistema 10000 volte, pensavo di impostare diversi vettori contenenti 10000 valori di ciascun parametro. ?%
Grazie in anticipo.

Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes
3
voti

[4] Re: Automatizzare sistema in Simulink

Messaggioda Foto Utentedimaios » 1 feb 2013, 19:00

Per cambiare la funzione di trasferimento dei blocchi basta che siano parametrizzati rispetto ai valori del workspace di Matlab.

Se per esempio vuoi definire una funzione di trasferimento del tipo :

G(s) = \frac{1}{s + 1}

Nel workspace assegni al numeratore e al denominatore i valori :

Codice: Seleziona tutto

num = 1;
den = [1 1];
Gs = tf( num , den );


In Simulink inserisci i medesimi vettori rappresentati i rispettivi polinomi nella variabile complessa s nel blocco Transfer Function come illustrato in figura.

SimulinkAndMatlab2.png
SimulinkAndMatlab2.png (57.42 KiB) Visto 5718 volte


Analogamente puoi fare con i guadagni statici ecc.
Ingegneria : alternativa intelligente alla droga.

Avatar utente
Foto Utentesteelman
0 2
Messaggi: 16
Iscritto il: 26 mar 2012, 16:30
0
voti

[5] Re: Automatizzare sistema in Simulink

Messaggioda Foto Utentesteelman » 2 feb 2013, 17:25

Grazie mille dimaios, ora inizio a capire qualcosina in più!! :ok:
Volevo solo chiederti un'altra piccola cosa. Con la procedura che mi hai suggerito, riesco ad inserire i parametri che mi servono nel modello in simulink dal workspace. Se volessi inserirli da un file.m?
infatti se riuscissi ad immetterli da un file.m potrei creare un ciclo tale che mi inserisca in ogni step un certo set di parametri e simuli il modello salvando il max dell'uscita in un vettore. FANTASTICO!!!! :shock:
Grazie ancora

Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes
1
voti

[6] Re: Automatizzare sistema in Simulink

Messaggioda Foto Utentedimaios » 2 feb 2013, 17:27

Scrivere uno script .m è equivalente a lanciare nel workspace le istruzioni in modo sequenziale per cui lo puoi fare tranquillamente, anzi è la strada che devi assolutamente percorrere.
Ingegneria : alternativa intelligente alla droga.

Avatar utente
Foto Utentesteelman
0 2
Messaggi: 16
Iscritto il: 26 mar 2012, 16:30
0
voti

[7] Re: Automatizzare sistema in Simulink

Messaggioda Foto Utentesteelman » 3 feb 2013, 18:06

Ho provato a creare uno script matlab... ma ho un piccolo dubbio... Questo è il codice:

Codice: Seleziona tutto

for i = 1 : 1 : length(s1)
    tc1(i,1)= sqrt(s1(i,1));
    tc2(i,1)= sqrt(s2(i,1));
    tl1(i,1)= tc2(i,1)-tc1(i,1);
    tl2(i,1)= 1-tc2(i,1);
    due_vasche_in_serie.mdl
end


dove ho inserito il file.m dovrebbe partire simulink e quindi simulare il sistema con i parametri che gli indico...quale codice posso utilizzare per far partire simulink all'interno del ciclo?
inoltre a me non serve l'intera risposta del sistema ma solo il suo massimo valore, hai qualche suggerimento per estrarre il max della risposta e stamparlo in un vettore a parte?
cioè mi interesserebbe una cosa del tipo:
eta(i,1)=max simulazione.... ?%
spero di essere stato chiaro, anche perché ho dei dubbi e non vorrei che falsassero le mie indicazioni :oops:
Ciao, confido in una tua fondamentale risposta dimaios... :D

Avatar utente
Foto Utentesteelman
0 2
Messaggi: 16
Iscritto il: 26 mar 2012, 16:30
0
voti

[8] Re: Automatizzare sistema in Simulink

Messaggioda Foto Utentesteelman » 3 feb 2013, 18:07

PS a monte dello script che ho inserito c'è l'intero codi per richiamare tutte le variabili...quello che ho inserito è solo la porzione in cui ho dei dubbi.... :D

Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes
1
voti

[9] Re: Automatizzare sistema in Simulink

Messaggioda Foto Utentedimaios » 4 feb 2013, 11:03

Non capisco cosa hai fatto nel codice che hai scritto.
Come suggerito dovevi impiegare la funzione :

Codice: Seleziona tutto

sim('due_vasche_in_serie');


Poi tramite il blocco SimOut ti esporti nel workspace la variabile ed esegui il post-processing per trovarti il massimo.

Sinceramente non avrei impiegato Simulink per una simulazione del genere ma avrei scritto le equazioni del sistema direttamente all'interno dello script Matlab.
Ingegneria : alternativa intelligente alla droga.

Avatar utente
Foto Utentesteelman
0 2
Messaggi: 16
Iscritto il: 26 mar 2012, 16:30
0
voti

[10] Re: Automatizzare sistema in Simulink

Messaggioda Foto Utentesteelman » 4 feb 2013, 16:21

Sono riuscito nel mio intento. Ti ringrazio dimaio, sempre disponibile e molto preparato!! O_/


Torna a “Programmi applicativi: simulatori, CAD ed altro”