W poprzednim wpisie został utworzony nowy projekt w narzędziu programistycznym TIA Portal oraz została wykonana konfiguracja sprzętowa. Uruchomiliśmy symulator PLCSIM (wirtualny sterownik), który został zaprogramowany. Jednak projekt nie zawiera żadnego kodu programu. W takiej sytuacji sterownik nic nie robi. Dzisiaj napiszemy pierwszy program, którym zaprogramujemy symulator PLCSIM. Skorzystamy z tego samego projektu, czyli FirstProject. Kod programu będzie odpowiedzialny za wysterowanie wyjścia cyfrowego.
Pierwszy program – Symulator PLCSIM
Sterownik odbiera sygnały zewnętrzne przez wejścia cyfrowe lub analogowe. Natomiast do kontroli elementów zewnętrznych wykorzystuje wyjścia cyfrowe. Każde wejście oraz wyjście w sterowniku posiada swój adres fizyczny, który musi być unikalny. Aktualne adresy fizyczne można sprawdzić w konfiguracji sprzętowej sterownika (otwieramy z drzewa projektu Device configuration) w zakładce Device overview.
Domyślnie wejściom oraz wyjściom cyfrowym przydzielony jest adres startowy 0.Można to także sprawdzić w oknie inspektora otwierając zakładkę Propertis i następnie IO tags. 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.
Adresowanie symboliczne
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. 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 InputOutput. Kolejny krok, to otwarcie tej tablicy i zdefiniowanie nazwy, która pozwoli nam w prosty i czytelny sposób odnosić się do fizycznego adresu wyjścia cyfrowego.
Został utworzony tag o nazwie MyOutput opisujący wyjście fizyczne o adresie Q0.0. Otwórz teraz jeszcze raz konfigurację sprzętową sterownika i sprawdzić w oknie inspektora otwierając zakładkę Propertis i następnie IO tags jak wygląda to teraz.
Pierwszy program
Kod pierwszego programu w języku S7-SCL umieścimy w bloku organizacyjnym OB1. Bloki organizacyjne są pewnego rodzaju połączeniem pomiędzy sprzętem w sterowniku a programem pisanym przez programistę. Blog organizacyjny OB1 jest cyklicznie wykonywany (pętla nieskończona) podczas pracy sterownika PLC. Blok OB1 (nazwany Main) znajdujący się w folderze Program blocks zostaje domyślnie dodany do projektu. Jednak po otwarciu tego bloku widzimy Network 1.
W networkach umieszcza się elementy języka LAD. My będziemy programować w języku S7-SCL, więc należy ten blok OB1 usunąć z projektu. Zaznaczmy ten blok w projekcie klikając lewym przyciskiem myszki i naciskamy na klawiaturze przycisk Delete. Pojawi się okno Confirm deletion gdzie naciskamy przycisk Yes.
Teraz dodamy blok OB1 do projektu jeszcze raz. W folderze Program blocks znajdującym się w drzewie projektu wybieramy Add new block
W otwartym oknie Add new block wybieramy Organization block i następnie Program cycle. Należy wybrać język SCL i nacisnąć przycisk OK.
Dodany do projektu blok OB1 należy otworzyć (klikając dwukrotnie). W pierwszej linii wpiszemy nazwę symboliczną wyjścia cyfrowego.
Po wpisaniu kilku pierwszych liter pojawia się podpowiedź. Jest to duże ułatwienie, gdyż nie ma potrzeby wpisywania całych nazw. Wystarczy kilka pierwszych liter i następnie można kursorami na klawiaturze wybrać potrzebną w danej chwili nazwę tagu lub zmiennej. System podpowiedzi można uruchomić w dowolnym momencie, wystarczy nacisnąć na klawiaturze kombinację CTRL + SPACJA.
Cały kod programu, który należy umieścić w OB1 to:
„MyOutput” := TRUE;
Zgodnie z wcześniejszą zapowiedzią kod programu ustawia wyjście cyfrowe (w naszym przypadku MyOutput) w stan wysoki. Szczegółowy opis poszczególnych składników tej linii kodu już w następnym wpisie. Wtedy też przeprowadzimy kompilację tego kodu i programowanie wirtualnego sterownika PLCSIM.
Praca domowa: Umieść w utworzonej tablic PLC tag o nazwie InputOutput jeszcze jedną nazwę symboliczną dowolnie wybranego wyjścia cyfrowego. Napisz w komentarzu, który adres fizyczny wyjścia cyfrowego oraz jaka nazwę wybrałeś. Wykorzystamy to w następnych wpisach.
Kurs wideo
Więcej na temat programowania w języku SCL znajdziesz w kursie Sterownik PLC w praktyce: