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 );
 

■ Visual Basic

Dim Ret   As Integer
Dim ErrRet   As Interger
Dim Id   As Short
Dim ErrorString As StringBuilder

' 初期化処理
' すでに初期化を行っている場合は必要ありません。
Ret = SmcWInit("SMC000", Id)
ErrRet = SmcWGetErrorString( Ret, ErrorString )
Debug.Printf "SmcWInit : " & ErrorString

' 初期設定関数の内容をハードウェアに反映します。
' 軸番号1
Ret = SmcWSetInitParam( Id , 1 )
ErrRet = SmcWGetErrorString( Ret, ErrorString )
Debug.Printf "SmcWSetInitParam : " & ErrorString
' 軸番号2
Ret = SmcWSetInitParam( Id , 2 )
ErrRet = SmcWGetErrorString( Ret, ErrorString )
Debug.Printf "SmcWSetInitParam : " & ErrorString

' 基本動作パラメータの設定
' 目標速度の設定
' 開始速度、加速時間、減速時間、S字区間の各値はデフォルト値を使用するので設定する必要はありません。
Ret = SmcWSetTargetSpeed( Id, 1, 2500)
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 )
Debug.Printf "SmcWSetReady : " & ErrorString
Ret = SmcWSetReady( Id , 2, 1, 0 )
ErrRet = SmcWGetErrorString( Ret, ErrorString )
Debug.Printf "SmcWSetReady : " & ErrorString

' 動作開始
Ret = SmcWMotionStart( Id , 1 )
ErrRet = SmcWGetErrorString( Ret, ErrorString )
Debug.Printf "SmcWMotionStart : " & ErrorString
Ret = SmcWMotionStart( Id , 2 )
ErrRet = SmcWGetErrorString( Ret, ErrorString )
Debug.Printf "SmcWMotionStart : " & ErrorString
 

■ C#

int Ret;
int ErrRet;
Short Id;
string ErrorString;

// 初期化処理
// すでに初期化を行っている場合は必要ありません。
Ret = Smc.WInit("SMC000", out Id);
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("{0}: {1}", SmcWInit, ErrorString);

// 初期設定関数の内容をハードウェアに反映します。
// 軸毎に実行します。
// 軸番号1
Ret = Smc.WSetInitParam( Id , 1 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("{0}: {1}", SmcWSetInitParam, ErrorString);
// 軸番号2
Ret = Smc.WSetInitParam( Id , 2 );
ErrRet = Smc.WGetErrorString( Ret, ErrorString );
Debug.Print("{0}: {1}", SmcWSetInitParam, ErrorString);

// 基本動作パラメータの設定
// 目標速度の設定
// 開始速度、加速時間、減速時間、S字区間の各値はデフォルト値を使用するので設定する必要はありません。
Ret = Smc.WSetTargetSpeed( Id, 1, 5000 );
Ret = Smc.WSetTargetSpeed( Id, 2, 2500 );

// PTP動作なので位置を指定します。
// 停止位置の設定(第3引数):0:絶対座標
Ret = Smc.WSetStopPosition( Id , 1, 0, 50000 );
Ret = Smc.WSetStopPosition( Id , 2, 0, 25000 );

// 開始準備パラメータの設定
// モータ動作タイプの設定(第3引数):1:PTP動作
// モータ動作方向の設定(第4引数):設定無効
Ret = Smc.WSetReady( Id , 1, 1, 0 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("{0}: {1}", SmcWSetReady, ErrorString);
Ret = Smc.WSetReady( Id , 2, 1, 0 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("{0}: {1}", SmcWSetReady, ErrorString);

// 動作開始
Ret = Smc.WMotionStart( Id , 1 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("{0}: {1}", SmcWMotionStart, ErrorString);
Ret = Smc.WMotionStart( Id , 2 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("{0}: {1}", SmcWMotionStart, 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 = csmc.SmcWGetErrorString( Ret, ErrorString )
print(f"SmcWSetInitParam : {ErrorString.value.decode('sjis')}")
# 軸番号2
Ret.value = csmc.SmcWSetInitParam( Id , 2 )
ErrRet.value = csmc.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')}")