[KURS PLC, CZĘŚĆ 13] Sterowniki SIMATIC S7-1200 (CPU1211C) – moduł PWM
Uwaga! Lista wszystkich opublikowanych odcinków kursu jest dostępna pod adresem.
Tematem dzisiejszej lekcji kursu PLC jest moduł PWM (ang. Pulse Width Modulation), czyli modulacja szerokości impulsu. Jest to jedno z najczęściej poruszanych zagadnień w przypadku nauki programowania mikrokontrolerów. Sterowniki S7-1200 też mają sprzętowy moduł PWM, pod warunkiem że wyjścia cyfrowe są typu tranzystorowego. Praktykę zdobędziemy dzięki wykonaniu zadania.
Zadanie
Do wyjść cyfrowych w sterowniku S7-1200 podłączono dwie diody LED. Jedną z nich należy włączyć, by świeciła na 100%, natomiast druga powinna świecić z jasnością 50%.
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:
|
Schemat elektryczny
Schemat elektryczny podłączenia osprzętu ze sterownikiem PLC oznaczonym jako U1 przedstawiono na poniższym rysunku:
Do pierwszej próby uruchomienia układu wykorzystano standardowe diody LED. Do wyjścia cyfrowego o adresie Q0.0 podłączono diodę H1 oraz rezystor R1 o wartości 2,2kΩ, natomiast diodę H2 oraz rezystor R2 także o wartości 2,2kΩ podłączono do wyjścia cyfrowego Q0.2.
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. 13_PWM), który konfigurujemy w ten sam sposób, jak w poprzednim odcinku.
Przechodzimy do konfiguracji sprzętowej sterownika poprzez wybranie Device configuration z drzewa projektu. W oknie nadzoru wybieramy zakładkę Properties i rozwijamy gałąź Pulse generators (PTO/PWM), a następnie PTO1/PWM1. W General uaktywniamy generator PWM zaznaczając pole przy Enable this pulse generator. W sekcji Project information w polu Name wpisujemy nazwę Channel1PWM, która będzie stanowić identyfikator sprzętowy tego kanału PWM. Następnie przechodzimy do gałęzi Parameter assignment, która została przedstawiona na poniższym rysunku:
Przeprowadzenie konfiguracji polega na ustawieniu pól w sekcji Pulse options:
- Signal type – wybieramy PWM jako typ generatora
- Time Base – milisekundy będą jednostką czasu, w jakiej będzie generowany przebieg
- Pulse duration format – wartość wypełnienia będzie zadawana w granicach 0 – 100
- Cycle time – określenie częstotliwości, z jaką będzie generowany sygnał PWM. W naszym wypadku będzie to 100 Hz
- Initial pulse duration – wartość początkowa określająca współczynnik wypełnienia sygnału PWM
W gałęzi Hardware outputs z rozwijanej listy w polu Pulse output należy wybrać Q0.0, natomiast gałąź I/O addresses określa za pomocą pól Start address oraz End address zakres pamięci, w której znajduje się wartość współczynnika wypełnienia. Przewidziano na nią dwa bajty pamięci. Ten adres jest potrzebny do zmiany wypełnienia sygnału. Konfigurację przedstawia poniższy rysunek:
W kolumnie Q address znajduje się zakres adresów dla Channel1PWM.
Przechodzimy do PLC data types, gdzie tworzymy nową strukturę o nazwie stt_PWM. Struktura zawiera wszystkie parametry służące do aktywowania kanałów PWM. CJej zawartosć przedstawia poniższy rysunek:
W folderze Program blocks tworzymy nowy blok danych DataPWM, a tam zmienną typu stt_PWM o nazwie Channel1Parameters. Wykorzystamy ją do uaktywnienia kanału PWM.
W folderze Program blocks tworzymy nową funkcje FC o nazwie ControlPWM. W sekcji interfejsu definiujemy parametr wejściowo-wyjściowy o nazwie Parameters typu stt_PWM. W sekcji kodu wywołujemy funkcję CTRL_PWM(), co przedstawia poniższy kod:
"CTRL_PWM_DB2"(PWM:=#Parameters.PWM, ENABLE:=#Parameters.Enable, BUSY=>#Parameters.Busy, STATUS=>#Parameters.Status);
Podczas wywołania utworzony został blok danych instance DB o nazwie CTRL_PWM_DB2, a następnie przypisano parametrom funkcji CTRL_PWM() odpowiednie zmienne.
W ten sposób mamy tylko jeden blok danych typu instance DB niezależnie od liczby wykorzystywanych kanałów. Takie rozwiązanie pozwala znacznie zaoszczędzić ilość wykorzystanej pamięci. Jednak niektórych funkcji nie można wywołać w ten sposób.
Dodajemy blok startowy OB100 o nazwie Startup, za pomocą którego aktywujemy kanał PWM. Przedstawia to poniższy rysunek:
Blok startowy OB100 jest wykonywany tylko raz po włączeniu napięcia zasilania dla sterownika PLC lub restarcie sterownika (przejścia z trybu RUN do STOP i następnie znowu do RUN).
Kod programu z bloku OB100 przedstawiono poniżej:
"DataPWM".Channel1Parameters.PWM := "Local~Channel1PWM"; //enable PWM "DataPWM".Channel1Parameters.Enable := TRUE; //Call function "ControlPWM"(Parameters := "DataPWM".Channel1Parameters);
Na początku następuje przypisanie do zmiennych numeru identyfikacyjnego kanału PWM, który można także podejrzeć po wejściu w PLC tags oraz otwarciu tablicy Show all tags i zaznaczeniu zakładki System constants. W dalszej części zmiennej Enable przypisujemy wartość TRUE w celu aktywacji kanału. Wypełnioną strukturę opisującą dany kanał przekazujemy do funkcji ControlPWM() poprzez parametr o nazwie Parameters. Po wywołaniu tej funkcji kanał PWM jest aktywny. Należy pamiętać, że niektóre funkcje inicjalizujące potrzebują większej liczby cykli programu do zakończenia swojego działania. W takim wypadku nie można umieszczać takiego wywołania w bloku startowym OB100.
Można teraz skompilować cały projekt (hardware oraz software) i umieścić w pamięci sterownika.
Testowanie
Po uruchomieniu sterownika PLC, dioda LED podłączona do wyjścia cyfrowego Q0.0 powinna świecić w 50%, co przedstawia poniższy przebieg czasowy:
Widać, że okres sygnału wynosi 10ms a wypełnienie 50%, co zgadza się z treścią zadania.
Praca domowa
Uruchom drugi kanał PWM i skonfiguruj go tak, aby sterował jasnością świecenia diody LED podłączonej do wyjścia Q0.2. Dioda powinna świecić z wypełnieniem 25%. Nazwa kanału w konfiguracji sprzętowej to Channel2PWM (zgodnie ze schematem elektrycznym).
Tomasz Gilewski