LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

[KURS PLC, CZĘŚĆ 12] Sterowniki SIMATIC S7-1200 (CPU1211C) – przetwornik analogowo-cyfrowy

Uwaga! Lista wszystkich opublikowanych odcinków kursu jest dostępna pod adresem.

W tej części kursu zajmiemy się przetwornikiem analogowo-cyfrowym, który jest w każdym modelu sterownika S7-1200. W tych sterownikach znajdziemy dwa kanały napięciowe z zakresem 0…10 V. Każdy kanał ma rozdzielczość 10 bitów. Aby poznać dokładnie sposób konfiguracji i obsługi przetwornika, wykonamy zadanie praktyczne.

Zadanie

Należy napisać program w TIA Portal, w którym w zależności od napięcia podanego na wejścia analogowe sterownika PLC jest włączana odpowiednia liczba wyjść cyfrowych. Sterownik CPU1211 DC/DC/DC ma cztery wyjścia, więc są cztery przedziały przedstawione poniżej:

  • Wyjście 0 – <0-2,5V)
  • Wyjście 1 – <2,5-5V)
  • Wyjście 2 – <5-7,5V)
  • Wyjście 3 – <7,5-10V)

Jeżeli napięcie jest równe zero, to żadne z wyjść nie jest włączone.

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:

  • sterownika SIMATIC S7-1200 (CPU1211C, 6ES7211-1AE40-0XB0),
  • przełącznika SIRIUS ACT NO+NC zintegrowanego z LED (3SU1031-3BB61-0AK0, 3SU1500-0AA10-0AA0, 3SU1400-1AA10-1BA0, 3SU1400-1AA10-1CA0, 3SU1401-1BB60-1AA0),
  • oprogramowania w wersji eval.
Schemat elektryczny

Sposób podłączenia komponentów do PLC przedstawiono na poniższym rysunku:

Napięcie będzie zadawane za pomocą potencjometru, który został oznaczony na schemacie jako POT. Aby przetwornik analogowy działał poprawnie, należy do złącza 2M podłączyć ujemny potencjał zasilania, czyli masę. Należy uważać, aby nie przekraczać zakresu, ponieważ w takiej sytuacji sterownik zgłasza błąd (czerwona dioda ERROR na panelu czołowym PLC zostanie włączona). Sterownik S7-1200 jest zabezpieczony przed takim zdarzeniem, więc się nie uszkodzi.

Obsługa przetwornika ADC

Jeżeli programowałeś mikrokontroler, to wiesz co trzeba zrobić, aby użyć przetwornika analogowo-cyfrowego. W przypadku sterownika PLC zasada jest podobna.

Wartość analogowa jest zamieniana na cyfrową. Ta liczba może mieć maksymalną wartość 27648, która odpowiada napięciu 10V. Wartość cyfrowa jest przechowywana w pamięci sterownika, czyli jednym z rejestrów. Jak widać, zakres tej liczby jest dosyć duży. Aby przechować taką liczbę, jest potrzebne tzw. słowo (czyli 2 bajty). Adres pamięci, pod którym znajduje się wartość cyfrowa zmierzonego napięcia można sprawdzić w konfiguracji sprzętowej sterownika, a dokładnie w zakładce Device overview. Przedstawia to poniższy rysunek:

Jak widać, obszar pamięci dla dwóch kanałów zawiera się w przedziale bajtów od 64 do 67. Jest to ustawienie domyślne. Zatem bajty od 64 do 65 to kanał pierwszy, natomiast bajty od 66 do 67 to kanał drugi. My w projekcie wykorzystamy kanał pierwszy (zgodnie ze schematem elektrycznym).

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 (o nazwie np. 12_ADC), który konfigurujemy w ten sam sposób, jak w poprzednich odcinkach.

Przed napisaniem kodu programu należy jeszcze utworzyć nazwy symboliczne. Do projektu trzeba dodać tablicę PLC tags o nazwie AnalogInput, gdzie zdefiniujemy adres pamięci, pod którym znajduje się wartość cyfrowa z przetwornika. Tablica została przedstawiona poniżej:

