Comment construire un dossier de test PPAP avec TofuPilot
Votre client a envoyé une demande PPAP. Vous avez besoin de plans de contrôle, de rapports Cpk, d'études MSA et de données dimensionnelles, le tout lié à des références de pièces et des lots de production spécifiques. La plupart des équipes passent des jours à rassembler cela à partir de tableurs et de systèmes déconnectés.
TofuPilot capture les données de test nécessaires aux soumissions PPAP dans le cadre de votre flux de production normal. Aucune saisie de données supplémentaire n'est requise.
Qu'est-ce que le PPAP
Le processus d'approbation des pièces de production (PPAP) est un cadre standardisé, défini dans le manuel PPAP de l'AIAG, qui prouve que votre processus de fabrication produit de manière constante des pièces conformes aux spécifications du client. Il est requis dans l'automobile (IATF 16949), et de plus en plus adopté dans l'aérospatiale, les dispositifs médicaux et l'électronique industrielle.
Une soumission PPAP comprend généralement 18 éléments. Plusieurs dépendent directement des données de test :
| Élément PPAP | Ce qu'il nécessite | Source TofuPilot |
|---|---|---|
| Plan de contrôle | Étapes de test, limites, fréquences | Définitions des procédures de test |
| Étude de capabilité de processus | Cpk/Ppk pour les dimensions critiques | Historique des mesures |
| MSA / Gage R&R | Analyse du système de mesure | Données de mesures répétées |
| Résultats dimensionnels | Mesuré vs spécification pour chaque caractéristique | Mesures d'exécution avec limites |
| Résultats de tests matériaux/performances | Réussite/échec du test fonctionnel avec données | Résultats d'exécution de test |
Prérequis
- Un compte TofuPilot avec des données de test de production
- Python 3.8+ avec le client
tofupilotinstallé - Au moins 30 exécutions de production pour les calculs de capabilité de processus
Étape 1 : Structurer vos tests autour des caractéristiques critiques
Les auditeurs PPAP s'intéressent aux caractéristiques critiques pour la qualité (CTQ). Associez chaque CTQ à une mesure dans votre procédure de test.
import openhtf as htf
from openhtf.util import units
# Associer chaque caractéristique CTQ à une mesure avec des limites de spécification
@htf.measures(
htf.Measurement("output_voltage_5v")
.with_units(units.VOLT)
.in_range(4.95, 5.05)
.doc("CTQ-001 : Précision du rail 5V"),
htf.Measurement("current_draw_idle")
.with_units(units.AMPERE)
.in_range(0.0, 0.150)
.doc("CTQ-002 : Consommation de courant au repos"),
htf.Measurement("rise_time_ms")
.with_units(units.MILLISECOND)
.at_most(5.0)
.doc("CTQ-003 : Temps de montée à la mise sous tension"),
)
def power_rail_test(test):
# Votre code de contrôle d'instrument ici
test.measurements.output_voltage_5v = 5.01
test.measurements.current_draw_idle = 0.098
test.measurements.rise_time_ms = 3.2Utilisez le champ .doc() pour stocker l'identifiant CTQ. Cela facilite la traçabilité depuis la documentation PPAP jusqu'aux résultats de test réels.
Étape 2 : Collecter les données de capabilité de processus
Les soumissions PPAP de niveau 3 nécessitent des études de capabilité de processus. Vous avez besoin d'au moins 30 pièces consécutives (l'AIAG recommande 300 pour le Ppk).
TofuPilot calcule automatiquement le Cp et le Cpk à partir de vos données de mesure. Pour extraire les données de capabilité pour votre dossier PPAP :
from tofupilot import TofuPilotClient
client = TofuPilotClient()
# Obtenir les exécutions pour une référence de pièce et une procédure spécifiques
runs = client.get_runs(
procedure_id="power-board-fct",
unit_part_number="PWR-200-R3",
limit=300,
)
# Extraire les valeurs de mesure pour chaque CTQ
voltage_values = [
r.measurements["output_voltage_5v"].value
for r in runs
if r.measurements.get("output_voltage_5v")
]
print(f"Taille de l'échantillon : {len(voltage_values)}")
print(f"Moyenne : {sum(voltage_values) / len(voltage_values):.4f}")Le tableau de bord de TofuPilot affiche directement le Cpk sur les graphiques de mesures. Faites des captures d'écran pour votre soumission, ou exportez les données brutes.
Étape 3 : Réaliser les études Gage R&R
L'analyse du système de mesure (MSA) prouve que votre équipement de test est capable. Une étude Gage R&R typique utilise 10 pièces, 3 opérateurs, 3 essais chacun.
import openhtf as htf
from tofupilot import TofuPilotClient
client = TofuPilotClient()
# Taguer chaque exécution avec les infos opérateur et essai pour le MSA
for operator in ["OP-A", "OP-B", "OP-C"]:
for trial in range(1, 4):
for part_sn in part_serial_numbers:
# Exécuter le test
result = run_test(part_sn)
# Téléverser avec les métadonnées pour le regroupement MSA
client.create_run(
procedure_id="gage-rr-voltage",
unit_under_test={
"serial_number": part_sn,
"part_number": "PWR-200-R3",
},
run_passed=result.passed,
measurements=result.measurements,
properties={
"operator": operator,
"trial": trial,
"study": "MSA-2026-Q1",
},
)Filtrez par la propriété study dans TofuPilot pour extraire toutes les données Gage R&R à analyser.
Étape 4 : Générer le plan de contrôle
Votre plan de contrôle documente ce que vous testez, comment vous le testez et quelles limites vous utilisez. Extrayez-le directement de vos définitions de test :
from tofupilot import TofuPilotClient
client = TofuPilotClient()
# Obtenir la définition de la procédure avec toutes les mesures
procedure = client.get_procedure("power-board-fct")
print("| CTQ | Mesure | Limite basse | Limite haute | Unité | Méthode |")
print("|-----|-------------|-------------|-------------|------|--------|")
for m in procedure.measurements:
print(
f"| {m.doc or '-'} | {m.name} | "
f"{m.lower_limit or '-'} | {m.upper_limit or '-'} | "
f"{m.unit or '-'} | FCT automatisé |"
)Ce tableau va directement dans votre plan de contrôle PPAP. Quand les limites changent, regénérez-le depuis la même source de vérité.
Étape 5 : Constituer les résultats dimensionnels et de performance
Le PPAP exige des valeurs mesurées réelles pour un échantillon de pièces (typiquement 5 provenant d'un lot de production significatif).
from tofupilot import TofuPilotClient
client = TofuPilotClient()
# Obtenir les 5 premières exécutions réussies du lot de production initial
sample_runs = client.get_runs(
procedure_id="power-board-fct",
unit_part_number="PWR-200-R3",
passed=True,
limit=5,
)
for run in sample_runs:
print(f"N/S : {run.unit.serial_number}")
for name, m in run.measurements.items():
status = "RÉUSSI" if m.passed else "ÉCHOUÉ"
print(f" {name}: {m.value} {m.unit or ''} [{status}]")Maintenir votre dossier PPAP
Le PPAP n'est pas un exercice ponctuel. Quand vous modifiez votre processus, vous pourriez devoir soumettre à nouveau.
Suivez ce qui déclenche une mise à jour PPAP :
- Modification technique : Nouvelle révision de pièce, limites de test mises à jour
- Modification de processus : Nouvel équipement de test, configuration de station différente
- Changement de fournisseur : Nouvelle source de composant affectant les caractéristiques de test
Comme TofuPilot versionne vos procédures de test et suit les configurations des stations, vous pouvez toujours tracer quelle soumission PPAP correspond à quelle configuration de test. Quand un client demande « qu'est-ce qui a changé depuis votre dernière soumission », la réponse est dans votre historique d'exécutions.