dcs i scada · high performance hmi. programowanie skryptów/programów na poziomie stacji...
TRANSCRIPT
DCS i SCADA
W3: DCS i SCADAProgramowanie w systemach DCS i SCADA
Języki programowania
Sebastian Plamowski
Pytania do poprzedniego wykładu1. Narysuje schemat struktury (architektury) systemu DCS/SCADA
2. Omów funkcjonalność systemów DCS/SCADA z różnych perspektyw użytkownika.
3. Wymień i krótko opisz cechy różniące systemy DCS i SCADA
Programowanie w systemach SCADA i DCS
• 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 i DCS
• 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
Programowanie HMI - środowisko
Przykładowa grafika
Programowanie HMI – usability (Złota Proporcja)
Złota Proporcja może być opisana w ten sposób, że stosunek miedzy elementami danego ksz-tałtu jak np. wysokość i szerokość musi wynosić w przybliżeniu 1.618.
Jeśli Złota Proporcja jest dobrze użyta w projekcie, bardzo pomaga w jego pozytywnym odbiorze.
Programowanie HMI – usability (Zasada podziału na trzy)
Zasada ta mówi, ze oglądający w większości przypadków będzie oglądał te punkty na kompozycji, miejscu których przecinają się linie.
Dodatkowo dobrze jest umieszczać bardziej wartościowe elementy projektu 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ć wykonany, zwięk-sza jego czas. Oznacza to, że czym więcej użytkownik musi dokonać wyborów tym trudniejsze jest skorzystanie z „oferty”
• Im więcej wyborów musi dokonać odbiorca, tym mniej skuteczna będzie Twoja oferta.
• Tak naprawdę to prawo mówi o potrzebie prostoty. Klasyczny case study prawa Hicka przedstawia sklep z warzywami, który wystawił darmowy dżem do próbowania przez klientów. W jednym przykładzie mają oni więcej niż 40 do spróbowania i wyboru, a w drugim tylko kilka. Zaobserwowano, że klienci kupili więcej dżemów, jeśli prezentowane były tylko cztery rodzaje zamiast 40 i więcej. Większość klientów decydował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ż działa w drugą stronę. Dokładniej mówiąc, pewne elementy interfejsu powinny być trudniejsze do kliknięcia. Przykładem jest przycisk lub odnośnik anulowania akcji. Dlatego możemy często zauważyć w różnych aplikacjach duży przycisk zapisania, a mały anulowania.
Programowanie HMI – usability (Prawo bliskości)Prawo bliskości jest często niedostrzegane, nawet przez doświadczonych projek-tantów. Prawo to stwierdza, że elementy, które są w jakiś sposób ze sobą pow-iązane, przedstawiane są w jakiejś relacji i umieszczane blisko siebie. Brzmi to bardzo prosto i wydaje się być oczywiste, ale często bywa pomijane.
Prawo to oznacza, że musisz być bardzo świadomy, jak wiele przestrzeni jest między elementami danego projektu. Jeżeli w projekcie masz zbyt wiele elementów, które są blisko siebie, odbiorca stwierdzi, że jest to zrobione celowo i że te elementy są ze sobą powiązane.
Na przykład przycisk wyszukiwania, który jest za blisko przycisku zapisywania czy anulowania spowoduje przypuszczenie, że przyciski zapisu i anulowania są pow-iązane z samym wyszukiwaniem. Warto więc zadbać o odpowiednią odległość między takimi elementami w projekcie. W bliskim sąsiedztwie starajmy się umieszczać takie elementy, które są ze sobą powiązane.
Programowanie HMI – usability (Komunikaty zwrotne)Komunikaty zwrotne są techniką, opanowaną przez projektantów przemysłowych od wielu dekad. Komunikaty zwrotne przekazują użytkownikowi informacje o tym, że coś się stało, się dzieje lub się stanie. Komunikacja z użytkownikiem jest czymś fundamentalny.
Programowanie HMI – usability (Brzytwa Ockhama)Brzytwa Ockhama. Najprostsze rozwiązanie jest zawsze najlepsze.
„Wszystko powinno być tak proste,
jak to tylko możliwe, ale nie prostsze.”- Albert Einstein
Przeładowanie plansz powoduje że stają się nieczytelne i trudne do utrzymania
Projekty proste są eleganckie, wysublimowane i o wiele bardziej efektywne niż skomplikowane udekorowane stylizacje.
High Performance HMI – nowy trend
HMI o wysokiej wydajności (HPHMI) ma wiele zalet, w tym poprawę świadomości sytuacji operatora i nadzoru nad procesem, lepsze wykrywanie i reagowanie na sytuacje oraz skrócenie czasu szkolenia dla nowych operatorów.
Założenia
Wyświetlanie informacji (brak obrazu) - szybki podgląd zawiera informacje. Np. normalny lub pożądany zakres każdej wartości jest wyraźnie przedstawiony przy użyciu jasnoniebieskiego zakresu.
Używanie i nadużywanie kolorów (czerwona dotyczy tylko alarmów) - szare tło i wyciszone kolory minimalizują odblask i odblask ekranu, ułatwiając pracę w jasno oświetlonych pomieszczeniach. Paleta kolorów i właściwe użycie każdego koloru są określane z góry. HPHMI nie eliminuje kolorów ani nie konwertuje grafiki do skali szarości.
15
High Performance HMI (HPHMI)
Wyświetlanie powinno być zaprojektowane w hierarchii zapewniającej stopniową ekspozycję szczegółów. Grafiki zaprojektowane z P&ID nie będą tego mieć; będą "płaskie" - jak dysk twardy komputera z jednym folderem dla wszystkich plików.
Dostępne są 4 poziomy informacji:
L1: widok ogólny
L2: część procesu
L3: szczegóły P & ID
L4: szczegóły podsystemu, poszczególne czujniki16
High Performance HMI (HPHMI)
P&ID (Piping and instrumentationdiagram/drawing) schematy stanowiły podstawę grafik
Example: Condensate screen
Example: Heaters with valves
Main sequence
High Performance HMI
Programowanie skryptów/programów na poziomie stacji operatorskich w DCS• Praktycznie nie występuje w systemach DCS. Wynika to z filozofii, która
zakłada, że DCS musi działać 24x7, czyli przewidywane są restarty stacji operatorskich w czasie pracy procesu.
• Istniej zazwyczaj API pozwalające tworzenie programów trzecich obliczających korzystających z punktów systemu DCS. Programy takie jednak rzadko kiedy uruchamiane są na stacjach operatorskich. Raczej, jeżeli w ogóle, są to programy specjalistyczne (obliczenia sprawnościowe, symulacja, optymalizacja), które są uruchamiane na dedykowanych dostawionych do systemu stacjach (komputerów PC/ serwerów). Programy takie pisane są w językach C, C++, #C, Java raczej przez wykonawców systemów niż użytkowników.
• W DCS zakłada się, że wszelkie wyliczenia wykonywane są w warstwie kontrolerów przemysłowych (odpowiedników PLC w systemach SCADA).
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ę programowania 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 zamknięty
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.
Przykład z Emersona…
Język graficzny FBD (przykład lewy->prawy)
Język graficzny FBD (góra->dół)
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 wewnętrznej programu w postaci grafu sekwencji SFC (SequentialFunction Chart), który pozwala na opisywanie zadań sterowania sekwencyjnego za pomocą grafów zawierających etapy (kroki) i warunki przejścia (tranzycji) miedzy tymi etapami. Grafy SFC mogą być wykorzystane przy programowaniu sterownika 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 pomocą grafów zawierających etapy (kroki) i warunki przejścia (tranzycji) miedzy tymi etapami.
Grafy SFC mogą być wykorzystane przy programowaniu sterownika 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ęzykaMają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.