Pulse_TargetValueMatch_Reset

Zählervergleichsausgang zurücksetzen (Pulsausgabe)

Wenn der Istwert den Sollwert diTargetValue des durch iChannel festgelegten Pulsausgabekanals erreicht, wird der durch pYOutput festgelegte Ausgang sofort auf FALSE gesetzt.

Parameter

Eingang

bExecute (BOOL)

Eine steigende Flanke aktiviert die Funktion; Auswertung des Kontrollmerkers "Pulsausgabekanal" mit PulseInfo_IsTargetValueMatchActive

iChannel (INT)

FPS: 0, 2

FP-X R: 0, 1

FP-X 16K C14T: 0, 1, 2

FP-X 32K C30T, C60T: 0, 1, 2, 3

FP0R: 0, 1, 2, 3

FP0: 0, 1

FP-e: 0, 1

pYOutput (POINTER)

Durch GetPointer erhaltenes Zeigerergebnis von einer globalen Variable, die Kanalnummer und Ausgang liefert.

diTargetValue (DINT)

Geben Sie für den Sollwert einen 32-Bit-Datenwert innerhalb des folgenden Bereichs ein:

FP0, FP-e: -838808–+8388607

FPS, FP-X, FP0R: -2147483467–+2147483648

Ausgang

bError (BOOL)

TRUE, wenn die Kombination von Channel%d und pYOuput.iOffset nicht mit einer gültigen Kombination von Kanalnummer und Ausgang übereinstimmt, wie sie von der globalen Variablen vorgegeben wird.

Anmerkungen

Dieser Nicht-Inline-Befehl ist Teil der Tool-Befehle für die Pulsausgabe. Eine ausführliche Beschreibung der intern verwendeten Befehle finden Sie in der :F167_PulseOutput_Reset

Anmerkung

Um die Kombination von Kanal und Y-Ausgang zu prüfen, benötigt der Compiler das folgende Benennungsmuster für globale Variablen: %sPulse_TargetValueMatch_Channel%d_Y%d_%s

Verwenden Sie für globale Variablen in Zählervergleichsfunktionen grundsätzlich dieses Muster.

  • Channel%d muss ein Pulsausgabekanal sein, der in den Systemregistern aktiviert ist.

  • Y%d muss eine explizite, von der SPS unterstützte Ausgangsadresse sein

FP-S, FP0, FP-e:

Y0–Y7

FP-S (V3.1 oder eine neuere Version), FP0R

Y0–Y1F

FP-X:

Y0–Y29F

  • %s ist ein optionaler Deskriptor am Musteranfang

  • %s ist ein optionaler Deskriptor am Musterende

Beispiel

Optional Vorgegebenes Muster Optional
g_b Pulse_TargetValueMatch_ChannelA_Y11F _MotorOn

Diese globale Variable erzeugt den Code für Kanal A und Ausgang Y11F.

Beispiel

Globale Variablen

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

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
		g_bPulse_TargetValueMatch_Channel1_Y19_Motor1_On: BOOL:=FALSE;
	END_VAR
VAR
		iChannel1: INT:=1;
		diTargetValue1: DINT:=22000;
		bIsActive: BOOL:=FALSE;
		bErrorReset: BOOL:=FALSE;
		bReset: BOOL:=FALSE;
	END_VAR

KOP-Rumpf

Mit PulseInfo_IsTargetValueMatchActive ermitteln Sie, ob der durch iChannel1 festgelegte Kanal aktiv ist. Wenn eine steigende Flanke bei bReset erkannt wird, und wenn bIsActive nicht TRUE ist, wird der Befehl ausgeführt. Die Kombination aus Kanalnummer und Ausgangskontakt wird in der globalen Variablen g_bPulse_TargetValueMatch_Channel1_Y19_Motor1_On überprüft. Wenn die Pulsausgabe an Kanal 1 den Sollwert diTargetValue1 erreicht, wird der Ausgang Y19 auf FALSE gesetzt.

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 3 ;
        NETWORK_BODY
B(B_VARIN,,iChannel1,7,1,9,3,);
B(B_VAROUT,,bIsActive,26,1,28,3,);
B(B_F,PulseInfo_IsTargetValueMatchActive!,,9,0,26,3,,?DiChannel?C);
L(1,0,1,3);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_CONTACT,,bReset,3,1,5,3,R);
B(B_CONTACT,,bIsActive,7,1,9,3,N);
B(B_VARIN,,iChannel1,32,2,34,4,);
B(B_VARIN,,diTargetValue1,32,4,34,6,);
B(B_VAROUT,,bErrorReset,52,1,54,3,);
B(B_F,GetPointer!,,27,3,34,5,,?D?C);
B(B_VARIN,,g_bPulse_TargetValueMatch_Channel1_Y19_Motor1_On,25,3,27,5,);
B(B_F,Pulse_TargetValueMatch_Reset!,,34,0,49,6,,?DbExecute?DiChannel?DpYOutput?DdiTargetValue?CbError);
L(5,2,7,2);
L(1,2,3,2);
L(9,2,34,2);
L(49,2,52,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

bIsActive:=PulseInfo_IsTargetValueMatchActive(iChannel1);
Pulse_TargetValueMatch_Reset(bExecute := DF(bReset) AND NOT bIsActive,
             iChannel := iChannel1,
             pYOutput := GetPointer(g_bPulse_TargetValueMatch_Channel1_Y19_Motor1_On),
             diTargetValue := diTargetValue1,
             bError => bErrorReset);

Letzte Änderung am: 2021-11-10Feedback zu dieser SeitePanasonic Hotline