Forum: Mikrocontroller und Digitale Elektronik S: Software zum Reverse Engineeren - Schaltplan anhand von Text-Anweisungen zeichnen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Dominik (koelner)


Lesenswert?

Hallo,

ich versuche gerade einen Schaltplan anhand einer fertigen Platine zu 
zeichen. Dazu habe ich mir selbst erst mal Notizen gemacht, um 
Herauszufinden was mit einem rausgeführten 20pol. Steckverbinder 
verbunden ist. Irgendwo muss man ja anfangen. Ich habe es mit Klammern 
bei Mehrfachabzweigungen versucht, was nicht so gut war:
Stecker(Pin12) + BC547(C) + (Diode(A)->680R + (100n->Stecker(Pin1))-> 
kl4pol.Steck(3))

Ich suche nach einer klar strukturieren "Darstellungssprache" und 
entsprechende Software, die so etwas direkt in einen Schaltplan umsetzen 
kann. Mit Bleistift und Papier klappt das gut bei kleineren/einfachen 
Platinen. Aber hier bin ich gerade nur am Radieren.

Im Grunde würde es ja reichen, wenn man erst mal mit der Stückliste 
beginnt und alle Bauteile definiert etwa in Form von R1=10K, R2=33K 
IC1=LM139(14pol) D1=1N4148, usw.

Dann teilt man per Anweisung einfach nur mit, womit R1 alles verbunden 
ist etwa in Form von R1(1)->IC1(3), R1(1)->D1(A), R1(2)->R2(1), ...

Die Software zeichnet daraus, idealerweise vielleicht sogar in Echtzeit, 
den Schaltplan. Kenn jemand eine Software, die vielleicht genau für so 
etwas gemacht ist, also recht simpel gehalten ist? In einer 
"gewönlichen" Schaltungssoftware bin ich ja sonst auch nur die Bauteile 
am Umplatzieren, bzw. suboptimal am Verbinden und kann im Nachgang 
vielleicht eine Optimierungsfunktion nutzen. Aus einer Textbeschreibung 
heraus wäre mir viele lieber als das Rumgeklicke und Rumgescrolle und 
gar Rumsuchen der Bauteile, wenn es eben etwas größer wird.

Danke schon mal im Voraus für Tipps,
Dominik

: Bearbeitet durch User
von Steve van de Grens (roehrmond)


Lesenswert?

Mit welcher Intelligenz soll die Software die Bauteile sinnvoll 
(übersichtlich) positionieren? Ich kann mir nicht vorstellen, dass es so 
etwas gibt.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Du könntest damit anfangen, ein standardisiertes Netzlistenformat zu 
verwenden.

Oder Dich hier einlesen:

https://electronics.stackexchange.com/questions/676175/can-i-import-a-netlist-into-kicad

von Rahul D. (rahul)


Lesenswert?

Harald K. schrieb:
> Du könntest damit anfangen, ein standardisiertes Netzlistenformat zu
> verwenden.

oder einfach den Plan gleich mit eagle oder so zeichnen.

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Steve van de Grens schrieb:
> Mit welcher Intelligenz soll die Software die Bauteile sinnvoll
> (übersichtlich) positionieren? Ich kann mir nicht vorstellen, dass es so
> etwas gibt.
Warum nicht? Platzieren von Leiterbahnen auf multilayer platinen 
funktioniert ja auch per autorouting.
Ob das zu platzierende Bauteil jetzt ein Widerstand, oder eine 
Leiterbahn ist, macht eigentlich keinen großen unterschied. 
Schlussendlich muss man sich nur vernünftige Regeln überlegen, z.B. 
Abstände zwischen Bauteilen. Oder man gibt einfach direkt die Position 
auf der Platine mit an.

Gehen tut das schon.


Edit:

Schaut mal hier: https://github.com/dvc94ch/pycircuit
Da kann man sich also wunderbar ein Pythonscript schreiben, was die 
Liste vom TO einliest und umwandelt.

