EleLa - Elektronik Lagerverwaltung Hilfe

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:

DROP VIEW `AltiumView`

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.


© 2010-2024 by Markus Müller