Pierwszą część artykułu zakończyliśmy omówieniem konfiguracji generatora PWM, który działa w następujący sposób:
- na początku każdego cyklu, czyli wtedy, kiedy wyjście zegara przyjmuje stan wysoki na wszystkich wyjściach również ustawiany jest stan wysoki (oczywiście za wyjątkiem pierwszego cyklu sterownika po przejściu do trybu RUN, gdzie wszystkie wyjścia zostaną wyłączone, podobnie jak wyjście zegara),
- rozpoczyna się odliczanie czasu w zegarze, gdzie w każdym cyklu obiegu sterownika uaktualniana jest wartość taga "AKTUALNIE_ZEGAR",
- w każdym cyklu, dla każdego kanału sprawdzany jest warunek, tj. czy aktualna wartość czasu jest większa lub równa od zadanej, jeśli tak, to odpowiadające zadanej wartości wyjście zmienia stan na niski,
- gdy zegar doliczy do 100%(T#4ms), to następuje ponowne wpisanie jedynek na wszystkie wyjścia oraz samoczynny reset zegara,
- cykl zaczyna się od początku.
Wprowadzenie sterowania mikrokowego wymaga też bardziej skomplikowanych zmian w tablicy stanów (rysunek 4), gdzie teraz oprócz konieczności przechowywania stablicowanych kolejnych stanów silnika należy przechować też procentową wartość prądu, która powinna przepływać przez odpowiednie uzwojenia.
Cztery najmłodsze bity każdego z 16 bajtów nadal niosą informację o tym, które uzwojenia powinny być włączone w danym momencie. Korzystając z założenia, że nigdy nie wystąpi taka kombinacja, która wymagałaby włączenia dwóch uzwojeń jednej pary z różnymi wartościami prądu (a nie wystąpi nigdy, gdyż powód omówiono przy okazji mikrokroku), cztery najstarsze bity wykorzystano do przechowania informacji o udziale prądu.
I tak, bity o numerach 7 i 6 przechowują informację, jaki powinien być procentowy udział prądu w uzwojeniu B silnika (B+ lub B-, w zależności od tego, które z nich jest załączone), natomiast 5 i 4 analogicznie w uzwojeniu A. Jak łatwo zauważyć, taka konwencja pozwala bez zwiększenia zapotrzebowania na pamięć, realizację mikrokroku 1/8 - gdzie potrzebne są 4 różne poziomy prądu (bo na dwóch bitach można zapisać 4 różne liczby). Współpracujący z nową tablicą kompletny kod przedstawiony jest na listingu 5.
Program wygląda analogicznie do omawianych wcześniej, jedyną zmianą poza oczywiście implementacją generatora jest dodanie sekcji rozpoznającej poziomy prądu. Jednakże po wgraniu programu do sterownika powstaną problemy - mianowicie przy tak niskiej częstotliwości PWM wirnik silnika w położeniach pośrednich najprawdopodobniej będzie drgał. Konieczne jest zwiększenie częstotliwości PWM - co można uczynić na dwa sposoby: zmieniając podstawę czasu na T#2ms w podanym kodzie lub korzystając z rozwiązania bardziej sprytnego, pokazanego na listingu 6.
Ustawienie wypełnienia na 50% powoduje w każdym cyklu sterownika naprzemienne ustawianie zera i jedynki na bicie wyjściowym. Jako że czas cyklu obiegu sterownika wynosi 1 ms, to na wyjściu generowany jest sygnał WŁĄCZ przez 1 ms i WYŁĄCZ przez 1 ms.
Wynikiem tych operacji jest ciąg prostokątny o wypełnieniu 50% i podstawie czasu 2 ms, tj. 500 Hz. Taki generator nie wymaga stosowania zegara TON jak poprzednio, co daje krótszy kod programu. Ponadto, zwiększenie częstotliwości PWM częściowo redukuje wibracje wirnika, jednakże dalej powoduje efekty akustyczne.
Częstotliwość PWM ogranicza częstotliwość wejściową sygnału CLKZ, tzn. częstotliwość CLKZ powinna być, co najmniej 10 razy mniejsza od częstotliwości PWM. Wibracje te ograniczają zastosowanie tak sterowanego napędu w praktyce. Nie zawsze również jest sens stosowania mikrokroku, gdyż rozdzielczość typowych silników sterowanych pełno krokowo wynosi 0,9°/krok. W każdym razie, w ogólności mikrokrok 1/n wymaga:
- 4*n podkroków elementarnych, tj. tyle powinna wynosić liczba stanów silnika,
- n/2 osiągalnych różnych natężeń prądu w uzwojeniu.
Tomasz Starak
Opracowano na podstawie materiałów z książki "Język tekstu strukturalnego w sterownikach SIMATIC S7-1200 i S7-1500" (autor - Janusz Kwaśniewski, planowana do wydania w 2014 roku przez Wydawnictwo BTC) oraz materiałów firmowych firmy Siemens.