Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema funzione di trasferimento MatLab/Simulink

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

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

0
voti

[1] Problema funzione di trasferimento MatLab/Simulink

Messaggioda Foto UtenteTidus » 23 gen 2017, 20:23

Salve a tutti! O_/
Ecco il mio problema: sto analizzando un modello elettrico di un'interfaccia microelettrodo-cellula e, per prima cosa, dovrei studiarne il comportamento in frequenza, tramite un classico diagramma di Bode.
Il circuito è questo:


dove Z è un'impedenza complessa, la cui formula è:
Z = \frac {1}{(j\omega \cdot C_{dl})^n }            ,          0 < n < 1.
Devo ammettere che la Z, così scritta, con quell'esponente, mi sembra alquanto strana; nell''articolo accademico dal quale sto prendendo questo modello, gli autori sostengono che un' impedenza ad angolo di fase costante (piuttosto che un condensatore) risulta in miglior accordo con le misurazioni ottenute ed n è un fattore empirico relativo alle irregolarità della superficie.

Ho allora inizialmente provato a disegnare il circuito su Simulink (primo utilizzo per me), ma mi sono bloccato quasi subito, perché ho notato che nella libreria Simscape non è presente il componente impedenza, il quale compare invece nella libreria SimRF. L'ho comunque selezionato, ma, quando faccio partire la simulazione del circuito, ottengo questo messaggio di errore: "Transfer function is not allowed in core Simscape.". Non ho trovato ancora nessuna spiegazione del perché ottenga questo errore, forse potrebbe essere dovuto al fatto che non stia usando tutti componenti Simscape e al software questo non piaccia.

Qualcuno potrebbe aiutarmi su questo fronte?

Ad ogni modo, ho allora provato ad agire sul fronte MatLab: nello stesso paper, è scritta la funzione di trasferimento:
H(j\omega) = \frac {R_{seal} \cdot C_{load}}{R_{seal} \cdot Z_{m} + (R_{seal} + Z_{m})\cdot (C_{load}+Z_{el}) }
dove:
Z_{m}(j\omega) = \frac {1+j\omega R_{m} \cdot (C_m + C_{hd})}{(1+j\omega R_{m} \cdot C_m) \cdot (j\omega C_{hd})}
Z_{el}(j\omega) = \frac {R_{ct}}{1+R_{ct} \cdot(j\omega C_{dl})^n}

Ma anche qui trovo degli ostacoli: documentandomi sulle varie guide, ho notato che in MatLab, il comando Bode(sys) ha bisogno di una funzione di trasferimento "canonica", del tipo H(s) = \frac{1}{s+1} .
C'è un altro modo per ottenere un diagramma di Bode, partendo da una funzione di trasferimento "non canonica" come la mia?
Ho anche pensato di fare la sostituzione j\omega = s e poi carta e penna sostituire Z_{m}(s) e Z_{el}(s) in H(s) in modo tale da ottenere una funzione di trasferimento nel formato che piace al comando Bode(sys), ma, a parte il casino che ne uscirebbe fuori, il problema principale sarebbe di nuovo quel fattore s^n che non saprei come maneggiare.

C'è qualcuno che mi saprebbe dare una mano? Mi piacerebbe di più risolvere con Simulink, perché poi mi piacerebbe direttamente lavorare con il circuito e fare delle modifiche per vedere come varia il comportamento in frequenza, ma visto come stanno le cose, mi basterebbe anche sistemare dal lato MatLab!

Grazie mille! ;-)
Avatar utente
Foto UtenteTidus
18 3
 
Messaggi: 18
Iscritto il: 18 lug 2011, 13:29

0
voti

[2] Re: Problema funzione di trasferimento MatLab/Simulink

Messaggioda Foto Utenteg.schgor » 23 gen 2017, 22:12

Se mi dai i valori, te lo simulo con Microcap.
Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[3] Re: Problema funzione di trasferimento MatLab/Simulink

Messaggioda Foto UtenteDanteCpp » 23 gen 2017, 22:25

Qua c'è una panoramica.

A me piace definire prima la variabile complessa

Codice: Seleziona tutto
s=tf([1 0],[1])


e poi costruire le funzioni di trasferimento più complesse come composizione di questa e funzioni elementari.
Avatar utente
Foto UtenteDanteCpp
4.730 3 9 13
Master EY
Master EY
 
Messaggi: 1106
Iscritto il: 15 dic 2011, 18:51

0
voti

[4] Re: Problema funzione di trasferimento MatLab/Simulink

Messaggioda Foto UtenteMarkyMark » 23 gen 2017, 22:29

