コンテンツにスキップ
関数 > モーター制御関数 >

YduPmcsSetMotion

機能

動作パラメータを設定します。

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

書式

INT YduPmcsSetMotion(
    WORD unitId,
    WORD axis,
    WORD moveMode,
    MOTIONPMCS* motion
);

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

パラメータ

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

motion

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

動作パラメータ計算方法

Note

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

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

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

移動速度(speed)以下の値を設定してください。
また「ユニットのシリアル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.1以下」の場合

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

備考

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

// 4軸の場合
MOTIONPMCS motion[4];   // 4軸分用意
motion[0]   // X0の動作パラメータ
motion[1]   // Y0の動作パラメータ
motion[2]   // Z0の動作パラメータ
motion[3]   // U0の動作パラメータ

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

使用例

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

C#

YduPmcs.MOTIONPMCS[] motion = new YduPmcs.MOTIONPMCS[4];
motion[0].wAccMode = YduPmcs.PMC_ACC_SIN;
motion[0].dwLowSpeed = 200;
motion[0].dwSpeed = 2000;
motion[0].wAccTime = 300;
motion[0].lStep = YduPmcs.PMC_DIR_CW;
motion[2].wAccMode = YduPmcs.PMC_ACC_SIN;
motion[2].dwLowSpeed = 100;
motion[2].dwSpeed = 3000;
motion[2].wAccTime = 1000;
motion[2].lStep = YduPmcs.PMC_DIR_CW;
var result = YduPmcs.SetMotion(0, YduPmcs.PMC_AXIS_X0 + YduPmcs.PMC_AXIS_Z0, YduPmcs.PMC_JOG, motion);

VB(.NET2002以降)

Dim motion(3) As MOTIONPMCS
motion(0).wAccMode = PMC_ACC_SIN
motion(0).dwLowSpeed = 200
motion(0).dwSpeed = 2000
motion(0).wAccTime = 300
motion(0).lStep = PMC_DIR_CW
motion(2).wAccMode = PMC_ACC_SIN
motion(2).dwLowSpeed = 100
motion(2).dwSpeed = 3000
motion(2).wAccTime = 1000
motion(2).lStep = PMC_DIR_CW
Dim result As Integer = YduPmcsSetMotion(0, PMC_AXIS_X0 + PMC_AXIS_Z0, PMC_JOG, motion)

VB6.0/VBA

Dim result As Long
Dim motion(3) As MOTIONPMCS
motion(0).wAccMode = PMC_ACC_SIN
motion(0).dwLowSpeed = 200
motion(0).dwSpeed = 2000
motion(0).wAccTime = 300
motion(0).lStep = PMC_DIR_CW
motion(2).wAccMode = PMC_ACC_SIN
motion(2).dwLowSpeed = 100
motion(2).dwSpeed = 3000
motion(2).wAccTime = 1000
motion(2).lStep = PMC_DIR_CW
result = YduPmcsSetMotion(0, PMC_AXIS_X0 + PMC_AXIS_Z0, PMC_JOG, motion(0))

C++/CLI

MOTIONPMCS motion[4];
motion[0].wAccMode = PMC_ACC_SIN;
motion[0].dwLowSpeed = 200;
motion[0].dwSpeed = 2000;
motion[0].wAccTime = 300;
motion[0].lStep = PMC_DIR_CW;
motion[2].wAccMode = PMC_ACC_SIN;
motion[2].dwLowSpeed = 100;
motion[2].dwSpeed = 3000;
motion[2].wAccTime = 1000;
motion[2].lStep = PMC_DIR_CW;
int result = YduPmcsSetMotion(0, PMC_AXIS_X0 + PMC_AXIS_Z0, PMC_JOG, motion);

C/C++

INT result;
MOTIONPMCS motion[4];
motion[0].wAccMode = PMC_ACC_SIN;
motion[0].dwLowSpeed = 200;
motion[0].dwSpeed = 2000;
motion[0].wAccTime = 300;
motion[0].lStep = PMC_DIR_CW;
motion[2].wAccMode = PMC_ACC_SIN;
motion[2].dwLowSpeed = 100;
motion[2].dwSpeed = 3000;
motion[2].wAccTime = 1000;
motion[2].lStep = PMC_DIR_CW;
result = YduPmcsSetMotion(0, PMC_AXIS_X0 + PMC_AXIS_Z0, PMC_JOG, motion);