: Bearbeitet durch User
von Wendels B. (wendelsberg)


Lesenswert?

Kaj G. schrieb:
> Platzieren von Leiterbahnen auf multilayer platinen
> funktioniert ja auch per autorouting.

Du willst aber die Bauteile im SCHALTPLAN automatisch platzieren.

Steve van de Grens schrieb:
> Ich kann mir nicht vorstellen, dass es so
> etwas gibt.

Ich auch nicht.

von Rainer W. (rawi)


Lesenswert?

Dominik schrieb:
> Ich suche nach einer klar strukturieren "Darstellungssprache" und
> entsprechende Software, die so etwas direkt in einen Schaltplan umsetzen
> kann.

Das Erstellen eines Schaltplans, der diese Bezeichnung zu recht trägt, 
setzt neben einer Kenntnis aller Verbindungen (aka Netzliste) auch ein 
Verständnis der Signale und Signalflüsse voraus.
Solange du die Schaltung nicht verstanden hast, ist das also schwer 
möglich, es  sei denn, dem ChatGPT sind Schaltungsteile im Internet 
begegnet und er bekommt die Abstraktion auf deine Bezeichnungen hin.

von Dominik (koelner)


Lesenswert?

Steve van de Grens schrieb:
> Mit welcher Intelligenz soll die Software die Bauteile sinnvoll
> (übersichtlich) positionieren? Ich kann mir nicht vorstellen, dass es so
> etwas gibt.

Schade. Anhand der Antworten gehe ich davon aus, dass es so etwas 
tatsächlich nicht gibt. Also ich kann mir mehrere Regeln vorstellen, wie 
man einen Schaltplan "routen" kann. Also z.B. mit möglichst wenig 
Überkreuzungen oder möglichst kurze Wege oder bestimmte, vorausgewählte 
Bauteile nahe beieinander/nebeneinander, etc. Hauptsache orthogonal und 
halt keine Verbinder durch Bauteile durch.

Es wäre aber auch okay, wenn man die Bauteile anschließend halt noch per 
Hand so verschiebt wie man möchte, wenn die Verbinder alle 
bestehenbleiben. Das wichtigste wäre mir vor allem die Eingabe über 
Kommandozeile, bzw. wenigstens aus Textdatei in einer bestimmten Syntax. 
Ich möchte nicht jeden Verbinder einzeln zielen, klicken müssen, 
scrollen wieder zielen und klicken oder aber auch nicht jedes Bauteil 
einzeln anklicken und aufwendig irgendwelche Eigenschaftsfenster öffnen, 
wo man das Ziel der Verbinder einzeln anklicken und per Hand eingeben 
kann.

von Dominik (koelner)


Lesenswert?

Kaj G. schrieb:

> Schaut mal hier: https://github.com/dvc94ch/pycircuit
> Da kann man sich also wunderbar ein Pythonscript schreiben, was die
> Liste vom TO einliest und umwandelt.

Danke, das ist dann für Kicad, wenn ich recht verstehe? Dann sollte ich 
mir Kicad anschauen und es damit versuchen, falls keine besseren 
Vorschläge mehr kommen.

von Thomas F. (tommf)


Lesenswert?

Du brauchst dir ja nur mal unter https://github.com/dvc94ch/pycircuit
das erste Beispiel mit der Emitterstufe anzuschauen. Die beiden 
Widerstände des Basisspannungsteilers würde jemand, der die Schaltung 
verstanden hat, nicht so versetzt zeichnen. Wie soll das dann bei 
komplexeren Schaltungen funktionieren?

von Rainer W. (rawi)


Lesenswert?

Dominik schrieb:
> Also ich kann mir mehrere Regeln vorstellen, wie
> man einen Schaltplan "routen" kann.

