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

Visual Basic(.NET2002以降)

オブジェクト

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

変数

Dim id As Short

オープン

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

動作パラメータ設定

Dim result As Integer
Dim axis As Short
Dim motion(2) As MOTIONPMCM
Dim empty(1) As Short
Dim count As Short

axis = PMCM_AXIS_X

'CP動作パラメータ数
count = 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の空き取得
result = PmcmGetEmptyCp(id, axis, empty)
If result <> PMCM_RESULT_SUCCESS Then
    MessageBox.Show("PmcmGetEmptyCp ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End If
'CPの空き確認
If empty(0) < count Then
    MessageBox.Show("CP空きなし", "", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    Exit Sub
End If

'動作パラメータ設定
result = PmcmSetMotionCp(id, axis, motion, count)
If result <> PMCM_RESULT_SUCCESS Then
    MessageBox.Show("PmcmSetMotionCp 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 = PmcmStartMotionCp(id, axis)
If result <> PMCM_RESULT_SUCCESS Then
    MessageBox.Show("PmcmStartMotionCp ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End If 

動作追加

'CP動作は96動作までしか設定できません
'それ以上の動作を設定したい場合は、動作中にCPの空きを確認し、空き数分の動作を開始します
Dim result As Integer
Dim axis As Short
Dim motion(99) As MOTIONPMCM
Dim setMotion() As MOTIONPMCM
Dim empty(1) As Short
Dim count As Short
Dim remainCount As Short
Dim setCount As Short
Dim i As Integer

axis = PMCM_AXIS_X

'CP動作パラメータ数
count = 100

For i = 0 To count - 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

'残り動作数
remainCount = count

Do While remainCount > 0
    'CPの空き取得
    result = PmcmGetEmptyCp(id, axis, empty)
    If result <> PMCM_RESULT_SUCCESS Then
        MessageBox.Show("PmcmGetEmptyCp ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Exit Sub
    End If
    'CPの空きを確認し、設定動作数を決定する
    If empty(0) = 0 Then 'CP空きなし
        setCount = 0
    ElseIf empty(0) < remainCount Then 'CP空き < 残り動作数
        setCount = empty(0) 'CP空き分だけ設定する
    ElseIf empty(0) >= remainCount Then 'CP空き >= 残り動作数
        setCount = remainCount '残り動作数を設定する
    End If

    If setCount > 0 Then
        '動作パラメータ
        ReDim setMotion(setCount - 1)
        Array.Copy(motion, count - remainCount, setMotion, 0, setCount)

        '動作パラメータ設定
        result = PmcmSetMotionCp(id, axis, setMotion, setCount)
        If result <> PMCM_RESULT_SUCCESS Then
            MessageBox.Show("PmcmSetMotionCp ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End If
        '動作開始
        result = PmcmStartMotionCp(id, axis)
        If result <> PMCM_RESULT_SUCCESS Then
            MessageBox.Show("PmcmStartMotionCp ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End If
    End If
    '残り動作数更新
    remainCount = remainCount - setCount
Loop

動作停止

Dim result As Integer
Dim axis As Short
Dim stopMode As Short

'停止させる軸
axis = PMCM_AXIS_X

'停止モード
stopMode = PMCM_IMMEDIATE_STOP

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

クローズ

Dim result As Boolean

result = PmcmClose(id)