LinkedIn YouTube Facebook
Szukaj

Wstecz
Artykuły

[PROJEKT] Monitor natężenia prądu z dwoma progami alarmowymi na sterowniku SIMATIC S7-1200

W kolejnym już projekcie na sterownik PLC SIMATIC S7-1200 dostępnym na portalu Mikrokontroler.pl, przedstawiamy układ monitorowania prądu przepływającego przez czujnik ACS712. Wynik pomiaru prądu będzie dostępny na panelu na stronie WWW generowanej przez sterownik. Dodatkowo zaprogramowane zostaną dwa progi alarmowe, których przekroczenie włączy odpowiednie wyjście cyfrowe.

Do zbudowania projektu użyto następujących komponentów:

Sterownik SIMATIC S7-1200

Produkty Siemens z serii SIMATIC S7-1200 to programowalne sterowniki logiczne (PLC) przeznaczone do małych i średnich aplikacji. Wraz z urządzeniami towarzyszącymi stanowią kompletny system sterowania dla automatyki. Seria, oprócz jednostek centralnych, obejmuje również moduły wejść oraz wyjść cyfrowych i analogowych, moduły komunikacyjne, a także panele HMI. Dzięki implementacji standardowych protokołów komunikacyjnych możliwa jest łatwa integracja sterowników z istniejącymi systemami.

Używany w projekcie sterownik 6ES7211-1AE40-0XB0 cechuje się następującymi właściwościami:

  • 6 wejść cyfrowych 24 V DC,
  • 4 wyjścia cyfrowe 24 V DC,
  • 2 wejścia analogowe od 0 do 10 V DC, rozdzielczość 10 bitów,
  • Pamięć: 50 kB,
  • Regulator PID z auto tuningiem,
  • Zintegrowany ETHERNET – PROFINET,
  • Montaż na szynie DIN,
  • Zasilanie: 24 V DC,
  • Wymiary: 90 x 100 x 75 mm,
  • Waga: 370 g.

Rys. 1. Sterownik PLC SIMATIC S7-1200

Zestaw symulacyjny KA-S71200-IO-Simulator

KA-S71200-IO-Simulator z oferty sklepu Kamami.pl to kompletny zestaw symulujący typowe otoczenie sterownika PLC. Umożliwia on podanie na wejścia cyfrowe i analogowe odpowiednich sygnałów – zarówno z przełączników, jak i wbudowanych czujników, a także zewnętrznych sensorów. Z kolei stan wyjść można odczytać za pomocą diod LED.

Rys. 2. Zestaw KA-S71200-IO-Simulator

Kompletny opis zestawu symulacyjnego KA-S71200-IO-Simulator znajdziesz w artykule KA-S71200-IO-Simulator – zestaw symulacyjny dla sterowników SIMATIC S7-1200

Czujnik prądu ACS712

Pomiar prądu będzie wykonywał czujnik ACS712 firmy Allegro MicroSystems. Jest to ekonomiczny i precyzyjny element do pomiaru prądu stałego oraz zmiennego dla aplikacji przemysłowych, komercyjnych oraz systemów komunikacyjnych. Typowe implementacje obejmują m.in. sterowniki silników, zasilacze impulsowe, a także układy zabezpieczające przed nadmiernym prądem.

Czujniki działają na podstawie efektu Halla. Oznacza to, że mierzą wartość i zwrot pola magnetycznego generowanego przez prąd przepływający przez przetwornik. Zmierzona wartość jest konwertowana na sygnał analogowy, który jest liniowo proporcjonalny do natężenia prądu. Stosunek zmiany napięcia do przepływającego prądu zależy także od modelu czujnika, a ściślej od dopuszczalnego maksymalnego prądu.

My w projekcie wykorzystamy czujnik ACS712-05 z maksymalnym dopuszczalnym prądem ±5 A. Zgodnie z dokumentacją ten model ma czułość 185 mV/A, co oznacza, że przy prądzie 1 A, na wyjściu czujnika napięcie będzie wynosiło 185 mV więcej niż poziom zera. Poziom zera jest równy mniej więcej połowie napięcia zasilania, które może wynosić maksymalnie 8 V.