Come può Z essere un'impedenza se n \neq 1? Non mi tornano le dimensioni :-M
mark
Avatar utente
Foto UtenteMarkyMark
3.422 2 5 6
Master EY
Master EY
 
Messaggi: 518
Iscritto il: 11 giu 2016, 12:01

1
voti

[5] Re: Problema funzione di trasferimento MatLab/Simulink

Messaggioda Foto UtenteSandroCalligaro » 23 gen 2017, 22:31

DanteCpp ha scritto:A me piace definire prima la variabile complessa
Codice: Seleziona tutto
s=tf([1 0],[1])


La si può definire anche in modo più "comodo" come
Codice: Seleziona tutto
s=tf('s')
Avatar utente
Foto UtenteSandroCalligaro
2.970 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1181
Iscritto il: 6 ago 2015, 19:25

0
voti

[6] Re: Problema funzione di trasferimento MatLab/Simulink

Messaggioda Foto UtenteIsidoroKZ » 23 gen 2017, 22:47

Tidus ha scritto:nell''articolo accademico dal quale sto prendendo questo modello, gli autori sostengono ...


Riferimento bibliografico all'articolo?
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

1
voti

[7] Re: Problema funzione di trasferimento MatLab/Simulink

Messaggioda Foto Utentedimaios » 25 gen 2017, 0:18

Le fractional order transfer functions non sono simulabili nativamente da Matlab ma esistono varie soluzioni per farlo con risorse esterne.
Te ne propongo una, vedi se riesci ad utilizzarla con successo nella tua applicazione.

FOMCON Toolbox
Ingegneria : alternativa intelligente alla droga.
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

[8] Re: Problema funzione di trasferimento MatLab/Simulink

Messaggioda Foto UtenteTidus » 25 gen 2017, 11:55

g.schgor ha scritto:Se mi dai i valori, te lo simulo con Microcap.

Grazie per la disponibilità, ma mi piacerebbe avere qualcosa sottomano con cui "giocare", piuttosto che avere un semplice risultato. Non conscendo Microcap, mi sono informato e ho visto che è un software a pagamento, ma che esiste anche la versione di prova. Sapresti dirmi se questa DEMO è sufficiente per i miei scopi?

DanteCpp ha scritto:Qua c'è una panoramica.

A me piace definire prima la variabile complessa

Codice: Seleziona tutto
s=tf([1 0],[1])


e poi costruire le funzioni di trasferimento più complesse come composizione di questa e funzioni elementari.

Grazie mille, ora provo a vedere se così facendo riesco a risolvere il problema.

MarkyMark ha scritto:Come può Z essere un'impedenza se n \neq 1? Non mi tornano le dimensioni :-M

Già, non tornano i conti nemmeno a me!

IsidoroKZ ha scritto:Riferimento bibliografico all'articolo?

Hai ragione, mi sono dimenticato di inserirlo. L'articolo è questo qui e ciò di cui vi sto parlando riguarda il capitolo 2: ARTICOLO

dimaios ha scritto:Le fractional order transfer functions non sono simulabili nativamente da Matlab ma esistono varie soluzioni per farlo con risorse esterne.
Te ne propongo una, vedi se riesci ad utilizzarla con successo nella tua applicazione.

FOMCON Toolbox

Grazie mille, non sapevo dell'esistenza di questo Tool! Provo a vedere un po' e ti faccio sapere.
Avatar utente
Foto UtenteTidus
18 3
 
Messaggi: 18
Iscritto il: 18 lug 2011, 13:29

0
voti

[9] Re: Problema funzione di trasferimento MatLab/Simulink

Messaggioda Foto UtenteTidus » 25 gen 2017, 12:36

DanteCpp ha scritto:Qua c'è una panoramica.

A me piace definire prima la variabile complessa

Codice: Seleziona tutto
s=tf([1 0],[1])


e poi costruire le funzioni di trasferimento più complesse come composizione di questa e funzioni elementari.

Niente da fare: il fatto che debba fare un s^n(all'interno di Z_{el}), con n non scalare intero, fa bloccare MatLab, dandomi appunto questo errore: "In the expression "M^K", the exponent K must be a scalar integer."
Grazie comunque per l'idea!
Avatar utente
Foto UtenteTidus
18 3
 
Messaggi: 18
Iscritto il: 18 lug 2011, 13:29

0
voti

[10] Re: Problema funzione di trasferimento MatLab/Simulink

Messaggioda Foto Utenteg.schgor » 25 gen 2017, 22:37

Sì, la versione Demo (gratuita) di Microcap
è normalmente sufficiiccper ente per
la simulazione di piccoli circuiti.
Vantaggi sono la semplicità d'uso e
l'immediatezza dei risultati.
Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

Prossimo

Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti