fbpx

Obsługa dodatkowych komponentów

obsluga-komponentow

Zajmiemy się teraz realizacją kolejnego założenia, którym będzie punkt 39 „Wciśnięcie przycisku bezpieczeństwa na szafie powinno powodować pulsowanie podświetlenia przycisku Reset tylko na tej szafie sterowniczej”. W dalszej kolejności przejdziemy do 41, czyli „Na wszystkich lampach sygnalizacyjnych powinny świecić się te same kolory (wyjątkiem jest lampa czerwona”.

Obsługa dodatkowych komponentów

Urządzenie, które teraz oprogramujemy, to przycisk Reset oraz kolumny sygnalizacyjne

Podświetlenie przycisku Reset

W tej chwili mamy napisany kod programu, który obsługuje tylko podświetlenie przycisku ResetLight_C1. Jak zapewne pamiętasz, do niedawna był tylko jeden przycisk Reset. Zadanie do wykonania powtarza się trzy razy. Z tego względu powinna nam się nasunąć myśl, aby wykorzystać funkcje.

W drzewie projektu do modułu Light dodamy funkcję FC o nazwie LOG_HandleResetLight. W sekcji interfejsu tworzymy dwa parametry wejściowe (Input) o nazwie ModeError oraz StatusEmergencyButton typu Bool. Wykorzystamy także parametr wyjściowy (Return) i wybierzemy tam typ bool.

Założenie mówi, że jak grzybek na szafie sterowniczej jest wciśnięty, to podświetlenie przycisku Reset powinno pulsować. A jak ma się zachować podświetlenie, gdy zostanie wciśnięty przycisk bezpieczeństwa na innej szafie sterowniczej. Możemy założyć, że będzie świecić światłem ciągłym. Będzie to informacja dla operatora, że gdzieś został wciśnięty Emergency buton. Kod realizujący te założenia został przedstawiony na poniższym listingu.

IF (#StatusEmergencyButton) THEN
#LOG_HandleResetLight := "Clock_0.5Hz";
ELSE
#LOG_HandleResetLight := #ModeError;
END_IF;

Instrukcja warunkowa IF sprawdza status przycisku bezpieczeństwa. Jeżeli został wciśnięty, wówczas warunek jest prawdziwy i do parametru wyjściowego LOG_HandleResetLight jest przypisywany stan sygnału zegarowego o częstotliwości 0.5 Hz. Jeżeli warunek nie jest spełniony, wówczas do parametry wyjściowego jest przypisywana aktualna wartość parametru ModeError.

Teraz pozostało wywołać tą funkcję dla każdego z podświetleń przycisku Reset. Zrealizujemy to w funkcji LOG_BacklightButton(). Kod przedstawiono na poniższym listingu

//"ResetLight_C1" := "MAN_LineMode".Error AND "Clock_0.5Hz";
"ResetLight_C1" := "LOG_HandleResetLight"(ModeError:="MAN_LineMode".Error, StatusEmergencyButton:="ERR_Error".EmergencyButton_C1);
"ResetLight_C2" := "LOG_HandleResetLight"(ModeError := "MAN_LineMode".Error, StatusEmergencyButton := "ERR_Error".EmergencyButton_C2);
"ResetLight_C3" := "LOG_HandleResetLight"(ModeError := "MAN_LineMode".Error, StatusEmergencyButton := "ERR_Error".EmergencyButton_C3);

Poprzednio wykorzystywana linia kodu została umieszczona w komentarzu. Funkcję LOG_HandleResetLight() wywołano trzy razy, ponieważ mamy trzy przyciski Reset z podświetleniem.

Kolumna sygnalizacyjna

Kolejne założenie o numerze 41 jest powiązane z kolumna sygnalizacyjną. Na obiekcie, gdzie znajduje się nasza linia znajdują się trzy kolumny. W tym wypadku także najlepszym rozwiązaniem jest utworzenie funkcji. Jak zapewne się domyślasz, nową funkcję FC dodamy do modułu Light. Funkcję możemy nazwać LOG_HandleColumnLight. Będą też potrzebne parametry, od których uzależnimy sterowanie poszczególnych kolorów. Jako parametry wejściowe (input) dodamy ModeStart, ModeManual, ModeError, StatusEmergencyButton. Wszystkie parametry powinny być typu bool. Potrzebne będą też trzy parametry wyjściowe (output) typu bool o następujących nazwach: VSI_Green, VSI_Yellow, VSI_Red. Kod przedstawiono na poniższym listingu

#VSI_Green := #ModeStart;
#VSI_Yellow := #ModeManual AND #ModeStart AND "Clock_0.5Hz";
IF (#StatusEmergencyButton) THEN
#VSI_Red := "Clock_0.5Hz";
ELSE
#VSI_Red := #ModeError;
END_IF;

Sterowanie kolorem zielonym i żółtym jest analogiczne, jak było zrealizowane dotychczas. Jedyna różnica, to teraz wykorzystywane są parametry. W dalszej kolejności jest instrukcja warunkowa IF sprawdzająca parametr informujący o statusie wciśnięcia przycisku bezpieczeństwa. Jeżeli został wciśnięty grzybek, wówczas czerwona lampa będzie pulsować z częstotliwością 0,5Hz. W innym wypadku będzie świecić, jeżeli pojawi się jakiś błąd.

Funkcję LOG_HandleColumnLight() wywołamy w funkcji LOG_ColumnLight(). Należy na początku umieścić w komentarzu kod, który znajduje się w tej funkcji lub go po prostu usunąć. Wywołanie przedstawiono poniżej

//CABINET C1
"LOG_HandleColumnLight"(ModeStart:="MAN_LineMode".Start,
ModeManual:="MAN_LineMode".Manual,
ModeError:="MAN_LineMode".Error,
StatusEmergencyButton:="ERR_Error".EmergencyButton_C1,
VSI_Green=>"GreenVSI_C1",
VSI_Yellow=>"YellowVSI_C1",
VSI_Red=>"RedVSI_C1");
//CABINET C2
"LOG_HandleColumnLight"(ModeStart := "MAN_LineMode".Start,
ModeManual := "MAN_LineMode".Manual,
ModeError := "MAN_LineMode".Error,
StatusEmergencyButton := "ERR_Error".EmergencyButton_C2,
VSI_Green => "GreenVSI_C2",
VSI_Yellow => "YellowVSI_C2",
VSI_Red => "RedVSI_C2");
//CABINET C3
"LOG_HandleColumnLight"(ModeStart := "MAN_LineMode".Start,
ModeManual := "MAN_LineMode".Manual,
ModeError := "MAN_LineMode".Error,
StatusEmergencyButton := "ERR_Error".EmergencyButton_C3,
VSI_Green => "GreenVSI_C3",
VSI_Yellow => "YellowVSI_C3",
VSI_Red => "RedVSI_C3");

Dla każdej z funkcji przypisano odpowiednie wartości informujące o aktualnym trybie pracy linii i statusie przycisku bezpieczeństwa. Do parametrów wyjściowych przypisano nazwy symboliczne opisujące każdą z kolumn.

Testowanie

Napisany kod należy skompilować i wgrać do sterownika. Dalszy krok, to uruchomienie Factory IO naciśnięcie dowolnego przycisku bezpieczeństwa i obserwacja lamp sygnalizacyjnych oraz podświetleń przycisków Reset.

Kurs wideo

Więcej na temat programowania w języku SCL znajdziesz w kursie Sterownik PLC w praktyce:

pl-usb-1p1-tia-1200-scl_sterownik-plc_w-praktyce-1

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>

Newsletter - Zapisz się i jako pierwszy otrzymasz najnowsze informacje