AUTOMATYKA I REGULACJA AUTOMATYCZNA LABORATORIUM

Podobne dokumenty
Standardowe bloki funkcjonalne

Konfigurowanie sterownika BX9000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy ze sterownikiem BX9000

Konfigurowanie sterownika CX1000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy z sterownikiem CX1000

Konfigurowanie sterownika CX9000 firmy Beckhoff wprowadzenie

Tworzenie prostego programu w językach ST i LD

Konfigurowanie sterownika CP6601 firmy Beckhoff wprowadzenie

Konfigurowanie sterownika BC8150 firmy Beckhoff wprowadzenie

Instrukcja uruchomienia sterownika CX9000 firmy Beckhoff. 1. Konfiguracja pakietu TwinCAT do współpracy z sterownikiem CX9000

AUTOMATYKA I REGULACJA AUTOMATYCZNA LABORATORIUM

AUTOMATYKA I REGULACJA AUTOMATYCZNA LABORATORIUM

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie

AUTOMATYKA I REGULACJA AUTOMATYCZNA LABORATORIUM

AUTOMATYKA I STEROWANIE LABORATORIUM

TwinCAT 3 konfiguracja i uruchomienie programu w języku ST lokalnie

Automatyka i Regulacja Automatyczna, PRz, r.a. 2011/2012, Żabiński Tomasz

Sterowniki programowalne (PLC, PAC), norma IEC61131, proces konfiguracji, programowania i uruchamiania sterowników.

ŚRODOWISKO TWINCAT DLA STEROWNIKA CX9000 BECKHOFF

CoDeSys 3 programowanie w języku FBD

Podstawy obsługi programów TwinCAT System Manager i TwinCAT PLC Control

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

TwinCAT System. Pierwsze kroki w TwinCAT System Manager i TwinCAT PLC Control. Luty 2007 TwinCAT PLC - Tworzenie prostego programu 1

Instrukcja do oprogramowania ENAP DEC-1

CoDeSys 3 programowanie w języku drabinkowym LD

Elementy oprogramowania sterowników. Instrukcje podstawowe, funkcje logiczne, układy czasowe i liczenia, znaczniki

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

Opis szybkiego uruchomienia programu APBSoft

Sterownik kompaktowy Theben PHARAO II

EC4P Pierwszy program w 6 krokach

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy

Pierwsze kroki z easy Soft CoDeSys Eaton Corporation. All rights reserved.

Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU

Instrukcja obsługi Konfigurator MLAN-1000

Programowanie sterowników

UKŁADY KOMBINACYJNE WPROWADZENIE. przerzutniki, bramki ze sprzężeniami zwrotnymi. Układ przełączający Y t. Q t stan wewnętrzny

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA

Ćwiczenia z S S jako Profinet-IO Controller. FAQ Marzec 2012

FAQ: /PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200

KOMUNIKACJA W SIECIACH MIKROKOMPUTEROWYCH

Podstawy programowania w środowisku Totally Integration Automation Portal

JĘZYKI PROGRAMOWANIA STEROWNIKÓW

Instrukcja instalacji i obsługi modemu ED77 pod systemem operacyjnym Windows 98 SE (wydanie drugie)

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

Zaliczenie - zagadnienia (aktualizacja )

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

MultiBoot Instrukcja obsługi

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp

Product Update Funkcjonalność ADR dla przemienników Częstotliwości PowerFlex 750 oraz 525 6

Spis treści. 1 Moduł RFID (APA) 3

Podstawy programowania PLC w języku drabinkowym - ćwiczenie 5

Opracował: Jan Front

PIERWSZY PROGRAM W JĘZYKU FBD

Poniższy przykład przedstawia prosty sposób konfiguracji komunikacji między jednostkami centralnymi LOGO! w wersji 8 w sieci Ethernet.

Sterowniki Programowalne (SP)

CoDeSys 3 programowanie w języku CFC

Kurs Podstawowy S7. Spis treści. Dzień 1

Instrukcja wgrywania aktualizacji oprogramowania dla routera Edimax LT-6408n

Laboratorium Elektrycznych Systemów Inteligentnych

Gromadzenie danych. Przybliżony czas ćwiczenia. Wstęp. Przegląd ćwiczenia. Poniższe ćwiczenie ukończysz w czasie 15 minut.

instrukcja instalacji modemu SpeedTouch 605s

UKŁADY SEKWENCYJNE. Wprowadzenie. Napełnianie i opróżnianie. Programowanie. Zbiornik z trzema zaworami. Układ Start Stop. Podnośnik góra dół.

PROGRAMOWALNE STEROWNIKI LOGICZNE

Ćwiczenia z S Komunikacja S z przyciskowym panelem HMI KP300 PN. FAQ Marzec 2012

Galileo v10 pierwszy program

Kurs SIMATIC S7-300/400 i TIA Portal - Podstawowy. Spis treści. Dzień 1. I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503)

Konfiguracja dostępu zdalnego z wykorzystaniem tunelu VPN pomiędzy SCALANCE S623 a SOFTNET Security Client

Rysunek 1: Okno z lista

3. Sieć PLAN. 3.1 Adresowanie płyt głównych regulatora pco

