[KURS PLC, CZĘŚĆ 10] Sterowniki SIMATIC S7-1200 (CPU1211C) – timer programowy
Uwaga! Lista wszystkich opublikowanych odcinków kursu jest dostępna pod adresem.
W kolejnym odcinku kursu programowania PLC zajmiemy się pokazaniem przykładu pomiaru czasu – w sterowniku PLC zaimplementujemy timer. Sterowniki PLC z rodziny S7-1200 mają kilka możliwości odmierzenia odcinków czasu, w tym sprzętowe (w określonym momencie jest generowane przerwanie sprzętowe) oraz programowe. Każdy z tych sposobów ma swoje zalety, w tej części kursu przedstawimy przykład timera programowego.
Zadanie
Firma przemysłowa ma na terenie swojego zakładu wagę samochodów ciężarowych. W celu zwiększenia precyzji pomiaru zastosowano dodatkowe rozwiązanie. Na końcu wagi znajduje się czujnik, którego zadaniem jest wykrycie samochodu na wadze. Gdy czujnik wykryje pojazd, wówczas należy odczekać 30 sekund w celu ustabilizowania wagi. Po tym czasie zapala się zielona lampa sygnalizacyjna informująca operatora, że można zanotować wynik pomiaru. Następnie samochód zjeżdża z wagi i wówczas czujnik już nie wykrywa obecności samochodu. Powoduje to, że zielona lampa nie świeci.
Zestaw startowy do kursu programowania SIMATIC S7-1200 Sklep KAMAMI.pl przygotował specjalną ofertę dla osób zainteresowanych poznaniem w praktyce możliwości sterowników SIMATIC S7-1200 oraz podstaw ich programowania. W ramach tej oferty dostępny jest zestaw startowy o nazwie Siemens SIMATIC S7-1200 PROMO w promocyjnej cenie (659 PLN brutto). Składa się on z następujących elementów:
|
Programowe odmierzanie czasu
Do rozwiązania tego zadania wykorzystamy funkcje programowe udostępniane dla sterownika PLC CPU1211C przez TIA Portal. Wszystkie dostępne funkcje znajdują się w zakładce Instructions. Po rozwinięciu karty Basic instructions znajduje się katalog Timer operations. W tym katalogu umieszczone są cztery funkcje czasowe oraz dodatkowe dwie funkcje wspomagające. Poniższy rysunek przedstawia dostępne funkcje.
Opiszę w skrócie, do czego można zastosować każdą z funkcji:
- TP – układ czasowy Generate pulse generuje impuls o ustalonym czasie trwania,
- TON – układ czasowy Generate on-delay na wyjściu ustawia stan wysoki po upływie zadanego czasu opóźnienia,
- TOF – układ czasowy Generate off-delay na wyjściu ustawia stan niski po upływie zadanego czasu opóźnienia,
TONR – układ czasowy Time accumulator ustawia na wyjściu stan wysoki po upływie zadanego czasu opóźnienia. Upływający czas może być naliczany wielokrotnie, aż do chwili, gdy zliczony upływ czasu zostanie wyzerowany.
Dodatkowe funkcje można zastosować do:
- RESET_TIMER – funkcja pozwala skasować wartość czasu, który już upłynął,
- PRESET_TIMER – funkcja służy do wprowadzenia nowej nastawy czasu opóźnienia do określonego timera.
Do wykonania zadania wykorzystamy timer TON. Graficzna reprezentacja funkcji została przedstawiona na poniższym rysunku.
Funkcja ma dwa parametry wejściowe oraz dwa parametry wyjściowe. Poniżej opis każdego z parametrów:
- IN – wejście (typu BOOL) uaktywniające timer,
- PT – wejście (typu TIME) służące do nastawiania czasu,
- Q – wyjście (typu BOOL) timera,
- ET – wyjście (typu TIME) określające, ile czasu już upłynęło.
Skrót PT oznacza preset time (czas nastawiony) natomiast ET oznacza elapsed time (upływający czas). Do parametru wejściowego IN można przypisać np. zmienną lub tag.
Wykres czasowy przedstawiono na poniższym rysunku
Do parametry PT zostaje przypisana pewna wartość opóźnienia. Po zmianie stanu z niskiego na wysoki zmiennej przypisanej do parametru IN następuje rozpoczęcie odmierzania czasu opóźnienia. Gdy nastąpi zakończenie odmierzania czasu PT, następuje zmiana stanu wyjścia Q na wysoki. Wyjście Q jest w stanie wysokim do momentu, aż wejściu IN pojawi się stan niski.
Dla zainteresowanych doskonaleniem programowania PLC Wydawnictwo BTC przygotowało książkę „Podstawy programowania sterowników SIMATIC S7-1200 w języku SCL”, której autorem jest autor naszego kursu, doświadczony projektant systemów automatyki – Tomasz Gilewski. |
Projekt w TIA Portal
Tworzymy nowy projekt (np. o nazwie 10_Timer), który konfigurujesz sterownik w ten sam sposób, jak w poprzednich odcinkach kursu programowania PLC.
Przejdźmy teraz do praktycznego zaimplementowania timera w sterowniku PLC. Najpierw utworzymy tablicę PLC tags o nazwie CONST. Do tej tablicy trzeba dodać stałą o nazwie CONST_WAITING_TIME typu TIME i wartości T#30s. Rysunek poniżej przedstawia utworzoną stałą.
Mamy utworzoną stałą. Potrzebne są jeszcze tagi opisujące wejścia i wyjścia cyfrowe. Utworzone tablice przedstawiono na rysunku poniżej.
Zostały utworzone dwie tablice PLC tags. W bloku OB1 umieścimy kod realizujący zadanie. Należy wywołać funkcję TON, co spowoduje pojawienie się okna Call option. W tym oknie należy utworzyć nowy blok instance DB, który zostanie powiązany z funkcją TON. Kod z bloku OB1 przedstawiono poniżej.
„IEC_TimerTON_IDB”.TON(IN:=”Sensor”,
PT:=”CONST_WAITING_TIME”,
Q=>”LedGreen”);
Do funkcji TON został utworzony blok instance DB o nazwie IEC_TimerTON_IDB. Do parametru IN został przypisany tag o nazwie Sensor, natomiast do parametru PT przypisano stałą o nazwie CONST_WAITING_TIME. Stan logiczny z wyjścia Q jest przypisywany do tagu o nazwie LedGreen. Wartość upływającego czas z parametru ET nie jest potrzebna, dlatego ten parametr został pominięty.
Teraz przedostatni krok, to kompilacja całego projektu i programowanie sterownika.
Testowanie programu
Możesz teraz sprawdzić, czy program działa zgodnie z założeniami. Naciśnij przycisk podłączony do wejścia I0.0. Po 30 sekundach dioda powinna się zaświecić. Zobacz poniżej, jak to wygląda na wykresie.
Górny przebieg przedstawia czujnik (emulowany przez przycisk). Na początku pojawił się na krótki czas impuls (np. taka sytuacja może się pojawić, gdy przechodząca osoba zasłoni czujnik). To jednak była za krótka chwila (mniejsza niż 30 sekund), aby zielona dioda LED zaczęła świecić. Czas był mierzony, jednak pojawiło się zbocze opadające. To spowodowało zatrzymanie odmierzania czasu Dopiero następne zbocze narastające uaktywnia kolejny pomiar czasu. Stan wysoki utrzymuje się ciągle na wyjściu czujnika. Jak widzisz na wykresie, po 30 sekundach nastąpiła zmiana stanu zielonej diody LED. Dioda LED świeciła do momentu, aż nastąpiła zmiana stanu sygnału z czujnika.
Tomasz Gilewski