YduPmcsSetMotionEx¶
機能¶
速度倍率を含めた動作パラメータを設定します。
動作中に速度変更をおこなう場合はYduPmcsSetMotion関数ではなく、こちらの関数を使用してください。
Note
速度倍率については、動作パラメータ計算方法を参照してください。
連続動作について
原点復帰動作について
位置決め動作について
書式¶
INT YduPmcsSetMotionEx(
WORD unitId,
WORD axis,
WORD moveMode,
MOTIONEXPMCS* motionEx
);
// 動作パラメータ構造体
typedef struct {
WORD wSpeedRate;
WORD wAccMode;
DWORD dwLowSpeed;
DWORD dwSpeed;
WORD wAccTime;
LONG lStep;
} MOTIONEXPMCS, *PMOTIONEXPMCS;
パラメータ¶
unitId¶
ユニットのID番号を指定します。
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | ushort | Short | Integer | unsigned short | WORD |
axis¶
動作パラメータを設定する軸を指定します。
複数の軸を指定することができます。
定義 | 値 | 軸 |
---|---|---|
PMC_AXIS_X0 | 0x01 | X0軸 |
PMC_AXIS_Y0 | 0x02 | Y0軸 |
PMC_AXIS_Z0 | 0x04 | Z0軸 |
PMC_AXIS_U0 | 0x08 | U0軸 |
PMC_AXIS_X1 | 0x10 | X1軸 |
PMC_AXIS_Y1 | 0x20 | Y1軸 |
PMC_AXIS_Z1 | 0x40 | Z1軸 |
PMC_AXIS_U1 | 0x80 | U1軸 |
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | ushort | Short | Integer | unsigned short | WORD |
moveMode¶
パラメータを設定する動作モードを指定します。
定義 | 値 | 動作モード |
---|---|---|
PMC_JOG | 0 | 連続動作 |
PMC_ORG | 1 | 原点復帰動作 |
PMC_PTP | 2 | 位置決め動作 |
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | ushort | Short | Integer | unsigned short | WORD |
motionEx¶
動作パラメータが格納されているバッファへのポインタを指定します。
Note
ドライバ内での計算による誤差のため、動作パラメータとして設定した値と実際に設定された値が異なる場合があります。
YduPmcsGetMotionEx関数を使用して実際に設定された値を確認することができます。
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | MOTIONEXPMCS | MOTIONEXPMCS | MOTIONEXPMCS | MOTIONEXPMCS* | MOTIONEXPMCS* |
wSpeedRate¶
速度倍率
設定範囲 | ユニット および ドライバ |
---|---|
1 ~ 300 | 「ユニットのシリアルNo.が300000以上」 かつ 「ドライバがVer.3.10.0以上」の場合 |
1 ~ 50 | 「ユニットのシリアルNo.が299999以下」 または 「ドライバがVer.3.01以下」の場合 |
Note
「ユニットのシリアルNo.」と「ドライバのバージョン」によって設定範囲が異なります。
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | ushort | Short | Integer | unsigned short | WORD |
wAccMode¶
加減速モード
定義 | 値 | 加減速モード |
---|---|---|
PMC_ACC_NORMAL | 0 | 直線加減速 |
PMC_ACC_SIN | 1 | S字加減速 |
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | ushort | Short | Integer | unsigned short | WORD |
dwLowSpeed¶
起動時速度 [PPS]
設定範囲 | ユニット および ドライバ |
---|---|
1 ~ 2457300 | 「ユニットのシリアルNo.が300000以上」 かつ 「ドライバがVer.3.10.0以上」の場合 |
1 ~ 409550 | 「ユニットのシリアルNo.が299999以下」 または 「ドライバがVer.3.01以下」の場合 |
Note
移動速度(dwSpeed)以下の値を設定してください。
また「ユニットのシリアルNo.」と「ドライバのバージョン」によって設定範囲が異なります。
速度倍率によって設定できる範囲が変わります。
速度倍率による設定範囲外の値を指定した場合は設定範囲内の値に変更されます。
(設定範囲については動作パラメータ計算方法を参照してください)
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | uint | Integer | Long | unsigned long | DWORD |
dwSpeed¶
移動速度 [PPS]
設定範囲 | ユニット および ドライバ |
---|---|
1 ~ 2457300 | 「ユニットのシリアルNo.が300000以上」 かつ 「ドライバがVer.3.10.0以上」の場合 |
1 ~ 409550 | 「ユニットのシリアルNo.が299999以下」 または 「ドライバがVer.3.01以下」の場合 |
Note
起動時速度(dwLowSpeed)以上の値を設定してください。
また「ユニットのシリアルNo.」と「ドライバのバージョン」によって設定範囲が異なります。
速度倍率によって設定できる範囲が変わります。
速度倍率による設定範囲外の値を指定した場合は設定範囲内の値に変更されます。
設定範囲については動作パラメータ計算方法を参照してください。
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | uint | Integer | Long | unsigned long | DWORD |
wAccTime¶
加減速時間
設定単位はmsec
速度倍率・起動時速度・移動速度により設定範囲が変わります。
動作パラメータ計算方法を参照してください。
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | ushort | Short | Integer | unsigned short | WORD |
lStep¶
移動方向・移動パルス数
動作モードによって値が異なります。
動作モードが「連続動作(PMC_JOG)」または「原点復帰動作(PMC_ORG)」の場合
定義 | 値 | 移動方向 |
---|---|---|
PMC_DIR_CW | 1 | +方向 |
PMC_DIR_CCW | -1 | -方向 |
動作モードが「位置決め動作(PMC_PTP)」の場合
値(設定範囲) | 設定内容 |
---|---|
-16777215 ~ +16777215 | 移動パルス数 |
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | int | Integer | Long | long | LONG |
戻り値¶
関数が正常に終了した場合は0(YDU_RESULT_SUCCESS)が返ります。
正常に終了しなかった場合は0以外が返りますので、その場合はエラーコードを参照してください。
言語 | C# | VB(.NET2002以降) | VB6.0/VBA | C++/CLI | C/C++ |
---|---|---|---|---|---|
型 | int | Integer | Long | int | INT |
備考¶
動作パラメータを複数軸同時に設定することができます。
各軸の動作パラメータは以下のように設定されますので、動作パラメータ格納バッファ(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#¶
YduPmcs.MOTIONEXPMCS[] motionEx = new YduPmcs.MOTIONEXPMCS[4];
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;
var result = YduPmcs.SetMotionEx(0, YduPmcs.PMC_AXIS_X0 + YduPmcs.PMC_AXIS_Z0, YduPmcs.PMC_JOG, motionEx);
VB(.NET2002以降)¶
Dim motionEx(3) As MOTIONEXPMCS
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
Dim result As Integer = YduPmcsSetMotionEx(0, PMC_AXIS_X0 + PMC_AXIS_Z0, PMC_JOG, motionEx)
VB6.0/VBA¶
Dim result As Long
Dim motionEx(3) As MOTIONEXPMCS
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, PMC_AXIS_X0 + PMC_AXIS_Z0, PMC_JOG, motionEx(0))
C++/CLI¶
MOTIONEXPMCS motionEx[4];
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;
int result = YduPmcsSetMotionEx(0, PMC_AXIS_X0 + PMC_AXIS_Z0, PMC_JOG, motionEx);
C/C++¶
INT result;
MOTIONEXPMCS motionEx[4];
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, PMC_AXIS_X0 + PMC_AXIS_Z0, PMC_JOG, motionEx);