Forum: HF, Funk und Felder S-Parameter zusammenfügen und Information hinzufügen


von Sawyer M. (sawyer_ma)


Angehängte Dateien:

Lesenswert?

Hei,

ich habe eine Schaltung vermessen welche ich von 0-5V durch gesweept 
habe. Nun habe ich 10 S-Parameter Files mit 0V, 0.5V, 1V, 1.5V,...5V.

Jetzt möchte ich die gemessenen Werte über die Spannung auftragen. Also 
Y-Achse S21 Werte und X-Achse die Spannung von 0-5V.

Das Problem ist das ich ja nun 10 verschiedene S-Parameter Files habe 
und dies nun irgendwie zusammenschreiben und die Information der 
Spannung noch eintragen müsste damit ich meinen gewünschten Plot bekäme.

Wie macht man das?
Wie macht Ihr das?

Oben mal 2 S-Parameter Files von mit bei verschiedenen Spannung 
gemessen.

Grüße

von knallbär (Gast)


Lesenswert?

Matlab

von Fabian Z. (fabi_z)


Lesenswert?

knallbär schrieb:
> Matlab


Wie meinst du das, geht das ausführlicher?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Gnuplot

von Horst (Gast)


Lesenswert?

scikit-rf
Matplotlib

von Kamil R. (kamil_rezer)


Lesenswert?

Ja, mit Matlab (wenn Du es hast) kann man die Daten als Matrizen 
importieren/laden, um anschließend diese in geeigneter Weise 
zusammenfügen (Concatenating) (cat-funktion war für mich auch sehr 
nützlich gewesen) oder die benötigten Daten durch geeignetes Indizierung 
"rausfiltern". Man kann aber 2D-Plots auch mit Excel hinkriegen, wenn 
man die s2p-files erst nacheinader importiert und dann die benötigten 
S-Parameter nebeneinander stellt - dass lässt sich vielleicht mit den 10 
Dateien noch bewältigen. Wenn Du aber mehr davon hast (oder die Messung 
mal wiederholen willst) ist die Matlab-Variante viel einfacher.
Außerdem fällt mir ein, dass Du Zugang zum ADS hast - dort kann man die 
Messdaten als Touchstone importieren, simulieren (mit jeweils 2 Ports) 
und anschließend darstellen (wird sogar das Vergleich mit der Simulation 
einfacher sein, wenn Du dein Duplexer vorher mit ADS designed hast). Was 
die Qualität der Bilder angeht, bevorzuge ich für mich eher Matlab.

von Wolfgang (Gast)


Lesenswert?

Sawyer M. schrieb:
> Wie macht man das?

- Daten aus den Files einlesen
- Daten passend anordnen/umsortieren
- Plot erzeugen

> Wie macht Ihr das?

- Daten aus den Files einlesen
- Daten passend anordnen/umsortieren
- Plot erzeugen

Deine, mit der eigenwilligen Extension "s2p" versehenen Files sind ganz 
normale Textdateien, die du mit jeder Tabellenkalkulation oder sonstigem 
Rechenprogramm importieren kannst.

Die Bedeutung der Zahlen solltest du allerdings schon kennen.

von Sawyer M. (sawyer_ma)


Lesenswert?

Hm, ja Matlab habe ich. Ich weis auch das man mit:

obj = sparameters(filename)

S-Parameter importieren kann. Das Problem wo ich für mich habe ist, das 
in meinen S-Parameter die aufgenommen worden keine Information der 
angelegten Spannung enthalten sind. Jetzt müsste ich die S-Parameter 
einlesen. Also 10x hintereinander mit

obj = sparameters(data,freq);

Jedesmal mit einer anderen variablen Zuweisung. Dann kann ich ja mit

hs = rfparam(S,2,1);

meine S21 Parameter bestimmen und mit

