例)下記の仕様に基づいて、X-YテーブルのJOG動作を行います。
・軸番号1は、正方向へ開始速度の定速移動を行います。
・軸番号2は、負方向へ加速移動を行います。
[・軸番号1と軸番号2を同期スタートする場合には「>」のコードを追加してください]
■ 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 );
>// 同期設定
>// 軸間同期設定(第2引数):3H:軸1軸2が同期対象軸
>// チップ間同期設定(第3引数):1H:同期する
>// チップ間同期設定(第3引数):0H:同期しない
>Ret = SmcWSetSync( Id , 3, 1, 0 );
// 基本動作パラメータの設定
// 目標速度の設定
// 開始速度、加速時間、減速時間、S字区間の各値はデフォルト値を使用するので設定する必要はありません。
Ret = SmcWSetTargetSpeed( Id, 1, 100);
Ret = SmcWSetTargetSpeed( Id, 2, 2500);
// 開始準備パラメータの設定
// モータ動作タイプの設定(第3引数):2:JOG動作
// モータ動作方向の設定(第4引数):0:正方向:1:負方向
Ret = SmcWSetReady( Id , 1, 2 , 0 ); // 軸番号1
ErrRet = SmcWGetErrorString( Ret, ErrorString );
printf("SmcWSetReady : %s", ErrorString );
Ret = SmcWSetReady( Id , 2, 2 , 1 ); // 軸番号2
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 );
>// 同期動作開始
>// 同期対象軸のどちらかを指定する。
>Ret = SmcWSyncMotionStart( Id , 1 );
■ 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')}")
># 同期設定
># 軸間同期設定(第2引数):3H:軸1軸2が同期対象軸
># チップ間同期設定(第3引数):1H:同期する
># チップ間同期設定(第3引数):0H:同期しない
>Ret.value = csmc.SmcWSetSync( Id , 3, 1, 0 )
# 基本動作パラメータの設定
# 目標速度の設定
# 開始速度、加速時間、減速時間、S字区間の各値はデフォルト値を使用するので設定する必要はありません。
Ret.value = csmc.SmcWSetTargetSpeed( Id, 1, 100)
Ret.value = csmc.SmcWSetTargetSpeed( Id, 2, 2500)
# 開始準備パラメータの設定
# モータ動作タイプの設定(第3引数):2:JOG動作
# モータ動作方向の設定(第4引数):0:正方向:1:負方向
Ret.value = csmc.SmcWSetReady( Id , 1, 2 , 0 ) # 軸番号1
ErrRet.value = csmc.SmcWGetErrorString( Ret, ErrorString )
print(f"SmcWSetReady : {ErrorString.value.decode('sjis')}")
Ret.value = csmc.SmcWSetReady( Id , 2, 2 , 1 ) # 軸番号2
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')}")
># 同期動作開始
># 同期対象軸のどちらかを指定する。
>Ret.value = csmc.SmcWSyncMotionStart( Id , 1 )