関数 > モーター制御関数 >

YduPmcsSetMotionEx

機能

速度倍率を含めた動作パラメータを設定します。
動作中に速度変更をおこなう場合はYduPmcsSetMotion関数ではなく、こちらの関数を使用してください。

速度倍率については動作パラメータ計算方法を参照してください。

連続動作について
原点復帰動作について
位置決め動作について

書式

INT YduPmcsSetMotionEx(
    WORD wUnitID,
    WORD wAxis,
    WORD wMoveMode,
    PMOTIONEXPMCS pMotionEx
);

// 動作パラメータ構造体
typedef struct {
    WORD wSpeedRate;
    WORD wAccMode;
    DWORD dwLowSpeed;
    DWORD dwSpeed;
    WORD wAccTime;
    LONG lStep;
} MOTIONEXPMCS, *PMOTIONEXPMCS;

パラメータ

wUnitID

ユニットのID番号を指定します。

言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
WORD unsigned short ushort Short Integer

wAxis

動作パラメータを設定する軸を指定します。複数の軸を指定することができます。

設定値 内容
PMC_AXIS_X0 X0軸
PMC_AXIS_Y0 Y0軸
PMC_AXIS_Z0 Z0軸
PMC_AXIS_U0 U0軸
PMC_AXIS_X1 X1軸
PMC_AXIS_Y1 Y1軸
PMC_AXIS_Z1 Z1軸
PMC_AXIS_U1 U1軸
言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
WORD unsigned short ushort Short Integer

wMoveMode

パラメータを設定する動作モードを指定します。

設定値 内容
PMC_JOG 連続動作
PMC_ORG 原点復帰動作
PMC_PTP 位置決め動作
言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
WORD unsigned short ushort Short Integer

pMotionEx

動作パラメータが格納されているバッファへのポインタを指定します。

動作パラメータ計算方法

Warning

ドライバ内での計算による誤差のため、動作パラメータとして設定した値と実際に設定された値が異なる場合があります。
YduPmcsGetMotionEx関数を使用して実際に設定された値を確認することができます。

言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
PMOTIONEXPMCS MOTIONEXPMCS* MOTIONEXPMCS MOTIONEXPMCS MOTIONEXPMCS

wSpeedRate

速度倍率
設定範囲は1~50

言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
WORD unsigned short ushort Short Integer

wAccMode

加減速モード

設定値 内容
PMC_ACC_NORMAL 直線加減速
PMC_ACC_SIN S字加減速
言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
WORD unsigned short ushort Short Integer

dwLowSpeed

起動時速度
設定範囲は1~409550[PPS]

移動速度(dwSpeed)以下の値を設定してください

速度倍率によって設定できる範囲が変わります。
速度倍率による設定範囲外の値を指定した場合は設定範囲内の値に変更されます。
設定範囲については動作パラメータ計算方法を参照してください。

言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
DWORD unsigned long uint Integer Long

dwSpeed

移動速度
設定範囲は1~409550[PPS]

起動時速度(dwLowSpeed)以上の値を設定してください

速度倍率によって設定できる範囲が変わります。
速度倍率による設定範囲外の値を指定した場合は設定範囲内の値に変更されます。
設定範囲については動作パラメータ計算方法を参照してください。

言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
DWORD unsigned long uint Integer Long

wAccTime

加減速時間
設定単位はmsec

速度倍率・起動時速度・移動速度により設定範囲が変わります。
動作パラメータ計算方法を参照してください。

言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
WORD unsigned short ushort Short Integer

lStep

移動方向・移動パルス数
動作モードによって値が異なります。

動作モード 設定値
PMC_JOG
PMC_ORG
PMC_DIR_CW : +方向
PMC_DIR_CCW : -方向
PMC_PTP -16777215~+16777215
言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
LONG long int Integer Long

戻り値

関数が正常に終了した場合は0(YDU_RESULT_SUCCESS)が返ります。
正常に終了しなかった場合は0以外が返りますので、その場合はエラーコードを参照してください。

言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0
INT int int Integer Long

備考

動作パラメータを複数軸同時に設定することができます。
各軸の動作パラメータは以下のように設定されますので、動作パラメータ格納バッファ(MOTIONEXPMCS)は軸数分用意し、配列の先頭アドレスを関数へ設定するようにしてください。

  • 4軸の場合
    MOTIONEXPMCS MotionEx[4]; ←4軸分用意
    MotionEx[0]←X0の動作パラメータ
    MotionEx[1]←Y0の動作パラメータ
    MotionEx[2]←Z0の動作パラメータ
    MotionEx[3]←U0の動作パラメータ

  • 8軸の場合
    MOTIONEXPMCS MotionEx[8]; ←8軸分用意
    MotionEx[0]←X0の動作パラメータ
    MotionEx[1]←Y0の動作パラメータ
    MotionEx[2]←Z0の動作パラメータ
    MotionEx[3]←U0の動作パラメータ
    MotionEx[4]←X1の動作パラメータ
    MotionEx[5]←Y1の動作パラメータ
    MotionEx[6]←Z1の動作パラメータ
    MotionEx[7]←U1の動作パラメータ

