Konwerter PLC: z języka drabinkowego na tekst strukturalny, Siemens na Rockwell
Wklej program z TIA Portal, Studio 5000 albo TwinCAT. PLC Gym ustala, od którego producenta pochodzi, oddaje go w kodzie drugiego producenta, uruchamia obie wersje obok siebie i pokazuje, co jest inne, linia po linii. Sposób na naukę drugiego producenta na własnym kodzie i dobry początek migracji. Konwertuje tylko logikę, więc nadal wymaga testów na prawdziwej maszynie.
- Każda linia odwzorowana Najedź na szczebel lub linię, aby zobaczyć, skąd pochodzi
- Sprawdzone, nie zgadywane Oba programy działają na tych samych wejściach w naszym symulatorze, cykl po cyklu
- Twój kod nie jest zachowywany Trafia na nasz serwer do konwersji i nie jest przechowywany ani logowany
Znasz Siemens albo Rockwell, ale nie oba?
Wklej własny kod i zobacz go tak, jak pisze go drugi producent, z podsumowaniem tego, co jest dla Ciebie inne, i liniami, w których jest każda różnica. Potem uruchom go na panelu sterowania i wypróbuj na misji. To sposób na naukę i dobry początek migracji, a nie kod dla działającego zakładu.
Siemens na Rockwell
TIA Portal na Studio 5000 oraz SCL na Structured Text
- Timer
#Delay(IN := #Start, PT := T#2s);Delay.PRE := 2000; Delay.TimerEnable := Start; TONR(Delay);- Bit zakończenia
#Delay.QDelay.DN- Jednorazowy impuls
#Edge(CLK := #Eye);Edge.InputBit := Eye; OSRI(Edge);
Rockwell na Siemens
Studio 5000 na TIA Portal oraz Structured Text na SCL
- Timer
Delay.PRE := 2000; Delay.TimerEnable := Start; TONR(Delay);#Delay(IN := #Start, PT := T#2s);- Bit zakończenia
Delay.DN#Delay.Q- Jednorazowy impuls
Edge.InputBit := Eye; OSRI(Edge);#Edge(CLK := #Eye);
Ściągawka Siemens, Rockwell, TwinCAT: jedna instrukcja, trzy nazwy
Konwerter odwzorowuje każdą z nich za Ciebie. To także przydatna ściągawka, gdy przechodzisz między zakładami.
| Do czego służy | Rockwell Studio 5000 | Siemens TIA Portal | Beckhoff TwinCAT 3 Structured Text |
|---|---|---|---|
| Styki normalnie otwarte i zamknięte | XIC, XIO | Styki NO i NC | Zapisane jako logika: A AND NOT B |
| Cewka, ustawianie i kasowanie z podtrzymaniem | OTE, OTL, OTU | Cewka, S, R | x := …, IF … THEN x := TRUE |
| Timer z opóźnionym załączeniem | TON na TIMER (.PRE .ACC .DN); TONR na FBD_TIMER w ST | TON_TIME (PT, ET, Q) | TON (PT, ET, Q) |
| Timer z opóźnionym wyłączeniem | TOF; TOFR w ST | TOF_TIME | TOF |
| Licznik w górę | CTU na COUNTER, reset przez RES; CTUD w ST | CTU na IEC_COUNTER (PV, CV, Q, R) | CTU (PV, CV, Q, RESET) |
| Zbocze narastające | ONS, OSR; OSRI w ST | Styk P, P_TRIG, R_TRIG | R_TRIG |
| Zbocze opadające | OSF; OSFI w ST | Styk N, N_TRIG, F_TRIG | F_TRIG |
| Przenieś wartość | MOVE (MOV przed v36) | MOVE | x := y |
| Porównaj | EQ, NE, LT, GT, LE, GE (EQU, NEQ, LES, GRT, LEQ, GEQ przed v36) | CMP ==, <>, <, >, <=, >= | =, <>, <, >, <=, >= |
| Matematyka | ADD, SUB, MUL, DIV, CPT | ADD, SUB, MUL, DIV, CALCULATE | +, -, *, / |
| Skalowanie wejścia analogowego | SCP | NORM_X, potem SCALE_X | Zapisane jako wzór |
| Liczby całkowite | DINT (INT istnieje, DINT jest natywny) | Int, DInt | INT, DINT |
| Czasy | DINT w milisekundach: 2000 | Time: T#2s | TIME: T#2S |
| Zmienne wewnątrz bloku | Program tags, bez prefiksu | #Name (block interface) | Bez prefiksu (sekcje VAR) |
| Własny typ danych | UDT (bity BOOLs upakowane w ukrytym SINT) | Typ danych PLC: TYPE … STRUCT | STRUCT w DUT |
| Własny blok | Add-On Instruction (AOI) ze zmienną bazową | FB, wywoływany jako multiinstancja | FUNCTION_BLOCK z instancją |
| Wywołanie | PumpCtl(Pump1, Start, Stop, Run): najpierw instancja, potem wymagane parametry po kolei | #Pump1(Start := …, Run => …) | Pump1(Start := …, Run => …) |
| Blok, którego szczebel jest nieaktywny | EnableIn przyjmuje false: logika się nie wykonuje (wykonuje się jego procedura EnableInFalse, jeśli ją ma) | EN nieaktywne: FB nie jest wywoływany (ENO false) | Bez wywołania: umieść wywołanie wewnątrz IF |
| Wykonaj raz przy starcie | Procedura Prescan AOI: wykonuje się podczas prescanu, gdy sterownik przechodzi w tryb Run | OB startowy (OB100) lub flaga pierwszego wywołania w FB | Flaga pierwszego wywołania w FB (lub FB_init) |
Co konwertuje, a czego nie
Konwertuje logikę. Wszystko, czego nie może przenieść, jest wymienione z linią i tym, co zrobić, nigdy po cichu pominięte.
Konwertuje
- Język drabinkowy na Structured Text, zawsze
- Structured Text na język drabinkowy, gdy logika pasuje do ladder: styki, cewki, ustawianie i resetowanie, timery, liczniki, zbocza, porównania, przeniesienia i matematyka
- Siemens na Rockwell i z powrotem, w Structured Text lub ladder, oraz TwinCAT w obie strony
- Składowe timerów i liczników (IN/PT/Q/ET na TimerEnable/PRE/DN/ACC), zmienne lokalne #, typy danych, zbocza, MOVE i MOV, porównania i matematyka
- Deklaracje zmiennych z komentarzami oraz komentarze w twoim kodzie
- Twoje własne bloki funkcyjne, Add-On Instructions i UDT: definicje, wywołania i każde Tag.Member, w formie właściwej dla każdego producenta
- AOI napisane w ladder, z procedurami Prescan i EnableInFalse: zachowane jako szczeble dla docelowego ladder albo zapisane jako Structured Text
- Bloki Siemens LAD i FBD z eksportu XML TIA Portal: każda sieć (network) jest odczytywana jako SCL, który robi to samo
- Całe programy naraz: źródło Siemens z blokami danych, program Studio 5000, którego główna procedura wywołuje pozostałe, oraz kilka plików TwinCAT lub TIA Portal otwartych razem
- Szczeble Studio 5000 z kopiowaniem i wypełnianiem (COP, CPS i FLL, do 64 elementów), licznik liczący w obie strony (CTU z CTD), logika bitowa, MOD, ABS, SQR i MVM
- Timer impulsowy (TP) przenoszony do Studio 5000 Structured Text, który go nie ma: rozpisany wokół TONR i sprawdzony z oryginałem cykl po cyklu
- Raport, który możesz zapisać jako plik tekstowy: co wymaga twojej uwagi, co się zmieniło i dlaczego oraz co porównanie obok siebie sprawdziło, a czego nie
Nie konwertuje
- Konfiguracja sprzętowa, adresy I/O, sieci i komunikacja (MSG, PUT/GET, EtherNet/IP, PROFINET)
- Zmienne, alarmy i ekrany HMI
- Bloki bibliotek producentów, takie jak PID, ruch i napędy
- AOI, których logika jest w diagramie bloków funkcyjnych (FBD) lub SFC: oznaczane, byś mógł najpierw przepisać tę procedurę w ladder lub Structured Text
- Metody, właściwości, akcje i unie TwinCAT
- Ciągi tekstowe: linie, które ich używają, są oznaczane i zostawiane tobie
- Pętle FOR do ladder: są oznaczane wraz z linią i sugestią
- STL, IL, SFC i GRAPH oraz diagram bloków funkcyjnych (FBD) ze Studio 5000
Jak działa dowód
Twój kod jest wczytywany do neutralnej postaci, a potem zapisywany tak, jak pisze go docelowy producent: zapisy składowych i TONR w Logix, jedno wywołanie TON_TIME w SCL, T#2s lub 2000.
Symulator PLC Gym uruchamia oryginalny i przekonwertowany program przez 3000 cykli (60 symulowanych sekund). Wejścia są naciskane, trzymane i puszczane, a liczby przekraczają każdy limit, z którym porównuje je Twój kod.
Każde wyjście jest porównywane w każdym cyklu. Tam, gdzie producenci naprawdę się różnią (impuls jednorazowy w pierwszym cyklu, reset licznika), konwerter pisze kod tak, aby zachowanie nadal się zgadzało, i mówi o tym.
Działa w symulatorze PLC Gym, więc to mocna kontrola logiki, a nie gwarancja dla Twojego zakładu: testuj na prawdziwej maszynie, tak jak wymaga tego Twój obiekt. Chcesz zobaczyć, jak działa? Naciśnij Uruchom, aby otworzyć przekonwertowany program na symulatorze PLC online(panel sterowania), albo przetestuj swój kod PLC na maszynie 3D.
Pytania inżynierów
Co ludzie sprawdzają, zanim zaufają konwerterowi.
Czy konwertuje kod Siemens TIA Portal na Rockwell Studio 5000?
Tak. Wklej SCL lub otwórz plik .scl, a domyślnie trafi do Rockwell, jako Structured Text lub ladder. Przejście z SCL na Structured Text zmienia więcej niż nazwy zmiennych: wywołania TON_TIME stają się TONR z .PRE i .TimerEnable, R_TRIG staje się OSRI, .Q staje się .DN, T#2s staje się 2000, a INT staje się DINT. Możesz pobrać plik .L5X do zaimportowania. Konwertuje tylko logikę, a ten plik był dotąd testowany jedynie przez wczytanie go z powrotem do PLC Gym, więc sprawdź import w Studio 5000.
Czy konwertuje kod Rockwell Studio 5000 na Siemens TIA Portal?
Tak. Wklej Structured Text lub tekst szczebli albo otwórz eksport L5X, a domyślnie trafi do Siemens: SCL ze Structured Text, LAD z ladder. Timery TONR stają się TON_TIME, liczniki CTUD stają się CTU, jednorazowe impulsy OSRI stają się R_TRIG, DN staje się Q, a ACC staje się ET lub CV, a każda zmienna lokalna dostaje w SCL swój #.
Znam Siemens, ale nie Rockwell. Czy to pomoże mi się nauczyć?
Tak, i w drugą stronę też. Wklej własny kod, a dostaniesz podsumowanie różnic dla ciebie: jak zmieniają się timery, jednorazowe impulsy i nazwy zmiennych, z liniami twojego programu, w których każda z nich występuje. Potem uruchom przekonwertowany program na panelu sterowania PLC Gym i zagraj misję w języku tego producenta. Ściągawka na tej stronie omawia resztę.
Czy przekonwertowany kod jest gotowy do użycia na działającej instalacji?
Nie. Traktuj go jako sposób nauki i dobry start migracji. Konwertuje tylko logikę: konfiguracja sprzętowa, adresy I/O, komunikacja, HMI, PID, ruch i napędy zostają po twojej stronie. Porównanie obok siebie działa na symulatorze PLC Gym, a nie na twojej maszynie, a pliki trzeba sprawdzić w oprogramowaniu producenta. Przejrzyj go tak, jak kod kolegi, i przetestuj na prawdziwej maszynie zgodnie z wymaganiami zakładu.
Skąd wie, od jakiego producenta jest mój kod?
Czyta kod, tak jak tłumacz rozpoznaje język. # przed nazwami zmiennych oznacza Siemens, TONR lub .DN oznacza Studio 5000, a T#2s przy zmiennych bez # oznacza TwinCAT. Mówi, co zobaczył, a jeśli kod mógłby pochodzić od dowolnego producenta, mówi to i pozwala ci wybrać. Pliki same mówią, czym są: .scl, .L5X, .TcPOU oraz eksport .xml z TIA Portal.
Czy odczytuje język drabinkowy Siemens (LAD) i FBD z TIA Portal?
Tak, z eksportu XML TIA Portal. Blok LAD lub FBD nie ma źródła .scl, więc XML to sposób, w jaki opuszcza TIA Portal: od V16 dodaj obszar roboczy w Version control interface w drzewie projektu i przenieś do niego blok, a TIA Portal zapisze blok jako plik .xml. Skrypty Openness zapisują taki sam plik. Każda sieć (network) jest odczytywana jako SCL, który robi to samo, cewka jako wszystko, co jest podłączone do jej wejścia, a skrzynka jako wywołanie, i stamtąd konwertowana do Rockwell lub TwinCAT, w Structured Text lub ladder. Otwórz razem z nim bloki danych i typy danych bloku, a zostaną odczytane razem. Czytnik napisano na podstawie opisu formatu od Siemens i nie był testowany z każdą wersją TIA Portal, więc sieć z elementem, którego nie odczytuje, jest wskazywana i zostawiana tobie, a reszta bloku konwertuje się wokół niej.
Czy można przekonwertować logikę drabinkową na Structured Text?
Tak, zawsze. Każdy szczebel staje się jedną lub dwiema liniami Structured Text: styki stają się AND i OR, cewki stają się przypisaniami, OTL i OTU stają się IF … THEN, a timery, liczniki i jednorazowe impulsy stają się wywołaniami w stylu docelowego producenta. Komentarze szczebli przechodzą jako komentarze.
Czy każdy Structured Text da się zamienić na język drabinkowy?
Większość logiki sterowania tak: styki, cewki, ustawianie i resetowanie, timery, liczniki, zbocza, porównania, przeniesienia i matematyka. Pętli FOR nie, bo ladder wykonuje każdy szczebel raz na cykl, więc konwerter oznacza linię i sugeruje napisanie jednego szczebla na element albo zostawienie tej części w Structured Text.
Czy konwertuje moje własne bloki funkcyjne, Add-On Instructions i UDT?
Tak. AOI ze Studio 5000 staje się FB w TIA Portal lub FUNCTION_BLOCK w TwinCAT i z powrotem. AOI napisane w ladder zostają w ladder, gdy konwertujesz do TIA Portal LAD, a w innym przypadku stają się Structured Text. UDT staje się typem danych PLC lub STRUCT w TwinCAT. Zmieniają się też wywołania: Studio 5000 przekazuje instancję, a potem wymagane parametry po kolei, TIA Portal i TwinCAT nazywają każdy parametr. Struktury wejściowe trafiają do AOI jako InOut, TIME staje się DINT w milisekundach, a wartości domyślne UDT przenoszą się na zmienne, bo UDT w Logix nie mogą przechowywać wartości domyślnych. Każda zmiana jest wymieniona w raporcie, a przebieg sprawdzający porównuje też każdą składową struktury.
Co się dzieje z procedurami EnableInFalse i Prescan AOI w TIA Portal lub TwinCAT?
Żaden z nich nie ma procedur trybów skanowania, więc blok funkcyjny sam wykonuje tę pracę. EnableInFalse staje się wejściem EnableIn: blok jest wywoływany w każdym cyklu z EnableIn ustawianym przez jego szczebel, a jego IF … ELSE wykonuje logikę EnableInFalse, gdy szczebel jest nieaktywny. Prescan staje się kodem, który wykonuje się raz, na początku pierwszego wywołania bloku. Postscan wykonuje się tylko wtedy, gdy kończy się akcja SFC, więc jest zachowywany dla Studio 5000, a w pozostałych przypadkach odnotowywany. Przebieg sprawdzający potwierdza, że obie wersje zachowują się tak samo.
Skąd mam wiedzieć, że przekonwertowany kod robi to samo?
PLC Gym uruchamia twój oryginał i przekonwertowany program obok siebie w swoim symulatorze przez tysiące cykli, podając obu te same wejścia, i porównuje każde wyjście w każdym cyklu. Wejścia liczbowe są przesuwane przez granice z twojego kodu i przez pełny zakres ich typu, a strona pokazuje sprawdzony zakres. Mówi o zgodności tylko wtedy, gdy każda linia twojego programu się wykonała, każde wyjście włącz/wyłącz zmieniło stan, a każdy timer i licznik doszedł do końca w trakcie przebiegu. Wszystko, czego nie dało się sprawdzić, jest wymienione, a wynik brzmi wtedy: częściowa. Zgodność oznacza, że programy zgadzały się w tych testach, więc nie jest gwarancją. Wynik widzisz jako przebieg analizatora stanów logicznych. Naciśnij Uruchom go, by otworzyć przekonwertowany program na panelu sterowania PLC Gym, z przyciskami, przełącznikami i lampkami utworzonymi z jego zmiennych, i wypróbuj go sam. Zawsze testuj na prawdziwej maszynie zgodnie z wymaganiami zakładu.
Czy konwerter jest darmowy?
Gotowe przykłady są otwarte dla wszystkich, bez konta. Każde konto dostaje darmowy okres próbny Pro do 5 grudnia 2026, więc do tego czasu darmowe konto konwertuje tyle twojego kodu, ile chcesz. Potem darmowe konto konwertuje 3 twoje programy, a ponowna konwersja tego samego kodu lub do innego producenta nie zużywa kolejnego.
Czy mój kod jest gdzieś wysyłany?
Twój kod trafia na nasz serwer przez szyfrowane połączenie, by mógł zostać przekonwertowany, a wynik od razu wraca. Nie przechowujemy go ani nie zapisujemy w logach i jest ukryty w nagraniach sesji, których używamy do ulepszania strony. Na darmowym koncie przechowujemy zaszyfrowany odcisk maksymalnie 3 programów, by ten sam kod nie liczył się dwa razy. Nie da się z niego odtworzyć twojego kodu i znika razem z twoim kontem.
Czy mogę zaimportować wynik do TIA Portal, Studio 5000 lub TwinCAT?
Tak. Pobierz źródło .scl i użyj Generate blocks from source w TIA Portal, plik .L5X do zaimportowania w Studio 5000 lub .TcPOU do dodania do projektu TwinCAT 3. Twoje własne typy i bloki też trafiają do eksportu: w .scl i .L5X albo jako zip z plikami .TcDUT i .TcPOU dla TwinCAT. TIA Portal nie ma formatu tekstowego dla ladder, więc dla Siemens LAD przerysuj pokazane sieci albo użyj pliku SCL. Traktuj te pliki jako wersję beta: .L5X był dotąd testowany tylko przez wczytanie go z powrotem do PLC Gym, więc sprawdź każdy import w oprogramowaniu producenta.
Czego nie konwertuje?
Tylko logikę: nie konfigurację sprzętową, komunikację, zmienne HMI ani bloki bibliotek producentów, takie jak PID i ruch. Twoje własne bloki funkcyjne, AOI i UDT są konwertowane, o ile ich logika jest w ladder lub Structured Text. Wszystko, czego nie da się przenieść, jest wymienione wraz z linią i tym, co zrobić, i nigdy nie jest po cichu pomijane.
Konwertujesz między producentami? Wymieniaj wskazówki w Szatnia.