Odzyskiwanie programu ze sterownika Siemens S7 – jak wygląda upload PLC
Telefon zwykle brzmi tak samo: maszyna stoi, sterownik jest zablokowany hasłem, którego nikt w firmie nie zna, a dokumentacji nie ma – albo została u poprzedniego integratora, z którym nikt już się nie kontaktuje. Odzyskiwanie programu PLC ze sterownika bez kodu źródłowego zaczynam zawsze tak samo: od modelu CPU, wersji firmware i tego, jaka ochrona jest na nim włączona. To, czy coś się da, zależy od tego kompletu, nie od samego pytania.
Kiedy program da się odczytać, a kiedy nie
Siemens rozdziela trzy osobne mechanizmy ochrony, i w TIA Portal V20 oraz V21 działają one niezależnie od siebie. Know-how protection chroni treść konkretnych bloków hasłem – bez niego nie odczytam kodu w środku, nawet mając pełny dostęp do sterownika. Copy protection wiąże wykonanie bloku z numerem seryjnym konkretnej CPU albo konkretnej karty SIMATIC Memory Card, więc ten sam program przeniesiony na inny sterownik po prostu nie ruszy. Access protection to coś innego – ogranicza dostęp online do CPU: kto może odczytać, zapisać, wgrać program czy zajrzeć w diagnostykę.
W S7-1500 klasyczne poziomy dostępu dotyczą firmware do wersji V3.0. Dla nowszego firmware Siemens przeszedł na Local User Management, czyli osobnych użytkowników z osobnymi uprawnieniami zamiast jednego wspólnego hasła na poziom. Ma to znaczenie praktyczne: sposób odblokowania sterownika z firmware V2 i sterownika z firmware V3 na Local User Management bywa inny, więc pytanie o dokładną wersję firmware pada u mnie zawsze na początku, nie przy okazji.
Know-how protection nie obchodzę i nie próbuję łamać haseł dostępu do CPU – to nie jest kwestia uprzejmości, tylko tego, że właściciel maszyny nie zawsze jest właścicielem oprogramowania, które w niej działa. Legalne drogi są trzy: hasło od właściciela praw, prośba do autora programu w ramach umowy serwisowej, albo napisanie funkcji od nowa na podstawie tego, co widać z zewnątrz – wejść, wyjść i zachowania maszyny. Jeśli żadna z nich nie wchodzi w grę, mówię to na pierwszej rozmowie zamiast ciągnąć zlecenie, które i tak donikąd nie dojdzie.
Starsze S7-300 mają swoją furtkę: od STEP 7 Classic V5.1 dało się celowo zapisać cały projekt, razem z komentarzami i symbolami, na karcie MMC w CPU. Wymaga to jednak, żeby ktoś wcześniej świadomie to zrobił – zwykły download programu do sterownika ani zwykły upload z CPU do nowego projektu tego nie robią automatycznie. Jeszcze starsze sterowniki, S5 programowane w STEP 5, to inna generacja narzędzi: program da się odczytać z CPU starym środowiskiem STEP 5 i odpowiednim interfejsem PG, ale wraca jako goły STL, bez komentarzy i bez symboli. Jeśli gdzieś przetrwał plik projektu z PG, odtwarzanie idzie szybko; jeśli nie, logikę opisuję ręcznie, sieć po sieci. Na pytanie o czas odpowiadam dopiero po rozmowie o konkretnym sterowniku, nie z góry.
Co przygotować przed zgłoszeniem
Im więcej z tego wiem przed przyjazdem, tym krótsza jest sama wizyta – część ustaleń robię już podczas pierwszego telefonu.
Wersja firmware decyduje o tym, jaką wersją TIA Portal w ogóle da się połączyć ze sterownikiem – nowszy firmware bywa nieczytelny dla starszego środowiska, i odwrotnie. Sama obecność karty pamięci w S7-1500 niczego nie gwarantuje: karta jest nośnikiem wymaganym do pracy CPU, ale dane projektowe trafiają na nią tylko wtedy, gdy zostały tam wcześniej jawnie zapisane. Bez tego karta nie zastąpi kopii projektu.
Przy sterownikach z funkcją Safety (F-CPU) dochodzi jeszcze jeden warunek: spójny odczyt danych safety wymaga wcześniejszego włączenia opcji „Enable consistent upload from the F-CPU” – jeśli nikt tego nie zrobił przed ostatnim wgraniem programu, sprawdzam to na miejscu, zamiast zakładać z góry, że się uda.
Jeśli w maszynie pracują urządzenia PROFIBUS lub PROFINET innych producentów, TIA Portal musi mieć zainstalowany właściwy opis GSD albo GSDML, żeby poprawnie je rozpoznać i pokazać parametry. Brak takiego pliku nie zawsze kończy się twardym błędem, ale ogranicza to, co da się odczytać i skonfigurować, więc pliki urządzeń obcych szykuję sobie przed wizytą, o ile wiadomo, jakie moduły są w szafie.
- typ i numer MLFB sterownika (CPU)
- wersja firmware CPU
- wersja TIA Portal albo STEP 7, w jakiej powstał program, jeśli wiadomo
- czy w sterowniku jest karta SIMATIC Memory Card i czy ktoś wcześniej celowo zapisał na niej dane projektu
Jak wygląda upload i co z niego wynika
TIA Portal rozróżnia dwie różne operacje, które w rozmowie telefonicznej ludzie często nazywają jednym słowem „upload”. „Upload device as new station” tworzy w projekcie zupełnie nową stację, odzyskując zarówno konfigurację sprzętową, jak i software urządzenia – tego wariantu potrzebuję, gdy nie mam żadnego projektu offline. „Upload software of a device” działa inaczej: ładuje bloki i parametry do CPU, która już istnieje w projekcie – przydatny, gdy projekt offline jest, tylko nieaktualny.
Zanim ruszę cokolwiek, robię – jeśli funkcja i dostęp na to pozwalają – nieinwazyjny backup z opcji „Backup from online device”. To nie jest edytowalny projekt, tylko spójny punkt, do którego mogę wrócić, jeśli coś pójdzie nie tak w trakcie dalszej pracy. Dopiero po nim wykonuję właściwy upload programu ze sterownika Siemens.
Dla S7-1200 i S7-1500 upload obejmuje bloki OB, FB, FC, DB oraz globalne PLC tags. Jedna pułapka: upload pojedynczego bloku nie ściąga automatycznie wszystkich bloków i tagów, do których się on odwołuje – żeby złożyć działającą aplikację, wgrywam komplet, nie pojedyncze elementy. Dla S7-300 i S7-400 w TIA Portal zasada jest podobna: da się pobrać OB, FB, FC, DB i typy danych PLC z urządzenia.
Tego, co upload zwróci z komentarzami, nazwami symbolicznymi i pełną semantyką bloków danych, nie obiecuję z góry – zależy to od konkretnej kombinacji CPU, firmware i wersji TIA Portal, i nie ma jednej reguły, która działałaby zawsze. Nie ma też jednoznacznej odpowiedzi, czy kod SCL wróci jako SCL, czy tylko jako niższy poziom instrukcji – Siemens nie publikuje w tej sprawie jednej reguły ważnej dla wszystkich wersji, więc sprawdzam to na konkretnym przypadku zamiast obiecywać wynik. W praktyce oznacza to, że często odtwarzam logikę ręcznie: czytam sieć po sieci, adres po adresie, i zapisuję, co dany fragment robi, zamiast liczyć na gotowe opisy.
Przy urządzeniach PROFINET pobranie konfiguracji dla wybranej CPU obejmuje przypisane IO controllers, IO devices, IO systems oraz ustawienia topologii. Nie zakładam jednak, że każdy parametr każdego urządzenia obcego producenta wróci komplet – zależy to od zainstalowanych GSD/GSDML i od tego, co dane urządzenie w ogóle udostępnia.
Co zostawiam po sobie
Po zakończeniu zostawiam kopię zapasową programu PLC i opis logiki – które wejście i wyjście za co odpowiada, jak wygląda sekwencja pracy maszyny. Dzięki temu kolejna awaria nie zaczyna się od szukania kogokolwiek, kto rozumie tę maszynę, tylko od otwarcia gotowego opisu.
Panel HMI traktuję osobno od sterownika. Backup i restore w TIA Portal służą do odtworzenia danych na kompatybilnym urządzeniu, a nie do odzyskania oryginalnego, edytowalnego projektu wizualizacji. W starszym WinCC flexible bywa wyjątek – mechanizm backtransfer (Rücktransfer) – ale działa on tylko wtedy, gdy ktoś wcześniej skonfigurował i wgrał na panel dane właśnie pod tę funkcję. Zwykły backup w ProSave sam z siebie projektu do edycji nie daje.
Najczęstsze pytania
Czy da się odzyskać program ze sterownika bez znajomości hasła?
Zależy, jakie to hasło. Hasła do know-how protection nie łamię – to ochrona treści bloku, a nie coś, co obchodzę bez zgody właściciela praw. Jeśli zablokowany jest tylko dostęp online do CPU (access protection), sprawdzam, czy da się to rozwiązać legalnie: przez właściciela hasła, przez autora programu w ramach umowy serwisowej, albo przez napisanie funkcji od nowa na podstawie tego, co maszyna robi z zewnątrz.
Czy upload ze sterownika Siemens zwraca kod źródłowy SCL?
Nie ma na to jednej odpowiedzi ważnej dla każdej wersji. Zależy od konkretnej CPU, firmware i wersji TIA Portal – czasem SCL wraca jako SCL, czasem tylko jako niższy poziom instrukcji. Zanim coś obiecam, sprawdzam to na Twoim konkretnym sterowniku.
Czy odzyskany program będzie miał komentarze i nazwy zmiennych?
Nie zakładam tego z góry. Upload odzyskuje dane programowe dostępne w CPU, ale niekoniecznie wszystkie komentarze bloków, komentarze sieci, symbole lokalne czy pełną semantykę bloków danych. Tam, gdzie tego brakuje, logikę odtwarzam ręcznie i opisuję na nowo.
Czym różni się upload od backupu z CPU?
„Upload device as new station” tworzy nową, edytowalną stację w projekcie – tego potrzebuję, gdy nie mam żadnego projektu offline. „Backup from online device” robi coś innego: tworzy spójny punkt do przywrócenia, ale nie jest projektem, który normalnie się edytuje. Zwykle zaczynam od backupu jako zabezpieczenia, a dopiero potem robię właściwy upload.
Mamy stary sterownik S5 programowany w STEP 5 – da się tam coś odzyskać?
Da się, ale starym środowiskiem STEP 5 i interfejsem PG, nie z TIA Portal. Program wraca jako goły STL bez komentarzy i symboli, więc bez pliku projektu z PG logikę opisuję ręcznie. Ile to zajmie, mówię dopiero po rozmowie o konkretnym sterowniku.
Bezpłatna konsultacja inżynierska
+48 505 603 607 · contact@ledniowski.com
Odpowiadamy w ciągu 24 godzin.