Pagina 1 di 2

Matlab-Simulink

MessaggioInviato: 16 giu 2012, 16:58
da dlbp
Ciao a tutti. Se definisco una funzione di trasferimento in Matlab (e ce l'ho quindi nel workspace) posso esportarla in qualche modo in Simulink senza bisogno di riscriverla di nuovo? C'è qualche blocchetto che lo fa?
Grazie a tutti

Re: Matlab-Simulink

MessaggioInviato: 16 giu 2012, 17:24
da dimaios
Supponiamo di definire una funzione di trasferimento continua nel workspace di Matlab.

Codice: Seleziona tutto

Gs = tf([1 1],[1 1 1])



Se vogliamo estrarne il numeratore ed il denominatore possiamo impiegare la funzione tfdata.

Codice: Seleziona tutto
[Num,Den] = tfdata( Gs ,'v' )


Num e Den possono essere successivamente impiegati nel blocco Simulink denominato Transfer Fcn.

Una alternativa è quella di esprimere il sistema in variabili di stato tramite il seguente comando.

Codice: Seleziona tutto
[Ac,Bc,Cc,Dc] = tf2ss( Num , Den )


E successivamente utilizzare le quattro matrici inserendole nel blocco Simulink State Space.


Scegli in base all'analisi che devi fare ovvero se il sistema è a priori espresso in forma poli-zeri oppure in variabili di stato.

Re: Matlab-Simulink

MessaggioInviato: 16 giu 2012, 17:30
da dlbp
Grazie mille Foto Utentedimaios. Vorrei chiederti un'altra cosa: per digitalizzare in Matlab ho il comando "c2d". Se voglio digitalizzare un sistema in Simulink dovrei mettere un campionatore per ottenere il sistema digitalizzato. Giusto? Ma questo blocchetto esiste? Come si chiama?
Mi risolveresti un grande problema.
Grazie mille

Re: Matlab-Simulink

MessaggioInviato: 16 giu 2012, 17:50
da dimaios
Il blocco Zero-Order Hold potrebbe fare al caso tuo ma stai molto attento.
Infatti la correttezza dei risultati è legata anche al solutore.

Se guardi i Configuration Parameters .... di Simulink vedrai che puoi selezionare algoritmi a passo fisso o variabile discreti o con stati continui ( es. ODE45 ) ( guarda i parametri Solver e Type ).

Il passo di simulazione è fondamentale. Infatti deve essere sempre inferiore a quello di discretizzazione del sistema altrimenti non funziona più nulla.

Fondamentalmente ti consiglio questo.
Se devi simulare un sistema completamente discreto esegui la discretizzazione nel workspace Matlab e simula con Simulink utilizzando solutori discreti.
Se invece il sistema è un mix di funzioni di trasferimento continue e discrete allora utilizza lo Zero-Order Hold impostando correttamente i parametri di simulazione ed il Sample Time del blocco stesso.

Re: Matlab-Simulink

MessaggioInviato: 16 giu 2012, 17:55
da dlbp
Foto Utentedimaios ma lo zero-order hold non è un mantenitore? Cioè dovrebbe effettuare la conversione digitale-analogico. A me serve la conversione opposta. Ho una fdt tempo continuo e devo trovare la corrispondente fdt tempo discreto. :D

Re: Matlab-Simulink

MessaggioInviato: 16 giu 2012, 18:23
da dimaios
Infatti. Quando importi un modello discreto l'informazione sul periodo di campionamento è inclusa nella rappresentazione interna per cui il simulatore tratta la funzione di trasferimento in modo coerente.

Se hai un sistema discreto nel workspace e lo importi in Simulink tramite il blocco discrete Transfer Fcn puoi specificare la discretizzazione nella finestra associata al componente.

La conversione dei modelli ( continuo / discreto ) la devi fare nel workspace mentre l'adattamento dei segnali nello schema la puoi fare tramite il blocco zero-order hold se esiste un mix tra continuo e discreto. Attenzione a non confondere le cose.

Re: Matlab-Simulink

MessaggioInviato: 16 giu 2012, 18:26
da dlbp
Quindi non posso convertire (da analogico a digitale) direttamente in Simulink? Non c'è modo per farlo?

Re: Matlab-Simulink

MessaggioInviato: 16 giu 2012, 18:31
da dimaios
Non è previsto perché non avrebbe senso.
Simulink nasce come ambiente di simulazione e non come ambiente di sintesi.
E' per questo che devi sintetizzare il controllo nel workspace di Matlab.

Comunque ho riletto il post precedente dove hai scritto :

Se voglio digitalizzare un sistema in Simulink dovrei mettere un campionatore per ottenere il sistema digitalizzato. Giusto?


La risposta è no. La trasformazione di un sistema continuo in uno discreto non è il semplice campionamento dell'ingresso e dell'uscita ma qualcosa di molto più articolato. Ti consiglio di riguardare la teoria.

Re: Matlab-Simulink

MessaggioInviato: 16 giu 2012, 18:36
da dlbp
Lo so che non si limita solo ad un campionatore. Ho detto così solo perché il prof. ci avevo disegnato lo schema a blocchi, nel quale per ottenere il sistema digitale ha messo il sistema continuo in ingresso ad un campionatore. Ma il prof. non ci ha detto cosa c'è dietro. Quali sono i concetti che dovrei vedere? Grazie mille

Re: Matlab-Simulink

MessaggioInviato: 16 giu 2012, 18:57
da dimaios
Questo documento è fatto molto bene.
Attento alla definizione di campionamento ideale !