コンテンツにスキップ
サンプルプログラム > Event >

Visual Basic(.NET2002以降)

オブジェクト

テキストボックス Name
ID番号 idTextBox

変数

Dim id As Short
Dim eventHandle As ManualResetEvent

オープン

Dim result As Integer

id = Convert.ToInt16(idTextBox.Text)
result = PmcmOpen(id, "PMC-M2C-U")
If result = PMCM_RESULT_SUCCESS Then
    MessageBox.Show("オープン成功", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
    MessageBox.Show("オープン失敗", "", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If

各種設定

Dim result As Integer
Dim axis As Short

axis = PMCM_AXIS_X + PMCM_AXIS_Y

'センサ設定
'オンで検知するセンサを接続している場合や、リミットスイッチを接続していない場合はモーターが動作しません
'その場合は以下の関数を実行してセンサ設定を"オンで検知"に変更してください
'result = PmcmSetSensorConfig(id, axis, PMCM_LOGIC, &H3F)
'If result <> PMCM_RESULT_SUCCESS Then
'    MessageBox.Show("PmcmSetSensorConfig ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
'    Exit Sub
'End If

'パルス出力モード設定
'使用しているドライバに合致したパルス出力モードを選択してください
result = PmcmSetPulseConfig(id, axis, PMCM_PULSE_OUT, 7)
If result <> PMCM_RESULT_SUCCESS Then
    MessageBox.Show("PmcmSetPulseConfig ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End If

'イベントマスク設定
'自動停止時のイベント発生を許可に設定します
result = PmcmSetEventMask(id, axis, PMCM_EVENT_STOP, &H1)
If result <> PMCM_RESULT_SUCCESS Then
    MessageBox.Show("PmcmSetEventMask ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End If

'イベントオブジェクト作成
eventHandle = New ManualResetEvent(False)

'イベント設定
result = PmcmSetEvent(id, eventHandle.Handle)
If result <> PMCM_RESULT_SUCCESS Then
    MessageBox.Show("PmcmSetEvent ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End If

動作パラメータ設定

Dim result As Integer
Dim axis As Short
Dim motion(1) As MOTIONPMCM

axis = PMCM_AXIS_X

'X軸
motion(0).wMoveMode = PMCM_PTP '動作モード
motion(0).wStartMode = PMCM_CONST '起動モード
motion(0).fSpeedRate = 1 '速度倍率
motion(0).wAccDecMode = PMCM_ACC_LINEAR '加減速モード
motion(0).fLowSpeed = 1000 '起動時速度
motion(0).fSpeed = 1000 '移動速度
motion(0).wAccTime = 0 '加速時間
motion(0).wDecTime = 0 '減速時間
motion(0).fSAccSpeed = 0 '加速S字区間
motion(0).fSDecSpeed = 0 '減速S字区間
motion(0).lSlowdown = -1 'スローダウンポイント
motion(0).lStep = 10000 '移動パルス数,移動方向
motion(0).bAbsolutePtp = 0 '絶対座標指定
'動作パラメータ設定
result = PmcmSetMotion(id, axis, motion)
If result <> PMCM_RESULT_SUCCESS Then
    MessageBox.Show("PmcmSetMotion ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End If

動作開始

Dim result As Integer
Dim axis As Short

'動作させる軸
axis = PMCM_AXIS_X

'動作開始
result = PmcmStartMotion(id, axis)
If result <> PMCM_RESULT_SUCCESS Then
    MessageBox.Show("PmcmStartMotion ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End If

イベント待ち

Dim result As Integer
Dim eventFactor As EVENTFACTORPMCM
eventFactor.Initialize()

'イベント発生待ち
eventHandle.WaitOne()

'イベントクリア
eventHandle.Reset()

'イベント要因取得
result = PmcmGetEventFactor(id, eventFactor)
If result <> PMCM_RESULT_SUCCESS Then
    MessageBox.Show("PmcmGetEventFactor ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End If
If eventFactor.nResult <> 0 Then
    MessageBox.Show("イベント失敗", "", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End If
MessageBox.Show("停止イベント要因 : 0x" & eventFactor.wStop(0).ToString("X") & ControlChars.CrLf & "状態イベント要因 : 0x" & eventFactor.wState(0).ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Information)

クローズ

Dim result As Boolean

eventHandle.Close()

result = PmcmClose(id)