Primär geht es beim Zeichnen eines Schaltplanes nicht um eine reine 
Darstellung der Verbindungen, wie es der deutsche Begriff vielleicht 
vermuten lässt, sondern um eine abstrahierte Darstellung der Funktionen, 
d.h. eine Übersichtliche Darstellung von Signalfluss und 
Funktionsgruppen, die dann letztendlich bis auf Bauteilebene 
detailliert.
Das impliziert z.B., dass die Pinbelegung von ICs eine untergeordnete 
Rolle spiel und primär die Funktionsgruppen dargestellt werden. Beim 
Reverse Engineering brauchst du also auch Informationen aus dem 
Datenblatt, um von deiner Verbindungsliste zu einem vernünftigen 
Schaltplan zu kommen.

> Das wichtigste wäre mir vor allem die Eingabe über
> Kommandozeile, bzw. wenigstens aus Textdatei in einer bestimmten Syntax.
> Ich möchte nicht jeden Verbinder einzeln zielen, klicken müssen,
> scrollen wieder zielen ...

Dann verwende die Scriptsprache deiner ECAD-Software

: Bearbeitet durch User
von H. H. (Gast)


Lesenswert?

Dominik schrieb:
> Anhand der Antworten gehe ich davon aus, dass es so etwas
> tatsächlich nicht gibt.

Solche Software gibt es schon, aber die läuft bisher nur auf diesen 
sündhaft teuren biologischen Parallelrechnern.

von Klaus H. (hildek)


Lesenswert?

Dominik schrieb:
> Ich suche nach einer klar strukturieren "Darstellungssprache"
Nennt sich Netzliste. Da fehlt aber noch ein Name für die Leitung. Also 
etwa so:
NET Data IC1-3, R5-1, C1-2
Und Netznamen werden sowieso intern zugeordnet in jedem 
Schaltplaneditor, wenn es der Benutzer nicht tut.

Und mit den Infos platziert ein Layouteditor an irgendeiner Ecke den 
IC1, den R5 und den C1 und die Pins 5, 1 und 2 der drei Komponenten sind 
mit einer Luftlinie verbunden. Es gibt auch Layout-Tools, die eine 
Autoplace-Funktion anbieten - meist ist das aber unbefriedigend und ist 
vielleicht brauchbar für einen kleinen Schaltungsteil - definitiv nicht 
fürs ganze Board.

Das könnte man auch für einen Schaltplaneditor haben (meiner Vorstellung 
nach), denn beides ist ja elektrisch äquivalent.
Aber die Bauteile muss man dann trotzdem, wie beim Layout, auch im 
Schaltplan sinnvoll von Hand anordnen. Nach welchen (sinnvollen) Regeln 
sollen die BE denn automatisch angeordnet werden? Warten wir mal auf die 
Fähigkeiten einer zukünftigen KI ...

Dominik schrieb:
> Dann teilt man per Anweisung einfach nur mit, womit R1 alles verbunden
> ist etwa in Form von R1(1)->IC1(3), R1(1)->D1(A), R1(2)->R2(1),
Siehe oben, eher umgekehrt. Man geht nicht vom Bauelement aus, sondern 
vom Verbindungsnetz und zählt alle Pins auf, die da dran hängen. So es 
auch prinzipiell in realen Netzlisten aus:
NET N1 R1-1, IC1-3
NET N2 R1-2, R2-1

von Klaus H. (klummel69)


Lesenswert?

Es gibt eine Firma die so ein Tool entwickelt hat:
https://www.concept.de/SpiceVision.html

> SpiceVision® PRO takes SPICE netlists and models and generates clean,
> easy-to-read transistor-level schematics, circuit fragments, and
> design documentation to speed up circuit design, debug, and optimization
> at the transistor-level.

----

Alternativ zu pycircuit gibt es schemdraw, sieht auch interessant aus: 
https://schemdraw.readthedocs.io/en/stable/gallery/index.html
(Ein automatisches Placement hab ich nicht gefunden.)

Aber ein beliebiger Schaltplaneditor und die Möglichkeit Bauteile hin 
und her zu schieben, ist vermutlich einfacher als das ganze per Skript 
zu generieren.

: Bearbeitet durch User
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.