LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

[PRZYKŁAD] Obsługa czujnika poziomu cieczy na sterowniku SIMATIC S7-1200 i zestawie symulacyjnym KA-S71200-IO-Simulator

Połączenie elementów projektu

Zestaw symulacyjny należy umieścić w złączach wejściowych i wyjściowych sterownika. Natomiast wyprowadzenia z obudowy sensora są dość intuicyjne: czerwony przewód to zasilanie, czarny – masa, a biały to sygnał z dzielnika napięcia.

Czujnik podłączymy do sterownika jako zewnętrzny sensor, do portu analogowego A.IN0. W tym celu należy podłączyć przewód biały do portu Ext 1 zestawu, a masę do portu M. Według dokumentacji czujnik powinien wytrzymać napięcie zasilania 10 V. Tym niemniej, ponieważ nie znalazłem żadnych informacji o elektronice wbudowanej w obudowę, dla bezpieczeństwa użyję jednak zasilania 5 V.

Połączenie sensora ze sterownikiem zaprezentowano na fotografii oraz w tabeli poniżej.

Tab. 1. Połączenie czujnika z zestawem KA-S71200-IO-Simulator

Sensor poziomu cieczy eTape 5” Zestaw KA-S71200-IO-Simulator
Czerwony +5V
Czarny M
Biały Ext1

Rys. 6. Czujnik poziomu cieczy eTape połączony ze sterownikiem SIMATIC S7-1200

Aby doprowadzić sygnał z sensora do wejścia analogowego należy na płytce wejściowej ustawić przełącznik SEL AI.0 w pozycję Ext1.

Rys. 7. Przełącznik SEL AI.0 na płytce wejściowej w pozycji Ext1

Kod przykładu

Sterownik programuję w środowisku TIA Portal w wersji 15.1. Informacje o wstępnej konfiguracji projektu znajdziesz w drugim odcinku naszego kursu Sterowniki S7-1200 w praktyce, w którym opisaliśmy sposób nawiązania 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 znajdziesz w jednym z kolejnych odcinków kursu.

Zachęcamy oczywiście do przeczytania całego kursu sterowników SIMATIC S7-1200 przygotowanego przez redakcję.

Projekt ma za zadanie odczytać sygnał z czujnika oraz obliczyć poziom cieczy w calach i centymetrach. Dane będą wyświetlane na prostej stronie www. Ponadto, po spadku cieczy poniżej 10 cm włączy się jedno z wyjść cyfrowych, które wyłączy się po podniesieniu poziomu cieczy ponad 15 cm. Ma to emulować sterowanie zaworem w systemie utrzymującym poziom cieczy w naczyniu na stałym poziomie.

W pierwszej kolejności pobieramy dane z przetwornika ADC i uśredniamy pomiar za pomocą funkcji LGF_FloatingAverage ze standardowej biblioteki Library of Global Functions firmy Siemens. Biblioteka w wersji na TIA Portal 15.1 nie jest już dostępna na stronie producenta, a więc dołączyłem ją do plików projektu, w folderze UserFiles. Pełen kod projektu jest dostępny w sekcji „Do pobrania”. Następnie otrzymany wynik jest przeliczany na napięcie w woltach.

Rys. 8. Kod uśredniający pomiar i przeliczający wartość z przetwornika na napięcie

Przeliczenie na poziom cieczy – implementacja wzorów

Następnie projekt przelicza napięcie na rezystancję czujnika. W tej sekcji zaimplementowano wzór z wcześniejszej części artykułu.

Rys. 9. Kod przeliczający napięcie na rezystancję sensora

Potem projekt przelicza rezystancję na poziom cieczy w calach. Tu również nastąpiła jedynie implementacja wzoru podanego wyżej.

Rys. 9. Kod przeliczający rezystancję na poziom cieczy w calach

W dalszej części następuje przeliczenie wysokości w calach na wysokość w centymetrach.

Rys. 10. Kod przeliczający wysokość w calach na wartość w centymetrach

Obsługa wyjścia

Kolejna sekcja obsługuje wyjście cyfrowe. Jak widać wyjście włącza się po spadku wysokości cieczy poniżej 5 cm, a wyłącza po wzroście poziomu powyżej 10 cm.

Rys. 11. Obsługa wyjścia cyfrowego OUT0

Zaokrąglanie wartości i hanger strony www

W ostatnim kroku ustawiamy blok www, który umożliwia uruchomienie na sterowniku własnej strony. Dodatkowo dwa bloki Calculate posłużą do zaokrąglenia danych o poziomie cieczy, aby można było łatwiej wyświetlić je na stronie.

Rys. 12. Kod do obsługi strony www

Strona www

Strona na serwerze stosuje 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 czujnika poziomu cieczy

<html>

<!-- AWP_In_Variable Name='"Data_block_1".wartoscCalZaokr' -->
<!-- AWP_In_Variable Name='"Data_block_1".wartoscCmZaokr' -->

  <head>
    <meta charset="UTF-8">
    <title>Pomiar poziomu cieczy na SIMATIC S7-1200</title>
  </head>
 
  <body>
    <h3>Wysokość cieczy w calach: <span id="VarId1">VALUE</span>"
    <h3>Wysokość cieczy w centymetrach: <span id="VarId2">VALUE</span> cm
    <iframe src="Update_Page.html" style="display:none;"/></h3>
  </body>
</html>

Na początku kodu znajdują się linie AWP, w których niejako importujemy zmienne, które strona www może odczytać lub zapisać. Następnie mamy tytuł strony oraz opis wyświetlanych wyników. Wyniki są zmiennymi aktualizowanymi w pliku Update_Page.html.

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 co 20 ms odświeży zmienne wartoscCalZaokr oraz wartoscCmZaokr zawierającą zaokrągloną wysokość cieczy w calach i centymetrach.

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".wartoscCalZaokr:
    </td>
    <td>
      VarId1
    </td>
  </tr>

  <tr>
    <td>
      :="Data_block_1".wartoscCmZaokr:
    </td>
    <td>
      VarId2
    </td>
  </tr>
</table>

Projekt można używać do rozmaitych zastosowań wymagających kontroli poziomu cieczy – od małych aplikacji w domowych akwariach, aż po bardziej skomplikowane systemy przemysłowe.

Rys. 13. Strona odczytująca dane z czujnika poziomu cieczy

Do pobrania