W ramach projektu skorzystamy z modułu czujnika natężenia prądu z zamontowanym układem ACS712-05. Moduł umożliwia łatwe dołączenie sensora, zarówno do punktu pomiaru, jak i do hosta, w naszym przypadku sterownika PLC. Cechuje się także niewielkimi wymiarami oraz niską ceną. Wymaga podłączenia zasilania 5 V.

Rys. 3. Moduł z czujnikiem natężenia prądu ACS712-05

Podłączenie czujnika do sterownika SIMATIC S7-1200

W projekcie skorzystamy ze sterownika SIMATIC S7-1200 model 6ES7211-1AE40-0XB0 z dołączonym zestawem rozwojowym KA-S71200-IO-Simulator. Sensor ma wyjście analogowe, a więc podłączymy go do jednego z wejść analogowych dla sensorów zewnętrznych, konkretnie do wejścia drugiego. Skorzystamy również z zasilania 5 V, wyprowadzonego na module wejściowym na złącze do podłączenia tensometru.

Sposób podłączenia modułu do płytki przedstawiono w poniższej tabeli oraz na fotografii.

Tab. 1. Podłączenie sensora ACS712 do modułu KA-S71200-IO-Simulator

Sensor ACS712 KA-S71200-IO-Simulator
OUT Ext2
GND M
VCC +5V (Złącze Tensometer)

Rys. 4. Moduł z czujnikiem prądu podłączony do KA-S71200-IO-Simulator

Moduł symulatora ma za zadanie doprowadzić sygnał z portu Ext2 na wejście analogowe AI1 sterownika SIMATIC. Aby to zrobić należy przestawić przełącznik SEL.AI1 w pozycję Ext2. Zostało to wyraźnie oznaczone na powyższej fotografii.

Aby nawiązać komunikację ze sterownikiem PLC należy połączyć się za pomocą przemysłowego standardu Ethernet – PROFINET. Aby to zrobić najlepiej nawiązać komunikację punkt-punkt pomiędzy sterownikiem a przewodową kartą Ethernet. W warunkach amatorskich najczęściej mamy jednak do dyspozycji albo komputer, który w ogóle nie ma karty przewodowej (np. laptop), albo komputer, w którym jedyne złącze Ethernet jest wykorzystywane do komunikacji z siecią internet. W takim przypadku najprościej jest wykorzystać adapter USB 3.0 <> RJ-45 Ethernet.

Prezentowany projekt ma za zadanie obliczyć prąd z sygnału doprowadzonego do sterownika. Obliczona wartość będzie dostępna m.in. na stronie dostępnej na serwerze www sterownika. Dodatkowo po przekroczeniu dwóch progów alarmowych (0,5 A oraz 1,5 A) włączane będą odpowiednie wyjścia cyfrowe sterownika.

W pierwszej kolejności należy odpowiednio skonfigurować projekt w środowisku TIA Portal V15.1. Informacje jak to zrobić znajdziesz w drugim odcinku naszego kursu Sterowniki S7-1200 w praktyce, w którym opisaliśmy wstępną konfigurację połączenia PC<>Sterownik PLC, a także rejestrację sterownika w oprogramowaniu.

Z kolei sposób włączenia, podstawy konfiguracji oraz demonstrację działania serwera Web wbudowanego w sterownik SIMATIC S7-1200 również znajdziesz w jednym z odcinków kursu.

Odczyt danych z sensora ACS712

Jak wspomniano, sygnał analogowy na wyjściu jest liniowo proporcjonalny do mierzonego prądu. Poziom 0 A jest mniej więcej równy połowie zasilania, czyli w naszym przypadku równy 2,5 V. Należy więc najpierw usunąć tą składową stałą, a następnie przeliczyć wartość próbki najpierw na miliwolty, a następnie na ampery. Dodatkowo wartości próbki po odliczeniu składowej stałej będą uśredniane w celu usunięcia niepożądanych wahań napięcia i stabilizacji odczytu. Poniżej zaprezentowano kod tej części programu.

