Komputery i sterowniki przemysłowe

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
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.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Wykonał : Marcin Sparniuk
Wprowadzenie do C++ Zajęcia 2.
Języki programowania C++
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
formatowanie kodu źródłowego
Przygotował Przemysław Zieliński
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Podstawowe składniki funkcjonalne procesora i ich rola.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Kurs Pascala – spis treści
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Tablice jednowymiarowe 1
Temat nr 10: System przerwań
Wykład 2 struktura programu elementy języka typy zmienne
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
Semantyki programów współbieżnych " Determinizm programów sekwencyjnych, " Nie-determinizm programów współbieżnych, " prawdziwa równoległość vs.przeploty.
Wstęp do interpretacji algorytmów
Podstawy programowania aplikacji w środowisku graficznym LabView
Dr Anna Kwiatkowska Instytut Informatyki
PASCAL (2) dr Anna Kwiatkowska.
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.
Podstawy programowania
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Podstawy układów logicznych
LabVIEW Technologie informacyjne – laboratorium Irmina Kwiatkowska
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Programowanie w języku Matlab
PL/SQL Zajęcia nr II PL/SQL(2) M. Rakowski - WSISiZ.
Zasada działania komputera
PHP: warunki, pętle, switch, break, continue
Pliki tekstowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików tekstowych. Pliki takie zawierają informację niezakodowaną
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Elżbieta Fiedziukiewicz
Podstawy informatyki 2013/2014
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Modelowanie obiektowe Diagramy czynności
Wykład nr 9 Programowanie sterowników PLC Piotr Bilski
Wykład 10 typ zbiorowy rekurencja.
Podstawy języka Instrukcje - wprowadzenie
ZAPIS BLOKOWY ALGORYTMÓW
Algorytmika.
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
Zapis blokowy algorytmów
Przerzutniki Przerzutniki.
Przerzutniki bistabilne
Procesor, pamięć, przerwania, WE/WY, …
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
Zasady arytmetyki dwójkowej
Grafika animacyjna w Macromedia Flash ACTION SCRIPT Joanna Sekulska-Nalewajko Katedra Informatyki Stosowanej Politechnika Łódzka 2006/2007.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Wstęp do interpretacji algorytmów
Pętle – instrukcje powtórzeń
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Tryby adresowania i formaty rozkazów mikroprocesora
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
 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,
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Grzegorz Cygan Wprowadzenie do PLC
Visual Basic w programie Microsoft Excel
Dane, zmienne, instrukcje
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Komputery i sterowniki przemysłowe Zbigniew Kulesza

Standard IEC1131-3 ISaGRAPH posiada pięć języków programowania: sekwencyjne schematy funkcyjne (SFC - Sequential Function Chart), bloki funkcyjne (FBD - Function Block Diagramm ), schematy drabinkowe (LD - Ladder Diagram ), lista instrukcji (IL - Instruction List), tekst strukturalny (ST - Structured Text ).

Języki programowania Graficzne Tekstowe edytory graficzne dla języków: schemat sekwencji funkcji (SFC - Sequential Function Chart), schemat bloku funkcji (FBD - Function Block Diagram), schemat drabinkowy (LD - Ladder Diagram); Tekstowe edytory tekstowe dla języków: lista instrukcji (IL - Instruction List), tekst strukturalny (ST – Structured Text), kodu C (opcjonalny);

Typy danych I - całkowite

Typy danych II - zmiennoprzecinkowe

Typy danych III - czasowe

Typy danych IV – daty i czasu

Typy danych V – łańcuchy znaków

Typy danych VI – ciągi bitowe

IL - Lista Instrukcji Lista instrukcji IL (Instruction List) jest językiem niskiego poziomu, podobnym do języka asemblera. Język ten jest efektywny dla małych aplikacji lub służy dla optymalizacji części aplikacji. Instrukcje odnoszą się zawsze do aktualnego wyniku (rejestru – lub elementu stosu). Operator wskazuje, jakiego typu operacja będzie wykonywana. Wynik jest ponownie zapisywany do rejestru (na stos) i traktowany jako aktualny wynik.

