Hallo, ich hab im Schematic Editor eine File, die ein Bauteil mehrere
male in Form von einem subsheet enthält. Wenn ich das komplette File
dann in den PcB-editor lade, dann werden die einzelnen Komponenten wild
durcheinander gewürfelt, ohne dass man noch nie Zugehörigkeit zum
ursprünglichen Bauteil (aus dem subsheet) erkennt. Das würde später
einmal bei einer fertigen Leiterplatte die Fehlersuche unglaublich
schwierig machen. Gibt es irgendeine Option, die eine Gruppenweise
Anordnung im PcB-editor ermöglicht?
Soweit ich das verstanden habe, hatte vor mehreren Jahren schon einmal
ein user sich dafür eine eigene Funktion gebaut (KiCAD - Baugruppen
replizieren -> Beitrag "KiCAD - Baugruppen replizieren")... gibt
es dafür eine vorgefertigte Lösung?
Hallo Raef.
> Hallo, ich hab im Schematic Editor eine File, die ein Bauteil mehrere> male in Form von einem subsheet enthält. Wenn ich das komplette File> dann in den PcB-editor lade, dann werden die einzelnen Komponenten wild> durcheinander gewürfelt,
Dann mache zu dem Subsheed eine separate Dummyplatine. Im Zweifel muss
die auch nicht geroutet werden, nur die Footprints sollten in etwa so
angeordnet sein, wie Du es wünschst. Dann verschiebst Du mit der
Gruppierungsfunktion die Bauteile nach irgendwohin ausserhalb des Ramens
(damit sie beim Einlesen nicht dahin kommen, wo schon etwas ist). Nun
machst Du Deine originale Platine auf, noch ohne Bauteile, importierst
deine Dummyplatine, plazierst sie dahin, wo Du die Bauteile routen
willst, und benennst die Bauteile passend. Für das nächste Subsheet
importierst Du wieder Deine Dummyplatine, und benennst die bauteile
passend zu diesem Subsheet, und so weiter...
Alternativ kannst Du nach dem ersten importieren und plazieren der
Dummyplatinen Bauteile auch mit der Gruppierfunktion kopieren. Es bleibt
aber immer noch das Benennen von Hand, was leider etwas aufwändig ist.
Wenn du mit diesen (gleichartigen) Subsheets durch bist, erst dann lädst
Du Deine Netzliste ein, die Dir die noch fehlenden Bauteile links oben
auf einen Haufen kippt (oder Du machst noch so einen Trick mit einer
Dummyplatine).
> ohne dass man noch nie Zugehörigkeit zum> ursprünglichen Bauteil (aus dem subsheet) erkennt. Das würde später> einmal bei einer fertigen Leiterplatte die Fehlersuche unglaublich> schwierig machen.
????? Bevor es Dir die Fehlersuche schwer macht, macht es Dir das Routen
schwer. ;O)
Du stößt also schon in der Phase auf die Schwierigkeiten. Entsprechend
musst Du eben dort schon aufräumen. Oder habe ich Dich falsch
verstanden?
> Gibt es irgendeine Option, die eine Gruppenweise> Anordnung im PcB-editor ermöglicht?
Du kannst sie auch von Hand auf der Platine in Gruppen verteilen. Das
ist einfacher als gedacht.
Du gehst einfach auf den großen Haufen und verschiebst die einzelnen
Footprints zu zusammengehörigen Gruppen. So mache ich das immer. Wenn es
ein paar Bauteile mehr sind,
wähle ich "Autoplazieren". Das dauert lange, aber wenn man eh gemütlich
Kaffeetrinken wollte....
Das Ergebnis ist eher mittelprächtig, aber die Bauteile liegen schonmal
nebeneinander, was das Sortieren erleichtert, und Du hast eine gewisse
Chance, das sich zusammengehörige Bauteile auch schon nebeneinander
befinden.
> Soweit ich das verstanden habe, hatte vor mehreren Jahren schon einmal> ein user sich dafür eine eigene Funktion gebaut (KiCAD - Baugruppen> replizieren -> Beitrag "KiCAD - Baugruppen replizieren")... gibt> es dafür eine vorgefertigte Lösung?
Das Problem habe ich auch nicht komplett verstanden....irgendwie macht
der das kompliziert.
Gerade in kicad lässt sich mit Copy&Paste eine Menge reissen.....;O)
Seh Dir die Files übrigens mal mit dem Editor an.....vieleicht geht Dir
dann ein Licht auf. ;O)
Ich hoffe, ich hatte Dein Anliegen richtig verstanden.
Vieleicht helfen dir auch folgende Diskussionen weiter:
Beitrag "Kicad: kleine Platine zum Ätzen auf einer Europlatine verteilen"Beitrag "Kicad pcb Layout - Mehrere identische Schaltungen auf einer LP"
Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.dl0dg.de
Hallo Bernd,
vielen Dank für deine ausführliche Antwort!
>> ohne dass man noch nie Zugehörigkeit zum>> ursprünglichen Bauteil (aus dem subsheet) erkennt. Das würde später>> einmal bei einer fertigen Leiterplatte die Fehlersuche unglaublich>> schwierig machen.>>????? Bevor es Dir die Fehlersuche schwer macht, macht es Dir das Routen>schwer. ;O)
Damit meinte ich nur falls mir später irgendwann einmal ein Widerstand
aus einem subsystem den Geist aufgibt, dann kann man den schnell und
unkompliziert auf der Platine lokalisieren (weil ja die subgruppen
zusammen sind). Lach, ansonsten hast recht, wär das ein bissel komisch
:D
>Dann mache zu dem Subsheed eine separate Dummyplatine .... Es bleibt>aber immer noch das Benennen von Hand, was leider etwas aufwändig ist.
Ehrlich gesagt würde mich das nicht wirklich entlasten, weil es egal ist
ob ich die Dinger einzeln bennen muss oder zurechtschieben ... der
Aufwand bleibt ungefähr gleich (zumindest nach meinem derzeitigen
Verständnis).
>Wenn es ein paar Bauteile mehr sind, wähle ich "Autoplazieren". Das>dauert lange, aber wenn man eh gemütlich Kaffeetrinken wollte....
ein sehr verlockender Gedanke ;D Einziger Haken dabei ist, dass es bei
mir unglaublich lange gedauert hat (ca. 4 Stunden) und das ganze
Schaltbild danach nicht geordneter aussah ... im Gegenteil
>Seh Dir die Files übrigens mal mit dem Editor an.....vieleicht geht Dir>dann ein Licht auf. ;O
Das war wirklich ein super Tip. Ich fürchte, dass ich auch den etwas
komplizierteren aber dafür einfach wiederholbaren Weg geh und ein Script
schreibe, was mir die Komponenten in Gruppen anordnet. Anbei ein Bauteil
aus der PcB datei:
(module TO92 (layer F.Cu) (tedit 443CFFD1) (tstamp 516FEC8A)
(at 217.17 94.488 )
(descr "Transistor TO92 brochage type BC237")
(tags "TR TO92")
(path / 51701D1D /516EBB74)
.....
Soweit ich das verstanden habe ist nach "at" die Koordinate auf der
Platine und der erste Teil von "path" gibt die Zugehörigkeit zum
subsheet.
Schade, dass es dazu noch keine Funktion im Editor selbst gibt (Es sei
denn autoplazieren soll dies eigentlich tun) ...
Viele Grüsse,
Raef
Wenn man im Layouteditor 'T' drückt, fragt KiCAD nach einer
Bauteilreference. Dann das Bauteil (z.B. R1) eingeben und schon hat man
es an der Hand und kann es platzieren.
Mit einem Ausdruck des Stromlaufs kann man dann schnell die Gruppen
wieder herstellen und muss nicht in dem Bauteilklumpen links oben
suchen.
>Wenn man im Layouteditor 'T' drückt, fragt KiCAD nach einer>Bauteilreference.
Danke, der Vorschlag hilft auf jeden Fall schon einmal diese Komponenten
bequem auszuwählen. Jedoch ist es trotzdem mühselig, wenn man mehrere
hundert hat.
Ich hab einmal ein quick-and-dirty script als PDF angehängt (war mir
nicht sicher, ob Docs mit ner .py Endung hier gleich gelöscht werden).
Dieses macht folgende Schritte:
a.) Lade die pcb Datei ein;
b.) Suche nach dem Stichwort "path", was nur in den einzelnen Modulen
vorkommt und katalogisiere solchene, welche aus einem gemeinsamen
subsheet aus dem Escheme editor kamen.
c.) Teile das Board in gleich grosse Teile auf
d.) Platziere in jeden der Teile die Komponenten eines subsheets
kreisförmig an. Dann überschreibe die x,y Informationen der pcb-Datei
und speichere das ganze
Insgesamt ist das sehr rudimentär; wäre cool, wenn irgendwann einmal
eine routine entsteht, wo die Ursprüngliche Anordnung der subsheets aus
der Scheme datei übernommen wird und die Leiterplatte auch besser
ausgenutzt wird.
Hallo Raef.
> Ich hab einmal ein quick-and-dirty script als PDF angehängt (war mir> nicht sicher, ob Docs mit ner .py Endung hier gleich gelöscht werden).> Dieses macht folgende Schritte:
Also damit gab es bisher wenig Probleme, so wie ich das persönlich
überblicken und einschätzen konnte.
Beispiel siehe: Beitrag "Re: KiCAD Schalplan-ID ändern"
Das Script solltest Du aber nicht mehr verwenden, weil Du unter
http://www.mikrocontroller.net/articles/KiCAD#Schaltplan was aktuelleres
findest.
>> a.) Lade die pcb Datei ein;>> b.) Suche nach dem Stichwort "path", was nur in den einzelnen Modulen> vorkommt und katalogisiere solchene, welche aus einem gemeinsamen> subsheet aus dem Escheme editor kamen.
Soweit hört sich das gut an.
>> c.) Teile das Board in gleich grosse Teile auf>> d.) Platziere in jeden der Teile die Komponenten eines subsheets> kreisförmig an. Dann überschreibe die x,y Informationen der pcb-Datei> und speichere das ganze
Das erscheint mir eher umständlich und vor allem viel Platz zu
verbrauchen.
Ich persönlich würde die Bauteilgruppierungen NEBEN dem Board plazieren.
Erfahrungsgemäß möchte ich da, wo gerade so ein Haufen liegt, Bauteile
plazieren, und dann muss ich umräumen. Desweiteren würde ich aus
Platzgründen die Bauteile nicht kreisförmig (obwohl das als
Wahlmöglichkeit vieleicht eine interessante alternative ist) anordnen,
sondern alle auf einen Haufen werfen. Platz ist hier in dem Sinne zu
verstehen, das Flächenverbrauch auch hin und her Wandern in der
Arbeitsfläche bedeutet, also zusätzliche Klick- und/oder Scrollarbeit,
bei gleichzeitigem Übersichtsverlust. Wenn ich mich einmal entschlossen
habe, die Bauteile nicht ins Board selber zu setzten, habe ich
vermutlich "Fläche" genug. ;O)
Jedenfalls wenn ich alle Bauteile ins Board HINEIN plazieren würde, wäre
das Board ja auch voll, wenn es nicht überdimensioniert ist. Mir würde
also der Platz zum Rangieren fehlen. ;O)
> Insgesamt ist das sehr rudimentär; wäre cool, wenn irgendwann einmal> eine routine entsteht, wo die Ursprüngliche Anordnung der subsheets aus> der Scheme datei übernommen wird und die Leiterplatte auch besser> ausgenutzt wird.
Die Anordnung der Bauteile im Sheet ist zwar sehr übersichtlich, wenn
der Schaltplan gut ist, aber das hat erstmal nichts mit den
geometrischen und thermischen Bedürfnissen der Bauteile zu tun. Dazu ist
ein Schaltplan zu abstrakt.
EMV, Leitungslängen, Impedanzen, Übersprechen, Dämpfung und
Brummschleifen sind ein weiteres Kapitel. ;O)
Das wichtigste, ist, den Haufen in den Subsheets entsprechende kleinere
Haufen aufzuteilen. Über den Rest kann man sich lange streiten. ;O)
Auch das setzt aber voraus, das jemand die Schaltung in funktional
zusammenhängende Blöcke aufgeteilt hat, und diese dann zusammenhängend
in Subsheets gepackt hat.
Auch das muss nicht immer so sein. ;O)
Ich selber habe beim reverse engineering zumindest einen vorübergehenden
Zustand, indem ich einfach nur komme was wolle die Schaltung eines
existierenden Boards in einen Schaltplan übertrage. Dabei fehlt
zumindest am Anfang sehr der Überblick, und ich sehe nur zu, das ich den
Schaltplan "übertragen" bekomme. Und wenn es mir aus Übersichts und
Platzgründen opportun erscheint, stopfe ich dann auch irgendwas in
Subsheets.
Anschliessend folgt dann noch ein Aufräumen, in dem dann z.B. klar
wird, das verschiedene Versorgungsspannungen doch nicht (oder aber
gerade doch) zusammenhängen. Wie das Massesystem aufgebaut ist. Wie die
Funktionsblöcke überhaupt aussehen und so weiter.
Und darin steckt immer noch viel Willkür. Beispiel. ein Signal wird von
einem Block an einen anderen gegeben und dazwischen ist noch ein
Spannungsteiler, Tiefpass, Pi-glied oder dergleichen. Zu welchem
Funktionsblock packe ich nun diese Anpass/Filterschaltung? Oder mache
ich dafür einen extra Block auf ? Rein von der Funktion her hängt es an
Details (Erwarte ich z.B. eher eine Störung von aussen, oder das ich
selber störe?) Zu viele Blöcke sind auch unübersichtlich. Es ist also
auch eine Frage der Balance und des persönlichen Geschmacks.
Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.dl0dg.de
Hi Bernd,
nochmals vielen Dank, dass du dir die Zeit für eine so ausführliche
Antwort nimmst.
>Beispiel siehe: Beitrag "Re: KiCAD Schalplan-ID ändern">Das Script solltest Du aber nicht mehr verwenden, weil Du unter>http://www.mikrocontroller.net/articles/KiCAD#Schaltplan was aktuelleres>findest.
vielen Dank für die Tips. Das ist mir vorher irgendwie durch die Lappen
gegangen.
>Die Anordnung der Bauteile im Sheet ist zwar sehr übersichtlich, wenn>der Schaltplan gut ist, aber das hat erstmal nichts mit den>geometrischen und thermischen Bedürfnissen der Bauteile zu tun. Dazu ist>ein Schaltplan zu abstrakt.
stimmt ... das Ding ist, dass ich das ganze nur als Laie betreibe und
für mich ist so eine funktionale Unterstruktur das instinktivste
Vorgehen. Wenn ich demnächst noch Zeit finden sollte, werde ich anhand
der Tips schauen, wie ich das verfeinern kann.
Lieben Gruss,
Raef
Hi Leute,
ich musste doch nochmal eine Leiterplatte überarbeiten und hab mich an
diesen Post zurückentsinnt.
Diesmal im Anhang ein kleines python Script, was die Anordnung aus den
sch files in den pcb editor übernimmt. Am besten alles in einem Ordner
ablegen und das Python Script starten. Hab mich bemüht das Script
einigermassen übersichtlich zu gestalten. Hauptpunkte sind:
1.) Die unsortierte PcB-Datei einladen und dabei die Koordinaten von
jeder Kompenente extrahieren
2.) Die sch-datei subsheet-module einlesen und dort die Position für
jede Komponente relativ im Subsheet auslesen
3.) Innerhalb der PcB-Datei ein Grid abstecken in welches dann die
Bauteile entsprechend ihrem jeweiligen subsheet angeordnet werden.
Anyway, vielleicht hilft es ja irgendjemand ein bisschen weiter.
LG, Raef
Hallo,
ich weiß, der Beitrag ist schon von 2013, bin aber vom Wiki auf diese
Antwort verwiesen worden.
Gibt es zu dem Raef K-Script einen Screenshot, wie so eine Automatische
Platzierung aussieht?
trx
Hallo trx.
trx schrieb:> ich weiß, der Beitrag ist schon von 2013, bin aber vom Wiki auf diese> Antwort verwiesen worden.
Immerhin ein Anlass, mich mal mit dem Skript auseinander zusetzen. ;O)
Mangels Bedarf und Zeit habe ich das noch nie gemacht.
>> Gibt es zu dem Raef K-Script einen Screenshot, wie so eine Automatische> Platzierung aussieht?
Was meinst Du mit K-Skript? Es ist KEIN Skript, welches das
KiCAD-Python Skripting benutzt, sondern ein separates standalone Python
2 Skript. Funktioniert mit Idle 2.7.9 recht gut.
Einen Screenshot des Ergebnisses habe ich als
"PlazierungsErgebnisDesRaefSkriptes-I.png" angehängt.
Meine KiCad-version:
Application: kicad
Version: (2015-03-14 BZR 5513)-product Release build
wxWidgets: Version 3.0.2 (debug,wchar_t,compiler with C++ ABI 1002,GCC
4.9.2,wx containers,compatible with 2.8)
Platform: Linux 3.16.0-4-686-pae i686, 32 bit, Little endian, wxGTK
Boost version: 1.54.0
USE_WX_GRAPHICS_CONTEXT=OFF
USE_WX_OVERLAY=OFF
KICAD_SCRIPTING=OFF
KICAD_SCRIPTING_MODULES=OFF
KICAD_SCRIPTING_WXPYTHON=OFF
USE_FP_LIB_TABLE=HARD_CODED_ON
BUILD_GITHUB_PLUGIN=ON
KICAD_USE_WEBKIT=OFF
Bedingt durch meine derzeitige Situation komme ich nicht zu einem
Update. :(
Einige Bemerkungen zum Skript bzw. den Testdaten:
Das Skript ist wirklich noch sehr roh. Es mus in den Ordner mit den
Testdaten hineinkopiert werden, weil es die Namen der verwendeten Files
hardcoded enthält.
Es ist einfach ein Skript, dass ich über Idle 2.7.9 aufgerufen und
gestartet habe, und das entweder Fehlermeldungen schmeisst, wenn was
nicht klappt, oder aber zum Schluss ein Mathplotfenster mit einer Punkte
Anordnung öffnet, die aber irgendwie keine (direkte) Beziehung zu den
plazierten Bauteilen haben, aber ein Abspeichern dieses Bildes erlaubt.
Nach Schliessen des Mathplotfensters beendet es mit "done" in der Idle
Shell und hat ein neues Platinenfile "BlockTutorial_newCoord.kicad_pcb"
Ebenfalss wurde ein neues Projektfile "BlockTutorial_newCoord.pro"
angelegt.
Es benutzt bei den Testdaten ein älteres Board-Format. Ob es mit dem
aktuellen klappt, weiss ich nicht. Wegen der Hardcodierung ist es auch
relativ viel Aufwand, das zu testen. Die Test Daten "(kicad_pcb (version
3) (host pcbnew "(2013-03-31 BZR 4008)-stable")" sind anscheinend nicht
vom Layernamen Bug betroffen.
Das Skript verwendet (mindestens) die Bibliotheken: re, math, numpy und
pylab. Ein Shebang ist nicht vorhanden.
https://de.wikipedia.org/wiki/Shebang
Zum Schaltplan ist zu sagen, dass er aus einem Hauptschaltplan mit sechs
Unterschaltplänen besteht, die aber auf nur zwei verschiedene
Unterschaldplandateien verweisen.
Die Unterschaltpläne sind im Hauptschaltplan NICHT verbunden.
Es wird überall der gleiche Footprint verwendet.
Als Ansatz sicherlich interessant. Aber wohl noch zu fehlerbehaftet.
Ich bevorzuge immer noch eine separate Liste und dann gehe ich die Liste
durch und tippe ich in PCBnew "t" und gebe die Referenz ein. ;O)
Ich zippe mal meine Ergebnisse zusammen und hänge sie als
"ErgebnisseRaefSkript.zip" an. Figure_1.png ist übrigens das, was
mathplot dabei angelegt hat.
Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.l02.de