[KURS PLC, CZĘŚĆ 3] Sterowniki SIMATIC S7-1200 (CPU1211C) – Hello World!
Konfiguracja PLC
Przechodzimy do otwartego obszaru roboczego przeznaczonego do konfiguracji sprzętowej. Klikamy w nim na sterownik PLC dodany przez nas do projektu, aby pojawiły się informacje i szczegóły związane z nim. Klikamy następnie na zakładkę Properties dostępną w oknie nadzoru i następnie w zakładce General jest widoczna lista wszystkich opcji.
W poprzednim odcinku został przedstawiony sposób nadania adresu IP podczas połączenia online ze sterownikiem. Drugi sposób nadania adresu IP, to wykorzystanie zakładki Ethernet addresses dostępnej w PROFINET interface. Poniższy rysunek przedstawia konfiguracje adresu IP.
Adres IP jest ustawiany w chwili wgrania projektu (zaprogramowania) do sterownika PLC.
Pozostało nam jeszcze skonfigurować sposób uruchamiania sterownika po włączeniu zasilania. Przechodzimy do zakładki Startup która została przedstawiona na poniższym rysunku.
W polu Startup after POWER ON wybieramy Warm restart – RUN dzięki czemu sterownik przejdzie w tryb RUN.
Parametr Comparison present to actual configuration pozwala określić, czy sterownik może przejść w tryb RUN w przypadku niezgodności konfiguracji sprzętowej (np. braku modułów rozszerzeń dołączonych do sterownika) wgranej do sterownika z aktualnie wykrytą konfiguracją. Wybranie opcji Startup CPU even if mismatch spowoduje przejście sterownika w tryb RUN, jeżeli występuje niezgodności konfiguracji.
Adresowanie symboliczne
Sprawdźmy teraz adresy fizyczne dla wejść cyfrowych oraz wyjść cyfrowych wbudowanych w sterowniku. Przejdźmy do następnej zakładki po General czyli IO tags co przedstawia poniższy rysunek.
Widzimy adresy fizyczne w kolumnie Address dla dwóch wejść analogowych. Następnie dla każdego z sześciu wejść cyfrowych oraz dla czterech wyjść cyfrowych. Adresy fizyczne ustawia się w zakładce Device overview.
Domyślnie wejściom oraz wyjściom cyfrowym przydzielony jest adres startowy 0. Adresy wejść cyfrowych w sterowniku są poprzedzone %I. Sterownik CPU1211C posiada sześć wejść. Adresy fizyczne wyjść cyfrowych są poprzedzone %Q. W przypadku wyjść cyfrowych sterownik ma ich tylko cztery.
Budowa adresu fizycznego na przykładzie %I0.0 wygląda następująco:
%I[numer_bajtu.numer_bitu]
numer_bajtu oraz numer_bitu są wartościami liczbowymi. W chwili obecnej nie znasz jeszcze typów danych, więc teraz przyjmij po prostu, że tak jest.
W naszym przypadku numer_bajtu jest adresem startowym, który określa się w zakładce Device overview. W tej chwili numer bajtu dla wejść cyfrowych wynosi 0 (kolumna I address w zakładce Device overview). W przypadku wyjść cyfrowych numer bajtu również wynosi 0 (kolumna Q address w zakładce Device overview). Wartość numeru bajtu można zmieniać, jeżeli jest taka potrzeba.
Numery bitów zmieniają się od 0 do 5 w przypadku wejść cyfrowych. Wyjść cyfrowych sterownik CPU1211 posiada tylko cztery, dlatego numer bitu zmienia się od 0 do 3.
Odwołanie się w tej chwili do wejścia lub wyjścia w kodzie programu polegałoby teraz na wykorzystaniu adresu fizycznego. Jednak ten sposób nie jest dobrym rozwiązaniem, ponieważ trzeba pamiętać za co odpowiada dany adres. Nie ma bezpośredniego powiązania wejścia/wyjścia sterownika z nazwą. Jest to tzw. adresowanie absolutne. Taki sposób jest bardzo niewygodny w przypadku większych programów. Drugi powód, to zmiana podłączenia np. czujnika z wejścia o adresie %I0.0 na %I0.1 powoduje konieczność zmiany tego adresu w całym kodzie programu.
Rozwiązaniem tej sytuacji jest wykorzystanie adresowania symbolicznego. Do tego celu służą tablice PLC tags.
Utwórzmy teraz tablicę PLC tags, gdzie umieścimy nazwę symboliczną określającą podłączoną diodę LED. W drzewie projektu należy rozwinąć PLC tags i wybrać Add new tag table.Pojawi się nowa tablica, gdzie należy zmienić jej nazwę na LedOutput. Kolejny krok, to otwarcie tej tablicy i zdefiniowanie nazwy LedBlue, co przedstawia poniższy rysunek.
Został utworzony tag o nazwie LedBlue opisujący wyjście fizyczne o adresie Q0.0.
Kod programu
Sterowniki PLC pozwalają tworzyć kod programu w kilku językach. My wykorzystamy język SCL a dokładnie S7-SCL. Jest to język wysokiego poziomu bazujący na Pascalu. Składnia języka dzięki bazowaniu na tym języku bardzo przypomina język C. S7-SCL pozwala szybko, wydajnie oraz efektywnie pisać i testować kod programu. Niezastąpiony w przypadku wykonywania skompilowanych obliczeń i zdań matematycznych jak również statystycznych. Jest on o wiele łatwiejszy do nauki i zrozumienia, jak również zapamiętania osobom początkującym. Osoby mające już styczność z językami wysokiego poziomu nie będą miały najmniejszego problemy z rozpoczęciem pisania kodu programu do sterowników PLC. Za jego pomocą można tworzyć kod programu na wszystkie obecnie dostępne sterowniki PLC rodziny SIMATIC S7.
Tworzenie kodu programu niezależnie od rodzaju języka wiąże się z tworzeniem funkcji oraz zmiennych w celu przechowywania danych. Krótko mówiąc funkcje (nazywane czasem blokiem w przypadku programowania sterowników) operują na danych i służą do realizacji powtarzających się zadań. Oprogramowanie TIA Portal umożliwia utworzenie trzech typów funkcji. Tworzenie każdej z nich jest bardzo podobne. Do wyboru mamy funkcje (zwane też blokami) typu Organization block (OB), Function block (FB), Function (FC).
Kod programu umieścimy w bloku organizacyjnym OB1. Bloki OB to najważniejsze z bloków, ponieważ tworzą interfejs pomiędzy fizycznym sprzętem w sterowniku a kodem użytkownika. Dlatego jest kilka rodzajów tych bloków.
Środowisko TIA Portal domyślnie dodaje blok OB1, w którym można tworzyć kod programu w języku LAD. Teraz napiszemy kod w języku S7-SCL, więc najprościej to zrobić zaczynając od usunięcia bloku OB1 z drzewa projektu klikając prawym klawiszem myszy i wybierając Delete. Dodamy nowy blok danych, co realizuje się poprzez kliknięcie myszką na Add new block. Pojawi się okno przedstawione na poniższym rysunku.
Wybieramy Organization block z lewej strony okna Add new block i zaznaczamy Program cycle. Następnie trzeba wybrać język w którym będziemy tworzyć kod programu. W naszym przypadku będzie to SCL. Do każdego bloku przydzielany jest automatycznie numer, chociaż istnieje możliwość ręcznego nadania numeru. Numery bloków danego typu nie mogą się pokrywać. Podobnie nazwy bloków też nie mogą być takie same dla kilku bloków. Zatwierdzamy wybór klikając OK. Pojawi się okno przedstawione na poniższym rysunku.
Blok Program cycle jest cyklicznie wykonywany cały czas. Blok ten można porównać do pętli nieskończonej while(1) stosowanej podczas programowania mikrokontrolerów.
Po dodaniu bloku OB do projektu zostanie otwarty edytor SCL. Można go podzielić na dwie części. Górna część to sekcja interfejsu gdzie definiuje się zmienne i parametry oraz sekcję kodu, która znajduje się w dolnej części. To w sekcji kodu umieszcza się instrukcje i logikę do zrealizowania. Zdefiniowane zmienne i parametry w sekcji interfejsu wykorzystuje się w sekcji kodu.