IL - Lista Instrukcji II Większość operacji standardowego języka IL ma postać: wynik := wynik OP operand Program IL jest listą instrukcji, z których każda musi zaczynać się od nowej linii, zawierać operator z kompletnymi modyfikacjami i ewentualnie jeden lub więcej operandów oddzielonych separatorem ",„. Etykieta zawsze poprzedza znak ":" i może być umieszczona przed instrukcją lub w wolnej linii. Nazwa nie może przekraczać 16 znaków, pierwszy znak musi być literą, następne literą, liczbą bądź znakiem "_". Może być definiowana tylko raz w programie.

IL – Lista Instrukcji III Rozmieszczenie elementów w programie ma postać: ETYKIETA OPERATOR OPERAND KOMENTARZ Start LD zm1 (*wczytanie zm1*) AND zm2 (*koniunkcja z zm2*) ST wynik (*wynik operacji zapisany do wynik*)

LD – Schematy drabinkowe I Schematy drabinkowe LD (Ladder Diagram) są graficzną reprezentacją logicznych równań przez układ graficznych symboli. Diagram LD zawiera się pomiędzy lewą i prawą szyną mocy, do których jest dołączony. Elementy mogą być łączone liniami pojedynczymi lub grupowymi. Lewa szyna mocy, jak również wszystkie linie połączone z nią, posiadają stan logiczny prawdy. Stan ten jest przenoszony przez kontakt w przypadku, gdy jest zamknięty. Każdy kontakt jest przyporządkowany zmiennej wejściowej lub wewnętrznej. Gdy zmienna przyjmuje stan 1, kontakt ulega zamknięciu. Gdy linia połączona z cewką posiada "moc", to cewka jak również przyporządkowana do niej zmienna wyjściowa zostają uaktywnione (przyjmują wartość 1).

LD – Schematy drabinkowe II Kontakt może występować w różnych modyfikacjach: standardowy, zanegowany - (/), uaktywniany zboczem narastającym - (P), uaktywniany zboczem opadającym - (N). Z kolei cewki mogą mieć postać: standardową, zanegowaną - (/), ustawialną - (S), kasowalną - (R). Schematy drabinkowe reprezentują formalizm elektrycznych diagramów połączeń stosując sterowanie bazujące na przełącznikach binarnych. Wadą tych schematów jest to, że jeżeli mają być zaprogramowane nie tylko operacje binarne, to schematy te muszą być rozszerzone o dodatkowe elementy. Elementami łączonymi tylko z lewej strony do linii sygnałowych są: instrukcja powrotu - RETURN - powodująca przerwanie wykonywania programu i instrukcja skoku - umożliwiająca przejście wykonywania programu do miejsca oznaczonego etykietą.

FBD – Bloki funkcyjne I Bloki funkcyjne FBD (Functional Block Diagram) są graficznym językiem, umożliwiającym budowę całościowych procedur przez pobieranie bloków funkcyjnych z bibliotek i ich łączenie. Elementy języka FBD opisują zależność funkcyjną pomiędzy zmiennym wejściowymi a wyjściowymi. Bloki funkcyjne wywodzą się ze schematów obwodów cyfrowych. W standardzie IEC wyróżnia się funkcje i bloki funkcyjne. Zakłada się, że obiekt typu funkcja posiada tylko jedne wyjście i dla tych samych wejść wydaje tą samą wartość wyjścia. Bloki funkcyjne posiadają kilka wyjść i dla tych samych wartości wejść mogą posiadać różne wartości wyjść, ze względu na wewnętrzne sprzężenia zwrotne i pamięć. Funkcje i bloki funkcyjne mogą być zdefiniowane hierarchicznie.

FBD – Bloki funkcyjne II Funkcje lub bloki funkcji mogą realizować przetwarzanie binarne, numeryczne, analogowe lub znakowe. Bloki funkcyjne łączone są liniami, przy czym ważne jest, aby lewy koniec linii nie znajdował się wyżej niż prawy, gdyż diagram programu rozpatrywany jest kolejno z góry w dół. Pojedyncza linia może łączyć: zmienną wejściową z wejściem funkcji, wyjście funkcji ze zmienną wyjściową, wyjście funkcji z wejściem innej funkcji. Linie rozgałęziającą tworzymy na tych samych zasadach pamiętając również aby prawy koniec nie przewyższał lewego. W przypadku, gdy linia jest zakończona kółkiem, oznacza to logiczne zaprzeczenie przenoszonego sygnału. Wywołanie procedury przeprowadza się przez wstawienie bloku, który ją obrazuje. Nazwa procedury widnieje wewnątrz bloku. Natomiast wyjściem z procedury jest zwracana przez nią wartość.

