Sterowniki programowalne Systemy SCADA Programowanie w systemach SCADA Języki programowania sterowników PLC Sebastian Plamowski.

Slides:



Advertisements
Podobne prezentacje
JĘZYK VHDL Geneza: komputerowa symulacja układu cyfrowego, Departament Obrony USA opis skomplikowanego systemu w postaci schematu jest nieczytelny, szybkie.
Advertisements

Język C/C++ Funkcje.
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Programowanie I Rekurencja.
Wprowadzenie do C++ Zajęcia 2.
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
przetwarzaniu informacji
CPU.
Wykład 5 Przerwania w systemie SAB80C537 dr inż. Andrzej Przybył
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
P O D S T A W Y P R O G R A M O W A N I A
Systemy operacyjne.
PODSTAWY JĘZYKA PHP 1. czym jest 2. składnia 3. wersje 4. bazy danych
Temat nr 10: System przerwań
Wstęp do interpretacji algorytmów
PHP wprowadzenie.
Dr Anna Kwiatkowska Instytut Informatyki
Wprowadzenie do programowania w języku Turbo Pascal
Algorytmy Marek Pudełko
Budowa algorytmów Algorytm: skończony ciąg operacji wraz z ściśle sprecyzowanym porządkowaniem ich wykonywania, które po realizacji dają rozwiązanie dowolnego.
Inżynieria Oprogramowania
Podstawy programowania
Podstawy programowania II
Podstawy układów logicznych
LabVIEW Technologie informacyjne – laboratorium Irmina Kwiatkowska
Instytut Tele- i Radiotechniczny WARSZAWA
Podstawy programowania
Wyrażenia w Turbo Pascalu.
Budowa systemu komputerowego
Komputery i sterowniki przemysłowe
Mikroprocesory.
Algorytmy.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Elżbieta Fiedziukiewicz
Podstawowe informacje o maturze dla gimnazjalistów.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe – język C++
Wykład nr 9 Programowanie sterowników PLC Piotr Bilski
Spis treści W świecie algortmów -Budowa algorytmu
Projektowanie stron WWW
Podstawy języka Instrukcje - wprowadzenie
Podstawy programowania
ZAPIS BLOKOWY ALGORYTMÓW
Algorytmy.
Algorytmika.
Programowanie strukturalne i obiektowe C++
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
Diagram aktywności (czynności)
Procesor, pamięć, przerwania, WE/WY, …
Algorytmy- Wprowadzenie do programowania
Dokumentacja obsługi programów Kamil Smużyński Piotr Kościński.
Wprowadzenie do programowania w Pascalu mgr inż. Agata Pacek.
Systemy zarządzania przepływem pracy i systemy zarządzania procesami biznesowymi Karolina Muszyńska.
Podstawy programowania
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Struktura systemu operacyjnego
Wstęp do interpretacji algorytmów
Pętle – instrukcje powtórzeń
Tryby adresowania i formaty rozkazów mikroprocesora
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Czym jest PHP? ● Językiem programowania przeznaczonym do tworzenia i generowania dynamicznych stron WWW. Działa po stronie serwera: Klient Żądanie strony.
Grzegorz Cygan Wprowadzenie do PLC
Wstęp do Informatyki - Wykład 6
Haskell Składnia funkcji.
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Sterowniki programowalne TIA Portal
Zapis prezentacji:

Sterowniki programowalne Systemy SCADA Programowanie w systemach SCADA Języki programowania sterowników PLC Sebastian Plamowski

Informacje ogólne - prowadzący dr inż. Sebastian Plamowski (wykład, laboratorium) mgr inż. Patryk Chaber (wykład, laboratorium) mgr inż. Andrzej Wojtulewicz (wykład) Kamil Czerwiński (laboratorium)

Plan na najbliższy miesiąc 15.03 – wykład wprowadzający/ języki dr inż. Sebastian Plamowski 22.03 – wolne 29.03 – wykład L1 mgr inż. Patryk Chaber 05.04 – wykład L2 mgr inż. Andrzej Wojtulewicz 12.04 – wykład L2 mgr inż. Patryk Chaber Laboratorium 05.04 – 17.04 L1 19.04 – 08.05 L2 10.05 –22.05 L3 24.05 – 07.06 L4 (L3 i L4 jest w CS402 traktowane jako jedno lab)

