CanSetCanFdTiming


機能

CAN FDの通信タイミングを設定します。

書式

Ret = CanSetCanFdTiming ( Id , ChannelNo , ArbBitrate , ArbTSeg1 , ArbSJW , ArbTSeg2 , DataBitrate , DataSeg1 , DataSJW , DataSeg2 )

引数

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

ChannelNo [ VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ]
チャネル番号を指定します。

ArbBitrate [ VB.NET: UInteger ] [ C, C++: unsigned long ] [ C#: uint ]
アービトレーション ビットレートを指定します。
設定範囲は、60000~1000000となります。単位はbpsです。(bit per second)

ArbTSeg1 [ VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ]
アービトレーション時間セグメント1を指定します。
設定範囲は、2~254となります。単位は TQです。

ArbSJW [ VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ]
アービトレーション同期ジャンプ幅を指定します。
設定範囲は、1~127となります。また、アービトレーション時間セグメント2(ArbTSeg2)以下としてください。
単位は TQです。

ArbTSeg2 [ VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ]
アービトレーション時間セグメント2を指定します。
設定範囲は、2~254となります。また、アービトレーション同期ジャンプ幅(ArbSJW)以上にしてください。
単位は TQです。

DataBitrate [ VB.NET: UInteger ] [ C, C++: unsigned long ] [ C#: uint ]
データ ビットレートを指定します。
設定範囲は、60000~5000000となります。単位はbpsです。(bit per second)

ArbBitrateが60000以下の場合、設定範囲は60000以上となります。
ArbBitrateが60000より大きい場合、設定範囲はArbBitrate以上となります。
単位はbpsです。(bit per second)

DataTSeg1 [ VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ]
データ時間セグメント1を指定します。
設定範囲は、2~126となります。単位は TQです。

DataSJW [ VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ]
データ同期ジャンプ幅を指定します。(Synchronization Jump Width)

DataTSeg2が64以上の場合、設定範囲は、1~64となります。
DataTSeg2が64より小さい場合、設定範囲は、1~DataTSeg2以下となります。
単位は TQです。

DataTSeg2 [ VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ]
データ時間セグメント2を指定します。
設定範囲は、2~126なります。単位は TQです。

戻り値

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

定義

戻り値
[Dec]

内容

CAN_ERR_SUCCESS

0

正常終了

CAN_ERR_SYS_RECOVERED_FROM_STANDBY

7

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

CAN_ERR_DLL_INVALID_ID

10001

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

CAN_ERR_DLL_CALL_DRIVER

10002

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

CAN_ERR_SYS_CH_NO

20101

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

CAN_ERR_SYS_ARB_TSEG1

20131

アービトレーション時間セグメント1が設定可能範囲外です。

CAN_ERR_SYS_ARB_SJW

20132

アービトレーション同期ジャンプ幅が設定可能範囲外です。

CAN_ERR_SYS_ARB_TSEG2

20133

アービトレーション時間セグメント2が設定可能範囲外です。

CAN_ERR_SYS_DATA_TSEG1

20141

データ時間セグメント1が設定可能範囲外です。

CAN_ERR_SYS_DATA_SJW

20142

データ同期ジャンプ幅が設定可能範囲外です。

CAN_ERR_SYS_DATA_TSEG2

20143

データ時間セグメント2が設定可能範囲外です。

CAN_ERR_SYS_TIMING_COMBINATION

20144

通信パラメータが設定不可能な組み合わせです。

CAN_ERR_SYS_BUSON

20200

バスオンのため実行できません。

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

初期値

なし

説明

CAN FDの通信タイミングを設定します。
CANバス未接続時のみ設定が可能です。

デバイスに搭載されているCAN通信用のクロック及びこれを分周するためのプリスケーラの組み合わせに依存しています。
このため、デバイスに設定可能なArbビットレート、ArbTSeg1、ArbTSeg2、ArbSJW等の組み合わせには、制限があり設定不可の場合には、近い値に補正されます。

CanGetCanFdTiming関数を使用してビットレート及びサンプル・ポイントの比率が意図した値になっていることを確認してください。
CAN通信サンプル プログラムを使用して、確認いただくのが簡単です。

詳細は、CAN2.0B通信とCAN FD通信の違いや、CAN通信の伝送時間を参照ください。

使用例

ChannelNo = 1へ、ArbBitrate = 1000000 bps、ArbTSeg1 = 100TQ、ArbSJW = 60TQ、ArbTSeg2 = 60TQ、DataBitrate = 1000000 bps、DataTSeg1 = 50TQ、DataSJW = 30TQ、DataTSeg2 = 30TQを設定します。

VB.NET

Dim Ret As Integer

Ret = CanSetCanFdTiming ( Id , 1 , 1000000 , 100 , 60 , 60 , 1000000 , 50 , 30 , 30 )
 

C, C++

long Ret;
Ret = CanSetCanFdTiming ( Id , 1 , 1000000 , 100 , 60 , 60 , 1000000 , 50 , 30 , 30 );
 

C#

int Ret;
Ret = can.SetCanFdTiming ( Id , 1 , 1000000 , 100 , 60 , 60 , 1000000 , 50 , 30 , 30 );
 

関連項目

 CanGetCanFdTiming