PTP Operation

Example) Perform PTP operation of the X-Y table based on the specifications below.

・Axis number 1 moves to position 50000 with a target speed of 5000.
・Axis number 2 moves to position 25000 with a target speed of 2500.

■ C

long Ret;
long ErrRet;
Short Id;
char ErrorString[256];

// Initialization process
// Not required if initialization has already been performed.
Ret = SmcWInit("SMC000", &Id);
ErrRet = SmcWGetErrorString( Ret, ErrorString );
printf("SmcWInit : %s", ErrorString );

// Reflects the contents of the initial setting function to the hardware.
// Execute for each axis.
// Axis number 1
Ret = SmcWSetInitParam( Id , 1 );
ErrRet = SmcWGetErrorString( Ret, ErrorString );
printf("SmcWSetInitParam : %s", ErrorString );
// Axis number 2
Ret = SmcWSetInitParam( Id , 2 );
ErrRet = SmcWGetErrorString( Ret, ErrorString );
printf("SmcWSetInitParam : %s", ErrorString );

// Setting basic operating parameters
// Setting the target speed
// Default values are used for starting speed, acceleration time, deceleration time, and S-curve section, so no need to set them.
Ret = SmcWSetTargetSpeed( Id, 1, 5000 );
Ret = SmcWSetTargetSpeed( Id, 2, 2500 );

// Specify the position because it is a PTP operation.
// Setting stop position (3rd argument): 0: absolute coordinates
Ret = SmcWSetStopPosition( Id , 1, 0, 50000 );
Ret = SmcWSetStopPosition( Id , 2, 0, 25000 );

// Setting start preparation parameters
// Setting motor operation type (3rd argument): 1: PTP operation
// Setting motor operation direction (4th argument): Setting invalid
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 );

// Starting operation
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

' Initialization process
' Not required if initialization has already been performed.
Ret = SmcWInit("SMC000", Id)
ErrRet = SmcWGetErrorString( Ret, ErrorString )
Debug.Printf "SmcWInit : " & ErrorString

' Reflects the contents of the initial setting function to the hardware.
' Axis number 1
Ret = SmcWSetInitParam( Id , 1 )
ErrRet = SmcWGetErrorString( Ret, ErrorString )
Debug.Printf "SmcWSetInitParam : " & ErrorString
' Axis number 2
Ret = SmcWSetInitParam( Id , 2 )
ErrRet = SmcWGetErrorString( Ret, ErrorString )
Debug.Printf "SmcWSetInitParam : " & ErrorString

' Setting basic operating parameters
' Setting the target speed
' Default values are used for starting speed, acceleration time, deceleration time, and S-curve section, so no need to set them.
Ret = SmcWSetTargetSpeed( Id, 1, 2500)
Ret = SmcWSetTargetSpeed( Id, 2, 2500)

' Specify the position because it is a PTP operation.
' Setting stop position (3rd argument): 0: absolute coordinates
Ret = SmcWSetStopPosition( Id , 1, 0, 50000 )
Ret = SmcWSetStopPosition( Id , 2, 0, 25000 )

' Setting start preparation parameters
' Setting motor operation type (3rd argument): 1: PTP operation
' Setting motor operation direction (4th argument): Setting invalid
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

' Starting operation
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;

// Initialization process
// Not required if initialization has already been performed.
Ret = Smc.WInit("SMC000", out Id);
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("SmcWInit: {0}", ErrorString);

// Reflects the contents of the initial setting function to the hardware.
// Execute for each axis.
// Axis number 1
Ret = Smc.WSetInitParam( Id , 1 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("SmcWSetInitParam : {0}", ErrorString );
// Axis number 2
Ret = Smc.WSetInitParam( Id , 2 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("SmcWSetInitParam : {0}", ErrorString );

// Setting basic operating parameters
// Setting the target speed
// Default values are used for starting speed, acceleration time, deceleration time, and S-curve section, so no need to set them.
Ret = Smc.WSetTargetSpeed( Id, 1, 5000 );
Ret = Smc.WSetTargetSpeed( Id, 2, 2500 );

// Specify the position because it is a PTP operation.
// Setting stop position (3rd argument): 0: absolute coordinates
Ret = Smc.WSetStopPosition( Id , 1, 0, 50000 );
Ret = Smc.WSetStopPosition( Id , 2, 0, 25000 );

// Setting start preparation parameters
// Setting motor operation type (3rd argument): 1: PTP operation
// Setting motor operation direction (4th argument): Setting invalid
Ret = Smc.WSetReady( Id , 1, 1, 0 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("SmcWSetReady : {0}", ErrorString );
Ret = Smc.WSetReady( Id , 2, 1, 0 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("SmcWSetReady : {0}", ErrorString );

// Starting operation
Ret = Smc.WMotionStart( Id , 1 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("SmcWMotionStart : {0}", ErrorString );
Ret = Smc.WMotionStart( Id , 2 );
ErrRet = Smc.WGetErrorString( Ret, out ErrorString );
Debug.Print("SmcWMotionStart : {0}", ErrorString );
 

■ Python

Ret = ctypes.c_long()
ErrRet = ctypes.c_long()
Id = ctypes.c_short()
ErrorString = ctypes.create_string_buffer(256)

# Initialization process
# Not required if initialization has already been performed.
Ret.value = csmc.SmcWInit("SMC000", ctypes.byref(Id))
ErrRet.value = csmc.SmcWGetErrorString( Ret, ErrorString )
print(f"SmcWInit : {ErrorString.value.decode('sjis')}")

# Reflects the contents of the initial setting function to the hardware.
# Execute for each axis.
# Axis number 1
Ret.value = csmc.SmcWSetInitParam( Id , 1 )
ErrRet.value = csmc.SmcWGetErrorString( Ret, ErrorString )
print(f"SmcWSetInitParam : {ErrorString.value.decode('sjis')}")
# Axis number 2
Ret.value = csmc.SmcWSetInitParam( Id , 2 )
ErrRet.value = csmc.SmcWGetErrorString( Ret, ErrorString )
print(f"SmcWSetInitParam : {ErrorString.value.decode('sjis')}")

# Setting basic operating parameters
# Setting the target speed
# Default values are used for starting speed, acceleration time, deceleration time, and S-curve section, so no need to set them.
Ret.value = csmc.SmcWSetTargetSpeed( Id, 1, 5000 )
Ret.value = csmc.SmcWSetTargetSpeed( Id, 2, 2500 )

# Specify the position because it is a PTP operation.
# Setting stop position (3rd argument): 0: absolute coordinates
Ret.value = csmc.SmcWSetStopPosition( Id , 1, 0, 50000 )
Ret.value = csmc.SmcWSetStopPosition( Id , 2, 0, 25000 )

# Setting start preparation parameters
# Setting motor operation type (3rd argument): 1: PTP operation
# Setting motor operation direction (4th argument): Setting invalid
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')}")

# Starting operation
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')}")