Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Wie schreibt man einen Simulator?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.05.2006, 21:01 Uhr
Poffelnator



Diese Frage beschäftigt mich schon seit langem .Hier und da ist immer wieder zu lesen, dass ein Simulator geschrieben wurde für dies und das, aber wie geht das? Ich kann es mir einfach nicht vorstellen!
Wie schreibt man zum Beispiel ein Simulator der eine eklektische Schaltung simuliert mit beliebigen Bauteilen? Wie wäre so ein Programm aufgebaut? Schreib ich jetzt zu jeden Bauteil eine Klasse und dann weiter? Wie bekomme ich das Programm dazu, dass erst der Benutzer entscheidet was für eine Schaltung simuliert wird?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.05.2006, 22:23 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,
im Grunde hast du den Ansatz schonmal verstanden. Du musst dir überlegen WIE und WAS das Programm können soll, man könnte z.b eine Art "Grundgerüst" aufsetzen:

Liste mit Bauteilen (Widerstand, "Draht", usw) jedes mit seinen Eigenschaften, also z.B elektrischer Widerstand, Form, Anschlüsse, usw.

nun kannste jedes Bauteil in eine EINZIGE Klasse packen, die halt z.b name, typ, e-widerstand, form, anschlüsse, usw als attribute hat.

Nun kann der Benutzer z.B "grafisch" seine Schaltung zusammenklicken, also z.B ein Menü wo er die Bauteile auswählen kann und eine Fläche, wo er sie draufziehen kann. Dann evtl einen Typ "Draht" mit dem du Bauteile verbinden kannst an ihren Anschlüssen (das muss man halt entsprechend programmieren.

Wenn du nun dann z.b "Simulieren" drückst in deinem Programm, MUSST DU eben dann die Schaltung z.B vom Stromanschluss aus, durchgehen, evtl erstmal kurzschlüsse prüfen usw, UND EBEN die physikalischen eigenschaften entsprechend auswerten.

Genau das ist eine Simulation. Also im Grunde "baust" du dir eine Art "Interpreter" der dir deine Daten auswertet, nur musst du ihm das eben beibringen was er können soll.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.05.2006, 22:34 Uhr
ao

(Operator)


Meine spontanen Einfälle dazu:

Man schreibt für jedes Bauteil eine Klasse, schlauerweise mit einer geschickten Ableitungshierarchie. In dem Teil steckt vermutlich ne Menge Gehirnschmalz, weil die Bauelemente teilweise starke Ähnlichkeiten, dann aber auch wieder große Unterschiede aufweisen (lineare / nichtlineare Bauteile, statische / dynamische, aktive / passive, mit 2, 3, 4 oder noch mehr Anschlüssen, ...).

Dann beschreibt man die elektrischen Eigenschaften (Kennlinie, Frequenzgang, ...), z.B. in Form virtueller Methoden.

Für den Aufbau einer Schaltung braucht man dann Möglichkeiten, Verbindungsinformationen zu speichern (mit welchen anderen Bauteilen ist das Bauteil verbunden?)

Für die Simulation des Betriebs braucht man noch Signalquellen und Messinstrumente, und damit das Ganze anschaulich wird, ein grafisches Framework, in dem sich die einzelnen Elemente und Verbindungen zeichnen und handhaben lassen.

Wenn man dann alles "verdrahtet" hat, nimmt man die Quellen in Betrieb und lässt dem Modell seinen Lauf.

Vielleicht wird ja ein Projekt draus. Hat jemand Lust? Ist aber bestimmt keine kleine Sache.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.05.2006, 02:14 Uhr
Hans
Library Walker
(Operator)


Hi,

zuerst einmal gut, das ich nicht der Erste bin, der hier antwortet, denn mir fiel dazu als erstes nur die eher abschreckende "mathematische Keule" ein, also die mathematische Beschreibung der Teile durch Differentialgleichungen. Aber die braucht man ja erst im zweiten Schritt.
Im ersten Schritt muss man sich überlegen, was man eigentlich simulieren will, und im nächsten ist die Frage zu klären, wie das gehen soll. Im Falle von elektrischen oder elektronischen Schaltungen ist die Frage nach dem Wie relativ einfach, weil die verwendeten Bauteile und ihr Verhalten ja alle mehr oder weniger gut durch mathematische Formeln (u.a. eben den Differetialgleichungen) beschrieben werden können. Die Kunst liegt dann darin, dem Computer die Berechnungen beizubringen. Fertige Programme für den Zweck sind z.B. Electronics Workbench, das für Ausbildungszwecke entwickelt wurde, und sehr einfach zu bedienen ist. Ein anderes bekanntes Programm ist PSpice, das schon eher ein Werkzeug für Experten (und solche die es werden wollen) darstellt.
Ebenso kann man mit mechanischen Systemen verfahren. Standardbeispiel: Fadenpendel. Mit den Informationen über Fadenlänge, angehängte Masse, und der Auslenkung des Pendels kann man bestimmen, wie lange das Pendel für einmal hin- und her schwingen benötigt. (Reibungsverluste bleiben der Einfachheit halber erst mal unberücksichtigt.) Wenn man die Reibung des Fadens an der Aufhängung und die Luftreibung in die Berechnung mit einbezieht, kann man bestimmen, wie lange das Pendel schwingen wird.
Diese Art des Experimentierens, wie hier zum Beispiel mit dem Pendel, sind die einfachsten Varianten von Simulationen. Je nach Vorgabe der Parameter (Fadenlänge, Masse, ...) kann man berechnen, wie lange das Teil schwingt. Und wenn man die Daten schon mal im Rechner hat, kann man sie auch schön grafisch aufbereiten, d.h. beispielsweise eine Kurve zeichnen lassen, auf der man die Auslenkung in Abhängigkeit von der Zeit sehen kann...
Das ist aber schon nicht mehr Bestandteil der Simulation, sondern ein nachfolgender Schritt, der dazu dient, die berechneten (also simulierten) Daten in eine Form zu bringen, mit der man als Mensch eher etwas anfangen kann.

Hans


P.S.: um meinem Kommentar gerecht zu werden:

bei Amazon

Oder hier.
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.05.2006, 08:27 Uhr
ao

(Operator)



Zitat von Hans:
"mathematische Keule" ... Differentialgleichungen

Moin, Nachtschichtler.
Genau darauf aber läufts letzten Endes hinaus, und das sollte man sich von vornherein klarmachen. Jedes Bauelement wird durch eine DGL beschrieben, das wird Kern der Simulation und muss im Entwurf gebührend berücksichtigt werden.

Das heißt nun nicht, dass man der Mathe-Doktor sein muss. Die auftretenden DGLs sind eher einfach und Stoff fürs erste Semester, mancher lernt das auch schon im Mathe-LK. Und bei digitaler Simulation wird aus einer Differenzialgleichung eine Differenzengleichung, dafür muss man nur addieren und sich einen oder zwei Sätze Koeffizienten merken.

Viel wichtiger ist ein solides E-Technik- oder Elektronikwissen, weil man verstehen muss, was man simuliert.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.05.2006, 01:30 Uhr
Hans
Library Walker
(Operator)



Zitat von ao:

Moin, Nachtschichtler.


Moin moin, hier ist wieder die Nachtschicht

Zitat:
Genau darauf aber läufts letzten Endes hinaus, und das sollte man sich von vornherein klarmachen. Jedes Bauelement wird durch eine DGL beschrieben, das wird Kern der Simulation und muss im Entwurf gebührend berücksichtigt werden.

Das heißt nun nicht, dass man der Mathe-Doktor sein muss. Die auftretenden DGLs sind eher einfach und Stoff fürs erste Semester, mancher lernt das auch schon im Mathe-LK. Und bei digitaler Simulation wird aus einer Differenzialgleichung eine Differenzengleichung, dafür muss man nur addieren und sich einen oder zwei Sätze Koeffizienten merken.

ao

In dem Buch, das ich oben genannt habe, wird dass auch erklärt, und wie man aus den Differentialgleichungen die computertauglichen Differenzengleichungen macht.
In der "einschlägigen Literatur" (ich hab derzeit ein paar Bücher darüber ausgeliehen) ist auch die Modellbildung ein grosses Thema. Da geht es darum, wie man ein Problem so beschreibt, das man anschliessend mit Hilfe einer Simulation die beste Lösung findet.
Weil technische Probleme häufig mit Differentialgleichungen beschrieben werden, für die es keine analytische Lösung gibt, müssen diese Gleichungen (bzw. Gleichungssysteme) numerisch gelöst werden. Dem entsprechend nehmen die numerischen Lösungsverfahren einen mehr oder weniger weiten Raum ein.
Für andere Simulationsverfahren (Monte Carlo Methoden) braucht man Zufallszahlen; deshalb sind in manchen Büchern Algorithmen zur Erzeugung von Zufallszahlen beschrieben. Und dazu die Verfahren, mit denen man überprüfen kann, ob die so erzeugten Zufallszahlen (Zahlenreihen) auch den Kriterien entsprechen, die man braucht. - Also ob sie tatsächlich die statistischen Eigenschaften haben, die sie haben sollen.
Der Link unter dem Buchtipp (Coverbild) führt zur Onlineversion eines solchen Buches über Simulationsverfahren, das in den 90er Jahren publiziert wurde. Dort liegt der Schwerpunkt im betriebswirtschaftlichen Bereich (Operations Research), deshalb ist der Modelbildung und der Erzeugung von Zufallszahlen breiter Raum gewidmet. Man findet darin auch Programme zur simlationsmässigen Lösung der vorgestellten Probleme. Die sind in Turbo Pascal verfasst, was aber kein grösseres Problem sein dürfte...

So, ich denke, damit ist die Frage erst mal ausführlich genug beantwortet.

Hans


P.S. Nur der Vollständigkeit halber: Dem anderen Buch liegt 'ne CD-ROM mit den vorgestellten Programmen bei.
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 17.05.2006 um 01:33 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.05.2006, 11:50 Uhr
Poffelnator



Danke für eure Antworten, jetzt bin ich wieder ein Stück schlauer.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: