Auf dem Papier ist es eine Eins-zu-eins-Umstellung. Ist sie nie.
Ich habe ein Mitsubishi-FX-Kontaktplanprogramm aus den 1990ern in ABB-800xA-Funktionsbausteine überführt. Verkauft wurde das als gleichwertiger Austausch. Wo es brach und wie ich den Auftrag wirklich gemacht habe.
Eine Übersetzung in deiner Sprache ist noch nicht fertig — zeige das englische Original.
Dieser Artikel wurde ursprünglich auf Englisch verfasst. Die Übersetzung wurde von einer KI erstellt und kann Fehler enthalten.
Migrationen wie diese werden als eins zu eins verkauft. Nimm das alte System, mach dasselbe in neuer Hardware und Software, gib es zurück, und es verhält sich exakt gleich. Auf dem Deckblatt liest sich das wie Copy-and-paste mit angehängtem Budget.
Hier war es eine alte Mitsubishi-FX-SPS mit einem Kontaktplanprogramm aus den 1990ern. Der Auftrag: rüber ins ABB 800xA, neu aufgebaut als Steuerungsmodul in Funktionsbausteinsprache (FUP). Gleiches Verhalten, neue Plattform.

„Eins zu eins“ ist ein Verkaufssatz
Ich glaube nicht, dass jemand lügt, wenn er es 1:1 nennt. Vom Stuhl des Kunden aus stimmt es: dieselben Knöpfe, dieselbe Abfolge, dieselben Ausgänge, die Linie läuft wie eh und je. Dafür bezahlt er. Vom Stuhl des Ingenieurs aus kommt fast nichts unverändert mit. Das hier ist mir begegnet.
Die Software ist älter als ich
Das Originalprojekt ließ sich in GX Developer nicht öffnen. Es ging in GX IEC Developer auf, dem europäischen Zweig von Mitsubishis Werkzeugen nach IEC 61131-3, der aus der alten MEDOC-Software aus den 1990ern hervorgegangen ist. Wahrscheinlich wurde das Projekt von Anfang an in dieser Linie geschrieben.
Die erste Überraschung war die Hardwarekonfiguration. Kein eigener Dialog. Sie steht als Code in Bausteinen im Programm selbst, meistens ganz am Ende, damit man sich zum Ändern nicht durch alles wühlen muss. Ich fand das schwerer zu lesen als alles, womit ich bisher gearbeitet habe. Die grafischen Hardware-Editoren in den neueren ABB- und Siemens-Werkzeugen sind schlicht besser.
Kontaktplan und FUP denken nicht gleich
Kontaktplan (KOP) sind Kontakte und Spulen, Strom von links nach rechts, ein Bild eines Relaisschranks. FUP sind Signale, die durch Bausteine laufen. Ein Strompfad, der im KOP offensichtlich ist, kann in FUP zu einem unhandlichen Haufen Bausteine werden, und etwas, das in FUP sauber ist, wäre rückwärts ein Durcheinander aus Strompfaden. Die Ausgänge bringst du zur Deckung, während die Struktur darunter am Ende nichts mehr mit dem Original zu tun hat. Um zu beweisen, dass es sich gleich verhält, musst du das alte Programm viel tiefer verstehen, als es von oben nach unten zu lesen.
Die Teile ohne Entsprechung
Manches, worauf diese Programme sich stützen, hat in 800xA keinen Zwilling. Jedes Stück findest du durch sorgfältiges Lesen und baust es von Hand neu.
Der DECO-Baustein. Der Kontaktplan dekodiert eine Zahl in einem einzigen Befehl auf einen von vielen Ausgängen. 800xA hat nichts dergleichen. Ich bin bei MOD und DIV gelandet, um Einer und Zehner zu trennen, und zehn EQ-Bausteinen gegen die Ausgänge.
Sprungbefehle. Bedingte Sprünge, CJ, überspringen ganze Logikabschnitte.
Physische Einstellungen in der Logik. Manche Timer-Voreinstellungen wurden an der Maschine über Potentiometer eingestellt. Bei der FX landen sie in speziellen Datenregistern, D8030 und D8031, und das Programm skaliert daraus eine Voreinstellung. Im neuen Modul werden daraus Parameter.
Spezielle Hilfsrelais. System-Merker der M8000-Reihe formen Teile der Logik. M8028 schaltet die Zeitbasis bei einer Gruppe von Timern um.
Oktaladressierung. Ein- und Ausgänge sind bei der FX zur Basis 8 nummeriert, nicht zur Basis 10. Die Eingänge X000 bis X007 hingen, wie sich herausstellte, an 20 Ventilen, und das Programm liest sie, um zu entscheiden, wie viele Ventile öffnen sollen. Eine Ventilzahl von „19“ heißt 20, gezählt wird ab null. Bis ich das richtig hatte, ging ein ganzer Tag drauf: BCD nachlesen, wie Bits und Bytes in diesen älteren Steuerungen abgelegt werden, vorzeichenbehaftet gegen vorzeichenlos. Vorher ergaben die Strompfade keinen Sinn.
Was nicht funktioniert hat: die KI alles machen lassen
Das Erste, was ich gemacht habe, als ich den Auftrag bekam, mehr aus Spaß: das Kontaktplanprogramm einer KI geben und sie bitten, daraus ein komplettes 800xA-Steuerungsmodul zu erzeugen, aufbereitet als HTML-Dokument mit gezeichneten FUP-Bausteinen. Hat nicht funktioniert. Das Ergebnis war in keiner Hinsicht korrekt. Die zehn Minuten waren es wert, um es sicher zu wissen: So eine Aufgabe kannst du keinem Modell übergeben und auf ein Wunder hoffen.
Was funktioniert hat
Ich bin 21 und, während ich das schreibe, etwa zwei Jahre in diesem Beruf. Ein Kontaktplanprogramm aus den 1990ern war mir völlig fremd.
Statt nach einer Übersetzung zu fragen, habe ich den Kontaktplan als PDF exportiert und die KI gebeten, daraus ein Dokument zu machen, das das Programm Stück für Stück und Schritt für Schritt erklärt. Mach das auf einer unternehmenseigenen On-Prem-Plattform und erst, wenn es mit deinem Unternehmen und dem Kunden abgeklärt ist. Ich habe dieses Dokument gelesen, und dort habe ich zum ersten Mal von BCD gehört, von Oktaladressierung und davon, wie der Speicher in diesen Steuerungen aufgebaut ist. Es hat aus etwas, das seit Jahrzehnten niemand angefasst hatte, etwas gemacht, über das ich nachdenken konnte. Die KI liegt manchmal falsch und rät mit Überzeugung, manchmal mit sehr viel Überzeugung, also prüf alles doppelt, was nicht ganz aufgeht.
Dann Papier. Ich habe das ganze Kontaktplanprogramm auf A3 gedruckt und bin es mit einem Bleistift Zeile für Zeile durchgegangen, Notizen und Linien, die die Punkte verbinden, bis ich verstanden hatte, was wo passiert. Da hat es wirklich klick gemacht.
Dann habe ich angefangen, das FUP zu schreiben. Dieser Teil ist nicht linear. Du fängst nicht oben links an und schreibst bis zum Ende. Ich kam an eine Stelle, an der ich nicht wusste, wie ich etwas verbinden soll, ließ sie liegen, machte weiter und fand weiter unten die Logik, mit der ich zurückgehen und sie fertig schreiben konnte.
Als das FUP fertig war, habe ich es ebenfalls auf A3 gedruckt, neben den Kontaktplan gelegt und beide mit einem grünen Marker durchgearbeitet, jeden Abschnitt markiert, der logisch dasselbe tat. Eine Simulation im Kopf, auf Papier. Als alles grün war, bin ich weiter.
Dann eine echte Simulation. Ich habe in Control Builder M ein Simulations-Steuerungsmodul gebaut, mit einem Fenster, in dem ich jeden Eingang setzen und jeden Ausgang beobachten konnte, und habe es auf dem Soft Controller auf meinem Laptop laufen lassen. Das alte Programm konnte ich nicht simulieren. Ich wusste nicht, ob GX Developer das überhaupt kann, und die originale SPS lief in einer Anlage eine Stunde vom Büro entfernt, die für mich nicht angehalten werden konnte. Der Vergleich blieb also auf Papier.
Zuletzt Hardware. Die neuen ABB-Schränke kamen, und es hat zwei volle Tage gedauert, sie überhaupt zum Laufen zu bringen: ein fehlender Abschlusswiderstand am redundanten System, Firmware-Updates, Stationsnamen, all das Einrichten, das einfach Zeit braucht. Als es lief, habe ich das Programm heruntergeladen und konnte Zykluszeiten und Speicherauslastung in echt beobachten. AC 800M ist eine DCS-Steuerung, keine schnelle SPS, aber dieses Programm musste schnell sein, und ich habe die Taskzeit auf 30 Millisekunden gedrückt, mit Rechenleistung und Speicher übrig.
Das Fazit
Eins zu eins stimmt vom Stuhl des Kunden aus und ist Fiktion vom Stuhl des Ingenieurs aus. Wenn ein Auftrag so verkauft wird, geh früh auf die Jagd nach den drei Stellen, an denen er es nicht sein kann: wo die beiden Systeme verschieden denken, die Funktionen und Bausteine ohne Entsprechung, und die Hardware und die Signale drumherum.
Erfahre, wie das zu unserer Vision und unserem Kern passt
Mehr lesen auf tianengineering.com — https://tianengineering.com/articles/on-paper-its-one-to-one-de/