RE: Tutorial: Schaltpläne zeichnen mit gEDA -> Hierarchische Pläne erstellen

#1 von Jumbo-44 , 24.06.2016 11:48

Moin Stummies,
für die Fehlersuche und ggf. spätere Umbauten halte ich einen "Schaltplan" und/oder ein Anschlußverzeichnis für wichtig.
Nach ersten Versuchen mit LibreOffice (es gibt eine gute Schaltplan-Bibliothek, der manuelle Arbeitsaufwand bleibt aber hoch) habe ich mich (wieder) in gEDA reingearbeitet. Aus meiner Sicht ein klasse Programm zum Zeichnen von Verdrahtungsplänen und deren automatische Umsetzung in ein Anschlußverzeichnis der verwendeten Bauteile.
Viel Freude mit meinem Erst-Versuch eines Tutorials. Verbesserungsvorschläge und Fehlerhinweise sind herzlich willkommen!


Navigation
Grundsätzliches
Häufige Befehle
Bauteile und eigene Symbole
Anschlußverzeichnis erstellen
Hierarchische Pläne

Diese Links haben mir geholfen (und damit Ihr die nicht auch alle durchackern müßt, schreibe ich dieses Tutorial ):

http://wiki.geda-project.org/geda:documentationDie Projektseite / Doku-Seite
http://wiki.geda-project.org/geda:gschem_ugOnline-UserGuide
http://wiki.geda-project.org/geda:gsch2pcb_tutorialSchaltplan Tutorial
http://wiki.geda-project.org/geda:gschem_warmup Schaltplan Warmup
http://wiki.geda-project.org/geda:hierarchyHierarchische Schaltpläne
http://wiki.geda-project.org/geda:master_attributes_listListe und Erklärung der Attribute
http://wiki.geda-project.org/geda:na_howtoMini HowTo für das net= Attribut
http://wiki.geda-project.org/geda:transistor_guideSymbol-/Transistorguide
http://wiki.geda-project.org/geda:pcb_footprintsListe und Erklärung der footprints
http://wiki.geda-project.org/geda:gnetlist_ugUserGuide für die Listenerstellung (alternativ: manpage nutzen!)




Ein kurzes Vorwort, bevor es richtig losgeht:
"Das gEDA-Projekt (GPL Electronic Design Automation) stellt eine Sammlung (Suite) freier und quelloffener Software (GNU General Public License) für die Entwicklung von elektronischen Schaltungen bereit. Mit den aufeinander abgestimmten Programmen können u. a. Schaltpläne entworfen, Schaltungen simuliert und Platinen-Layouts (Leiterbahnen-Struktur auf Leiterplatten) erstellt werden. Die Funktionalität von gEDA ist mit den proprietären Programmen „TARGET 3001!“ oder „Eagle“ vergleichbar." (Quelle: wikipedia.org, Artikel gEDA (Software))
Verfügbar ist gEDA für Linux, Mac und Windows.

Wie in dem zitierten Artikel beschrieben, kann man mit gEDA Schaltungen entwerfen, simulieren, Ätzvorlagen anfertigen, Anschlußverzeichnisse und Stücklisten erstellen.
Für meine Anlage nutze ich das intuitive Zeichnen von Schaltplänen sowie die automatisierte Erstellung von Anschlußverzeichnissen.
Diese Anteile werde ich im Folgenden vorstellen. Ich kann nicht garantieren, daß mein Weg der einzige und das alles Beschriebene so richtig ist - aber für meine Zwecke funktioniert es so.

Auf die Installation und die persönlichen Einstellungen gehe ich nicht weiter ein. Unter Linux Mint funktionierte alles problemlos, die Einstellungen muß jeder nach seinen Vorlieben vornehmen.


Schaltplan zeichnen
Die Voraussetzung für die Nutzung jeglicher Funktionen ist natürlich ein Schaltplan.
Der läßt sich mit gEDA schnell und intuitiv erstellen. Nahezu alle Funktionen können alternativ zur Menüsteuerung auch über Rechtsklick bzw. Tastenkombinationen (ein bzw. zwei Buchstaben) aufgerufen werden. Die Tastenkombinationen der häufigst benutzten Funktionen hat man schnell intus.

Ein Schaltplan entsteht durch Einfügen von Bausteinen (Einfügen - Bauteil [i])...
[0209]

...und Verbinden der entsprechenden Anschlüsse durch Leitungen (Einfügen - Netz [n]).

[0210]
Bauteile können auch rotiert (ER) oder gespiegelt [EI] werden. Dabei kann sich auch die Position der Pins ändern - am besten selbst ausprobieren!
Die Bauteile müssen dann noch eineindeutig benannt werden. Hierfür ist das "Attribut" (mehr dazu unter "Bauteile") refdes= zuständig. Zum Setzen des Attributs wird das Beuteil (oder auch nur der sichtbare Name) mit der Maus markiert und das gewünschte Attribut über Bearbeiten-Bearbeiten [EE] gesetzt.

[0211] [0212]
Im Bearbeiten-Fenster kann man erkennen, daß Attribute und deren Werte wahlweise angezeigt oder verborgen werden können. Zur Bearbeitung verborgener Attribute lassen sich diese einblenden. Im Menü ist der Befehl Bearbeiten-Unsichtbaren Text anzeigen/verbergen [EN] ganz weit unten "versteckt". Ich habe ihn dort anfangs gar nicht gesehen
Der erste Schaltplan ist so schnell gezeichnet, zum besseren Verständnis der weiteren Ausführungen empfehle ich auch einen Test-Schaltplan anzulegen!

