目標値一致OFF (パルス出力制御)
経過値がiChannelで指定されたパルス出力チャンネルの目標値diTargetValueと一致したとき、pYOutputで指定された出力リレーが直ちにFALSEになります。
入力
立ち上がりエッジでファンクションを起動します。PulseInfo_IsTargetValueMatchActiveを使用してパルス出力チャンネル制御フラグを確認します。
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
チャンネル番号と出力を示すグローバル変数からGetPointerによって得られるポインタ結果を入力します。
以下の範囲で、32ビットデータの目標値を指定します。
FP0、FP-e: -838808~+8388607
FPS、FP-X、FP0R: -2147483467~+2147483648
出力
Channel%d
とpYOuput.iOffset
の組み合わせが、グローバル変数で決められたチャンネル番号と出力の有効な組み合わせに一致しないときにTRUE
この非インライン命令は、パルス出力用Tool命令の一部です。内部で使われる命令に関する詳細は、をご参照ください。F167_PulseOutput_Reset
チャンネルとY出力の組み合わせを確認する場合、コンパイラはグローバル変数の以下の名前パターンを必要とします。%sPulse_TargetValueMatch_Channel%d_Y%d_%s
目標値一致制御では、グローバル変数に常にこのパターンを使用します。
Channel%dは、システムレジスタで有効にされたパルス出力チャンネル番号でなければなりません。
Y%d
は、PLCによってサポートされる明示的な出力アドレスでなければなりません。
FP-、S、FP0、FP-e: |
Y0~Y7 |
FP-S (V3.1以上)、FP0R: |
Y0~Y1F |
FP-X: |
Y0~Y29F |
%s
は、パターンの先頭で指定するオプションの記述子です。
_%s
は、パターンの終端で指定するオプションの記述子です。
オプション | 固定パターン | オプション |
g_b |
Pulse_TargetValueMatch_ChannelA_Y11F |
_MotorOn |
このグローバル変数は、チャンネルAと出力Y11F用のコードを生成します。
グローバル変数リストでは、プロジェクト内のすべてのPOUからアクセスできる変数を宣言します。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
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
PulseInfo_IsTargetValueMatchActiveを使用してチャンネルiChannel1がアクティブであることを確認します。bResetで立ち上がりエッジが検出され、bIsActiveがTRUEではない場合に命令が実行されます。グローバル変数g_bPulse_TargetValueMatch_Channel1_Y19_Motor1_Onでチャンネル番号と出力接点の組み合わせの有効性が確認されます。チャンネル1のパルス出力が目標値diTargetValue1に達すると、出力Y19がFALSEにセットされます。
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
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);