FBD – przykład I

FBD – przykład II

ST - Tekst strukturalny Tekst strukturalny ST (Structured Text) ma składnię podobną do języka Pascal. W języku ST zdefiniowane są instrukcje podstawiania, wyboru IF i CASE, iteracyjne FOR, WHILE, REPEAT, wywołanie funkcji lub bloku funkcji oraz przerwania wykonania funkcji. Język ST stanowi główne narzędzie do budowy złożonych procedur, dlatego nie może być przedstawiony jako język graficzny. Domyślnie używa się go przy opisie akcji w blokach i przejściach SFC. Program ST jest listą wyrażeń zakończonych średnikiem, będącym separatorem instrukcji.

Typy wyrażeń języka ST I Przyporządkowanie: zmienna := wyrażenie; Wywołanie podprogramu lub funkcji C: zmienna := podprogram (par1,par2,...); Wywołanie bloku funkcji C: nazwa_bloku (par1,par2,...); rezultat := nazwa_bloku.par1; Wyrażenie wyboru: IF wyr_logiczne THEN wyrażenie; ELSE wyrażenie; END_IF;

Typy wyrażeń języka ST II Pętle: FOR ind:=min TO max BY krok DO wyrażenie; END_FOR; WHILE wyr_logiczne DO wyrażenie; END_WHILE; REPEAT wyrażenie; UNTIL war_logiczny; END_REPEAT; Powrotu: RETURN;

Operatory języka ST I Nawiasy (maksymalnie 8 w wyrażeniu) Funkcje konwersji: zmienna := BOO (wyrażenie); zmienna := ANA (wyrażenie); zmienna:=REAL(wyrażenie); zmienna := TMR (wyrażenie); zmienna := MSG (wyrażenie); Operatory logiczne: zm_logiczna := NOT (wyr_logiczne); rez_logiczny := wyr_log1 AND wyr_log2; rez_logiczny := wyr_log1 OR wyr_log2; rez_logiczny := wyr_log1 XOR wyr_log2; brzeg := REDGE (wyr_logiczne,zm_pam); brzeg := FEDGE (wyr_logiczne,zm_pam);

Operatory języka ST II Operatory arytmetyczne: Porównania: wynik := wyr1 * wyr2; wynik := wyr1 / wyr2; wynik := wyr1 + wyr2; wynik := wyr1 - wyr2; Porównania: wynik := wyr1 < wyr2; wynik := wyr1 > wyr2; wynik := wyr1 <= wyr2; wynik := wyr1 >= wyr2; wynik := wyr1 = wyr2; wynik := wyr1 <> wyr2;

Rozszerzenia języka ST Sterowanie zegarem (zmienne zegarowe): TSTART, TSTOP; Zarządzanie programami (podprogramy): GSTART, GKILL, GFREEZE, GRST, GSTATUS; Wyrażenie systemowe: zm_analog := SYSTEM (rozkaz, argument); Wyrażenie akcji: zm_analog := OPERATE (zm_we_wy, rozkaz, argument);

Wyrażenia w języku ST

Operatory języka ST I

Operatory języka ST II

Rozszerzenia języka ST

Funkcje konwertujące języka ST I

Funkcje konwertujące języka ST II

Operatory i priorytety języka ST

Wywołanie programu w języku ST

Wywołanie bloku funkcyjnego w języku ST

Instrukcja IF

Instrukcja CASE

Instrukcja CASE - przykład

Instrukcja FOR

Instrukcja WHILE

Instrukcja REPEAT

Instrukcje sterowania czasowego

Instrukcje wykrywania zmian stanu

Instrukcje sterowania podprogramów

Instrukcja statusu podprogramu

Sterowanie skrzyżowaniem -przykład I

Sterowanie skrzyżowaniem -przykład II

ST - przykład

