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
:
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.