Instrukcja podłączenia i konfiguracji BLUETOOTH NX. Interfejs. (instrukcja dostępna także na ver

LABORATORIUM PRZEMYSŁOWYCH SYSTEMÓW STEROWANIA

Sterownik Visilogic V260

Podręcznik użytkownika programu. Ceremonia 3.1

1. Wstęp. Wizualizacja połączenia

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy. Przebieg ćwiczenia

INSTRUKCJA UZUPEŁNIAJĄCA DO CENTRAL DUPLEX ZE STEROWANIEM RD4

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

OPTIMA PC v Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA ELFON. Instrukcja obsługi. Rev 1

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

FAQ: /PL Data: 2/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem LOGO!

Zdalny podgląd wizualizacji z panelu XV100 przez przeglądarkę internetową (WebServer)

PROGRAMOWANIE Z LICZNIKIEM CYKLI

1. Aplikacja LOGO! App do LOGO! 8 i LOGO! 7

Dokumentacja sterownika mikroprocesorowego "MIKSTER MCC 026"

AKTUATOR DO SYSTEMU DUO Q

Przykładowa konfiguracja komunikacji pomiędzy oprogramowaniem Wonderware i Codesys z wykorzystaniem sieci LAN lub modułu GSM

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

PLUTO Sterownik bezpieczeństwa Skrócona Instrukcja obsługi oprogramowania. PlutoProgrammingManualPL_v7A.pdf 1

1. Podstawowe wiadomości Możliwości sprzętowe Połączenia elektryczne Elementy funkcjonalne programów...

1. SFC W PAKIECIE ISAGRAF 2. EDYCJA PROGRAMU W JĘZYKU SFC. ISaGRAF WERSJE 3.4 LUB 3.5 1

PLC1: Programowanie sterowników logicznych SIEMENS SIMATIC S7-300/400 - kurs podstawowy

Konfiguracja i programowanie PLC Siemens SIMATIC S7 i panelu tekstowego w układzie sterowania napędami elektrycznymi. Przebieg ćwiczenia

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

1.1. Wymogi bezpieczeństwa Pomoc techniczna TIA Portal V13 instalacja i konfiguracja pakietu...18

MultiBoot Instrukcja obsługi

INSTRUKCJA OBSŁUGI SUPLEMENT

Instrukcja obsługi programu CMS Dla rejestratorów HANBANG

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Transkrypt:

AUTOMATYKA I REGULACJA AUTOMATYCZNA LABORATORIUM Programowanie sterownika BX9000 firmy Beckhoff wprowadzenie 1. Konfiguracja pakietu TwinCAT do współpracy ze sterownikiem BX9000 2. Tworzenie prostego programu w języku ST wprowadzenie 3. Standardowe bloki funkcyjne język ST Elementy dwustanowe Elementy detekcji zbocza Liczniki Czasomierze 4. Programowanie zadań sekwencyjnych 4.1. Realizacja schematów sekwencyjnych w języku ST 4.2. Realizacja schematów sekwencyjnych w języku SFC Przygotowanie do ćwiczenia: - pobranie, zainstalowanie i zapoznanie się z pakietami TwinCAT oraz Beckhoff Information System z lokalizacji www.beckhoff.pl (wprowadzając dane na stronie www należy podać informację, że osoba pobierająca jest studentem PRz), - zapoznanie się z dokumentacją sterownika BX9000 umieszczoną w Beckhoff Information System lub na stronie www.beckhoff.pl, - zapoznanie się materiałami pomocniczymi umieszczonymi na stronie www.tomz.prz-rzeszow.pl, - opanowanie podstaw programowania w języku ST, - zrealizowanie zadań zamieszczonych we wprowadzeniu (napisanie programów) i ich przetestowanie w trybie symulacji w pakiecie TwinCAT. W sprawozdaniu należy zamieścić: - kody zrealizowanych programów, - opis działania wykorzystywanych elementów programowych np. standardowych bloków funkcyjnych (raport powinien zawierać wyniki dla wyczerpującej liczby przypadków testujących działanie poszczególnych elementów programowych), sekwencji wywoływania akcji w języku SFC itp., - wnioski i spostrzeżenia. Literatura - J. Kasprzyk, Programowanie sterowników przemysłowych, ISBN 83-204-3109-3, WNT 2005 - T.Legierski, J.Kasprzyk, J.Wyrwał, J.Hajda, Programowanie sterowników PLC, Pracownia Komputerowa Jacka Skalmierskiego - materiały pomocnicze na stronie www.tomz.prz-rzeszow.pl (głównie: Sterowniki_IEC61131-3.pdf) - Beckhoff Information System do pobrania ze strony www.beckhoff.pl oraz dokumentacje ze strony www.beckhoff.pl 1

Stanowisko laboratoryjne ze sterownikiem BX9000 Sterownik BX9000 należy do grupy urządzeń określanych w nomenklaturze firmy Beckhoff jako Bus Terminal Controllers. Ze względu na wyposażenie i wydajność BX9000 lokuje się pomiędzy serią BC (np. BC8150) a CX1000 (komputery wbudowane tzw. Embedded-PC). Interfejs CANopen Diody zasilania Interfejs Ethernet programowanie, konfiguracja, komunikacja Szyna K-Bus Złącze zasilania sterownika Interfejs szeregowy RS232/RS485 programowanie, konfiguracja, komunikacja (dwa porty szeregowe w jednym złączu DB9) Złącza zasilania dla układów we/wy podłączonych do szyny K-Bus np. KL2408 Przełącznik nawigacyjny Wyświetlacz 2 x 16 linii Realizacja ćwiczenia 1. Konfiguracja pakietu TwinCAT do współpracy z sterownikiem BX9000 1.1. Zdefiniowanie połączenia AMS dla BX9000 interfejs Ethernet Uruchomienie systemu TwinCAT w trybie konfiguracji Wykorzystując ikonę TwinCAT znajdującą się na pasku zadań Windows, uruchomić okno TwinCAT System Properties i wybrać opcję Config. Klawisz myszy otwiera okno Tryb konfiguracji Aktualny tryb pracy TwinCAT jest sygnalizowany odpowiednim kolorem ikony programu: 2

- zielony uruchomiony, - czerwony zatrzymany, - niebieski - tryb konfiguracji, - żółty - w trakcie uruchamiania. Uruchomienie TwinCAT w trybie konfiguracji zapewnia, dostęp do zdefiniowanego AMS Router w kolejnych etapach konfigurowania. Konfiguracja połączenia sieciowego Komunikacja ze sterownikiem za pośrednictwem interfejsu Ethernet wymaga odpowiedniej konfiguracji sieci. Protokoły sieciowe sterownika oraz komputera PC z pakietem TwinCAT muszą być tak skonfigurowane, aby urządzenia znajdowały się w tej samej sieci (odpowiedni adres IP i maska podsieci aby zweryfikować poprawność konfiguracji można wykorzystać instrukcję ping). Zadanie 1.1. Okreslić przy pomocy przełącznika nawigacyjnego aktualny numer IP sterownika. Zweryfikować możliwość zrealizowania połączenia ze sterownikiem rozkaz ping z komputera PC. Jeżeli sterownik odpowiada na rozkaz ping, należy przejść do punktu Konfiguracja połączenia w pakiecie TwinCAT, chyba, że prowadzący zadecyduje inaczej. W przypadku pierwszego uruchomienia sterownika posiada on domyślny adres IP (172.16.21.20) oraz domyślną maskę podsieci (255.255.0.0). W takim przypadku należy skonfigurować połączenie sieciowe komputera PC tak, aby urządzenia znajdowały się w tej samej sieci, bądź zmienić adres IP i maskę sterownika przy pomocy przełącznika konfiguracyjnego. Sprawdzenie aktualnego adresu IP sterownika przy pomocy przełącznika nawigacyjnego Przełącznik nawigacyjny Aby uzyskać dostęp do menu głównego należy, na około 3 sekundy, wcisnąć przycisk PRESS. Przyciski LEFT i RIGHT pozwalają na przeglądanie opcji wybranego menu, zaś przyciski DOWN i UP, odpowiednio na wejście (DOWN) do podmenu i powrót do menu nadrzędnego (UP). Po aktywowaniu menu głównego na wyświetlaczu pojawi się napis MAIN. Dwukrotne naciśnięcie RIGHT powoduje zmianę napisu na ETHERNET. Naciskając DOWN możliwe jest przeglądanie parametrów sieci rozpoczynając od adresu MAC karty sieciowej. Aby przejść do parametrów adresu IP, należy nacisnąć odpowiednią ilość razy 3

przycisk RIGHT, aż do pojawienia się na wyświetlaczu odpowiednich napisów np. IP ADDRESS albo IP MASK. Aby wyjść z opcji ETHERNET należy nacisnąć przycisk UP a następnie, aby opuścić tryb konfiguracji należy nacisnąć PRESS przez około 3 sek. W prawidłowo skonfigurowanej sieci, sterownik (dla odczytanego adresu IP) powinien odpowiadać na rozkaz ping wysyłany z komputera PC. Konfiguracja połączenia w pakiecie TwinCAT Wykorzystując ikonę TwinCAT znajdującą się na pasku zadań Windows, uruchomić okno TwinCAT System Manager. Klawisz myszy otwiera okno Konfiguracja projektu: menu File opcja New from Template... - wybór typu projektu odpowiadającego sterownikowi BX9000. W celu zdefiniowania połączenia, w oknie General dla SYSTEM-Configuration należy wybrać opcję Choose Target... Następnie uruchomić procedurę automatycznego wyszukiwania sterowników znajdujących się w sieci Ethernet przycisk Search (Ethernet)... W oknie Add Route Dialog określić typ warstwy transportowej (Transport Type) jako TCP/IP a następnie uruchomić opcję wyszukiwania rozgłoszeniowego przycisk Broadcast Searach. Jeżeli sterownik zostanie odnaleziony, w oknie Add Route Dialog pojawi się odpowiedni wpis zawierający nazwę urządzenia (Host Name) oraz informacje o adresach IP, AMS oraz wersji wykrytego urządzenia. 4

Brak symbolu X w polu Connected oznacza, że nie odbyło się logowanie do sterownika. W polu Router Name (Target) możliwa jest zmiana nazwy sterownika (np. BX_000000), która będzie w przyszłości identyfikowała skonfigurowane połączenie. W kolejnym kroku należy określić Address Info jako IP Address oraz nacisnąć przycisk Add Route. W efekcie pojawi się okno logowania, w którym należy nacisnąć przycisk OK dla użytkownika Administrator bez hasła. Gdy logowanie się powiedzie, w polu Connected pojawi się symbol X. W kolejnym kroku należy zamknąć okno Add Route Dialog przy pomocy przycisku Close oraz wybrać zdefiniowane połączenie dla aktualnego projektu. W tym celu należy zaznaczyć nazwę zdefiniowanego połączenia w oknie Choose Target System i wybór zatwierdzić przyciskiem OK. 5

Jeżeli odpowiednie urządzenie nie zostanie wykryte, należy sprawdzić czy sterownik jest dostępny w sieci np. instrukcją ping i odpowiednio skonfigurować komputer PC (adresy IP, maska sieci). W przypadku, gdy komunikacja ze sterownikiem powiodła się, w systemie TwinCAT dodany zostanie obiekt AMS Router identyfikujący zdefiniowane połączenie. Informacje o aktualnie istniejących AMS Router, można uzyskać wykorzystując ikonę TwinCAT znajdującą się na pasku zadań Windows i uruchamiając okno TwinCAT System Properties. Klawisz myszy otwiera okno Wybór opcji Properties Dodany AMS Router W oknie Remote Computers powinien znajdować się opis wpisany uprzednio jako nazwa sterownika. Tak skonfigurowane połączenie może być wykorzystywane w przyszłości bez konieczności ponownego definiowania struktury komunikacyjnej. Po wykonaniu powyższych operacji, system TwinCAT jest gotowy do współpracy ze sterownikiem BX9000. Aktualny tryb pracy systemu jest sygnalizowany w pasku statusu okna TwinCAT System Manager, jak pokazano na poniższych rysunkach. W celu wyszukania urządzeń we/wy podłączonych do szyby K-bus, system powinien znajdować się w trybie konfiguracji. 6

Nazwa połączenia Stan połączenia (RTime kolor zielony połączenie aktywne) Stan połączenia (Timeout kolor żółty przerwa w komunikacji) Stan połączenia (Config Mode kolor niebieski tryb konfiguracji) Wykrywanie urządzeń połączonych z sterownikiem (tutaj dotyczy szyny K-Bus) Automatyczne wykrywanie urządzeń możliwe jest w trybie konfiguracji, jeżeli System Manager jest w innym trybie należy dokonać przełączenia. Przełączenie w tryb konfiguracji W celu wykrycia urządzeń podłączonych do szyny K-bus należy uruchomić (prawy klawisz myszy) funkcję Scan Boxes... dla BX-Device znajdującego w gałęzi I/O Devices. 7

Lista automatycznie rozpoznanych modułów znajduje się w lokalizacji BX Device w gałęzi KBus-Interface. Jeżeli nie wszystkie urządzenia fizycznie podłączone do szyny K-bus (np. KL2408) zostały wykryte, należy ponownie uruchomić funkcję Scan Boxes... dla BX-Device (prawy klawisz myszy). Przykładowa konfiguracja Jeżeli aktualne parametry połączenia sieciowego w sterowniku różnią się od domyślnych (IP 172.16.21.20, maska podsieci 255.255.0.0) należy je wprowadzić do projektu. Uzyskuje się to przy pomocy przycisku Upload umieszczonego na zakładce BX9000 w oknie pola BX9000 w gałęzi I/O Devices i Ethernet (BX9000) co pokazano na poniższym rysunku. Gdy konfiguracja rzeczywista jest zgodna z automatycznie rozpoznaną, należy aktywować strukturę w sterowniku przy pomocy przycisku Activate configuration i uruchomić System Manager w trybie pracy (Run-Mode). Aktualizacja konfiguracji w sterowniku Jeżeli aktualizacja konfiguracji i uruchomienie System Manager w trybie pracy powiedzie się, na pasku statusu pojawi się, na zielonym tle, napis RTime. 8

W ostatnim kroku utworzony projekt należy zapisać na dysku pod wybraną nazwą. 5. Tworzenie prostego programu w języku ST wprowadzenie Aby utworzyć program PLC należy uruchomić narzędzie TwinCAT PLC Control. Klawisz myszy otwiera okno PLC Control 2.1.Wybór obiektu docelowego W pierwszym etapie należy określić sterownik, dla którego tworzony będzie program oraz sposób komunikacji z urządzeniem. Z menu File wybrać opcję New, następnie określić docelową platformę w pojawiającym się oknie dialogowym. W przypadku, gdy połączenie ze sterownikiem skonfigurowano jak w punkcie 1, jako platformę docelową należy wybrać BCxx50 or BX via AMS. Podstawowe biblioteki (standard.lbx) związane z wybraną platformą zostaną automatycznie dołączone do projektu. W kolejnym kroku należy określić język, w jakim będzie tworzony program. Wybór języka programowania 9

Pakiet TwinCAT PLC Control umożliwia programowanie w pięciu językach zgodnych ze standardem IEC 61131-3 oraz dodatkowym językiem CFC. Na tym etapie możliwe jest również określenie typu obiektu (Type of POU Program Organization Unit jednostka organizacyjna programu), jaki będzie tworzony: program (Program), blok funkcyjny (Function Block) lub funkcja (Function). Dla potrzeb dalszych przykładów należy wybrać typ obiektu jako Program oraz język ST. Dostępne języki programowania IL (Instruction List) tekstowy język programowania będący odpowiednikiem języka typu assembler, którego zbiór instrukcji obejmuje operacje logiczne, arytmetyczne, relacji, jak również funkcje przerzutników, czasomierzy, liczników itp.. LD (Ladder Diagram) graficzny język programowania, który swoją strukturą przypomina stykowe obwody przekaźnikowe. Dopuszcza się w nim użycie funkcji arytmetycznych, logicznych, porównań i relacji jak również bloków funkcyjnych: przerzutników, czasomierzy, liczników, regulatora PID czy bloków programowych. FBD (Function Block Diagram) graficzny język programowania będący odpowiednikiem schematów przepływu sygnału dla obwodów logicznych przedstawionych w formie połączonych bramek logicznych oraz bloków funkcyjnych takich jak w języku LD. ST (Structured Text) tekstowy język programowania będący odpowiednikiem języka algorytmicznego wysokiego poziomu (np. C), zawierający struktury programowe takie jak np. If... then... else... end_if Case... of... end_case For... to... do... end_for While... do... end_while Repeat... until... end_repeat SFC (Sequential Function Chart) - graficzny język pozwalający na opisywanie zadań sterowania sekwencyjnego za pomocą grafów zawierających etapy (kroki) i warunki przejścia (tranzycje) między etapami. Grafy SFC obrazują strukturę programu, zaś poszczególne jego elementy są programowane w wybranych językach: IL, LD, FBD lub ST. CFC (Continuous Function Chart) graficzny język programowania zbliżony do FBD. 2.2.Przykład prostego programu w języku ST ZADANIE. Zrealizować w języku ST koniunkcję (AND) dwóch symbolicznych zmiennych binarnych o nazwach input1 oraz input2 zaś wynik operacji umieścić w symbolicznej zmiennej binarnej output. output input1 input2 Okno TwinCAT PLC Control dla języka ST pokazano na poniższym rysunku. 10

Okno deklaracji zmiennych lokalnych Okno kodu programu Okno komunikatów Okno organizacji projektu: programy, bloki funkcyjne, funkcje W niniejszym przykładzie wykorzystana zostanie instrukcja IF języka ST, operator koniunkcji logicznej AND, operator porównania = oraz operator przypisania :=. W oknie kodu programu należy wprowadzić program: IF input1=true AND input2=true THEN output:=true; ELSE output:=false; END_IF; Ponieważ zmienne symboliczne input1, input2 oraz output nie zostały wcześniej zadeklarowane, po wprowadzeniu pierwszej linii programu pojawi się okno deklaracji zmiennych pokazane na poniższym rysunku. Dla potrzeb niniejszego przykładu dla wszystkich zmiennych należy wprowadzić FALSE jako wartość inicjalizującą (Initial Value) oraz zatwierdzić przyciskiem OK, pozostałe domyślne parametry. W obszarze deklaracji zmiennych lokalnych (rysunek poniżej) pojawi się zapis dotyczący trzech zmiennych binarnych (BOOL): input1, input2 oraz output, którym przypisano początkowe wartości FALSE. W kolejnym kroku należy zapisać program na dysku wykorzystując menu File i opcję Save. Po wprowadzeniu kodu programu należy przystąpić do jego kompilacji i konsolidacji 11

wybierając z menu Project opcję Build. Gdy proces zakończy się sukcesem (w oknie komunikatów nie pojawi się informacja o błędach) program jest gotowy do testów. W celu uruchomienia program, w menu Online należy określić platformę docelową opcja Choose Run-Time System... i wybrać odpowiednie urządzenie. W przypadku, gdy połączenie skonfigurowano jak w punkcie 1, uruchomienie programu bezpośrednio w sterowniku BX9000 wymaga zaznaczenia opcji jak na poniższym rysunku. Jeżeli fizyczny sterownik nie jest dostępny, utworzony program można zostać przetestowany w trybie symulacji poprzez wybór z menu Online opcji Simulation Mode. W kolejnym kroku należy zalogować się do sterownika używając opcji Login z menu Online. Gdy program w sterowniku różni się od aktualnie uruchamianego, system wyświetli okno komunikatu umożliwiające zaprogramowanie sterownika nową wersją programu. W wyniku naciśnięcia przycisku Tak nowy program zostanie przesłany do sterownika. W przypadku, gdy logowanie oraz przesłanie programu zakończy się sukcesem (dotyczy to zarówno pracy bezpośrednio ze sterownikiem jak i trybu symulacji) program TwinCAT PLC Control przechodzi do trybu podglądu działania programu. W menu Online uaktywniają się opcje takie jak np. Logout (pozwala wrócić do trybu edycji programu) oraz Run (uruchamia program). Aby obserwować działanie programu należy go uruchomić przy pomocy opcji Run, powodzenie operacji jest sygnalizowane pojawieniem się napisu RUN na zielonym tle w pasku statusu głównego okna TwinCAT PLC Control. Podgląd wartości zmiennych lokalnych Program uruchomiony Podgląd wartości zmiennych w poszczególnych fragmentach programu W celu testowania programu, wartości zmiennych mogą być modyfikowane podczas jego działania. Zmianę wartości zmiennej można zrealizować między innymi klikając 12

dwukrotnie lewym przyciskiem myszki na nazwie zmiennej zarówno w oknie podglądu wartości zmiennych lokalnych, jak i w oknie podglądu wartości zmiennych w poszczególnych fragmentach kodu programu. W przypadku zmiennych logicznych (BOOL) zmiana wartości pomiędzy TRUE albo FALSE jest podpowiadana przez system automatycznie, w przypadku zmiennych innych typów pojawia się okno dialogowe umożliwiające wprowadzenie danych. Żądanie zmiany wartości zmiennej sygnalizowane jest ciągiem znaków <:=nowa wartość zmiennej> wyświetlanym obok jej nazwy. Aby zmiana nastąpiła należy uruchomić opcję Force Values z menu Online. Żądanie zmiany wartości zmiennej input1 z FALSE na TRUE Po zatwierdzeniu zmiany (wykonanie Force Values) aktualna wartość zmiennej wyświetlana jest w kolorze czerwonym na niebieskim tle jak pokazano na poniższym rysunku. Zmiennej input1 nadano wartość TRUE Aby sprawdzić działanie powyższego programu, wartości zmiennych input1 i input2 należy modyfikować zgodnie z tablicą prawdy dla koniunkcji logicznej i obserwować wartość zmiennej output. Przypadek, gdy zmienna, output uzyskuje wartość TRUE pokazano na poniższym rysunku. 13

2.3. Powiązanie symbolicznych zmiennych z fizycznym obszarem pamięci urządzenia Aby symboliczna zmienna z programu PLC mogła być powiązana z fizycznym wejściem, wyjściem bądź obszarem pamięci sterownika musi być zadeklarowana jako tzw. zmienna adresowana. W celu ulokowania zmiennej w odpowiednim obszarze pamięci (obszar wejść, wyjść, przestrzeń flag) w jej deklaracji należy użyć słowa kluczowego AT. Sposób deklarowania zmiennej adresowanej pokazano na poniższym schemacie I X Nazwa zmiennej AT % Q B W Adres : Typ zmiennej ; M D gdzie symbole I,Q, M określają obszar pamięci w jakim ma być ulokowana zmienna: I obszar zmiennych wejściowych, Q obszar zmiennych wyjściowych, M obszar przestrzeni flag (fizyczny obszar pamięci sterownika o podanym adresie). Modyfikatory X, B, W, D określają rozmiar zmiennej: X - bit (bit), B - bajt (byte - 8 bitów), W - słowo (word - 16 bitów), D - podwójne słowo (double word - 32 bity). Adres określa fizyczną lokalizację zmiennej adresowanej w danym obszarze pamięci. W przypadku zmiennych bitowych adres jest tworzony jako ciąg liczb całkowitych bez znaku, oddzielonych kropkami np. 1.3 co oznacza bit o indeksie numer 3 (liczone od 0) w bajcie 1. Adresy zmiennych bitowych ulokowanych w przestrzeniach wejść (I) i wyjść (Q) mogą być identyczne, gdyż są przechowywane w różnych obszarach pamięci. Dla zmiennych B, W, D - Adres jest reprezentowany przez liczbę całkowitą bez znaku. Typ zmiennej określa typ zmiennej np. BOOL, BYTE, INT, REAL, ARRAY pozwalający na prawidłowa jej interpretację przez operatory danego języka programowania. W typowych przypadkach, zmienne reprezentujące fizyczne wejścia albo wyjścia urządzenia powinny być ulokowane w odpowiednim obszarze pamięci bez dokładnego wyszczególnienia Adresu. Powiązanie danej zmiennej z fizycznym wyjściem/wyjściem jest realizowane w pakiecie TwinCAT System Manager. W omawianym przypadku Adres w deklaracji zmiennej zastępowany jest znakiem * np. Output AT %Q*:BOOL; co oznacza, że zmienna Output jest ulokowana w obszarze wyjść zaś jej szczegółowy adres zostanie określony w TwinCAT System Manager. Aby powiązać zmienną Output (przykład opisany w punkcie 2.2) z fizycznym wyjściem urządzenia należy zmienić jej deklarację w następujący sposób Output AT %Q* : BOOL := FALSE; 14

W kolejnym kroku należy dokonać ponownej kompilacji programu (menu Project opcja Rebuild all). W wyniku poprawnego utworzenia programu (w lokalizacji, w której zapisano projekt na dysku) zostanie utworzony plik z rozszerzeniem tpy. Aby powiązać zmienną output z fizycznym wyjściem sterownika należy uruchomić projekt TwinCAT System Manager utworzony dla aktualnej konfiguracji sprzętowej urządzenia i połączyć z nim utworzony projekt PLC. Operacja ta jest realizowana przy pomocy opcji Append PLC Project..., dostępnej w TwinCAT System Manager dla gałęzi PLC Configuration w menu pomocniczym wywoływanym przy pomocy prawego klawisza myszy. Połączenie z programem PLC Wykonanie powyższej operacji umożliwia programowi TwinCAT System Manager dostęp do zmiennych adresowanych zadeklarowanych w projekcie PLC. Jak pokazano na poniższym rysunku dla rozważanego programu dostępna jest jedna zmienna o nazwie MAIN.Output gdzie MAIN określa nazwę programu w którym zmienna Output została zadeklarowana. W przypadku modyfikacji deklaracji zmiennych adresowanych w projekcie PLC, należy w pakiecie TwinCAT System Manager zaktualizować dane dotyczące danego projektu PLC. Operacja ta jest realizowana przy pomocy funkcji ReScan... Aktualizacja projektu PLC W wyniku dwukrotnego kliknięcia lewym klawiszem myszy na wybranej nazwie zmiennej, uzyskuje się dostęp do fizycznych wejść/wyjść urządzenia, które mogą być z daną zmienną skojarzone. Przykładową możliwość dowiązania zmiennej Output do fizycznych wyjść urządzenia wyposażonego w moduł wyjść binarnych KL2408 pokazano na poniższym rysunku. 15

Klikając dwukrotnie lewym klawiszem myszy na wybranym wyjściu modułu KL2408 dokonujemy jego powiązania ze zmienną Output. Informacja o powiązaniu zmiennej z fizycznym wyjściem jest sygnalizowana między innymi znakiem strzałki przy nazwie zmiennej (zobacz opis zmiennej MAIN.Output na poniższym rysunku). Następnie utworzone powiązania należy przesłać do sterownika przy pomocy przycisku Activate configuration. Aktualizacja konfiguracji w sterowniku Po wykonaniu powyższej operacji należy powrócić do pakietu TwinCAT PLC Control i uruchomić program PLC w sterowniku. Operacja ta jest realizowana identycznie jak w przypadku trybu symulacji. Należy pamiętać, aby poprawnie określić system docelowy (Choose Run-Time System...) oraz wyłączyć tryb symulacji (Simulation Mode) - opcje menu Online. Po poprawnym przesłaniu programu PLC do sterownika, w zakładce Resources w folderze Global_Variables pojawi się pole TwinCAT_Configuration, które zawiera informacje o powiązaniach zmiennych adresowanych z fizyczną pamięcią urządzenia. 16

W niniejszym przypadku zmienna Output została ulokowana w przestrzeni wyjść pod adresem QX0.0. Uruchomienie i testowanie programu może być realizowane dla programu działającego w sterowniku w analogiczny sposób jak dla trybu symulacji. 2. Standardowe bloki funkcyjne język ST Wykorzystując język ST należy zapoznać się z działaniem standardowych bloków funkcyjnych (elementy dwustanowe (bistabilne), elementy detekcji zbocza, liczniki, czasomierze) zdefiniowanych w normie IEC-61131-3. Lista standardowych funkcji dołączonych do projektu, wraz z ich opisem, jest umieszczona w Library Manager znajdującym się w zasobach projektu (Resources), co pokazano na poniższym rysunku. Opis bloków funkcyjnych Zasoby Lista bloków funkcyjnych 3.1. Elementy dwustanowe (bistabilne bistable elements) Elementy dwustanowe zdefiniowane w normie IEC-61131-3 to przerzutniki SR i RS oraz Semafor. Przerzutnik SR Zadanie 3.1.1. Napisać program w języku ST umożliwiający testowanie działania przerzutnika SR przy pomocy dwóch przełączników i jednej diody podłączonych do sterownika. Należy wykorzystać dwa wejścia modułu KL1408 oraz jedno wyjście modułu KL2408. Opis: Q1 = SET1 OR (NOT RESET AND Q1) Program 17

Ponieważ SR jest blokiem funkcyjnym, dlatego przed użyciem musi zostać zadeklarowany np. BlockSR:SR; gdzie BlockSR jest dowolną nazwą. Przed uruchomieniem programu w sterowniku należy pamiętać o powiązaniu zmiennych Output, Input oraz Reset z fizycznymi wyjściami/wejściami modułów KL1408 i KL2408. Aby ułatwić programistom tworzenie kodu, pakiet TwinCAT PLC Control wyposażono w okno pomocy wywoływane przez naciśnięcie klawisza F2 (zobacz rysunek poniżej). Wybierając odpowiedni element programowy i naciskając przycisk OK uzyskuje się, w oknie programu, wpis podpowiadający jak wywołać dany element. Dla bloku funkcyjnego SR jest to np. SR(SET1:=, RESET:=, Q1=> ); Zapisy SET1:= oraz RESET:= podpowiadają nazwy wejściowych parametrów bloku zaś Q1=> parametru wyjściowego. Aby w programie użyć bloku funkcyjnego, jego nazwę (w linii uzyskanej z podpowiedzi) należy zastąpić własną nazwą oraz przypisać parametrom odpowiednie argumenty np. BlockSR(SET1:=Input, RESET:=Reset, Q1=>Output). Tak, więc zmienne wewnętrzne bloku funkcyjnego SET1 i RESET uzyskają wartości równe Input i Reset, zaś zmienna Output wartość równą zmiennej wewnętrznej Q1. Przerzutnik RS Zadanie 3.1.2. Napisać program w języku ST umożliwiający testowanie działania przerzutnika RS przy pomocy dwóch przełączników i jednej diody podłączonych do sterownika. Należy wykorzystać dwa wejścia modułu KL1408 oraz jedno wyjście modułu KL2408. Opis: Q1 = NOT RESET1 AND (SET OR Q1) 18

Semafor SEMA Zadanie 3.1.3. Napisać program w języku ST umożliwiający testowanie działania Semafora przy pomocy dwóch przełączników i jednej diody podłączonych do sterownika. Należy wykorzystać dwa wejścia modułu KL1408 oraz jedno wyjście modułu KL2408. Opis: CLAIM=TRUE ustawia semafor (BUSY=TRUE), RELEASE=TRUE gdy CLAIM=FALSE zwalnia semafor (BUSY=FALSE) 3.2. Elementy detekcji zbocza Elementy detekcji zbocza zdefiniowane w normie IEC-61131-3 umożliwiają wykrycie zbocza narastającego R_TRIG oraz zbocza opadającego F_TRIG. Detektor zbocza narastającego (rising edge) R_TRIG Zadanie 3.2.1. Napisać program w języku ST umożliwiający testowanie działania bloku funkcyjnego R_TRIG przy pomocy jednego przełącznika i jednej diody podłączonych do sterownika. Należy wykorzystać jedno wejście modułu KL1408 oraz jedno wyjście modułu KL2408. Opis: Wyjście Q utrzymuje wartość TRUE pomiędzy dwoma kolejnymi wywołaniami bloku w sytuacji, gdy nastąpiła zmiana wartości wejścia CLK z FALSE na TRUE. W przeciwnym wypadku Q utrzymuje wartość FALSE. Dla trzech kolejnych wywołań bloku, gdy pomiędzy dwoma pierwszymi wywołaniami nastąpiła odpowiednia zmiana CLK, wyjście Q utrzymuje wartość TRUE pomiędzy drugim i trzecim wywołaniem bloku. Detektor zbocza opadającego (falling edge) F_TRIG Zadanie 3.2.2. Napisać program w języku ST umożliwiający testowanie działania bloku funkcyjnego F_TRIG przy pomocy jednego przełącznika i jednej diody podłączonych do sterownika. Należy wykorzystać jedno wejście modułu KL1408 oraz jedno wyjście modułu KL2408. Opis: Wyjście Q utrzymuje wartość TRUE pomiędzy dwoma kolejnymi wywołaniami bloku w sytuacji, gdy nastąpiła zmiana wartości wejścia CLK z TRUE na FALSE. W przeciwnym wypadku Q utrzymuje wartość FALSE. Dla trzech kolejnych wywołań bloku, gdy pomiędzy dwoma pierwszymi wywołaniami nastąpiła odpowiednia zmiana CLK, wyjście Q utrzymuje wartość TRUE pomiędzy drugim i trzecim wywołaniem bloku. Zadanie 3.2.3. Napisać program w języku ST sygnalizujący przy pomocy jednej diody wystąpienie zbocza narastającego i opadającego na wybranym wejściu binarnym. Informacja o wystąpieniu odpowiedniego zbocza jest do czasu wystąpienia kolejnego zbocza utrzymywana (dioda świeci zbocze narastające, dioda nie świeci zbocze opadające). Należy wykorzystać jedno wejście modułu KL1408 oraz jedno wyjście modułu KL2408. W programie należy wykorzystać bloki R_TRIG, F_TRIG oraz odpowiedni blok dwustanowy. 3.3. Liczniki 19

Liczniki zdefiniowane w normie IEC-61131-3 to licznik dodający, odejmujący oraz dodająco-odejmujący. Licznik dodający (up-counter) CTU Zadanie 3.3.1. Napisać program w języku ST umożliwiający zliczanie liczby wykrytych zbocz narastających na wybranym wejściu binarnym. Liczbę zliczonych zbocz należy wyświetlać w systemie binarnym przy pomocy trzech kolejnych diod. Gdy liczba impulsów przekroczy wartość możliwą do wyświetlenia przy pomocy trzech diod, zliczanie należy rozpocząć ponownie od wartości zero. Należy wykorzystać jedno wejście modułu KL1408 oraz trzy wyjścia modułu KL2408. Opis: CU wejście, którego zmiany z wartości FALSE na TRUE są zliczane RESET wejście zerujące licznik PV zadana liczba impulsów CV liczba zliczonych impulsów Q wyjście załączane, gdy CV osiągnie wartość PV Liczbę zliczonych zbocz należy obserwować w trybie podglądu działania programu. Aby zrealizować wyświetlanie binarne należy wykorzystać dostęp do poszczególnych bitów przy pomocy operatora. np. bit o indeksie 0 zmiennej N to N.0 itd.. Licznik odejmujący (down-counter) CTD Zadanie 3.3.2. Napisać program w języku ST umożliwiający zliczanie w dół liczby wykrytych zbocz opadających na wybranym wejściu binarnym. Odliczaną w dół liczbę zboczy opadających należy wyświetlać w systemie binarnym przy pomocy trzech kolejnych diod. Gdy liczba impulsów osiągnie wartość 0 zliczanie w dół należy rozpocząć ponownie. Należy wykorzystać jedno wejście modułu KL1408 oraz trzy wyjścia modułu KL2408. Opis: CD wejście, którego zmiany z wartości FALSE na TRUE są zliczane LOAD wejście ustawiające CV na wartość PV PV zadana liczba impulsów CV liczba zliczonych impulsów Q wyjście załączane, gdy CV osiągnie wartość 0 Liczbę zliczonych zbocz należy obserwować w trybie podglądu działania programu. Aby zrealizować wyświetlanie binarne należy wykorzystać dostęp do poszczególnych bitów przy pomocy operatora. np. bit o indeksie 1 zmiennej N to N.1 itd.. Do wykrywania zbocza opadającego należy zastosować blok funkcyjny F_TRIG. W pewnych sytuacjach, gdy nastąpiła zmiana programu, należy wykonać restart sterownika (menu Online opcja Reset po uprzednim zalogowaniu się opcją Login, przed wykonaniem restartu należy zatrzymać działanie programu opcja Stop menu Online a następnie wykonać Reset i ponownie uruchomić sterownik opcją Run). Licznik dodająco-odejmujący (down-counter) CTUD 20

Zadanie 3.3.3. Napisać program w języku ST umożliwiający zliczanie wykrytych zboczy narastających dla dwóch wejść binarnych. Zbocze narastające na wejściu pierwszym powoduje zwiększanie liczby zliczonych impulsów, zaś zbocze narastające na wejściu drugim zmniejszanie tej liczby. Liczbę impulsów należy wyświetlać w systemie binarnym przy pomocy trzech kolejnych diod. Gdy liczba impulsów przekroczy wartość zero lub wartość możliwą do wyświetlenia przy pomocy trzech diod, zliczanie należy rozpocząć od zera. Należy wykorzystać dwa wejścia modułu KL1408 oraz trzy wyjścia modułu KL2408. Opis: CU wejście, którego zmiany z wartości FALSE na TRUE są zliczane w górę CD wejście, którego zmiany z wartości FALSE na TRUE są zliczane w dół RESET wejście zerujące licznik LOAD wejście ustawiające CV na wartość PV PV wartość zadana dla zliczania w dół CV liczba zliczonych impulsów QU wyjście załączane, gdy CV osiągnie wartość PV QD wyjście załączane, gdy CV osiągnie wartość 0 3.4. Czasomierze Czasomierze (timery) zdefiniowane w normie IEC-61131-3 to czasomierz załączający z opóźnieniem, wyłączający z opóźnieniem, generator impulsu o zadanym czasie trwania oraz zegar czasu rzeczywistego. W pakiecie TwinCAT zegar czasu rzeczywistego nie znajduje się w standardowej bibliotece Standard.Lib, aby go użyć należy dołączyć do projektu bibliotekę TcUtilities.Lib. Czasomierz załączający (on-delay) TON Zadanie 3.4.1. Napisać program w języku ST załączający wybrane wyjście sterownika z opóźnieniem 10 sekund w stosunku do chwili wykrycia zbocza narastającego na wybranym wejściu sterownika. Należy wykorzystać jedno wejście modułu KL1408 oraz jedno wyjście modułu KL2408. Opis: IN wejście uruchamiające czasomierz (zbocze narastające uruchamia czasomierz, zbocze opadające zeruje odliczany czas) PT wartość zadana czasu do odliczenia Q wyjście załączane, gdy upłynie założony czas opóźnienia ET aktualna wartość mierzonego czasu Czasomierz wyłączający (off-delay) TOF Zadanie 3.4.2. Napisać program w języku ST wyłączający wybrane wyjście sterownika z opóźnieniem 10 sekund w stosunku do chwili wykrycia zbocza opadającego na wybranym wejściu sterownika. Należy wykorzystać jedno wejście modułu KL1408 oraz jedno wyjście modułu KL2408. Opis: IN wejście uruchamiające czasomierz (zbocze opadające uruchamia czasomierz, zbocze narastające zeruje odliczany 21

czas) PT wartość zadana czasu do odliczenia Q wyjście wyłączane, gdy upłynie założony czas opóźnienia ET aktualna wartość mierzonego czasu Generator impulsu (timer-pulse) TP Zadanie 3.4.3. Napisać program w języku ST załączający wybrane wyjście sterownika na czas równy 10 sekund do chwili wykrycia zbocza narastającego na wybranym wejściu sterownika. Należy wykorzystać jedno wejście modułu KL1408 oraz jedno wyjście modułu KL2408. Opis: IN wejście uruchamiające generator (poziom wysoki uruchamia generator, poziom niski zeruje licznik gdy czas impulsu osiągnął lub przekroczył wartość zadaną PT) PT wartość zadana czasu trwania impulsu Q wyjście załączane na czas PT, od momentu wykrycia zbocza narastającego na wejściu IN ET aktualna wartość mierzonego czasu Zadanie 3.4.4. Napisać program w języku ST generujący na wybranym wyjściu sterownika przebieg prostokątny o czasie trwania stanu wysokiego 6 sekund i stanu niskiego 3 sekund. Należy wykorzystać jedno wyjście modułu KL2408. 6 sek. 3 sek. 4. Programowanie zadań sekwencyjnych w języku SFC Zadanie 4.1.1. Napisać program w języku ST realizujący podstawowy schemat działania urządzenia uwzględniający trzy stany pracy: Inicjalizacja, Praca normalna, Stop. Należy wykorzystać instrukcję CASE języka ST do realizacji sekwencji oraz typ wyliczeniowy (Enumerated data type) do zdefiniowania poszczególnych stanów. Działanie układu: - po uruchomieniu i restarcie systemu program rozpoczyna działanie od stanu Inicjalizacja, - Inicjalizacja trwa 10 sekund, po upływie założonego czasu następuje przejście do stanu Praca normalna, - podstawowy stan pracy urządzenia to Praca normalna, jedynie w przypadku, gdy operator naciśnie przycisk STOP, następuje przejście do stanu Stop, - powrót z stanu Stop do Praca normalna następuje po naciśnięciu przycisku CONTINUE. START Przejścia pomiędzy stanami P01 - następuje po upływie 10 sekund P12 naciśnięto przycisk STOP P21 naciśnięto przycisk CONTINUE Inicjalizacja Praca normalna Status=0 P01 Status=1 P12 Stop Status=2 P21 22

Dodatkowe wymagania: - zmienna status posiada odpowiednie wartości liczbowe, w poszczególnych stanach, jak pokazano na rysunku, - aktualny stan urządzenia jest sygnalizowany przy pomocy trzech diod (świecenie diody pierwszej sygnalizuje, że system znajduje się w stanie Inicjalizacja, świecenie drugiej Praca normalna, miganie trzeciej oznacza stan Stop), - aktywacja przycisków STOP i CONTINUE następuje w wyniku wykrycia zbocza narastającego na odpowiednim wejściu modułu KL1408, - program należy zapisać w sterowniku tak, aby po zaniku i przywróceniu zasilania rozpoczynał pracę od stanu Inicjalizacja. Przykładowa realizacja - zdefiniowanie typu wyliczeniowego STANY_PRACY o elementach: INIT, NORMAL, STOP. Numeracja poszczególnych stanów powinna wyglądać następująco INIT=0, NORMAL=1, STOP=2, - przejście do okna Data types - kliknięcie prawym klawiszem myszy na folderze wykonanie Add object... wprowadzenie w oknie dialogowym nazwy STANY_PRACY. Przycisk OK powoduje zdefiniowanie nowego typu zmiennej. Data types Po poprawnym wykonaniu powyższych czynności okno programu powinno wyglądać jak poniżej. Domyślnie nowy typ zmiennej jest definiowany jako struktura. W prawym oknie należy istniejący wpis zmodyfikować następująco: TYPE STANY_PRACY : (INIT:=0,NORMAL,STOP); END_TYPE W programie głównym należy zdefiniować zmienną typu STANY_PRACY o nazwie Status. 23

Przykładowa realizacja programu PROGRAM MAIN VAR Status: STANY_PRACY := INIT; LEDInit AT %Q*: BOOL; LEDNormal AT %Q*: BOOL; LEDStop AT %Q*: BOOL; ButtonSTOP AT %I*: BOOL; ButtonCONTINUE AT %I*: BOOL; TimerTON: TON; StopR_TRIG: R_TRIG; ContinueR_TRIG: R_TRIG; LedStopTP: TP; LedStopTON: TON; LedBlinkStart: BOOL; END_VAR CASE Status OF (*Stan Inicjalizacji*) INIT: LEDInit:=TRUE; TimerTON(IN:=TRUE, PT:=T#10s, Q=>, ET=> ); IF TimerTON.Q=TRUE THEN Status:=NORMAL; LEDInit:=FALSE; END_IF; (*Stan pracy normalnej*) NORMAL: LEDNormal:=TRUE; StopR_TRIG(CLK:=ButtonSTOP, Q=> ); IF StopR_TRIG.Q=TRUE THEN Status:=STOP; LEDNormal:=FALSE; END_IF; (*Stan stop*) STOP: (*Miganie diodą*) LedStopTP(IN:=LedBlinkStart, PT:=T#200ms, Q=> LEDStop, ET=> ); LedStopTON(IN:=NOT LEDStop, PT:=T#200ms, Q=>LedBlinkStart, ET=> ); ContinueR_TRIG(CLK:=ButtonCONTINUE, Q=> ); END_CASE; IF ContinueR_TRIG.Q=TRUE THEN Status:=NORMAL; LEDStop:=FALSE; END_IF; Aby powyższy program działał po utracie i przywróceniu zasilania należy utworzyć w sterowniku tzw. Bootproject menu Online opcja Create Bootproject (po wcześniejszym zalogowaniu się opcją Login). Ze względów praktycznych, zaleca się, aby czasomierze były umieszczone poza instrukcją CASE, tak, aby były wywoływane w każdym cyklu pracy sterownika. Należy zmodyfikować powyższy program tak, aby wypełnić to zalecenie. Zadanie 4.1.2. Rozszerzyć przykład z zadania 4.1.1 do układu działającego zgodnie z schematem zamieszczonym na poniższym rysunku. 24

START Inicjalizacja Status=0 P01 Praca normalna Status=1 PA P03 Reset Stop P12 Status=2 Status=3 P4 Awaria P21 Działanie układu: - po uruchomieniu i restarcie systemu program rozpoczyna działanie od stanu Inicjalizacja, - Inicjalizacja trwa 10 sekund, jeżeli w tym czasie na wejściu INICJALIZACJA pojawi się narastające zbocze, następuje przejście do Praca normalna. Jeżeli sygnał nie pojawi się w założonym czasie 10 sekund następuje przejście do stanu Awaria, - podstawowy stan pracy urządzenia to Praca normalna - gdy operator naciśnie przycisk STOP, następuje przejście do stanu Stop, - powrót z Stop do Praca normalna następuje po naciśnięciu przycisku CONTINUE przez operatora, - w każdym stanie pracy urządzenia, gdy zostanie aktywowany przycisk awaryjny AWARIA system przechodzi do stanu Awaria, - wyjście ze stanu Awaria następuje po naciśnięciu przez operatora przycisku RESTART, który powinien powodować tzw. ciepły restart sterownika Przejścia pomiędzy stanami: P01 - następuje przed upływem 10 sekund od wejścia w stan Inicjalizacja, jeżeli na wejściu INICJALIZACJA pojawi się narastające zbocze P12 naciśnięto przycisk STOP P21 naciśnięto przycisk CONTINUE P03 następuje po upływie 10 sekund od wejścia w stan Inicjalizacja, jeżeli na wejściu INICJALIZACJA nie pojawiło się narastające zbocze sygnału PA - naciśnięto przycisk AWARIA P4 - naciśnięto przycisk RESTART Dodatkowe wymagania: - zmienna status posiada odpowiednie wartości liczbowe w poszczególnych stanach jak pokazano na rysunku, - aktualny stan urządzenia jest sygnalizowany przy pomocy czterech diod (świecenie diody pierwszej sygnalizuje stan Inicjalizacja, świecenie drugiej Praca normalna, świecenie trzeciej oznacza stan Stop, miganie czwartej oznacza stan Awaria), 25

- aktywacja przycisków STOP, CONTINUE, AWARIA, RESTART oraz INICJALIZACJA następuje w wyniku wykrycia zbocza narastającego na odpowiednim wejściu modułu KL1408, - program należy zapisać w sterowniku tak, aby po zaniku i przywróceniu zasilania rozpoczynał pracę od stanu Inicjalizacja. Zadanie 4.1.3. Rozszerzyć przykład z zadania 4.1.2, realizując w stanie Praca normalna zliczanie impulsów (narastających zboczy) na wybranym wejściu sterownika (zob. zadanie 3.3.1). Jeżeli kolejny impuls nie pojawi się przed upływem 10 sekund od poprzedniego, program przechodzi w stan Timeout zgodnie z poniższym rysunkiem. W stanie Timeout impulsy nie są zliczane, aby powrócić do stanu zliczania należy nacisnąć przycisk CLEAR_TIMEOUT. Praca normalna Status=1 Zliczanie impulsów P11 P14 Status=4 Timeout P41 Zadanie 4.1.4. Rozszerzyć przykład z zadania 4.1.3, tak aby utrata zasilania nie powodowała utraty stanu licznika impulsów. Sygnalizacja diodowa aktualnego stanu licznika również powinna być prawidłowa bezpośrednio po powrocie napięcia zasilania. Wskazówka: należy zastosować zmienne typu RETAIN. 4.2. Realizacja schematów sekwencyjnych w języku SFC Do realizacji programów w języku SFC należy stosować kroki IEC. Opcja ta jest uaktywniana przy pomocy przycisku znajdującego się w pasku narzędzi oraz w menu Extras -> Use IEC-steps. Opcje te są dostępne po utworzeniu jednostki organizacyjnej i wyborze języka SFC do jej realizacji. Zadanie 4.2.1. Napisać program realizujący podstawowy schemat działania urządzenia uwzględniający trzy stany pracy: Inicjalizacja, Praca normalna, Stop. Do stworzenia 26

struktury wewnętrznej programu należy wykorzystać graf sekwencji SFC. Do zdefiniowania akcji dla poszczególnych kroków i warunków przejścia należy zastosować język ST. Działanie układu: - po uruchomieniu i restarcie systemu program rozpoczyna działanie od stanu Inicjalizacja, - Inicjalizacja trwa 5 cykli pracy sterownika, po których następuje przejście do stanu Praca normalna, - stan Praca normalna, trwa 5 cykli pracy sterownika, po których następuje przejście do stanu Stop, - powrót z stanu Stop do Praca normalna następuje po kolejnych 5 cyklach pracy sterownika. Dodatkowe wymagania: P21 - aktualny stan urządzenia jest sygnalizowany przy pomocy trzech diod (świecenie diody pierwszej sygnalizuje stan Inicjalizacja, świecenie drugiej Praca normalna, świecenie trzeciej oznacza stan Stop), - w programie należy prowadzić liczniki wywołania funkcji dla akcji wejściowej (entryaction) oraz akcji wyjściowej (exit-action) kroków Normal oraz Stop, - czas cyklu pracy sterownika należy ustawić na 2 sekundy, - działanie programu należy obserwować w trybie podglądu. Na podstawie prowadzonych w programie liczników opisać sposób cyklicznego wywoływania akcji związanych z krokami. Określić, które akcje są wywoływane w przypadku aktywowania i deaktywowania kroku, w jakiej kolejności są uruchamiane i które akcje są realizowane w tym samym cyklu sterownika. Przykładowa realizacja zadania 4.2.1 przy pomocy grafu SFC Inicjalizacja Praca normalna Normal Aby utworzyć nowy projekt wykorzystujący język SFC z menu File wybrać opcję New, określić platformę docelową a następnie określić język programowania jako SFC. Stop START Init Stop P01 P12 Graficzny edytor programu w języku SFC pokazano na poniższym rysunku. 27

Symbole SFC Okno deklaracji zmiennych lokalnych Okno kodu programu Okno komunikatów Okno organizacji projektu: programy, bloki funkcyjne, funkcje Identycznie jak w przypadku programu tworzonego w języku ST edytor zawiera okna: deklaracji zmiennych, kodu programu, komunikatów oraz organizacji projektu. Symbole graficzne języka SFC są dostępne na pasku narzędzi okna głównego (oznaczone czerwoną elipsą na powyższym rysunku). Domyślny program w języku SFC zawiera krok Init, tranzycję Trans0 oraz symbol skoku oznaczający powrót do akcji Init. Schemat sekwencyjny związany z zadaniem 4.2.1 zawiera trzy kroki: Init, Normal oraz Stop, które należy wprowadzić do schematu SFC. Aby to zrealizować należy zaznaczyć tranzycję Trans0 przy pomocy lewego klawisza myszki (pojedyncze klikniecie na graficznym symbolu tranzycji - poprawne zaznaczenie jest sygnalizowane graficznie przy pomocy prostokąta ) a następnie wykorzystując menu kontekstowe (pojedyncze klikniecie prawym klawiszem myszki na zaznaczonym symbolu tranzycji) wybrać opcję Step-Transition (before) albo Step-Transition (after). Jednoczesne zaznaczenie tranzycji i wywołanie menu kontekstowego uzyskuje się przy pomocy pojedynczego kliknięcia prawym klawiszem myszki na graficznym symbolu tranzycji. Każda akcja główna posiada dodatkowy kwalifikator oznaczany literą (N, R, S, L, D, P, SD, DS, SL) obok nazwy akcji np. N dla. Kwalifikatory umożliwiają 28

zarządzanie wykonywaniem akcji np. N oznacza, że akcja jest wykonywana tylko wówczas, gdy skojarzony z nią krok jest aktywny. W wyniku dwukrotnego wykonania powyższych czynności, uzyskuje się schemat zawierający trzy kroki oraz trzy tranzycje pokazany na poniższym rysunku. W kolejnym etapie należy zmienić nazwy kroków oraz tranzycji tak, aby uzyskać schemat dla zadania 4.2.1. Zmianę nazw można wykonać klikając jednokrotnie lewym klawiszem myszki na określonej nazwie i wprowadzając nową nazwę przy pomocy klawiatury. Po wyjściu ze stanu Stop program powinien powrócić do stanu Normal, dlatego też należy zmodyfikować parametry skoku na końcu programu wprowadzając nazwę Normal zamiast Init. W wyniku wprowadzenia powyższych zmian aktualną postać programu pokazano na poniższym rysunku. Zmienne powiązane z tranzycjami P01, P12, P21 należy zadeklarować jako zmienne typu BOOL. Pomocnicze okno deklaracji zmiennych pojawia się po wprowadzeniu nowej nazwy dla zmiennej związanej z tranzycją. W kolejnym etapie należy zaprogramować odpowiednie instrukcje dla kroków i tranzycji. Można tego dokonać za pomocą języków dostępnych w pakiecie TwinCAT. Dla poszczególnych kroków możliwe jest określenie przy pomocy menu kontekstowego (prawy klawisz myszki) trzech rodzajów akcji: wejściowej (entry-action), wyjściowej (exit-action) oraz głównej powiązanej z krokiem (associate-action). 29

Dodawanie akcji wejściowej/ wyjściowej Usuwanie akcji wejściowej/ wyjściowej Dodawanie głównej akcji powiązanej z krokiem akcja-wejściowa wywoływana jednokrotnie za każdym razem gdy blok staje się aktywny akcja-wyjściowa wywoływana jednokrotnie za każdym razem gdy blok przestaje być aktywny główna akcja powiązana z krokiem wywoływana w sposób zdefiniowany przez użyty kwalifikator akcji Aby zdefiniować wymagane akcje, do projektu należy dodać kod z nimi związany. Realizuje się to wybierając z menu Project opcję Add Action i wybierając nazwę akcji oraz język (tutaj ST), w którym będzie zrealizowana. W niniejszym przykładzie dodano trzy akcje główne o nazwach AInit, ANormal oraz AStop. Modyfikując w grafie SFC nazwy akcji dla poszczególnych kroków uzyskano schemat pokazany na poniższym rysunku. Dodanie akcji możliwe jest również przy użyciu menu kontekstowego związanego z prawym klawiszem myszy dla folderu znajdującego się w oknie organizacji projektu (pokazane na powyższym rysunku). W kolejnym kroku dla poszczególnych kroków należy określić akcje wejściowe i wyjściowe. Realizuje się to przy pomocy menu kontekstowego prawego klawisza myszy dla poszczególnych kroków, wywołując Add Entry-Action oraz Add Exit-Action. Zdefiniowanie akcji wejściowej sygnalizowane jest literą E w lewym dolnym rogu symbolu kroku np., zaś akcji wyjściowej literą X w prawym dolnym rogu np.. Aby wprowadzić 30

kod związany z daną akcją wejściową/wyjściową należy kliknąć podwójnie na symbolu E albo X wyświetlanym na graficznym symbolu kroku. Schemat sekwencji, po wprowadzeniu dodatkowych akcji, pokazano na poniższym rysunku. Przykładowy kod programu pokazano poniżej UWAGA! Poniższy program nie realizuje poprawnie założeń zadania. Należy określić, dlaczego i zmodyfikować program tak, aby działał poprawnie. PROGRAM MAIN VAR P01: BOOL:=FALSE; P12: BOOL:=FALSE; P21:BOOL:=FALSE; LEDInit AT %Q*: BOOL ; LEDNormal AT %Q*: BOOL; LEDStop AT %Q*: BOOL; InitCounter: WORD:=0; NormalCounter: WORD; StopCounter: WORD; END_VAR Kod akcji AInit: LEDInit:=TRUE; InitCounter:=InitCounter+1; IF InitCounter=5 THEN P01:=TRUE; END_IF Kod Exit-Action kroku Init: Kod Entry-Action kroku Normal: Kod akcji ANormal: LEDInit:=FALSE; P01:=FALSE; P21:=FALSE; NormalCounter:=0; LEDNormal:=TRUE; NormalCounter:=NormalCounter+1; IF NormalCounter=5 THEN P12:=TRUE; 31

Kod Exit-Action kroku Normal: Kod Entry-Action kroku Stop: Kod akcji AStop: END_IF LEDNormal:=FALSE; P12:=FALSE; StopCounter:=0; LEDStop:=TRUE; StopCounter:=StopCounter+1; IF StopCounter=5 THEN P21:=TRUE; END_IF Kod Exit-Action kroku Stop: LEDStop:=FALSE; Przed kompilacją programu do projektu należy dodać bibliotekę iecsfc.lib zaznaczając w oknie Resources opcję Library Manager i wybierając z menu Insert opcję Additional Library. Czas cyklu sterownika może być zmodyfikowany przy pomocy Task configuration znajdującego się w oknie Resources. W przypadku wydłużenia czasu cyklu bardzo istotne jest, aby w oknie TwinCAT System Manager zaktualizować (ReScan) projekt PLC oraz aktywować nową konfigurację w sterowniku - Activate configuration. 32

Aby prowadzić w programie licznik cykli sterownika, powyższy program można zmodyfikować zmieniając nazwę programu SFC na SFCMAIN (klikając lewym klawiszem myszy na nazwie MAIN w oknie organizacji projektu i wprowadzając nową nazwę z klawiatury. Następnie należy dodać do projektu program o nazwie MAIN utworzony w języku ST (menu kontekstowe prawego klawisza myszy dla folderu POUs - opcja Add Object...). W programie MAIN należy inkrementować globalną zmienną (zakres widoczności tej zmiennej pozwala na jej wywoływanie w programie SFCMAIN) przechowującą ilość cykli oraz wywoływać program SFCMAIN (jak pokazano na poniższym rysunku). Określenia zmiennej jako globalnej można dokonać w oknie deklaracji zmiennej. 33

Bądź bezpośrednio w oknie Resources dla pola Global_Variables. Odwołując się do zmiennej CycleCounter w akcjach grafu SFC możliwe jest określenie, które akcje wywoływane są w tym samym cyklu! Należy zrealizować zadania 4.1.1 i 4.1.3 wykorzystując, do stworzenia struktury wewnętrznej programu, graf sekwencji SFC oraz język ST do zdefiniowania akcji dla poszczególnych kroków i warunków przejścia pomiędzy stanami. 34