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

PmcmChangeSpeed

機能

動作中に速度の変更をします。

書式

INT PmcmChangeSpeed(
    WORD wID,
    WORD wAxis,
    WORD wMode,
    PFLOAT pfSpeed
);

パラメータ

wID

ボードのID番号を指定します。

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

wAxis

速度を変更する軸を指定します。複数の軸を指定することができます。

設定値 内容
PMCM_AXIS_X X軸
PMCM_AXIS_Y Y軸
言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0/VBA GCC
WORD unsigned short ushort Short Integer uint16_t

wMode

設定する項目を指定します。

設定値 内容
PMCM_CHG_IMM_LOW_SPEED 起動速度へ即変更
PMCM_CHG_IMM_SPEED 移動速度へ即変更
PMCM_CHG_DEC_LOW_SPEED 起動速度へ減速して変更
PMCM_CHG_ACC_SPEED 移動速度へ加速して変更
PMCM_CHG_NEW_SPEED 指定速度へ変更
言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0/VBA GCC
WORD unsigned short ushort Short Integer uint16_t

pfSpeed

速度を指定します。
wModeの設定値によって設定する内容が異なります。

バッファは2軸分用意してください

wModeの設定値 設定値
PMCM_CHG_IMM_LOW_SPEED
PMCM_CHG_IMM_SPEED
PMCM_CHG_DEC_LOW_SPEED
PMCM_CHG_ACC_SPEED
0を指定してください
PMCM_CHG_NEW_SPEED 速度を指定します。
SetMotionで指定した速度倍率によって設定範囲は異なります。
言語 C/C++ C++/CLI C# VB(.NET2002以降) VB6.0/VBA GCC
PFLOAT float* float Single Single float*

戻り値

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

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

備考

PMCM_CHG_NEW_SPEEDをおこなった後はPMCM_CHG_IMM_SPEEDとPMCM_CHG_ACC_SPEEDは無効となります。

複数軸同時に設定しない場合でも、速度バッファは2軸分用意し、配列の先頭アドレスを関数へ設定するようにしてください。

FLOAT fSpeed[2]; 2軸分用意
fSpeed[0] X軸の速度
fSpeed[1] Y軸の速度

使用例

IDが0のボードの、Y軸の速度を2000ppsに変更します。

C/C++

int nResult;
WORD wAxis;
FLOAT fSpeed[2];
wAxis = PMCM_AXIS_Y;
fSpeed[0] = 0;
fSpeed[1] = 2000;
nResult = PmcmChangeSpeed(0, wAxis, PMCM_CHG_NEW_SPEED, fSpeed);

C++/CLI

int result;
unsigned short axis;
float speed[2];
axis = PMCM_AXIS_Y;
speed[0] = 0;
speed[1] = 2000;
result = PmcmChangeSpeed(0, axis, PMCM_CHG_NEW_SPEED, speed);

C#

int result;
ushort axis;
float[] speed = new float[2];
axis = Pmcm.PMCM_AXIS_Y;
speed[0] = 0;
speed[1] = 2000;
result = Pmcm.ChangeSpeed(0, axis, Pmcm.PMCM_CHG_NEW_SPEED, speed);

VB(.NET2002以降)

Dim result As Integer
Dim axis As Short
Dim speed(1) As Single
axis = PMCM_AXIS_Y
speed(0) = 0
speed(1) = 2000
result = PmcmChangeSpeed(0, axis, PMCM_CHG_NEW_SPEED, speed)

VB6.0/VBA

Dim lngResult As Long
Dim intAxis As Integer
Dim sngSpeed(1) As Single
intAxis = PMCM_AXIS_Y
sngSpeed(0) = 0
sngSpeed(1) = 2000
lngResult = PmcmChangeSpeed(0, intAxis, PMCM_CHG_NEW_SPEED, sngSpeed(0))

GCC

int32_t result;
uint16_t axis;
float speed[2];
axis = PMCM_AXIS_Y;
speed[0] = 0;
speed[1] = 2000;
result = PmcmChangeSpeed(0, axis, PMCM_CHG_NEW_SPEED, speed);