サンプルプログラム > Motion2 > Visual Basic(.NET2002以降)
オブジェクト
テキストボックス | Name |
ID番号 | idTextBox |
ラジオボタン | Name |
他軸の停止によるスタート | startMode0 |
内部同期信号によるスタート | startMode1 |
変数
オープン
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
Dim comp(1) As COMPPMCM
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
If startMode0.Checked = True Then
'他軸の停止によるスタート
'Y軸の停止によりX軸がスタートします
'X軸の起動条件を設定します(他軸の停止によるスタート)
result = PmcmSetSynchroConfig(id, PMCM_AXIS_X, PMCM_SYNC_START_MODE, 3)
If result <> PMCM_RESULT_SUCCESS Then
MessageBox.Show("PmcmSetSynchroConfig ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
'X軸の他軸の停止によるスタート条件を設定します(Y軸の停止確認)
result = PmcmSetSynchroConfig(id, PMCM_AXIS_X, PMCM_SYNC_START, PMCM_AXIS_Y)
If result <> PMCM_RESULT_SUCCESS Then
MessageBox.Show("PmcmSetSynchroConfig ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
ElseIf startMode1.Checked = True Then
'内部同期信号によるスタート
'X軸の出力パルスカウンタが500になったらY軸がスタートします
'Y軸の起動条件を設定(内部同期信号によるスタート)
result = PmcmSetSynchroConfig(id, PMCM_AXIS_Y, PMCM_SYNC_START_MODE, 2)
If result <> PMCM_RESULT_SUCCESS Then
MessageBox.Show("PmcmSetSynchroConfig ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
'Y軸の内部同期信号によるスタート条件の設定(X軸の内部同期信号でスタート)
result = PmcmSetSynchroConfig(id, PMCM_AXIS_Y, PMCM_SYNC_SIG_START, 0)
If result <> PMCM_RESULT_SUCCESS Then
MessageBox.Show("PmcmSetSynchroConfig ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
'X軸の内部同期信号出力タイミングの設定(出力パルスコンパレータ条件成立時)
result = PmcmSetSynchroOut(id, PMCM_AXIS_X, PMCM_SYNC_OUT_MODE, 1)
If result <> PMCM_RESULT_SUCCESS Then
MessageBox.Show("PmcmSetSynchroOut ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
'X軸のコンパレータの設定
comp(0).wConfig = 1
comp(0).lCount = 500
result = PmcmSetComparatorConfig(id, PMCM_AXIS_X, PMCM_COMP_COUNTER, comp)
If result <> PMCM_RESULT_SUCCESS Then
MessageBox.Show("PmcmSetComparatorConfig ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
End If
動作パラメータ設定
Dim result As Integer
Dim axis As Short
Dim motion(1) As MOTIONPMCM
axis = 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 '絶対座標指定
'動作パラメータ設定
result = PmcmSetMotion(id, axis, motion)
If result <> PMCM_RESULT_SUCCESS Then
MessageBox.Show("PmcmSetMotion ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
動作開始
Dim result As Integer
Dim axis As Short
If startMode0.Checked = True Then
'他軸の停止によるスタート
'X軸はY軸の停止を確認して動作しますので、Y軸を先に動作させます
'同時に動作させてしまうと、その時点でY軸がまだ動作開始前で停止中のため、X軸が動作してしまいます
'Y軸の動作開始
result = PmcmStartMotion(id, PMCM_AXIS_Y)
If result <> PMCM_RESULT_SUCCESS Then
MessageBox.Show("PmcmStartMotion ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
'X軸の動作開始
result = PmcmStartMotion(id, PMCM_AXIS_X)
If result <> PMCM_RESULT_SUCCESS Then
MessageBox.Show("PmcmStartMotion ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
ElseIf startMode1.Checked = True Then
'内部同期信号によるスタート
'動作開始
axis = PMCM_AXIS_X + PMCM_AXIS_Y
result = PmcmStartMotion(id, axis)
If result <> PMCM_RESULT_SUCCESS Then
MessageBox.Show("PmcmStartMotion ERROR : 0x" & result.ToString("X"), "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
End If
動作停止
Dim result As Integer
Dim axis As Short
Dim stopMode As Short
'停止させる軸
axis = PMCM_AXIS_X + PMCM_AXIS_Y
'停止モード
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)