Microsoft Excel版 CANシミュレーションプログラム
画面構成(Settingシート)
| 項目 | 説明 |
|---|---|
| Connectボタン | クリックすると、PCに接続しているMicroPeckerXが認識されます。 |
| Serial | 認識したMicroPeckerXのシリアル番号を表示します。 |
| Parameter Setting (①枠部分) | ボーレート、サンプルポイント、終端抵抗の有効/無効を設定します。 |
| Slot Setting (②枠部分) | 定期送信プリセットフレーム(No.1)とイベント送信プリセットフレーム(No.2)を設定します。 (※1) |
| Direct Send Setting (③枠部分) | ダイレクト送信プリセットフレームを設定します。 (※1) |
※1:設定可能な項目は以下の通りです。
送信周期(定期送信プリセットフレームのみ)、プロトコル、ID(標準IDのみ)、DL、データ
画面構成(Monitoringシート)
| 項目 | 説明 |
|---|---|
| Startボタン | クリックすると、モニタリングと定期送信プリセットフレームの送信を開始します。 |
| Stopボタン | クリックすると、モニタリングと定期送信プリセットフレームの送信を停止します。 |
| Send Slotボタン | クリックすると、イベント送信プリセットフレームを送信します。 |
| Change Slotボタン | クリックすると、定期送信プリセットフレームのD1を00Hに変更します。 |
| Direct Sendボタン | クリックすると、ダイレクト送信プリセットフレームを送信します。 |
| Monitor Log (①枠部分) | 送受信したログ情報を表示します。ログ情報は1秒ごとに更新され、その際に前回のログ情報は全てクリアされます。 ただし、ログ情報がない場合は更新されず、前回のログが表示されたままになります。 表示内容については「Monitor Log詳細」を参照してください。 |
Monitor Log詳細
| 項目 | 説明 |
|---|---|
| Time Stamp | タイムスタンプを「sssss.mmmuuu」形式で表示します。 |
| Dir | ログ方向を表示します。 Rx:受信ログ Tx:送信ログ |
| ID | CAN ID とIDフォーマットを表示します。CAN IDは16進数で、IDフォーマットは以下でそれぞれ表示します。 Std:標準ID Ext:拡張ID |
| DLC | データ長(0~64)を表示します。 |
| Data | データ(D1~D64)を16進数で表示します。 |
プリセットフレーム
各プリセットフレームの内容は以下の通りです。
送信周期、プロトコル、CAN ID、DL、DataはSettingシートで変更可能です。
| フレーム種別 | Slot | 送信周期 | プロトコル | ID | DL | Data(16進数) | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| フォーマット | CAN ID | D1 | D2 | … | D8 | … | D32 | … | D64 | |||||
| 定期送信プリセットフレーム(※1) | 1 | 500ms | CAN FD | 標準ID | 100H | 64 | 00 | 01 | … | 07 | … | 1F | … | 3F |
| イベント送信プリセットフレーム | 2 | - | CAN | 標準ID | 200H | 8 | 21 | 22 | … | 28 | ||||
| ダイレクト送信プリセットフレーム | - | - | CAN FD | 標準ID | 300H | 32 | 31 | 32 | … | 38 | … | 4F | ||
※1: D1のみ、送信ごとにインクリメント(+1)します。
実装例(コメント付きソースコード)
VBAサンプル本体ロジックは MPXCtrl_CANFD_ExcelVBA_Sample.xlsm に含まれます。
MPXCtrlFree.bas はAPI宣言・定数・構造体定義です。以下はサンプルと同じAPIシーケンスで実装する場合の例です。
Option Explicit
Sub StartCanSimulation()
Dim dev(0 To 0) As StMPXDeviceInfo
Dim count As Byte
Dim ret As Long
Dim serial As Long
Dim p As StMPXCANParam
' 1) 本体認識
ret = MPXOpen(dev(0), 1, count)
If ret <> E_OK Or count = 0 Then Exit Sub
serial = dev(0).Serial
' 2) CH1をSIMに設定
p.Mode = MPX_CAN_MODE_SIM
p.EnableTerminate = MPX_CAN_TERMINATE_ENABLE
p.ArbitrationBaudrate = MPX_CAN_PARAM_ABR_500K
p.ArbitrationSamplepoint = MPX_CAN_PARAM_SP_80P
p.DataBaudrate = MPX_CAN_PARAM_DBR_2M
p.DataSamplepoint = MPX_CAN_PARAM_SP_80P
ret = MPXCANSetParam(serial, 1, p)
If ret <> E_OK Then Exit Sub
' CH2は無効
p.Mode = MPX_CAN_MODE_NONE
ret = MPXCANSetParam(serial, 2, p)
If ret <> E_OK Then Exit Sub
' 3) ログ取得方式をAPIモー ドに設定
ret = MPXSetGetLogMode(serial, 1, MPX_GETLOGMODE_GETLOGAPI)
If ret <> E_OK Then Exit Sub
' 4) モニタ開始
ret = MPXMonitorStart(serial, MPX_SYNC_MASTER)
End Sub
Sub StopCanSimulation(ByVal serial As Long)
' 5) 停止して終了
Dim ms As Long, us As Integer
Call MPXMonitorStop(serial, ms, us)
Call MPXClose
End Sub