JĘZYK SFC Sequential Function Chart Graf sekwencji
TRANSITION tranzycja, przejście START INITIAL STEP blok/krok startowy/początkowy/ inicjujący blok aktywny STEP blok, krok blok nieaktywny Zawsze bloki i tranzycje patrząc w pionie są umieszczone na przemian: blok-tranzycja-bloktranzycja... START JUMP skok
ELEMENTY SKŁADOWE SFC
BLOK STARTOWY tylko jeden w całym schemacie musi być na początku służy np. do inicjacji zmiennych oznaczony (zazwyczaj) podwójną ramką START
BLOK jest aktywny (wykonują się działania skojarzone z danym blokiem) tak długo, jak długo tranzycja znajdująca się bezpośrednio pod nim jest zamknięta działania skojarzone z blokiem mogą być zapisane w różnych językach (np. w logice drabinkowej) lub jako zestaw ściśle określonych akcji BLOK NR n
TRANZYCJA jeżeli tranzycja znajdująca się poniżej aktywnego bloku ma stan logiczny zero, to sterowanie jest zatrzymane w tym bloku jeżeli tranzycja znajdująca się poniżej aktywnego bloku ma stan logiczny jeden, to sterowanie jest przekazane do bloku lub bloków znajdujących się poniżej danej tranzycji tranzycja tr
ROZGAŁĘZIENIE ALTERNATYWNE (WYBÓR) Strumień programowy płynie tylko jednym wybranym torem poprzez jedną z otwartych tranzycji Jeżeli otwarta jest więcej niż jedna tranzycja, system wybiera jedną z nich w sposób zależny od realizacji/ustawień danego modelu sterownika
POWRÓT Z ROZGAŁĘZIENIA ALTERNATYWNEGO Jeżeli wcześniej było rozgałęzienie alternatywne, to powinien być też w programie powrót z rozgałęzienia alternatywnego
SEKWENCJA WSPÓŁBIEŻNA
POWRÓT Z SEKWENCJI WSPÓŁBIEŻNEJ Jeżeli wcześniej była sekwencja współbieżna, to powinien być też w programie powrót z sekwencji współbieżnej. Tranzycja synchronizująca powinna się otwierać dopiero wtedy, kiedy sterowanie przekazane jest do ostatniego bloku w każdej kolumnie. tranzycja synchronizująca
Czas wykonywania sekwencji we wszystkich kolumnach musi być równy. Zazwyczaj realizuje się to np. poprzez sterowanie tranzycji synchronizującej z ostatniego bloku wybranej kolumny czas przebywania w ostatnich blokach pozostałych kolumn ustala się wtedy samoistnie.
PRZYKŁAD REALIZACJI ZADANEJ SEKWENCJI W JĘZYKU SFC
PRZYKŁAD REALIZACJI ZADANEJ SEKWENCJI Zadanie: wygenerować na wyjściu dyskretnym o adresie 0:1 okresowy sygnał o parametrach jak na rysunku: wy 0:1 3s 1s t
SPOSÓB NAJŁATWIEJSZY: Każdej niezmiennej wartości zadanej sekwencji odpowiada 1 blok programu wy 0:1 3s 1s blok nr 1 blok nr 2 t
MOŻLIWE AKCJE W BLOKU N (none) zmienna/adr._bezpośr. S (set/saved) zmienna/adr._bezpośr. R (reset) zmienna/adr._bezpośr. P (pulse) zmienna/adr._bezpośr. L (limited) czas zmienna/adr._bezpośr. D (delayed) czas zmienna/adr._bezpośr. DS (delayed+saved) czas zmienna/adr._bezpośr.
WERSJA 1 (concept) -ustawienie na czas przebywania w bloku na stan wysoki wyjścia 0:1 -odmierzenie czasu 3s START AKCJA 1: N 0:1 stale otwarta (bo blok sam odmierza czas 3s) -odmierzenie czasu 1s stale otwarta (bo blok sam odmierza czas 1s) START pusty: odczekujemy tylko 1s
WERSJA 2 (zgodna z innymi odmianami języka SFC) -ustawienie (na czas przebywania w bloku) stanu wysokiego wyjścia 0:1 -odmierzenie czasu 3s START AKCJA 1: S 0:1 AKCJA 2: D 3s tr1 oczekuje na otwarcie przez akcję zdefiniowaną w bloku poprzedzającym tr1 -ustawienie (na czas przebywania w bloku) stanu niskiego wyjścia 0:1 -odmierzenie czasu 1s oczekuje na otwarcie przez akcję zdefiniowaną w bloku poprzedzającym tr1 START AKCJA 1: R 0:1 AKCJA 2: D 1s tr1
WERSJA 3 (na jednym bloku) wy 0:1 3s 1s t tak działa akcja L (limit) x t lim t nasze zadanie -ustawienie na czas 3s stanu wysokiego wyjścia 0:1 -odmierzenie czasu 4s oczekuje na otwarcie przez akcję zdefiniowaną w bloku poprzedzającym START tr1 START AKCJA 1: L 3s 0:1 AKCJA 2: D 4s tr1