S7-300 w praktyce - Część 3: Pierwszy program

| Technika

Jednym z istotnych czynników popularności sterowników PLC z serii SIMATIC jest elastyczność środowiska programistycznego STEP 7, bogate biblioteki programistyczne oraz obsługiwane języki programowania. Bieżący artykuł, który jest ostatnią częścią kursu programowania sterowników S7-300, omawia wykorzystanie środowiska STEP 7 oraz testowanie napisanego programu z wykorzystaniem aplikacji symulującej S7-PLCSIM. Jako przykład opracowano program dla prostej aplikacji sterownika PLC mogącej być wykorzystaną w procesie produkcyjnym.

S7-300 w praktyce - Część 3: Pierwszy program

Dotychczas w serii artykułów wprowadzających do pracy ze sterownikami PLC S7-300 firmy Siemens opisano kolejne kroki pozwalające na połączenie sterownika ze stacją roboczą („S7-300 w praktyce, cz. 1 pierwsze podłączenie” w APA 03/2010) oraz konfigurację sterownika i tworzenie projektu w środowisku STEP 7 („S7-300 w praktyce, cz. 2 przygotowanie projektu” w numerze 04/2010).

Języki programowania sterowników SIMATIC S7-300

Rys. 1. Okno aplikacji SIMATIC Manager z nowym projektem, w oknie danych znajdują się elementy folderu CPU313C/S7 Program/Blocks

W środowisku STEP 7 dostępne są graficzne i tekstowe języki programowania sterowników PLC. Do języków graficznych możliwych do wykorzystania należą:

  • Ladder Diagram (LAD) – schemat drabinkowy wykorzystujący symbole bazujące na układach logiki stykowej.
  • Function Block Diagram (FBD) – schemat bloków funkcyjnych, gdzie występujące elementy są reprezentowane w postaci bloków realizujących odpowiednie funkcje: logiczne, matematyczne, operacje na zegarach, itp.
  • Programming Sequential Control Systems (Graph) – zapis programów w postaci sekwencji następujących po sobie zdarzeń.

Natomiast do tekstowych języków stosowanych w STEP 7 należą:

  • Statement L ist (STL) – lista instrukcji, język niższego rzędu zbliżony do asemblera.
  • Structured Control Language (SCL) – tekst strukturalny podobny do Pascala; język wysokiego rzędu uwzględniający specyficzne wymagania sterowników PLC.

Rys. 2. Cykliczne wykonywanie programu przez CPU

Proste programy łatwo realizuje się z wykorzystaniem języków graficznych LAD lub FBD, tak więc są one najpopularniejsze wśród programistów. Program napisany w LAD/FBD może zostać przełożony na język tekstowy STL. Odwrotna konwersja jest także możliwa, jednak w takim przypadku należy stosować określone reguły programowania. W środowisku STEP 7 jest możliwa automatyczna zamiana kodowania programu użytkownika pomiędzy językami LAD/ FBD a STL.

Projekt w środowisku STEP 7

Wszystkie opisywane etapy pracy dotyczą programowania zestawu startowego oferowanego przez firmę Siemens. W jego skład wchodzą: jednostka sterująca CPU 313C (CPU kompaktowe), zasilacz stabilizowany PS307, komunikujący się z programatorem (komputerem PC) z wykorzystaniem interfejsu MPI.

Po uruchomieniu aplikacji SIMATIC Manager, należy utworzyć nowy projekt – na przykład tak jak opisano w artykule „S7-300 w praktyce, cz. 2 przygotowanie projektu”. Główny folder projektu (/przykład), przedstawiony na rys. 1, zawiera wszystkie dane sterownika. Przystępując do pisania programu należy wiedzieć, że najważniejszy jest folder /SIMATIC 300(1)/CPU313C/S7 Program(1) zawierający dane programu użytkownika, który związany jest z określoną konfiguracją sprzętową.

