Comment optimiser les stations de test avec TofuPilot
Le temps de cycle d'une station de test limite directement le débit de production. Un test de 60 secondes sur deux stations signifie 120 unités par heure. Réduisez-le à 45 secondes et vous passez à 160 sans ajouter de matériel. Ce guide explique comment trouver les goulots d'étranglement, réduire le temps de cycle et suivre les performances des stations avec TofuPilot.
Où passe le temps
Un cycle typique de station de test se décompose en :
| Phase | Part typique | Exemple |
|---|---|---|
| Chargement/déchargement de la fixture | 20-30 % | L'opérateur place le DUT, ferme le clamp |
| Stabilisation des instruments | 10-20 % | Auto-calibrage du DMM, rampe d'alimentation |
| Acquisition des mesures | 30-40 % | Lecture de tension, courant, fréquence |
| Journalisation et reporting | 5-10 % | Écriture des résultats en base de données |
| Inactivité/attente | 5-15 % | Opérateur entre deux unités |
Les gains les plus importants proviennent généralement de la stabilisation des instruments et de l'acquisition des mesures, pas d'un code plus rapide.
Étape 1 : Mesurer votre référence
On ne peut pas optimiser ce qu'on ne mesure pas. OpenHTF enregistre automatiquement la durée de chaque phase. TofuPilot affiche ces durées dans la vue de performance des étapes de test.
import openhtf as htf
from openhtf.util import units
@htf.measures(
htf.Measurement("supply_voltage_V")
.in_range(minimum=4.9, maximum=5.1)
.with_units(units.VOLT),
)
def phase_power_check(test):
"""Mesurer la tension d'alimentation après la mise sous tension."""
test.measurements.supply_voltage_V = 5.01
@htf.measures(
htf.Measurement("signal_amplitude_V")
.in_range(minimum=1.8, maximum=2.2)
.with_units(units.VOLT),
)
def phase_signal_check(test):
"""Mesurer l'amplitude du signal de sortie."""
test.measurements.signal_amplitude_V = 2.01
@htf.measures(
htf.Measurement("self_test_result").equals("PASS"),
)
def phase_firmware_self_test(test):
"""Exécuter l'auto-test firmware et vérifier le résultat."""
test.measurements.self_test_result = "PASS"Exécutez ceci sur 50 unités et examinez les durées de phase dans TofuPilot. La phase la plus longue est votre goulot d'étranglement.
Étape 2 : Réduire le temps de stabilisation des instruments
La stabilisation des instruments est souvent le gouffre de temps caché. L'auto-calibrage, la commutation d'impédance d'entrée et la stabilisation des filtres ajoutent des centaines de millisecondes par mesure.
| Optimisation | Temps gagné | Comment |
|---|---|---|
| Calibre fixe au lieu de l'auto-calibrage | 100-500 ms par lecture | Définir le calibre en SCPI avant la mesure |
| Réduire le temps d'intégration (NPLC) | 50-200 ms par lecture | Réduire le NPLC de 10 à 1 (compromis sur la précision) |
| Minimiser la commutation de voies | 50-100 ms par commutation | Regrouper les mesures par voie |
| Commandes parallèles aux instruments | Variable | Envoyer les commandes de configuration pendant qu'un autre instrument mesure |
Ne réduisez la précision que là où la marge de mesure le permet. Si votre limite est de 4,9 V à 5,1 V et que les unités mesurent 5,0 V avec une dispersion de 1 mV, vous avez de la marge pour réduire le NPLC.
Étape 3 : Optimiser la séquence de test
L'ordre des phases est important. Placez les tests qui échouent le plus rapidement en premier pour réduire le temps de cycle moyen sur les unités défectueuses.
| Stratégie | Effet |
|---|---|
| Ordonnancement en mode échec rapide | Les tests détectant 80 % des défauts s'exécutent en premier |
| Vérification de mise sous tension avant les tests fonctionnels | Détecter les cartes mortes avant les tests longs |
| Sauter les phases suivantes en cas de défaillance | Ne pas tester l'analogique si la mise sous tension a échoué |
from openhtf import PhaseResult
@htf.measures(
htf.Measurement("power_good").equals("PASS"),
)
def phase_power_good(test):
"""Vérification rapide de l'alimentation. En cas d'échec, sauter tout le reste."""
result = "PASS"
test.measurements.power_good = result
if result != "PASS":
return PhaseResult.STOPÉtape 4 : Suivre les performances des stations
Connectez le test à TofuPilot et surveillez les métriques au niveau de la station dans le temps.
from tofupilot.openhtf import TofuPilot
test = htf.Test(
phase_power_good,
phase_power_check,
phase_signal_check,
phase_firmware_self_test,
)
with TofuPilot(test):
test.execute(test_start=lambda: input("Scanner le numéro de série : "))TofuPilot suit automatiquement les performances des stations. Ouvrez l'onglet Analytics pour voir :
- Débit par station (unités par heure)
- Décomposition de la durée par phase montrant où le temps est passé
- Rendement par station pour détecter les problèmes de fixture ou d'équipement
- Comparaison de stations pour identifier les stations sous-performantes
Liste de contrôle d'optimisation
| Vérification | Action |
|---|---|
| Phase la plus longue identifiée | Examiner dans la vue de performance des étapes TofuPilot |
| Auto-calibrage désactivé quand possible | Définir un calibre fixe via SCPI |
| NPLC réduit là où la marge le permet | Vérifier les distributions de mesures |
| Ordonnancement en mode échec rapide mis en place | Déplacer les phases à fort taux d'échec en premier |
| Saut de phase en cas de défaillance critique | Retourner PhaseResult.STOP |
| Temps de chargement de la fixture mesuré | Chronométrer l'opérateur, pas seulement le code |
L'optimisation des stations est itérative. Faites un changement, mesurez l'effet dans TofuPilot, puis passez au goulot d'étranglement suivant. Les petits gains se cumulent : cinq améliorations de 10 % donnent une station 40 % plus rapide.