KiCAD an EleLa Anbindung
Dieses Tutorial zeigt wie man die Bauteile aus der EleLa Datenbank für
den KiCAD verfügbar
machen kann. Das Ziel ist es einen Datenbestand für die Bauteile
zu haben sowie der Import der Projektpositionen anhand dem Export der
Bauteile aus dem CAD Projekt. Die Bauteile werden nur in EleLa angelegt
und verwaltet und über KiCAD können diese benutzt werden. In
diesem Tutorial werden die Änderungen und die Möglichkeiten
von EleLa beschrieben.
Man kann KiCAD mit EleLa in der Variante SQLite oder MariaDB/MySQL benutzen.
Für diesen beiden SQL Dialekte kann EleLa automatische generierte
Scripte erzeugen.
Vorgehen bei neu Anlegen von Bauteilen um diese in KiCAD verwenden zu
können:
- In EleLa: Anlegen des neu gewünschten Bauteils, incl. Bilder
und technischen Daten.
- In KiCAD: Zeichnen vom Schaltplan Symbol.
- EleLa: Verlinken den neuen Symbols bei Gehäuse/Variante
mit Library und Library Ref des zuvor neu angelegten Symbols von KiCAD.
- EleLa: Zuweisung des Gehäuses in EleLa. Überprüfung
ob in EleLa bereits bei Gehäuse-F6
ein Footprint verbunden wurde. Wenn nicht dann eines aus der KiCAD Footprint
Bibliothek zuweisen. Sollte kein apssendes Footprint vorhanden sein,
so:
- KiCAD: Erstellen eines Footprint Symbols.
- EleLa: Zuweisung des neuen Footprints zu, Gehäuse.
Mit dieser Vorgehensweise legt man die Verknüpfungen zum Schaltplan
Symbol sowie zum Gehäuse Footprint fest.
Installation:
Bevor man jedoch mit KiCAD die Bauteile von EleLa sehen kann muss man
ein paar Einstellungen tätigen, bzw. einen ODBC Datenbank Treiber
installieren:
- Installation von KiCAD
ab V8
- Einstellung der KiCAD Ordner der Symbole und Footprints in der EleLa
Konfiguration (EleLa kann diese Dateien lesen)
- Installation des ODBC Datenbank Treibers (für SQLite oder MySQL
(=MariaDB))
- Views für die Datenansicht in KiCAD erzeugen (Extras-F10 >
Datenbank > Import/Export Menü > "CAD KiCAD View SQL
erzeuen" und den Script ausführen.
- Datei "EleLa.kicad_dbl" eventuell anpassen und in KiCAD
eintragen
- KiCAD konfiguration
Punkt 2: Einstellung der Ordner im EleLa Konfigurationsmenü:
|
In EleLa werden die Ordnern "KiCAD Smybols" und "KiCAD
Footprints" eingerichtet, so wie diese in KiCAD verwendet werden.
Nach dem Neustart von EleLa ist EleLa bereits für den Betreib
mit KiCAD konfiguriert, sobald diese beiden Ordner eingerichtet
wurden.
Extras-F10 > Log > Optionen > Verzeichnisse
Hinweis: Bei jedem Arbeitsplatz mit KiCAD und ELeLa müssen
diese Ordner separat ausgewählt werden, da bei jedem Arbeitsplatz
vermutlich der Speicherort ein anderer ist.
Hinweis: Generell sollte man sich diese Ordner in einen anderen
Ordner kopieren, der immer wieder gesichert wird da ansonsten eigene
Symbole oder Änderungen bei einem Update von KiCAD überschrieben
werden können.
Diese Sicherung könnte man am besten über eine Quellcode
Verwaltung erledigen, damit hätte man eine Historie der Änderungen
(z.B. SVN oder GIT) sowie bei mehreren Arbeitsplätzen können
diese Systeme gegenseitige Änderungen zusammenführen.
EleLa kann mehrere KiCAD Symbole und Footprint Pfade wenn man diese
mit Semikolon ; getrennt nacheinander ein gibt. Jedoch dürfen
die Dateinamen der Bibliotheken dann nicht die gleichen sein, EleLa
ignoriert doppelte gleiche Dateinamen da da ansonsten keine eindeutige
Zuordnung zwischen den verschiedenen Pfaden bestehen würde.
Dabei liest EleLa zu erst den ersten Pfad ein, wenn im zweiten Pfad
ein gleicher Dateiname sein sollte wird dieser ignoriert und es
wird ein Log Eintrag generiert.
|
Wenn Punkt 1 + 2 erledigt sind kann EleLa bereits unter Gehäuse/Variante
und Gehäuse-F6 die KiCAD Bibliotheken
lesen und man kann die Bauteile bereits mit EleLa verknüpfen.
Punkt 3: ODBC Treiber installation:
ODBC wird benötigt damit KiCAD auf die Daten von EleLa zugreifen
kann. KiCAD hat eine ODBC Schnittstelle und kann über unterschiedliche
Datenbank Treiber die Datenbank benutzen.
Je nach Datenbank System das man benutzt muss der passende ODBC Treiber
geladen werden. Bitte beachten Sie dazu die Lizenzbestimmungen der jeweiligen
Hersteller dieser Treiber.
- Download für SQLite von www.ch-werner.de
die Datei "sqliteodbc_w64.exe"
für ein 64 Bit Windows.
- Download für MariaDB / MySQL von www.mysql.com
der "ODBC Driver for MySQL (Connector/ODBC)" für Windows
64 Bit.
Es können auch andere Treiber von anderen Herstellern verwendet
werden.
Punk 4: Verknüpfung der Tabellen:
Felder aus den Tabellen von "Adresse", "Bauteil",
"Gehäuse/Variante" sowie "Gehäuse" werden
als eine VIEW verknüpft. Dabei können alle Felder der Datenbank
sowie Daten aus den technischen Daten verwendet werden. Durch die VIEW
ist gewährleistet dass die Bauteile über KiCAD nicht geändert
werden können da eine VIEW prinzipiell Read-Only ist.
EleLa verknüpft diese Spalten zu KiCAD:
EleLa Tabelle.Spalte |
KiCAD Spalte |
Bemerkung |
bauteilvariante.ID |
ID |
Eindeutige ID vom Bauteil Gehäuse/Variante in EleLa |
bauteil.Bezeichnung |
Description |
Eindeutige Bezeichnung vom Bauteil |
bauteilvariante.Bezeichnung |
DetailDescr |
Bezeichnung der Gehäuse/Variante |
bauteilvariante.Bemerkung |
Comment |
Beschreibung von Gehäuse/Variante |
bauteilvariante.BezKurz
bauteilvariante.Bezeichnung
bauteilvariante.ArtikelNr
bauteil.Bezeichnung |
Value |
Die View verwendet aus diesen 4 möglichen Spalten die erste
Spalte bei denen ein Wert drin steht, die folgenden Spalten werden
ignoriert.
Der Wert von "Value" wird als Wert vom Bauteil im Schaltplan
angezeigt |
bauteilvariante.ArtikelNr |
MPN |
Hersteller Artikelnummer |
adr.Bezeichnung |
Manufakturer |
Der Hersteller, sofern bei Gehäuse/Variante ein Hersteller
eingetragen ist |
gehause.Bezeichnung |
Case |
Bezeichnung des Gehäuses des verknüpften Gehäuses
aus Gehäuse-F6 |
bauteilvariante.SMD |
SMD |
Die Zahl in EleLa wird zu "yes" oder "no" konvertiert.
|
gehause.Pins |
Pins |
Anzahl Pins des Gehäuses, welches unter Gehäuse-F6 parametriert
wurde |
bauteilvariante.Library + : + bauteilvariante.LibraryRef |
Symbol |
Zusammen setzen des Symbols bei Gehäuse/Variante. <Library>:<LibraryRef> |
gehause.LibraryRef |
Footprint |
Die in EleLa hinterlegte Footprints, wobei ein Footprint <Library>:<Footprint>
ist, EleLa kann mehre dem KiCAD übermitteln indem diese mit ";"
getrennt werden. |
Diese EleLa Spalten sollten alle ausgefüllt werden damit man die
Daten vollständig in KiCAD sieht.
Der SQL Befehl um eine VIEW zu erzeugen:
In EleLa unter "Extras-F10 > Datenbank > Import/Export Menü
> KiCAD VIEW SQL erzeugen" kann der SQL Befehl für die eigene
Datenbank automatisch generiert werden. Der SQL Befehl besteht aus mehreren
einzelnen Befehlen da je Typ-F8 Haupt Eintrag
eine separate View erzeugt wird. EleLa baut dabei je nach Datenbank Typ
SQLite oder MariaDB einen entsprechend für die SQL Syntax passenden
SQL Befehl zusammen.
Mit der Taste "Execute" führt EleLa alle Befehle nacheinander
aus. Die Befehle für die View können mehrfach ausgeführt
werden, EleLa löscht automatisch die View, bzw. überschreibt
die bestehende View. Mit der Änderung oder einem Erzeugen einer View
wird der Datenbestand nicht manipuiliert, dennoch sollte man vorher ein
Backup der Datenbank erstellen.
Beispiel bei SQLite:
DROP VIEW IF EXISTS `EleLa_Widerstand`
;
CREATE VIEW IF NOT EXISTS `EleLa_Widerstand` (
ID, Description, DetailDescr, Comment, Value, MPN, Manufakturer, `Case`, SMD, Pins, Symbol, Footprint, Alternative, Datasheet) AS
SELECT v.ID,
b.Bezeichnung AS Description, v.Bezeichnung AS DetailDescr, v.Bemerkung AS Comment,
IFNULL(IFNULL(IFNULL(v.BezKurz, v.Bezeichnung), v.ArtikelNr), b.Bezeichnung) AS Value,
v.ArtikelNr AS MPN, a.Bezeichnung AS Manufakturer, g.Bezeichnung AS `Case`, IIF(g.SMD=1,"yes","no") AS SMD, g.Pins,
v.Library || ":" || v.LibraryRef AS Symbol,
JSON_EXTRACT(g.LibraryRef, '$."F1"') ||
IFNULL(";" || JSON_EXTRACT(g.LibraryRef, '$."F2"'), "") AS Footprint,
GROUP_CONCAT(c.ArtikelNr, ' | ') AS Alternative,
CAST(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(IFNULL(v.Handbuch, b.Handbuch), "($H)", x'433A5C456C654C615C48616E6462756368'), "($L)", x''), "($P)", x'433A5C456C654C615C50726F6A656B74'), "($G)", x'433A5C456C654C615C476572C3A474'), "($D)", x'433A5C456C654C615C446F6B75'), "($F)", x'') AS VARCHAR(255)) AS Datasheet
FROM bauteil b
LEFT JOIN bauteilvariante v ON (v.Bauteil_ID=b.ID)
LEFT JOIN gehause g ON (g.ID=v.Gehause_ID)
LEFT JOIN adr a ON (a.ID=v.Adr_ID)
LEFT JOIN bauteilvariante c ON (c.BauteilVerwandt_ID=v.BauteilVerwandt_ID AND c.ID <> v.ID)
WHERE v.Library <> "" AND v.LibraryRef <> "" AND v.Art IN (0,2)
AND b.tree_typ_ID IN (1,56,55,54,86)
GROUP BY b.ID, v.ID, g.ID, a.ID
;
|
Funktion: Als erstes wird eine eventuell bestehende View gelöscht
um anschließend die View neu zu erstellen. Dieses Beispiel zeigt
alle Bauteile, die in der Typ-F8 Kathegorie Widerstand
sowie deren Unterkathegorieen zugeordnet wurden. Da die ID's bei jeder
Datenbank andere sind sollte der Script unbedingt von EleLa selbst erzeugt
werden und nicht dieser aus der EleLa-Hilfe verwendet werden.
Die angelegten Views zeigt EleLa bei "Extras-F10" > "Datenbank"
im linken Baum erst nach dem Neustart von EleLa mit an. Dabei ist das
Symbol der Tabelle mit einem Auge versehen.
Die VIEW für KiCAD kann man im SQL Server jederzeit wieder löschen
und neu erstellen, die Daten innerhalb von EleLa werden dadurch nicht
beeinflusst. Sollte man mit der Zeit merken dass man andere, bzw. mehr
Verknüpfungen benötigt, so kann dies jederzeit erweitert werden.
Die Funktion einer View:
- Je Typ-F8 Haupt Eintrag wird eine View erzeugt. Diese zeigt KiCAD
als eine einzelne Bibliothek an.
- Es werden nur Bauteile und Kleinmaterial gezeigt, keine Arbeitszeit.
- Bauteile müssen das Feld "Library" und "LibraryRef"
ausgefüllt haben.
- Wenn man unter Typ-F8 die Struktur ändert, so müss die KiCAD
View SQL Befehle neu erzeugt werden, da ansonsten KiCAD nicht alle Bauteile
sieht.
Besondere Felder:
- Description: Bezeichnung vom Bauteil
- Value: Ist der Wert des Symbols im Schaltplan.
- Symbol: Ist das hinterlegte Schaltplan Symbol.
- Footprint: Sind die passenden Footprint Symbole, die man verwenden
kann. (z.B. Widerstand Axial als liegende oder stehende Ausführung)
Löschen der View:
Mit dem SQL Befehl kann die View wieder von der Datenbank gelöscht
werden:
DROP VIEW `EleLa_Widerstand`
|
Das löschen der View wirkt sich nicht auf die Daten innerhalb von
EleLa aus, eine View kann jederzeit gelöscht werden. Jedoch kann
damit KiCAD die Daten von EleLa nicht mehr sehen.
Punk 5: Datei "EleLa.kicad_dbl":
Diese "KiCAD DataBaseLibrary" Datei erzeugt EleLa automatisch
beim erzeugen des SQL Befehles mit. Diese Datei benötigt KiCAD um
zu wissen welche Views der Datenbank KiCAD überhaupt nutzen darf
und wie die Sturktur der View Tabellen ist. Sowie steht in der Datei die
ODBC Datenbank Parametrierung drin.
ODBC Datenbank Verbindung, Beispiel SQLite:
"name" : "EleLa Database Library",
"description" : "EleLa components",
"source" : {
"type" : "odbc",
"dsn" : "",
"username" : "",
"password" : "",
"timeout_seconds" : 10,
"connection_string" : "DRIVER=SQLite3 ODBC Driver;DATABASE=D:\\svn\\EleLa\\Temp\\EleLaV42.sq3"
},
|
Bei SQLite braucht man in der Datei weiter nichts verändern, sofern
man den oben genannten ODBC Treiber installiert hat.
|
Die Bezeichnung von "DRIVER" muss mit dem installierten
Treiber übereinstimmen, ansonsten klappt die Verbindung nicht. |
ODBC Datenbank Verbindung, Beispiel MariaDB
/ MySQL:
"name" : "EleLa Database Library",
"description" : "EleLa components",
"source" : {
"type" : "odbc",
"dsn" : "elela_kicad",
"username" : "elela",
"password" : "<geheim>",
"timeout_seconds" : 10,
"connection_string" : ""
},
|
EleLa trägt hier automatisch "username" und "password"
aus der bestehenden Datenbank Verbindung ein.
Als "DSN" trägt EleLa den Name "elela_kicad"
ein. Dieser DSN Name muss nun in der "ODBC-Datenquellen-Administrator"
manuell eingerichtet werden.
|
Hinzufügen eines neuen Benutzer-DSN |
|
Auswahl des "MySQL ODBC 8.2 ANSI Driver" und "Fertig
stellen". |
|
Data Source Name: "elela_kicad" (gleich wie in der Datei
"EleLa.kicad_dbl".
Description ist optional
Mein Server muss die TCP/IP Adresse sowie der Port eingetargen
werden (so wie bei EleLa auch.
Ebenfalls der User und das Passwort.
Wenn diese Daten korrekt eingegeben wurden, so kann mit dem DropDown
Feld bei "Database" die EleLa Datenbank ausgewählt
werden.
"Test" zeigt anschließend ob man alles richtig
gemacht hat.
Mit OK wird die Eingabe abgeschlossen.
|
|
Nun kann KiCAD die ODBC Verbindung mit dem Name "elela_kicad"
verwenden. |
Einstellung in KiCAD:
KiCAD nutzt die ODBC Verbindung die in der Datei "EleLa.kicad_dbl"
parametriert ist, daher ist es aus Sicht von KiCAD unwichtig ob der Datenbank
Server SQLite oder MySQL/MariaDB ist.
|
Einstellungen für die "Database Library" zu EleLa
konfigurieren. |
|
Hinzufügen der Zeile für die "Database Library"
Alias Name: "EleLa"
Bibliothekspfad: Ordner und Dateiname der Datei "EleLa.kicad_dlb"
Bibliotheksformat: "Database"
Mit "OK" den Dialog schließen.
|
|
Im Schaltplan Editor kann nun das Bauteil mit dieser Taste eingefügt
werden. |
|
Im "Symbol Wählen" Dialog werden nun die EleLa Einträge
gezeigt. Wenn man einen Eintrag anwählt, so zeigt KiCAD das
verknüpfte Symbol sowie das verknüpfte Footprint.
Links unten werden die Daten, die in EleLa eingegeben sind gezeigt.
KiCAD kann so konfiguriert werden dass man diese Felder bereits
in der Auswahltabelle links oben sieht.
Wenn man diese Felder nun so sieht können die anderen Bibliotheken,
die bei KiCAD schon mit dabei sind, im Konfigurationsdialog "Symbolbibliotheken"
ausgeblendet werden, damit man nur noch die von EleLa sieht.
In diesem Beispiel sieht man nur die eine Diode in der Liste, da
die anderen Bauteile alle noch nicht in EleLa verknüpft sind.
Wenn man einzelne Views nicht in KiCAD angezeigt haben möchte,
so kann man diese aus der Datei "EleLa.kicad_dbl" löschen.
|
|
Das eingefügte Symbol in KiCAD.
Die Bezeichnung "1N4007G" stammt aus der Definition von
ELeLa aus dem Feld "BezKurz". |
Hinweis: KiCAD liest die Symbolbibliothek nur einmalig beim Start
ein. Wenn man Änderungen in EleLa vor nimmt, so muss KiCAD neu gestartet
werden. Leider gibt es aktuell noch kein "Refresh" der Daten
von der Datenbank in KiCAD. Es ist in KiCAD bekannt und es gibt dazu bereits
ein Bugticket.
Danksagung
Dieses Tutorial ist entstanden mit freundlicher Unterstützung von
Manuel.
|