F173_PulseOutput_PWM

Pulsausgabe mit Angabe des Kanals (PWM-Ausgabe)

Dieser Befehl liefert ein pulsweitenmoduliertes Ausgangssignal. Die Parameter für die Pulsausgabe werden in einem SDT festgelegt. Die Pulse werden vom angegebenen Kanal ausgegeben, wenn der Kontrollmerker für diesen Kanal FALSE und die Ausführungsbedingung TRUE ist.

Parameter

Eingang

s_dutDataTable (F173_PulseOutput_PWM_DUT)

Anfangsadresse des Bereiches, der die Datentabelle enthält

n_iPulseOutputChannel* (Dezimalkonstante)

Pulsausgabekanal:

FP-XH C30 T/P: 0–3

FP-XH C60 T/P: 0–5

FPS: 0,2

FP-X- / FP-XH (Relais): 0,1

FP-X, FP-XH 16k (Transistor): 0–2

FP0R, FP0H, FP-X, FP-XH 32 (Transistor): 0–3

FP-XH 32k (Transistor): 0–5

Anmerkungen

Verwenden Sie folgende, vordefinierte strukturierte Datentypen: F173_PulseOutput_PWM_DUT

Im SDT lassen sich folgende Parameter festlegen:

  • Ungefähre Frequenz

  • Puls-Pausenverhältnis (der Pulsdauer und -periode)

    Das Verhältnis zwischen der Pulsweite und der Pulsperiode einer rechteckigen Wellenform. Für eine Impulsfolge, in der die Pulsdauer 1ms beträgt und die Pulsperiode 4ms, beläuft sich das Puls-Pausen-Verhältnis auf 0,25 oder 25%.

Allgemeine Programmierhinweise

  • Das Puls-Pausenverhältnis kann vom festgelegten Quotienten abweichen, wenn es nahe am Minimal- oder Maximalwert liegt, denn es ist abhängig von Lastspannung und Laststrom.

  • Das Puls-Pausenverhältnis kann in jedem SPS-Zyklus geändert werden.

  • Die Frequenzkonstante K kann jedoch nicht während der Befehlsausführung geändert werden. Wird der Wert verändert, hat dies nur Auswirkungen auf die Auflösung des Puls-Pausenverhältnisses, nicht auf die Frequenz.

  • Wenn das Puls-Pausenverhältnis einen Wert erhält, der außerhalb des zulässigen Bereichs liegt, während der Befehl ausgeführt wird, wird der Maximalwert für das Puls-Pausenverhältnis eingestellt. Ein Operationsfehler wird ausgegeben, sobald die Befehlsausführung beginnt.

  • Wenn die Frequenz einen Wert annimmt, der außerhalb des zulässigen Bereichs liegt, während der Befehl ausgeführt wird, wird eine Auflösung von 100 gewählt. Zu Beginn der Befehlsausführung wird kein Operationsfehler angezeigt.

  • Wenn das Puls-Pausenverhältnis während der Befehlsausführung zu 100% oder mehr geändert wird, wird der für diese Auflösung maximal mögliche Frequenzwert eingestellt. Zu Beginn der Befehlsausführung wird kein Operationsfehler angezeigt.

  • Wenn sowohl das Hauptprogramm als auch das Interrupt-Programm Code für denselben Kanal enthalten, dürfen die Programme nicht gleichzeitig ausgeführt werden.

  • FP-X, FP0R: Während der Ausführung eines Pulsausgabefehls und der Ausgabe von Pulsen steht der Kontrollmerker "Pulsausgabe" des entsprechenden Kanals (z.B. sys_bIsPulseChannel0Active) auf TRUE. Solange der Merker auf TRUE steht, kann kein anderer Pulsausgabebefehl ausgeführt werden.

  • FPS: Der Kontrollmerker "Schneller Zähler" (z.B. sys_bIsHscChannel0ControlActive) und der Kontrollmerker "Pulsausgabe" (z.B. sys_bIsPulseChannel0Active) sind derselben Sondermerker-Nummer zugeordnet (z.B. R903A). Daher ist sowohl der Kontrollmerker für den schnellen Zähler (z.B. sys_bIsHscChannel0ControlActive) als auch der Kontrollmerker für die Pulsausgabe (z.B. sys_bIsPulseChannel0Active) für den betreffenden Kanal TRUE, wenn ein schneller Zählerbefehl oder ein Pulsausgabebefehl ausgeführt wird. Solange dieser Merker auf TRUE steht, kann kein anderer schneller Zählerbefehl oder Pulsausgabebefehl ausgeführt werden.

  • FPS: Wennn der Kreisinterpolationsbefehl F176_PulseOutput_Center ausgeführt wird, wird der Kontrollmerker "Kreisinterpolation" (sys_bIsCircularInterpolationActive) auf TRUE gesetzt, Der Status dieses Merkers bleibt erhalten, bis der Zielwert erreicht ist (auch wenn die Ausführungsbedingung nicht mehr TRUE ist). In dieser Zeit lassen sich keine anderen Pulsausgabebefehle ausführen.

  • FPS: Setzen Sie einen schnellen Zähler, der einem Pulsausgabekanal zugeordnet ist, in den Systemregistern auf "Unbenutzt".

  • FP-X, FP0R: Setzen Sie den gewünschten Kanal im Systemregister auf "PWM-Ausgabe".

  • Es ist unbedingt empfehlenswert, die Möglichkeit eines erzwungenen Stopps in Ihrem Positionierprogramm vorzusehen.

  • Der Status des Kontrollmerkers für den schnellen Zähler oder den Pulsausgang kann sich innerhalb eines Zyklus ändern.

Beispiel

Globale Variablen

In der globalen Variablenliste können Sie Variablen festlegen, die von allen POEs des Projekts verwendet werden können.

SDT

Der SDT F173_PulseOutput_PWM_DUT ist in der FP Library enthalten.

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden.Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	VAR_EXTERNAL
		X6_bEnablePWM: BOOL:=FALSE;
	END_VAR
	VAR 
		dutPWMControl: F173_PulseOutput_PWM_DUT:=iFrequencyValue := 1;
			(*iFrequencyValue := 1: f=2.0 Hz, T=502.5 ms; 
*)
		iPulseWidthModulationDuty: INT:=500;
			(*500 = 50% duty*)
		@'': @'';
	END_VAR

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_CONTACT,,X6_bEnablePWM,5,2,7,4,);
B(B_F,E_MOVE!,Instance,16,1,22,5,,?DEN?D?AENO?C);
B(B_VARIN,,iPulseWidthModulationDuty,14,3,16,5,);
B(B_VAROUT,,dutPWMControl.iPulseWidthModulationDuty,22,3,24,5,);
L(7,3,16,3);
L(1,3,5,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,F173_PulseOutput_PWM!,Instance,16,0,29,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutPWMControl,14,2,16,4,);
B(B_VARIN,,2,14,3,16,5,);
B(B_CONTACT,,X6_bEnablePWM,5,1,7,3,);
L(7,2,16,2);
L(1,2,5,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF (X6_bEnablePWM) then
    dutPWMControl.iPulseWidthModulationDuty:=iPulseWidthModulationDuty;
END_IF;
IF (X6_bEnablePWM) then
    F173_PulseOutput_PWM(s_dutDataTable := dutPWMControl, 
       n_iPulseOutputChannel := 2);
END_IF;

Letzte Änderung am: 2022-06-28Feedback zu dieser SeitePanasonic Hotline