La surveillance du moulage par injection consiste à capter l'empreinte de procédé de chaque injection, pas seulement à compter les pièces. Ce cas d'usage montre comment publier en MQTT le temps de cycle, le matelas, la pression et les températures de chaque injection, comparer chaque injection à son propre historique récent et alerter l'équipe quand le procédé commence à dériver. Résultat : une détection plus précoce des pièces incomplètes, des bavures et des problèmes dimensionnels, avec un enregistrement clair de l'état du procédé au moment où chaque pièce a été fabriquée.
Pourquoi les données par injection comptent en plasturgie
Une presse à injecter sait très bien se répéter, jusqu'au moment où elle n'y arrive plus. L'humidité de la matière change, un collier chauffant lâche, un clapet anti-retour s'use ou le moule se réchauffe après un arrêt. Chacun de ces événements se manifeste d'abord par un léger décalage d'une valeur de procédé, souvent plusieurs injections avant un défaut visible. Les usines qui ne contrôlent les pièces qu'en fin d'heure découvrent le problème quand des dizaines ou des centaines de pièces sont déjà dans le carton.
La surveillance injection par injection change le calendrier. Quand chaque cycle publie ses valeurs, un abonné peut comparer l'injection en cours aux 50 précédentes et réagir dès le cycle suivant. Elle fournit aussi des preuves aux ingénieurs qualité : quand une réclamation client arrive, vous consultez les données de procédé du lot au lieu de faire des suppositions.
Les valeurs de procédé à capter
Les presses exposent des dizaines de valeurs. Voici celles qui expliquent le plus souvent les défauts :
| Valeur | Ce qu'un décalage signifie généralement |
|---|---|
| Temps de cycle | Intervention de l'opérateur, retard du robot ou du convoyeur, changement de refroidissement |
| Temps d'injection (remplissage) | Variation de viscosité : humidité de la matière, température de la matière fondue, taux de rebroyé |
| Pression d'injection maximale | Comme le temps de remplissage, ou seuil d'injection ou buse partiellement obstrués |
| Matelas | Fuite au clapet anti-retour ou dose irrégulière ; un matelas très faible fait courir le risque de pièces incomplètes |
| Temps de dosage (plastification) | Problèmes d'alimentation, voûte de matière dans la trémie, usure de la vis |
| Position ou pression de commutation | Commutation irrégulière qui affecte le maintien |
| Températures des zones du fourreau | Défaillance d'un collier chauffant ou d'un thermocouple |
| Températures du moule (partie fixe et mobile) | Défaut du thermorégulateur, canal de refroidissement bouché |
| Pression et temps de maintien | Modifications de consigne qui affectent retassures et cotes |
Commencez par le temps de cycle, le temps de remplissage, la pression maximale, le matelas et le temps de dosage. Ils proviennent de la commande de la presse à chaque injection et, ensemble, détectent la plupart des dérives de procédé.
Extraire les données de la machine
Les presses récentes proposent généralement l'une de ces interfaces :
- OPC UA selon la spécification compagnon Euromap 77. De nombreuses presses récentes fournissent un modèle d'information standardisé pour les paramètres de cycle. Un client OPC UA à l'edge s'abonne aux valeurs de cycle et les publie en MQTT à la fin de chaque cycle.
- Anciennes interfaces Euromap ou protocoles constructeur. Certaines presses anciennes exposent les données d'injection via des interfaces à base de fichiers ou propriétaires. Une passerelle les lit et normalise les données.
- Capteurs ajoutés en rétrofit. Si la commande n'offre rien, ajoutez un signal de cycle à partir de la sortie d'ouverture du moule, plus des thermocouples ou une mesure de température du moule via un petit automate ou un ESP32. Vous perdez les courbes de pression, mais vous obtenez quand même le temps de cycle et les températures.
Le guide de l'IoT industriel avec MQTT explique le principe de la passerelle de façon générale. Le point clé ici est de publier un message complet par injection, déclenché par la fin du cycle, et non un flux de valeurs échantillonnées sur une minuterie.
Conception des messages : une injection, un message
Utilisez un topic par machine et un payload qui contient le numéro d'injection, le moule et la matière, afin que chaque enregistrement soit autodescriptif :
connectmq/demo/<your-id>/plant1/molding/imm07/shot
{
"shot": 48211,
"mold": "M-2231",
"material": "PP-H 12 MFI",
"cycle_time": 18.42,
"fill_time": 0.86,
"peak_pressure": 1065,
"cushion": 4.8,
"recovery_time": 6.1,
"barrel": [205, 215, 225, 230],
"mold_temp": {"fixed": 41.2, "moving": 43.0},
"ts": "2026-10-16T08:21:44.120Z"
}
Gardez des unités cohérentes entre machines (secondes, bar, millimètres, degrés Celsius) et documentez-les une fois pour toutes. Publiez en QoS 1 pour qu'une brève coupure réseau ne fasse pas perdre d'injections ; la passerelle met en mémoire tampon et le broker accuse réception de chaque message. Si votre usine utilise déjà Sparkplug B, ConnectMQ peut le décoder et le republier dans des topics ISA-95 : une cellule de moulage n'a donc pas à changer son format natif.
Détecter la dérive injection par injection
L'abonné ci-dessous conserve une fenêtre glissante des injections récentes par machine et signale toute valeur qui s'écarte de plus de trois écarts-types de la moyenne de la fenêtre. Il est volontairement simple : aucun entraînement de modèle, uniquement le comportement récent de la machine comme référence. Il publie les injections signalées sur un topic alert auquel un tableau de bord, un voyant andon ou un outil de messagerie peut s'abonner.
import json
import statistics
from collections import defaultdict, deque
import paho.mqtt.client as mqtt
PREFIX = "connectmq/demo/r5t1w8/plant1/molding"
WATCH = ["cycle_time", "fill_time", "peak_pressure", "cushion", "recovery_time"]
WINDOW = 50
MIN_SHOTS = 20
SIGMA = 3.0
history = defaultdict(lambda: {k: deque(maxlen=WINDOW) for k in WATCH})
def on_connect(client, userdata, flags, reason_code, properties):
client.subscribe(f"{PREFIX}/+/shot", qos=1)
def on_message(client, userdata, msg):
machine = msg.topic.split("/")[-2]
shot = json.loads(msg.payload)
issues = []
for key in WATCH:
value = shot.get(key)
if value is None:
continue
window = history[machine][key]
if len(window) >= MIN_SHOTS:
mean = statistics.fmean(window)
sd = statistics.pstdev(window) or 1e-9
z = (value - mean) / sd
if abs(z) > SIGMA:
issues.append({"param": key, "value": value, "mean": round(mean, 3), "z": round(z, 1)})
window.append(value)
if issues:
alert = {"machine": machine, "shot": shot.get("shot"), "mold": shot.get("mold"), "issues": issues}
client.publish(f"{PREFIX}/{machine}/alert", json.dumps(alert), qos=1)
print("ALERT", alert)
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="molding-watch-r5t1w8")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=30)
client.loop_forever()
Quelques conseils de réglage issus du terrain :
- Videz la fenêtre lorsque le moule ou la matière change, sinon la nouvelle production est jugée par rapport à l'ancienne. Comparez
moldavec l'injection précédente et réinitialisez en cas de changement. - Ignorez les premières injections après un arrêt. Le moule et le fourreau ont besoin de temps pour se stabiliser, et ces injections sont souvent rebutées de toute façon.
- Certains paramètres méritent aussi des limites fixes. Un matelas proche de zéro est un problème même s'il a diminué lentement, car la moyenne glissante suit les dérives lentes. Associez le contrôle statistique à des limites absolues issues de la fiche de réglage.
- N'alertez pas à chaque injection signalée. Exigez deux injections hors limites sur les cinq dernières avant d'appeler quelqu'un, sinon les alertes seront ignorées en moins d'une semaine.
Pour approfondir les cartes de contrôle et les règles de lecture, voir la MSP en temps réel.
Ce que l'équipe fait des données
La surveillance n'est rentable que si elle change les pratiques en atelier. Flux de travail typiques :
- Les régleurs reçoivent une alerte sur le voyant andon de la cellule quand le matelas ou le temps de remplissage dérive, et vérifient l'étuvage de la matière et le clapet anti-retour avant que les rebuts s'accumulent.
- La qualité relie les données d'injection aux numéros de lot et peut mettre en quarantaine uniquement la fenêtre de temps concernée plutôt que la production d'un poste entier.
- La planification utilise les temps de cycle réels par moule au lieu des temps devisés, ce qui rend plannings et devis plus réalistes. L'article sur le suivi des temps de cycle approfondit ce point.
- La maintenance suit les tendances lentes, comme le temps de dosage et le taux de fonctionnement des colliers chauffants, pour planifier les interventions sur la vis et les résistances.
Les données de cycle et d'état des mêmes machines alimentent aussi le TRS : le nombre d'injections donne la production, le temps de cycle donne la performance et les injections signalées donnent une approximation de la perte de qualité.
Aller au-delà du pilote
Le serveur MQTT public gratuit broker.connectmq.com convient pour valider l'idée avec un simulateur, mais son espace public est lisible par tout le monde, et les paramètres de moulage sont un savoir-faire de procédé que vous ne devez pas partager. Pour la vraie cellule, créez un broker privé sur ConnectMQ et connectez chaque passerelle avec ses propres nom d'utilisateur, mot de passe et client ID, en TLS sur le port 8883. Avec un broker MQTT managé, personne dans l'équipe de l'usine n'a à maintenir le broker, et l'exploiter comme broker MQTT dans le cloud permet à l'équipe qualité du siège de voir les mêmes données d'injection que l'usine. Les règles d'alerte de seuil du portail peuvent couvrir les limites absolues simples, tandis que le contrôle statistique tourne dans votre propre abonné. Pour situer ce projet dans un programme plus large, lisez le guide de l'industrie intelligente.
Démarrer avec ConnectMQ
Créez un broker gratuit sur app.connectmq.com avec l'offre Serverless, sans carte bancaire, connectez la passerelle d'une presse à injecter et l'abonné de détection de dérive, et recevez vos premières alertes par injection dès cette semaine.
Questions fréquentes
Quelle est la valeur la plus utile pour la surveillance du moulage par injection ?
Le matelas et le temps de remplissage, ensemble, détectent une grande part des problèmes de procédé, car ils reflètent à la fois la régularité de la dose et la viscosité de la matière. Le temps de cycle seul renseigne sur la productivité, pas sur la qualité.
Faut-il diffuser les courbes de pression complètes en MQTT ?
Généralement pas au début. Les valeurs de synthèse par injection sont légères et couvrent la plupart des besoins ; ne captez les courbes complètes que pour les pièces critiques, et restez dans la limite de taille de message de votre offre de broker.
Peut-on surveiller des presses anciennes sans OPC UA ?
Oui. Un signal d'ouverture du moule donne le temps de cycle et le comptage, et des thermocouples ajoutés donnent les températures. Vous publiez moins de valeurs, mais la chaîne MQTT est identique.
Comment éviter les fausses alarmes après un changement de moule ?
Réinitialisez la référence glissante lorsque le moule ou la matière change et ignorez les premières injections de stabilisation. Combinez les contrôles statistiques avec des limites fixes issues de la fiche de réglage.



