サンプルプログラム > Event >

Visual C#

オブジェクト

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

変数

ushort id;
ManualResetEvent eventHandle;

オープン

int result;

id = Convert.ToUInt16(Id.Text);
result = Pmcm.Open( id, "PMC-M2C-U" );
if( result == Pmcm.PMCM_RESULT_SUCCESS )
{
    MessageBox.Show( "オープン成功", "", MessageBoxButtons.OK, MessageBoxIcon.Information );
}
else
{
    MessageBox.Show( "オープン失敗", "", MessageBoxButtons.OK, MessageBoxIcon.Stop );
}

各種設定

int result;
ushort axis;
string outputString;

axis = Pmcm.PMCM_AXIS_X + Pmcm.PMCM_AXIS_Y;

// センサ設定
// オンで検知するセンサを接続している場合や、リミットスイッチを接続していない場合はモーターが動作しません
// その場合は以下の関数を実行してセンサ設定を"オンで検知"に変更してください
//result = Pmcm.SetSensorConfig( id, axis, Pmcm.PMCM_LOGIC, 0x3F );
//if( result != Pmcm.PMCM_RESULT_SUCCESS )
//{
//    outputString = String.Format( "PmcmSetSensorConfig ERROR : 0x{0:X}", result );
//    MessageBox.Show( outputString, "", MessageBoxButtons.OK, MessageBoxIcon.Stop );
//    return;
//}

// パルス出力モード設定
// 使用しているドライバに合致したパルス出力モードを選択してください
result = Pmcm.SetPulseConfig( id, axis, Pmcm.PMCM_PULSE_OUT, 7 );
if( result != Pmcm.PMCM_RESULT_SUCCESS )
{
    outputString = String.Format( "PmcmSetPulseConfig ERROR : 0x{0:X}", result );
    MessageBox.Show( outputString, "", MessageBoxButtons.OK, MessageBoxIcon.Stop );
    return;
}

// イベントマスク設定
// 自動停止時のイベント発生を許可に設定します
result = Pmcm.SetEventMask( id, axis, Pmcm.PMCM_EVENT_STOP, 0x01 );
if( result != Pmcm.PMCM_RESULT_SUCCESS )
{
    outputString = String.Format( "PmcmSetEventMask ERROR : 0x{0:X}", result );
    MessageBox.Show( outputString, "", MessageBoxButtons.OK, MessageBoxIcon.Stop );
    return;
}

// イベントオブジェクト作成
eventHandle = new ManualResetEvent(false);

// イベント設定
result = Pmcm.SetEvent( id, eventHandle.Handle );
if( result != Pmcm.PMCM_RESULT_SUCCESS )
{
    outputString = String.Format( "PmcmSetEvent ERROR : 0x{0:X}", result );
    MessageBox.Show( outputString, "", MessageBoxButtons.OK, MessageBoxIcon.Stop );
    return;
}

動作パラメータ設定

int result;
ushort axis;
Pmcm.MOTIONPMCM[] motion = new Pmcm.MOTIONPMCM[2];
string outputString;

axis = Pmcm.PMCM_AXIS_X;

// X軸
motion[0].wMoveMode = Pmcm.PMCM_PTP; // 動作モード
motion[0].wStartMode = Pmcm.PMCM_CONST; // 起動モード
motion[0].fSpeedRate = 1; // 速度倍率
motion[0].wAccDecMode = Pmcm.PMCM_ACC_LINEAR; // 加減速モード
motion[0].fLowSpeed = 1000; // 起動時速度
motion[0].fSpeed = 1000; // 移動速度
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 = 10000; // 移動パルス数,移動方向
motion[0].bAbsolutePtp = 0; // 絶対座標指定
// 動作パラメータ設定
result = Pmcm.SetMotion( id, axis, motion );
if( result != Pmcm.PMCM_RESULT_SUCCESS )
{
    outputString = String.Format( "PmcmSetMotion ERROR : 0x{0:X}", result );
    MessageBox.Show( outputString, "", MessageBoxButtons.OK, MessageBoxIcon.Stop );
    return;
}

動作開始

int result;
ushort axis;
string outputString;

// 動作させる軸
axis = Pmcm.PMCM_AXIS_X;

// 動作開始
result = Pmcm.StartMotion( id, axis );
if( result != Pmcm.PMCM_RESULT_SUCCESS )
{
    outputString = String.Format( "PmcmStartMotion ERROR : 0x{0:X}", result );
    MessageBox.Show( outputString, "", MessageBoxButtons.OK, MessageBoxIcon.Stop );
    return;
}

イベント待ち

int result;
Pmcm.EVENTFACTORPMCM eventFactor = new Pmcm.EVENTFACTORPMCM();
eventFactor.Initialize();
string outputString;

// イベント発生待ち
eventHandle.WaitOne();

// イベントクリア
eventHandle.Reset();

// イベント要因取得
result = Pmcm.GetEventFactor( id, out eventFactor );
if( result != Pmcm.PMCM_RESULT_SUCCESS )
{
    outputString = String.Format( "PmcmGetEventFactor ERROR : 0x{0:X}", result );
    MessageBox.Show( outputString, "", MessageBoxButtons.OK, MessageBoxIcon.Stop );
    return;
}
if( eventFactor.nResult != 0 )
{
    MessageBox.Show( "イベント失敗", "", MessageBoxButtons.OK, MessageBoxIcon.Stop );
    return;
}
outputString = String.Format( "停止イベント要因 : H'{0:X}\n状態イベント要因 : H'{1:X}", eventFactor.wStop[0], eventFactor.wState[0] );
MessageBox.Show( outputString, "", MessageBoxButtons.OK, MessageBoxIcon.Information );

クローズ

bool result;

eventHandle.Close();

result = Pmcm.Close( id );