Utworzona nazwa symboliczna AI_Channel1Address typu Word, która wskazuje na adres pierwszego kanału przetwornika analogowo-cyfrowego.

Tworzymy jedną tablicę o nazwie Output. Utworzone tablice przedstawiono poniżej:

W tablicy mamy utworzone cztery nazwy symboliczne, po jednej dla każdego z wyjść znajdujących się w sterowniku.

Wartość cyfrową z przetwornika zamienimy na liczbę, która będzie mówić nam o aktualnym napięciu. Do tego celu potrzebne są stałe. Podobnie jak poprzednim projekcie, tak i teraz utworzymy nową tablicę PLC tags o nazwie CONST. W zakładce User constants tworzymy nowe stałe, które przedstawia poniższy rysunek:

Stała o nazwie CONST_UP_VOLTAGE_LIMIT typu Real o wartości 10.0 odpowiada górnej wartości napięcia, jaką może zmierzyć przetwornik ADC. Kolejnej stałej również typu Real o nazwie CONST_ADC_CONVERT przypiszmy wartość 27648.0. Odpowiada ona maksymalnej wartości zmierzonej przez przetwornik, która jest równoważna napięciu 10 VDC.

Teraz utworzymy funkcję, która będzie przeliczała wartość cyfrową na wartość napięcia. Do folderu Program blocks dodajemy funkcję FC o nazwie VoltageCalculation. W sekcji interfejsu należy zdefiniować parametr wejściowy (sekcja IN) typu Word o nazwie AnalogValue oraz parametr wyjściowy Return ustawić jako typ Real. Zdefiniujmy także dwie zmienne tymczasowe: typu DInt o nazwie tempWord2DInt oraz typu LReal o nazwie tempDInt2LReal. Kod funkcji VoltageCalculation() przedstawiono poniżej:

#tempWord2DInt := WORD_TO_DINT(IN := #AnalogValue);
#tempDInt2LReal := DINT_TO_LREAL(IN := #tempWord2DInt) * "CONST_UP_VOLTAGE_LIMIT";
#VoltageCalculation := LREAL_TO_REAL(IN := #tempDInt2LReal / "CONST_ADC_CONVERT");

Funkcja implementuje obliczanie napięcia za pomocą proporcji dobrze znanej z lekcji matematyki. Nie ma funkcji konwertującej typ Word na Real w bezpośredni sposób, dlatego w pierwszej linii następuje konwersja zmiennej typu Word na typ DInt.

Funkcję VoltageCalculation() należy wywołać w bloku OB1, co przedstawia poniższy kod programu:

"Led0" := "VoltageCalculation"(AnalogValue := "AI_Channel1Address") > 0;
"Led1" := "VoltageCalculation"(AnalogValue := "AI_Channel1Address") > 2.5;
"Led2" := "VoltageCalculation"(AnalogValue := "AI_Channel1Address") > 5;
"Led3" := "VoltageCalculation"(AnalogValue := "AI_Channel1Address") > 7.5;

Do parametru AnalogValue została przypisana aktualna wartość cyfrowa napięcia, którą przechowuje nazwa symboliczna AI_Channel1Address. Wartość napięcia zwrócona przez funkcję VoltageCalculation() (poprzez parametr Return tej funkcji) jest porównywana z wartością napięcia, od której dana dioda powinna się włączyć. Jeżeli wartość napięcia z funkcji VoltageCalculation() jest większa od wartości granicznej, to warunek jest spełniony i dioda zostaje włączona. Sytuacja jest analogiczna dla każdej z diod.

Zadanie

Utwórz kolejną tablice PLC tags, gdzie utworzysz stałe określające wartości graniczne, od której powinny włączać się diody podłączone do wyjść cyfrowych sterownika. Należy utworzyć cztery stałe. Następnie zmodyfikuj kod w bloku OB1.

Tomasz Gilewski