Modyfikacja obsługi przycisków bezpieczeństwa

Bezpieczenstwo

Linia została rozbudowana, więc teraz czas na pracę z projektem. W poprzednim wpisie podałem Ci założenia projektowe. Teraz zajmiemy się realizacją kilku z nich.

Można powiedzieć, że nowe wymagania są powiązane z warstwą błędów. Po przypomnieniu kodu progamu, który tam się znajduje oraz ponownym przeczytaniu założeń można stwierdzić, że są one dosyć proste. Zajmiemy się realizacją punktu 38 oraz 40.

Modyfikacja obsługi przycisków bezpieczeństwa

Pojawiły się nowe sygnały, zatem należy odpowiednio rozbudować tablice PLC tags. Wszystkie sygnały wejściowe przedstawione zostały poniżej

Input-FIO

Tablica OutputFIO z sygnałami wyjściowymi została przedstawiona poniżej

Output-FIO

Zaczniemy od realizacji punktu 38. Wszystkie informacje o błędach umieszczamy w bloku danych o nazwie ERR_Error. Obecnie znajduje się tam zmienna o nazwie EmergencyButton. Należy zmienić jej nazwę na EmergencyButton_C1, co będzie odpowiadać przyciskowi bezpieczeństwa z szafy sterowniczej C1.Należy dodać jeszcze do tego bloku danych dwie zmienne typu bool o nazwach EmergencyButton_C2 oraz EmergencyButton_C3.

Naciśnięcie przycisku bezpieczeństwa na danej szafie może być zrestartowane tylko przyciskiem reset na tej samej szafie. Aby była możliwość zrealizowania tego, należy w inny sposób przechwycić zdarzenie wciśnięcia grzybka. Kod został przedstawiony poniżej

IF (NOT "E-Stop_C1") THEN
"ERR_Error".EmergencyButton_C1 := TRUE;
END_IF;
IF (NOT "E-Stop_C2") THEN
"ERR_Error".EmergencyButton_C2 := TRUE;
END_IF;
IF (NOT "E-Stop_C3") THEN
"ERR_Error".EmergencyButton_C3 := TRUE;
END_IF;

Naciśnięcie odpowiedniego przycisku bezpieczeństwa powoduje, że do określonej zmiennej z bloku danych ERR_Error zostaje przypisany stan wysoki. Wszystkie te zmienna należy powiązać z globalną informacją o błędzie, która jest przechowywana w zmiennej Error z bloku danych MAN_LineMode. Kod został przedstawiony poniżej

IF ("ERR_Error".EmergencyButton_C1 OR "ERR_Error".EmergencyButton_C2 OR "ERR_Error".EmergencyButton_C3 OR "ERR_Error".ChangeMode OR "ERR_Error".PotentiometrDirectionPositionInManualMode) THEN
"MAN_LineMode".Error := TRUE;
END_IF;

Podobnie jak poprzednio, jeżeli którakolwiek zmienna z bloku danych ERR_Error będzie w stanie wysokim, do zmiennej  „MAN_LineMode”.Error jest natychmiast przypisywany stan wysoki.

Przejdźmy do realizacji punkt numer 40, który wiążę się z restartowaniem błędów. Idea jest analogiczna, jak poprzednio. Trzeba ten kod zmodyfikować odpowiednio dla każdego przycisku oraz zmienną o naciśnięciu przycisku bezpieczeństwa. Kod przedstawiono poniżej

IF ("Reset_C1") THEN
"ERR_Error".EmergencyButton_C1 := FALSE;
"MAN_LineMode".Error := FALSE;
END_IF;
IF ("Reset_C2") THEN
"ERR_Error".EmergencyButton_C2 := FALSE;
"MAN_LineMode".Error := FALSE;
END_IF;
IF ("Reset_C3") THEN
"ERR_Error".EmergencyButton_C3 := FALSE;
"MAN_LineMode".Error := FALSE;
END_IF;

W ten sposób realizujemy w naszym programie restartowanie błędów.

Testowanie

Robimy kompilację i wgrywamy kod do sterownika. Następnie w Factory IO wciśnij przycisk bezpieczeństwa na dowolnej szafie sterowniczej. Sprawdź, czy jedyny sposób restartu, to naciśnięcie przycisku znajdującego się na tej samej szafie sterowniczej.

//————-

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>