SŁAWOMIR WIAK (redakcja) Akademicka Oficyna Wydawnicza EXIT
Recenzenci: Prof. Janusz Turowski Politechnika Łódzka Prof. Ewa Napieralska Juszczak University Lille Nord de France, LSEE, UA, Francja Autorzy rozdziałów: Prof. Piotr Ostalczyk (rozdz. 1, 2) Prof. Edward Jezierski (rozdz. 3) Dr hab. inż. Zbigniew Gmyrek (rozdz. 4) Dr hab. inż. Ryszard Szczerbanowski, prof. PŁ (rozdz. 5) Dr inż. Grzegorz Tosik (rozdz. 6) Prof. Zbigniew Lisik (rozdz. 6) Dr hab. inż. Jacek Gołębiowski, prof. PŁ (rozdz. 7) Dr hab. inż. Krzysztof Pacholski, prof. PŁ (rozdz. 8, 9) Prof. Krzysztof Gniotek (rozdz. 10) Dr hab. inż. Iwona Frydrych, prof. PŁ (rozdz. 10) Dr hab. Inż Ryszard Korycki, prof. PŁ (rozdz. 11) Dr inż. Grażyna Sobiczewska (rozdz. 12) Dr hab. Maria Dems, prof. PŁ (rozdz. 13, 15) Prof. Sławomir Wiak (rozdz. 13, 14, 15, 16, 17) Dr inż. Wojciech Rosiak (rozdz. 13, 15) Dr inż. Paweł Drzymała (rozdz. 14, 16, 17) Dr inż. Henryk Welfle (rozdz. 14, 16, 17) Dr inż. Ryszard Lasota (rozdz. 18) Dr inż. Marek Jan Glaba (rozdz. 19) Monografia przygotowana w ramach projektu "Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania, także osób niepełnosprawnych", współfinansowanego przez Unię Europejską w ramach europejskiego Funduszu Społecznego - Programu Operacyjnego Kapitał Ludzki "Priorytet IV, poddziałanie 4.1.1. Wzmocnienie potencjału dydakty-cznego uczelni". Utwór w całości ani we fragmentach nie może być powielany ani rozpowszechniany za pomocą urządzeń elektronicznych, mechanicznych, kopiujących, nagrywających i innych, w tym również nie może być umieszczany ani rozpowszechniany w postaci cyfrowej zarówno w Internecie, jak i w sieciach lokalnych bez pisemnej zgody posiadacza praw autorskich. ISBN 978-83-60434-85-7 Copyright by EXIT, Politechnika Łódzka Łódź 2010
Maria Dems Sławomir Wiak Wojciech Rosiak 15. Sterowniki programowalne PLC Jednym z podstawowych komponentów układów mechatroniki są programowalne sterowniki logiczne PLC (Programmable Logic Controllers) należące do szeroko rozumianej rodziny komputerów. Praca sterownika PLC polega na ciągłym monitorowaniu wejść cyfrowych i analogowych, podejmowaniu decyzji w oparciu o program użytkownika oraz odpowiednim sterowaniu wyjściami [4]. 15.1. Budowa sterownika PLC Sterownik PLC ma budowę modułową. Podstawowe jego moduły to moduł wejściowy, jednostka centralna (CPU) oraz moduł wyjściowy (rys.15.1). Rys. 15.1. Budowa sterownika PLC Moduł wejściowy sterownika PLC akceptuje różne sygnały wejściowe, cyfrowe lub analogowe, pochodzące z zewnętrznych urządzeń, przetwarzane następnie do postaci sygnałów logicznych, zrozumiałych dla CPU. Jednostka centralna CPU podejmuje decyzje i realizuje zawarty w pamięci sterownika program. Moduł wyjściowy przetwarza funkcje 607
sterowania z CPU do postaci sygnałów wyjściowych, cyfrowych lub analogowych, sterujących urządzeniami wykonawczymi. Sterownik PLC musi ponadto posiadać moduł zasilacza PWR podłączany do źródła napięcia zmiennego 120/230 VAC lub stałego 12/24/48 VDC. Dodatkowo mogą być stosowane moduły: DI/DO - moduły wejść/wyjść dwustanowych (dyskretnych), AI/AO moduły wejść/wyjść analogowych, HSC moduł szybkiego licznika do obsługi wejść dwustanowych, pochodzących z przetworników obrotowo impulsowych (enkoderów), APM - moduł pozycjonowania osi, obsługujący sygnały generowane przez enkodery, CCM moduł komunikacyjny z dwoma łączami szeregowymi z określonymi protokołami komunikacyjnymi, Moduły komunikacyjne sieci Genius lub Ethernet stanowiące łącza pomiędzy sterownikami a siecią, Moduł programowalnego koprocesora PCM, zawierający pamięć EPROM oraz pamięć RAM (zasilaną z baterii), umożliwiający programowanie funkcji specjalnych w językach wyższego poziomu, spełniający często funkcję bufora danych. Wszystkie moduły podłączane są do gniazd (slotów) znajdujących się na płycie łączeniowej zwanej kasetą, lub instalowane bezpośrednio na szynie montażowej DIN i łączone ze sobą za pomocą łączy zatrzaskowych. Najbardziej popularne rodziny sterowników to: sterowniki amerykańsko japońskiej firmy GE Fanuc serii 90 30, sterowniki SLC 500 firmy Allen Bradley, sterowniki Modicon serii 984 firmy AEG Schneider, sterowniki SIMATIC S5, S7 firmy Siemens. 15.2. Jednostka centralna CPU Jednostka centralna CPU realizuje cykl programowania sterownika, składający się z następujących etapów: Inicjacja cyklu, obejmująca obliczanie czasu cyklu, planowanie startu do następnego cyklu, określenie trybu następnego cyklu, aktualizacja tablicy błędów oraz kasowanie zegara; 608
Czytanie sygnałów wejściowych z modułu wejściowego; Wykonanie programu użytkownika; Wysyłanie sygnałów wyjściowych do modułu wyjściowego; Transmisja danych - obsługa urządzeń zewnętrznych; Komunikacja systemowa, sprawdzenie konfiguracji, monitorowanie błędów w modułach; Diagnostyka, weryfikacja fragmentów programu użytkownika. W celu zwiększenia niezawodności systemów sterownia stosowane są systemy z redundancją CPU, składające się z dwóch jednostek centralnych: podstawowej i rezerwowej, zawierających ten sam program, połączonych jedną lub dwoma magistralami BTM i BRM, z których tylko jedna jest aktywna. Przełączenie sterowania, w przypadku wystąpienia błędu systemu w magistrali aktywnej, określa się w konfiguracji systemu. 15.2.1. Moduły wejść/wyjść dyskretnych Moduły wejść dyskretnych (DI) zamieniają sygnały elektryczne prądu stałego (DC) lub zmiennego (AC) z urządzeń wejściowych na sygnały logiczne akceptowane przez jednostkę centralną sterownika. Moduły wejściowe mogą być dwustanowe (ON/OFF), lub trójstanowe. Obwody wejściowe tych modułów mogą być zasilane: z zewnętrznego źródła prądu stałego (12/24/48 VDC), przy czym stosowane są moduły zarówno o polaryzacji dodatniej jak i ujemnej, z zewnętrznego źródła prądu zmiennego (120/230/240 VAC) - moduły te posiadają łączniki tyrystorowe. Moduły wyjść dyskretnych (DO) zamieniają sygnały binarne sterownika na sygnały elektryczne prądu stałego lub zmiennego, potrzebne do sterowania urządzeniami wykonawczymi. Obwody wyjściowe tych modułów mogą być zasilane: napięciem stałym moduły te wyposażone są w filtry składowej zmiennej oraz diodę przeciwprzepięciową, napięciem zmiennym - posiadają filtry RC przeciwzakłóceniowe oraz zabezpieczenie przeciwprzepięciowe. W złożonych układach mogą być stosowane moduły wejścia/wyjścia trójstanowe, rozróżniające trzy zakresy napięć w obwodach wejściowych oraz redundancję albo dodatkowa możliwość załączania lub wyłączania w obwodach wyjściowych. 609
15.2.2. Moduły wejść/wyjść analogowych Moduły wejść analogowych (AI) przetwarzają ciągłe analogowe sygnały wejściowe na sygnały cyfrowe proporcjonalne do wielkości napięć lub prądów w obwodach wejściowych modułu. Typowe wartości wejściowych napięć lub prądów modułu, uzyskiwane z przetworników pomiarowych, mieszczą się w zakresach 0 10 VDC lub 4 20 ma. Wejścia analogowe mogą być wejściami różnicowymi lub jednokońcówkowymi (o wspólnej masie). Moduły wyjść analogowych (AO) przetwarzają wartości cyfrowe (sygnałów sterujących na proporcjonalne do nich analogowe wartości napięć lub prądów w obwodach wyjściowych modułu, stanowiących źródło sygnału ciągłego dla napędu elektrycznego, regulatora temperatury lub ciśnienia, poziomu cieczy, itp. 15.2.3. Moduł szybkiego licznika czasu Szybki liczniki czasu (HSC) [4,5] może bezpośrednio zliczać impulsy o częstotliwości do 100 khz, generowane najczęściej przez przetworniki obrotowo impulsowe zwane enkoderami, co umożliwia pomiary i sterowanie prędkością obrotową silników, przepływów, pozycjonowanie układów itp. Enkoder najczęściej podłączany jest do modułu HSC w układzie różnicowym, ale może tez być podłączony jednokońcówkowo. Umożliwia on odczyt położenia kątowego urządzenia za pomocą tarczy z naniesioną siatką i fotoogniwa, reagującego na różnicę intensywności światła. Na wyjściu przetwornika obrotowo impulsowego otrzymuje się sygnał pomiarowy prostokątny lub sinusoidalnie zmienny, który zostaje przetworzony na sygnał cyfrowy i poddany digitalizacji w dodatkowym układzie elektronicznym oraz często interpolacji i digitalizacji, co pozwala zmniejszyć krok pomiaru. Kierunek wirowania przetwornika określany jest na podstawie kierunku przesunięcia fazowego dwóch sygnałów wejściowych, przesuniętych względem siebie o 90. Moduł szybkiego licznika HSC realizuje operacje liczenia i sterownia bez komunikacji z jednostka centralną. Może on również pracować jako licznik dodający, odejmujący lub dodająco odejmujący, w zależności od kierunku obrotu przetwornika. 610
15.2.4. Moduły komunikacyjne Do transmisji danych stosowane są najczęściej standardowe łącza szeregowe, przy czym, w zależności od przyjętego standardu, transmisja danych może się odbywać [4,5]: przez niesymetryczne, jednoprzewodowe łącze bit po bicie, z szybkością do 20 Kb/s, na odległość do 15 m, z wykorzystaniem niesymetrycznego nadajnika i symetrycznego odbiornika, z wykorzystaniem symetrycznego nadajnika, dwuprzewodowego łącza transmisyjnego i symetrycznego odbiornika, z wykorzystaniem wielu symetrycznych nadajników i wielu symetrycznych odbiorników. Transmisja danych może być asynchroniczną, polegającą na przesyłaniu za pomocą pojedynczej linii danych pojedynczych znaków w określonym formacie, lub synchroniczna, polegającą na przesyłaniu ramki danych ze znacznikami początku i końca, umożliwiającymi synchronizację u odbiorcy. W obu przypadkach transmisja danych realizowana jest według określonego protokołu komunikacyjnego np. MODBUS ASCII lub RTU. Do połączenia sterowników w sieć stosowane są moduły komunikacyjne, wykorzystujące asynchroniczna transmisję szeregową. 15.3. Sterowniki programowalne firmy Siemens W układach automatyki i mechatroniki stosowane są, między innymi: 15.3.1. Sterowniki LOGO [7] Sterownik LOGO to uniwersalne urządzenie służące do przełączania i sterowania w zastosowaniach domowych i przemysłowych. Zastępuje on tradycyjne sterowania budowane na bazie przekaźników czasowych i styczników, umożliwiając sterowanie oświetleniem, roletami, żaluzjami, systemami grzewczymi i klimatyzacyjnymi oraz szeregiem innych urządzeń. Dzięki wykorzystaniu inteligentnych sterowników LOGO: optymalizowany jest czas projektowania oraz uruchamiania instalacji, 611
minimalizowane są nakłady związane z wykonaniem połączeń elektrycznych w odniesieniu do konwencjonalnych sterowań budowanych na bazie przekaźników i styczników. Ważną zaletą sterowników LOGO jest łatwość programowania. Program tworzymy łącząc ze sobą gotowe bloki funkcyjne. Budowa sterownika LOGO przedstawiona jest na rys. 15.2. Sterownik wyposażony jest w wyświetlacz LCD; posiada 4 wiersze do zadawania i wyświetlania aktualnych parametrów funkcji oraz wyświetlania meldunków tekstowych. Za pomocą modułów rozszerzeń można połączyć 24 wejścia binarne, 16 wyjść binarnych, 8 wejść analogowych oraz 2 wyjścia analogowe. 612 Rys. 15.2. Budowa sterownika LOGO [7] Dzięki modułowi 2 wyjść analogowych można wykorzystać w programie funkcje regulatora PI, generatora rampy dla sterownika z przekształtnikiem częstotliwości oraz multipleksera analogowego, którego zadaniem jest programowe przełączanie wartości funkcji na zdefiniowane wyjścia analogowe. Oprócz modułów binarnych dostępne są też moduły komunikacyjne AS-Interface, instabus EIB oraz LON. Sterownik LOGO wyposażony jest w wyświetlacz LCD z możliwością wyświetlania znaków alfanumerycznych. Posiada on 38 wbudowanych funkcji. Za pomocą oprogramowania LOGO Soft Comfort dokonuje się połączeń pomiędzy gotowymi funkcjami bibliotecznymi tworząc w ten sposób program. Sterowniki z rodziny LOGO! umożliwiają komunikację w sieciach: AS-Interface LOGO! pracuje jako urządzenie typu slave, EIB/KNX (European Installation Bus) standartowa sieć do zastosowań w automatyce budynków, LON (Local Operating Network) standartowa sieć do zastosowań w automatyce budynków.
15. STEROW WNIKI PROGRA AMOWALNE PL LC duł podstawo owy LOGO Basic B dostępny jest w dwóch d klasac ch Mod nap pięciowych: V DC, 24V DC, zasilany napiięciem 12/24V zasilany napiięciem 24V AC C/DC,115/240 0V AC/DC. Sterownik LO OGO posiada nastepujące m moduły rozszerrzeń: Moduły binarrne, Moduły wejśćć analogowych h, Moduły wyjśćć analogowych h, CM AS-Interfface (slave) LOGO! pracuje e jako urządze enie typu slave e, CM EIB/KNX X (European Installation B Bus) standa artowa sieć do d zastosowań w automatyce budynków. LOG GO! było dotyychczas znane e jako moduł logiczny wyko orzystywany do d iu sterrowania pracą ą niewielkich urządzeń i masszyn. Dzięki oprogramowan o LOG GO! Soft Co omfort można a jednak tworzyć dość skomplikowan ne algo orytmy sterującce, jak na tę kllasę sterowań.. 15.3.2. Sima atic S7-1200 [6],[7] Jednym z wiadących prroducentów stterowników prrogramowalnyc ch PLC C jest firma SIEMENS. Na N rys. 15.3 przedstawion ny jest podział sterrowników PLC firmy Siemens ze wzzględu na rodzaj r aplikac cji prze emysłowych. Rys s. 15.3. Zaszereg gowanie sterown ników PLC [6], [7 7] 61 13
Sterownik SIMATIC S7-1200 to nowy modułowy, kompaktowy sterownik PLC, przeznaczony do zastosowania w aplikacjach przemysłowych. Jednostka centralna CPU tego sterownika składa się z modułu procesora, zintegrowanego zasilacza, obwodów wejściowych oraz obwodów wyjściowych umieszczonych w zwartej, plastikowej obudowie (rys. 15.4). Rys. 15.4. Moduły sterownika SIMATIC S7-1200 [6] Jednostka centralna jest wyposażana w port PROFINET umożliwiający komunikację poprzez sieć PROFINET. CPU monitoruje wejścia i steruje wyjściami zgodnie z oprogramowaniem przygotowanym przez użytkownika, które może zawierać logikę boolowską, zliczanie, operacje czasowe, złożone operacje arytmetyczne i komunikację z innymi inteligentnymi urządzeniami. Sterownik S7-1200 może być łatwo montowany na standardowej szynie DIN lub bezpośrednio na płycie montażowej. Każda jednostka centralna jest chroniona hasłem umożliwiającym konfigurowanie dostępu do funkcji CPU. Zapewnia ona 3-poziomową ochronę przed niepowołanym dostępem do pewnych funkcji. Użytkownik podczas konfigurowania poziomu bezpieczeństwa i hasła CPU, ogranicza funkcje i obszary pamięci, do których można mieć dostęp bez podania hasła. Podczas wpisywania hasła nie jest rozróżniana wielkość liter. Płytki sygnałowe (SB) pozwalają dodawać do CPU porty I/O (rys. 15.5). Można dołączyć jedną SB z cyfrowymi lub analogowymi portami I/O. SB jest dołączana od strony frontowej CPU. 614
Rys. 15.5. Montaż płytki sygnałowej w sterowniku SIMATIC S7-1200 [6], [7] W sterowniku S7-1200 dostępnych jest 50KB pamięci roboczej, która dzielona jest dynamicznie na pamięć programu i danych. Przewidziano również zintegrowaną pamięć ładowania o pojemności do 2 MB, oraz 2 kb zintegrowanej pamięci nieulotnej. Do przenoszenia programów do wielu jednostek centralnych CPU może być wykorzystywana opcjonalna karta pamięci SIMATIC Memory Card (rys. 15.6). Karta Memory Card może być również wykorzystana do przechowywania różnych plików lub do uaktualniania systemu operacyjnego sterownika (firmware). Rys. 15.6. Karta pamięci SIMATIC Memory Card [7] Karta pamięci może być użyta jako Karta Program lub Transfer: Karta Program pełni funkcję pamięci CPU, sterującą wszystkimi funkcjami CPU i musi pozostawać zainstalowana w CPU, Karta Transfer służy do przeniesienia zapamiętanego projektu z karty do CPU (bez konieczności użycia STEP 7 Basic), a następnie musi być usunięta. Pamięć ładowania jest pamięcią nieulotną, w której przechowywane są programy użytkownika, dane i konfiguracja. Jest ona ulokowana albo na karcie pamięci (jeśli jest) albo w CPU i zachowana w przypadku utraty zasilania. Projekt wczytany do CPU najpierw trafia do obszaru pamięci ładowania. 615
Pamięć robocza RAM jest pamięcią ulotną, służącą do przechowywania pewnych elementów projektu użytkownika podczas wykonywania programu. W celu poprawy wydajności systemu, CPU kopiuje pewne elementy projektu z pamięci ładowania do pamięci roboczej. Zawartość tej pamięci jest tracona przy odłączaniu zasilania i CPU odtwarza ją po ponownym włączeniu zasilania. Pamięć trwała jest pamięcią nieulotną przechowującą ograniczoną liczbę wartości z pamięci roboczej. Pamięć trwała jest stosowana do przechowywania wartości z wybranych miejsc pamięci użytkownika na wypadek utraty zasilania. CPU jest celowo zaprojektowana w taki sposób, by w przypadku utraty zasilania miała dostatecznie dużo czasu na przepisanie do pamięci trwałej ograniczonej liczby wybranych wartości. Po przywróceniu zasilania te zachowane wartości są odtwarzane do oryginalnych pozycji. SIMATIC STEP 7 Basic z wbudowanym SIMATIC WinCC Basic posiada zorientowane zadaniowo, inteligentne i intuicyjne edytory. Pozwalają one wykorzystywać oprogramowanie jako wspólną inżynierską platformę dla programowania sterowników SIMATIC S7-1200 i konfigurowania paneli SIMATIC HMI Basic Panels. W SIMATIC STEP 7 Basic wbudowano funkcje diagnostyki, serwisu i programowania, dzięki czemu jest on uniwersalnym narzędziem inżynierskim. Ekran programu SIMATIC STEP 7 Basic przedstawia rys. 15.7 Rys. 15.7. SIMATIC STEP 7 Basic [7] Użytkownik ma możliwość wyboru języka programowania oraz dostęp do ogólnej struktury programu. 616
Sterownik S7-1200 posiada następujące nowe funkcje technologiczne: Szybkie wejścia dla zliczania i pomiarów - do 6 szybkich liczników 3 x 100kHz oraz 3 x 30kHz do obsługi enkoderów inkrementalnych, pomiaru częstotliwości, lub szybkiej reakcji na zdarzenia procesowe, Szybkie dwa wyjścia PTO 100kHz (modulacja częstotliwości) dla kontroli prędkości oraz pozycjonowania, zapewniające 50% wypełnienie impulsu dla sterowania prędkością w otwartej pętli oraz pozycjonowania silników krokowych lub silników servo oraz szybkie liczniki HSC0 oraz HSC1, które mogą być użyte do określenia pozycji dla sterowania PTO, Instrukcje PLCopen motion, będące międzynarodowym standardem w zakresie kontroli ruchu, dla kontroli prędkości oraz pozycjonowania, PID Control dla obsługi regulacji PID - Do 16 pętli regulacji PID oraz PID Auto Tuning. 15.4. Programowanie sterowników PLC Programowanie sterowników programowalnych PLC oparte jest o normę IEC 1131 Programmable Controllers opracowaną i wydaną w 1993r. przez Międzynarodową Komisję Elektroniki (International Electronical Commission IEC). Każdy program sterujący, bez względu na jego postać, wykonywany jest cyklicznie; po wykonaniu ostatniej instrukcji program sterujący jest analizowany od początku, co ilustruje rys.15.8: Rys. 15.8. Cykl programowy (ang. = scan cycle ) Odczyt wejść polega na odczytaniu aktualnych stanów na wejściach sterownika i wpisaniu ich do rejestrów wejściowych, po czym następuje wykonanie części logicznej programu sterującego. W kolejnym kroku sterownik PLC komunikuje się poprzez port komunikacyjny z programatorem lub modułami zewnętrznymi oraz przeprowadza samodiagnostykę. 617
Ostatnim krokiem cyklu jest obsługa wyjść, polegająca na uaktualnieniu ich stanu, poprzez zmianę wartości rejestrów wyjściowych, którym przypisuje się fizyczne wyjścia sterownika. Czas wykonania cyklu zależy od rozmiaru programu użytkowego, ilości użytych wejść i wyjść sterownika i ilości danych wymienianych podczas komunikacji. W rejestrach specjalnych o adresach: SMW22, SMW24 i SMW26 można odczytać w milisekundach odpowiednio: czas ostatniego cyklu pracy sterownika (ostatniego skanowania), oraz czas minimalny i maksymalny cyklu pracy liczony od momentu uruchomienia sterownika. 15.4.1. Elementy oprogramowania sterowników PLC Zgodnie z normą IEC 1131, oprogramowanie sterowników PLC zawiera następujące elementy: Typy danych, Elementy organizacyjne oprogramowania: o Funkcje, o Bloki funkcyjne, o Programy, Elementy konfiguracji, takie jak zasoby (resources), realizowane w ramach zasobów zadania (tasks), zmienne globalne (global variables), ścieżki dostępu (access paths), Elementy programowania za pomocą grafów sekwencji (SFC). Uruchomienie konfiguracji inicjuje zmienne globalne i uruchamia wszystkie należące do tej konfiguracji zasoby. Uruchomienie zasobu powinno spowodować inicjację wszystkich zmiennych i uruchomienie wszystkich zadań w zasobie. Inicjacja zmiennych polega na nadaniu im wartości początkowych (initial value), wartości domyślnych (default initial value), podtrzymaniu istniejących wartości (retained value). 15.4.1.1. Typy danych Typy danych liczbowych: o całkowite ze znakiem: SINT, INT, DINT, LINT odpowiednio 8, 16, 32, 64 bitowe, o całkowite bez znaku: USINT, UINT, UDINT, ULINT 8, 16, 32, 64 bitowe, 618
o rzeczywiste: REAL, LREAL 32, 64 bitowe, w zapisie dziesiętnym, wykładniczym, dwójkowym, ósemkowym i szesnastkowym, Dane logiczne: logiczne zero i jedynka oraz logiczne BOOL (boolean), Dane w postaci ciągu znaków, w tym ciągu znaków o zmiennej długości (STRING) zawartego w apostrofach, Dane w postaci czasowej, które można przedstawić: o jako czas trwania zdarzenia w jednostkach czasu poprzedzonych słowem kluczowym T#, t#, TIME#, time#, przy czym jednostki czasu mogą być oddzielone znakiem podkreślenia, np.: t#5d (5 dni), TIME#5d_2h_10m_23s_2.4ms o jako godzina dnia połączona ewentualnie z datą stosowane są wtedy przedrostki: DATE#, D#, TIME_OF_DAY#, TOD#, DATE_AND_TIME#, DT# czas trwania (T#)S, np.: data D#0001-01-01, godzina dnia TOD#00:00:00,. data i czas DT #2000-02-26-11:12:55.02, BYTE bajt, WORD, DWORD, LWORD słowo pojedyncze 16 bitowe, podwójne 32 bitowe i długie 64 bitowe. Z elementarnych typów danych można tworzyć rodzaje danych, np.: ANY_NUM zawierający wszystkie typy numeryczne, ANY_INT, ANY_REAL itd. Można definiować własne typy danych za pomocą słów kluczowych TYPE...END_TYPE. Najczęściej definiowane są następujące typy pochodne: Typ wyliczeniowy jest to uporządkowany i skończony zbiór wartości oznaczony dowolnymi identyfikatorami, np.: TYPE Nazwa_typu : (wartość_1, wartość_2,...); END_TYPE Zmienne typu wyliczeniowego mogą przyjmować tylko wartości określone w deklaracji typu. Początkowa wartość domyślna zmiennej typu wyliczeniowego jest równa pierwszej wartości z podanej listy (np.: jednokoncówkowy), jednak można przypisać inną wartość początkową z podanej listy, np.: TYPE 619
Nazwa_typu : (wartość_1, wartość_2,...) : = wartość_2; END_TYPE Typ okrojony posiadający ograniczony zakres wartości, np.: TYPE Nazwa_typu : INT (-1000..1000) ; END_TYPE Początkowa wartość domyślna danej typu okrojonego jest równa dolnemu ograniczeniu, jednak można przypisać inną wartość początkową, z podanego przedziału wartości, np.: TYPE Nazwa_typu : INT (-1000..1000) : = -10 ; END_TYPE Typ tablicowy, składający się z określonej liczby elementów tego samego typu, zwanego typem składowym, np.: TYPE Nazwa_tablicy : ARRAY [1..20] OF Typ_składowy; END_TYPE Domyślnie, typ tablicowy ma wartości początkowe przypisane typowi składowemu, jednak można przypisać inną wartość początkową. Typ strukturalny służy do opisu złożonych struktur danych, zawierających dane różnych typów. W definicji typu należy podać typy składowe oraz metodę strukturalizacji, za pomocą konstrukcji STRUCT...END_STRUCT, np.: TYPE Nazwa_typu_strukturalnego : STRUCT Składnik_1 : Typ_składnika_1 ; Składnik_2 : Typ_składnika_2 ; Składnik_3 : Typ_składnika_1 ; END_STRUCT ; END_TYPE Domyślne wartości początkowe danych typu strukturalnego określane są na podstawie typów składowych. 15.4.1.2. Rodzaje i deklaracja zmiennych W programowaniu sterowników PLC rozróżnia się następujące rodzaje zmiennych: 620
Zmienna skalarna (jednoelementowa), jest to pojedyncza zmienna należąca do typu elementarnego, wyliczeniowego lub okrojonego. Może być określana symbolicznie przez nazwę lub w sposób bezpośrednio określający powiązanie z wejściami (I), wyjściami (Q) lub pamięcią (M) sterownika. Jej symbol ma wówczas postać: %Lokalizacja (Rozmiar)Adres. Rozmiar zmiennej określa się przy użyciu symboli: X pojedynczy bit B bajt (8 bitów) W słowo (16 bitów) D słowo podwójne (32 bity) L słowo poczwórne (64 bity) Adres zmiennej określa jej miejsce w pamięci. Może mieć strukturę hierarchiczną, oddzieloną kropkami (od najwyższego do najniższego poziomu), np.: %QX23 lub %Q23 23 bit na wyjściu, %IB43-43 bajt na wejściu, %MD5 słowo podwójne pod adresem 5 w pamięci %IW2.4.3.2 drugie słowo dla modułu wejściowego na 3 pozycji w 4 kasecie dla drugiej magistrali na wejściu sterownika, Zmienne wieloelementowe, typu tablicowego lub strukturalnego. Adres elementu tablicy może mieć postać: INPUT_TAB[4,%MD5] element tablicy dwuwymiarowej, znajdujący się w 4 wierszu i kolumnie określonej zmienną %MD5. Deklaracja zmiennej strukturalnej może mieć postać: Nazwa_zmiennej_strukturalnej : Nazwa_typu_strukturalnego ma poszczególnym elementom przyporządkowane wartości: Nazwa_zmiennej_strukturalnej.Składnik_1:=wartość_1; Nazwa_zmiennej_strukturalnej.Składnik_2:=wartość_2;.. Każda zmienna przypisana elementowi konfiguracji układu w chwili startowej tego elementu może przyjąć jedną z następujących wartości początkowych: wartość domyślną dla typu do jakiego należy zmienna, wartość zadeklarowaną przez użytkownika, wartość jaką posiadała przed zatrzymaniem tego elementu konfiguracji (pamięć stanu elementu przy tzw. gorącym restarcie), deklarowaną poleceniem RETAIN. Są to tak zwane zmienne zachowywane. 621
Deklaracje różnego rodzaju zmiennych maja postać: VAR deklaracja zmiennych lokalnych (wewnętrznych) w elemencie, VAR_INPUT deklaracja zmiennych wejściowych do elementu oprogramowania; nie mogą być zmieniane w elemencie, VAR_OUTPUT - deklaracja zmiennych wyjściowych do innych elementów oprogramowania, VAR_IN_OUT - deklaracja zmiennych wejściowych, które mogą być zmieniane, VAR_GLOBAL deklaracja zmiennych globalnych, VAR_EXTERNAL deklaracja zmiennych zapewniających dostęp w elemencie oprogramowania do zmiennych globalnych ; mogą być zmieniane w elemencie, VAR_ACCESS deklaracja ścieżek dostępu, VAR RETAIN deklaracja zmiennej zachowywanej, CONSTANT deklaracja stałej, AT określenie lokalizacji zmiennej. Deklaracja zmiennych powinna zawierać określenie typu, do jakiego one należą i ewentualnie ich fizyczną lub logiczną lokalizację. Deklaracja zmiennych kończy się słowami END_VAR. 15.4.1.3. Elementy organizacyjne oprogramowania Podstawowymi elementami oprogramowania sterowników PLC są funkcje, bloki funkcyjne oraz programy. Funkcje są elementami oprogramowania, zwracającymi jeden statyczny element danych, co oznacza, że funkcja wywołana z tymi samymi argumentami zawsze daje tę samą wartość na wyjściu. W graficznych językach programowania sterowników wprowadza się dla funkcji dodatkowe wejście logiczne EN oraz wyjście logiczne ENO. Jeżeli w trakcie wywołania funkcji na wejściu EN jest FALSE (0) to operacje definiowane przez ciało funkcji nie będą wykonywane i na wyjściu ENO tez będzie FALSE, Jeżeli na wejściu EN jest TRUE (1), to operacje definiowane przez ciało funkcji będą wykonywane i na wyjściu ENO też jest TRUE, W przypadku wystąpienia błędu na wyjściu ENO pojawi się FALSE. 622
Deklaracja funkcji zawarta jest między słowami FUNCTION oraz END_FUNCTION., i ma postać: FUNCTION Nazwa_funkcji : Typ_wyniku VAR_INPUT Zmienna_1, zmienna_2 : Typ_zmiennych; (*argumenty wejściowe*) Zmienna_3 : Typ_zmiennej_3 : = wartość_zmiennej_3 ; END_VAR Nazwa_funkcji: = wyrażenie ; (*ciało funkcji*) END_FUNCTION Funkcje standardowe mogą być określone dla argumentów określonego typu lub dla argumentów pewnego rodzaju (np. ANY_NUM), natomiast funkcje definiowane przez użytkownika dotyczą tylko określonego typu. Bloki funkcyjne tym róznią się od funkcji, że mogą zwracać więcej niż jeden element. Posiadają one wewnętrzne zmienne zawierające informacje o stanie bloku, są więc elementami dynamicznymi. Wszystkie wartości zmiennych wyjściowych oraz niezbędne wartości zmiennych wewnętrznych są przechowywane pomiędzy kolejnymi chwilami wykonania bloku, a więc kolejne wywołania bloku z tymi samymi argumentami nie muszą dawać tych samych wartości wyjściowych. Bloki funkcyjne mogą być wywoływane w programie wielokrotnie, przy czym każde wywołanie stanowi kopię bloku posiadającą swoją nazwę oraz strukturę danych wyjściowych i wewnętrznych zmiennych bloku. Deklaracja bloku funkcyjnego zawarta jest pomiędzy słowami kluczowymi FUNCTION_BLOK...END_FUNCTION_BLOK. Zawiera ona blok deklaracji w którym deklarowane jest łącze zewnętrzne (zmienne VAR_INPUT oraz VAR_OUTPUT), określające sposób komunikacji między blokiem funkcyjnym a elementem go wywołującym i deklaracje zmiennych lokalnych, oraz ciało bloku określające działania wykonywane w ramach bloku. W programowaniu sterowników PLC wykorzystywane jest wiele standardowych bloków funkcyjnych, takich jak przerzutniki bistabilne, czasomierze, liczniki itp. Według IEC 1131, program jest to zbór logicznie powiązanych elementów języka programowania koniecznych do zamierzonego przetwarzania sygnałów w celu sterowania urządzeniem lub procesem za pomocą systemu sterowników programowalnych [ ]. Program zawarty jest między słowami kluczowymi PROGRAM...END_PROGRAM. Programy mogą być realizowane tylko w ramach zasobów, natomiast bloki funkcyjne tylko w ramach programów. 623
15.4.1.4. Elementy konfiguracji Konfiguracja zawiera: zasoby (resources), realizowane w ramach zasobów zadania (tasks), zmienne globalne (global variables), ścieżki dostępu (access paths). Deklaracje elementów konfiguracji mają postać: CONFIGURATION...END_CONFIGURATION deklaracja konfiguracji, VAR_GLOBAL..END_VAR - deklaracja zmiennych globalnych wewnątrz konfiguracji, RESOURCE...ON...END_RESOURCE - deklaracja zasobu wewnątrz konfiguracji; słowo ON służy do określenia funkcji procesora, interfejsu użytkownika oraz interfejsu z czujnikami i elementami wykonawczymi, realizującymi programy i zadania skojarzone z zasobem, zawarte w bibliotece zasobu, VAR_GLOBAL..END_VAR - deklaracja zmiennych globalnych wewnątrz zasobu, TASK deklaracja dla zadania okresowego lub nieokresowego wewnątrz zasobu, PROGRAM deklaracja skojarzonego z zadaniem programu lub bloku funkcyjnego, lub tylko deklaracja programu, VAR...ACCESS...END_VAR deklaracja ścieżek dostępu do zmiennych globalnych, do zmiennych globalnych w zasobach i w konfiguracjach oraz do wejść i wyjść programu. Zadania kontrolują wykonanie cyklu programowego i wywołują zbiór elementów oprogramowania, zawierający programy i bloki funkcyjne. Zadania można podzielić na nieokresowe, reagujące na każde wystąpienie narastającego zbocza określonej zmiennej logicznej, oraz okresowe. Każdemu elementowi oprogramowania, a więc i skojarzonego z nim zadania, można przydzielić priorytet, wykorzystywany do szeregowania z wywłaszczaniem lub bez wywłaszczania. Program, który nie jest skojarzony z zadaniem powinien mieć najniższy priorytet i powinien być uszeregowany do wykonania od razu po starcie zasobu, a następnie ponownie uszeregowany w kolejce. Wykonywanie bloków funkcyjnych w ramach programu powinno być synchronizowane, w celu zapewnienia właściwej współbieżności w dostępie do danych. 624
15.4.1.5. Elementy oprogramowania za pomocą grafów sekwencji Graf sekwencji SFC (Sequential Function Chart) jest graficznym narzędziem, umożliwiającym modelowanie współbieżnych działań sekwencyjnych. Składa się on z wzajemnie sprzężonych etapów i przejść. Z każdym etapem skojarzony jest zbiór odpowiednich działań, a z każdym przejściem między etapami powiązany jest warunek przejścia. Etap (step) może być aktywny lub nieaktywny. Aktywność etapu określa wskaźnik etapu, który przyjmuje wartość 1 dla etapu aktywnego lub 0 dla etapu nieaktywnego. Czas aktywności etapu określa zmienna typu TIME (domyślnie t#0s). Poszczególne elementy SFC powinny przechowywać informacje o stanie systemu. W każdej chwili stan elementu oprogramowania określony jest przez zestaw aktywnych etapów oraz wartości zmiennych wewnętrznych i wyjściowych elementu. Stan początkowy elementu oprogramowania określają wartości początkowe jego zmiennych wewnętrznych i wyjściowych oraz zbiór etapów początkowych. Każda sieć SFC powinna zawierać tylko jeden etap początkowy, dla którego wskaźnik etapu przyjmuje domyślnie wartość początkową = 1. Etapy i związane z nimi parametry mają zasięg lokalny. Etap może być opisany za pomocą instrukcji STEP...END_STEP, natomiast etap początkowy za pomocą instrukcji INITIAL_STEP...END_STEP, Do łączenia etapów służy instrukcja TRANSITION...END_TRANSITION Przejście (transition) przedstawia warunki logiczne, które muszą być spełnione przy przeniesieniu sterowania z etapów poprzedzających przejście na etapy za przejściem. Z każdym przejściem skojarzony jest warunek przejścia. 15.4.2. Języki programowania PLC Stosowane języki programowania PLC zostały zdefiniowane w normie IEC 1131 Programmable Controllers. Można je podzielić na dwie grupy: języki tekstowe należą do nich: o język listy instrukcji IL (Instruction List), o język strukturalny ST, (Structured Text, języki graficzne: o język schematów drabinkowych LD (Ladder Diagram), 625
o język schematów blokowych FBD (Function Block Diagram). W praktyce, języki IL oraz ST są często połączone, dając język tekstowy STL. Wszystkie wersje programu sterującego, napisane w dowolnym z wymienionych języków, są równoważne i dają te same możliwości funkcjonalne, a jedynie różnią się tylko sposobem zapisu. 15.4.2.1. Język listy instrukcji STL Język listy instrukcji IL, będący odpowiednikiem języka assembler, jest to zapis zwarty, operujący na skrótach literowych symbolizujących np.: wejścia/wyjścia sterownika, operacje logiczne, arytmetyczne, operacje relacji, funkcje przerzutników, czasomierzy, liczników oraz innych bloków funkcyjnych, stanowiący ciąg kolejno ułożonych instrukcji, wykonywanych cyklicznie od góry do dołu. Każdej operacji lub funkcji realizowanej przez sterownik przyporządkowane są jedno lub dwuliterowe skróty pochodzą od pierwszych liter pełnej nazwy funkcji. Lista instrukcji jest podstawową formą programu pracy sterownika, umożliwiającą przedstawienie na ekranie programatora dużych fragmentów programu i łatwą zmianę adresów i argumentów funkcji. Język strukturalny ST (Structured Test) jest odpowiednikiem języka algorytmicznego wysokiego poziomu zawierającego struktury sterujące, takie jak: If...then...else...end if, Case...of...end case, For...to...do...end for, While...do...end while, Repeat...end repeat. Połączenie tych dwóch języków daje język tekstowy STL 15.4.2.2. Język schematów drabinkowych Język schematów drabinkowych LD jest graficzną formą zapisu programu pracy sterownika. Wykorzystuje on symbole elektryczne i zasady sterowania analogiczne do stosowanych w stykowych obwodach przekaźnikowych, opisywanych za pomocą schematów elektrycznych rysowanych w formie przypominającej drabinkę. Program pracy sterownika pisany w postaci schematu drabinkowego tworzony jest z elementów zawartych w bibliotece, takich jak: elementy wejścia (styki) / wyjścia (cewki), liczniki, czasomierze, funkcje arytmetyczne, logiczne, porównań i relacji, bloki funkcyjne, 626
przerzutniki, bloki programowe, itp. Część logiczna programu sterującego składa się z umieszczonych jeden pod drugim tzw. szczebli programowych, zawierających poszczególne elementy. Przypominają one typowy elektryczny schemat połączeń, posiadający symboliczne źródło zasilania, w którym zakłada się przepływ sygnału od szyny umieszczonej po lewej stronie schematu do przekaźników lub bloków funkcyjnych umieszczonych po prawej stronie każdego szczebla. Kolejne szczeble drabiny odczytywane są kolejno od góry do dołu i powtarzane cyklicznie od początku. Każdy szczebel drabiny logicznej (oznaczany jako NETWORK) musi posiadać odpowiedni format i składnię, przy czym spełnione musza być następujące zasady: każdy szczebel może zawierać do 16 linii równoległych, każda linia może zawierać do 16 elementów logicznych połączonych szeregowo, ostatnim elementem szeregowego połączenia w danym szczeblu musi być przekaźnik lub blok funkcyjny, szczebel może zawierać maksymalnie do 16 przekaźników, szczebel musi zawierać przynajmniej jeden styk przed wystąpieniem przekaźnika, bloku funkcyjnego lub połączenia pionowego, nie może wystąpić rozgałęzienie mające początek lub koniec wewnątrz innego odgałęzienia. 15.4.2.3. Język schematów blokowych Język schematów blokowych FBD jest odpowiednikiem schematów przepływu sygnału dla obwodów logicznych, przedstawionych w postaci połączonych bramek logicznych oraz bloków funkcyjnych. 15.5. Przykłady programowania sterowników PLC Rysunek 15.9 przedstawia schematyczną budowę stanowiska pomiarowego wykorzystującego w obwodzie sterowania sterownik programowalny S7 314C-2DP firmy SIEMENS. W celu porównania jakości sterowania (np. stabilizacji prędkości obrotowej przy zmianie obciążenia) z wykorzystaniem sterownika PLC można zastosować regulator PID lub regulator FUZZY. 627
Rys. 15.9. Schemat budowy stanowiska pomiarowego. [8] Programowanie sterowników PLC można realizować za pomocą programatora lub komputera osobistego PC, z wykorzystaniem łącza szeregowego. Po uruchomieniu SIMATIC Managera możemy wybrać jeden z gotowych projektów lub rozpocząć pracę nad nowym projektem (rys. 15.10). Menadżer ten umożliwia również uruchomienie kilku przydatnych narzędzi: Accessible Nodes umożliwia przeglądanie oraz modyfikowanie zawartości pamięci sterownika S7 oraz karty pamięci. Przed każdą próbą wczytania nowego projektu do sterownika dokonywany jest przegląd zawartości pamięci. Umożliwia to wyeliminowanie ze sterownika zbędnych funkcji i bloków, które nie biorą udziału w pracy określonego projektu; S7-PLCSIM dodatkowy program, którego zadaniem jest symulowanie obecności niepodłączonego sterownika PLC w celu sprawdzenia poprawności działania projektu. Ponieważ dokonanie weryfikacji działania projektu przed jego wgraniem do pamięci sterownika jest jednym z podstawowych sposobów zabezpieczenia się przed skutkami niepoprawnie napisanego programu, zatem użycie 628
symulatora sterownika, zamiast rzeczywistego obiektu, pozwala zweryfikować i poprawić błędy programu. Rys. 15.10. Menager projektów programu STEP7. [8] Jedną z pierwszych rzeczy, jaka musi zostać wykonana przy tworzeniu nowego projektu jest ustawienie poprawnej konfiguracji posiadanego modelu zasilacza oraz jednostki centralnej sterownika. Oprogramowanie Step7 rozpoznaje budowę oraz rodzaj procesora sterownika, a także umożliwia jego konfigurację w oknie konfiguracji HW Config (rys. 15.11). W oknie tym można odpowiednio ustawić adresy wejść oraz wyjść sterownika, częstotliwość uruchamiania bloków cyklicznych zawierających fragmenty kodów programu (np. OB35) oraz ustawić wartość napięcia lub prądu wejść i wyjść analogowych. Przykładowo, ustawiono sygnały analogowe wejściowe oraz wyjściowe 0..10V. Rys. 15.11. Konfiguracja sprzętowa sterownika PLC. [8] 629
Aby umożliwić programowanie sterownika S7 przy pomocy komputera PC lub programatora niezbędne jest określenie przy pomocy jakiego interfejsu odbywa się komunikacja (MPI lub Profibus DP) oraz określić jego parametry. W przypadku przeprowadzonych badań wykorzystany zastał interfejs MPI 1, który z komputera PC wyposażonego w kartę komunikacyjną CP5611 (rys. 15.12) przesyłał program do sterownika S7 314C-2DP. Rys. 15.12. Ustawienia konfiguracyjne połączenia sterownika z komputerem. [8] Tak przygotowany projekt wykorzystany został w każdym z programów przeznaczonych do sterowania silnikiem tarczowym prądu stałego z elektronicznym komutatorem. 15.5.1. Sterowanie bez regulatora W celu uruchomienia silnika tarczowy prądu stałego z elektronicznym komutatorem przy pomocy sterownika programowalnego PLC niezbędne było wykonanie kilku bloków funkcyjnych (FB1, FB2) i sprzęgniętych z nimi bloków danych (DB1, DB2) oraz funkcji (FC1). Nadrzędnym blokiem, w którym wywoływane są wszystkie wymienione elementy jest blok organizacyjny OB1 (rys. 15.13). 1 Message Passing Interface (MPI) (z ang. Interfejs Transmisji Wiadomości) 630
Rys. 15.13. Podstawowy program sterujący w STEP7. [8] Blok funkcyjny FB1 zawiera algorytm przełączania tranzystorów mostka, w zależności od wartości sygnałów dostarczanych z hallotronów. Natomiast blok funkcyjny FB2 zawiera kod przełączania tranzystorów, ale dla przeciwnych obrotów silnika. Rys. 15.14. Zawartość bloku funkcyjnego FB1 (fragment). [8] Na podstawie rysunku 15.14 wiadomo, że aby nastąpiło załączenie tranzystora dolnej części mostka w gałęzi A (GLA) niezbędne jest załączenie jednej z dwóch kombinacji hallotronów: I: H1 załączony, H2 załączony, H3 wyłączony II: H1 wyłączony, H2 załączony, H3 wyłączony Blok OB1 jest podstawowym blokiem, w którym następuje wywołanie innych części programu STEP7. Umieszczone w nim bloki funkcyjne oraz funkcje zostają wykonane w sposób cykliczny, zależny od ich zawartości oraz szybkości procesora sterownika PLC. Przy pomocy wejść binarnych (przełączników na konsoli sterowniczej umieszczonej przy stanowisku badawczym) wybrany został kierunek obrotów silnika, a co za 631
tym idzie wybrana została funkcja realizująca określony algorytm sterowania (FB1 lub FB2). Prędkość obrotowa w tej wersji programu sterującego nie była stabilizowana na określonym poziomie, więc aby silnik obracał się z określoną prędkością, jej wartość deklarowana była za pomocą zewnętrznego sygnału analogowego przesyłanego przez sterownik PLC bezpośrednio do układu zasilającego mostek tranzystorowy (układ PWM). 15.5.2. Regulator PID Elementy programu sterującego wykorzystującego regulator PID przedstawione zostały na rysunku 15.15. Rys. 15.15. Elementy składowe programu z regulatorem PID. [8] Algorytm regulatora PID znajduje się w bloku FB41, natomiast dane dla których dokonywane były obliczenia znajdują się w sprzęgniętym z nim bloku danych DB41. Oprócz wymienionych elementów oraz bloków, które służą do sterowania komutatorem (FB1, FB2, FC1, DB1, DB2) w sterowniku znajduje się również blok OB35. Jest to blok wykonywany w sterowniku w sposób cykliczny, z cyklem pracy 5ms. Wartość ta została dobrana doświadczalnie i jest wartością najmniejszą, jaką można zastosować w wykorzystanym sterowniku PLC. Poniżej tej wartości sterownik gubił niektóre pozycje z przełączeń komutatora elektronicznego, co objawiało się nierównomierną pracą silnika tarczowego. Sterownik umożliwia również analizę czasową działania poszczególnych elementów programu sterującego. Z analizy tej wynika, że najdłuższy fragment programu sterującego wykonywany jest przez 5 ms. 632
Rys. 15.16. Regulator PID w sterowniku S7-300. [7] Blok organizacyjny OB35 zawiera między innymi element CONT_C (rys. 15.16) w którym zostały podane wszystkie parametry wejściowe i wyjściowe regulatora PID, np.: GAIN wzmocnienie regulatora (człon proporcjonalny P), TI czas zdwojenia (człon całkujący I), TD czas wyprzedzenia (człon różniczkujący D), PV_PER wartość rzeczywista sygnału sterowanego (sygnał analogowy PIW752), SP_INT wartość zadana sygnału (w procentach wartości maksymalnej sygnału), LMN_PER wartość wyjściowa sygnału sterowanego (sygnał analogowy PQW754). 633
Rys. 15.17. Schemat regulatora PID w sterowniku PLC S7-300. [7] Rysunek 15.17 przedstawia schematyczną budowę regulatora ciągłego PID zastosowanego w programie sterującym. Jak widać, na podstawie schematu możliwe jest zastosowanie regulatora, który będzie posiadał tylko niektóre z członów regulujących (P_SEL, I_SEL, D_SEL). W przypadku przeprowadzonych badań, wszystkie człony regulatora były załączone. Istnieje metoda identyfikacji obiektu i optymalizacji nastaw regulatora PID bezpośrednio w sterowniku PLC [9], jednak wymaga ona użycia dodatkowego pakietu Standard PID Control. Program ten oprócz zadań regulacji ciągłej, impulsowej oraz krokowej daje dodatkowo możliwość zidentyfikowania obiektu i optymalizacji nastaw regulatora. 634
15.5.3. Regulator FUZZYCONTROL++ Kolejnym przykładowym programem sterującym pracą silnika tarczowego prądu stałego z elektronicznym komutatorem jest program sterujący prędkością obrotową silnika tarczowego z zaimplementowanym regulatorem FuzzyControl++. Program umieszczony został w pamięci sterownika programowalnego PLC S7 314C-2DP. Składa się on z następujących bloków (rys. 15.18): blok organizacyjny OB1 zawiera algorytm przełączania tranzystorów mostka komutatora elektronicznego na podstawie sygnałów uzyskanych z czujników hallotronowych, blok OB100 blok uruchamiany za każdym razem, gdy dokonywany jest restart programu sterownika, zawiera wartość początkową zmiennej MD2=0. Wartość ta wykorzystywana jest przy obliczaniu kierunku zmian prędkości obrotowej silnika (czy silnik przyśpiesza czy zwalnia, oraz z jaką szybkością dokonują się te zmiany), blok DB30 jest to blok danych zawierający algorytm obliczeń rozmytych przygotowany wcześniej w aplikacji FuzzyControl++, blok OB35 blok organizacyjny uruchamiany cyklicznie co 6 ms, zawiera kod, który: o oblicza różnicę prędkości obrotowej silnika między wartością zadaną i rzeczywistą; o oblicza kierunek zmian tej prędkości, konwertując go na przedział <-1, 1>; o tak obliczone wartości wprowadza na wejścia regulatora rozmytego opisanego blokiem FB30; o oblicza wartość sygnału wyjściowego regulatora FB30 na podstawie wczytanego algorytmu obliczeń rozmytych (zmienna DB30). Na rysunkach 15.19 do 15.23 przedstawiono przebieg procesu projektowania aplikacji przeznaczonej do sterowania prędkością silnika tarczowego prądu stałego wykonanej przy pomocy programu FuzzyControl++ firmy SIEMENS. Po określeniu ilości wejść i wyjść regulatora rozmytego (rys. 15.19) kolejnym krokiem jest określenie ilości i rodzaju funkcji przynależności dla poszczególnych sygnałów. Zaproponowano następujące parametry regulatora: 5 funkcji przynależności dla wejścia pierwszego opisującego różnicę prędkości zadanej i rzeczywistej (rys. 15.20), 635
funkcje przynależności dla wejścia sygnału określającego kierunek zmian prędkości obrotowej silnika (rys 15.21), funkcje przynależności, w postaci singletonów (rys. 15.22), opisujące wyjście regulatora, baza reguł zawiera 8 pozycji. Reguły te opisują zależność sygnału wyjściowego regulatora (wartość napięcia zasilającego silnik) w zależności od wartości dwóch sygnałów wejściowych regulatora (rys. 15.23). Rys. 15.18. Program sterujący z regulatorem Fuzzy Logic dla sterownika PLC. [8] Rys. 15.19. Okno projektu regulatora fuzzy. [8] 636
Rys. 15.20. Funkcje przynależności dla pierwszego wejścia. [8] Rys. 15.21. Funkcje przynależności dla drugiego wejścia. [8] Rys. 15.22. Funkcje przynależności sygnału wyjściowego regulatora. [8] 637
Rys. 15.23. Baza reguł regulatora rozmytego. [8] Aplikacja FuzzyControl++ umożliwia również przeprowadzenie symulacji tak przygotowanego regulatora. Daje zatem możliwość weryfikacji poprawności wykonanego regulatora przed uruchomieniem go na rzeczywistym obiekcie. Kolejnym krokiem po weryfikacji poprawności działania projektu jest wgranie go do zmiennej DB30 umieszczonej w pamięci sterownika programowalnego PLC. Cała procedura umieszczania aplikacji w pamięci sterownika odbywa się poprzez przygotowany wcześniej kanał komunikacyjny w SIMATIC NET S7, wykorzystujący zewnętrzną kartę komunikacyjną CP5611 firmy Siemens. Tak przygotowany plik danych podłączony został do funkcji FB30, która umożliwia wykorzystanie regulatora rozmytego o maksymalnie 8 wejściach i 4 wyjściach (rys. 15.24). Rys. 15.24. Blok funkcyjny FB30 firmy SIEMENS reprezentujący regulator rozmyty. [7] 638