Biblioteki bloków funkcji C Zawierają: manipulacje danymi logicznymi: ustawialny przerzutnik bistabilny, kasujący przerzutnik bistabilny, wykrywanie powstania brzegu, wykrycie opadania brzegu, semafor, liczniki: licznik w górę, licznik w dół, licznik w górę i w dół, zegary: opóźnienie przy sygnale 1, opóźnienie przy sygnale 0, zegar pulsacyjny, manipulacje danymi całkowitymi: pełne porównanie bloku funkcyjnego, stos, procesy dotyczące sygnałów analogowych: przepełnienie, histereza, alarm z ograniczeniem, połączenie z czasem, różnice czasu, regulator PID, generacje sygnału: generator sygnału logicznego. funkcje matematyczne, trygonometryczne, kontroli rejestrów (przesunięcia, przeniesienia), manipulacji danymi (minimum, maksimum, modulo, multiplekser 4 lub 8 wejść, parzystość, generator liczb losowych, selektor logiczny 0), konwersji danych, realizujące operacje na łańcuchach znaków i tablicach.

SFC Sekwencyjne schematy funkcyjne I Sekwencyjne schematy funkcyjne SFC (Sequential Function Chart) tworzą język graficzny, służący do opisu operacji wykonywanych sekwencyjnie. Proces jest reprezentowany przez definiowane bloki, łączone również definiowalnymi przejściami. Definicja bloków może być dokonana przez użycie pozostałych języków (ST, IL, LD, FDB), natomiast przejście musi zawierać warunek logiczny. Składowe języka: Bloki i bloki inicjalizacyjne - reprezentowane są jako pojedyncze prostokąty. Każdy blok jest oznaczony numerem automatycznie nadawanym przez program lub definiowanym przez użytkownika. Oprócz numeru blok może mieć nadany identyfikator znakowy - krótki opis, nie będący kodem programu. Aktywność bloku w czasie działania programu sygnalizuje podświetlenie bloku szarym okręgiem. Atrybutem bloku, służącym do reprezentacji bloku w innych językach lub do identyfikacji bloku podczas kompilacji i przyporządkowaniu błędów, jest symbol: GSnnn.x (zmienna logiczna), GSnnn.t (zmienna czasowa). Gdzie nnn oznacza numer bloku.

SFC – przykład I

SFC – przykład II

SFC Sekwencyjne schematy funkcyjne II Przykłady bloków: Przejścia - reprezentowane przez grubszą linię umieszczoną w poprzek linii łączących elementy. Każde przejście opisane jest przez numer identyfikacyjny, umieszczony obok przejścia. Przejściu można również nadać komentarz - krótki opis nie będący kodem programu. Pojedyncze linie łączące - służą do łączenia bloków i przejść. Symbolizują przechodzenie punktu pracy programu przez elementy składowe. Zezwolenie na Start numer przejścia Komentarz Pojedyncze linie rozgałęzione - służą do połączenia jednego bloku z wieloma przejściami. Praktyczne umożliwia to wybór jednej z dróg dla której spełniony jest warunek przejścia. Podwójne linie łączące - służą do połączenia jednego przejścia z kilkoma blokami, których instrukcje wykonywane są dalej równolegle

SFC Sekwencyjne schematy funkcyjne III Metoda ta może być traktowana jako zastosowanie pojęć sieci Petriego. Miejsca sieci Petriego odpowiadają krokom SFC, natomiast przejścia sieci Petriego odpowiadają przejściom SFC. Przejścia definiują warunki przejścia z jednego kroku, do następnego. Skoki do bloków - mogą być użyte do przeniesienia punktu pracy z przejścia do bloku. Skok symbolizuje strzałka z numerem bloku, do którego skok jest skierowany. Blok makra - zawiera bloki i przejścia łączone w standardowy sposób, lecz traktowane jako odrębna część zamknięta w jednym bloku makra. Wywołanie procedury - powoduje przejście wykonywania instrukcji do procedury zawartej w ramce. Funkcja zwraca wartość będącą rezultatem poprawności jej wykonania. <rezultat> := <procedura> ();