Struktura Informatyczna przedsiębiorstwa MRP Material Requirements Planning MRPII Manufacturing Resource Planning ERP Enterprise Resource Planning ERPII (eERP) Enterprise Resource Planning CIM Computer Integrated Manufacturing CAD Computer Aided Design CAM Computer Aided Manufacturing MES Manufacturing Execution System SCM Supply Chain Management DRP Distribution Resource Planning CIM Computer Integrated Manufacturing MES Warehouse Management systems

Miejsce systemów SCADA SCADA (Supervisory Control And Data Acquisition) DCS (Distributed Control system)

Co to jest system SCADA

Funkcje systemów SCADA komunikację z aparaturą sterującą i stacjami operatorskimi, przetwarzanie zmiennych procesowych, oddziaływanie na proces (sterowanie, regulacja), kontrolę procesu i sygnalizację alarmów, raportowanie i archiwizacje danych, wizualizację graficzną przebiegu procesu na schematach, wykresach, itp., konfigurowanie struktur algorytmicznych i obrazów synoptycznych, wymianę danych z innymi systemami poprzez sieci FAN, LAN, WAN itd. Inne: optymalizacja procesów, diagnostyka stanu urządzeń Symulacja (prognozowanie, testy dla operatorów)

Użytkownicy systemów DCS i SCADA Operatorzy procesu (praca zmianowa 24h) Kierownicy zmiany Inżynierowie systemowi Administratorzy

Programowanie w systemach SCADA Programowanie HMI na poziomie stacji operatorskich Programowanie skryptów/programów na poziomie stacji operatorskiej Programowanie komputerów przemysłowych/sterowników PLC

Programowanie w systemach SCADA Programowanie na poziomie stacji operatorskich Programowanie grafik operator HMI (DCS i SCADA) Kolorystyka Standardy Nawigacja Typy stacyjek Potwierdzanie alarmów Usability – zasady projektów GUI i reklamy Wykorzystano: http://www.projektowaniegraficzne.pl/zasady-projektowania-grafiki-i-reklamy

Programowanie HMI - środowisko

Przykładowa grafika

Programowanie HMI – usability (Złota Proporcja) Złota Pro­por­cja może być opisana w ten sposób, że sto­sunek miedzy ele­men­tami danego ksz­ tałtu jak np. wysokość i sze­rokość musi wynosić w przy­bliże­niu 0.618. Jeśli Złota Pro­por­cja jest dobrze użyta w pro­jek­cie, bardzo pomaga w jego pozy­ty­wnym odbiorze.

Programowanie HMI – usability (Zasada podziału na trzy) Zasada ta mówi, ze oglą­da­jący w więk­szości przy­pad­ków będzie oglą­dał te punkty na kom­pozy­cji, miejscu których przeci­nają się linie. Dodatkowo dobrze jest umieszczać bardziej wartoś­ciowe ele­menty pro­jektu równo z tymi liniami.

Programowanie HMI – usability (Prawo Hicka) Prawo Hicka i niekorzystny paradoks wyboru. Czyli kiedy mniej produktów, oznacza więcej zysków. Prawo Hicka mówi o tym, że każdy wybór, który musi zostać wyko­nany, zwięk­ sza jego czas. Oznacza to, że czym więcej użytkownik musi dokonać wyborów tym trud­niejsze jest skorzys­tanie z „oferty” Im więcej wyborów musi dokonać odbiorca, tym mniej skuteczna będzie Twoja oferta. Tak naprawdę to prawo mówi o potrze­bie pros­toty. Klasy­czny case study prawa Hicka przed­stawia sklep z warzy­wami, który wys­tawił dar­mowy dżem do próbowa­nia przez klien­tów. W jed­nym przykładzie mają oni więcej niż 40 do spróbowa­nia i wyboru, a w drugim tylko kilka. Zaobserwowano, że klienci kupili więcej dżemów, jeśli prezen­towane były tylko cztery rodzaje zami­ast 40 i więcej. Więk­szość klien­tów decy­dowała się w ogóle na brak zakupu, jeśli miała do wyboru tak ogromną ilość.

Programowanie HMI – usability (Prawo Fittsa) Prawo Fittsa można opisać w ten sposób: „Czas potrzebny do dojś­cia do celu jest funkcją wielkości celu i odległości do niego” Prawo to również dzi­ała w drugą stronę. Dokładniej mówiąc, pewne ele­menty interfejsu powinny być trud­niejsze do kliknię­cia. Przykła­dem jest przy­cisk lub odnośnik anu­lowa­nia akcji. Dlat­ego możemy często zauważyć w różnych aplikacjach duży przy­cisk zapisa­nia, a mały anu­lowa­nia.