Na ten folder składają się następujące podfoldery: /Sources – pliki źródłowe programów oraz /Blocks – dane programu i dane konfiguracyjne. Należy podkreślić, że folder / S7 Program(1) nie musi być przypisany do konfiguracji sprzętowej, pozostając jedynym folderem składowym projektu.

Przetwarzanie programu i bloki organizacyjne

Rys. 3. Schemat przykładowej aplikacji

Do sterowania linią produkcyjną lub maszyną wymagany jest odpowiedni program użytkownika, który będzie interpretowany przez jednostkę centralną (CPU). Program użytkownika podzielony jest na sekcje nazywane blokami organizacyjnymi (organization blocks). Program może być wykonywany na kilka różnych sposobów, jednak podstawowy schemat przetwarzania danych i instrukcji (cykl jednostki CPU) jest stały (rys. 2).

Po uruchomieniu zasilania następuje odczyt sygnałów z modułów wejściowych. Następnie wykonywany jest program znajdujący się w bloku OB1 (tzw. blok cykliczny – free cycle), zaś odpowiednie zdarzenia i przerwania powodują wywołanie elementów programu znajdujące się w innych blokach organizacyjnych. Na koniec cyklu jednostki centralnej dokonywane jest przepisanie wartości sygnałów wyjściowych do modułów wyjściowych.

Jak widać, podstawowa sekcja programu użytkownika, wywoływana cyklicznie przez CPU, powinna znaleźć się w bloku organizacyjnym OB1. Jest to najważniejszy blok, który zawsze znajduje się w programie związanym z danym projektem (rys. 1). Sterownik PLC steruje obiektem (procesem produkcyjnym, maszyną) poprzez sygnały wyjściowe wychodzące z modułu wyjść, połączone w odpowiedni sposób z członami wykonawczymi.

Analogicznie do sterownika napływają sygnały z generatorów sygnałów np. czujników dostarczających informacje o stanie sterowanego obiektu, generatorów trajektorii, itp. W sterowniku S7-300 każde binarne wejście i wyjście ma określony adres. Każda grupa kolejnych 8 sygnałów wejściowych lub wyjściowych ma swój numer (pierwsza grupa ma numer 0).

Rys. 4. Określenie własności funkcji F C1

Numery grup mogą być dowolnie określone przez użytkownika. Miejsce każdego sygnału w danej grupie także jest numerowane (0-8). W prezentowanym przykładzie grupy sygnałów wejściowych numerowane są 0 i 1 (16 wejść), natomiast grupy sygnałów wyjściowych mają numery 4 i 5 (16 wyjść).

Sygnały reprezentowane są w programie użytkownika przez zmienne, które standardowo mają nazwy mówiące o rodzaju sygnału: Q (wyjście) lub I (wejście) oraz numerze grupy i miejsca w grupie danego sygnału. Przykładowo zmienna I0.1 reprezentuje sygnał wejściowy znajdujący się w bajcie 0 (pierwsza grupa 8 wejść) i bicie 1 (drugie wejście w grupie). Na modułach wejściowych i wyjściowych znajdują się opisy miejsc dostarczania sygnałów wejściowych i odbierania sygnałów wyjściowych.

Przykładowa aplikacja sterownika

Przykładowa aplikacja, dla której zostanie napisany prosty program, to sterowanie serwomechanizmem hydraulicznym, składającym się z siłownika i zaworu rozdzielającego pięciodrogowego, dwupołożeniowego (5/2). Uproszczony schemat został przedstawiony na rys. 3. Takie rozwiązane jest spotykane w prasach hydraulicznych.

Ruch siłownika zależy od sygnałów pochodzących od przycisku startowego S1 i czujnika bezpieczeństwa B0 (może być to informacja o zamknięciu kurtyny zabezpieczającej prasę przed nieodpowiednim dostępem). Działanie układu jest następujące: w przypadku pojawienia się jednocześnie sygnałów S1 i B0 (logiczna wartość 1) pojawia się na 10 sekund sygnał Y0 sterujący rozdzielaczem.

