Liczniki

liczniki

Podczas realizacji aplikacji do przemysłu często należy liczyć pojawiające się zdarzenia. W przypadku sterownika PLC można to zrealizować na dwa sposoby. Dzisiaj przedstawię Ci dostępne rozwiązania które są dostępnych w przypadku sterownika S7-1200 oraz S7-1500 firmy Siemens.

Liczniki

Zliczanie zdarzeń można zrealizować sprzętowo lub programowo. Poniżej opis każdego z nich

Obsługa sprzętowa

Sprzętowe liczniki są wykorzystywane do zdarzeń, które pojawiają się z częstotliwością do 100 kHz w przypadku wbudowanych wejść cyfrowych w sterowniku oraz 200 kHz w przypadku płytki sygnałowej wkładanej w przedni panel sterownika. Ogólnie mówiąc są to zdarzenia pojawiające się znaczniej częściej, niż wynosi czas cyklu programu. Dzięki temu można odebrać wszystkie informacje z zewnątrz. Możliwe tryby pracy to szybki licznik lub miernik częstotliwości impulsów. Każdy z modeli CPU ma inną liczbę sprzętowych liczników. Konfiguracja trybu pracy oraz przerwań odbywa się w TIA Portal. Każdy licznik sprzętowy można powiązać z dowolnym wejściem cyfrowym w przypadku sterowników z firmwarem V4.0 lub wyższym. Do obsługi wykorzystuje się funkcję CTLR_HSC() znajdującą się w Instruction/Technology/Counting. Przykładowe wywołanie przedstawiono poniżej.

″CTRL_HSC_IDB1″(HSC:=W#16#0, //Identifikator HSC z konfiguracji w TIA Portal (zakladka System constants w PLC tags)
DIR:=False,         //TRUE =zadanie nowego kierunku
CV:=False,          //TRUE = zadanie ustalenia nowej wartosci
RV:=False,          //TRUE = zadanie ustalenia nowej wartosci referencyjnej
PERIOD:=False,       //tylko tryb pomiaru częstotliwosci (TRUE = zadanie ustalenia nowej wartosci okresu)
NEW_DIR:=0,      //1 = nowy kierunek w przod; -1 = nowy kierunek wstecz
NEW_CV:=L#0,          //nowa wartosc zliczen
NEW_RV:=L#0,          //nowa wartosc referencyjna
NEW_PERIOD:=0,    //tylko tryb pomiaru czestotliwosci (nowa wartosc okresu w sekundach
BUSY=>_bool_out_,      //zajety
STATUS=>_word_out_);  //kod warunkowy wykonania

Do tej funkcji należy przypisać blok danych instance DB. Funkcję CTRL_HSC() umieszcza się zazwyczaj w przerwaniu (Hardware interrupt) powiązanym z danym licznikiem.

Obsługa programowa

Poza sprzętowym sposobem zliczania zdarzeń, które pojawiają się częściej, niż wynosi czas trwania cyklu, są jeszcze programowe liczniki dostarczone wraz ze środowiskiem TIA Portal, które można wykorzystać do zliczania zdarzeń, które pojawiają się rzadziej lub z taką samą częstotliwością, ile wynosi czas trwania cyklu. Dostępne są trzy funkcje realizujące różne sposoby zliczania zdarzeń. Podczas wywołania każdej z nich należy również stworzyć blok danych typu instance DB, gdzie funkcje będą przechowywać dane. Podczas tworzenia kodu można wykorzystać funkcje licznikowe opisane poniżej. Każda z funkcji przyjmuje kilka parametrów. Został utworzony blok danych o nazwie COU_FP, gdzie zostały utworzone odpowiednie parametry do każdej z funkcji licznikowych.

Zliczanie w górę

Funkcja CTU() służy do zliczania pojawiających się zdarzeń w górę. Przykładowe wywołanie przedstawiono poniżej

″IDB8_CTU_Counter″.CTU(CU:=″COU_FP″.CTU_CU_Count,
R:=″COU_FP″.CTU_R_Reset,
PV:=″COU_FP″.CTU_PV,//ustalona liczba zliczeń
Q=>″COU_FP″.CTU_Q_CounterStatus,
CV=>″COU_FP″.CTU_CV_CurrentValue);

Podczas wywołania został utworzony blok danych instance DB o nazwie IDB8_CTU_Counter. Zasadę działania tej funkcji można także zaobserwować na poniższym przebiegu czasowym

licznik-w-gore