使用例

ユニットIDが0のユニットへ、X0軸とZ0軸の動作パラメータを設定します。

C/C++

int nResult;
WORD wAxis;
MOTIONEXPMCS MotionEx[4];
wAxis = PMC_AXIS_X0 + PMC_AXIS_Z0;
MotionEx[0].wSpeedRate = 1;
MotionEx[0].wAccMode = PMC_ACC_SIN;
MotionEx[0].dwLowSpeed = 200;
MotionEx[0].dwSpeed = 2000;
MotionEx[0].wAccTime = 300;
MotionEx[0].lStep = PMC_DIR_CW;
MotionEx[2].wSpeedRate = 1;
MotionEx[2].wAccMode = PMC_ACC_SIN;
MotionEx[2].dwLowSpeed = 100;
MotionEx[2].dwSpeed = 3000;
MotionEx[2].wAccTime = 1000;
MotionEx[2].lStep = PMC_DIR_CW;
nResult = YduPmcsSetMotionEx(0, wAxis, PMC_JOG, MotionEx);

C++/CLI

int result;
unsigned short axis;
MOTIONEXPMCS motionEx[4];
axis = PMC_AXIS_X0 + PMC_AXIS_Z0;
motionEx[0].wSpeedRate = 1;
motionEx[0].wAccMode = PMC_ACC_SIN;
motionEx[0].dwLowSpeed = 200;
motionEx[0].dwSpeed = 2000;
motionEx[0].wAccTime = 300;
motionEx[0].lStep = PMC_DIR_CW;
motionEx[2].wSpeedRate = 1;
motionEx[2].wAccMode = PMC_ACC_SIN;
motionEx[2].dwLowSpeed = 100;
motionEx[2].dwSpeed = 3000;
motionEx[2].wAccTime = 1000;
motionEx[2].lStep = PMC_DIR_CW;
result = YduPmcsSetMotionEx(0, axis, PMC_JOG, motionEx);

C#

int result;
ushort axis;
YduPmcs.MOTIONEXPMCS[] motionEx = new YduPmcs.MOTIONEXPMCS[4];
axis = YduPmcs.PMC_AXIS_X0 + YduPmcs.PMC_AXIS_Z0;
motionEx[0].wSpeedRate = 1;
motionEx[0].wAccMode = YduPmcs.PMC_ACC_SIN;
motionEx[0].dwLowSpeed = 200;
motionEx[0].dwSpeed = 2000;
motionEx[0].wAccTime = 300;
motionEx[0].lStep = YduPmcs.PMC_DIR_CW;
motionEx[2].wSpeedRate = 1;
motionEx[2].wAccMode = YduPmcs.PMC_ACC_SIN;
motionEx[2].dwLowSpeed = 100;
motionEx[2].dwSpeed = 3000;
motionEx[2].wAccTime = 1000;
motionEx[2].lStep = YduPmcs.PMC_DIR_CW;
result = YduPmcs.SetMotionEx(0, axis, YduPmcs.PMC_JOG, motionEx);

VB(.NET2002以降)

Dim result As Integer
Dim axis As Short
Dim motionEx(3) As MOTIONEXPMCS
axis = PMC_AXIS_X0 + PMC_AXIS_Z0
motionEx(0).wSpeedRate = 1
motionEx(0).wAccMode = PMC_ACC_SIN
motionEx(0).dwLowSpeed = 200
motionEx(0).dwSpeed = 2000
motionEx(0).wAccTime = 300
motionEx(0).lStep = PMC_DIR_CW
motionEx(2).wSpeedRate = 1
motionEx(2).wAccMode = PMC_ACC_SIN
motionEx(2).dwLowSpeed = 100
motionEx(2).dwSpeed = 3000
motionEx(2).wAccTime = 1000
motionEx(2).lStep = PMC_DIR_CW
result = YduPmcsSetMotionEx(0, axis, PMC_JOG, motionEx)

VB6.0

Dim lngResult As Long
Dim intAxis As Integer
Dim MotionEx(3) As MOTIONEXPMCS
intAxis = PMC_AXIS_X0 + PMC_AXIS_Z0
MotionEx(0).wSpeedRate = 1
MotionEx(0).wAccMode = PMC_ACC_SIN
MotionEx(0).dwLowSpeed = 200
MotionEx(0).dwSpeed = 2000
MotionEx(0).wAccTime = 300
MotionEx(0).lStep = PMC_DIR_CW
MotionEx(2).wSpeedRate = 1
MotionEx(2).wAccMode = PMC_ACC_SIN
MotionEx(2).dwLowSpeed = 100
MotionEx(2).dwSpeed = 3000
MotionEx(2).wAccTime = 1000
MotionEx(2).lStep = PMC_DIR_CW
lngResult = YduPmcsSetMotionEx(0, wAxis, PMC_JOG, MotionEx(0))