1 / 32

Systemy wbudowane

Systemy wbudowane. Wykład nr 9 Programowanie sterowników PLC Piotr Bilski. Wstęp. Celem programowania jest implementacja algorytmu sterowania W normie IEC 61131 zdefiniowany jest standard programowania dla wszystkich rodzin Podstawowe pojęcia to model programowania i model danych.

anka
Download Presentation

Systemy wbudowane

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Systemy wbudowane Wykład nr 9 Programowanie sterowników PLC Piotr Bilski

  2. Wstęp • Celem programowania jest implementacja algorytmu sterowania • W normie IEC 61131 zdefiniowany jest standard programowania dla wszystkich rodzin • Podstawowe pojęcia to model programowania i model danych

  3. Rodzaje języków programowania PLC • Języki tekstowe • IL – odpowiednik asemblera dla PLC • ST – odpowiednik C lub Pascala dla PLC • Języki graficzne • LD – język schematów drabinkowych, składa się ze styków, cewek, połączeń między nimi oraz funkcji • FBD – język funkcjonalnych schematów blokowych (schematy przepływu sygnałów)

  4. Struktura wewnętrzna programu • Opisywana przez sekwencyjny schemat funkcjonalny SFC • Jest to graf składający się z wierzchołków (kroków programu) oraz krawędzi (tranzycji między krokami) • Kroki definiowane są przez akcje programu • Tranzycje opisują warunki przejścia z jednego stanu programu do następnego

  5. Elementy języków programowania PLC • Typy danych (stałe, zmienne oraz ich wartości) • Jednostki organizacyjne oprogramowania (niezależne fragmenty programu: funkcje, bloki funkcjonalne, programy) • Elementy sekwencyjnego schematu funkcjonalnego • Elementy konfiguracji (wspomagają konfigurację sprzętu i instalację oprogramowania: konfiguracje, zasoby, zadania, zmienne globalne)

  6. Model programistyczny

  7. Zalety modelu programistycznego • Prosta reprezentacja hierarchicznej struktury zależności pomiędzy elementami programu • Łatwe wykonywanie wielu zadań w systemie wieloprocesorowym • Jednoznaczna interpretacja uruchamiania konfiguracji, zasobu itp.

  8. Model komunikacji Wymiana danych odbywa się pomiędzy: • Elementami jednego programu • Programami w ramach jednej konfiguracji • Różnymi konfiguracjami

  9. Komunikacja między elementami jednego programu • Najprostsze w realizacji • Połączenie typu wejście-wyjście (bloków funkcjonalnych)

  10. Komunikacja między różnymi programami Zmienne globalne (VAR_GLOBAL) Funkcje komunikacyjne

  11. Komunikacja między konfiguracjami – ścieżka dostępu

  12. Cele stosowania normy IEC 61131 • Bezpieczeństwo stosowania obszarów danych • wprowadzenie nazw zmiennych o określonym zasięgu • wymuszenie określenia typu danych zmiennej • Rozszerzenie możliwości jednostek organizacyjnych (wielokrotne wykorzystanie funkcji, programów itp.) • Ujednolicenie języków i technik programowania • Ujednolicenie struktury programu

  13. Struktura programu • Jednostki organizacyjne są niezależne od siebie • Rekurencje są niemożliwe (funkcja nie może wywołać samej siebie) • Bloki funkcjonalne są elementami dynamicznymi, funkcje – statycznymi • Jednostka ma następujące elementy: • Nazwa i typ (PROGRAM, FUNCTION, FUNCTION BLOCK) • Deklaracja zmiennych (wejściowych, wyjściowych i lokalnych) • Kod FUNCTION ALARM: BOOL;

  14. Deklaracje zmiennych • Zmienne przechowywane są w pamięci danych • Muszą mieć zadeklarowany typ • Zmienne są przyporządkowane adresom wejść lub wyjść • Zmienne globalne deklarowane są poza jednostkami organizacyjnymi, lokalne wewnątrz nich • Zmienne podtrzymywane bateryjnie

  15. Deklaracje zmiennych - przykład VAR S1 AT%I1 :BOOL; S2 :BOOL; END_VAR VAR RETAIN K1 AT%Q1 :BOOL; END_VAR

  16. Kod jednostki • Występuje po części deklaracyjnej • Zalecenie: kod powinien być pisany w jednym języku! • Ujednolicona strukturyzacja programu (schemat SFC oparty na sieciach Petriego) • Przykład: %Q1 := NOT(NOT STOP OR %I4) AND (%Q1 OR %I1 AND NOT %Q2)

  17. Realizacje kodu jednostki ~%Q1 %I1 %Q1 (R) ~STOP %Q1 (S) Język LD %I4 %I1 AND S %Q2 %Q1 LD %I1 ANDN %Q2 S %Q1 LDN STOP OR %I4 R %Q1 RS R1 Język FBD STOP OR %I4 FlipFlop(S:=%I1 AND NOT %Q2, R1:=NOT STOP OR %I4); %Q1 := FlipFlop.Q1; Język ST Język IL

  18. Wpływ wielozadaniowości na wykonanie programu • Problem przydziału procesora do uruchomionego zadania • Uruchomione programy mają różne priorytety • Przypisywanie zmiennych do adresów fizycznych • Szczegółowe informacje o przydziale i sposobie wykonania przechowywane są w konfiguracji

  19. Przykład konfiguracji

  20. Elementy wspólne języków • Ograniczniki – znaki specjalne (np. + _ $ = := # ; ( ) * ) • Słowa kluczowe – identyfikatory funkcji, operacji, deklaracji itp. (np. FUNCTION, VAR_INPUT, INT, BOOL, AND, ADD) • Literały – służą do przedstawiania wartości danych (stałych i zmiennych) • Identyfikatory – ciągi znaków alfanumerycznych w celu definiowania własnych zmiennych, etykiet, funkcji itp.

  21. Zmienne • Deklarowane są poza POU (globalne), wewnątrz (lokalne) lub jako parametry (wejściowe/wyjściowe) • Deklaracja zawiera nazwę, typ oraz atrybuty • Odwołanie do zmiennej to wskazanie na pewne miejsce w pamięci • Typ wymusza rezerwację określonej wielkości pamięci

  22. Typy danych • BOOL – true/false • SINT – liczby całkowite -128 do 127 • INT – liczby całkowite -32768 do 32767 • USINT – liczby całkowite 0 do 255 • REAL – liczby rzeczywiste pojedynczej precyzji • LREAL – liczby rzeczywiste podwójnej precyzji • ANY_NUM – ogólne dane liczbowe • ANY_DATE – ogólna data • STRING – ciąg znaków o zmiennej długości • BYTE – ciąg 8 bitów • WORD – ciąg 16 bitów • Itd.

  23. Przykłady danych • ‘’ – ciąg pusty • ‘R’ – litera R • ‘$’’ – apostrof • ‘$R$L’ – CR+LF • T#14ms – czas trwania – 14ms • t#5d14h12m18s3.5ms – dokładna godzina (time of day) • DATE#2006-04-15

  24. Pochodne typy danych • Typy definiowane przez użytkownika • Rozpoczynają się słowem TYPE, kończą – END_TYPE • Brak możliwości deklaracji typów graficznie • Możliwe jest podawanie nazw alternatywnych (aliasów), typów wyliczeniowych, okrojonych, tablic danych oraz struktur • Zmienne otrzymują wartości domyślne

  25. Przykłady pochodnych typów danych TYPE (* typ wyliczeniowy*) ANALOG_SIGNAL_TYPE: (SINGLE_ENDED, DIFFERENTIAL) END_TYPE TYPE (* typ wyliczeniowy*) ANALOG_16_IN: ARRAY[1..16] OF ANALOG_DATA; ANALOG_ARRAY: ARRAY[1..4,1..16] OF ANALOG_DATA; END_TYPE

  26. Zmienne • Deklarowane na samym początku POU • Słowa kluczowe: VAR, VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, VAR_EXTERNAL, VAR_GLOBAL • Przykład: VAR_OUTPUT RETAIN Sivar: DINT := 240; END_VAR

  27. Zmienne proste • Są to zmienne przechowujące jedną wartość • Adres poprzedza symbol %, po którym następuje przedrostek lokalizacji i rozmiaru: • I – wejście • O – wyjście • M – pamięć • X – jeden bit • B – jeden bajt • W – słowo • D – podwójne słowo

  28. Przykłady zmiennych prostych %QX45 – 45. bit wyjścia %IW20 – 20. słowo wejścia %MB7 – 7. bajt w pamięci (pod adresem 7) %IW2.5.7.1 – adresowanie hierarchiczne (np. 1. słowo wejścia 7. gniazda w 5. kasecie na 2. magistrali) 10010101

  29. Jednostki organizacyjne oprogramowania • Stanowią niezależne moduły w aplikacji użytkownika • Funkcja jest blokiem o parametrach wejściowych, produkującą wartość wyjściową • Blok funkcjonalny ma wejścia i wyjścia, generacja sygnałów wyjściowych zależy od wejść i historii • Program jest najwyższą jednostką, wszystkie funkcje i bloki muszą znajdować się wewnątrz niego

  30. Funkcje • Produkują jeden element danych wyjściowych • Prezentowane graficznie jako prostokąty • Możliwe dodatkowe wejście EN i wyjście ENO (relacja: 0 -> 0, 1 -> 1) • Przykłady:

  31. Bloki funkcjonalne • Mogą produkować wiele wartości wyjściowych • Są elementami dynamicznymi (informacja o stanie – pamięć!) • Blok może być wykonywany w programie wielokrotnie, ale za każdym razem konieczna jest rezerwacja pamięci – ukonkretnienie egzemplarza • Brak możliwości deklarowania zmiennych reprezentowanych bezpośrednio (%I, %Q, %M)

  32. Programy • Odpowiedniki „programu głównego” w klasycznych językach programowania • Nie są wywoływane jawnie przez inne POU • Można w nich deklarować zmienne reprezentowane bezpośrednio • Program w trakcie wykonania jest kojarzony z zadaniem

More Related