Angenommen ich habe ein großes vermaschtes Netz aus sagen wir 10.000 Widerständen, an manchen Punkten wird Strom eingespeist und an manchen Punkten wird Strom entnommen. Wie berechnet man die fließenden Ströme in den einzelnen Widerständen, wie löst man sowas am besten mit einem Computer auf? Die Gleichungen dafür dürften extrem komplex werden und die Suche nach Programmfehlern in sowas verspricht Bauchschmerzen. Hat irgendjemand schon mal so eine Simulation oder Berechnung geschrieben oder weiß einen guten Weg dafür? Mich würde mal interessieren, wie man an sowas herangeht oder sowas löst.
Das berechnet man am einfachsten mit der Knotenpotentialanalyse. Du kannst natürlich auch einfach ein beliebiges SPICE-Programm dafür nehmen. Dem gibt man einfach eine Netzliste und drückt RUN. Nach kurzer Rechenzeit bekommt man eine Datei mit allen Potentialen und den Strömen. Als SPICE-Programm empfehle ich das kostenlose LTspiceXVII.
:
Bearbeitet durch User
Danke euch beiden für die Tips. @Marek Danke, lese ich mir durch. @Helmut Daß LTSpice das kann weiß ich - aber mich interessiert eben, wieso es das kann, was dahintersteckt.
Spice ist quelloffen. Es gibt auch einiges an Veröffentlichungen dazu.
:
Bearbeitet durch Moderator
Rechenmethoden Die „brute force“ Methode ist einfach die Matrix zu invertieren. Für solche dünn besetzten Matrizen gibt es schnellere und speichersparende Verfahren (sparse matrix).
Ich muß erstmal rausbekommen, wie man so eine Matrix erzeugt. Denke wenn man die einmal hat, kann man sie auch einmal komplett durchrechnen. Heutige Computer bieten dafür ja mehr als genug Rechenleistung.
Ben B. schrieb: > Denke wenn man die einmal hat, kann man sie auch einmal komplett > durchrechnen. Heutige Computer bieten dafür ja mehr als genug > Rechenleistung. Kommt darauf an wie geduldig du bist :) 10000 Widerstände sind zwar nicht so arg viel, aber wenn du alle in Reihe schaltest, ergibt das 10000 Knoten und damit bei Anwendung des Knotenverfahrens ein System mit 10000 Gleichungen. Wendet man darauf das Gauß-Verfahren an, erfordert dies ca. 670 Milliarden Rechenoperationen (⅔n³). Die sind auf einem gewöhnlichen PC nicht in ein paar Sekunden durchgenudelt, benötigen aber auch nicht gerade eine halbe Ewigkeit. Für diesen speziellen Fall ist das Maschenverfahren natürlich besser geeignet, denn dann reduzieren sich die 10000 Knoten auf 1 Masche und damit auf 1 Gleichung, die praktisch in der Zeit 0 berechnet werden kann.
Maschenverfahren kenne ich ein bißchen, nervt aber. :D Ich muß mal schauen wie man sowas am besten auf dem Rechner umsetzt. Solche Sachen sind manchmal mit Kopf und Papier einfacher als mit 16x 5Ghz...
Die Väter von Spice waren schlau. Die haben bewusst auf das Knotenpotentialverfahren gesetzt. Verschwende keine Zeit mit dem Maschenstromverfahren.
Okay. Weißt Du, wie man die dafür nötige Matrix am besten aufstellt bzw. hast Du etwas Erfahrung damit?
Ben B. schrieb: > Okay. Weißt Du, wie man die dafür nötige Matrix am besten > aufstellt bzw. hast Du etwas Erfahrung damit? Das ist eigentlich gan einfach und steht in dem von Marek verlinkten Wikipedia-Artikel: https://de.wikipedia.org/wiki/Knotenpotentialverfahren#Matrix_des_linearen_Gleichungssystems_aufstellen Ben B. schrieb: > Maschenverfahren kenne ich ein bißchen, nervt aber. Im Prinzip sind Knoten- und Maschenverfahren gleichwertig. Allerdings sind die Schaltungen üblicherweise im Knotendarstellung vorgegeben (bspw. als Spice-Netzliste), die direkt mit dem Knotenverfahren verarbeitet werden kann. Für das Maschenverfahren muss man die Schaltung erst in die Maschendarstellung überführen, was einen zusätzlichen Verarbeitungsschritt bedeutet. Dieser benötigt zwar kaum Rechenzeit, muss aber erst einmal programmiert werden. Weil Programmierer meist faule Leute sind, arbeiten praktisch alle Schaltungssimulationsprogramme mit dem Knotenverfahren. Insbesondere bei Schaltplänen mit überkreuzenden Leitungen ist das Finden der Maschen auch für Menschen schwieriger, weswegen man oft dem Knotenverfahren den Vorzug gibt. Allerdings möchte man bei der manuellen Berechnung auch die Anzahl der Gleichungen minimieren, weswegen mitunter das Maschenverfahren vorteilhafter ist.
:
Bearbeitet durch Moderator
Yalu X. schrieb: > Die sind auf einem gewöhnlichen PC nicht in ein paar Sekunden > durchgenudelt, benötigen aber auch nicht gerade eine halbe Ewigkeit. Das Stichwort heisst 'sparse matrix (dünn besetzte Matrix) und wer mag kann das auch auf einen FPGA schubsen: http://cas.ee.ic.ac.uk/people/nachiket/publications/spice_matrix-solve_fpt-2009.pdf https://thesis.library.caltech.edu/6159/1/submit_oct26.pdf https://www5.in.tum.de/lehre/vorlesungen/duenn_matr/duennbesetzte_matrizen.pdf
Ich habe mal eine Netzliste mit vielen Tausend Knoten mit einem C-Programm für Spice erzeugt. Das waren im wesentlichen zwei for-Schleifen in denen Strings mit fortlaufenden Referendesignators und Netznamen generiert wurden. Die Idee war eine Plane aus L und C Elementen zu simulieren. Da du keine Netzliste willst, füll halt direkt eine Matrix mit den Indizes der for-Schleifen. Du benötigst dann noch eine Spaltenmatrix für die zugeführten Ströme. In Matlab oder Octave sieht das Wie folgt aus. G sei die Leitwertmatrix. I sei die Spaltematrix. P sei die Matrix mit den Potentialen. P = inv(G)*I Inv erzeugt die inverse Matrix.
Okay danke euch, ich muß das erstmal ganz in Ruhe durchlesen und versuchen zu verstehen. Ich finde es immer etwas einfacher, solche Aufgaben selbst zu lösen, anstatt einem Computer den Lösungsweg einzuhämmern, erst recht wenn er aus irgend einem Plan erst die Knoten bestimmen muß bzw. die Abhängigkeiten zwischen den Knoten. Mal sehen, evtl. Aufwand zu groß für ein Spaßprojekt nur um rauszufinden wie's funktioniert.
Die Funktion für inv() gibt es bestimmt fertig im Netz. Die Generierung der Matrix muss man natürlich selber machen. Am besten mal mit einer kleinen 4x4 Matrix zum testen anfangen. Das Ergebnis mit SPICE kontrollieren. https://www.codesansar.com/numerical-methods/matrix-inverse-using-gauss-jordan-method-c-program.htm
:
Bearbeitet durch User
Ben B. schrieb: > Ich finde es immer etwas einfacher, solche Aufgaben selbst zu lösen, > anstatt einem Computer den Lösungsweg einzuhämmern, Wenn du das erste Mal von Hand den Lindner durchgerechnet hast, dann siehst du das ganz anders. Aber absolut anders. Für den modernen, ja ach so gestressten Bachelor-Studenten (hahaha), der Lindner in dem Zusammenhang ist ein dreibändiges Werk https://www.hanser-fachbuch.de/buch/Elektro+Aufgaben+Band+1/9783446452213 mit E-Technik Aufgaben aller Art zum Rechnen. Ca 1000 - 1500 Rechenaufgaben pro Band. Früher wurde der von Studenten als Übung in den Grundlagen der E-Technik durchgerechnet. Von vorne bis hinten. Von Hand mit Papier, Bleistift, Rechenschieber/Taschenrechner. Auch in einigen Ausbildungsberufen war es üblich den Lindner zu rechnen, zumindest Teile von Band 1 Gleichstrom und Band 2 Wechselstrom. > erst recht wenn er > aus irgend einem Plan erst die Knoten bestimmen muß bzw. die > Abhängigkeiten zwischen den Knoten. Das geht rein schematisch und dafür sind Computer klasse. Wenn du viele Netze von Hand durchgerechnet hattest, dann war ein Programm wie SPICE der absolute Luxus. Lochkarten stanzen, ab in den Großrechner, einen Tag warten. Aber Hauptsache nicht mehr den Scheiß von Hand machen müssen. > Mal sehen, evtl. Aufwand zu groß für > ein Spaßprojekt nur um rauszufinden wie's funktioniert. Einfach nachlesen. Die die Doktorarbeit von dem Spice-Programmierer gibt es im Netz http://www2.eecs.berkeley.edu/Pubs/TechRpts/1975/ERL-m-520.pdf
Ben B. schrieb: > Ich finde es immer etwas einfacher, solche Aufgaben > selbst zu lösen, anstatt einem Computer den Lösungsweg > einzuhämmern, Naja, kommt auf die Häufigkeit und das Vorwissen an. Um überhaupt erstmal das Prinzip zu verstehen, ist es sicherlich am besten, einige Aufgaben von Hand zu rechnen. Um zu verstehen, wie man sehr große Probleme dieser Art behandeln kann, ist es dagegen nützlich, das mal selbst zu programmieren. Um es öfter routinemäßig zu berechnen, will man das aber nicht dauernd von Hand machen -- sondern den Blechtrottel verwenden. > erst recht wenn er aus irgend einem Plan erst die > Knoten bestimmen muß bzw. die Abhängigkeiten zwischen > den Knoten. Plan?! Normalerweise gibt man ja eine Netzliste ein; da sind die Knoten schon irgendwie durchnummeriert, und die (reellen oder komplexen) Impedanzen sind direkt als Kantengewichte aufzufassen. Gegebenenfalls muss man erstmal den Leitwert berechnen, daber das ist ja trivial. Für SEHR große Systeme kann man m.W. mit geschickter Nummerierung der Knoten noch einiges beschleunigen; das ist aber ein fortgeschrittenes Thema. > Mal sehen, evtl. Aufwand zu groß für ein Spaßprojekt > nur um rauszufinden wie's funktioniert. Kommt darauf an, was Du Dir genau vorstellst. Lineare, rein resistive Netzwerke mit DC dürfte nicht schwierig sein; das geht mit reellen Zahlen. Komplexe lineare Netzwerke mit AC erfordern komplexe Zahlen; das geht aber noch mit Numerik der linearen Algebra. Bei komplexen NICHTLINEAREN Netzwerken (--> Dioden, Transistoren) ist der Spaß allerdings zu Ende; das läuft nämlich auf ein System nichtlinearer Differential- gleichungen hinaus. Das ist m.W. das, was Spice bei der Transientenanalyse berechnet. Man kann auch hybride, "semi-numerische" Methoden verwenden, wenn man die zulässigen Schaltungsstrukturen einschränkt. Ich hatte mal ein Programm zur Filter- simulation angefangen; das analysiert tatsächlich die Schaltungsstruktur (Reihenschaltung, Parallelschaltung, belasteter Spannungsteiler) und wertet die Übertragungs- funktion dann punktweise aus. Das funktioniert bei Filtern deshalb, weil die allermeisten klassischen Filter eine Kettenleiterstruktur haben.
C. A. Rotwang schrieb: > Yalu X. schrieb: >> Die sind auf einem gewöhnlichen PC nicht in ein paar Sekunden >> durchgenudelt, benötigen aber auch nicht gerade eine halbe Ewigkeit. > > Das Stichwort heisst 'sparse matrix Ja, das hat ja Helmut oben schon geschrieben, woraufhin Ben es aber der Einfachheit halber erst einmal klassisch versuchen wollte. Genau darauf bezog sich meine Antwort. Helmut S. schrieb: > In Matlab oder Octave sieht das Wie folgt aus. > G sei die Leitwertmatrix. > I sei die Spaltematrix. > P sei die Matrix mit den Potentialen. > > P = inv(G)*I In Matlab und Verwandten gibt es auch Funktionen, um lineare Gleichungsssysteme direkt, also ohne den Umweg über die Matrixinverse, zu lösen: Matlab: linsolve Numpy: linalg.solve Scipy: linalg.solve Diese sind meist schneller und numerisch stabiler als die Multiplikation mit der Inversen.
Ben B. schrieb: > Ich muß mal > schauen wie man sowas am besten auf dem Rechner umsetzt. Solche Sachen > sind manchmal mit Kopf und Papier einfacher als mit 16x 5Ghz... Aber auch nur, wenn man nichts verstanden hat. Ansonsten Matrix und rechte Seite erstellen, ein Funktionsaufruf zum Lösen, fertig.
Helmut S. schrieb: > P = inv(G)*I Yalu X. schrieb: > Multiplikation > mit der Inversen. das ist in Matlab grundsätzlich keine so gute Idee. Besser: A \ r entspricht einer linksseitigen Multiplikation mit der Inversen (also inv(A)*r), während r / A eine rechtsseitige Multiplikation mit der Inversen ist (also r*inv(A)). Logisch ist es zwar dasselbe, aber erst die Inverse zu berechnen kann numerische Probleme bringen, weshalb der obige Operator \ bzw. der Operator / da gewisse Optimierungen vornimmt. Dabei werden dann auch dünnbesetzte, diagonale, dreieckige, ... usw. Matrizen unterschieden und automatisch die entsprechenden numerischen "Abkürzungen" genommen. Das Gleichungssystem Ax = b löst man also am besten x = A \ b Das gilt natürlich nur in Matlab. Ob das in Octave auch so funktioniert und dieselben Optimierungen vornimmt, kann ich nicht sagen. Grüsse, Tobias
:
Bearbeitet durch User
Beitrag #6269425 wurde von einem Moderator gelöscht.
Tobias P. schrieb: > Helmut S. schrieb: >> P = inv(G)*I > > Yalu X. schrieb: >> Multiplikation >> mit der Inversen. > Das verstehe ich jetzt aber nicht. Ich habe schon zig Gleichungssysteme auf diese Art gelöst und wüsste nicht was daran falsch sein soll. http://www.ece.northwestern.edu/local-apps/matlabhelp/techdoc/ref/inv.html
Helmut S. schrieb: > Das verstehe ich jetzt aber nicht. Ich habe schon zig Gleichungssysteme > auf diese Art gelöst und wüsste nicht was daran falsch sein soll. es ist nicht falsch. Aber wie gesagt, wenn die Matrix A bestimmte Eigenschaften hat, kann man da was optimieren und je nach dem numerisch stabilere Algorithmen verwenden. Ich weiss nicht, ob es bei neueren Versionen noch immer so ist, aber habs in meinem Matlab 2017 grade ausprobiert: wenn ich in einem Skript den Befehl inv(A)*b verwende, dann wird auf der Zeile eine Warnung angezeigt. "Better use A \ b". Der grund ist halt, dass die Berechnung der Inversen von A Rundungsfehler erzeugt, und die propagieren dann weiter, wenn man die Multiplikation mit b dann noch macht. Wenn aber A z.B. dreieckig ist, dann kann man sich die Berechnung der Inversen sparen und einen anderen Solver verwenden. Guck hier unter "Algorithms": https://ch.mathworks.com/help/matlab/ref/mldivide.html da ist ein ganz schöner PAP, was da alles erst geprüft wird, bevor das Glechungssystem gelöst wird. Im allgemeinen Fall wird A nicht invertiert, sondern die LU-Zerlegung wird zuerst berechnet. Diese hat dann vorteilhafte Eigenschaften, sodass die Lösung stabiler ist: https://de.wikipedia.org/wiki/Gau%C3%9Fsches_Eliminationsverfahren#L%C3%B6sen_eines_LGS
Tobias P. schrieb: > Helmut S. schrieb: >> Das verstehe ich jetzt aber nicht. Ich habe schon zig Gleichungssysteme >> auf diese Art gelöst und wüsste nicht was daran falsch sein soll. > es ist nicht falsch. Aber ... Hallo Tobias, danke für die guten Erklärungen. Ich werde mal schauen ob das auch in Octave geht. Gruß Helmut
Helmut S. schrieb: > Ich werde mal schauen ob das auch in > Octave geht. cool! berichte uns doch dann. Grüsse Tobias
Tobias P. schrieb: > Helmut S. schrieb: >> Ich werde mal schauen ob das auch in >> Octave geht. > > cool! berichte uns doch dann. > > Grüsse > Tobias Habe es gerade mit Octave 5.2.0 probiert. Es funktioniert. >> format long >> format compact >> a=[1,5,3;5,2,1;3,2,7] a = 1 5 3 5 2 1 3 2 7 >> b=[2;1;4] b = 2 1 4 >> inv(a)*b ans = 6.617647058823529e-02 7.352941176470595e-02 5.220588235294117e-01 >> a\b ans = 6.617647058823528e-02 7.352941176470597e-02 5.220588235294117e-01 >> linsolve(a,b) ans = 6.617647058823528e-02 7.352941176470597e-02 5.220588235294117e-01
Helmut S. schrieb: > Habe es gerade mit Octave 5.2.0 probiert. Es funktioniert. > in der Tat, und man kann auch sehen, dass die letzten beiden dasselbe Resultat ergeben und beim ersten kleine Fehler vorhanden sind! ok in diesem Beispiel sind die Fehler jetzt sehr klein. Wenn man aber sehr kleine und sehr grosse Zahlen gemischt hat, dann werden die numerischen Fehler z.T. einiges grösser. Ist mir mal aufgefallen als ich den Frequenzgang eines Quarzfilters fitten wollte. Dort hat man in den Matrizen pF und MHz teilweise gemischt - dann wirds spannend ;-)
Hmmm gar nicht so leicht, ein Programm zu stricken, was ein vermaschtes Schaltbild ohne große menschliche Hilfe in eine berechenbare Matrix umstrickt. :(
Ben B. schrieb: > Hmmm gar nicht so leicht, ein Programm zu stricken, was > ein vermaschtes Schaltbild ohne große menschliche Hilfe > in eine berechenbare Matrix umstrickt. :( ??? Liest Du überhaupt, was man Dir antwortet? Für Computerrechnung geht man vernünftigerweise nicht von einem Schaltplan, sondern von einer NETZLISTE aus!
Ben B. schrieb: > Hmmm gar nicht so leicht, ein Programm zu stricken, was ein vermaschtes > Schaltbild ohne große menschliche Hilfe in eine berechenbare Matrix > umstrickt. :( Wenn du in irgendeiner dokumentierten Form eine Netzliste hast, sollte das nicht so schwer sein. Oder möchtest du die Matrix bzw. die Netzliste aus einem Screenshot oder Scan des Schaltplans erstellen? Das ist natürlich deutlich schwieriger.
Nein, nicht aus einem Scan. Aber wenn man es aus einem "programmierten" Schaltplan hinbekommt, wäre das schon praktisch. Ich meine so, daß alle Widerstände und die Verbindungen bekannt sind, man das ganze auch bildlich darstellen könnte, aber so, daß das Programm alleine daraus die relevanten Knoten bzw. diese Matrix erzeugen kann.
Ben B. schrieb: > Nein, nicht aus einem Scan. Aber wenn man es aus einem > "programmierten" Schaltplan hinbekommt, wäre das schon > praktisch. Hmm. Du hast nie "Grundlagen der Elektrotechnik" gehabt? > Ich meine so, daß alle Widerstände und die Verbindungen > bekannt sind, Verdrehter ("perverser" :) Ansatz. Maßgeblich sind die Begriffe der Graphentheorie, also die Existenz von "... Elementen erster Art, die wir Knoten, und Elementen zweiter Art, die wir Kanten nennen." Das, was im Layoutprogramm "Netz", "Netzwerk" oder so heißt, ist graphentheoretisch einfach ein Knoten. Knoten enthalten keine Bauelemente. Die Zweige, die die Bauelemente enthalten, sind graphen- theoretisch die Kanten. Die "Netze" (=Knoten) werden einfach durchnummeriert, wobei die Reihenfolge egal ist. Ggf. muss man beim Bezugsknoten ("Masse", "GND",...) aufpassen. Jede (!) Verbindungsstelle von zwei oder mehr Bauelementen ist ein Knoten, der eine eigene Nummer bekommt. Alle Kanten sind jetzt durch Angabe des Kantengewichtes charakterisierbar; dieses Kantengewicht ist die Impedanz bzw. Admittanz (Widerstand bzw. Leitwert), bei AC wird diese Angabe komplex. Man muss daher nicht zwischen ohmschen Widerständen, Spulen und Kondensatoren unter- scheiden. Die Kanten werden durch Nummer von Anfangs- und Endknoten und das Kantengewicht beschrieben. Aus der Kantenliste lässt sich direkt die Leitwertmatrix der KPA aufstellen. > man das ganze auch bildlich darstellen könnte, aber so, > daß das Programm alleine daraus die relevanten Knoten > bzw. diese Matrix erzeugen kann. Naja, wie schon gesagt: Es ist ungünstig, vom Schaltplan auszugehen (und liege dieser auch elektronisch vor), weil einige Layoutprogramme den Schaltplan nicht graphentheoretisch in Knoten und Kanten strukturieren, sondern als eine Art "Vektorgraphik mit zusätzlichen Kommentaren" auffassen. Es ist dann schwierig, die Knoten zu extrahieren. Es ist einfacher, von der Netzliste auszugehen, die das Programm ja hoffentlich auch exportiert.
> Du hast nie "Grundlagen der Elektrotechnik" gehabt?
Du Egon, wenn man schon wieder solchen Blödsinn liest, vergeht einem die
Lust auf sowas.
-- hat sich erledigt, Thread kann gelöscht werden.
Dankeschön!
Ich habe mal ein rudimentäres Python-Progrämmchen (knotenanalyse.py) zusammengeklopft, das eine Spice-Netzliste¹ einliest, daraus das Gleichungssystem aufstellt und dieses löst. Fehler in der Eingabedatei werden größtenteils mit Python-Exceptions quittiert ;-) In LTspice habe ich ein Beispiel eingegeben (testschaltung.{asc,png}). LTspice erzeugt aus der asc-Datei eine Netzliste (testschaltung.net). Diese habe ich mit dem Python-Programm berechnen lassen:
1 | $ knotenanalyse.py testschaltung.net |
2 | N002: 6.31559 |
3 | N006: 6.51187 |
4 | N005: 4.9148 |
5 | N003: 9.3832 |
Die Resultate stimmen mit den von LTspice berechneten (testschaltung.op) überein. Die Matrix G und die Vektoren I und φ habe ich im Programm wie in https://de.wikipedia.org/wiki/Knotenpotentialverfahren#Matrix_des_linearen_Gleichungssystems_aufstellen benannt. —————————————— ¹) Es wird nur eine kleine, aber zu Demonstrationszwecken ausreichende Untermenge aller Spice-Features unterstützt.
:
Bearbeitet durch Moderator
Wie weit ist Python von was verständlichem wie weiß nicht, PHP weg? duck und wegrenn Mal sehen ob mir das weiterhilft, kann leider weder Python noch C++. Dann muß ich mich mal damit befassen wie ich von einem Schaltplan zu einer Netzliste komme. Danke Dir auf jeden Fall für Deine Mühe, Yalu. Edit für noch 'ne blöde Frage: Wie schaut das Format für die Netzliste aus, insbesondere die letzte Angabe pro Zeile/Bauteil?
:
Bearbeitet durch User
Ben B. schrieb: >> Du hast nie "Grundlagen der Elektrotechnik" gehabt? > > Du Egon, wenn man schon wieder solchen Blödsinn liest, Welchen Blödsinn? Da Du ja freiwillig kein Sterbensbeswörtchen zu Deinem Wissenshintergrund verloren hast, interessierte mich, worauf man aufbauen kann und was neu für Dich ist. > vergeht einem die Lust auf sowas. Das geht mir genauso. Ich schreibe zwei ausführliche Antworten, und die einzige Reaktion von Dir ist, beleidigt zu sein. Super. > -- hat sich erledigt, Thread kann gelöscht werden. > > Dankeschön! Weisst Du was? Vielleicht hast Du Recht, und ich sollte meine Teilnahme im Forum auf das Lesen beschränken. Ich muss mich von den Leuten, mit denen ich mein Wissen teile, nicht auch noch zum Dank vollpampen lassen.
Ben B. schrieb: > Wie weit ist Python von was verständlichem wie weiß nicht, PHP weg? > duck und wegrenn Mit PHP kann ich leide nicht dienen, das ist mir zu schwer. > Edit für noch 'ne blöde Frage: > Wie schaut das Format für die Netzliste aus, > insbesondere die letzte Angabe pro Zeile/Bauteil? Schau dir das angehängte Beispiel in meinem letzten Beitrag an.
1 | V1 N001 0 5 |
2 | R4 N002 N005 47 |
Der erste Wort (V1 bzw. R4) ist der Name des Elements. Das erste Zeichen gibt den Elementtyp an (V=Spannungsquelle, R=Widerstand). Die Zeichen danach (1 bzw. 4) dienen nur der Unterscheidung mehrerer Elemente des gleichen Typs, sie haben keinen Einfluss auf die Simulation. Das zweite und dritte Wort sind die Knoten, mit denen das Element verbunden ist. Das können (fast) beliebige Strings sein. LTspice benennt die Knoten – wenn nicht vom Benutzer vorgegeben – mit N001, N002, N003 usw. Der GND-Knoten heißt immer 0 und hat das absolute Potential 0V. Das vierte Wort ist der Wert des Elements, bei einem V-Element also die Spannung in Volt, bei einem R-Element der Widerstandswert in Ω. Bei anderen Elementen variiert die die Bedeutung der Parameter etwas. Ein Transistor bspw. benötigt mindestens fünf Angaben:
1 | Q1 Kollektorknoten Basisknoten Emitterknoten BC547C |
Der Elementtyp ist Q (= Bipolartransistor), statt zwei Anschlussknoten müssen drei angegeben werden, und anstelle des Bauteilwerts tritt hier ein Modellname (hier BC547C). Mit einem * beginnende Zeilen sind Kommentare, mit einem . werden Spice-Direktiven eingeleitet. Diese geben bspw. an, was genau berechnet werden soll. Das in meinem Beispiel verwendete .op berechnet den DC-Arbeitspunkt der Schaltung. Das Format wurde bewusst so gewählt, dass Netzlisten mit wenig Aufwand auch manuell erstellt werden können. Zur Zeit der Entstehung von Spice stand den meisten noch kein grafischer Schaltplaneditor zur Verfügung. Man zeichnete den Schaltplan also erst auf Papier, beschriftete jeden Knoten mit einer Zahl oder einem kurzen Text und übertrug dann den Plan Bauteil für Bauteil in die Spice-Datei. Mehr über das Format findest du in den einschlägigen Dokumentationen im Netz.
:
Bearbeitet durch Moderator
Ben B. schrieb: > Mal sehen ob mir das weiterhilft, kann leider weder Python noch C++. Die Netzliste lässt man sich von dem Schaltplanprogramm erzeugen. Um aus der Netzliste die Matrix zu erzeugen kann man jede Programmiersprache nehmen die Strings verarbeiten kann - Basic, C, ... . > Edit für noch 'ne blöde Frage: > Wie schaut das Format für die Netzliste aus, > insbesondere die letzte Angabe pro Zeile/Bauteil? Das kann man sich in dem .net-file anschauen. Refererenzdesignator Netz1 Netz2 Wert Widerstände beginnnen mit R, Kondensatoren mit C, Spulen mit L. Spannungsquellen mit V, Stromquellen mit I. V1 N001 0 5 R4 N002 N005 47 R9 N005 0 68 R7 N006 N005 39 R5 N003 N006 82 R10 N006 0 33 R1 N002 N001 12 R3 N004 N003 15 R6 N005 N001 56 R8 N004 N006 27 V2 N004 0 12 R2 N003 N002 22
Verdammt, daß das der Wert des Bauteils ist, hätte man auch noch selbst
erraten können. Ok, danke euch für eure Mühe, mal sehen was ich damit
anfangen kann.
@Egon
> nicht auch noch zum Dank vollpampen lassen
Aber ich soll mich von Dir hier volle Breitseite anfurzen lassen oder
was?! Das kannst Du mal sowas von vergessen. Wie man in den Wald
reinruft, so schallt's auch wieder raus!
Da ist mir auch Deine fachliche Kompetenz völlig egal wenn Du gleich im
ersten Satz so loslegst. Da habe ich keine Lust mehr, den Rest von
Deinem Beitrag zu lesen. Das ist das gleiche Verhalten wie früher bei
den Klassenclowns. Mit denen kam man am besten klar, wenn man ihnen
gleich beim ersten Versuch, einen z.B. wegen meines ach so lustigen
Namens schon am ersten Tag zum Opfer zu machen, erst mal ordentlich die
Fresse eingebasht hat. Danach hatte man seinen Tadel - und seine Ruhe,
weil der ganze Rest hat's bleiben lassen. Manche Leute scheinen das
wirklich zu brauchen, damit bestimmte Areale ihres anscheinend noch
mechanisch arbeitenden Gehirns wieder brauchbare Ergebnisse liefern.
Gewissermaßen wie ein Neukalibrierung, vor allem der oberen Grenzwerte.
Mehr sage ich dazu nicht. Nur noch eines: Wenn Du mit mir diskutieren
willst, dann gerne fachlich/sachlich, aber nicht so wie ey Du hast ja
noch nicht mal Grundlagen in Elektrotechnik ... Nö hab ich nicht,
scheint man für die Entwicklung eigener µC-Schaltungen oder
Leistungselektronik (bspw. Schaltnetzteile oder Wechselrichter) dann
wohl nicht zu brauchen.
-- Ende der Durchsage.
Ich weiß zwar nicht, welches Programm du verwenden möchtest bzw. Programmiersprache, aber wenn du das Knotenpotentialverfahren mit Matrizen berechnen möchtest, dann würde ich dir Matlab empfehlen.
Ben B. schrieb: > Du Egon, wenn man schon wieder solchen Blödsinn liest, vergeht einem die > Lust auf sowas. Hallo??? Du willst ein Netzwerk berechnen, beherrscht aber weder Grundlagen der E-Technik (wir sprechen vom 1. und teilweise vom 2. Semester!) noch Python oder C. Wo sollen wir denn da anfangen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.