Programowanie HMI – usability (Prawo bliskości) Prawo bliskości jest często niedostrze­gane, nawet przez doświad­c­zonych pro­jek­ tan­tów. Prawo to stwierdza, że ele­menty, które są w jakiś sposób ze sobą pow­ iązane, przed­staw­iane są w jakiejś relacji i umieszczane blisko siebie. Brzmi to bardzo prosto i wydaje się być oczy­wiste, ale często bywa pomi­jane. Prawo to oznacza, że musisz być bardzo świadomy, jak wiele przestrzeni jest między ele­men­tami danego pro­jektu. Jeżeli w pro­jek­cie masz zbyt wiele ele­men­tów, które są blisko siebie, odbiorca stwierdzi, że jest to zro­bione celowo i że te ele­menty są ze sobą pow­iązane. Na przykład przy­cisk wyszuki­wa­nia, który jest za blisko przy­cisku zapisy­wa­nia czy anu­lowa­nia spowoduje przy­puszcze­nie, że przy­ciski zapisu i anu­lowa­nia są pow­ iązane z samym wyszuki­waniem. Warto więc zad­bać o odpowied­nią odległość między takimi ele­men­tami w pro­jek­cie. W bliskim sąsiedztwie stara­jmy się umieszczać takie elementy, które są ze sobą powiązane.

Programowanie HMI – usability (Komunikaty zwrotne) Komu­nikaty zwrotne są tech­niką, opanowaną przez pro­jek­tan­tów prze­mysłowych od wielu dekad. Komu­nikaty zwrotne przekazują użytkown­ikowi infor­ma­cje o tym, że coś się stało, się dzieje lub się stanie. Komu­nikacja z użytkown­ikiem jest czymś fun­da­men­tal­ny.

Programowanie HMI – usability (Brzytwa Ockhama) Brzytwa Ockhama. Najprostsze rozwiązanie jest zawsze najlepsze. „Wszys­tko powinno być tak proste, jak to tylko możliwe, ale nie prost­sze.” - Albert Einstein Przeładowanie plansz powoduje że stają się nieczytelne i trudne do utrzymania Pro­jekty proste są ele­ganckie, wysub­limowane i o wiele bardziej efek­ty­wne niż skom­p­likowane udeko­rowane styl­iza­cje.

High Performance HMI – nowy trend

Example: Condensate screen

Example: Heaters with valves

Main sequence

High Performance HMI

P&ID (Piping and instrumentation diagram/drawing) schematy stanowiły podstawę grafik

Programowanie skryptów/programów na poziomie stacji operatorskich w SCADA W SCADA dopuszcza się w pewnych przypadkach programowanie skryptów, które mają na celu odciążenie obliczeń wykonywanych na PLC. Proste okienka do wpisania formuł matematycznych – operacje w ramach jednego punktu wyjściowego. Wyzwalane na zdarzenie (wartość punktu) lub czasowo Skrypty obliczeniowe pisane w językach skryptowych często o własnej składni lub BASIC/PASCAL/C. Większość operacji matematycznych, tablice, instrukcje IF, FOR, WHILE. Dostęp odczyt/zapis do punktów. Wyzwalane na zdarzenie (wartość punktu) lub czasowo. Skrypty wywoływane z HMI, pozwalające na programowanie ekstra funkcjonalności (głównie graficznej). Programowanie w większości języków wysokiego poziomu, np. ostatnia wersja MAPS pozwala na programowanie w #C

Programowanie komputerów przemysłowych/sterowników PLC Norma IEC 61131-3 „Programmable Controllers" standaryzująca sposoby programowania składa się z pięciu części: Informacje ogólne (General Information), Sprzęt i wymagania testowe (Equipment and Test Requirements), Języki programowania (Programing Languages), Wytyczne użytkownika (User Guidelines), Wymiana informacji (Messaging Service).

Norma IEC 61131-3 – języki programowania Część trzecia normy IEC 61131-3 dotyczy języków programowania i stanowi jej najważniejszą część. Przede wszystkim dzięki niej ujednolicono koncepcję pro­gramowania PLC tak, aby w oparciu o wprowadzone zasady, użytkownik był w stanie programować bez większych trudności różne systemy PLC (CoDeSys software). IEC 61131-3 definiuje pojęcia podstawowe, zasady ogólne, model programowy i model komunikacyjny (wymiana danych między elementami oprogramowania) oraz podstawowe typy struktury danych. Określono w niej dwie grup języków programowania: Języki tekstowe i graficzne.

