Sur le papier, c'est une conversion un pour un. Ça ne l'est jamais.

J'ai fait passer un programme à contacts Mitsubishi FX des années 1990 dans des blocs fonctionnels ABB 800xA. Vendu comme un remplacement à l'identique. Voilà où ça a cassé, et comment j'ai fait le travail.

Publié le 2026-06-05 6 min de lecture

Cet article a été rédigé à l’origine en anglais. La traduction a été réalisée par une IA et peut contenir des erreurs.

Les migrations de ce genre sont vendues comme du un pour un. On prend l’ancien système, on refait la même chose dans du matériel et du logiciel neufs, et on le rend en se comportant exactement pareil. Sur la page de garde, ça se lit comme un copier-coller avec un budget accroché dessus.

Celle-ci, c’était un vieil automate Mitsubishi FX avec un programme à contacts des années 1990. Le travail : le faire passer dans un ABB 800xA, reconstruit en module de commande en schéma de blocs fonctionnels (FBD). Même comportement, nouvelle plateforme.

Deux automates côte à côte sur une platine de montage : à gauche un automate compact des années 1990, jauni par l'âge, avec des borniers à vis sous des capots articulés et un port de programmation rond ; à droite un automate modulaire moderne et propre, avec un module processeur et une rangée de modules d'E/S étroits sur rail DIN

« Un pour un » est une phrase commerciale

Je ne pense pas que quiconque mente en appelant ça du 1:1. De là où est assis le client, c’est vrai : mêmes boutons, même séquence, mêmes sorties, la ligne tourne comme elle l’a toujours fait. C’est ce qu’il paie. De là où je suis assis, presque rien ne se reporte tel quel. Voilà ce que j’ai rencontré.

Le logiciel est plus vieux que moi

Le projet d’origine refusait de s’ouvrir dans GX Developer. Il s’est ouvert dans GX IEC Developer, la branche européenne IEC 61131-3 des outils Mitsubishi, née de l’ancien logiciel MEDOC des années 1990. Le projet a probablement été écrit dans cette lignée dès le départ.

Première surprise : la configuration matérielle. Ce n’est pas un écran à part. Elle est écrite en code dans des blocs, dans le programme lui-même, en général tout à la fin pour ne pas avoir à fouiller partout quand on veut la changer. Je n’ai rien trouvé de plus difficile à lire dans tout ce sur quoi j’ai travaillé. Les éditeurs matériels graphiques des outils ABB et Siemens plus récents sont tout simplement meilleurs.

Le langage à contacts et le FBD ne raisonnent pas pareil

Le langage à contacts, ce sont des contacts et des bobines, du courant qui va de gauche à droite, l’image d’une armoire à relais. Le FBD, ce sont des signaux qui traversent des blocs. Un barreau évident en contacts peut devenir un amas de blocs maladroit, et quelque chose de propre en FBD redeviendrait un fouillis de barreaux. On finit par faire correspondre les sorties alors que la structure en dessous ne ressemble en rien à l’originale. Pour prouver que le comportement est le même, il faut comprendre l’ancien programme bien plus profondément que de le lire de haut en bas.

Les parties sans équivalent

Une partie de ce sur quoi ces programmes s’appuient n’a aucun jumeau dans le 800xA. Chaque morceau se trouve en lisant attentivement, et se reconstruit à la main.

Le bloc DECO. En contacts, une seule instruction décode un nombre vers une sortie parmi plusieurs. Le 800xA n’a rien de tel. J’ai fini avec MOD et DIV pour séparer les unités et les dizaines, et dix blocs EQ contre les sorties.

Les instructions de saut. Les sauts conditionnels, CJ, passent des sections entières de logique.

Les réglages physiques dans la logique. Certains préréglages de temporisation étaient ajustés sur la machine, au potentiomètre. Sur le FX, ils atterrissent dans des registres de données spéciaux, D8030 et D8031, et le programme les met à l’échelle pour en faire un préréglage. Dans le nouveau module, ils deviennent des paramètres.

Les relais auxiliaires spéciaux. Des relais système de la série M8000 façonnent des parties de la logique. M8028 commute la base de temps sur un bloc de temporisations.

