高速カウンタ制御コードの書き込み

高速カウンタおよびパルス出力制御コードが格納されている特殊データレジスタは、システム変数sys_wHscOrPulseControlCodeを使用して読み出し、書き込みすることができます。(システム変数sys_wHscOrPulseControlCodeは、特殊データレジスタDT90052に相当します。)

高速カウンタ制御コードで制御できる動作

それぞれのチャンネルに対する制御コードの設定内容は、システム変数sys_wHscChannelxControlCodeまたはsys_wPulseChannelxControlCodeを使ってモニタすることができます(x=チャンネルNo.を示します)。このシステム変数の設定内容は、他の設定が実行されるまで保持されます。

高速カウンタ命令のキャンセル(ビット3)

命令の実行をキャンセルするには、高速カウンタ制御コード(sys_wHscOrPulseControlCode)を格納するデータレジスタのビット3TRUEにセットします。高速カウンタ制御フラグがFALSEに変化します。高速カウンタ命令の実行を再び有効にするには、ビット3FALSEに戻します。

高速カウンタリセット入力(ハードリセット)の有効/無効の切り替え(ビット2)

X0 高速カウンタ入力

  1.  (1) 経過値
  2.  (2) 高速カウンタ制御コードのビット2(リセットの有効/無効)
  3.  (3) 経過値は0にリセットされます
  4.  (4) リセット不可

制御コードのビット2の値を1にセットすると、システムレジスタで指定されているハードリセット入力が無効となり、リセット入力がTRUEになっても、カウントを継続します。ハードリセットは、ビット2の値を0にリセットするまで無効となります。

カウント動作の許可/禁止の切り替え(ビット1)

カウント入力禁止制御

X0 高速カウンタ入力

  1.  (1) 経過値
  2.  (2) 高速カウンタ制御コードのビット1 (カウント)

制御コードのビット1の値をTRUEにセットすると、カウントが禁止され、経過値が保持されます。ビット1の値をFALSEにリセットすると、カウントを継続します。

高速カウンタ経過値のソフトリセット(ビット0)

X0 高速カウンタ入力

  1.  (1) 経過値
  2.  (2) 高速カウンタ制御コードのビット0 (ソフトリセット)

制御コードのビット0の値をTRUEにセットすると、ソフトリセットが実行され、経過値が0になります。ビット0の値がFALSEにリセットされるまで、経過値は0を保持します。

FP-Sigma、FP-X、FP0Rに関する説明

制御コードのビット0~15は、4つのグループに割り付けられています。それぞれの値は、16進数で設定します。(例: 00020000 0000 1001 = 16#2009)

  1.  (1) チャンネルNo. (チャンネルn: 16#n)
  2.  (2) 高速カウンタ命令のキャンセル(ビット3)

    0: 継続/1: キャンセル

  3.  (3) リセット入力 (ビット2) (注)

    0: 有効/1: 無効

  4.  (4) カウント(ビット1)

    0: 許可/1: 禁止

  5.  (5) 経過値を0にリセットする(ビット0)

    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

FP0、FP-eに関する説明

制御コードのビット0~15は、各チャンネル毎に、4つのグループに割り付けられています。それぞれの値は、16進数で設定します。(例: 0000 0000 1001 0000 = 16#90)

  1.  (1) 高速カウンタ命令のキャンセル(ビット3)

    0: 継続/1: キャンセル

  2.  (2) リセット入力(ビット2) (注)

    0: 有効/1: 無効

  3.  (3) カウント(ビット1)

    0: 許可/1: 禁止

  4.  (4) 経過値を0にリセットする(ビット0)

    0: しない/1: する

グループ

IV

III

II

I

チャンネル

3

2

1

0

例: 16#90

グループ

説明

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)を使用してください。

例: チャンネル0をソフトリセットする場合

POUヘッダ

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

POUボディ

リセットは、ステップ1で実行され、ステップ20が書き込まれると、カウントを開始します。リセット中は、カウントは開始しません。

LDボディ

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

STボディ

if DF(bSoftwareReset) then
    sys_wHscOrPulseControlCode:=HSC_CH0_RESET_ELAPSED_VALUE;
    sys_wHscOrPulseControlCode:=HSC_CH0_CONTINUE;
end_if;

例: チャンネル1をソフトリセットする場合(FP-SIGMAFP-XFP0R)

POUヘッダ

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

POUボディ

リセットは、ステップ1で実行され、ステップ20が書き込まれると、カウントを開始します。リセット中は、カウントは開始しません。

LDボディ

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

STボディ

if DF(bSoftwareReset) then
    sys_wHscOrPulseControlCode:=HSC_CH1_RESET_ELAPSED_VALUE;
    sys_wHscOrPulseControlCode:=HSC_CH1_CONTINUE;
end_if;

最終修正日: 2019-06-03このページに関するフィードバックお問い合わせ窓口