サンプルプログラム > MotionCP > Visual Basic 6.0/VBA
オブジェクト
テキストボックス | オブジェクト名 |
ID番号 | txtID |
変数
オープン
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
動作パラメータ設定
Dim lngResult As Long
Dim intAxis As Integer
Dim Motion(2) As MOTIONPMCM
Dim intEmpty(1) As Integer
Dim intCount As Integer
intAxis = PMCM_AXIS_X
'CP動作パラメータ数
intCount = 3
'1回目
Motion(0).wMoveMode = PMCM_PTP '動作モード
Motion(0).wStartMode = PMCM_ACC_DEC '起動モード
Motion(0).fSpeedRate = 1 '速度倍率
Motion(0).wAccDecMode = PMCM_ACC_LINEAR '加減速モード
Motion(0).fLowSpeed = 100 '起動時速度
Motion(0).fSpeed = 500 '移動速度
Motion(0).wAccTime = 500 '加速時間
Motion(0).wDecTime = 500 '減速時間
Motion(0).fSAccSpeed = 0 '加速S字区間
Motion(0).fSDecSpeed = 0 '減速S字区間
Motion(0).lSlowdown = 0 'スローダウンポイント
Motion(0).lStep = 1000 '移動パルス数,移動方向
Motion(0).bAbsolutePtp = 0 '絶対座標指定
'2回目
Motion(1).wMoveMode = PMCM_PTP '動作モード
Motion(1).wStartMode = PMCM_ACC_DEC '起動モード
Motion(1).fSpeedRate = 1 '速度倍率
Motion(1).wAccDecMode = PMCM_ACC_LINEAR '加減速モード
Motion(1).fLowSpeed = 500 '起動時速度
Motion(1).fSpeed = 1000 '移動速度
Motion(1).wAccTime = 500 '加速時間
Motion(1).wDecTime = 500 '減速時間
Motion(1).fSAccSpeed = 0 '加速S字区間
Motion(1).fSDecSpeed = 0 '減速S字区間
Motion(1).lSlowdown = -1 'スローダウンポイント
Motion(1).lStep = 2000 '移動パルス数,移動方向
Motion(1).bAbsolutePtp = 0 '絶対座標指定
'3回目
Motion(2).wMoveMode = PMCM_PTP '動作モード
Motion(2).wStartMode = PMCM_CONST_DEC '起動モード
Motion(2).fSpeedRate = 1 '速度倍率
Motion(2).wAccDecMode = PMCM_ACC_LINEAR '加減速モード
Motion(2).fLowSpeed = 100 '起動時速度
Motion(2).fSpeed = 500 '移動速度
Motion(2).wAccTime = 0 '加速時間
Motion(2).wDecTime = 500 '減速時間
Motion(2).fSAccSpeed = 0 '加速S字区間
Motion(2).fSDecSpeed = 0 '減速S字区間
Motion(2).lSlowdown = -1 'スローダウンポイント
Motion(2).lStep = 1500 '移動パルス数,移動方向
Motion(2).bAbsolutePtp = 0 '絶対座標指定
'CPの空き取得
lngResult = PmcmGetEmptyCp(m_intID, intAxis, intEmpty(0))
If lngResult <> PMCM_RESULT_SUCCESS Then
MsgBox "PmcmGetEmptyCp ERROR : 0x" & Hex(lngResult), vbCritical
Exit Sub
End If
'CPの空き確認
If intEmpty(0) < intCount Then
MsgBox "CP空きなし", vbCritical
Exit Sub
End If
'動作パラメータ設定
lngResult = PmcmSetMotionCp(m_intID, intAxis, Motion(0), intCount)
If lngResult <> PMCM_RESULT_SUCCESS Then
MsgBox "PmcmSetMotionCp ERROR : 0x" & Hex(lngResult), vbCritical
Exit Sub
End If
動作開始
Dim lngResult As Long
Dim intAxis As Integer
'動作させる軸
intAxis = PMCM_AXIS_X
'動作開始
lngResult = PmcmStartMotionCp(m_intID, intAxis)
If lngResult <> PMCM_RESULT_SUCCESS Then
MsgBox "PmcmStartMotionCp ERROR : 0x" & Hex(lngResult), vbCritical
Exit Sub
End If
動作追加
'CP動作は96動作までしか設定できません
'それ以上の動作を設定したい場合は、動作中にCPの空きを確認し、空き数分の動作を開始します
Dim lngResult As Long
Dim intAxis As Integer
Dim Motion(99) As MOTIONPMCM
Dim intEmpty(1) As Integer
Dim intCount As Integer
Dim intRemainCount As Integer
Dim intSetCount As Integer
Dim i As Integer
intAxis = PMCM_AXIS_X
'CP動作パラメータ数
intCount = 100
For i = 0 To intCount - 1
Motion(i).wMoveMode = PMCM_PTP '動作モード
Motion(i).wStartMode = PMCM_CONST '起動モード
Motion(i).fSpeedRate = 1 '速度倍率
Motion(i).wAccDecMode = PMCM_ACC_LINEAR '加減速モード
Motion(i).fLowSpeed = 1000 '起動時速度
Motion(i).fSpeed = 1000 '移動速度
Motion(i).wAccTime = 0 '加速時間
Motion(i).wDecTime = 0 '減速時間
Motion(i).fSAccSpeed = 0 '加速S字区間
Motion(i).fSDecSpeed = 0 '減速S字区間
Motion(i).lSlowdown = -1 'スローダウンポイント
Motion(i).lStep = 1000 '移動パルス数,移動方向
Motion(i).bAbsolutePtp = 0 '絶対座標指定
Next
'残り動作数
intRemainCount = intCount
Do While intRemainCount > 0
'CPの空き取得
lngResult = PmcmGetEmptyCp(m_intID, intAxis, intEmpty(0))
If lngResult <> PMCM_RESULT_SUCCESS Then
MsgBox "PmcmGetEmptyCp ERROR : 0x" & Hex(lngResult), vbCritical
Exit Sub
End If
'CPの空きを確認し、設定動作数を決定する
If intEmpty(0) = 0 Then 'CP空きなし
intSetCount = 0
ElseIf intEmpty(0) < intRemainCount Then 'CP空き < 残り動作数
intSetCount = intEmpty(0) 'CP空き分だけ設定する
ElseIf intEmpty(0) >= intRemainCount Then 'CP空き >= 残り動作数
intSetCount = intRemainCount '残り動作数を設定する
End If
If intSetCount > 0 Then
'動作パラメータ設定
lngResult = PmcmSetMotionCp(m_intID, intAxis, Motion(intCount - intRemainCount), intSetCount)
If lngResult <> PMCM_RESULT_SUCCESS Then
MsgBox "PmcmSetMotionCp ERROR : 0x" & Hex(lngResult), vbCritical
Exit Sub
End If
'動作開始
lngResult = PmcmStartMotionCp(m_intID, intAxis)
If lngResult <> PMCM_RESULT_SUCCESS Then
MsgBox "PmcmStartMotionCp ERROR : 0x" & Hex(lngResult), vbCritical
Exit Sub
End If
End If
'残り動作数更新
intRemainCount = intRemainCount - intSetCount
Loop
動作停止
Dim lngResult As Long
Dim intAxis As Integer
Dim intStopMode As Integer
'停止させる軸
intAxis = PMCM_AXIS_X
'停止モード
intStopMode = PMCM_IMMEDIATE_STOP
'動作停止
lngResult = PmcmStopMotion(m_intID, intAxis, intStopMode)
If lngResult <> PMCM_RESULT_SUCCESS Then
MsgBox "PmcmStopMotion ERROR : 0x" & Hex(lngResult), vbCritical
Exit Sub
End If
クローズ
Dim blnResult As Boolean
'ボードクローズ
blnResult = PmcmClose(m_intID)