モーター制御(PMC-S) サンプルコード
// 使用する名前空間の宣言
using Y2.UsbIO.Pmcs;
using Y2.UsbIO.UsbPc104.Pmc;
// デバイスのインスタンスを生成(PMC-S4/16/32A-Uを使用する場合)
var device = new PmcS41632aU();
// デバイスに接続
device.Connect(); // 識別スイッチ位置を0で使用する場合
//device.Connect(DeviceSwitch.PositionA); // 識別スイッチ位置をAで使用する場合
// オンで検知するセンサを接続している場合や、リミットスイッチを接続していない場合はモーターが動作しません。
// その場合は以下のようにセンサ設定を"オンで検知"に変更してください
device.Pmc.SetSensorLogic(Axes.XYZU0, SensorLogic.OrgSdElIsPositive);
// 動作設定(連続動作の設定例)
// 軸 = X0軸
// 加減速モード = 直線加減速
// 起動時速度 = 200PPS
// 移動速度 = 2000PPS
// 加減速時間 = 300msec
// 移動方向 = 正方向
var parameter = new ContinuousSetting(Axis.X0, AccelerationMode.Linear, 200, 2000, 300, Direction.CW);
device.Pmc.SetOperationSettings(parameter);
// モーター動作を開始(加減速ありで連続動作させる例)
device.Pmc.Start(Axis.X0, OperationMode.Continuous, SpeedPattern.AccelerationDeceleration);
// モーター動作を停止(即停止させる例)
device.Pmc.Stop(Axis.X0, StopMode.Immediately);
// デバイスのインスタンスを破棄(usingを使用しても可)
device.Dispose();
複数軸を動作させる場合
// デバイスのインスタンスを生成(PMC-S4/16/32A-Uを識別スイッチ設定0で使用する場合)
var device = new PmcS41632aU();
// デバイスに接続
device.Connect(); // 識別スイッチ位置を0で使用する場合
//device.Connect(DeviceSwitch.PositionA); // 識別スイッチ位置をAで使用する場合
// オンで検知するセンサを接続している場合や、リミットスイッチを接続していない場合はモーターが動作しません。
// その場合は以下のようにセンサ設定を"オンで検知"に変更してください
device.Pmc.SetSensorLogic(Axes.XYZU0, SensorLogic.OrgSdElIsPositive);
// 動作設定(原点復帰動作の設定例)
var parameters = new OriginReturnSetting[]
{
new OriginReturnSetting(Axis.X0, AccelerationMode.Linear, 200, 2000, 300, Direction.CW),
new OriginReturnSetting(Axis.Y0, AccelerationMode.SCurve, 100, 1000, 200, Direction.CCW),
new OriginReturnSetting(Axis.U0, AccelerationMode.Linear, 50, 500, 100, Direction.CW)
};
device.Pmc.SetOperationSettings(parameters);
var axes = Axes.XY0.Union(Axis.U0);
// モーター動作を開始(加減速ありで原点復帰動作させる例)
device.Pmc.Start(axes, OperationMode.OriginReturn, SpeedPattern.AccelerationDeceleration);
// モーター動作を停止(即停止させる例)
device.Pmc.Stop(axes, StopMode.Immediately);
// デバイスのインスタンスを破棄(usingを使用しても可)
device.Dispose();