Détection d'anomalies dans les données de test matériel
Une unité passe toutes ses limites mais quelque chose semble anormal. La tension est 2 % plus élevée que d'habitude. La calibration a pris deux fois plus de temps. Ces anomalies subtiles sont invisibles dans les rapports réussite/échec mais évidentes dans les tendances de mesure. TofuPilot les fait remonter automatiquement.
Pourquoi le réussite/échec ne suffit pas
Les limites de spécification définissent la plage acceptable. Mais « dans les spécifications » ne signifie pas « normal ». Une sortie d'alimentation stable à 3,30 V sur 10 000 unités qui lit soudainement 3,34 V est toujours dans la spécification 3,25 V-3,35 V, mais c'est une anomalie. Quelque chose a changé.
Détecter ces anomalies tôt prévient les échappements. L'unité qui lit 3,34 V aujourd'hui pourrait lire 3,36 V demain, après avoir été expédiée.
Types d'anomalies dans les tests matériels
| Type d'anomalie | Exemple | Risque |
|---|---|---|
| Dérive | Mesure qui glisse progressivement vers une limite | Défaillance terrain future |
| Changement brusque | Mesure qui saute à un nouveau niveau de base | Changement de processus ou d'outillage |
| Variance accrue | Dispersion de mesure qui s'élargit | Perte de maîtrise du processus |
| Valeur aberrante | Unité isolée loin de la distribution | Défaut de composant |
| Distribution bimodale | Deux groupes au lieu d'un | Lots de composants mélangés |
Configurer la détection d'anomalies dans TofuPilot
Étape 1 : Définir les mesures avec des limites
Chaque mesure que vous envoyez devrait inclure des limites. TofuPilot les utilise pour le filtrage réussite/échec, mais elles définissent aussi la base de référence pour la détection d'anomalies.
from tofupilot import TofuPilotClient
client = TofuPilotClient()
client.create_run(
procedure_id="SENSOR-CALIBRATION",
unit_under_test={"serial_number": "SENS-7821"},
steps=[{
"name": "Zero Offset",
"step_type": "measurement",
"status": True,
"measurements": [{
"name": "zero_offset_mv",
"value": 0.12,
"unit": "mV",
"limit_low": -1.0,
"limit_high": 1.0,
}],
}, {
"name": "Sensitivity",
"step_type": "measurement",
"status": True,
"measurements": [{
"name": "sensitivity_mv_per_g",
"value": 100.3,
"unit": "mV/g",
"limit_low": 95.0,
"limit_high": 105.0,
}],
}],
)Étape 2 : Surveiller les distributions de mesures
Ouvrez la vue des mesures pour n'importe quelle procédure dans TofuPilot. L'histogramme montre la distribution des valeurs sur toutes les exécutions.
Un processus sain ressemble à une distribution normale serrée, centrée bien à l'intérieur des limites de spécification. Signes d'alerte :
- Distribution qui se déplace : le centre de l'histogramme se déplace vers une limite
- Distribution qui s'élargit : les queues se rapprochent des limites
- Pics multiples : deux ou plusieurs groupes dans l'histogramme
Étape 3 : Définir des seuils d'alerte
N'attendez pas qu'une mesure atteigne sa limite de spécification. Définissez des seuils d'alerte à un pourcentage de la plage de spécification.
| Seuil | Niveau | Action |
|---|---|---|
| Dans 70 % de la plage de spec | Normal | Aucune action |
| 70-90 % de la plage de spec | Avertissement | Investiguer la tendance |
| 90-100 % de la plage de spec | Critique | Arrêter et rechercher la cause racine |
| Au-delà de la plage de spec | Échec | Unité rejetée |
Étape 4 : Suivre les tendances dans le temps
La vue de tendance des mesures dans TofuPilot affiche chaque lecture tracée dans le temps. Utilisez-la pour repérer :
- Dérive lente : une tendance linéaire qui se dirige vers une limite. Souvent causée par l'usure du banc de test, la dérive de calibration ou des changements environnementaux.
- Changements brusques : un saut abrupt dans le niveau de base. Souvent causé par un nouveau lot de composants, un changement de processus ou un remplacement d'équipement.
- Schémas périodiques : des lectures qui cyclent selon l'heure de la journée, le jour de la semaine ou le lot de production. Souvent causées par des facteurs environnementaux (température, humidité) ou des procédures opérateur dépendantes de l'équipe.
Vérifications automatisées des données
TofuPilot vérifie chaque mesure entrante par rapport à ses limites définies en temps réel. Les mesures échouées sont signalées immédiatement et l'exécution est marquée comme échouée.
Pour la détection d'anomalies au-delà de la simple vérification de limites, exportez les données de mesure via l'API et appliquez des méthodes statistiques :
import numpy as np
# Récupérer les valeurs de mesure depuis l'API TofuPilot
values = [3.30, 3.31, 3.29, 3.30, 3.32, 3.31, 3.30, 3.34, 3.29, 3.31]
usl = 3.35 # Limite de spécification supérieure
lsl = 3.25 # Limite de spécification inférieure
mean = np.mean(values)
std = np.std(values, ddof=1)
cpk = min((usl - mean) / (3 * std), (mean - lsl) / (3 * std))
print(f"Cpk : {cpk:.2f}")
if cpk < 1.33:
print("Capabilité du processus en dessous de l'objectif. Investiguer.")Exemple concret : Détecter un échappement qualité fournisseur
Une entreprise de robotique teste des contrôleurs moteur sur sa ligne de production. Chaque unité mesure le courant moteur à trois points de charge. Pendant 6 mois, la mesure à 50 % de charge était en moyenne de 2,1 A avec un écart type de 0,05 A.
À la semaine 27, la moyenne est passée à 2,25 A. Toujours dans la limite de spécification 1,5 A-3,0 A, donc aucune unité n'a échoué. Mais la vue de tendance de TofuPilot a clairement montré le changement brusque.
L'investigation a révélé un nouveau lot de circuits de commande moteur avec des tensions de seuil de grille légèrement différentes. L'entreprise a travaillé avec son fournisseur pour resserrer les spécifications d'entrée avant que la dérive ne cause des problèmes sur le terrain.
Sans suivi de tendances des mesures, cela serait resté invisible jusqu'à ce que des unités commencent à tomber en panne chez les clients.