Język tekstowy IL (Instruction List) Język listy instrukcji IL (Instruction List), będący odpowiednikiem języka typu asembler, którego zbiór instrukcji obejmuje operacje logiczne, arytmetyczne, operacje relacji, jak również funkcje przerzutników, czasomierzy, liczników itp. Język listy instrukcji jest językiem niskiego poziomu i ma składnię podobną do języków typu asembler. Program w tym przypadku składa się z sekwencji rozkazów, z których każdy kolejny zaczyna się w nowej linii. Każda instrukcja składa się z operatora, który określa działanie do wykonania oraz operandu, czyli stałej lub zmiennej. Przykładami operatorów są: LD, który ładuje operand, JMP, który wykonuje skok do etykiety o nazwie określonej operandem, CAL, który wywołuje blok funkcyjny o nazwie takiej jak operand tej instrukcji oraz RET realizujący powrót z wywołanego wcześniej bloku lub funkcji. Dostępne są też operatory arytmetyczne (ADD, SUB, MUL, DIV), porównania (GT, GE, EQ, NE, LE, LT) oraz logiczne (AND, OR, XOR, NOT). Podstawą działania języka IL jest Akumulator (A) – jest to rejestr w pamięci, który jest wykorzystywany do: wczytywania do niego wartości z komórek pamięci PLC, wykonywania operacji matematycznych, przechowywania tymczasowych wyników, kopiowania stanu akumulatora do wybranych komórek pamięci.

Język tekstowy IL – przykładowy kod

Język IL instrukcje Allen Bradley

Zalety język tekstowego IL instrukcje Duże podobieństwo do języka maszynowego Znajoma forma dla programistów asemblera Duża zwartość programów Kontrola typów wynikająca z konieczności korzystania z akumulatora Łatwa implementacja kompilatora

Wady język tekstowego IL instrukcje Trudna czytelność programu (w stosunku do innych języków) Korzystanie z pośrednictwa akumulatora i stosu akumulatora nie jest intuicyjne Dostosowanie użytkownika do maszyny, a nie maszyny do użytkownika Nauka tego rodzaju programowania jest trudniejsza niż języka drabinkowego

Język tekstowy ST (Structured Text) ST, drugi język typu tekstowego. Jego składnia jest podobna do składni na przykład języków C lub Pascal. Podstawowymi elementami są wyrażenia oraz instrukcje (polecenia), m.in. przypisania (:=), wyboru (IF, CASE), pętle (FOR - gdy liczba powtórzeń jest znana, WHILE oraz REPEAT - gdy liczba iteracji jest nieokreślona). Wyrażenia dostarczają wartości odpowiadające określonemu typowi danych. Składają się one z operatorów i operandów. Operandem może być zmienna, stała, funkcja lub inne wyrażenie. Język strukturalny ST (Structured Text) przeznaczony jest głównie do opisu złożonych wyrażeń, których nie można zrealizować w językach graficznych (lub jest to bardzo utrudnione).

Jezyk ST – przykładowy kod W wypadku języka tekstu strukturalnego w jednej linii można zamieścić kilka instrukcji, a każda z nich powinna być zakończona średnikiem. W języku ST można implementować złożone prawa regulacji, co nie jest możliwe w żadnym innym języku!

Język tekstowy ST - operatory

Język tekstowy ST – typy danych W języku ST można użyć następujących typów danych: BOOL (boolean or discrete) BYTE (8-bit string) INT (16-bit integer) UINT (16-bit unsigned integer) WORD (16-bit string) DINT (32-bit integer) REAL (32-bit floating-point value) DWORD (32-bit string) LREAL (64-bit floating-point value) Również mogą być używane struktury i tablice zmiennych

Jezyk tekstowy - zalety Możliwość implementacji złożonych algorytmów w zasadzie nie możliwych do implementacji w innych językach. Powszechne zrozumienie wśród młodszej kadry inżynieryjnej

Język graficzny LD (Ladder Diagram) Język schematów drabinkowych LD (Ladder Diagram), podobny do stykowych obwodów przekaźnikowych, w którym dopuszcza się użycie także funkcji: arytmetycznych, logicznych, porównań i relacji jak również bloków funkcyjnych: przerzutników, czasomierzy, liczników, regulatora PID czy bloków programowych.

