Hoe kunnen we helpen?

Print

PWM

 

PWM – Pulsbreedtemodulatie – 15 Hz tot 10 kHz periode

PWM is het acroniem voor “Pulsbreedtemodulatie”. Pulsbreedtemodulatie is een zeer krachtige functie die vaak wordt gebruikt om de positionering van servokleppen te regelen. Het wordt ook gebruikt voor laserpulsregeling, bewegingsregeling, lichtintensiteitsregeling en andere toepassingen. De enkelvoudige pulsfunctie van de functie is toepasbaar op elke vereiste enkelvoudige pulsuitgang.

Een pulsbreedtegemoduleerd uitgangssignaal is een signaal met een periode en een “inschakelduur”, of duty cycle, binnen die periode. Een typische servoklepregeling heeft bijvoorbeeld een periode van 20 milliseconden. De klepstand wordt geregeld door de “inschakelduur” van de uitgangspuls binnen deze periode. De klep kan volledig gesloten worden geregeld met een aanlooptijd van 1 milliseconde en volledig open met een puls van 3 milliseconde (de werkelijke tijden worden bepaald door de fabrikant van de klep). Gedeeltelijke (5%, 10%, 53%, enz.) opening wordt over het algemeen geregeld door een “aan-tijd” puls die evenredig is tussen de volledig open en volledig gesloten grenzen. Standaard PWM-signalen herhalen elke periodestap.

De afbeelding rechts toont een PWM-uitgangssignaal. De meeste digitale uitgangen van Velocio PLC zijn “zinkende” transistoruitgangen – dus als de uitgang is ingeschakeld, zinkt de uitgang en wordt het signaal laag getrokken.
De volgende afbeelding toont een standaard PWM aan de bovenkant en een PWM-uitgang met enkele puls aan de onderkant. Een PWM-uitgang met enkele puls is actief gedurende de gedefinieerde “inschakeltijd” binnen de PWM-periode. Hij wordt niet herhaald. Als je nog een puls wilt uitvoeren, moet je programma nog een “Start PWM-puls”-blok uitvoeren.

Toepassingslimieten van PWM’s : PWM’s kunnen worden toegepast op elke digitale uitgang die fysiek aanwezig is op de PLC-module die het applicatieprogramma bevat. Dat betekent dat elke Ace of Branch digitale uitgang geprogrammeerd kan worden om een PWM-signaal uit te sturen door het hoofdprogramma van de toepassing. Elke Branch Explansion PLC met een eigen programma (ingebouwde subroutine) kan een PWM-signaal uitzenden vanuit de ingebouwde subroutine. Branch-uitbreidingsunits die als IO-uitbreiding worden gebruikt, kunnen geen PWM-signalen uitvoeren.

Elke combinatie van digitale uitgangen op de PLC met het programma kan PWM-uitgangssignalen hebben. Elke actieve uitgang heeft zijn eigen “inschakelduur”. De Periode is echter gemeenschappelijk voor alle PWM-signalen op de PLC-unit.

PWM in vBuilder

PWM is een achtergrondtaak die, eenmaal uitgevoerd, signalen naar de uitgang blijft sturen. Roep deze functie niet op bij elke PLC-cyclus, maar alleen wanneer je de parameters moet wijzigen.

Wanneer je een PWM-blok in je programma plaatst, verschijnt een dialoogvenster zoals hieronder afgebeeld.

Met dit dialoogvenster kun je de PWM-periode instellen, de PWM-werking starten (voortzetten/aanpassen) of de PWM stoppen.

PWM-periode instellen

De periode is gemeenschappelijk voor alle PWM’s in de PLC. De periode wordt ingesteld door het keuzerondje “Set Period” te selecteren en vervolgens een ui16-tagnamed variabele te selecteren of een getal tussen 100 en 65535 in te voeren. De timing is in microseconden (1 miljoen microseconden = 1 seconde). Dat betekent dat de PWM-periode kan variëren van 100 microseconden tot iets meer dan 65 milliseconden.

Als de periode is ingesteld op een waarde van minder dan 1 milliseconde (een instelling van minder dan 1000), zal slechts één PWM-uitgang actief zijn. De actieve PWM-uitgang is de uitgang met de kortste inschakelduur.

Als de periode is ingesteld op 1 milliseconde of hoger, hebben alle uitgangen die zijn gedefinieerd voor PWM actieve signalen.

Samengevat: om de periode in te stellen, selecteer Periode instellen, selecteer of voer een ui16 (geheel getal van 16 bits zonder teken) in en klik op OK.