rfplot(hs,2,1,'angle’);

die Phase ausgeben.

Also so:

clc;
clear all;


s1 = sparameters(filename);
s2 = sparameters(filename);
s3 = sparameters(filename);
s4 = sparameters(filename);
s5 = sparameters(filename);

obj1 = sparameters(s1,2e9)
obj2 = sparameters(s2,2e9)
obj3 = sparameters(s3,2e9)
obj4 = sparameters(s4,2e9)
obj5 = sparameters(s5,2e9)


figure(1)
hold on




rfplot(hs,2,1,'angle')
xlabel('Volt');
ylabel('Phase‘);

Jedoch weis ich nun nicht, wie man für file s1 = 0V und s2 = 0,5V usw. 
alle  in eine Plot bekomme mit einer Verbundenen Linie. Irgendwie müsste 
ich ja die Spannung mit einem Zähler hoch zählen.

Hat mir da jemand einen Tipp oder ist das viel zu kompliziert wie ich 
das angefangen habe? Am Ende habe ich über 100 Schrittweiten und somit 
über 100 S-Parameterfiles, deshalb möchte ich einen unkomplizierte 
Lösung finden.

Vielen Dank für eure Hilfe

von Helmut S. (helmuts)


Lesenswert?

Genaugenommen gibt das doch einen dreidimsionalen Plot.
X-Achse Spannung, Y-Achse Frequenz, z-Achse Betrag.

von Sawyer M. (sawyer_ma)


Angehängte Dateien:

Lesenswert?

In der Simulation geht es ja einfacher. Und da sieht es so aus wie oben 
im Bild. Nun möchte ich halt die S-Parameter von den Messungen genauso 
zusammen führen. Jede Gerade ist eine bestimmte Frequenz

von Helmut S. (helmuts)


Lesenswert?

Welchen Sinn amcht es die S-Parameter von 4000 Frequenzen zu einem Wert 
zusammenzufassen oder möchtest du jetzt 4000 Kurven plotten?

Zeichne doch mal ein Bild wie du dir das Ergebnis vorstellst.

: Bearbeitet durch User
von Sawyer M. (sawyer_ma)


Lesenswert?

Helmut S. schrieb:
> Welchen Sinn amcht es die S-Parameter von 4000 Frequenzen zu einem Wert
> zusammenzufassen oder möchtest du jetzt 4000 Kurven plotten?
>
> Zeichne doch mal ein Bild wie du dir das Ergebnis vorstellst.

Ich glaube da habe ich mich ein wenig umständlich ausgedrückt. Die 3 
Kurven oben sind nur 3 Frequenzen die mich explizit interessieren. Ich 
kann ja dann in Matlab sagen nur diese Frequenz interessiert mich. 
Jedoch die Schrittweise der VCO ist bis jetzt auf 0,5V gewählt worden, 
diese wird aber in Zukunft kleiner gewählt deshalb werden es ja mehr 
S-Parameter Files die ich dann bei der Messung aufnehmen werde.

Doch zu aller erst möchte ich es mit 0,5V ausprobieren die S-Parameter 
wie oben im Bild darzustellen sodass die Phase über die VCO dargestellt 
wird. Deshalb oben meine anfängliche Idee des Matlab Codes.

von Helmut S. (helmuts)


Lesenswert?

Das einfachste wäre du schreibst ein kleines Programm in irgend einer 
Skriptsprache das die eine Zeile mit der gesuchten Frequenz aus allen 
deinen Files heraussucht und in eine neue Textdatei speichert. Dazu muss 
man natürlich sicher sein, dass entweder die Frequenz bis auf genügend 
viele Ziffern in allen Files eindeutig vorhanden ist oder es immer die 
n-te Zeile ist.

1.500012503125782E9    -8.991496257157110  .......

von Wolfgang (Gast)


Lesenswert?

Helmut S. schrieb:
> Dazu muss man natürlich sicher sein, dass entweder die Frequenz bis
> auf genügend viele Ziffern in allen Files eindeutig vorhanden ist oder
> es immer die n-te Zeile ist.

Bei Floating Point ist ein Test auf Gleichheit immer kritisch. Da muss 
man schon sehr genau wissen, was man tut und wie die Zahlen aussehen. 
Besser ist ein Größer/Kleiner-Vergleich. Statt z.B. auf 
"=2.000137534383596E9" zu prüfen, wäre hier ein Test auf ">1.9998E9" 
i.A. besser. Damit ist man auch auf der sicheren Seite, wenn die 
"2.00000E9" als "1.999999...E9" ausgeworden wurde.

Davon abgesehen ist es natürlich völlig sinnbefreit, wenn die Daten mit 
16 Stellen ausgeworfen werden. Ich wage mal zu behaupten, dass das Gerät 
diese Genauigkeit nie und nimmer her gibt. Da enthält der Datenfile 
größtenteils Zufallszahlen ohne messtechnische Bedeutung.

von Sawyer M. (sawyer_ma)


Lesenswert?

Hm, kann mir keiner was zum Matlab Code sagen? Oder kann ich was in den 
Header der S-Parameter schreiben?

von Sawyer M. (sawyer_ma)


Lesenswert?

Ich habe es bis jetzt in Matlab nicht geschafft den Plot zu genieren aus
vielen verschiedenen Datensätzen. Hat mir jemand ein Beispiel oder einen
Ansatz wie ich da lösen könnte. Es wurde oben sofort gesagt mit Matlab
aber nicht wie das gehen kann.

Ich verstehe auch nicht den Aufbau von s2p Parameter. Sonst könnte ich
es als Text Datei einlesen und gezielt die Werte herausgreifen die ich
möchte. Oder gibt es eine Möglichkeit mit ADS dies zu tun? Das Porblem
ist ja das jedes File bei einer anderen Spannung gemessen wurde. Diese
Information steckt nicht in der Datei und das verursacht mir ja die
Probleme wenn ich die Phasenänderung über die Spannung auftragen möchte.

Hat mir jemand einen Ansatz??

von Helmut S. (helmuts)


Lesenswert?

> Ich verstehe auch nicht den Aufbau von s2p Parameter.

Da kann ich dir helfen.

#  HZ   S   DB   R     50.0

Du hast DB und die Frequenz in Hz. Dein Bezugssystem hat R=50Ohm.

Die Reihenfolge der Daten ist S11, S21, S12, S22 mit jeweils Betrag in 
DB und Phase in Grad.

Aufbau der Zeile:

FREQ  20log10|S11|  <S11  20log10|S21|  <S21  20log10|S12|  <x12 
20log10|S22|  <S22


< Zeichen für Winkel in Grad
log10 ist der Logarithmus zur Basis 10.
-1.378815439892719E1 = -1,3788....*10^1

1. Zeile
 1.450000000000000E9    -1.378815439892719E1  -1.398580144069250E1 
-2.374888270287687   1.730248290172491E2  -2.438510372274786 
1.717659098696045E2  -1.416139426776584E1  -1.683125281489606E1


http://cp.literature.agilent.com/litweb/pdf/genesys200801/sim/linear_sim/sparams/touchstone_file_format.htm

Auszug au dem Link

For .s1p files: #  [ HZ  KHZ  MHZ / GHZ]   [ S  Y  Z ]   [ MA  DB  
RI ]   [ Rn ]

For .s2p files: #  [ HZ  KHZ  MHZ / GHZ ]   [ S  Y  Z  G  H ]   [ 
MA  DB  RI ]   [ Rn ]

