Altium Designer Bauteile verknüpfen
Dieses Tutorial zeigt wie man die Bauteile aus der EleLa Datenbank für
den Altium Designer
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 den Altium Designer können diese
benutzt werden. In diesem Tutorial werden die Änderungen und die
Möglichkeiten von EleLa beschrieben, wie das in Altium aktiviert
wird ist in der Doku von Altium beschrieben, bzw. sehr gut in dem Video
von "Robert Feranec" erklärt: https://www.youtube.com/watch?v=i2BxPHTeHC4&t=1s
Dieses Tutorial zeigt die nötigen Änderungen für den SQL
Server MariaDB oder MySQL. Bei anderen SQL Servern muss entsprechend anders
vorgegangen werden, bzw. die SQL Befehle angepasst werden.
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 Altium Designer nicht
geändert werden können, auch keine neue hinzugefügt, denn
durch die Zweiteilung der Bauteile zu Gehäuse/Variante kann dies
Altium ohnehin nicht korrekt verwalten.
Hier ein Vorschlag welche Spalten man von EleLa aus für Altium Designer
verknüpft:
EleLa Tabelle.Spalte |
Altium Spalte |
Bemerkung |
bauteil.Bezeichnung + | + bauteilvariante.Bezeichnung |
Part Name |
Eindeutige Bezeichnung vom Bauteil |
bauteilvariante.ID |
ID |
Eindeutige ID vom Bauteil Gehäuse/Variante in EleLa |
bauteilvariante.Library ** |
Library Path |
Pfad der Bibliothek zum Bauteil (wählbar in EleLa über
DropDown Box) |
bauteilvariante.LibraryRef ** |
Library Ref |
Name des Bauteils innerhalb der Altium Designer Bibliothek |
gehause.Library |
Footprint Path |
Pfad zur Footprint Bibliothek in Altium Designer |
gehause.Bezeichnung **
gehause.LibraryRef ** |
Footprint Ref
Footprint Ref 2 |
Bezeichnung innerhalb der Footprint Bibliothek vom Altium Designer
Wenn die Spalte "gehause.LibraryRef" leer ist verwendet
der SQL Befehl automatisch die Splate "gehause.Bezeichnung".
Für "gehause.LibraryRef" können mehrere Footprints
deklariert werden, der SQL Befehl kann diese als JSON Spalte vom Bezeichner
"F1"..."Fn" auslesen, entsprechend viele Zeilen
werden im SQL Befehl benötigt. |
bauteilvariante.Bemerkung |
Description |
Beschreibung |
beuteilkiste.Menge |
In Stock |
Summe aller Bauteile in Bauteil Kiste, damit kann man in Altium
die Menge sehen die man selbst auf Lager hat |
bauteilvariante.BezKurz |
Comment
Wert |
Bezeichnung vom Bauteil wie es im Schaltplan heißen soll. |
adr.Bezeichnung |
Manufacturer 1 |
Die Eingabe "Gehäuse/Variante" "Hersteller"
wird als "Manufacturer 1" verknüpft |
bauteilvariante.ArtikelNr |
Manufacturer Part Number 1 |
Diese Spalte benötigt EleLa um bei einem automatischen Import
der CAD Daten für ein ProjektPos damit die Verbindung zum EleLa
Bauteil hergestellt werden kann. |
bauteil.Handbuch |
ComponentLink1Description
ComponentLink1URL |
Description: Dateiname ohne Pfad vom Bauteil Handbuch. Bei Internetlinks
kann hier schon auch mal ein längerer kryprischer String stehen.
URL: Kompletter Pfad, per REPLACE Befehle werden die Platzhalter ($H),
($L), ($P), ($G), ($D), ($F) zu echten Pfaden die aktuell in EleLa
bekannt sind, gewandelt.
Wenn bauteil.Handbuch nicht genutzt ist wird bauteilvariante.Handbuch
verwendet, denn Altium muss die Links ab Nr 1 belegt haben. Dafür
ist dann Link Nr 2 leer. |
bauteilvariante.Handbuch |
ComponentLink2Description
ComponentLink2URL |
Decription: Dateiname ohne Pfad vom Gehäuse/Variante Handbuch.
Bei Internetlinks kann hier schon auch mal ein längerer kryprischer
String stehen.
URL: Kompletter Pfad, per REPLACE Befehle werden die Platzhalter ($H),
($L), ($P), ($G), ($D), ($F) zu echten Pfaden die aktuell in EleLa
bekannt sind, gewandelt. |
bauteilvariante.RohS |
RoHS |
Die Werte der Spalte in EleLa (Zahlen) werden für Altium in
Text konvertiert: 0:""; 1:"Yes"; 2:"Yes-X";
3:"No"; 4:"NV" |
gehause.Bezeichnung |
Case/Package |
Bezeichnung vom Gehäuse |
gehause.Pins |
Number of Pins |
Pin Anzahl von Gehäuse |
bauteilvariante.Gewicht |
Weight |
Gewicht aus "Gehäuse/Variante" |
bauteilvariante.EPreis |
Price |
Letzter Einkaufspreis aus Gehäuse/Variante |
bauteilvariante.TecData.[Bezeichner XYZ] |
Zusätzliche Spalten* |
Weitere Spalten für Altium können aus "Gehäuse/Variante"
"Technische Daten" angezeigt werden in dem die Bezeichner
von EleLa als Spalte verknüpft werden. Dazu bietet der SQL Server
spezielle Befehle um aus der Spalte TecData die einzelnen Parameter
als Spalte zu zeigen. |
* die Zusätzliche Spalten kann jeder selbst definieren.
** Wenn man EleLa mit der Verwendung von KiCAD konfiguriert hat und man
nutzt die Library2/LibraryRef2 Spalten (im
Optionen Dialog aktiviert), so verwendet EleLa für das Erzeugen
des SQL Scriptes die Spalten Library2/LibraryRef2 aus "bauteilvariante"
und "gehause".
Diese EleLa Spalten sollten alle ausgefüllt werden damit man die
Daten auch vollständig im Altium Designer sieht.
Die VIEW für den Altium Designer 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.
Der SQL Befehl um eine VIEW zu erzeugen:
Dieser SQL Befehl erzeugt eine View, die View kann der Altium Designer
wiederum mit eine ganz normalen SELECT Befehl anzeigen, die View kann
so programmiert werden dass die Daten aus unterschiedlichen Tabellen als
eine Tabelle zusammen gefasst sind.
Dieser SQL Befehl kann in EleLa unter Extras-F10 > Datenbank eingestellt
werden.
CREATE OR REPLACE VIEW `AltiumView` (
`ID`, `Part Name`, `Library Path`, `Library Ref`,
`Footprint Path`, `Footprint Ref`,
`Footprint Ref 2`,
`Description`, `In Stock`,
`Comment`, `Wert`, `Manufacturer 1`, `Manufacturer Part Number 1`,
`ComponentLink1Description`, `ComponentLink1URL`, `ComponentLink2Description`, `ComponentLink2URL`,
`RoHS`,
`Case/Package`, `Number of Pins`, `Weight`, `Price`,
`TD RM`, `TD Tolerance`
) AS
SELECT
CAST(v.ID AS VARCHAR(255)),
CAST(IF(v.Bezeichnung IS NULL OR v.Bezeichnung="", b.Bezeichnung, CONCAT(b.Bezeichnung, " | ", v.Bezeichnung)) AS VARCHAR(255)) AS PartName,
CAST(v.Library AS VARCHAR(255)), CAST(v.LibraryRef AS VARCHAR(255)), CAST(g.Library AS VARCHAR(255)) AS Footprint,
CAST(IF(g.LibraryRef IS NULL OR g.LibraryRef="", g.Bezeichnung, JSON_UNQUOTE(JSON_EXTRACT(g.LibraryRef, '$."F1"'))) AS VARCHAR(255)) AS FootprintRef,
CAST(JSON_UNQUOTE(JSON_EXTRACT(g.LibraryRef, '$."F2"')) AS VARCHAR(255)) AS FootprintRef2,
CAST(v.Bemerkung AS VARCHAR(255)) AS Description, CAST(SUM(k.Menge) AS VARCHAR(255)) AS InStock,
CAST(v.BezKurz AS VARCHAR(255)) AS `Comment`, CAST(v.BezKurz AS VARCHAR(255)) AS `Wert`, CAST(a.Bezeichnung AS VARCHAR(255)) AS Manufacturer1, CAST(v.ArtikelNr AS VARCHAR(255)) AS ManufacturerPartNr1,
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(IF(b.Handbuch IS NULL OR b.Handbuch="", v.Handbuch, b.Handbuch), '/', -1), '\\', -1) AS VARCHAR(255)) AS Link1Desc,
CAST(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(IF(b.Handbuch IS NULL OR b.Handbuch="", v.Handbuch, b.Handbuch), "($H)", "H:\\Elektronik"), "($L)", ""), "($P)", "P:"), "($G)", ""), "($D)", ""), "($F)", "") AS VARCHAR(255)) AS Link1URL,
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(IF(b.Handbuch IS NULL OR b.Handbuch="", "", v.Handbuch), '/', -1), '\\', -1) AS VARCHAR(255)) AS Link2Desc,
CAST(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(IF(b.Handbuch IS NULL OR b.Handbuch="", "", v.Handbuch), "($H)", "H:\\Elektronik"), "($L)", ""), "($P)", "P:"), "($G)", ""), "($D)", ""), "($F)", "") AS VARCHAR(255)) AS Link2URL,
CAST(CASE
WHEN v.RoHS=1 THEN "Yes"
WHEN v.RoHS=2 THEN "Yes-X"
WHEN v.RoHS=3 THEN "No"
WHEN v.RoHS=4 THEN "NV"
ELSE ""
END AS VARCHAR(255)) AS RoHS,
CAST(g.Bezeichnung AS VARCHAR(255)) AS `Case/Package`, CAST(g.Pins AS VARCHAR(255)), CAST(v.Gewicht AS VARCHAR(255)),
CAST(v.EPreis AS VARCHAR(255)),
CAST(JSON_UNQUOTE(JSON_EXTRACT(v.TecData, '$."RM"')) AS VARCHAR(255)) AS TD_RM,
CAST(JSON_UNQUOTE(JSON_EXTRACT(v.TecData, '$."Toleranz [%]"')) AS VARCHAR(255)) AS TD_Tolerance
FROM bauteilvariante v
LEFT JOIN bauteil b ON (b.ID = v.Bauteil_ID)
LEFT JOIN gehause g ON (g.ID = v.Gehause_ID)
LEFT JOIN bauteilkiste k ON (k.BauteilVariante_ID = v.ID)
LEFT JOIN adr a ON (a.ID = v.Adr_ID)
GROUP BY v.ID, g.ID, b.ID, a.Bezeichnung
|
Die Zeile `TD RM` zeigt eine Datenzeile aus den technischen Daten mit
dem Bezeichner "RM" (Rastermaß), so auch "Toleranz
[%]" > "TD Tolerance". Am besten man legt hier alle
verfügbaren Felder aus den "Technischen Daten" von EleLa
an, damit in Altium alle Infos verfügbar sind. Eine Liste der angelegten
Parameter findet man unter "Extras-F10" > "Log"
> "Optionen" > "Globale Params" > "Technische
Daten".
Der SQL-Befehl, den man ausführt sollte man sichern unter z.B. "Extras-F10"
> "Wissen", damit man ihn zu einem späteren Zeitpunkt
anpassen und neu ausführen kann.
Dies ist nötig wenn z.B. man neue technische Daten im EleLa hinzufügt
oder wenn man die Handbuch-Pfade in der EleLa Konfiguarion ändert.
Die angelegten Views zeigt EleLa bei "Extras-F10" > "Datenbank"
im linken Baum nach dem Neustart von EleLa mit an.
SQL Befehl mit EleLa generieren:
EleLa kann den SQL Befehl für MySQL/MariaDB unter "Extras-F10"
> "Datenbank" > "Import-/Export Menü" >
"CAD AlitumView SQL erzeugen" und in den SQL Tab kopieren. Ausgeführt
wird damit der SQL Befehl noch nicht, dazu muss die "Execute"
Taste zusätzlich gedrückt werden, bzw. man kann die gewünschten
Spalten nach eigenem Ermessen anpassen.
EleLa fügt mit dieser Funktion automatisch alle Felder der technischen
Daten mit ein und überprüfet wie viele Gehäuse -> LibraryRef's
es gibt und fügt dazu die Anzahl der Spalten (+ 1 Reserve) `Footprint
Ref X`. ein.
Das erstellen der View wirkt sich nicht auf die eigentlichen Daten aus.
Damit wird nur eine "View", also eine zusätzliche Ansicht
auch die Daten erstellt.
Löschen der View:
Mit dem SQL Befehl kann die View wieder von der Datenbank gelöscht
werden:
Das löschen der View wirkt sich nicht auf die Daten innerhalb von
EleLa aus.
Einstellung im Altium Designer:
Wenn man Bauteile in EleLa ändert oder hinzu fügt so muss man
die "Library" im Altium Designer mit Refresh aktualisieren.
Nur dann werden die Daten aus der EleLa Datenbank neu eingelesen und sind
im Altium Designer verfügbar.
Zum Youtube Video von "Robert Feranec" ergeben sich folgende
Änderungen:
Der Tabellen Name mit den Komponenten ist "AltiumView". Der
Tabellenname in "CREATE OR REPLACE VIEW" SQL Befehl auch abgeändert
werden.
Der "Field Data Type" ist "VARCHAR(255)", so wie
per Defaultwert von Altium vorgeschlagen. Der SQL Befehl wandelt alle
Felder in diesen Datentyp um. Bei längeren Texten, z.B. "Description"
werden diese auf die 255 Zeichen gekürzt.
Das "Single Key Lookup Database Field" ist das Feld "Part
Name". Alternativ kann das Feld "ID" verwendet werden.
Über Altium ist es nicht möglich Bauteile hinzu zu fügen
oder zu ändern. Im Video ist gezeigt dass man auf "MS Access"
umschalten kann und man dann Daten einfügen kann, das geht mit EleLa
nicht.
Beispiel einer Eingabe von der "Library" in EleLa: "Footrints\Resistors.PcbLib",
das Verzeichnis darf nicht mit einem "\" beginnen.
Connection String Beispiel: |
|
Field Settings: "Part Name" ist "Single key lookup" |
|
Advanced Settings: Left und Right Quote ist ` bei MySQL/MariaDB |
|
Danksagung
Dieses Tutorial ist entstanden mit freundlicher Unterstützung von
Manuel.
|