Der Entwurf eigener Bauteile ist möglich und (nach meinen Erfahrungen) unumgänglich. Hierzu später mehr.
Soll später ein Anschlußverzeicnis erstellt werden, sind einige Dinge zu beachten, die ich bei der Definition von Bauteilen erklären werde. Die Ausgabe kann man sich mit dem Terminal-Befehl [gnetlist -v -g geda /dateipfad/mein-schaltplan.sch -o /dateipfad/ausgabedatei] an dieser Stelle schon mal anschauen. -g definiert hier das zu verwendende Ausgabeformat und -o die Ausgabedatei. Ohne -o kann kann man sich die interne Auswertung (das Ergebnis in der Datei wird hiervon je nach gewähltem Ausgabeformat abweichen) anschauen oder alternativ die Ausgabe mittels [>] direkt in die Ausgabedatei umleiten. Auch hierzu später mehr.
An dieser Stelle möchte ich nur auf die [unnamed_nets] hinweisen. Alle miteinander verbundenen Pins werden über die gemeinsame Verbindung als Netz=net bezeichnet. Über entsprechende Benennung lassen sich die nicht darstellbaren Kabelfarben kompensieren - also z.B. "Digital+", "Masse", "5V+" usw. Bei der Auswertung mit gnetlist werden alle Pins mit gleicher Netzbenennung als zusammenhängend ausgewertet. Da die (Um-)Benennung aber jederzeit möglich ist, braucht uns das an dieser Stelle noch nicht zu interessieren, die ausführliche Erklärung folgt ebenfalls bei der Erklärung selbsterstellter Bauteile. Für jetzt können wir mit den [unnamed_nets] gut leben.
Als Beispiel für das Endergebnis zeige ich hier noch mal den schon bekannten Auszug aus meinem Schaltplan und das Anschlußverzeichnis für das selbe Bauteil.
[0207]
Zur Einstimmung sollte das genügen. Im zweiten Teil erkläre ich die Bearbeitungswerkzeuge, Bauteil-Attribute und das Erstellen eigener Symbole.

[edit]
Bauteil-unabhängige Beschriftungen fügt man mit [at] ein. Im ersten Moment gewöhnungsbedürftig:
(1) Text in dem erscheinenden Fenster eingeben
(2) [Anwenden] klicken
(3) Text im Plan platzieren
(4) Schritte für weiteren Text wiederholen oder mit [Schließen] beenden.


Wenn Ihr Fehler findet oder Verbesserungsvorschläge habt, werde ich diese dankbar umsetzen!
Gruß,
Mark


Mein Hamburg - meine Speicherstadt: Das Inhaltsverzeichnis
Meine aktuelle Baustelle:
Mein Hamburg - meine Schattenbahnhöfe

Fahrzeuge i.d.R. von Märklin, zunehmend von BraWa


 
Jumbo-44
InterCity (IC)
Beiträge: 849
Registriert am: 04.11.2009
Ort: Rostock
Gleise Peco, Märklin K
Spurweite H0
Steuerung rocrail+rocnet, Gleisbox USB
Stromart AC, Digital


RE: Tutorial: Schaltpläne zeichnen mit gEDA -> Hierarchische Pläne erstellen

#2 von Jumbo-44 , 29.06.2016 16:31

Navigation
Grundsätzliches
Häufige Befehle
Bauteile und eigene Symbole
Anschlußverzeichnis erstellen
Hierarchische Pläne

gEDA läßt sich (nahzu) vollständig über die Tastatur bedienen. Und mein Eindruck ist, daß die Arbeit sehr viel flüssiger von der Hand geht, wenn man die Maus lediglich zum "Zeichnen", aber eben nicht für die Menü-Bedienung nutzt.
Deshalb hier meine Favoriten für die Steuerung des Programmes:
Kann mir jemand erklären, wie ich eine Tabelle erzeuge? Mit den "Knöpfen" verschwindet entweder der Text (table) oder der aktuelle Beitrag wird mit älteren Beiträgen durcheinander gewürfelt (td, tr)
edit: gelöst, dank Ralfs Erklärung (s.u.)