For .snp (n >= 3) files: #  [ HZ  KHZ  MHZ / GHZ ]   [ S ]   [ MA / DB 
/ RI ]   [ Rn ]

where square brackets [...] indicate optional information; .../.../.../ 
indicates that you select one of the choices; and, n is replaced by a 
positive number.

S-Parameter Data

Frequency data lines contain the data of interest. A special format is 
used for 2-port data files where all of the network parameter data for a 
single frequency is listed on one line. The order of the network 
parameters is:

    S11, S21, S12, S22

For 3-port or higher data files, the network parameters appear in the 
file in a matrix form, each row starting on a separate line. A maximum 
of four network parameters (with 2 real numbers for each) appear on any 
line. The remaining network parameters are continued on as many 
additional lines as are needed.

The following sections describe the data-line format for single and 
multi-port components.

S-Parameter Data Line Format

The frequency line data will have one of the following formats:

Magnitude Angle

<FREQ>  |S11|  <S11  |S21|  <S21  |S12|  <S12  |S22|  <S22

Real Imaginary

<FREQ>  Re{S11}  Im{S11}  Re{S21}  Im{S21}  Re{S12}  Im{S12}  Re{S22} 
Im{S22}

dB Angle

<FREQ>  20log10|S11|  <S11  20log10|S21|  <S21  20log10|S12|  <x12 
20log10|S22|  <S22

Note: For each s1p and s2p file format, the data must be on one line.

von Sawyer M. (sawyer_ma)


Lesenswert?

Helmut S. schrieb:
>> Ich verstehe auch nicht den Aufbau von s2p Parameter.
>
> Da kann ich dir helfen.
>
> #  HZ   S   DB   R     50.0
>
> Du hast DB und die Frequenz in Hz. Dein Bezugssystem hat R=50Ohm.
>
> Die Reihenfolge der Daten ist S11, S21, S12, S22 mit jeweils Betrag in
> DB und Phase in Grad.
>
> Aufbau der Zeile:
>
> FREQ  20log10|S11|  <S11  20log10|S21|  <S21  20log10|S12|  <x12
> 20log10|S22|  <S22
>
>
> < Zeichen für Winkel in Grad
> log10 ist der Logarithmus zur Basis 10.
> -1.378815439892719E1 = -1,3788....*10^1
>
> 1. Zeile
>  1.450000000000000E9    -1.378815439892719E1  -1.398580144069250E1
> -2.374888270287687   1.730248290172491E2  -2.438510372274786
> 1.717659098696045E2  -1.416139426776584E1  -1.683125281489606E1
>
>

Neun Werte deshalb weil ( ich liste mal auf):

1.450000000000000E9   ->Frequenz
-1.378815439892719E1  -> S11
-2.374888270287687    -> S21
-1.398580144069250E1  -> S12
1.730248290172491E2   -> S22

-2.438510372274786    -> Phase S11
1.717659098696045E2   ->  PhaseS21
-1.416139426776584E1  -> Phase S12
-1.683125281489606E1  -> Phase S22

> 
http://cp.literature.agilent.com/litweb/pdf/genesys200801/sim/linear_sim/sparams/touchstone_file_format.htm
>
> Auszug au dem Link
>
> For .s1p files: #  [ HZ  KHZ  MHZ / GHZ]   [ S  Y  Z ]   [ MA / DB /
> RI ]   [ Rn ]
>
> For .s2p files: #  [ HZ  KHZ  MHZ / GHZ ]   [ S  Y  Z  G  H ]   [
> MA  DB  RI ]   [ Rn ]
>
> For .snp (n >= 3) files: #  [ HZ  KHZ  MHZ / GHZ ]   [ S ]   [ MA / DB
> / RI ]   [ Rn ]
>
> where square brackets [...] indicate optional information; .../.../.../
> indicates that you select one of the choices; and, n is replaced by a
> positive number.
>
> S-Parameter Data
>
> Frequency data lines contain the data of interest. A special format is
> used for 2-port data files where all of the network parameter data for a
> single frequency is listed on one line. The order of the network
> parameters is:
>
>     S11, S21, S12, S22
>
> For 3-port or higher data files, the network parameters appear in the
> file in a matrix form, each row starting on a separate line. A maximum
> of four network parameters (with 2 real numbers for each) appear on any
> line. The remaining network parameters are continued on as many
> additional lines as are needed.
>
> The following sections describe the data-line format for single and
> multi-port components.
>
> S-Parameter Data Line Format
>
> The frequency line data will have one of the following formats:
>
> Magnitude Angle
>
> <FREQ>  |S11|  <S11  |S21|  <S21  |S12|  <S12  |S22|  <S22
>
> Real Imaginary
>
> <FREQ>  Re{S11}  Im{S11}  Re{S21}  Im{S21}  Re{S12}  Im{S12}  Re{S22}
> Im{S22}
>
> dB Angle
>
> <FREQ>  20log10|S11|  <S11  20log10|S21|  <S21  20log10|S12|  <x12
> 20log10|S22|  <S22
>
> Note: For each s1p and s2p file format, the data must be on one line.



Könnte ich in den Header noch die Information meiner Spannung mit 
einfügen? Weil das große Ziel das ich habe ist die 3 S-Parameter Files 
einzulesen und nach Spannung und Phase bei einer Frequenz aufzutragen. 
So wie das Bild was ich weiter oben mal eingefügt habe.



In ADS habe ich diesen Plot erzeugt. Wenn ich da die Parameter 
Exportieren für den Plot schmei´t der mir eine txt Datei aus mit dieser 
Struktur:

freq  0  plot_vs(unwrap(phase(S(2,1))), VDC)[0, ::]
2.45000000000000020E9  0.00000000000000000E0  8.32652660336566260E1
2.45000000000000020E9  1.00000000000000000E-1  8.54076035571150700E1
2.45000000000000020E9  2.00000000000000000E-1  8.75898023712521120E1
2.45000000000000020E9  3.00000000000000040E-1  8.98112303715735830E1
2.45000000000000020E9  4.00000000000000000E-1  9.20711427736930870E1
2.45000000000000020E9  5.00000000000000000E-1  9.43686797042637340E1
2.45000000000000020E9  6.00000000000000000E-1  9.67028655869293810E1
2.45000000000000020E9  7.00000000000000000E-1  9.90726085926933030E1
2.45000000000000020E9  7.99999999999999910E-1  1.01476701603890510E2
.....

Könnte ich meine Messergebnisse auch so umschreiben?

: Bearbeitet durch User
von Helmut S. (helmuts)


Lesenswert?

> Könnte ich meine Messergebnisse auch so umschreiben?

Dann schreib halt ein Python-Skript und lies die eine Zeile bei 2,45GHz 
aus allen s2p-Files und schreib die dann eine neue Datei.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.