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

Visual Basic 6.0/VBA

オブジェクト

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

変数

Dim m_intID As Integer

オープン

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)