MausradZoom
Mausrad + [strg]Bildausschnitt links/rechts verschieben
[Mausrad + [shift]Bildausschnitt hoch/runter verschieben
[Mausrad + [alt]Bildschirmlupe
Doppelklick oder e eBauteil bearbeiten
iBauteil einfügen (öffnet Dialog)
nNetz einfügen
e nunsichtbaren Text anzeigen/verbergen
t taktiviert/deaktiviert Sichtbarkeit von Attributen
e rgewähltes Bauteil um 90° rotieren
e igewähltes Bauteil spiegeln
e taktuellen Plan transferieren (-] eigene Symbole)
a aAttribut einfügen
a tText (Beschriftung) einfügen
e cBauteil kopieren und einfügen in einem Schritt (innerhalb des gleichen Planes)
y cein/mehrere Bauteile in Pufferspeicher kopieren (mit strg+c können keine Elemente zwischen mehreren Plänen kopiert werden!)
y pein/mehrere Bauteile aus Pufferspeicher einfügen



Gruß,
Mark


Mein Hamburg - meine Speicherstadt: Das Inhaltsverzeichnis
Meine aktuelle Baustelle:
Mein Hamburg - meine Schattenbahnhöfe

Fahrzeuge i.d.R. von Märklin, zunehmend von BraWa


 
Jumbo-44
InterCity (IC)
Beiträge: 849
Registriert am: 04.11.2009
Ort: Rostock
Gleise Peco, Märklin K
Spurweite H0
Steuerung rocrail+rocnet, Gleisbox USB
Stromart AC, Digital


RE: Tutorial: Schaltpläne zeichnen mit gEDA -> Hierarchische Pläne erstellen

#3 von rmayergfx , 29.06.2016 16:48

Hallo Mark,

benutze einfach diese Onlineseite und kopiere die Tabelle hier rein: http://www.teamopolis.com/tools/bbcode-table-generator.aspx

adfasdadfsadf
adsfadfadf
adfadsfadf

mfg

Ralf


Der Computer soll die Arbeit des Menschen erleichtern und nicht umgekehrt!
Neue Kupplungen für Faller OHU Selbstentladewagen: viewtopic.php?f=27&t=82863
Kein Support per PN !


 
rmayergfx
ICE-Sprinter
Beiträge: 5.391
Registriert am: 07.07.2008
Gleise C-K-Flex-M-Gleis
Spurweite H0, Z, 1
Steuerung MS2, 6021, 60213
Stromart AC, Digital, Analog


RE: Tutorial: Schaltpläne zeichnen mit gEDA -> Hierarchische Pläne erstellen

#4 von Jumbo-44 , 30.06.2016 20:51

Moin Ralf,
danke für den Link - jetzt verstehe ich auch den Code!

Schönen Abend,
Mark


Mein Hamburg - meine Speicherstadt: Das Inhaltsverzeichnis
Meine aktuelle Baustelle:
Mein Hamburg - meine Schattenbahnhöfe

Fahrzeuge i.d.R. von Märklin, zunehmend von BraWa


 
Jumbo-44
InterCity (IC)
Beiträge: 849
Registriert am: 04.11.2009
Ort: Rostock
Gleise Peco, Märklin K
Spurweite H0
Steuerung rocrail+rocnet, Gleisbox USB
Stromart AC, Digital


RE: Tutorial: Schaltpläne zeichnen mit gEDA -> Hierarchische Pläne erstellen

#5 von Jumbo-44 , 04.07.2016 07:53

Navigation
Grundsätzliches
Häufige Befehle
Bauteile und eigene Symbole
Anschlußverzeichnis erstellen
Hierarchische Pläne


Teil 3 - eigene Bauteile
Wie schon beschrieben, wird mit der Installation ein umfangreicher Katalog fertiger Bauteile mitgeliefert. Diese scheinen aber mehr auf Platinenlayout, und weniger auf Modellbahn ausgerichtet zu sein , es führt also kein Weg an der Erstellung eigener Symbole vorbei.
Ich habe mir die in der folgenden Abbildung zu sehenden Bauteile "angefertigt": Lötleiste (hier: 12 Anschlüsse in Doppelreihe), elektr.Anschlüsse am Gleis, elektr.Anschlüsse an Weichen, Servomodul

[0213]

Da ich selbst einige Zeit einen Knoten im Hirn hatte, gleich hier ein Hinweis zur Verdrahtung und zu eigenen Symbolen:
Um unkalkulierbaren Effekten bei der späteren Schaltplanauswertung vorzubeugen, sollte jeder Name (also jedes physiklaische Bauteil) nur ein einziges Mal im Plan vorkommen. Das bedeutet folglich, sich im Zweifelsfall vom physischen Aussehen der eigenen Verdrahtung zu entfernen, also diese zu abstrahieren. Konkret bedeutet dies beispielsweise, daß mehrere Stromeinspeisungen in das Gleis eines Blockes (also an unterschiedlichen Stellen der gesamten Blocklänge) im Schaltplan alle an einem Bauteil zusammenlaufen. Ihr könnt die Umsetzung daran erkennen, daß das Symbol für Gleisanschlüsse bei mir den Namen BL... trägt, und meist mit mehreren Lötleisten (X-...) verbunden ist. Die einzigen, nicht einem Block zuzuordnenden Gleiseinspeisungen (und ggf. auch Sensor-/Melderanschlüsse) liegen bei mir an Weichen. Da die Weichen (zumindest die polarisierbaren Teile) aus den Servobausteinen heraus versorgt werden, unterscheide ich konsequenterweise zwischen den Bauteilen "Weiche" und "Servo".

Und gleich noch einen zweiten Knoten hinterher:
In der Grundeinstellung referenzieren in den Plan eingefügte Bauteile auf die Bauteile-Bibliothek, ähnlich wie eine Verknüpfung im Dateisystem. D.h., jegliche Veränderungen, die an Bauteilen vorgenommen werden, verändern das Bauteil in der Bibliothek. Und damit in jedem Plan, der die selbe Bibliothek nutzt.
Sollen, von einem existierenden Bauteil aus Änderungen vorgenommen werden, muß also ein neues Bauteil in die Bibliothek gespeichert werden.
Zwei Ausnahmen:
(1)Manche vom "Eltern-Bauteil" geerbte Attribute können am "Kind-Bauteil" bearbeitet werden ( im Bearbeiten-Dialog [ee] nicht ausgegraute Einträge, z.B. "device" für den eineindeutigen Namen des Bauteils).
(2)Mit [aa] können zusätzliche Attribute eingefügt werden. Diese gelten dann nur für das aktuell im Plan befindliche "Kind-Bauteil"


Enthält die Bibliothek kein für meinen Zweck passendes Bauteil, kann ich ein vorhandenens verändern (und als neues Bauteil abspeichern) oder ein Bauteil neu erstellen. Die Vorgehensweise ist in beiden Fällen grundsätzlich gleich.

*Vorbereitung zum Erstellen eigener Bauteile:*
Da die Bauteile im Plan ja lediglich auf die Bauteile in der Bibliothek verweisen, müssen beim Wechsel zwischen verschiedenen Computern oder bei einer Neuinstallation auch die zusätzlichen Bauteile mitwandern. Dies wird durch ein gesondertes Verzeichnis für die eigenen Symbole deutlich erleichtert.

[0214]

Hierfür muß die Konfigurationsdatei "gafrc" angelegt bzw. ergänzt werden. Die Benutzer-bezogene Datei liegt (für Linux, bei Windows mag das anders sein) im Verzeichnis home/nutzer/.gEDA . Ist dort keine Datei gafrc vorhanden, wird sie per Texteditor neu angelegt. Als einzige Einträge enthält sie die Pfade zu den eigenen Bauteilen und den default-Speicherpfad für meine Schaltpläne.

[0215]

Durch den Eintrag "eigene Symbole" (hier ist jede beliebige Bennennung erlaubt; nur Umlaute mag gEDA nicht) erzwingt man die gesonderte Darstellung im Dialog "Bauteil einfügen", ansonsten würden die selbsterstellten Bauteile irgendwo in der Menüstruktur verschwinden.


Bauteil entwerfen
(1) Zuerst die als Ausgangspunkt dienende Symboldatei (*.sym) öffnen oder eine neue Plandatei (*.schem) erzeugen. Die Plandatei muß noch von den nicht benötigten Elementen (Rand, Beschriftungsfeld) befreit werden (alles markieren, dann löschen).

(2) Als nächstes soll gem. der verschiedenen Anleitungen unter Nutzung der graphischen Elemente (Linie, Rechteeck, Kreis) das eigentliche Bauteil gezeichnet werden. Sofern keine realen Abmessungen berücksicht werden sollen, sondern es lediglich um die symbolische Darstellung geht, kann ich darin keinen Vorteil erkennen. Und ich konnte auch keinen Nachteil darin finden, elektrische (Pins) und graphische Elemente in gemischter Abfolge einzuzeichnen.

(3) Die Anschlüsse (Pins) sind natürlich das Kernstück eines Bauteils. Ich habe zwischen den Pins einer Reihe stets den Rasterabstand "2" angesetzt. Damit überschneiden sich die Beschriftungen nicht. Beim Zeichnen von Netzen verbinden sich diese manchmal an nicht gewünschter Stelle. Durch stärkeres Hineinzoomen läßt sich dies vermeiden.
Pins lassen sich mit beliebig langen "Anschlußfahnen" zeichnen. Bei mir sind diese nie länger als 1 oder 2 Raster; ich schließe auch munter von beiden Seiten an. Dies entspricht auch der Realität bei den meisten Anschlüssen meiner Verdrahtung.
Den einzelnen Pins gibt man am besten gleich die gewünschten (erforderlichen) Attribute mit. Über [kopieren]-[einfügen] bzw. [ec] lassen sich diese dann von Pin zu Pin mitnehmen, statt sie jedesmal neu zu tippen.
Das Beispiel meines "Servos"

[0216]

zeigt die erforderlichen Pin-Attribute:

pintype=pas(sive) ist so eine Art "Joker"-Wert. Andere Werte (in, out, pwr, ...) können der "master attribute list" entnommen werden
pinnumber= Nummerierung der Pins, auch Buchstaben sind erlaubt
pinseq=Reihenfolge (Sequenz) der Pins; setze ich regelmäßig gleich der pinnumber, es sind aber ausschließlich Ziffern erlaubt
pinlabel=sofern die Pinbelegung vorgegeben ist oder durchgängig beibehalten werden soll ist die eindeutige Benennung hilfreich bei der späteren "Verdrahtung", hat aber keine Funktion für die automatische Benennung der Netze! Wenn wie bei Lötleisten usw., die Pin-Belegung variabel sein soll, setze ich "-" für das Attribut (leerlassen ist nicht erlaubt). In diesem Fall verberge ich das Attribut ("nicht sichtbar"), da es ohnhin keine Information für das Verständnis eines Planes liefert.
Hinweis: eine Bedeutung erhält pinlabel= in hierarchischen Plänen (siehe dort); dann muß es sichtbar bleiben und die Farbe auf "grün" umgestellt werden


Das Bauteil als Ganzes benötigt ebenfalls eine Reihe von Attributen. Diese werden später an die "Kind-Bauteile" vererbt und sind im Bearbeiten-Dialog (bei Aufruf aus einem Schaltplan heraus) ausgegraut dargestellt.

[0217]

Die schwarz dargestellten Attribute sind ebenfalls vererbt, aber durch Bearbeitung "individualisierbar" (z.B. der eineindeutige Name "refdes=").
Nach meinem Kenntnisstand sind die folgenden Attribute unverzichtbar (Details vgl. "master attributes list"):

device=grobe Eingruppierung; ich nutze (bisher) immer MISC(cellanous); als Beispiele werden genannt: 7400, pcb_transistor, connector_10; wichtig: Leerzeichen sind hier nicht erlaubt!
graphical=1optional: sofern ein Bauteil keine elktrische Funktion hat, ist dieses Attribut zu setzen (für alle anderen Bauteile entfällt das Attribut); bei der Listenerstellung wird das Bauteil dann übersprungen
refdes=eineindeutige Bennennung des [u]einzelnen[/] Bauteils; die Fragezeichen machen das Attribut später bearbeitbar (deshalb taucht es beim fertigen Bauteil auch zweimal auf: einmal in grau vom "Eltern-Bauteil", einmal in schwarz als individuelles "Kind-Merkmal")
Wichtig: keine Leerzeichen, Anführungszeichen und non-ASCII Zeichen (z.B. Umlaute) verwenden; Kleinbuchstaben am Ende werden ignoriert (U1a und U1b werden im Anschlußverzeichnis zu U1 zusammengefaßt)
description=frei wählbarer Text zur Beschreibung des Bauteils
footprint=wird für Listenerzeugung und Simulation benötigt; von mir nicht wirklich verstanden, ich setze bei description= eine deutsche und bei footprint= die englische Bezeichnung; "unknown" und "none" sind erlaubte Werte
numslots=ein Bauteil kann aus mereren Untergruppen bestehen; die Anzahl dieser Untergruppen wird hier gesetzt (im Zusammenhang mit slotdef= wichtig)
slotdef=hier wird die Nummer der aktuellen Untergruppe ("1:") sowie die zugehörigen Pins ("1,2,3,...") gesetzt; entfällt bei numslots=0; diese Aufteilung auf mehrere Bauteile wurde von mir noch nicht praktisch erprobt
symversion=major/minoroptional: wird ein Symbol in der Bibliothek überarbeitet, kann dies erhebliche Auswirkungen auf existierende Pläne haben. Wird z.B. die Position oder Anzahl von Pins verändert, werden Netze keine Verbindung mehr zu diesen veränderten Pins haben; um dies aufzufangen, kann man eine "Versions-Nr" setzen. Bei jedem Laden des Plans wird dann die mit dem Bauteil ursprünglich im Plan hinterlegte Versionsnummer mit der Versionsnummer des Bauteils in der Bibliothek verglichen;
major: Nummer soll bei elektrisch relevanten Änderungen geändert werden, erzeugt bei Differenzen zwischen Plan und Bibliothek eine 'error'-Meldung
minor: für "kosmetische" Anpassungen; erzeugt bei Differenzen zwischen Plan und Bibliothek eine 'warning'-Meldung


Wichtig: die bei Aufruf aus einem Schaltplan schwarz dargestellten Attribute werden nur für dieses eine Bauteil (also nicht in der Bibliothek) verändert. refdes= eineindeutig zu setzen ist zwingende Voraussetzung, damit später die Listenerzeugung funktioniert.

(4) wenn das Bauteil fertig gezeichnet ist und alle Attribute zur Zufriedenheit gesetzt sind, können jetzt die Attribute auf "nicht sichtbar" gesetzt werden, die später nicht ständig im Schaltplan sichtbar sein sollen. Mögliche Wege hierfür sind
- Attribut mit Mausklick markieren - EE - im Menü gewünschte Haken (de)aktivieren
- ein/mehrere Attribute mit Mausklick markieren - TT

(5) als letzte Schritte mit ET das Bauteil "transferieren" (schiebt die Attribute in Dartsellung dichter zusammen und schneidet nicht benötigte Anteile der Arbeitsfläche ab, der Deafault-Wert "0" braucht nicht verändert zu werden) und anschließend das Bauteil unter dem gewünschten Namen (Endung: *.sym) in den Ordner für die eigenen Symbole abspeichern.

Bevor neu gespeicherte Symbole genutzt werden können, muß gEDA komplett geschlossen werden. Nach dem Neustart stehen die Symbole zur Verfügung.
Wie eingangs erwähnt, können neue Bauteile aus einer existierenden Symboldatei erzeugt werden. Dafür müssen ggf. nicht sichtbare Attribute mit EN eingeblendet werden.

Für die reibungslose Funktion der Listenerzeugung soll die Anzahl der Pins immer geradzahlig sein. Im Zweifelsfall bleiben (real gar nicht vorhandene) Pins eben ungenutzt.

Bauteil prüfen
In wie weit das selbst entworfene Bauteil den formalen Anforderungen entspricht, läßt sich recht leicht prüfen.
Einfach in einem Terminal

1
 
 gsymcheck -vv /pfad/zu/den/eigenen/symbolen/symbolname.sym 
 


eingeben. Die Ausgabe erklärt recht deutlich, wo etwas noch nicht paßt!



Ein paar Überlegungen zur Bauteil-Definition (meine Bauteile sind hier verfügbar):
- jeder Block benötigt
-- GND und + für den Fahrstrom
-- je nach Steuerungssystem 1,2 oder mehr Melderanschlüsse für die Besetztmeldung
hierbei spielt es keine Rolle, an wie vielen Stellen im Block physikalisch eingespeist bzw. abgegriffen wird - entscheidend ist nur die Zuordnung zum Block

- Weichen gehören im Regelfall zu keinem Block; trotzdem wird auch hier Fahrspannung eingespeist und ggf. eine Besetztmeldung abgegriffen
-- GND und + für den Fahrstrom
-- ggf. GND und/oder + bei Polarisierung
-- ggf. 1 oder mehrere Melderabgänge

- am Decoder- oder Servomodul sind angeschlossen
-- GND und/oder + für die Weiterleitung an die Polarisierung
-- 3 Anschlüsse für die Servoansteuerung (GND, +(5V), SGN)

Die Benennung dieser Anschlüsse via pinlabel= erhöht die Lesbarkeit des Planes ungemein. Um der automatischen Listenerzeugung das Netz bekannt zu machen ist aber eine Benennung an anderer Stelle erforderlich (s. Teil Anschlußverzeichnis erstellen).

Die verlinkte Datei enthält auch ein Beispiel einer "Lötleiste". Ob das der Königsweg für derartige Klemmen etc. ist, mag jeder selbst entscheiden.

Damit ist alles angesprochen, was man zum Erstellen eines Verdrahtungsplanes mitels gEDA wissen muß.
Im nächsten Teil zeige ich dann, wie man mit dem Terminal-Befehl [i]gnetlist[/] Anschlußverzeichnisse usw. erstellt.


Allen einen guten Start in die Woche,
Mark


Mein Hamburg - meine Speicherstadt: Das Inhaltsverzeichnis
Meine aktuelle Baustelle:
Mein Hamburg - meine Schattenbahnhöfe

Fahrzeuge i.d.R. von Märklin, zunehmend von BraWa


 
Jumbo-44
InterCity (IC)
Beiträge: 849
Registriert am: 04.11.2009
Ort: Rostock
Gleise Peco, Märklin K
Spurweite H0
Steuerung rocrail+rocnet, Gleisbox USB
Stromart AC, Digital


RE: Tutorial: Schaltpläne zeichnen mit gEDA -> Hierarchische Pläne erstellen

#6 von Jumbo-44 , 15.07.2016 07:51

Navigation
Grundsätzliches
Häufige Befehle
Bauteile und eigene Symbole
Anschlußverzeichnis erstellen
Hierarchische Pläne


Anschlußverzeichnis erstellen

Anschlußverzeichnisse, Stücklisten usw. werden in gEDA mit Hilfe des Kommandozeilen-Werkzeugs gnetlist erstellt.
In ihrer Grundform ist die Syntax recht einfach,

1
 
gnetlist -v -g geda /pfad/zu/meinem/schaltplan.schem -o /pfad/zu/meiner/outputdatei/netlist_out
 


erzeugt bereits ein einfaches, aber brauchbares Anschlußverzeichnis.

Hierbei bedeuten

-v [verbose]gnetlist "erzählt", was es so tut
-gSpezifizierung des zu nutzenden "Backends" (hier: geda);

1
 
man gnetlist
 

listet u.a. auch alle unterstützten Backends auf; welches für die eigenen Zwecke taugt, muß man ausprobieren

die Angabe der Quelldatei ist selbsterklärend; hier können beliebig viele Schaltpläne aufgezält werden, die dann in eine gemeinsame Liste ausgewertet werden; auch die Nutzung von "wildcards" ("?", "*") ist möglich
-o [output]Spezifizierung der Ausgabedatei; ohne Angabe des Pfades schreibt gnetlist in das home-Verzeichnis des aktuellen Nutzers


Die mit -v erzeugte Bildschirmausgabe enthält bereits alles, was ich für meine Zwecke benötige. Mit ">" läßt sich "standard_out", also die Bildschirmausgabe umleiten.

1
 
gnetlist -v -g liquidpcb /pfad/zu/meinen/Schaltplaenen/welt-sued_* > /mein/zielverzeichnis/netlist_out
 


schreibt also die Auswertung aller mit "welt-sued_" beginnenden Schaltpläne im Zielverzeichnis in die Datei "netlist_out". Die Wahl des Backends spielt hier keine Rolle, da die Bildschirmausgabe hiervon unabhängig ist.
Wichtig: gEDA / gnetlist mag keine Umlaute. Hierauf ist bei der Benennung von Pfaden und Dateien zu achten, wenn es funktionieren soll. Und natürlich unterscheidet Linux zwischen Groß- und Kleinbuchstaben - auch hierauf ist also zu achten!

Die Ausgabe von gnetlist kann über folgende Attribute im Schaltplan beeinflußt werden (z.B. zur Unterdrückung der 'unnamed nets'):

netname=wird am Netz, also an der Leitung angebracht;
hierdurch lassen sich Netze benennen; alle Netze mit identischen Namen gelten als elektrisch verbunden; im Schaltplan verbunden gezeichnete Netze sollten nicht mehrfach attributiert werden!
net=NAME:PIN,PIN, ...spezifiziert, an welchen Pins ein bestimmtes Netz (GND, 5V+, SGN_in, ...) angreift; Platzierung innerhalb oder außerhalb von Bauteilen (net= außerhalb "überschreibt" net= innerhalb, es können also Pins "umgewidmet" werden); auch nicht sichtbare Pins können so mit einem bestimmten Netz verbunden werden!
für Details vgl. "net= attribute mini-howto"
source=quelldatei.schwird dieses Attribut zu einem Symbol (nur 'instantiated symbols'=Symbole, die für einen Unterplan stehen) hinzugefügt, wertet gnetlist auch diesen, auf diese Art hierarchisch verbundenen Schaltplan mit aus


Hiermit wäre (in Grundzügen, tatsächlich kann die gEDA-Suite noch einiges mehr) erklärt, was zum Zeichnen von Schaltplänen und Erstellen von Anschlußverzeichnissen im Umfeld von Eisenbahn und Modellbau erforderlich ist. Hoffentlich ist es mir dabei gelungen, die Scheu vor so einem "Extra-Programm" zu nehmen, denn unter dem Strich läßt sich die Verdrahtung einer Modellbahn mit gEDA viel schneller und sauberer dokumentieren als mit jeglichen "Office-Behelfs-Lösungen" - so zumindest meine persönliche Erfahrung.

In einem letzten Teil werde ich noch auf die hierarchische Verbindung von Schaltplänen eingehen. Das ist gewissermaßen ein "Add-on", da sich selbst Modularrangements über die oben gezeigte "Mehrfachauswahl" in gnetlist ohne Hiearchie auswerten lassen. In bestimmten Situationen, z.B. ein komplex verdrahtetes Gebäude, kann es aber durchaus die Übersichtlichkeit verbessern, eine solche komplexe Schaltung "auszulagern" und im Hauptplan lediglich als Einzelsymbol abzubilden.

So viel für heute,
allen einen guten Tag,

Mark


Mein Hamburg - meine Speicherstadt: Das Inhaltsverzeichnis
Meine aktuelle Baustelle:
Mein Hamburg - meine Schattenbahnhöfe

Fahrzeuge i.d.R. von Märklin, zunehmend von BraWa


 
Jumbo-44
InterCity (IC)
Beiträge: 849
Registriert am: 04.11.2009
Ort: Rostock
Gleise Peco, Märklin K
Spurweite H0
Steuerung rocrail+rocnet, Gleisbox USB
Stromart AC, Digital


RE: Tutorial: Schaltpläne zeichnen mit gEDA -> Hierarchische Pläne erstellen

#7 von Jumbo-44 , 21.07.2016 12:54

Und nun zum letzten Teil!

Navigation
Grundsätzliches
Häufige Befehle
Bauteile und eigene Symbole
Anschlußverzeichnis erstellen
Hierarchische Pläne


Hierarchische Pläne

Bei der Beantwortung der Frage, ob eine hierarchische Anordnung der (Teil-)Schaltpläne sinnvoll ist, sind folgende Fälle zu unterscheiden

1. Die Gesamtverdrahtung soll auf mehrere Teilpläne aufgeteilt werden
- weil EIN Plan undurchschaubar groß würde, oder
- weil damit verschiedene Ebenen, Anlagenteile usw. einzeln betrachtet werden können, oder
- weil es der Aufteilung der Spannungsversorgung usw. entspricht, oder
- ...
dann ist kein hierarchischer Plan erforderlich.
Werden alle Teilpläne als Argumente ("Quelle") an gnetlist übergeben wird aus allen Plänen ein gemeinsames Anschluß-, Bauteile- usw. -verzeichns erstellt.
Ein allen Teilplänen gemeinsamer Namensteil (z.B. "Mein_Hamburg_") vereinfacht den Code, da lediglich dieser gemeinsame Namensteil mit einem anschließenden *.sch als Argument übergeben werden muß.

2. Teile eines Planes sollen aus diesem ausgegliedert werden
- weil ein Teil der Anlage als "Wechselmodul" ausgeführt ist (wie bspw. im MiWuLa der Laternenumzug, das Kuhfladenbingo usw.), oder
- weil ein Gebäude, Anlagenbereich usw. komplex verdrahtet ist und den Gesamtplan unübersichtlich machen würde, oder
- ...
dann kann dieser ausgegliederte Teil als gesonderter Schaltplan gezeichnet und in den übergeordneten Plan als Symbol integriert werden. Zwischen den beiden Schaltplänen läßt sich über die verbindnenden Symbole hinauf- und hinabnavigieren. Bei der Auswertung erkennt gnetlist den verbundenen Unter-Plan, ohne daß dieser als Argument übergeben werden muß.

3. In einem Hauptplan sollen alle Teilpläne (z.B. Anlagensegmente) als Symbole abgelegt, die jeweiligen Verdrahtungen dann in Einzelplänen gezeichnet werden
- weil im Hauptplan auf einen Blick erkennbar ist, aus welchen Segmenten usw. sich die Gesamtanlage zusammensetzt, oder
- weil der Hauptplan Startpunkt für die Navigation durch die Teilpläne ist (alternativ ruft man die Teilpläne halt über den Dateimanager auf), oder
- weil bei wechselnden Modularrangements die Darstellung der elektrischen Zusammenhänge (Verbindungen) die Fehlersuche erleichtern soll, oder
- ...
Das ist gewissermaßen die Kombination der Fälle 1 und 2, da der übergeordnete Hauptplan keine andere (elektrische) Funktion hat, als die untergeordneten Teilpläne zu verbinden. Ob sich dafür der Aufwand eines hierarchischen Planes lohnt, muß jeder für sich selbst entscheiden.


Ob die gemeinsame Auswertung mehrerer Teilpläne entsprechend Fall 1 fehlerfrei funktioniert, wenn mind. ein Teilplan hierarchische Unterelemente nach Fall 2 enthält, habe ich noch nicht getestet.


Wie erzeugt man nun eine Hierarchie?
Zur Verdeutlichung habe ich eine einfache Test-Anordnung erstellt, aus der die nachfolgenden Screenshots stammen. Zum Nachvollziehen sind die Dateien außerdem hier verfügbar.
Jedes "Netz" (also jede Leitung), die mit dem übergeordneten Plan verbunden werden soll, benötigt im oberen Plan ein Symbol für den unteren Plan, und im unteren Plan ein Input/Output-Symbol, das die Verbindung zum oberen Plan herstellt.
Das Symbol im oberen Plan benötigt die Attribute

    source=[name_der_unteren_datei]
    refdes=... , das im besten Fall den Bezug zum unteren Plan erkennen läßt

Im unteren Plan ist für jede Leitung ein Input-/Output-Symbol einzufügen mit dem Attribut
    refdes=[Pin_des_Symboles_im_oberen_Plan].

Sind mit dem oberen Plan mehrere untere Pläne verbunden, so führt das zwar dazu, daß es mehrere Symbole mit refdes=1 (in jedem unteren Plan eines) gibt. Da intern aber jeweils die Bezeichnung des unteren Plans vorangestellt wird, bleibt dies (nach meinen bisherigen Erfahrungen) ohne negative Folgen.

Einfacher nachvollziehbar macht das hoffentlich nachfolgende Abbildung des Hautplanes und der beiden verbundenen Unterpläne:

[0218]

Ruft man nun gnetlist mit dem Namen des Hauptplanes als Argument auf

1
 
gnetlist -g geda /pfad/zu/meinen/schaltplaenen/test_main*
 


so werden die verbundenen unteren Pläne mit ausgewertet.
Wichtig ist, daß für das Verzeichnis der Unterpläne ein Eintrag

1
 
(source-library ".")
 


in der Datei gnetlistrc (wahlweise in der globalen oder der persönlichen) erstellt wird.
Dies entfällt, sofern man die Unterpläne in die in der Datei gafrc festgelegte source-library gespeichert hat (anders ausgedrückt: speichert man grundsätzlich alle seine Pläne im gleichen Verzeichnis muß man sich hier keine Gedanken machen!).

Nachfolgendes Bildschirmfoto zeigt die Ausgabe von gnetlist:

[0219]

Dabei enthalten die Sektionen

HeaderAngaben zum verwendeten Backend (hier: gEDA's netlist format)
Componentsdie Bauteile der einzelnen Unterpläne, jeweils mit vorangestellter Bezeichnung des Unterplanes ("sub_1/") entsprechend der refdes= Bezeichnung des Symbols im Hauptplan
das Trennzeichen (hier: "/") kann in der Datei /etc/gEDA/system-gnetlistrc angepaßt werden
renamed-netsalle Leitungen (Netze) der Pläne werden fortlaufend nummeriert; die Sektion listet alle im Zuge der Analyse umbenannten Netze mit ihrem neuen Namen auf
netsdie unnamed_nets sollte man nun einer Überprüfung unterziehen (s.u.); bei einem in sich stimmigen Plan tauchen hoffentlich weniger davon auf!
die benannten Netze listen die verbundenen Pins in der Schreibweise Unterplan/Bauteil Pin auf; dies ist nun das eigentlich gewollte Ergebnis: das Anschlußverzeichnis (zur Erinnerung: jedes verfügbare Backend erzeugt eine spezifische Ausgabe; da hilft nur Ausprobieren!)


Woher stammen die verbliebenen "unnamed_nets"?
In meiner realen Verdrahtung sehe ich ja, daß eine bestimmte Lötfahne mit einer Leitung für Digitalstrom (bei mir z.B. "rot") verbunden ist.
In meinem Schaltplan benenne ich nun diese Leitung nicht (was ohne weiteres möglich wäre) mit "dig18V", sondern warte das Ergbnis der Listenerzeugung ab. Sofern ich die reale Verdrahtung richtig "abgezeichnet" habe, wird auch das Abbild meiner Lötfahne (Pin ...) mit dem Abbild der Spannungseinspeisung verbunden sein - erkennbar an dem Listeneintrag "dig18V: ...Bauteil Pin...".
Da man (also ich auf jeden Fall!) sich sowohl beim Nachvollziehen der realen Verdrahtung als auch beim Übertrag in den Schaltplan recht schnell vertun kann, halte ich dies für eine ganz brauchbare Kontrolle des Schaltplanes - schließlich sollen der Plan bzw. das Anschlußverzeichnis eine sicher irgendwann anstehende Fehlersuche unterstützen, und nicht erst einma selbst der Fehlersuche unterzogen werden müssen!

Mit der nachfolgenden Abbildung führe ich noch zwei Effekte vor:
1. habe ich einen zweiten Block in einen der Schaltpläne eingefügt und mit der Fahrspannung verbunden.
2. habe ich die Leitungen zu den Belegtmeldern entsprechend ihres Verwendungszweckes benannt (netname=...)

[0220]

Die Ausgabe von gnetlist zeigt, die Wirkung von
Änderung 1:
hinter dig18V bzw. GND werden nun auch die verbundenen Pins des dritten Blocks aufgelistet
Änderung 2:
wie gewünscht wurden die unnamed_nets durch die neu vergebenen Namen ersetzt; allerdings führt die identische Benennung dazu, daß die Melde-Leitungen beider Blöcke im Schaltplan sub_2 (jeder Block hat einen enter- und einen in-Melder, die logischerweise zwischen den Blocks real nicht verbunden sind) als elektrisch verbunden angezeigt werden! Eine Verbindung zwischen den identisch benannten Netzen in sub_1 und sub_2 hingegen erfolgt nicht: ohne Verbindung zum Hauptplan werden die Netze der einzelen Unterpläne unabhängig voneinander ausgewertet und bezeichnet (z.B. sub1/SGN_in).
Es macht übrigens keinen Unterschied, ob ich Netze über netname= (an der Leitung) oder über net=[Netz]:[Pin] (an einem Bauteil) benenne; lediglich eine gemischte Benennung mittels net= an der einen und netname= an der anderen Leitung wertet gnetlist nicht als verbunden.
Es ist also Vorsicht bei der Benennung der Netze geboten!

Noch eine Anmerkung: in den verschiedenen Konfigurationsdateien (wahlweise global im Verzeichnis /etc/gEDA oder persönlich im Verzeichnis /home/ICH/.gEDA) kann man nahezu alles an seine Bedürfnisse anpassen. Dies umfaßt die Standardseitengröße (voreingestellt ist Letter), die Standardansicht (wer z.B. lieber den hellen als den dunklen Hintergrund verwendet wird hier fündig) bis hin zu den Tastenkombinationen der einzelnen Befehle.

Allen nun viel Freude beim Nachvollziehen der Beschreibung und viel Erfolg beim Dokumentieren der eigenen Verdrahtung!
Und nochmals die Bitte und Aufforderung: wer einen Fehler oder auch nur eine alternative Vorgehensweise findet möge dies hier einbringen, um den Nutzen für alle zu maximieren.

Gruß,
Mark


Mein Hamburg - meine Speicherstadt: Das Inhaltsverzeichnis
Meine aktuelle Baustelle:
Mein Hamburg - meine Schattenbahnhöfe

Fahrzeuge i.d.R. von Märklin, zunehmend von BraWa


 
Jumbo-44
InterCity (IC)
Beiträge: 849
Registriert am: 04.11.2009
Ort: Rostock
Gleise Peco, Märklin K
Spurweite H0
Steuerung rocrail+rocnet, Gleisbox USB
Stromart AC, Digital


   


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz