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:
1 2 3 4 |
"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:
1 2 3 4 5 |
"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