Rys. 5. Edytor programu LAD/STL/FBD w bloku funkcji FC1

Powoduje to ruch tłoka siłownika. Po upływie zadanego czasu lub gdy brakuje jednego z sygnałów S1 lub B0 (logiczna wartość 0) tłok siłownika wraca w położenie początkowe. Ponieważ przedstawiona aplikacja nie wymaga złożonych obliczeń i jest prosta w opisie, program dla niej zostanie zrealizowany w języku FBD.

Edycja programu

Krótkie programy mogą być umieszczone od razu w bloku organizacyjnym OB1. Jednak, w celu uporządkowania struktury programu, lepiej podzielić zadanie na podzadania i związane z nimi podprogramy umieszczać w blokach funkcji a następnie wywoływać je w blokach organizacyjnych. Znacznie poprawia to czytelność programu. Na początku do folderu /Blocks (rys. 1) należy dodać blok funkcji.

W tym celu należy wybrać z menu głównego opcje Insert → S7 Block → Fuction. Otworzy się okno do określenia własności nowo tworzonej funkcji (rys. 4), w której znajdą się najważniejsze instrukcje programu. W tym oknie istotny jest wybór języka programowania funkcji, czyli FBD w przypadku rozważanej aplikacji, co ustawia się za pomocą listy rozwijalnej Created in Language (zakładka General – Part 1). Utworzenie nowej funkcji zatwierdza się przyciskiem OK.

Rys. 6. Program w bloku funkcji FC1

Nowa funkcja pokaże się jako blok FC1 w katalogu /Blocks. Dwukrotne kliknięcie na blok FC1 powoduje otwarcie okna edytora programu LAD/STL/FBD (rys. 5) w określonym wcześniej bloku języku programowania. W oknie programu można edytować program użytkownika. Program składa się z kolejno numerowanych linii o nazwie Network – np. Network 1. Możliwe jest dodanie komentarzy do każdej linii oraz do danego bloku.

Program dla rozważanej aplikacji będzie się składał z dwóch linii. Z biblioteki pogrupowanych instrukcji ze zbioru Timers do pierwszej linii należy przeciągnąć element S_PULSE (Step Pulse). Jest to tzw. układ czasowy, dający na wyjściu Q sygnał o wartości logicznej 1 przez zdefiniowany okres, przy aktywnym wejściu S.

W przykładzie nadano temu układowi nazwę T1, która późnej może być wykorzystywana jako nazwa zmiennej w kolejnych liniach programu. Czas trwania impulsu określany jest na wejściu TV w postaci stałej o specjalnej składni S5T#Czas np.S5T#10s2ms. Okres definiowany jest przez użytkownika, natomiast możliwe jednostki to godziny (h), minuty (m), sekundy (s) i milisekundy (ms).

