PWM, steht für Pulsweitenmodulation und ist ein Rechtecksignal mit konstanter Periodendauer, das zwischen zwei verschiedenen Spannungspegeln oszilliert. Prinzipiell wird das Signal also in schneller Folge ein- und ausgeschaltet. Das Verhältnis von Einschaltzeit zu Ausschaltzeit kann dabei variieren und bildet das Tastverhältnis den Duty-Cycle ab. Die ACE SPS kann mit ihren Transistor Ausgängen dieses schnelle EIN- und AUS-schalten realisieren. Dabei ist es egal welche Ausgänge an der SPS verwendet werden. Zur Steuerung wird die PWM Funktion benötigt.
Da die ACE SPS fallende Transistorausgänge als Hardware hat muss darauf geachtet werden dass die "EIN" und "AUS" Zeit des PWM Signals für viel Anwendungen invertiert betrachtet werden muss. Die Periode bestimmt immer die gesamte Länge von EIN und AUS. Die Pulsweite Teilt die Periode in zwei Teile. Daraus ergibt sich eine einfache Formel.
Pulsweite negativ Zeit + Pulsweite positiv Zeit = Periodenlänge
Die Formel lässt sich auch ganz einfach umstellen:
- Periodenlänge - Pulsweite positiv = Pulsweite negativ
- Periodenlänge - Pulsweite negativ = Pulsweite positiv
Der Abstand aus Pulsweite positiv und Pulsweite negativ kann von einer anderen SPS oder Hardware gelesen werden. So können Sollwerte, Istwerte, Stellungen, Positionen und andere Werte eindeutig, zuverlässig und unabhängig von der Hardware Übertragen werden. Wichtig für das "senden" und "empfangen" eines PWM Signals ist nur dass Sender und Empfänger die gleiche Periodenzeit verwenden.
PWM: positives Signal "oben" ist ein.
PWM: negatives Signal "unten" ist aus.
PWM in VBuilder und der ACE SPS
Als erstes muss die Periodenlänge eingestellt werden. Diese muss nur einmal beim Start des Programmes aufgerufen werden. In meinem Beispiel unten dimme ich eine LED, deshalb stelle ich hier 1000 ms. ein. Bei der Periodenlänge ist es wichtig auf die Herstellerangaben zu achten und diese einzustellen.
Als zweites muss der PIN gewählt werden an dem das PWM Signal ausgegeben werden soll. Und als drittes muss nun die "On Time" eingestellt werden. On Time beutetet, wie oben schon erwähnt die Zeit innerhalb einer Periode, die der Ausgang (PIN) eingeschaltet ist. Anstatt fester Werte können auch Variablen (UI16) verwendet werden.
Über die Funktion "Stop" kann die PWM Funktion gestoppt werden. Natürlich kann auch der Wert auf 0 gesetzt werden wobei der PWM "Generator" dann im Hintergrund weiterarbeitet, auch wenn der Ausgang immer LOW ist.
Einfaches Beispiel für PWM Dimmer an einer LED, die langsam angeht und dann langsam wieder ausgeht. Die Funktionen (Blöcke) sind in Ladder und Flow Chart gleich.
- Nach dem einschalten wird einmal die Periodendauer festgelegt und ein Timer gestartet
- Die Variable pwm ist 0
- Hoch dimmen
- Ist ein Wert von 0 erreicht, wird alle 2 ms. die Variable pwm + 2 gerechnet und der Wert an die PWM Funktion übergeben
- Die PWM Funktion schaltet den Ausgang entsprechend EIN und AUS, die LED wird heller
- Runter dimmen
- Ist ein Wert von 500 erreicht, wird alle 2 ms. die Variable pwm - 2 gerechnet und der Wert an die PWM Funktion übergebe
- Die PWM Funktion schaltet den Ausgang entsprechend EIN und AUS, die LED wird dunkler
Continuous oder Fixed Pulse in der PWM Funktion
Für die Funktion "On Time" kann entweder "continuous Pulse" oder "fixed Pulse" ausgewählt werden.
- Continuous beutetet --> ist der PWM Wert "On Time" einmal an den Ausgang (Pin) übertragen, bleibt dieser in übertragenen PWM Funktion an. Wird eine "On Time" von 300 ms. einmal an den Pin übertragen, pulst der Pin so lange mit 300 ms. bis entweder ein andere Wert oder ein Stop kommt.
- Fixed beutetet --> der Ausgang pulst den eingestellt Wert und geht dann auf LOW. Ist ein "On Wert" von 100 eingestellt und ein "fixed" Wert von 3000. Dann wird der Ausgang 3000 Perioden pulsen, mit einer "On Time" von 100. Danach muss die Funktion erneut gestartet werden.
Am einfachsten kann man dies mit dem Programm unten verdeutlichen. Lädt man das Programm hoch und startet die SPS, dann ist der Ausgang 3 Sekunden mit einer "On Time" von 100 ms. an und geht dann aus. Nun muss die SPS erneut gestartet werden um die LED wieder für 3 Sekunden zu pulsen. Anstatt des Neustarts können natürlich auch Schalter, Variablen und Bedingungen programmiert werden, dies ist nur ein Beispiel um die Funktion zu zeigen.