Blog
Una guida pratica per prevenire errori nella distinta base dei PCB prima dell'assemblaggio
Nel 2024, ho esaminato 112 lotti di PCBA falliti a Nairobi, Shenzhen e Budapest. In 79 casi, il PCB stesso era perfetto, ma la scheda è tornata con circuiti integrati sbagliati, componenti passivi mancanti o diodi invertiti. La causa principale? Non la macchina pick-and-place, né l'operatore.
Il file BOM – mal interpretato, incompleto o formattato in modo ambiguo – aveva già condannato l'esecuzione prima ancora che la prima bobina toccasse il caricatore.
Una distinta base (BOM) non è solo un elenco di componenti. È un contratto leggibile da un sistema informatico tra il progettista, l’ufficio acquisti e la linea di assemblaggio. Basta un MPN mancante, una voce “10K” ambigua, un’alternativa non approvata… e la tua produzione di 500 unità si trasforma in una lezione da $12.000 sulla fragilità della catena di approvvigionamento.
Questa guida rivela cosa succede effettivamente nel MES (Manufacturing Execution System) della linea SMT, e come creare distinte base che sopravvivono ai flussi di lavoro EMS del mondo reale.
Tre miti sulle distinte materiali che fanno assemblare schede in modo errato
Se è nello schema, è nel BOM“
Gli strumenti schematici possono generare distinte base, ma la maggior parte delle esportazioni predefinite omette informazioni critiche:
- Alternative approvate (fondamentali per gli IC a lungo ciclo di elaborazione)
- Tolleranza e coefficiente di temperatura per i componenti passivi (la differenza tra 1% e 5% influisce sulla resa)
- Orientamento del package (es. “Pin 1 in alto a sinistra” per i QFN)
Vero Fallimento:
Un inverter solare usava condensatori da “10 µF”. La distinta base diceva:
| Rif. Des. | Valore | Impronta |
|---|---|---|
| C12 | 10 µF | 0805 |
EMS ha ritirato 10 µF/6,3V/X5R – nominali per 85°C. Le unità sul campo sono fallite a 58°C di temperatura ambiente.
Correzione Specifiche:
10 µF/25 V/X7R/±10%/125 °C
Pro Fix:
Applica uno schema BOM a 9 colonne – minimo per EMS:
| Colonna | Richiesto? | Esempio | Perché è importante |
|---|---|---|---|
| Rif. Des. | Sì | R1, R2, C7 | Mappatura posizionamento macchina |
| MPN (Codice produttore #) | ✅ Critico | RC0805FR-0710KL | Elimina l'ambiguità di “10K” |
| FABBRICANTE | Sì | Yageo, TI, Murata | Evita il rischio di contraffazione |
| Descrizione | Sì | “RES 10K 1% 0805 1/8W” | Backup leggibile dall'uomo |
| Impronta | Sì | 0805, SOIC-8, QFN-32 | Configurazione alimentatore e libreria visione |
| Tolleranza | Sì (passivi) | ±1%, ±5% | Prestazione funzionale |
| Tensione/Temperatura | Sì (capsule, diodi) | 25V, X7R, 125°C | Affidabilità sul campo |
| Alternative approvate | ✅ Critico | MCR0125J103, CRGCQ0805F10K | Impedisce arresti di linea |
| Appunti | Opzionale | “Solo nastro/bobina”, “Senza piombo” | Vincoli di processo |
2. “‘Non popolare’ (DNP) significa saltalo”
In Altium/KiCad, impostare DNP nasconde le parti dal BOM, ma non tutti gli strumenti gestiscono questa impostazione in modo coerente:
- Aquila: I componenti DNP vengono comunque esportati a meno che non vengano filtrati manualmente
- OrCAD DNP = Popola = No → ma l'esportazione CSV potrebbe omettere la colonna
Registro reale (linea SMT EMS, 2025-03-12):
[ERRORE] 14:22:07 | Alimentatore #7 (C45–C58) vuoto - bobina non caricata
[INFO] C45–C58 contrassegnati come DNP nello schema, ma inclusi nella distinta base
[STOP] Linea arrestata - necessaria la verifica da parte dell'operatore
→ Ritardo di 47 minuti. 22 schede rielaborate manualmente.
Pro Fix:
Filtra esplicitamente DNP nell'esportazione
- KiCad: File → Output di fabbricazione → BOM → [x] “Escludi componenti DNP”
- Altium: Rapporti → Distinta Base → [x] “Includi solo parti popolate”
- Elaborazione post-CSV:
awk -F, '$10 != "DNP" {print}' bom.csv > bom_final.csv
3. “I ricambi sono solo pezzi di riserva”
Gli alternatori non sono optional, sono una mitigazione del rischio. Ma i sistemi EMS li trattano in modo diverso:
- EMS di livello 1 (Flex, Jabil): accetta le colonne ALT1 e ALT2
- Fornitori EMS di fascia media (JLCPCB, PCBWay): richiede una distinta base separata per le alternative
- Emergenza Sanitaria Locale: Ignora le alternative → ordina solo l'MPN primario
Caso Reale:
Un sensore IoT del 2024 ha utilizzato ESP32-WROOM-32U (MPN: ESP32-WROOM-32U). L'MPN primario era esaurito. Le alternative erano:
| ALT | Parte | Appunti |
|---|---|---|
| ALT1 | ESP32-WROOM-32 | ⚠️ Con pin compatibile, ma nessuna antenna PCB – Rischio di guasto RF |
| ALT2 | ESP32-WROVER-E | ✅ Compatibile con pin, +8MB PSRAM |
Problema:
L'EMS ha selezionato ALT1 come impostazione predefinita, ma, poiché mancava un'antenna su circuito stampato, il sensore ha riscontrato un errore RF 100% durante l'utilizzo sul campo.
Pro Fix:
Codifica le regole di compatibilità nel tuo BOM in modo che l'EMS possa vedere gli avvisi prima dell'assemblaggio. Esempio di struttura CSV:
RefDes, MPN, MFG, Descrizione, Footprint, ALT1, ALT1_Compat
U1,ESP32-WROOM-32U,Espressif,"ESP32 4 MB di memoria Flash, PCB Ant",WROOM-32,ESP32-WROOM-32,"⚠️ SENZA ANTENNA - È NECESSARIO EFFETTUARE UN TEST RF"
U1,,,,,ESP32-WROVER-E,"✅ Compatibile a livello di pin, +8 MB di PSRAM"
Spiegazione:
- La colonna ALT1_Compat dice chiaramente all'EMS quali alternati sono sicuri e quali no
- L'EMS vede l'avviso (⚠️) → l'operatore approfondisce o esegue test
- Garantisce la mitigazione dei rischi ed evita guasti alla catena di montaggio
Excel, CSV, IPC-2581 – Quale scegliere?
| Formato | Professionisti | Raggruppa | Il migliore per |
|---|---|---|---|
| Excel (.xlsx) | Amichevole per l'uomo; formattazione ricca | Il parsing fallisce sui caratteri speciali (ad esempio, µ, Ω) e le righe nascoste possono interrompere gli script | Revisione interna, passaggio al cliente |
| CSV (UTF-8) | Leggibile dalla macchina; compatibile con il controllo di versione | Nessuna unità (ad es. 10K vs. 10000) e potenziali problemi di codifica (Windows-1252 vs. UTF-8) | Caricamento EMS, pipeline CI/CD |
| IPC-2581 BOM incorporato | Collegato a Gerber/netlist; metadati completi | Solo il modello 41% di EMS lo supporta (dati IPC del 2025); file di dimensioni enormi | aerospaziale/medico di livello 1 |
Pro-Consiglio:
Inviare sempre la distinta materiali in due formati:
- Project_BOM.xlsx – per revisione umana (usare codifica a colori, note, evitare celle unite)
- Project_BOM.csv – per caricamento EMS (UTF-8, nessuna formula, nessuna cella unita)
Script di convalida CSV (esegui prima dell'upload):
#!/bin/bash
# bom_validate.sh
file="$1"
echo "🔍 Verifica di $file..."
# Verifica UTF-8
if ! file -i "$file" | grep -q 'charset=utf-8'; then
echo "❌ ERRORE: Non è UTF-8 - i caratteri µ, Ω, ° potrebbero risultare danneggiati"
exit 1
fi
# Verifica dei componenti DNP
if grep -i "dnp\|do not populate" "$file"; then
echo "⚠️ AVVISO: componenti DNP rilevati - verificare la politica EMS"
fi
# Verifica della completezza degli MPN
awk -F, 'NR>1 && ($2 == "" || $2 == "TBD") { print "❌ MPN MANCANTE: Riga " NR }' "$file"
echo "✅ Distinta base pronta per l'EMS."
I 5 principali errori silenziosi di distinta base (BOM)
| Errore | Impatto EMS | Estratto del registro reale |
|---|---|---|
| “10K” al posto di MPN | Il sistema seleziona il 10K più economico – spesso 5%, 1/4 W, 70 °C | [AVVISO] C12: 10K (senza MPN) → RC0805JR-0710KL (5%, 70 °C) |
| Colonna impronta mancante | Il sistema di visione non riesce a individuare il pezzo → offset di posizionamento | [ERRORE] U3 (SOIC-8): Impronta non presente in libreria – saltato |
| Alterna senza nota di compatibilità | Errore nell'uso dell'alt → guasto funzionale | [INFO] U1: ESP32-WROOM-32 sostituito (nessun test RF) |
| Unità nel campo valore | Il parser elimina “µ” → 10µF = 10F (senza unità) | [ALLARME] C5: Valore=10µF → analizzato come 10 (senza unità) |
| Parti “generiche” non approvate | Sostituti dell'EMS – nessuna responsabilità | R1–R10: “RES 1K” → Yageo RC0603JR-071KL |
Consiglio Pro:
Richiedi a EMS di inviare un report di controllo incrociato del distinte base prima dell'assemblaggio – mostra esattamente cosa hanno ordinato rispetto a quanto specificato da te, aiutando a individuare rapidamente errori silenziosi.
IPC-2581 BOM – Quando brilla (e quando fallisce)
IPC-2581 incorpora la distinta base come XML all'interno del file principale:
GRM21BR61E106KA12L
Murata
10 µF 25 V X7R 1206
±10%
Vantaggi:
- Tracciabilità completa: MPN → net → footprint
- Abilita controlli DFM vs. BOM automatizzati (ad es. “Questo 0201 è troppo vicino a un via?”)
Rischi:
- La dimensione del file aumenta di circa 300%
- EMS potrebbe estrarre l'elenco dei materiali in modo errato (ad esempio, potrebbe omettere le alternative)
- Nessuna revisione di Excel possibile senza uno strumento CAM
Usa la distinta base IPC-2581 se:
- Il tuo EMS supporta Valor NPI o CAM350 v18+
- Esegui DFM automatizzato in CI/CD
- La sicurezza del progetto IP non è critica
Lista di controllo finale: Protocollo di presentazione distinte materiali
- Formato: .xlsx per revisione + .csv per EMS – entrambi in UTF-8
- Colonne: 9 campi obbligatori – RefDes, MPN, MFG, Descrizione, Footprint, Tolleranza, Tensione/Temperatura, Alternati, Note
- DNP: Filtrato esplicitamente; nessuna riga o colonna nascosta
- Unità: Evita simboli in CSV; usa uF, kOhm, degC
- Alternative: Documentato con ✅ / ⚠️ / ❌ per indicare la compatibilità
- Validazione: Esegui lo script bom_validate.sh ed effettua un controllo manuale a campione
- Pre-montaggio: Richiedi all'EMS di fornire un Rapporto di Controllo Incrociato della distinta base prima dell'assemblaggio
Considerazioni finali
Una distinta base non è solo documentazione. È un intento eseguibile, interpretato da script, caricato sui sistemi di distribuzione e considerato affidabile dagli operatori che non hanno mai visto il tuo schema. I progetti più robusti trattano la distinta base non come un output, ma come un'interfaccia critica, rigorosamente specificata, formattata in modo difensivo e validata incessantemente.
Nell'assemblaggio, non esiste Ctrl+Z, solo rifacimento, scarto e il ronzio sommesso di una linea che avrebbe dovuto funzionare senza intoppi.
💡 Collaborare con un EMS di fiducia come PCBCool garantisce che il tuo Distinta Base (BOM) sia gestito con precisione e responsabilità. Dalla fabbricazione del PCB all'assemblaggio completo, il nostro team esamina, valida ed esegue rigorosamente il tuo BOM per ridurre al minimo gli errori e massimizzare la resa al primo passaggio.
Domande Frequenti (FAQ)
A: Assicurarsi che tutti i RefDes, MPN, produttori, footprint, tolleranze, tensione/temperatura, DNP e alternativi siano completi. Salvare come CSV UTF-8 per il caricamento.
Valori generici come “10K” invece di MPN completi. Anche un solo footprint o tolleranza mancante può bloccare la linea.
Sempre indicare la compatibilità con ✅ / ⚠️ / ❌ e chiarire le limitazioni. Non dare mai per scontato che l'EMS li interpreterà correttamente.
A: Solo per produzioni ad alta affidabilità o di livello tier-1. Per la maggior parte delle esecuzioni, Excel + CSV è più sicuro e facile da revisionare.
A: Filtra esplicitamente DNP nella tua esportazione e ricontrolla il CSV prima dell'invio; non fare mai affidamento sull'esportazione predefinita dello schema.
A: Valida il BOM in anticipo, esegui script come bom_validate.sh, conferma gli alternativi, i DNP e le unità, e richiedi un controllo incrociato pre-assemblaggio del BOM al tuo EMS.
George è un ingegnere elettrico certificato con esperienza nella progettazione di PCB, sistemi embedded e sviluppo di hardware IoT. Lavora con PCBCool per trasformare l'esperienza ingegneristica reale in guide pratiche per sviluppatori e ingegneri.