Po wybraniu wejścia TV otwiera się pole edycyjne, w którym należy wpisać odpowiednią wartość (dla opisanej aplikacji jest to S5T#10s). Następnie należy dodać element realizujący koniunkcję (element AND). Ponieważ jest on często stosowany, skrót do niego () znajduje się na pasku przycisków szybkiego dostępu. Element ten należy wybrać po zaznaczeniu wejścia S układu czasowego T1.

Posiada on dwa wejścia, które powinny zostać połączone z wejściami binarnymi sterownika, reprezentowanymi przez zmienne o nazwach I0.0 (sygnał związany z przyciskiem Start, rys. 3) i I0.1 (sygnał związany z czujnikiem B0, rys. 3). W kolejnym kroku zostanie dodana następna linia programu (Network 2) poprzez naciśnięcie przycisku New network () znajdującego się na pasku przycisków szybkiego dostępu, lub wybranie z menu głównego opcji Insert → Network.

Rys. 7. Program w bloku organizacyjnym OB1

W nowej linii należy wstawić element przepisania wyniku działania logicznego na wyjście (). Nazwa tego elementu powinna mieć nazwę adresu wyjścia z modułu wyjść, na którym powinien pojawić się sygnał wyjściowy. W rozważanym przypadku sygnał wyjściowy inicjujący pracę sterownika (Y0) powinien pojawić się na wyjściu o adresie Q4.0.

Na wejściu bloku przepisania należy wpisać zmienną T1 (wynik działania układu czasowego T1). Po napisaniu programu w FC1 należy zapisać go, wybierając z menu głównego opcje File → Save. Program znajdujący się w bloku funkcyjnym FC1 przedstawiono na rys. 6. Samo utworzenie bloku funkcji i napisanie w nim programu nie jest wystarczające. Realizowany będzie on przez sterownik, jeśli znajdzie się w jednym z bloków organizacyjnych.

W przypadku przedstawionej aplikacji program wywoływany jest cyklicznie przez jednostkę sterującą, tak więc powinien być wywoływany w bloku OB1. Analogicznie jak edytowano blok FC1 należy przejść do trybu edycji bloku OB1. Pojawi się okno edytora kodu podobne do przedstawionego na rys. 5. Należy przełączyć język programowania na FBD, wybierając opcje View → FBD. Z biblioteki pogrupowanych instrukcji, z grupy „FC blocks” wybrać blok FC1 i wstawić do pierwszej linii (Network 1), tak jak na rys. 7. Następnie zapisać program.

Testowanie programu

Rys. 8. Okno aplikacji symulującej działanie sterownika S7-PLCSIM, na dwa pierwsze wejścia binarne podane są sygnały 1

Testowanie programu można wykonać na dwa sposoby. Pierwszym z nich jest zapisanie programu na rzeczywistym sterowniku podłączonym do programatora. Drugim, znacznie przyspieszającym pracę, jest wykorzystanie aplikacji S7-PLCSIM do symulacji pracy sterowników SIMATIC, która została opisana w poprzednim artykule „S7- 300 w praktyce, cz. 2 przygotowanie projektu”.

Aplikacja ta powinna pracować równolegle ze środowiskiem SIMATIC Manager. Po uruchomieniu symulatora S7-PLCSIM (rys. 8) należy przejść do menu głównego aplikacji Simatic Manager, zaznaczyć wszystkie bloki projektu i wybrać opcje PLC → Download lub nacisnąć przycisk (). Spowoduje to zapisanie utworzonego programu w symulatorze.

Należy zaznaczyć, że analogicznie wgrywany może być program do rzeczywistego sterownika. Następnie należy uruchomić wirtualny sterownik w aplikacji S7-PLCSIM, zaznaczając w oknie modułu CPU opcję RUN. Dodatkowo, żeby zmienić wartości sygnałów wejściowych, należy wyświetlić okno IB – stan wejść binarnych. Można w nim zmienić stan każdego z wejść sterownika, zaznaczając lub odznaczając pole wyboru związane z danym wejściem.

Rys. 9. Okno edytora LAD/STL/FBD podczas symulacji, na zielono zaznaczono aktywne elementy i sygnały

Podgląd działania programu możliwy jest w edytorze LAD/STL/FBD dla każdego z bloków. W tym celu należy z menu głównego wybrać opcje Debug → Monitor lub nacisnąć przycisk Monitor (on/off ) (). Spowoduje to przejście edytora w tryb podglądu programu w trakcie pracy sterownika, co pokazano dla bloku FC1 na rys. 9. Na zielono zaznaczany jest przepływ sygnałów oraz aktywne elementy. W tym trybie możliwy jest także podgląd wartości zmiennych.

Podsumowanie

W artykule opisano przygotowanie i testowanie programu napisanego w języku FBD dla sterownika S7-300, opracowanego dla przykładowej aplikacji występującej w procesie produkcyjnym. Kończy on cykl artykułów stanowiących wstęp do pracy ze sterownikiem S7-300 firmy Siemens oraz do programowania w środowisku programistycznym STEP 7.

Jakub Możaryn