Rys. 5. Kod w TIA Portal do obliczenia wartości prądu z sensora ACS712

Kalibracja zera

W trakcie wstępnych prac okazało się, że o ile współczynnik konwersji prądu na napięcie z dokumentacji dość dokładnie odpowiada realnemu, o tyle poziom zera jest delikatnie przesunięty względem napięcia 2,5 V. Istnieje prawdopodobieństwo, że dla różnych egzemplarzy czujnika poziom ten jest różny. W związku z tym zdecydowałem o dodaniu do projektu prostej procedury kalibracji zera.

Po uruchomieniu procedury blok LGF_FLoatingAverage rozpocznie zbieranie i uśrednianie próbek z czujnika. Uśredniony pomiar jest zapisywany w zmiennej offset, która jest wykorzystywana podczas obliczeń jako poziom składowej stałej usuwanej z danych. Należy nadmienić, że operujemy tu na „surowych” danych z przetwornika.

Poniżej znajduje się blok TON, który ma za zadanie wyłączać proces kalibracji po 1 sekundzie od momentu włączenia.

Procedura kalibracji jest uruchamiana po zmianie flagi WlaczKalibracje na 1. Jest to dostępne za pomocą przycisku na stronie www, o czym w dalszej części artykułu. Nic nie stoi jednak na przeszkodzie, aby uzupełnić kod o inny sposób uruchamiania kalibracji, np. za pomocą wejścia cyfrowego.

Rys. 6. Kod służący do kalibracji zera

Bardzo ważne jest, aby procedura kalibracji zera była uruchamiana tylko wtedy, gdy przez mierzoną gałąź układu nie przepływa prąd.

Obsługa progów alarmowych

Projekt obsługuje dwa progi alarmowe – przy prądzie 0,5 A oraz 1,5 A. Po przekroczeniu progu sterownik jedno z wyjść cyfrowych – odpowiednio D0.0 oraz D0.1.

Co do implementacji progów, to zdecydowałem, że progi będą uruchamiane po przekroczeniu prądu niezależnie od kierunku – np. próg pierwszy uruchomi się zarówno po przekroczeniu 0,5 A jak i -0,5 A. Po drugie oba progi mają wprowadzoną histerezę – włączą się po przekroczeniu wartości nominalnej, ale wyłączą dopiero po spadku prądu do wartości nieco niższej niż próg (odpowiednio 0,4 A i 1,3 A). Na koniec progi mają wprowadzone opóźnienie czasowe – po włączeniu nie wyłączą się wcześniej niż po 5 sekundach od włączenia. Dwie ostatnie właściwości mają za zadanie zapobiegać tzw. drganiom styków – szybko następujących po sobie włączaniu i wyłączaniu.

Poniżej zaprezentowano kod obsługujący pierwszy próg alarmowy (drugi jest niemalże identyczny). Pierwszy blok realizuje funkcję obliczania wartości bezwzględnej prądu, co pozwala w dalszej części operować na jednej tylko wartości. Kolejny blok sprawdza czy prąd jest większy niż zadany próg, a jeśli tak, to włączana jest flaga prog1on. Następny blok sprawdza czy wartość prądu jest niższa niż próg wyłączenia (czy prąd spadł poniżej wartości wyłączenia alarmu) i jeśli tak, to wyłącza flagę prog1on.

Ostatnia sekwencja bloków zaczyna się blokiem TP. Jest on uruchamiany wyjściem cyfrowym i po uruchomieniu wystawia na wyjście wartość 1 na pięć sekund. Wyjście tego bloku trafia na bramkę OR, a na drugim wejściu bramki jest flaga prog1on. Wynik działania bramki jest wyprowadzany na wyjście cyfrowe sterownika. Wyjście jest więc włączone, gdy prąd przekroczy próg alarmowy i pozostaje wyższy niż próg wyłączenia, lub też nie minęło jeszcze 5 sekund od momentu włączenia.

