Wstęp
Witam Szanowne Grono w tym wpisie zajmę się podstawami działania sterownika PLC Siemens S7-1200. Opiszę tryby jego pracy oraz rodzaje bloków programowych. Ta wiedza jest wymagana by skutecznie programować ten model PLC’ka.
Stany pracy sterownika
Sterownik S7-1200 ma trzy tryby pracy:
- STOP
- START UP
- RUN
Sterowniki te nie mają żadnego fizycznego przełącznika ani przycisku zmiany trybu, aby przełączyć tryb należy użyć odpowiedniej opcji w TIA Portal.
Można też aktywować web serwer w sterowniku i za jego pomocą można zmienić tryb.
Lub gdy mamy dostępny panel HMI Siemensa to po odpowiednim zaprogramowaniu, można go użyć do zmiany trybu.
Tryb pracy STOP
W trybie tym sterownik nie wykonuje programu użytkownika, a co najważniejsze nie wystawia wyjść, wszystkie mają mają stan niski, więc w większości przypadków można uznać iż jest to stan bezpieczny dla maszyny czy też instalacji którą PLC steruje. Sterownik może samoczynnie przechodzić w tryb STOP w momencie napotkania awarii takiej jak: uszkodzenie lub wymiana modułu sygnałowego lub problemów z zasilaniem.
Tryb stop jest wymagany przy wgrywaniu konfiguracji sprzętowej oraz większych zmian programowych takich jak na przykład wgrywanie bloków danych po ich re-inicjalizacji.
Dlatego podczas pracy na działających instalacjach należy zachować szczególną ostrożność, pamiętając iż niekontrolowane zatrzymanie niektórych maszyn lub instalacji może spowodować duże straty a choćby grozić katastrofą.
Ten tryb jest sygnalizowany przez pomarańczowe ciągłe światło diody RUN/STOP na froncie sterownika.
Tryb pracy START UP
Jest to tryb przejściowy pomiędzy trybem STOP i RUN.
Składa się on z sześciu kroków, których wykonanie bez napotkania błędu wywołuje przejście z trybu STOP do RUN. Kroki te to:
- Zerowanie pamięci obrazu wejść PIPI.
- Inicjalizacja obrazu wyjść zerami, ostatnią wartością lub wartością zadaną.
- Inicjalizacja zmiennych do wartości startowych, włączenie przerwań, wykonanie OB startowych.
- Aktualizacja obrazu wejść PIPI.
- Kolejkowanie przerwań do wykonania w trybie RUN.
- Zezwolenie na zapis obrazu wyjść do wyjść fizycznych sterownika.
Ten tryb jest sygnalizowany przez zielone migające światło diody RUN/STOP na froncie sterownika.
Tryb pracy RUN
W trybie tym sterownik wykonuje cyklicznie program użytkownika a tym samym zapewnia pracę maszyny/instalacji. Cykl ten składa się z czterech kroków wykonywanych w nieskończonej pętli:
- Przepisaniu wypracowanego stanu wyjść z obszaru pamięci wyjść PIPQ sterownika na jego fizyczne wyjścia.
- Sprawdzeniu stanu fizycznych wejść i zapisaniu go do obszaru pamięci wejść PIPI sterownika.
- Wykonaniu programu użytkownika.
- Wykonaniu auto-diagnostyki.
5. Dodatkowo równolegle do cyklu programowego obsługiwana jest komunikacja oraz w każdej chwili może zostać wywołane i obsłużone przerwanie.
Ten tryb jest sygnalizowany przez zielone ciągłe światło diody RUN/STOP na froncie sterownika.
Podstawowe rodzaje bloków programowych
W sterownikach S7-1200 występują cztery rodzaje bloków programowych:
- OB – Blok Organizacyjny – bloki te są wywoływane przez sterownik po zaistnieniu konkretnych warunków, służą do organizacji programu użytkownika i pracy sterownika.
- FC – Funkcja – jest to rozwiązanie bardzo podobne do funkcji wykorzystywanych w innych językach programowania – w takim bloku umieszcza się fragmenty programu wykonujące dane zadanie często powtarzające się w projekcie jak np. sterowanie zaworem.
- FB – Blok funkcyjny – jest to funkcja wzbogacona o powiązany z nią obszar pamięci, pozwala to na budowanie dużo bardziej zaawansowanych logik sterowania. Z takim blokiem musi być powiązany Blok Danych, który pełni rolę tej pamięci. W FB można umieszczać np. sterowanie fragmentem linii technologicznej takimi jak windy towarowe czy stoły rolkowe.
- DB – Blok Danych – to obszary pamięci w których programista definiuje własne zmienne dostępne globalnie dla wszystkich bloków programowych. Bloki te mogą też służyć jako obszary pamięci dla FB, wtedy mamy do czynienia z Blokiem Danych w instancji z Blokiem Funkcyjnym
Bloki Organizacyjne – OB
Bloki te sterują wywoływaniem programu użytkownika, ich zastosowanie powoduje powstanie pewnej struktury w programie użytkownika. Takiego bloku nie można wywołać w innym bloku, ich wywołaniem steruje sam PLC, w zależności od wystąpienia zdarzenia, wywołuje odpowiedni blok OB. Niektóre bloki mają predefiniowane działanie i punkty startowe, inne pozwalają na pewną dowolność w konfiguracji. Poniżej opiszę najważniejsze moim zdaniem bloki OB:
– Cykliczny OB (Program cycle)
Cykliczny OB (Program cycle) zawierający główny program użytkownika, najczęściej występuje pod numerem OB1, w trybie RUN po zakończeniu jego wykonywania CPU natychmiast wywołuje i wykonuje go ponownie. Blok ten ma najniższy priorytet, równy 1. To powoduje iż każdy inny blok przerywa jego działanie. Bloków cyklicznych może być kilka, wywoływane są wtedy jeden po drugim w kolejności zgodnej z ich numerami , a wywołanie ostatniego prowadzi do wywołania pierwszego.
– Startowy OB (Startup)
Startowy OB (Startup) wykonywany jest jednokrotnie w trybie START UP tuż przed blokiem Cyklicznym OB. Najczęściej nadaje mu się numer OB100. W nim umieszcza się instrukcje, które muszą być wywołane jednokrotnie przy rozruchu maszyny, takie jak resety liczników, parametryzacja funkcji, nadpisywanie parametrów wartościami startowymi, czy też inicjalizacja urządzeń peryferyjnych. Tych bloków też może być więcej niż jeden, zostaną wtedy wywołane kolejno według ich numerów.
– Przerwanie cykliczne (Cyclic interrupt)
Przerwanie cykliczne (Cyclic interrupt) są wywoływane co określony przez użytkownika czas np 100ms. Przerywane jest wtedy wykonywanie Cyklicznego OB i wykonywane są instrukcje zawarte w tym bloku. Najczęściej mają one numery od OB30 do OB38 lub powyżej OB200, jednak maksymalna ilość jednocześnie działających bloków tego typu na jednym CPU to cztery.
Przy używaniu więcej niż jednego bloku tego typu można ustawić czas przesunięcia czasowego, dzięki temu nie nastąpi sytuacja w której dwa bloki zgłoszą przerwanie w tym samym czasie. Taka sytuacja miała by miejsce przy blokach wywoływanych co np. 100ms i 1000ms, wtedy co dziesiąte wywoływanie bloku 100ms nachodziłoby na wywołanie bloku 1000ms, wtedy blok o wyższym priorytecie czekałby na zakończenie wykonywania bloku o niższym priorytecie co nie jest optymalne, ustawienie czasu przesunięcia na 30ms dla bloku 1000ms nie dopuściłoby do takiej sytuacji opóźniając pierwsze wywołanie bloku o 30ms.
W tego typu blokach umieszcza się wszystkie operacje wymagające stałej podstawy czasowej a najlepszym przykładem będą regulatory PID, których wywołanie umieszcza się właśnie tutaj.
– Przerwanie sprzętowe (Hardware interrupt)
Przerwanie sprzętowe (Hardware interrupt) są wywoływane gdy nastąpi istotne zdarzenie sprzętowe np. pojawienie się zbocza sygnału na wbudowanych wejściach cyfrowych. Zdarzenia te muszą być zdefiniowane w konfiguracji sprzętowej sterownika wraz z informacją jakie zdarzenie wywołuje który blok przerwania sprzętowego.
Bloków tych może być maksymalnie 50, najczęściej mają one numery od OB40 do OB47 lub powyżej OB200. Mają one wyższy priorytet od przerwań cyklicznych i cyklicznych OB programowych, dlatego przerywają ich pracę w momencie wywołania i są wykonywane jako pierwsze. Dlatego istotne jest by zawierały małą ilość programu, tak by nie zakłócać pracy pozostałych bloków. Bloków tych można użyć do np. obsługi szybkozmiennych sygnałów takich jak enkodery.
– Przerwanie błędu czasowego (Time error interrupt)
Przerwanie błędu czasowego (Time error interrupt) domyślnie przekroczenie czasu zdefiniowanego w konfiguracji sprzętowej sterownika powoduje to przejście CPU w tryb STOP. Ale dodanie tego bloku powoduje w takiej sytuacji jego wywołanie, to daje możliwość wykonania dodatkowego programu i podjęcie decyzji o zatrzymaniu lub kontynuacji pracy CPU.
W projekcie może być tylko jeden taki blok ma on zawsze numer OB80. Ten blok ma najwyższy możliwy priorytet równy 26, dlatego zawsze zostanie on wykonany w pierwszej kolejności.
– Przerwanie błędu diagnostycznego (Diagnostic error interrupt)
Przerwanie błędu diagnostycznego (Diagnostic error interrupt) Zostaje on wywołany gdy któryś z modułów zgłosi przerwanie diagnostyczne. W projekcie może być tylko jeden taki blok ma on zawsze numer OB82.
Funkcja – FC
Ten typ bloku można w uproszczeniu nazwać podprogramem, umieszcza się w nich najczęściej zbiór określonych działań na wartościach wejściowych. Wyniki tych działań są wystawiane na wyjściach bloku. FC nie zawiera żadnej pamięci, pomocnicze dane tymczasowe wykorzystywane wewnątrz bloku są umieszczane na lokalnym stosie danych i są tracone wraz z zakończeniem wykonywania FC.
To powoduje iż najlepiej zastosować tego typu bloki do:
- Standardowych i powtarzalnych działań, takich jak na przykład obliczenia arytmetyczne.
- Zadania funkcyjne, takie jak indywidualne sterowanie dzięki działań logicznych.
Blok FC może być wywoływany wielokrotnie w różnych miejscach programu co znacząco upraszcza programowanie i porządkuje kod.
Blok Funkcyjny – FB
Blok tego typu działa jak podprogram z pamięcią. Przechowuje on zmienne wejściowe, wyjściowe, wyjściowo/wyjściowe i zmienne statyczne w skojarzonym DB lub w instancji DB. Wartości te przechowywane są również po zakończeniu wykonywania FB.
Bloki te są wykorzystywane do zadań sterowania, które nie kończą się w jednym cyklu sterownika. Dobrym przykładem będzie sterowanie przenośnikowym stołem rolkowym, danymi wejściowymi są czujniki, które wykrywają pojawienie się transportowanego detalu. Wyjściem w tym przypadku są styczniki uruchamiające silnik napędzający rolki. A statycznymi informacjami, które muszą być przenoszone między cyklami sterownika to bit pamięci przechowujący informacje iż detal osiągnął pozycje środkową na stole, bit ten zostaje zresetowany dopiero gdy całość detalu opuści stół rolkowy, stan niski pozwoli dopiero na wjazd kolejnego detalu.
W momencie wywoływania FB, otwierany jest skojarzony z nim blok DB. Jeden blok FB może być skojarzony z wieloma blokami DB. Pozwala to na sterowanie wieloma urządzeniami przy pomocy jednego bloku FB, ale z różnymi parametrami przechowywanymi w osobnych DB, po jednym dla wszystkich urządzenia.
Trzymając się przykładu z przenośnikami: raz napisany FB do sterowania przenośnikiem wywoływany jest tyle razy ile jest przenośników, za każdym razem z innym blokiem DB.
Blok danych – DB
DB są umieszczane w projekcie użytkownika po to żeby, przechowywały dane dla bloków zawierających kod programu. Są dwa rodzaje tego typu bloków:
- Globalny DB przechowuje dane dla bloków kodu programu użytkownika. Dostęp do danych zawartych w globalnym DB ma dowolny OB, FB i FC. Można jednak nadać takiemu bloku parametr „tylko do odczytu”
- Instancja DB przechowuje dane dla określonych FB. Struktura danych odzwierciedla parametry wejściowe, wyjściowe, wejściowo/wyjściowe i dane statyczne FB. Pamięć Temp FB nie jest przechowywana w instancji DB. Mimo takiej budowy bloku dostęp do jego zawartości mają i tak wszystkie bloki programowe znajdujące się w projekcie.
Program użytkownika może również przechowywać dane w specjalnych obszarach pamięci CPU:
- pamięci wejść (I)
- pamięci wyjść (Q)
- pamięci bitowej (M).
Zakończenie
Na tym zakończę opis działania S7-1200, dla dociekliwych zostawię jeszcze linki do dokumentacji producenta, w której można znaleźć jeszcze więcej informacji o działaniu tej rodziny sterowników:
https://publikacje.siemens-info.com/pdf/687/S7-1200%20Easy%20Book.pdf