CntReadStatusEx


機能

指定したチャネルのステータスを取得します。マルチプロセス対応関数です。

書式

Ret = CntReadStatusEx ( Id , ChNo , Sts )

引数

Id [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
CntInitで取得したデバイスIDを指定します。

ChNo [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
取得するチャネル番号を指定します。

Sts [ VB.NET: Integer ] [ C, C++: unsigned long * ] [ C#: out uint ] [ Python: ctypes.POINTER(ctypes.c_ulong) ]
ステータスを取得する変数のアドレスを指定します。各ビットは、次のように定義されています。

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

ALM

AI

FE

CA

BO

Z

A

B

U/D

EQ1

EQ0

U

 

ビット

意味

D0 :U

汎用入力状態

0:LOW
1:HIGH

D1 :EQ0

カウント一致レジスタ0

0:一致
1:不一致

D2 :EQ1

カウント一致レジスタ1

0:一致
1:不一致

D3 :U/D

UP/DOWN

0:アップカウント中
1:ダウンカウント中

D4 :B
 

B相

0:LOW
1:HIGH

D5 :A

A相

0:LOW
1:HIGH

D6 :Z

Z相

0:正論理=LOW /負論理=HIGH
1:正論理=HIGH/負論理=LOW

D7 :BO

Borrow

0:Borrow未検出
1:Borrow検出

D8 :CA

Carry

0:Carry未検出
1:Carry検出

D9 :FE

フィルタエラー

0:フィルタエラー未検出
1:フィルタエラー検出

D10:AI

異常入力エラー

0:異常入力エラー未検出
1:異常入力エラー検出

D11:ALM

断線アラームエラー

0:アラームエラー未検出
1:アラームエラー検出

     ※外部信号源に差動を設定できないデバイスでは、断線アラームエラーは検出されません。

戻り値

Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]

定義

意味

CNT_ERR_SUCCESS

0

正常終了

CNT_ERR_SYS_RECOVERED_FROM_STANDBY

7

スタンバイモードから復帰したため、CntResetDevice関数を実行してください

CNT_ERR_DLL_INVALID_ID

10001

無効なIDが指定されました

CNT_ERR_DLL_CALL_DRIVER

10002

 ドライバーを呼び出せません。(デバイスI/Oコントロールに失敗)

CNT_ERR_DLL_BUFF_ADDRESS

10101

データバッファアドレスが不正です

CNT_ERR_SYS_NOT_SUPPORTED

20001

このデバイスではこの関数は使用できません

CNT_ERR_SYS_CH_NO

20201

チャネル番号が設定可能範囲外です

その他のエラー(参照:エラーコード詳細

初期値

0

説明

・指定したチャネルのステータスを取得します。
 ステータスは、カウンタの各相の信号が動作しているかどうかの確認に使用できます。
 汎用入力については、専用関数CntInputDIByteを使用した方が便利です。

・「サンプリング機能搭載デバイス」以外の場合、CntReadStatusを使用してください。

・フィルタエラー(D9:FE), 異常入力エラー(D10:AI), 断線アラームエラー(D11:ALM)については、ステータスをリードした時点でクリアされます。
 ただし、CntNotifyCounterError関数にて、カウンタエラーの通知を有効にしているとこれらのステータスは常に0となります。

・カウント一致状態(D1:EQ)は、本関数実行時のカウント値と、比較一致レジスタ設定値が同じであれば、「0:カウントデータ一致」となります。
 それ以外の状態では、「1:カウントデータ不一致」となります。
 このため、高速にカウント値が変化する場合は、状態変化を認識できません。CntNotifyCountUp関数の利用をご検討ください。

使用例

チャネル0のステータスを取得します。

VB.NET

Dim Ret As Integer
Dim Sts As Integer
Ret = CntReadStatusEx ( Id , 0 , Sts )
 

C, C++

long Ret;
unsigned long Sts;
Ret = CntReadStatusEx ( Id , 0 , &Sts );
 

C#

int Ret;
uint Sts;
Ret = cnt.ReadStatusEx ( Id , 0 , out Sts );
 

Python

Ret = ctypes.c_long()
Sts = ctypes.c_ulong()
Ret.value = ccnt.CntReadStatusEx ( Id , 0 , ctypes.byref(Sts) )
 

関連項目

CntStartCount CntReadStatus CntNotifyCounterError