SPS-Konverter: Kontaktplan in Strukturierten Text, Siemens zu Rockwell
Füge ein Programm aus TIA Portal, Studio 5000 oder TwinCAT ein. PLC Gym findet heraus, von welchem Hersteller es ist, gibt es im Code des anderen Herstellers zurück, lässt beide Versionen nebeneinander laufen und zeigt dir Zeile für Zeile, was anders ist. Eine Möglichkeit, den anderen Hersteller mit deinem eigenen Code zu lernen, und ein Vorsprung bei einer Migration. Es konvertiert nur die Logik und muss deshalb noch an der echten Maschine getestet werden.
- Jede Zeile zugeordnet Fahre über einen Strompfad oder eine Zeile, um zu sehen, woher sie kommt
- Geprüft, nicht geraten Beide Programme laufen in unserem Simulator mit denselben Eingängen, Zyklus für Zyklus
- Dein Code wird nicht aufbewahrt Er geht zum Konvertieren an unseren Server und wird nicht gespeichert oder protokolliert
Du kennst Siemens oder Rockwell, aber nicht beides?
Füge deinen eigenen Code ein und sieh ihn so, wie der andere Hersteller ihn schreibt, mit einer Zusammenfassung dessen, was für dich anders ist, und den Zeilen, in denen jeder Unterschied liegt. Lass ihn dann auf dem Bedienfeld laufen und probiere ihn an einer Mission aus. Es ist eine Lernhilfe und ein Vorsprung bei einer Migration, kein Code für eine laufende Anlage.
Siemens zu Rockwell
TIA Portal nach Studio 5000, und SCL nach Strukturiertem Text
- Timer
#Delay(IN := #Start, PT := T#2s);Delay.PRE := 2000; Delay.TimerEnable := Start; TONR(Delay);- Fertig-Bit
#Delay.QDelay.DN- Flankenauswertung
#Edge(CLK := #Eye);Edge.InputBit := Eye; OSRI(Edge);
Rockwell nach Siemens
Studio 5000 nach TIA Portal, und Strukturierter Text nach SCL
- Timer
Delay.PRE := 2000; Delay.TimerEnable := Start; TONR(Delay);#Delay(IN := #Start, PT := T#2s);- Fertig-Bit
Delay.DN#Delay.Q- Flankenauswertung
Edge.InputBit := Eye; OSRI(Edge);#Edge(CLK := #Eye);
Spickzettel Siemens, Rockwell, TwinCAT: eine Anweisung, drei Namen
Der Konverter ordnet jede davon für dich zu. Es ist auch ein praktischer Spickzettel, wenn du zwischen Anlagen wechselst.
| Was es tut | Rockwell Studio 5000 | Siemens TIA Portal | Beckhoff TwinCAT 3 Strukturierter Text |
|---|---|---|---|
| Schließer- und Öffnerkontakte | XIC, XIO | Schließer und Öffner | Als Logik geschrieben: A AND NOT B |
| Spule, Setzen und Rücksetzen | OTE, OTL, OTU | Spule, S, R | x := …, IF … THEN x := TRUE |
| Einschaltverzögerung | TON auf einem TIMER (.PRE .ACC .DN); TONR auf einem FBD_TIMER in ST | TON_TIME (PT, ET, Q) | TON (PT, ET, Q) |
| Ausschaltverzögerung | TOF; TOFR in ST | TOF_TIME | TOF |
| Vorwärtszähler | CTU auf einem COUNTER, rückgesetzt mit RES; CTUD in ST | CTU auf einem IEC_COUNTER (PV, CV, Q, R) | CTU (PV, CV, Q, RESET) |
| Steigende Flanke | ONS, OSR; OSRI in ST | P-Kontakt, P_TRIG, R_TRIG | R_TRIG |
| Fallende Flanke | OSF; OSFI in ST | N-Kontakt, N_TRIG, F_TRIG | F_TRIG |
| Einen Wert übertragen | MOVE (MOV vor v36) | MOVE | x := y |
| Vergleichen | EQ, NE, LT, GT, LE, GE (EQU, NEQ, LES, GRT, LEQ, GEQ vor v36) | CMP ==, <>, <, >, <=, >= | =, <>, <, >, <=, >= |
| Mathematik | ADD, SUB, MUL, DIV, CPT | ADD, SUB, MUL, DIV, CALCULATE | +, -, *, / |
| Einen Analogeingang skalieren | SCP | NORM_X, dann SCALE_X | Als Formel ausgeschrieben |
| Ganze Zahlen | DINT (INT gibt es, DINT ist nativ) | Int, DInt | INT, DINT |
| Zeiten | DINT-Millisekunden: 2000 | Time: T#2s | TIME: T#2S |
| Variablen in einem Baustein | Programmvariablen (Program tags), kein Präfix | #Name (block interface) | Kein Präfix (VAR-Abschnitte) |
| Dein eigener Datentyp | UDT (BOOLs in ein verstecktes SINT gepackt) | PLC-Datentyp: TYPE … STRUCT | STRUCT in einer DUT |
| Dein eigener Baustein | Add-On Instruction (AOI) mit einer zugehörigen Variable | FB, als Multiinstanz aufgerufen | FUNCTION_BLOCK mit einer Instanz |
| Aufruf | PumpCtl(Pump1, Start, Stop, Run): zuerst die Instanz, dann die Pflichtparameter der Reihe nach | #Pump1(Start := …, Run => …) | Pump1(Start := …, Run => …) |
| Ein Baustein, dessen Strompfad aus ist | EnableIn wird false: Die Logik läuft nicht (seine EnableInFalse-Routine läuft, falls vorhanden) | EN aus: Der FB wird nicht aufgerufen (ENO false) | Nicht aufgerufen: Setz den Aufruf in ein IF |
| Einmal beim Anlauf ausführen | Die Prescan-Routine der AOI: läuft beim Prescan, wenn die Steuerung in Run geht | Anlauf-OB (OB100) oder ein Erstaufruf-Merker im FB | Ein Erstaufruf-Merker im FB (oder FB_init) |
Was er konvertiert und was nicht
Er konvertiert die Logik. Alles, was er nicht hinüberbringen kann, wird mit der Zeile und dem, was zu tun ist, aufgelistet und nie stillschweigend weggelassen.
Konvertiert
- Kontaktplan nach Strukturiertem Text, jedes Mal
- Strukturierter Text nach Kontaktplan, wo die Logik in Kontaktplan passt: Kontakte, Spulen, Setzen und Rücksetzen, Timer, Zähler, Flanken, Vergleiche, Übertragungen und Mathematik
- Siemens nach Rockwell und zurück, in Strukturiertem Text oder Kontaktplan, und TwinCAT in beide Richtungen
- Timer- und Zählerelemente (IN/PT/Q/ET zu TimerEnable/PRE/DN/ACC), lokale #-Variablen, Datentypen, Flanken, MOVE und MOV, Vergleiche und Mathematik
- Variablendeklarationen mit ihren Kommentaren, und die Kommentare in deinem Code
- Deine eigenen Funktionsbausteine, Add-On Instructions und UDTs: die Definitionen, die Aufrufe und jedes Tag.Member, jeweils in der Form des Herstellers
- AOIs in Kontaktplan, mit ihren Prescan- und EnableInFalse-Routinen: als Strompfade erhalten für ein Kontaktplan-Ziel oder als Strukturierter Text geschrieben
- Siemens KOP- und FUP-Bausteine aus dem XML-Export von TIA Portal: Jedes Netzwerk wird als das SCL gelesen, das dasselbe tut
- Ganze Programme auf einmal: eine Siemens-Quelle mit ihren Datenbausteinen, ein Studio 5000 Programm, dessen Hauptroutine die anderen aufruft, und mehrere TwinCAT- oder TIA Portal Dateien zusammen geöffnet
- Studio 5000 Strompfade mit Kopieren und Füllen (COP, CPS und FLL, bis zu 64 Elemente), ein Zähler, der in beide Richtungen zählt (CTU mit CTD), Bitlogik, MOD, ABS, SQR und MVM
- Ein Impulstimer (TP) für Studio 5000 Strukturierten Text, der keinen hat: rund um einen TONR ausgeschrieben und Zyklus für Zyklus gegen das Original geprüft
- Ein Bericht, den du als Textdatei speichern kannst: was deine Aufmerksamkeit braucht, was sich geändert hat und warum, und was die Gegenüberstellung probiert hat und was nicht
Konvertiert nicht
- Hardwarekonfiguration, I/O-Adressen, Netzwerke und Kommunikation (MSG, PUT/GET, EtherNet/IP, PROFINET)
- HMI-Variablen, Alarme und Bilder
- Bibliotheksbausteine der Hersteller wie PID, Motion und Antriebe
- AOIs, deren Logik in Funktionsplan oder SFC geschrieben ist: markiert, damit du diese Routine zuerst in Kontaktplan oder Strukturiertem Text neu schreiben kannst
- TwinCAT-Methoden, Eigenschaften, Aktionen und Unions
- Zeichenketten: Zeilen, die sie nutzen, werden markiert und dir überlassen
- FOR-Schleifen nach Kontaktplan: Sie werden mit der Zeile und einem Vorschlag markiert
- AWL, IL, SFC und GRAPH, und Funktionsplan aus Studio 5000
Wie der Nachweis funktioniert
Dein Code wird in eine neutrale Form gelesen und dann so ausgegeben, wie der Zielhersteller ihn schreibt: Member-Zugriffe und TONR in Logix, ein TON_TIME-Aufruf in SCL, T#2s oder 2000.
Der Simulator von PLC Gym lässt das Original und das konvertierte Programm 3.000 Zyklen lang laufen (60 simulierte Sekunden). Eingänge werden gedrückt, gehalten und losgelassen, und Zahlen überschreiten jede Grenze, mit der dein Code vergleicht.
Jeder Ausgang wird in jedem Zyklus verglichen. Wo sich Hersteller wirklich unterscheiden (ein Einmal-Impuls im ersten Zyklus, ein Zähler-Reset), schreibt der Konverter den Code so, dass das Verhalten trotzdem übereinstimmt, und sagt es.
Er läuft im Simulator von PLC Gym, ist also eine starke Prüfung der Logik, aber keine Garantie für deine Anlage: Teste an der echten Maschine, wie es deine Anlage verlangt. Willst du ihn laufen sehen? Drücke Ausführen, um das konvertierte Programm im Online-SPS-Simulator-Bedienfeld zu öffnen, oder teste deinen SPS-Code an einer 3D-Maschine.
Fragen von Ingenieuren
Was Leute prüfen, bevor sie einem Konverter vertrauen.
Wandelt es Siemens TIA Portal Code in Rockwell Studio 5000 um?
Ja. Füg SCL ein oder öffne eine .scl-Datei, und es geht standardmäßig nach Rockwell, als Strukturierter Text oder Kontaktplan. Von SCL nach Strukturiertem Text ändert sich mehr als die Variablennamen: Aufrufe von TON_TIME werden zu TONR mit .PRE und .TimerEnable, R_TRIG wird zu OSRI, .Q wird zu .DN, T#2s wird zu 2000 und INT wird zu DINT. Du kannst eine .L5X zum Importieren herunterladen. Es wandelt nur Logik um, und diese Datei wurde bisher nur getestet, indem sie wieder in PLC Gym eingelesen wurde, also prüf den Import in Studio 5000.
Wandelt es Rockwell Studio 5000 Code in Siemens TIA Portal um?
Ja. Füg Strukturierten Text oder Strompfadtext ein oder öffne einen L5X-Export, und es geht standardmäßig nach Siemens: SCL aus Strukturiertem Text, KOP aus Kontaktplan. TONR-Timer werden zu TON_TIME, CTUD-Zähler werden zu CTU, OSRI-Flanken werden zu R_TRIG, DN wird zu Q und ACC wird zu ET oder CV, und jede lokale Variable bekommt in SCL ihr #.
Ich kenne Siemens, aber nicht Rockwell. Hilft mir das beim Lernen?
Ja, und auch umgekehrt. Füg deinen eigenen Code ein, und du bekommst eine Zusammenfassung dessen, was für dich anders ist: wie sich Timer, Flanken und Variablennamen ändern, mit den Zeilen deines Programms, in denen sie stehen. Dann lass das umgewandelte Programm am Bedienpanel von PLC Gym laufen und spiel eine Mission in der Sprache dieses Herstellers. Den Rest deckt der Spickzettel auf dieser Seite ab.
Ist der umgewandelte Code bereit für eine laufende Anlage?
Nein. Sieh ihn als Lernhilfe und als Vorsprung bei einer Migration. Es wandelt nur Logik um: Hardwarekonfiguration, I/O-Adressen, Kommunikation, HMI, PID, Motion und Antriebe bleiben bei dir. Die Gegenüberstellung läuft auf dem Simulator von PLC Gym, nicht auf deiner Maschine, und die Dateien müssen in der Software des Herstellers geprüft werden. Prüf ihn so, wie du den Code eines Kollegen prüfen würdest, und teste ihn an der echten Maschine, wie es dein Standort verlangt.
Woher weiß es, von welchem Hersteller mein Code ist?
Es liest den Code, so wie ein Übersetzer eine Sprache erkennt. Ein # vor Variablennamen heißt Siemens, TONR oder .DN heißt Studio 5000, und T#2s bei Variablen ohne # heißt TwinCAT. Es sagt dir, was es gesehen hat, und wenn der Code von jedem Hersteller sein könnte, sagt es das und lässt dich wählen. Dateien sagen, was sie sind: .scl, .L5X, .TcPOU und der .xml-Export von TIA Portal.
Liest es Siemens Kontaktplan (KOP) und FUP aus TIA Portal?
Ja, aus dem XML-Export von TIA Portal. Ein KOP- oder FUP-Baustein hat keine .scl-Quelle, also verlässt er TIA Portal als XML: Ab V16 fügst du im Projektbaum unter Version control interface einen Arbeitsbereich hinzu und holst den Baustein hinein, und TIA Portal schreibt den Baustein als .xml-Datei. Openness-Skripte schreiben dieselbe Datei. Jedes Netzwerk wird als das SCL gelesen, das dasselbe tut, eine Spule als alles, was an ihren Eingang angeschlossen ist, und eine Box als Aufruf, und von dort nach Rockwell oder TwinCAT umgewandelt, in Strukturiertem Text oder Kontaktplan. Öffne die Datenbausteine und Datentypen des Bausteins mit, dann werden sie zusammen gelesen. Der Leser wurde nach der Formatbeschreibung von Siemens geschrieben und nicht mit jeder TIA Portal Version ausprobiert, also wird ein Netzwerk mit einem Teil, den er nicht liest, benannt und dir überlassen, und der Rest des Bausteins wird drumherum umgewandelt.
Kann man Kontaktplan in Strukturierten Text umwandeln?
Ja, immer. Jeder Strompfad wird zu einer oder zwei Zeilen Strukturiertem Text: Kontakte werden zu AND und OR, Spulen zu Zuweisungen, OTL und OTU zu IF … THEN, und Timer, Zähler und Flanken werden zu Aufrufen im Stil des Zielherstellers. Die Kommentare der Strompfade kommen als Kommentare mit.
Lässt sich jeder Strukturierte Text in Kontaktplan umwandeln?
Die meiste Steuerungslogik schon: Kontakte, Spulen, Setzen und Rücksetzen, Timer, Zähler, Flanken, Vergleiche, Übertragungen und Mathematik. FOR-Schleifen nicht, weil Kontaktplan jeden Strompfad einmal pro Zyklus abarbeitet, also markiert der Konverter die Zeile und schlägt vor, einen Strompfad pro Element zu schreiben oder diesen Teil in Strukturiertem Text zu lassen.
Wandelt es meine eigenen Funktionsbausteine, Add-On Instructions und UDTs um?
Ja. Eine Studio 5000 AOI wird zu einem TIA Portal FB oder einem TwinCAT FUNCTION_BLOCK, und zurück. In Kontaktplan geschriebene AOIs bleiben Kontaktplan, wenn du nach TIA Portal KOP umwandelst, und werden sonst zu Strukturiertem Text. Ein UDT wird zu einem PLC-Datentyp oder einem TwinCAT STRUCT. Die Aufrufe ändern sich auch: Studio 5000 übergibt die Instanz und dann die Pflichtparameter der Reihe nach, TIA Portal und TwinCAT benennen jeden Parameter. Eingangsstrukturen gehen als InOut in eine AOI, TIME wird zu DINT-Millisekunden, und die Vorgabewerte eines UDT wandern auf die Variablen, weil Logix-UDTs keine Vorgabewerte halten können. Jede Änderung steht im Bericht, und der Prüflauf vergleicht auch jedes Strukturelement.
Was passiert mit den EnableInFalse- und Prescan-Routinen einer AOI in TIA Portal oder TwinCAT?
Keines von beiden hat Routinen für Scan-Modi, also übernimmt der Funktionsbaustein diese Aufgabe selbst. EnableInFalse wird zu einem Eingang EnableIn: Der Baustein wird in jedem Zyklus aufgerufen, mit EnableIn aus seinem Strompfad, und sein IF … ELSE führt die EnableInFalse-Logik aus, wenn der Strompfad aus ist. Prescan wird zu Code, der einmal läuft, am Anfang des ersten Aufrufs des Bausteins. Postscan läuft nur, wenn eine SFC-Aktion endet, also bleibt es für Studio 5000 erhalten und wird anderswo vermerkt. Der Prüflauf prüft, ob sich beide Versionen gleich verhalten.
Woher weiß ich, dass der umgewandelte Code dasselbe tut?
PLC Gym lässt dein Original und das umgewandelte Programm in seinem Simulator tausende Zyklen lang nebeneinander laufen, steuert beide mit denselben Eingängen und vergleicht jeden Ausgang in jedem Zyklus. Zahleneingänge werden über die Grenzen in deinem Code und über den ganzen Bereich ihres Typs getrieben, und die Seite zeigt den Bereich, der probiert wurde. Es meldet nur dann eine Übereinstimmung, wenn jede Zeile deines Programms gelaufen ist, jeder Ein/Aus-Ausgang sich geändert hat und jeder Timer und Zähler während des Laufs bis zum Ende gelaufen ist. Was nicht probiert werden konnte, wird benannt, und das Ergebnis lautet dann teilweise. Eine Übereinstimmung heißt, dass sie in diesen Tests übereingestimmt haben, also ist sie keine Garantie. Du siehst das Ergebnis als Logikanalysator-Spur. Drück Ausführen, um das umgewandelte Programm am Bedienpanel von PLC Gym zu öffnen, mit Tastern, Schaltern und Leuchten aus seinen Variablen, und probier es selbst aus. Teste immer an der echten Maschine, wie es dein Standort verlangt.
Ist der Konverter kostenlos?
Die fertigen Beispiele sind für alle offen, ohne Konto. Jedes Konto bekommt eine kostenlose Pro-Testphase bis 5. Dezember 2026, bis dahin wandelt ein kostenloses Konto also so viel von deinem eigenen Code um, wie du willst. Danach wandelt ein kostenloses Konto 3 deiner eigenen Programme um, und denselben Code erneut oder für einen anderen Hersteller umzuwandeln, verbraucht kein weiteres.
Wird mein Code irgendwo hochgeladen?
Dein Code geht über eine verschlüsselte Verbindung an unseren Server, damit er umgewandelt werden kann, und das Ergebnis kommt direkt zurück. Wir speichern ihn nicht und protokollieren ihn nicht, und er ist in den Sitzungsaufzeichnungen verborgen, mit denen wir die Website verbessern. Bei einem kostenlosen Konto behalten wir einen verschleierten Fingerabdruck von bis zu 3 Programmen, damit derselbe Code nicht doppelt zählt. Er lässt sich nicht in deinen Code zurückverwandeln, und er wird gelöscht, wenn dein Konto gelöscht wird.
Kann ich das Ergebnis in TIA Portal, Studio 5000 oder TwinCAT importieren?
Ja. Lade eine .scl-Quelle herunter und nutze in TIA Portal Bausteine aus Quelle generieren, eine .L5X zum Import in Studio 5000 oder eine .TcPOU zum Hinzufügen zu einem TwinCAT 3 Projekt. Deine eigenen Typen und Bausteine kommen mit: in der .scl und der .L5X oder als Zip mit .TcDUT- und .TcPOU-Dateien für TwinCAT. TIA Portal hat kein Textformat für Kontaktplan, also zeichnest du für Siemens KOP die gezeigten Netzwerke neu oder nimmst die SCL-Datei. Sieh diese Dateien als Beta: Die .L5X wurde bisher nur getestet, indem sie wieder in PLC Gym eingelesen wurde, also prüf jeden Import in der Software des Herstellers.
Was wandelt es nicht um?
Nur Logik: keine Hardwarekonfiguration, keine Kommunikation, keine HMI-Variablen und keine Bibliotheksbausteine der Hersteller wie PID und Motion. Deine eigenen Funktionsbausteine, AOIs und UDTs werden umgewandelt, solange ihre Logik in Kontaktplan oder Strukturiertem Text geschrieben ist. Alles, was es nicht übertragen kann, wird mit der Zeile und dem, was zu tun ist, aufgelistet und nie still weggelassen.
Du konvertierst zwischen Herstellern? Tausche Tipps in der Umkleide.