Zmiana stanu zmiennej przypisanej do parametru CU z niskiego na wysoki (narastające zbocze) powoduje, że funkcja zwiększa liczbę zliczeń o jeden. Jeżeli liczba zliczeń będzie większa lub równa parametrowi PV, to parametr Q przyjmie stan wysoki. Skasowanie aktualnej liczby zliczeń jest realizowane przez zmianę stanu parametru wejściowego R z niskiego na wysoki. Parametr wyjściowy CV zawiera aktualną liczbę zliczeń. W tym wypadku do parametru PV przypisano wartość 3.

Zliczanie w dół

Funkcja CTD() służy do zliczania pojawiających się zdarzeń w dół. Przykładowe wywołanie pokazano poniżej

″IDB9_CTD_Counter″.CTD(CD:=″COU_FP″.CTD_CD_Count,
LD:=″COU_FP″.CTD_LD_Load,
PV:=″COU_FP″.CTD_PV,
Q=>″COU_FP″.CTD_Q_CounterStatus,
CV=>″COU_FP″.CTD_CV_CurrentValue);

Podczas wywołania został utworzony blok danych instance DB o nazwie IDB9_CTD_Counter. Przebieg czasowy przestawiający pracę tej funkcji przedstawiono poniżej

licznik-w-dol

Zmiana stanu zmiennej przypisanej do parametru CU z niskiego na wysoki (narastające zbocze) powoduje, że funkcja zmniejsza liczbę zliczeń o jeden. Jeżeli liczba zliczeń będzie równa zero, to parametr Q przyjmie stan wysoki. Wartość parametru wejściowego PV jest wpisywana do licznika, gdy parametr wejściowy LOAD zmieni stan z niskiego na wysoki. Podczas wysokiego stanu parametru LOAD każda zmiana stanu parametru CU nie powoduje zmniejszenia liczby zliczeń. Parametr wyjściowy CV zawiera aktualną liczbę zliczeń.

Zliczanie w górę i w dół

Funkcje opisane wcześniej zostały ze sobą połączone, co spowodowało powstanie funkcji CTUD(). Służy ona do zliczania pojawiających się zdarzeń w górę lub dół. Przykładowe wywołanie pokazano poniżej

″IDB10_CTUD_Counter″.CTUD(CU:=″COU_FP″.CTUD_CU_CountUp,
CD:=″COU_FP″.CTUD_CD_CountDown,
R:=″COU_FP″.CTUD_R_Reset,
LD:=″COU_FP″.CTUD_LD_Load,
PV:=″COU_FP″.CTUD_PV,
QU=>″COU_FP″.CTUD_QU_CounterUpStatus,
QD=>″COU_FP″.CTUD_QD_CounterDownStatus,
CV=>″COU_FP″.CTUD_CV_CurrentValue);

Wykres czasowy tej funkcji zamieszczono poniżej

licznik-w-gore-i-w-dol

Zmiana stanu zmiennej przypisanej do parametru CU z niskiego na wysoki (narastające zbocze) powoduje, że funkcja zwiększa liczbę zliczeń o jeden. Zmiana stanu parametru CD z niskiego na wysoki (narastające zbocze) powoduje, że funkcja zmniejsza liczbę zliczeń o jeden. Jeżeli liczba zliczeń (parametr CV) będzie większa lub równa parametrowi PV, to parametr wyjściowy QU przyjmie stan wysoki. Jeżeli liczba zliczeń (parametr CV) będzie mniejsza lub równa zero, wówczas parametr wyjściowy QD przyjmie stan wysoki. Wartość parametru wejściowego PV jest wpisywana do licznika, gdy parametr wejściowy LOAD zmieni stan z niskiego na wysoki. Skasowanie aktualnej liczby zliczeń jest realizowane przez zmianę stanu parametru wejściowego R z niskiego na wysoki.

 Zadanie

Utwórz nowy projekt w TIA Portal ze sterownikiem S7-1200. Dodaj nowy blok danych o nazwie COU_FP. W bloku należy umieścić odpowiednie zmienne, które pojawiły się w przedstawionych listingach. Następnie wywołaj w bloku OB1 każdą z funkcji licznikowych. Przetestuj ich działanie w praktyce.

//————-

Kurs-wideo-CZPP

Więcej w kursie wideo: Chcę zostać programistą PLC

Nagrania są dostępne w wersji online jak również na płytach DVD. Napisz mailem, jaką wersje wybierasz.

Podziel się tym wpisem na:
  • Facebook
  • Google Bookmarks
  • Twitter
  • Wykop

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

<