SFC Sekwencyjne schematy funkcyjne IV Konwersja IL - bloki SFC można opisać także za pomocą IL. Tą część kodu należy umieścić w ramach ograniczonych rozkazami: #info=IL .................... #endinfo Reguły układu i wykonania programu: bloki i przejścia łączone są liniami pojedynczymi lub złożonymi, poszczególne części programu mogą być grupowane i wywoływane jako makra, blok nie może następować bezpośrednio po bloku, przejście nie może następować po przejściu, to samo makro nie może być użyte więcej niż jeden raz w programie, program FSC nie mający programu nadrzędnego jest nazywany main, program ten jest uruchamiany przy starcie aplikacji, podprogram może mieć tylko jednego właściciela, podprogram może być kontrolowany tylko przez jego właściciela, właściciel nie ma wpływu na podprogram wywoływany w podprogramie, jeżeli przejście nie posiada instrukcji, to jego wartość logiczna wynosi 1.

SFC Sekwencyjne schematy funkcyjne V Typy aktywności bloków Aktywność logiczna - przypisuje aktywność zmiennym logicznym przy aktywności bloku. Przy czym zmienna logiczna musi być zmienną wewnętrzną lub wyjściową. Aktywność pulsacyjna - powoduje, że instrukcja wykonywana jest tylko raz w przypadku aktywności bloku. Ten rodzaj aktywności uzyskiwany jest przez umieszczenie instrukcji w części ograniczonej rozkazami ACTION (P) i END_ACTION; aktywność bloku aktywność logiczna - bidirect aktywność logiczna - binvert aktywność logiczna - bset aktywność logiczna - breset aktywność pulsacyjna aktywność bez pamięci

SFC Sekwencyjne schematy funkcyjne VI Aktywność bez pamięci - instrukcje są wykonywane w każdym cyklu podczas aktywności bloku. Ten rodzaj pracy uzyskuje się przez zamknięcie w klamry rozkazów ACTION (N) i END_ACTION; Aktywność SFC - umożliwia zarządzanie podprogramami na podobnych zasadach, jak akcja zmiennych logicznych. Jej uruchomienie następuje przez podanie nazwy podprogramu i parametru: <pod_program> (N) - uruchamia podprogram, gdy blok jest aktywny oraz kończy wraz z dezaktywacją bloku. (N) jest parametrem opcjonalnym; <pod_program> (S) - startuje podprogram; <pod_program> (R) - zatrzymuje podprogram

SFC Sekwencyjne schematy funkcyjne VII Przyporządkowanie warunków do przejść Konwersja języka ST - przejście osiąga stan prawdy, gdy wyrażenie napisane w języku ST jest prawdziwe. Konwersja języka IL - jeżeli aktualna wartość akumulatora jest równa 0, przejście nie jest aktywne. Uaktywni się wówczas, gdy wartość akumulatora będzie się różnić od zera. Wywołanie procedury - wywołana przy przejściu procedura musi po wykonaniu zwrócić wartość różną od zera, aby uaktywnić przejście. Sterowanie podprogramem przez program nadrzędny realizowane jest przez instrukcje: Gstart - uruchamia podprogram, Gkill - zatrzymuje podprogram wraz z jego podprogramami, Gfreeze - zawiesza wykonanie podprogramu, Grst - ponownie restartuje zawieszony podprogram, Gstatus - pobiera aktualny status podprogramu.

Przykład programu

Deklaracja zmiennych - wspólna

SFC

LD - fragment

FBD

ST

IL

Sterowanie współbieżne GSTART(nazwa_podfunkcji) - uaktywnij proces tzn. dodaje go do listy procesów aktywnych. GKILL(nazwa_podfunkcji) - zdeaktywizuj proces tzn. zostaje usunięty z listy procesów aktywnych. GSTATUS(nazwa_podfunkcji) - zwraca stan procesu: 0 - nieaktywny, 1 - aktywny, 2 - zamrożony. GFREEZE(nazwa_podfunkcji) - zatrzymaj proces, tzn. zdeaktywizuj proces tak aby można go było odtworzyć do stanu z przed zamrożenia. GRST(nazwa_podfunkcji) - wznów proces, stosowane po GFREEZE.

Programy współbieżne

Program główny

Opis warunków i akcji I

Opis warunków i akcji II

Opis warunków i akcji III

Funkcja mieszaj

Opis warunków i akcji

Funkcja napełnianie

Opis warunków i akcji I

Opis warunków i akcji II

Procesor MC68303

Płyta główna Smart-Base