Rys. 7. Kod obsługujący pierwszy próg alarmowy

Strona www

Strona www ma na celu wygodne wyświetlenie wartości prądu, a także umożliwienie włączenia procedury kalibracji.

W kodzie środowiska TIA Portal należy koniecznie wstawić blok www. Bez tego bloku nie można uruchomić własnej strony na serwerze web sterownika. Dodatkowo zastosowałem blok Calculate, który ma za zadanie zaokrąglić dane wyświetlane na stronie do dziesiątych części ampera.

Rys. 8. Kod TIA Portal do obsługi serwera web

W projekcie zastosuję odświeżanie za pomocą skryptu JavaScript z krótkim czasem odświeżania rzędu 20 ms. Ten sposób wyświetlania danych jest zaadaptowaniem jednego z przykładów dostępnych na stronie Siemens. Podobnie sposób ten wykorzystałem w jednym z poprzednich artykułów pt. [PROJEKT] Waga elektroniczna na sterowniku SIMATIC S7-1200, gdzie również znajduje się szerszy opis tego sposobu wyświetlania danych.

Plik index.html wygląda następująco:

Listing 1. Kod pliku index.html strony wyświetlającej dane z sensora ACL712

<html>
<!-- AWP_In_Variable Name='"Data_block_1".wynikAZaokr' -->
<!-- AWP_In_Variable Name='"Data_block_1".WlaczKalibracje' -->

  <head>
    <meta charset="UTF-8">
    <title>Monitor prądu na SIMATIC S7-1200</title>
  </head>

  <body>
    <form>
      <input type="submit" value="Kalibracja">
      <input type="hidden" name='"Data_block_1".WlaczKalibracje' value="1">
    </form>

    <h3>Wartość prądu: <span id="VarId1">VALUE</span> A
    <iframe src="Update_Page.html" style="display:none;"/></h3>

  </body>
</html>

Na początku kodu znajduje się linie AWP określające zmienne, które można wykorzystać do odczytu lub zapisu przez stronę WWW. Strona wyświetla przycisk Kalibracja zera, który po przyciśnięciu włącza flagę WlaczKalibracje i tym samym uruchamia procedurę kalibracji. Następnie strona wyświetla wartość zmiennej VarId1, którą pobiera z pliku Update_Page.html zawierającego skrypt odświeżający stronę.

Plik Update_Page.html to zmodyfikowana wersja z przytoczonego przykładu ze strony Siemens. Zawiera on tabelę, w której można przypisać zmienną z projektu w TIA Portal do nazw używanych w kodzie strony, a także czas odświeżania strony. W tym przykładzie kod będzie co 20 ms odświeżać zmienną wynikAZaokr zawierającą zaokrągloną wartość prądu.

Listing 2. Modyfikacja pliku Update_Page.html

<table border="1">
  <tr>
    <td>
      Update time in milliseconds
    </td>
  </tr>

  <tr>
    <td id="updateInterval">
      20
    </td>
  </tr>
</table>
<br/>

<table id="singleVariablesTable" border="1">
  <tr>
    <td>
      AWP-Command to read variable
    </td>

    <td>
      ID of the element of the main page which should be updated
    </td>
  </tr>

  <tr>
    <td>
      :="Data_block_1".wynikAZaokr:
    </td>

    <td>
      VarId1
    </td>
  </tr>

</table>

Po kompilacji i wgraniu projektu na płytkę można już odczytać dane z własnej strony www.

Rys. 9. Strona odczytująca dane z czujnika prądu

Pełny kod projektu można znaleźć w sekcji Do pobrania.

Uwagi

Projekt jest dostosowany do prądów stałych. W przypadku, gdyby miał być wykorzystany do pomiarów prądów zmiennych, należy wprowadzić funkcję obliczającą wartość skuteczną sygnału. W takim wypadku progi można uruchamiać oczywiście zarówno prądem skutecznym jak i wartością chwilową, w zależności od potrzeb.