PWM starten

De Start-selectie definieert de Uitgang en de Aan-tijd voor het PWM-signaal. Er kan ook gekozen worden tussen Continu of Enkelvoudige puls. Als de PWM wordt gebruikt voor een PWM-signaal met een variërende Aan/Uit-tijd, wordt de waarde van de Aan/Uit-tijd elke keer dat het blok wordt uitgevoerd bijgewerkt in de volgende Periode.

In de Output Pin selectie moet je een tagnaam invoeren voor een digitale uitgang die aanwezig is op de PLC. In het dialoogvenster kun je een willekeurige bit-tagnaam selecteren. Als de geselecteerde tagnaam echter niet die van een digitale uitgang van de PLC is, wordt de PWM niet uitgevoerd. Als je een PWM start in een subroutine, moet de tagnaam een verwijzing zijn naar een digitale uitgang van de PLC.

De Aan-tijd kan een willekeurige ui16-waarde (0-65535) of tagnamed variabele zijn.

Als je Continue werking selecteert, gaan de PWM-pulsen door, één puls per periode, totdat je een Stop PWM-blok voor de uitgang uitvoert. Als je Enkelvoudige puls selecteert, wordt de volgende periode met één puls uitgevoerd. Nadat de periode is voltooid, wordt de uitgang ingesteld volgens de digitale uitgangstoestand van het programma voor die uitgang.

PWM-stop

Om een blok te plaatsen dat een PWM-uitgang stopt, selecteer je eenvoudig het keuzerondje Stop en de tagnaam van de uitgang. Als je het Stop-blok in een subroutine plaatst, plaats dan de verwijzing naar de uitgang als Output Pin

PWM-problemen

PWM gebruikt timers voor de Periode en de Aan-tijd. Er zijn maar zoveel timers in een microcontroller, dus gebruiken we 2 timers om PWM’s te genereren voor maximaal 24 digitale uitgangen. Dat betekent dat als het uitschakelen op hetzelfde moment moet gebeuren voor twee verschillende PWM-signalen, de ene moet wachten op de andere (een bepaald aantal microseconden). Als beide PWM’s continu zijn ingesteld, zou er geen jitter moeten zijn, omdat de volgorde tussen de twee PWM’s hetzelfde zal zijn.

Als je programma constant de twee PWM’s start, kan dat de jitter veroorzaken. De PWM-functie houdt een tabel met actieve PWM’s bij. De PWM’s worden gesorteerd van de kortste naar de langste. Als het programma van de klant de PWM’s bij elke scan start en de tijden voor twee of meer PWM-uitgangen hetzelfde zijn, dan wordt de tabel steeds opnieuw gerangschikt. Als ze een PWM alleen opnieuw kunnen starten als de aan-tijd verandert, zouden ze minder jitter moeten zien.

PWM met 100% inschakeltijd

Ik krijg een verdubbelde periode bij een 100% OnTime!

We doen PWM in microseconden. Er is een limiet aan het aantal CPU-instructies dat in een microseconde kan plaatsvinden. De PWM-functie gebruikt twee timers – één voor de periode en één voor het volgende einde van de aan-cyclus. Aan het einde van de periode is er een race-state tussen deze twee timers. Als de volgende periode start voordat de cyclus is gestopt, zal de PWM een cyclus missen. Daarom adviseren we om de Aan-tijd te beperken tot de periodelengte min 2 of 3 microseconden.

Meerdere PWM’s hebben hier ook invloed op. Als je meerdere gelijktijdige PWM’s hebt lopen, kun je misschien nog een microseconde of twee terugdraaien.

We raden aan om een minimale inschakeltijd van ongeveer 2 microseconden te gebruiken. Het probleem is zeldzamer bij de minimale puls, maar het kan ook daar optreden.

Het is geen bug. Het is natuurkundig. Er zijn beperkingen aan wat er kan gebeuren in een zeer korte tijdsperiode.

PWM op oscilloscoop

met Periode 350 microseconden en “Aan-tijd” waarde 175, 115 en 35 microseconden
Een pull-up weerstand van 10 KOhms wordt geplaatst tussen de 5V (laatste pin) en de uitgang (pinnen 1 tot 7). Er wordt een meting gedaan tussen de uitgang en GND (eerste pen 0).

“Aan tijd” waarde 175 microseconden = 50% van de periode

“Inschakelduur” waarde 115 microseconden = 33% van de periode

“Inschakelduur” waarde 35 microseconden = 10% van de periode