PTP動作

例)下記の仕様に基づいて、X-YテーブルのPTP動作を行います。

 

・軸番号1は、目標速度5000で、位置50000への移動を行います。

・軸番号2は、目標速度2500で、位置25000への移動を行います。

■ C言語

long Ret;

long ErrRet;

Short Id;

char ErrorString[256];

 

// 初期化処理

// すでに初期化を行っている場合は必要ありません。

Ret = SmcWInit("SMC000", &Id);

ErrRet = SmcWGetErrorString( Ret, ErrorString );

printf("SmcWInit : %s", ErrorString );

 

// 初期設定関数の内容をハードウェアに反映します。

// 軸毎に実行します。

// 軸番号1

Ret = SmcWSetInitParam( Id , 1 );

ErrRet = SmcWGetErrorString( Ret, ErrorString );

printf("SmcWSetInitParam : %s", ErrorString );

// 軸番号2

Ret = SmcWSetInitParam( Id , 2 );

ErrRet = SmcWGetErrorString( Ret, ErrorString );

printf("SmcWSetInitParam : %s", ErrorString );

 

// 基本動作パラメータの設定

// 目標速度の設定

// 開始速度、加速時間、減速時間、S字区間の各値はデフォルト値を使用するので設定する必要はありません。

Ret = SmcWSetTargetSpeed( Id, 1, 5000 );

Ret = SmcWSetTargetSpeed( Id, 2, 2500 );

 

// PTP動作なので位置を指定します。

// 停止位置の設定(第3引数):0:絶対座標

Ret = SmcWSetStopPosition( Id , 1, 0, 50000 );

Ret = SmcWSetStopPosition( Id , 2, 0, 25000 );

 

// 開始準備パラメータの設定

// モータ動作タイプの設定(第3引数):1:PTP動作

// モータ動作方向の設定(第4引数):設定無効

Ret = SmcWSetReady( Id , 1, 1, 0 );

ErrRet = SmcWGetErrorString( Ret, ErrorString );

printf("SmcWSetReady : %s", ErrorString );

Ret = SmcWSetReady( Id , 2, 1, 0 );

ErrRet = SmcWGetErrorString( Ret, ErrorString );

printf("SmcWSetReady : %s", ErrorString );

 

// 動作開始

Ret = SmcWMotionStart( Id , 1 );

ErrRet = SmcWGetErrorString( Ret, ErrorString );

printf("SmcWMotionStart : %s", ErrorString );

Ret = SmcWMotionStart( Id , 2 );

ErrRet = SmcWGetErrorString( Ret, ErrorString );

printf("SmcWMotionStart : %s", ErrorString );

 

■ Python

Ret = ctypes.c_long()

ErrRet = ctypes.c_long()

Id = ctypes.c_short()

ErrorString = ctypes.create_string_buffer(256)

 

# 初期化処理

# すでに初期化を行っている場合は必要ありません。

Ret.value = csmc.SmcWInit("SMC000", ctypes.byref(Id))

ErrRet.value = csmc.SmcWGetErrorString( Ret, ErrorString )

print(f"SmcWInit : {ErrorString.value.decode('sjis')}")

 

# 初期設定関数の内容をハードウェアに反映します。

# 軸毎に実行します。

# 軸番号1

Ret.value = csmc.SmcWSetInitParam( Id , 1 )

ErrRet.value = SmcWGetErrorString( Ret, ErrorString )

print(f"SmcWSetInitParam : {ErrorString.value.decode('sjis')}")

# 軸番号2

Ret.value = csmc.SmcWSetInitParam( Id , 2 )

ErrRet.value = SmcWGetErrorString( Ret, ErrorString )

print(f"SmcWSetInitParam : {ErrorString.value.decode('sjis')}")

 

# 基本動作パラメータの設定

# 目標速度の設定

# 開始速度、加速時間、減速時間、S字区間の各値はデフォルト値を使用するので設定する必要はありません。

Ret.value = csmc.SmcWSetTargetSpeed( Id, 1, 5000 )

Ret.value = csmc.SmcWSetTargetSpeed( Id, 2, 2500 )

 

# PTP動作なので位置を指定します。

# 停止位置の設定(第3引数):0:絶対座標

Ret.value = csmc.SmcWSetStopPosition( Id , 1, 0, 50000 )

Ret.value = csmc.SmcWSetStopPosition( Id , 2, 0, 25000 )

 

# 開始準備パラメータの設定

# モータ動作タイプの設定(第3引数):1:PTP動作

# モータ動作方向の設定(第4引数):設定無効

Ret.value = csmc.SmcWSetReady( Id , 1, 1, 0 )

ErrRet.value = csmc.SmcWGetErrorString( Ret, ErrorString )

print(f"SmcWSetReady : {ErrorString.value.decode('sjis')}")

Ret.value = csmc.SmcWSetReady( Id , 2, 1, 0 )

ErrRet.value = csmc.SmcWGetErrorString( Ret, ErrorString )

print(f"SmcWSetReady : {ErrorString.value.decode('sjis')}")

 

# 動作開始

Ret.value = csmc.SmcWMotionStart( Id , 1 )

ErrRet.value = csmc.SmcWGetErrorString( Ret, ErrorString )

print(f"SmcWMotionStart : {ErrorString.value.decode('sjis')}")

Ret.value = csmc.SmcWMotionStart( Id , 2 )

ErrRet.value = csmc.SmcWGetErrorString( Ret, ErrorString )

print(f"SmcWMotionStart : {ErrorString.value.decode('sjis')}")