Il supporto delle DbLib di Altium è una delle funzioni più datate e più amate di Altium Designer. Sono presenti nel mondo software sin da prima che io potessi scoprire l’esistenza della legge di Ohm.
La nuova funzione Component Sync di Altium 20.1 vi consente di effettuare una sincronizzazione dati praticamente con qualsiasi database o libreria di database con Altium 365, sfruttando entrambe le strategie di approccio.
Parleremo di cosa sono le DbLib, come funzionano, cosa possono fare per voi e come integrarle con Altium 365. Allarme spoiler: sono tremendamente facili da usare.
Questa guida è idonea per utenti DbLib sia esperti che principianti, e insieme alla documentazione di Altium, contiene tutto ciò che vi serve per un’integrazione di successo.
Tralasceremo tutti gli approcci passati che non sono più pertinenti, concentrandoci solo sulle tecniche più nuove.
Informazioni su DbLib e DbLink
Se non avete familiarità con DbLib, questa sezione vi servirà come una rapida introduzione.
Altium Designer supporta numerosi formati di libreria basati su file: PcbLib, SchLib, LibPkg, IntLibs; PcbLib contiene l’impronta, SchLib contiene il simbolo dello schematico e il link all’impronta all’interno della PcbLib, e IntLib e LibPkg consentono agli utenti di consolidare molteplici librerie.
Presupponendo che l’utente Altium medio abbia familiarità con i tipi di librerie summenzionati, possiamo esaminare in maniera un po’ più approfondita la loro struttura di dati usando un’analogia con i database relazionali.
Possiamo pensare a SchLib come a una tabella di database, analoga a un foglio di calcolo Excel. Ogni riga della tabella è un componente, identificato dal suo nome. Tale tabella è composta da svariate colonne: una per il disegno dello schematico, una per il campo “Commenti”, una per il designatore, una per ogni parametro del componente, come “Tensione” o “Temperatura”.
Una PcbLib, usando la stessa analogia, sarebbe una tabella simile ma semplificata, che contiene solo una colonna “Nome”, una descrizione, il nostro disegno dell’impronta e poco altro.
La SchLib dovrebbe anche connettersi con la PcbLib. Si tratta in genere di link o Chiavi esterne in database relazionali, ma se non avete familiarità con questa terminologia piuttosto complessa, potete considerarli come hyperlink su cui cliccare per aprire l’impronta giusta.
Tra le colonne aggiuntive che potremmo valutare di aggiungere per i documenti troviamo fogli dati, note applicative, dichiarazioni di conformità RoHS e dati di simulazione da usare con l’ambiente Mixed Simulation integrato di Altium.
Per completare la nostra analogia, LibPkg sarebbe un elenco di tutte le nostre tabelle (o fogli di calcolo Excel), mentre le IntLib sarebbero un export compresso del nostro database pronto per essere condiviso con chiunque ne abbia bisogno.
Le DbLib sono una funzione che porta questo concetto mentale nella realtà, consentendovi di connettere Altium Designer a qualsiasi database compatibile con ODBC.
Altium leggerà uno o più tabelle di database, ognuna che lavora come un file SchLib separato. Ogni riga nelle tabelle diventerà un componente nella DbLib. Numerose colonne standard sono usate per definire i parametri base dei componenti e per collegare Altium con i file SchLib e PcBLib giusti, solitamente con un solo simbolo schematico o impronta PCB.
DbLink funziona in maniera simile alle DbLib, ma senza un simbolo schematico e un’impronta PCB incluse, facendo invece affidamento su una libreria basata su file esterni e limitandosi a sincronizzare i parametri con componenti esterni.
La forza nascosta delle DbLib
La flessibilità delle DbLib è sorprendente. Non stupisce quindi che le aziende produttrici di software concorrenti addebitino prezzi esorbitanti per abilitare funzioni simili, dal momento che consentono una profonda integrazione delle librerie di componenti nei sistemi aziendali esistenti.
Sebbene Altium supporti solo una tabella a struttura fissa, non esistono limiti al modo in cui quella tabella può essere creata. Qualsiasi database relazionale moderno consente di creare viste del database. Le viste sono tabelle virtuali create in maniera dinamica e automatica dal database, che seguono istruzioni scritte in linguaggio SQL.
L’esempio più tipico di una vista database consiste nell’unione di due tabelle diverse. Per esempio, presupponendo che la tabella A contenga DbLib standard e la tabella B contenga documentazione esterna per i nostri componenti, possiamo unirle creando una vista con una query simile a quella qui sotto:
SELECT * FROM A LEFT JOIN B WHERE “Part ID” = “Part ID”
Tramite quelli che definiamo processi ETL (Estrai, Trasforma, Carica), è possibile connettere qualsiasi software alle librerie di Altium Designer tramite DbLib.
Innumerevoli aziende offrono software e servizi ETL, e spesso, una gran parte del lavoro può essere ottenuto con alcune breve righe di Python.
Implementazione di esempio: collegamento alle Informazioni interne sul magazzino
Se lavorate in un’azienda strutturata, è possibile che il vostro reparto di R&S gestisca un piccolo magazzino di componenti campione, con ogni componente contrassegnato da un numero di scaffale e di scatola.
È altresì possibile che questi magazzini di piccole dimensioni siano gestiti da un software similmente leggero, come un foglio di calcolo Excel, Microsoft Access o un software open-source come PartKeeper.
L’integrazione delle Altium DbLib con il vostro magazzino di R&S può accelerare notevolmente lo sviluppo. Volete verificare se il componente che avete appena aggiunto alla vostra scheda è quello che pensate o controllare rapidamente le dimensioni di un connettore? Vi basta fare doppio clic e leggere i parametri rilevanti. Similmente, tale integrazione consente di creare elenchi di scaffali e di scatole dei componenti direttamente nel BOM e stamparli su carta con un solo clic da un file Altium OutJob.
Implementazione di esempio: sincronizzazione dei dati del produttore
Alcuni dei parametri più critici che potreste voler modificare al di fuori dell’ambiente Altium Designer sono il produttore e i codici parte del produttore per ogni componente.
A volte i componenti passivi, ad esempio, devono essere aggiornati abbastanza di frequente: potreste volere aggiungere codici parte diversi per capacitori 0603 16 V 10 uF a seconda della fluttuazione del mercato, del Paese in cui il prodotto viene realizzato e dei collegamenti EMS. Le funzioni native di Altium e l’integrazione di Octopart possono aiutare notevolmente l’ingegnere a selezionare questi componenti con rapidità, ma in alcune aziende, il processo deve inevitabilmente passare attraverso reparti specializzati.
Alle imprese del settore della difesa e aeronautico può essere richiesto di lavorare dietro un firewall con nessun accesso a Internet per evitare perdite di dati. In questo caso l’integrazione di Octopart di Altium deve essere sostituita con una soluzione ad-hoc.
In questi casi, potrebbe essere vantaggioso modificare i parametri del Produttore e del Codice parte del produttore al di fuori di Altium Designer, continuando a sfruttare Active BOM, Draftsman e le capacità di creazione di modelli Excel di Altium per generare BOM dettagliati.
Implementazione di esempio: monitoraggio dei dati P&P e integrazione con le DbLib
Molte aziende gestiscono linee Pick & Place interne per la produzione e la prototipazione.
Le P&P sono macchine cartesiane pesanti: prendono un componente in un determinato punto sulla base di un offset XY e di una rotazione e lo spostano in un altro punto sulla base di offset XY e rotazioni simili.
Alcuni di questi parametri cambiano con schede diverse; l’esempio più famoso è rappresentato dal centro del componente in rapporto all’origine della scheda, che costituisce la P&P che dovete fornire al vostro EMS. Altri valori cambiano solo con il codice parte specifico, per esempio, la distanza tra parti in una bobina o la rotazione predefinita dei componenti.
Molte linee P&P eseguono il proprio software gestionale per mantenere un database di tutti i componenti e semplificare il funzionamento.
Per ridurre il time-to-market, molte aziende iniziano la configurazione di questi parametri quando la progettazione di PCB è ancora in corso. A tal fine, il software gestionale della macchina P&P può essere integrato con le Altium DbLib e usato all’interno di tutti gli ambienti di Altium.
Tutti questi valori possono essere esportati in qualsiasi funzione Altium che supporta parametri dei componenti, come Altium Active BOM, export ODB++ o tabelle Draftsman.
Implementazione di esempio: collegamento all’ERP aziendale
Quando lavoravo in un’importante azienda produttrice di inverter di potenza per pompe idrauliche, l’azienda eseguiva, come molte altre, un software ERP personalizzato. Il software era sopravvissuto a innumerevole aggiornamenti nel corso di diversi anni, e sebbene non fosse l’architettura digitale più bella che avessi mai visto, svolgeva il suo compito ogni volta.
Per integrare Altium Designer con questo software, abbiamo aggiunto un parametro SKU alle nostre librerie pre-esistenti. Ogni SKU (Stock Keeping Unit) rimandava a un “prodotto” all’interno del software ERP.
L’ERP conteneva fogli dati per decine di migliaia di componenti, nonché dati contestuali come report di approvazione RoHS. Tra i dati erano presenti documenti riservati che non potevano essere trasferiti al di fuori dell’ERP per evitare perdite di dati.
L’ERP esportava i dati su tabelle Microsoft SQL Server ed erano state create un paio di viste per visualizzare link a documenti formattati esclusivamente nominando le colonne secondo i modelli “ComponentLink1Description” e “ComponentLink1URL”. Similmente, avevamo deciso di scrivere le descrizioni dei componenti direttamente all’interno del software ERP poiché il nostro reparto di acquisto aveva conservato i dati nella maniera più meticolosa e coerente che avessi mai visto e avrebbe continuato a farlo per il futuro prevedibile.
Limitazioni passate delle DbLib e di Concord Pro
Fino alla versione 20.0 di Altium, quando si usava Concord Pro su Altium 365 in congiunzione con le DbLib, non era possibile sfruttare appieno tutte le funzioni di collaborazione.
Concord Pro consente di adottare dati sui componenti perfettamente standardizzati e costantemente aggiornati all’interno di un’organizzazione permettendo a ogni ingegnere di lavorare dalla stessa libreria condivisa.
Una o più librerie possono estrarre e validare simboli di schematici, impronte di contenuti e parametri di componenti, mentre l’intero team può richiedere la creazione di nuovi componenti tramite il modulo di richiesta parti di Altium.
In Concord Pro, le modifiche dei componenti sono gestite tramite un Ciclo di vita della parte, e la loro adozione è tracciata anche nei prodotti mediante la funzione Where Used (Dove è usato). Queste funzioni consentono di svelare e aggiornare rapidamente tutte le progettazioni quando un componente diventa inevitabilmente obsoleto, un’attività che in un ambiente meno centralizzato può spesso richiedere giornate intere di lavoro.
Tutte queste funzioni, e tante altre, erano state parzialmente compromesse con l’adozione delle DbLib. Le DbLib si collegano a database separati da quello usato da Concordo Pro dietro le quinte; i simboli degli schematici e le impronte dei PCB devono essere condivise e organizzate in maniera indipendente, e qualsiasi gestione del ciclo di vita si affiderà inevitabilmente a un software ERP esterno che spesso non riesce a soddisfare le esigenze della gestione della libreria di componenti.
Nel corso degli anni alcuni utenti si sono lamentati anche della mancanza di prestazioni durante la gestione di librerie di grandi dimensioni, con la soluzione primaria rappresentata da molteplici tabelle separate all’interno della DbLib. Di contrasto, Concord Pro su Altium 365 è in grado di gestire librerie praticamente illimitate poiché tutte le query di ricerca sono eseguite lato server e i componenti sono caricati dinamicamente in piccoli batch scorrendo all’interno del riquadro componenti.
Nuova funzione di sincronizzazione della DbLib sul componente del server di Altium
Le note di rilascio di Altium 20.1 possono essere lunghe da leggere dal momento che includono ben 106 correzioni di bug, 13 piccole nuove funzioni per Draftsman, 7 miglioramenti prestazionali e almeno 55 problemi risolti originati dalla community.
Questo articolo parla di una funzione tra tante: la sincronizzazione dati tra database del componente e data server.
Sembra complicato, ma non lo è affatto. Prendete la potenza delle DbLib e unitela all’offerta cloud di Altium 365.
La funzione funziona come segue: se avete precedentemente effettuato la migrazione di una DbLib in Altium 365 usando Library Migrator, la nuova funzione di Sincronizzazione dei componenti consente di riprendere il lavoro da dove lo avevate lasciato.
Ora riuscirete a mappare le vostre colonne DbLib con i parametri dei componenti Altium, così come fate in una DbLib, ma con il supporto aggiuntivo per i tipi di dati estesi come percentuali e unità di misura (Volt, Ampere, Ohm, ...). Quando l’azione di sincronizzazione dati è attivata in uno dei tre modi di cui parleremo a breve, Altium confronta il vostro database con i componenti esistenti e li aggiorna. Se richiesto, potete anche scegliere modelli di componenti per componenti appena creati e decidere quali parametri innescheranno una nuova revisione. Per esempio, potreste volere che una modifica nel codice parte del produttore inneschi una nuova revisione, ma la stessa cosa potrebbe non essere necessaria quando si effettua l’aggiornamento delle posizioni del magazzino.
La seconda modalità di funzionamento viene innescata quando, al posto di collegare una DbLib completa, collegate un database più semplice (senza simboli dello schematico o impronte di PCB), come un database Microsoft Access, un foglio di calcolo Excel, un file CSV (Comma Separated Values) o qualsiasi altra origine dati che include un DB OLE o driver ODBC. In questa modalità, la Sincronizzazione dati dei componenti agisce come il vecchio DbLink: i componenti saranno definiti da Altium Designer e Altium Concord Pro su Altium 365 e le colonne del database diventeranno parametri all’interno dei componenti.
I componenti esistenti e le righe del database hanno corrispondenze una a una quando il valore di una colonna specificata equivale a un parametro del componente specifico.
La funzione di sincronizzazione dei componenti è eseguita sul vostro computer, permettendovi di sincronizzare Altium 365 con database che non sono accessibili da Internet. In aggiunta, i dati vengono compressi prima di essere inviati ad Altium 365, per consentirvi di migrare grandi librerie con facilità e senza intasare la connessione Internet.
Dimostrazione di migrazione e sincronizzazione dati
In questo esempio, ho effettuato la migrazione della tabella contenente i capacitori MLCC 0603 dalla Celestial Database Library di Mark Harris ad Altium 365 usando la funzione Library Migrator.
La libreria contiene almeno 6000 capacitori, ma Altium gestisce lo stress con grazia.
Ho convertito la tabella del database, inizialmente ospitata su un server Microsoft SQL, in una tabella Excel usando DBeaver, un software di gestione di database open-source. Questo consente di modificare con facilità il database per scopi dimostrativi.
Ho creato una nuova configurazione Sincronizzazione dei compenti, dopo aver abilitato la funzione nella pagina delle estensioni della piattaforma in Altium Designer.
La configurazione legge l’unico foglio nel nostro file Excel e lo sincronizza con il cloud. La Sincronizzazione dati dei componenti è stata configurata in modo da far corrispondere i componenti mediante un parametro/colonna chiave chiamato PartId.
Suggerimenti: ricordatevi di tenere sempre aperto il riquadro delle proprietà in modo da non perdervi nulla che richieda ulteriore configurazione quando cliccate in giro.
Sono andato avanti e ho modificato il campo Description (Descrizione) dei capacitori nel file Excel.
Dopo aver innescato una sincronizzazione dati manuale dei componenti, possiamo vedere il capacitore appena aggiornato nei riquadri Components (Componenti) ed Explorer.
Modalità di esecuzione
Potete attivare la nuova funzione di Sincronizzazione dei componenti in tre modi diversi:
Manualmente
Aprire il file CmpSync e premere il pulsante Execute (Esegui) per attivare la sincronizzazione dati manualmente. L’attività sarà eseguita all’interno dell’istanza Altium Designer corrente e non potrete svolgere altre attività durante l’operazione a meno che non apriate un’altra istanza.
Programmata
Usando il pulsante Schedule (Programma) potete impostare un programma giornaliero o settimanale o attivare la sincronizzazione quando effettuate l’accesso al vostro spazio di lavoro Altium Designer.
Altium Designer creerà una nuova attività Schedule (Programma).
Ultima ma non meno importante, la Sincronizzazione dati dei componenti attivata dalla riga di comando, usando l’utility della riga di comando in “C:\Program Files\Altium\AD20\System\ComponentSync.Executor.exe”.
Questa modalità è straordinariamente flessibile poiché può essere attivata da uno script esterno.
Per esempio, potreste volere scrivere un semplice script Python che invierà una query a un’API privata esposta nella vostra rete interna attraverso la procedura seguente:
La funzione DbLib di Altium è sempre stata una delle più efficaci, anche se poco conosciuta, di Altium Designer. Per capire come sfruttarla nel modo migliore possibile è necessaria una conoscenza di base molto approfondita sulla gestione dei dati aziendali (e spesso una buona sessione di meditazione), ma ne vale la pena visti i miglioramenti sorprendenti in termini di efficienza e riduzione dei tassi di errore per le vostre progettazioni.
Fino alla versione Altium 20, non era possibile approfittare di Altium 365 e DbLib nello stesso momento senza scendere a compromessi relativamente alle funzioni e all’utilizzabilità, poiché molteplici origini di dati in conflitto possono originare confusione.
A partire da Altium 20.1, la nuova funzione di sincronizzazione dati dei componenti consente di unire le capacità delle librerie di database con la semplicità e la collaborazione di Altium 365, creando un sistema che è molto più funzionale della somma di tutte le sue parti.
La documentazione su questa nuova funzione è reperibile qui.