高速カウンタおよびパルス出力制御コードが格納されている特殊データレジスタは、システム変数sys_wHscOrPulseControlCodeを使用して読み出し、書き込みすることができます。(システム変数sys_wHscOrPulseControlCodeは、特殊データレジスタDT90052に相当します。)
高速カウンタ制御コードで制御できる動作
命令の実行をキャンセルするには、高速カウンタ制御コード(sys_wHscOrPulseControlCode)を格納するデータレジスタのビット3をTRUEにセットします。高速カウンタ制御フラグがFALSEに変化します。高速カウンタ命令の実行を再び有効にするには、ビット3をFALSEに戻します。
X0 高速カウンタ入力
制御コードのビット2の値を1にセットすると、システムレジスタで指定されているハードリセット入力が無効となり、リセット入力がTRUEになっても、カウントを継続します。ハードリセットは、ビット2の値を0にリセットするまで無効となります。
カウント入力禁止制御
X0 高速カウンタ入力
制御コードのビット1の値をTRUEにセットすると、カウントが禁止され、経過値が保持されます。ビット1の値をFALSEにリセットすると、カウントを継続します。
X0 高速カウンタ入力
制御コードのビット0の値をTRUEにセットすると、ソフトリセットが実行され、経過値が0になります。ビット0の値がFALSEにリセットされるまで、経過値は0を保持します。
制御コードのビット0~15は、4つのグループに割り付けられています。それぞれの値は、16進数で設定します。(例: 00020000 0000 1001 = 16#2009)
0: 継続/1: キャンセル
0: 有効/1: 無効
0: 許可/1: 禁止
0: しない/1: する
例: 16#2009
グループ |
値 |
説明 |
|
---|---|---|---|
IV |
2 |
チャンネルNo.: 2 |
|
III |
0 |
(固定) |
|
II |
0 |
(固定) |
|
I |
9 |
16進数Hex 9は、2進数1001に対応します。 |
|
高速カウンタ命令のキャンセル: キャンセル(ビット3) |
1 |
||
リセット入力: 有効(ビット2) |
0 |
||
カウント: 許可(ビット1) |
0 |
||
経過値を0にリセットする: する(ビット0) |
1 |
制御コードのビット0~15は、各チャンネル毎に、4つのグループに割り付けられています。それぞれの値は、16進数で設定します。(例: 0000 0000 1001 0000 = 16#90)
0: 継続/1: キャンセル
0: 有効/1: 無効
0: 許可/1: 禁止
0: しない/1: する
グループ |
IV |
III |
II |
I |
チャンネル |
3 |
2 |
1 |
0 |
グループ |
値 |
説明 |
|
---|---|---|---|
IV |
0 |
– |
|
III |
0 |
– |
|
II |
9 |
チャンネルNo.: 1 16進数Hex 9は、2進数1001に対応します。 |
|
高速カウンタ命令のキャンセル: キャンセル(ビット3) |
1 |
||
リセット入力: 有効(ビット2) |
0 |
||
カウント: 許可(ビット1) |
0 |
||
経過値を0にリセットする: する(ビット0) |
1 |
||
I |
0 |
– |
リセット入力がTRUEになると、経過値を0にリセットします。システムレジスタで指定したリセット入力を無効とするには、リセット入力設定(ビット2)を使用してください。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。POUヘッダは全プログラム言語で使用できます。
VAR
bSoftwareReset: BOOL:=FALSE;
(*Activates the function*)
END_VAR
VAR CONSTANT
HSC_CH0_RESET_ELAPSED_VALUE: WORD:=16#0001;
(*Resets elapsed value of channel 0*)
HSC_CH0_CONTINUE: WORD:=16#0000;
(*Continues counting in channel 0*)
END_VAR
VAR
END_VAR
リセットは、ステップ1で実行され、ステップ2で0が書き込まれると、カウントを開始します。リセット中は、カウントは開始しません。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,HSC_CH0_RESET_ELAPSED_VALUE,22,2,24,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH0_CONTINUE,22,6,24,8,);
B(B_F,E_MOVE!,Instance,24,0,30,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,2,32,4,);
B(B_F,E_MOVE!,Instance,24,4,30,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,6,32,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,24,2);
L(8,6,24,6);
L(8,2,8,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bSoftwareReset) then
sys_wHscOrPulseControlCode:=HSC_CH0_RESET_ELAPSED_VALUE;
sys_wHscOrPulseControlCode:=HSC_CH0_CONTINUE;
end_if;
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。POUヘッダは全プログラム言語で使用できます。
VAR
bSoftwareReset: BOOL:=FALSE;
(*Activates the function*)
END_VAR
VAR CONSTANT
HSC_CH1_RESET_ELAPSED_VALUE: WORD:=16#1001;
(*Resets elapsed value of channel 1*)
HSC_CH1_CONTINUE: WORD:=16#1000;
(*Continues counting in channel 1*)
END_VAR
VAR
END_VAR
リセットは、ステップ1で実行され、ステップ2で0が書き込まれると、カウントを開始します。リセット中は、カウントは開始しません。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,HSC_CH1_RESET_ELAPSED_VALUE,24,2,26,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH1_CONTINUE,24,6,26,8,);
B(B_F,E_MOVE!,Instance,26,0,32,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,2,34,4,);
B(B_F,E_MOVE!,Instance,26,4,32,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,6,34,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,26,2);
L(1,0,1,8);
L(8,6,26,6);
L(8,2,8,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bSoftwareReset) then
sys_wHscOrPulseControlCode:=HSC_CH1_RESET_ELAPSED_VALUE;
sys_wHscOrPulseControlCode:=HSC_CH1_CONTINUE;
end_if;