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

Visual Basic 6.0/VBA

オブジェクト

テキストボックス オブジェクト名
ID番号 txtID

変数

Dim m_intID As Integer
#If VBA7 Then
Dim m_lngEvent As LongPtr
#Else
Dim m_lngEvent As Long
#End If

オープン

Dim lngResult As Long
Dim strModelName As String

m_intID = Val(txtID.Text)
strModelName = "PMC-M2C-U"
lngResult = PmcmOpen(m_intID, strModelName)
If lngResult = PMCM_RESULT_SUCCESS Then
    MsgBox "オープン成功", vbInformation
Else
    MsgBox "オープン失敗", vbCritical
End If

各種設定

Dim lngResult As Long
Dim intAxis As Integer

intAxis = PMCM_AXIS_X + PMCM_AXIS_Y

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

'パルス出力モード設定
'使用しているドライバに合致したパルス出力モードを選択してください
lngResult = PmcmSetPulseConfig(m_intID, intAxis, PMCM_PULSE_OUT, 7)
If lngResult <> PMCM_RESULT_SUCCESS Then
    MsgBox "PmcmSetPulseConfig ERROR : 0x" & Hex(lngResult), vbCritical
    Exit Sub
End If

'イベントマスク設定
'自動停止時のイベント発生を許可に設定します
lngResult = PmcmSetEventMask(m_intID, intAxis, PMCM_EVENT_STOP, &H1)
If lngResult <> PMCM_RESULT_SUCCESS Then
    MsgBox "PmcmSetEventMask ERROR : 0x" & Hex(lngResult), vbCritical
    Exit Sub
End If

'イベントオブジェクト作成
m_lngEvent = CreateEvent(0, True, False, 0)
If m_lngEvent = 0 Then
    MsgBox "イベントオブジェクト作成失敗", vbCritical
    Exit Sub
End If

'イベント設定
lngResult = PmcmSetEvent(m_intID, m_lngEvent)
If lngResult <> PMCM_RESULT_SUCCESS Then
    MsgBox "PmcmSetEvent ERROR : 0x" & Hex(lngResult), vbCritical
    Exit Sub
End If

動作パラメータ設定

Dim lngResult As Long
Dim intAxis As Integer
Dim Motion(1) As MOTIONPMCM

intAxis = 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 '絶対座標指定
'動作パラメータ設定
lngResult = PmcmSetMotion(m_intID, intAxis, Motion(0))
If lngResult <> PMCM_RESULT_SUCCESS Then
    MsgBox "PmcmSetMotion ERROR : 0x" & Hex(lngResult), vbCritical
    Exit Sub
End If

動作開始

Dim lngResult As Long
Dim intAxis As Integer

'動作させる軸
intAxis = PMCM_AXIS_X

'動作開始
lngResult = PmcmStartMotion(m_intID, intAxis)
If lngResult <> PMCM_RESULT_SUCCESS Then
    MsgBox "PmcmStartMotion ERROR : 0x" & Hex(lngResult), vbCritical
    Exit Sub
End If

イベント待ち

Dim lngResult As Long
Dim EventFactor As EVENTFACTORPMCM

'イベント発生待ち
lngResult = WaitForSingleObject(m_lngEvent, INFINITE)

'イベントクリア
ResetEvent m_lngEvent

'イベント要因取得
lngResult = PmcmGetEventFactor(m_intID, EventFactor)
If lngResult <> PMCM_RESULT_SUCCESS Then
    MsgBox "PmcmGetEventFactor ERROR : 0x" & Hex(lngResult), vbCritical
    Exit Sub
End If
If EventFactor.nResult <> 0 Then
    MsgBox "イベント失敗", vbCritical
    Exit Sub
End If
MsgBox "停止イベント要因 : H'" & Hex(EventFactor.wStop(0)) & vbCrLf & "状態イベント要因 : H'" & Hex(EventFactor.wState(0)), vbInformation

クローズ

Dim blnResult As Boolean

'イベントオブジェクトクローズ
CloseHandle m_lngEvent
m_lngEvent = 0

'ボードクローズ
blnResult = PmcmClose(m_intID)