CAN FDの通信タイミングを設定します。
Ret = CanSetCanFdTiming ( Id , ChannelNo , ArbBitrate , ArbTSeg1 , ArbSJW , ArbTSeg2 , DataBitrate , DataSeg1 , DataSJW , DataSeg2 )
Id
[ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short
]
CanInitで取得したデバイスIDを指定します。
ChannelNo
[ VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ] [
Python: ctypes.c_ushort ]
チャネル番号を指定します。
ArbBitrate
[ VB.NET: UInteger ] [ C, C++: unsigned long ] [ C#: uint ] [ Python:
ctypes.c_uint ]
アービトレーション ビットレートを指定します。
設定範囲は、60000~1000000となります。単位はbpsです。(bit per second)
ArbTSeg1 [
VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ] [ Python: ctypes.c_ushort
]
アービトレーション時間セグメント1を指定します。
設定範囲は、2~513となります。単位は TQです。
ArbSJW [
VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ] [ Python: ctypes.c_ushort
]
アービトレーション同期ジャンプ幅を指定します。
設定範囲は、1~127となります。また、アービトレーション時間セグメント2(ArbTSeg2)以下としてください。
単位は TQです。
ArbTSeg2 [
VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ] [ Python: ctypes.c_ushort
]
アービトレーション時間セグメント2を指定します。
設定範囲は、2~128となります。また、アービトレーション時間セグメント1(ArbTSeg1)以下としてください。
単位は TQです。
DataBitrate
[ VB.NET: UInteger ] [ C, C++: unsigned long ] [ C#: uint ] [ Python:
ctypes.c_uint ]
データ ビットレートを指定します。
設定範囲は、60000~5000000となります。単位はbpsです。(bit per second)
DataTSeg1 [
VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ] [ Python: ctypes.c_ushort
]
データ時間セグメント1を指定します。
設定範囲は、2~257となります。単位は TQです。
DataSJW [
VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ] [ Python: ctypes.c_ushort
]
データ同期ジャンプ幅を指定します。(Synchronization Jump Width)
設定範囲は、1~127となります。また、データ時間セグメント2(DataTSeg2)以下としてください。
単位は TQです。
DataTSeg2 [
VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ] [ Python: ctypes.c_ushort
]
データ時間セグメント2を指定します。
設定範囲は、1~128となります。また、データ時間セグメント1(DataTSeg1)以下としてください。
単位は TQです。
Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ] [ Python: ctypes.c_long ]
定義 |
戻り値 |
内容 |
CAN_ERR_SUCCESS |
0 |
正常終了 |
CAN_ERR_SYS_RECOVERED_FROM_STANDBY |
7 |
スタンバイモードから復帰したため、CanResetDevice関数を実行してください |
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; |
C# |
int Ret; |
Python |
Ret = ctypes.c_long() Ret.value
= ccan.CanSetCanFdTiming ( Id , 1 , 1000000 , 100 , 60
, 60 , 1000000 , 50 , 30 , 30 ) |