Język graficzny LD – podstawowe symbole Styk przekaźnika normalnie otwarty Styk przekaźnika normalnie zamknięty Przekaźnik normalnie otwarty Przekaźnik normalnie zamkniety

Język graficzny LD – organizacja programu Program wykonywany jest sekwencyjnie od lewej do prawej z góry na dół ( wyjątkiem są instrukcje skoku)

Język graficzny FBD (Functional Block Diagram) Język schematów blokowych FBD (Function Block Diagram), 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.

Język graficzny FBD (Functional Block Diagram) FBD (Function Block Diagram) jest językiem graficznym. Realizacja programu w tym języku jest oparta na przepływie sygnału. Wykorzystuje on gotowe bloki funkcyjne lub procedury przygotowane przez producenta w postaci bibliotek. Funkcje widziane są w edytorze programu jako prostokąty z opisanymi zmiennymi wejściowymi i wyjściowymi. Tworzenie aplikacji w tym języku polega na wyborze odpowiedniego bloku funkcyjnego i umieszczeniu w odpowiednim miejscu na schemacie i połączeniu z innymi blokami. Program napisany w FBD może składać się z pojedynczego schematu blokowego lub grupy schematów blokowych wykonywanych zgodnie z określoną sekwencją Bloki mogą być połączone jawnie lub niejawnie (poprzez zmienne), mogą występować pętle.

Język graficzny FBD (Functional Block Diagram)

Język graficzny FBD (Functional Block Diagram)

Język SFC (Sequential Function Chart) Ponadto w normie IEC 1131-3 przedstawiono sposób tworzenia struktury we­wnętrznej programu w postaci grafu sekwencji SFC (Sequential Function Chart), który pozwala na opisywanie zadań sterowania sekwencyjnego za pomo­cą grafów zawierających etapy (kroki) i warunki przejścia (tranzycji) miedzy tymi etapami. Grafy SFC mogą być wykorzystane przy programowaniu sterow­nika w jednym ze zdefiniowanych w normie języków w celu otrzymania odpowiedniej struktury programu użytkownika.

Język SFC (Sequential Function Chart) SFC (Sequential Function Chart) pozwala na opisywanie zadań sterowania sekwencyjnego za pomo­cą grafów zawierających etapy (kroki) i warunki przejścia (tranzycji) miedzy tymi etapami. Grafy SFC mogą być wykorzystane przy programowaniu sterow­nika w jednym ze zdefiniowanych w normie języków w celu otrzymania odpowiedniej struktury programu użytkownika. SFC raczej jest rozumiany nie jako osobny język programowania, a jako sposób organizacji programów, napisanych w innych językach; tak, według sformułowania Polskiego Komitetu Normalizacyjnego, SFC to "zbiór elementów graficznych i równoważnych im elementów tekstowych ... zdefiniowany w celu utworzenia wewnętrznej organizacji programów i bloków funkcyjnych sterownika programowalnego"

Język SFC (Sequential Function Chart) Naturalnym zastosowaniem SFC jest oprogramowanie sekwencji rozruchu lub zatrzymania urządzenia, instalacji. Rozruch instalacji wymaga spełnienia pewnych warunków w określonym czasie, naturalnym jest wykorzystanie sposobu programowania, które pozwala w sposób bezpośredni przenieść wymagania na kod.

Wybór właściwego języka Mając do dyspozycji kilka różnych języków programowania, przed wyborem konkretnego z nich należałoby odpowiedzieć sobie na kilka kluczowych pytań. Oczywiście naszą naturalną tendencją jest pozostawanie przy tym, który znamy. Jednak zawsze warto wziąć pod uwagę umieszczoną poniżej listę cech całej piątki: łatwość nadzoru przez użytkownika końcowego: SFC (Sequential Functional Chart), powszechność i akceptacja języka: LD (Ladder Diagram), znajomość i akceptacja w Europie: LD lub ST (Structured Text), prędkość wykonywania przez PLC: IL lub ST, aplikacje wykorzystujące głównie cyfrowe We/Wy oraz prosta regulacja ciągła: LD lub FBD (Functional Block Diagram), łatwość dokonywania zmian w kodzie: LD, łatwość i umiejętność obsługi przez młodych inżynierów: ST, łatwość w implementacji skomplikowanych operacji matematycznych, pętli: ST, aplikacje, które cechują powtarzające się operacje lub procesy wymagające łączenia i jednoczesności operacji: SFC. Należy tez mieć na uwadze ze poszczególne modele sterowników PLC  można programować np tylko niektórymi z podanych języków.