サンプルプログラム > MotionCP > Visual Basic(.NET2002以降)
オブジェクト
テキストボックス | Name |
ID番号 | idTextBox |
変数
オープン
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)