メインコンテンツまでスキップ

Microsoft Excel版 CANシミュレーションプログラム

画面構成(Settingシート)

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シート)

Excel版 CANシミュレーションプログラム 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:送信ログ
IDCAN IDとIDフォーマットを表示します。CAN IDは16進数で、IDフォーマットは以下でそれぞれ表示します。
Std:標準ID Ext:拡張ID
DLCデータ長(0~64)を表示します。
Dataデータ(D1~D64)を16進数で表示します。

プリセットフレーム

各プリセットフレームの内容は以下の通りです。
送信周期、プロトコル、CAN ID、DL、DataはSettingシートで変更可能です。

フレーム種別Slot送信周期プロトコルIDDLData(16進数)
フォーマットCAN IDD1D2D8D32D64
定期送信プリセットフレーム(※1)1500msCAN FD標準ID100H640001071F3F
イベント送信プリセットフレーム2-CAN標準ID200H8212228
ダイレクト送信プリセットフレーム--CAN FD標準ID300H323132384F

※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