L’adressage octal. Les entrées et les sorties du FX sont numérotées en base 8, pas en base 10. Les entrées X000 à X007 se sont révélées câblées à 20 vannes, et le programme les lit pour décider combien de vannes doivent s’ouvrir. Un compte de vannes à « 19 » veut dire 20, l’indexation part de zéro. Pour tomber juste là-dessus, il m’a fallu une journée entière à me documenter sur le BCD, sur la façon dont les bits et les octets sont stockés dans ces vieux automates, et sur le signé et le non signé. Avant ça, les barreaux n’avaient pas de sens.

Ce qui n’a pas marché : demander à l’IA de tout faire

La première chose que j’ai faite en récupérant le chantier, surtout pour m’amuser, a été de donner le programme à contacts à une IA et de lui demander d’en sortir un module de commande 800xA complet, présenté en document HTML avec les blocs FBD dessinés. Ça n’a pas marché. Le résultat n’était correct par aucune mesure. Dix minutes bien employées pour en avoir le cœur net : on ne confie pas ce genre de tâche à un modèle en espérant un miracle.

Ce qui a marché

J’ai 21 ans et, au moment où j’écris, environ deux ans de métier. Un programme à contacts des années 1990 m’était complètement étranger.

Au lieu de demander une traduction, j’ai exporté le programme à contacts en PDF et demandé à l’IA d’en faire un document qui explique le programme partie par partie, étape par étape. Faites ça sur une plateforme d’entreprise hébergée sur site, et seulement une fois que c’est validé avec votre entreprise et le client. J’ai lu ce document, et c’est là que j’ai appris le BCD, l’adressage octal et la façon dont la mémoire est organisée dans ces automates. Ça a transformé quelque chose que personne n’avait touché depuis des décennies en quelque chose sur quoi je pouvais raisonner. L’IA se trompe parfois, et elle devine avec assurance, parfois avec beaucoup d’assurance, alors vérifiez toujours deux fois tout ce qui ne colle pas tout à fait.

Ensuite, le papier. J’ai imprimé tout le programme à contacts en A3 et je l’ai repris ligne par ligne au crayon, des notes et des traits pour relier les morceaux, jusqu’à comprendre ce qui se passait où. C’est là que ça a vraiment fait tilt.

Ensuite j’ai commencé à écrire le FBD. Cette partie n’est pas linéaire. On ne part pas en haut à gauche pour écrire jusqu’au bout. J’arrivais à un endroit où je ne savais pas comment relier quelque chose, je le laissais, je passais à la suite, et plus loin je trouvais la logique qui me permettait de revenir en arrière et de le finir.

Le FBD fini, je l’ai imprimé en A3 lui aussi, posé à côté du programme à contacts, et j’ai repris les deux au marqueur vert, en surlignant chaque section qui faisait logiquement la même chose. Une simulation dans ma tête, sur papier. Quand tout était vert, je suis passé à la suite.

Ensuite, une vraie simulation. J’ai construit un module de commande de simulation dans Control Builder M, avec une fenêtre où je pouvais forcer chaque entrée et regarder chaque sortie, et je l’ai fait tourner sur le soft controller de mon portable. L’ancien programme, je ne pouvais pas le simuler. Je ne savais même pas si GX Developer en était capable, et l’automate d’origine faisait tourner un site en production à une heure du bureau, qu’on ne pouvait pas arrêter pour moi. La comparaison est donc restée sur le papier.

Enfin, le matériel. Les nouvelles armoires ABB sont arrivées et il a fallu deux bonnes journées rien que pour les faire démarrer : une résistance de terminaison manquante sur le système redondant, des mises à jour de firmware, les noms de station, toute la mise en route qui prend simplement du temps. Une fois que ça tournait, j’ai téléchargé le programme et j’ai pu regarder les temps de cycle et la charge mémoire pour de vrai. L’AC 800M est un contrôleur de DCS, pas un automate rapide, mais ce programme devait être rapide, et j’ai fait descendre le temps de tâche à 30 millisecondes, avec de la puissance processeur et de la mémoire en réserve.

Ce qu’il faut en retenir

Le un pour un est vrai depuis la place du client et c’est une fiction depuis celle de l’ingénieur. Quand un chantier est vendu comme ça, partez tôt à la chasse aux trois endroits où il ne peut pas l’être : là où les deux systèmes ne raisonnent pas pareil, les fonctions et les blocs sans équivalent, et le matériel et les signaux autour.


Newsletter

New articles, courses, and news — straight to your inbox

No spam, unsubscribe in one click.