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

Visual Basic 6.0/VBA

オブジェクト

テキストボックス オブジェクト名
ID番号 txtID
ラジオボタン オブジェクト名
他軸の停止によるスタート optStartMode0
内部同期信号によるスタート optStartMode1

変数

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
Dim Comp(1) As COMPPMCM

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

If optStartMode0.Value = True Then
    '他軸の停止によるスタート
    'Y軸の停止によりX軸がスタートします

    'X軸の起動条件を設定します(他軸の停止によるスタート)
    lngResult = PmcmSetSynchroConfig(m_intID, PMCM_AXIS_X, PMCM_SYNC_START_MODE, 3)
    If lngResult <> PMCM_RESULT_SUCCESS Then
        MsgBox "PmcmSetSynchroConfig ERROR : 0x" & Hex(lngResult), vbCritical
        Exit Sub
    End If

    'X軸の他軸の停止によるスタート条件を設定します(Y軸の停止確認)
    lngResult = PmcmSetSynchroConfig(m_intID, PMCM_AXIS_X, PMCM_SYNC_START, PMCM_AXIS_Y)
    If lngResult <> PMCM_RESULT_SUCCESS Then
        MsgBox "PmcmSetSynchroConfig ERROR : 0x" & Hex(lngResult), vbCritical
        Exit Sub
    End If
ElseIf optStartMode1.Value = True Then
    '内部同期信号によるスタート
    'X軸の出力パルスカウンタが500になったらY軸がスタートします

    'Y軸の起動条件を設定(内部同期信号によるスタート)
    lngResult = PmcmSetSynchroConfig(m_intID, PMCM_AXIS_Y, PMCM_SYNC_START_MODE, 2)
    If lngResult <> PMCM_RESULT_SUCCESS Then
        MsgBox "PmcmSetSynchroConfig ERROR : 0x" & Hex(lngResult), vbCritical
        Exit Sub
    End If

    'Y軸の内部同期信号によるスタート条件の設定(X軸の内部同期信号でスタート)
    lngResult = PmcmSetSynchroConfig(m_intID, PMCM_AXIS_Y, PMCM_SYNC_SIG_START, 0)
    If lngResult <> PMCM_RESULT_SUCCESS Then
        MsgBox "PmcmSetSynchroConfig ERROR : 0x" & Hex(lngResult), vbCritical
        Exit Sub
    End If

    'X軸の内部同期信号出力タイミングの設定(出力パルスコンパレータ条件成立時)
    lngResult = PmcmSetSynchroOut(m_intID, PMCM_AXIS_X, PMCM_SYNC_OUT_MODE, 1)
    If lngResult <> PMCM_RESULT_SUCCESS Then
        MsgBox "PmcmSetSynchroOut ERROR : 0x" & Hex(lngResult), vbCritical
        Exit Sub
    End If

    'X軸のコンパレータの設定
    Comp(0).wConfig = 1
    Comp(0).lCount = 500
    lngResult = PmcmSetComparatorConfig(m_intID, PMCM_AXIS_X, PMCM_COMP_COUNTER, Comp(0))
    If lngResult <> PMCM_RESULT_SUCCESS Then
        MsgBox "PmcmSetComparatorConfig ERROR : 0x" & Hex(lngResult), vbCritical
        Exit Sub
    End If
End If

動作パラメータ設定

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

intAxis = PMCM_AXIS_X + PMCM_AXIS_Y

'X軸
Motion(0).wMoveMode = PMCM_PTP '動作モード
Motion(0).wStartMode = PMCM_CONST '起動モード
Motion(0).fSpeedRate = 1 '速度倍率
Motion(0).wAccDecMode = PMCM_ACC_LINEAR '加減速モード
Motion(0).fLowSpeed = 500 '起動時速度
Motion(0).fSpeed = 500 '移動速度
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 = 1000 '移動パルス数,移動方向
Motion(0).bAbsolutePtp = 0 '絶対座標指定
'Y軸
Motion(1).wMoveMode = PMCM_PTP '動作モード
Motion(1).wStartMode = PMCM_CONST '起動モード
Motion(1).fSpeedRate = 1 '速度倍率
Motion(1).wAccDecMode = PMCM_ACC_LINEAR '加減速モード
Motion(1).fLowSpeed = 1000 '起動時速度
Motion(1).fSpeed = 1000 '移動速度
Motion(1).wAccTime = 0 '加速時間
Motion(1).wDecTime = 0 '減速時間
Motion(1).fSAccSpeed = 0 '加速S字区間
Motion(1).fSDecSpeed = 0 '減速S字区間
Motion(1).lSlowdown = -1 'スローダウンポイント
Motion(1).lStep = 1000 '移動パルス数,移動方向
Motion(1).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

If optStartMode0.Value = True Then
    '他軸の停止によるスタート
    'X軸はY軸の停止を確認して動作しますので、Y軸を先に動作させます
    '同時に動作させてしまうと、その時点でY軸がまだ動作開始前で停止中のため、X軸が動作してしまいます

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

    'X軸の動作開始
    lngResult = PmcmStartMotion(m_intID, PMCM_AXIS_X)
    If lngResult <> PMCM_RESULT_SUCCESS Then
        MsgBox "PmcmStartMotion ERROR : 0x" & Hex(lngResult), vbCritical
        Exit Sub
    End If
ElseIf optStartMode1.Value = True Then
    '内部同期信号によるスタート

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

動作停止

Dim lngResult As Long
Dim intAxis As Integer
Dim intStopMode As Integer

'停止させる軸
intAxis = PMCM_AXIS_X + PMCM_AXIS_Y

'停止モード
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)