.

Motion.SCurve

Initiates a point-to-point motion using an "S" shaped velocity profile similar to that shown below. This move type generates a motion that takes the same time as the trapezoidal move but allows the acceleration to have smoother transitions. This comes at the expense of requiring a larger peak accelerations and decelerations. The total move time is always the same as the equivalent trapezoidal move.

See the section on synchronized motion for when either the SyncStart or SyncEnd attributes are specified.

Version History

Introduced in MPX 2.0.

Result

Void

Arguments

Overload 1

 
Argument Type Description
position
Double
 
speed
Double
 
accel
Double
 
decel
Double
 
jerkPct
Double
 
attributes
Mpx.MoveAttribute
 

Overload 2

 
Argument Type Description
position
Double
 
speed
Double
 
accel
Double
 
decel
Double
 
attributes
Mpx.MoveAttribute
 

Overload 3

 
Argument Type Description
position
Double
 
speed
Double
 
accel
Double
 
attributes
Mpx.MoveAttribute
 

Overload 4

 
Argument Type Description
position
Double
 
speed
Double
 
attributes
Mpx.MoveAttribute
 

Overload 5

 
Argument Type Description
position
Double
 
attributes
Mpx.MoveAttribute
 

Overload 6

 
Argument Type Description
position
Double
 
speed
Double
 
accel
Double
 
decel
Double
 
jerkPct
Double
 

Overload 7

 
Argument Type Description
position
Double
 
speed
Double
 
accel
Double
 
decel
Double
 

Overload 8

 
Argument Type Description
position
Double
 
speed
Double
 
accel
Double
 

Overload 9

 
Argument Type Description
position
Double
 
speed
Double
 

Overload 10

 
Argument Type Description
position
Double
 

Overload 11

 
Argument Type Description
position
Array of Double
 
speed
Array of Double
 
accel
Array of Double
 
decel
Array of Double
 
jerkPct
Array of Double
 
attributes
Mpx.MoveAttribute
 

Overload 12

 
Argument Type Description
position
Array of Double
 
speed
Array of Double
 
accel
Array of Double
 
decel
Array of Double
 
attributes
Mpx.MoveAttribute
 

Overload 13

 
Argument Type Description
position
Array of Double
 
speed
Array of Double
 
accel
Array of Double
 
attributes
Mpx.MoveAttribute
 

Overload 14

 
Argument Type Description
position
Array of Double
 
speed
Array of Double
 
attributes
Mpx.MoveAttribute
 

Overload 15

 
Argument Type Description
position
Array of Double
 
attributes
Mpx.MoveAttribute
 

Overload 16

 
Argument Type Description
position
Array of Double
 
speed
Array of Double
 
accel
Array of Double
 
decel
Array of Double
 
jerkPct
Array of Double
 

Overload 17

 
Argument Type Description
position
Array of Double
 
speed
Array of Double
 
accel
Array of Double
 
decel
Array of Double
 

Overload 18

 
Argument Type Description
position
Array of Double
 
speed
Array of Double
 
accel
Array of Double
 

Overload 19

 
Argument Type Description
position
Array of Double
 
speed
Array of Double
 

Overload 20

 
Argument Type Description
position
Array of Double
 

Common Exceptions

 
Error Occurs when...
Argument An invalid argument is specified.

 

Visual Basic

Syntax

Sub SCurve(position As Double, speed As Double, accel As Double, decel As Double, jerkPct As Double, attributes As Mpx.MoveAttribute)

Sub SCurve(position As Double, speed As Double, accel As Double, decel As Double, attributes As Mpx.MoveAttribute)

Sub SCurve(position As Double, speed As Double, accel As Double, attributes As Mpx.MoveAttribute)

Sub SCurve(position As Double, speed As Double, attributes As Mpx.MoveAttribute)

Sub SCurve(position As Double, attributes As Mpx.MoveAttribute)

Sub SCurve(position As Double, speed As Double, accel As Double, decel As Double, jerkPct As Double)

Sub SCurve(position As Double, speed As Double, accel As Double, decel As Double)

Sub SCurve(position As Double, speed As Double, accel As Double)

Sub SCurve(position As Double, speed As Double)

Sub SCurve(position As Double)

Sub SCurve(position As Double(), speed As Double(), accel As Double(), decel As Double(), jerkPct As Double(), attributes As Mpx.MoveAttribute)

Sub SCurve(position As Double(), speed As Double(), accel As Double(), decel As Double(), attributes As Mpx.MoveAttribute)

Sub SCurve(position As Double(), speed As Double(), accel As Double(), attributes As Mpx.MoveAttribute)

Sub SCurve(position As Double(), speed As Double(), attributes As Mpx.MoveAttribute)

Sub SCurve(position As Double(), attributes As Mpx.MoveAttribute)

Sub SCurve(position As Double(), speed As Double(), accel As Double(), decel As Double(), jerkPct As Double())

Sub SCurve(position As Double(), speed As Double(), accel As Double(), decel As Double())

Sub SCurve(position As Double(), speed As Double(), accel As Double())

Sub SCurve(position As Double(), speed As Double())

Sub SCurve(position As Double())

Sample Code

 

' Overload 1

//                          pos     speed   accel  decel  jerkPct  MoveAttr

controller.Motion(0).SCurve(1000.0, 5000.0, 500.0, 500.0, 100.0, Mpx.MoveAttribute.Id)

 

 

' Overload 2

'                           pos     speed   accel  decel  MoveAttr

controller.Motion(0).SCurve(1000.0, 5000.0, 500.0, 500.0, Mpx.MoveAttribute.Id)

 

 

' Overload 3

'                           pos     speed   accel  MoveAttr

controller.Motion(0).SCurve(1000.0, 5000.0, 500.0, Mpx.MoveAttribute.Id)

 

 

' Overload 4

'                           pos     speed   MoveAttr

controller.Motion(0).SCurve(1000.0, 5000.0, Mpx.MoveAttribute.Id)

 

 

' Overload 5

'                           pos     MoveAttr

controller.Motion(0).SCurve(1000.0, Mpx.MoveAttribute.Id)

 

 

' Overload 6

'                           pos     speed   accel  decel  jerkPct

controller.Motion(0).SCurve(1000.0, 5000.0, 500.0, 500.0, 100.0)

 

 

' Overload 7

'                           pos     speed   accel  decel

controller.Motion(0).SCurve(1000.0, 5000.0, 500.0, 500.0)

 

 

' Overload 8

'                           pos     speed   accel

controller.Motion(0).SCurve(1000.0, 5000.0, 500.0)

 

 

' Overload 9

'                           pos     speed

controller.Motion(0).SCurve(1000.0, 5000.0)

 

 

' Overload 10

'                           pos

controller.Motion(0).SCurve(1000.0)

 

 

' Overload 11

Dim pos() As Double = New Double() { 1000.0, 2000.0 }

Dim speed() As Double = New Double() { 5000.0, 4000.0 }

Dim accel() As Double = New Double() { 500.0, 750.0 }

Dim decel() As Double = New Double() { 500.0, 750.0 }

Dim jerkPct() As Double = New Double() { 100.0, 66.6 }

'                           pos  speed  accel  decel  jerkPct  MoveAttr

controller.Motion(0).SCurve(pos, speed, accel, decel, jerkPct, Mpx.MoveAttribute.Id)

 

 

' Overload 12

Dim pos() As Double = New Double() { 1000.0, 2000.0 }

Dim speed() As Double = New Double() { 5000.0, 4000.0 }

Dim accel() As Double = New Double() { 500.0, 750.0 }

Dim decel() As Double = New Double() { 500.0, 750.0 }

'                           pos  speed  accel  decel  MoveAttr

controller.Motion(0).SCurve(pos, speed, accel, decel, Mpx.MoveAttribute.Id)

 

 

' Overload 13

Dim pos() As Double = New Double() { 1000.0, 2000.0 }

Dim speed() As Double = New Double() { 5000.0, 4000.0 }

Dim accel() As Double = New Double() { 500.0, 750.0 }

'                           pos  speed  accel  MoveAttr

controller.Motion(0).SCurve(pos, speed, accel, Mpx.MoveAttribute.Id)

 

 

' Overload 14

Dim pos() As Double = New Double() { 1000.0, 2000.0 }

Dim speed() As Double = New Double() { 5000.0, 4000.0 }

'                           pos  speed  MoveAttr

controller.Motion(0).SCurve(pos, speed, Mpx.MoveAttribute.Id)

 

 

' Overload 15

Dim pos() As Double = New Double() { 1000.0, 2000.0 }

'                           pos  MoveAttr

controller.Motion(0).SCurve(pos, Mpx.MoveAttribute.Id)

 

 

' Overload 16

Dim pos() As Double = New Double() { 1000.0, 2000.0 }

Dim speed() As Double = New Double() { 5000.0, 4000.0 }

Dim accel() As Double = New Double() { 500.0, 750.0 }

Dim decel() As Double = New Double() { 500.0, 750.0 }

Dim jerkPct() As Double = New Double() { 100.0, 66.6 }

'                           pos  speed  accel  decel  jerkPct

controller.Motion(0).SCurve(pos, speed, accel, decel, jerkPct)

 

 

' Overload 17

Dim pos() As Double = New Double() { 1000.0, 2000.0 }

Dim speed() As Double = New Double() { 5000.0, 4000.0 }

Dim accel() As Double = New Double() { 500.0, 750.0 }

Dim decel() As Double = New Double() { 500.0, 750.0 }

'                           pos  speed  accel  decel

controller.Motion(0).SCurve(pos, speed, accel, decel)

 

 

' Overload 18

Dim pos() As Double = New Double() { 1000.0, 2000.0 }

Dim speed() As Double = New Double() { 5000.0, 4000.0 }

Dim accel() As Double = New Double() { 500.0, 750.0 }

'                           pos  speed  accel

controller.Motion(0).SCurve(pos, speed, accel)

 

 

' Overload 19

Dim pos() As Double = New Double() { 1000.0, 2000.0 }

Dim speed() As Double = New Double() { 5000.0, 4000.0 }

'                           pos  speed

controller.Motion(0).SCurve(pos, speed)

 

 

' Overload 20

Dim pos() As Double = New Double() { 1000.0, 2000.0 }

'                           pos

controller.Motion(0).SCurve(pos)

 


Sample Application

 

C#

Syntax

void SCurve(double position, double speed, double accel, double decel, double jerkPct, Mpx.MoveAttribute attributes);

void SCurve(double position, double speed, double accel, double decel, Mpx.MoveAttribute attributes);

void SCurve(double position, double speed, double accel, Mpx.MoveAttribute attributes);

void SCurve(double position, double speed, Mpx.MoveAttribute attributes);

void SCurve(double position, Mpx.MoveAttribute attributes);

void SCurve(double position, double speed, double accel, double decel, double jerkPct);

void SCurve(double position, double speed, double accel, double decel);

void SCurve(double position, double speed, double accel);

void SCurve(double position, double speed);

void SCurve(double position);

void SCurve(double[] position, double[] speed, double[] accel, double[] decel, double[] jerkPct, Mpx.MoveAttribute attributes);

void SCurve(double[] position, double[] speed, double[] accel, double[] decel, Mpx.MoveAttribute attributes);

void SCurve(double[] position, double[] speed, double[] accel, Mpx.MoveAttribute attributes);

void SCurve(double[] position, double[] speed, Mpx.MoveAttribute attributes);

void SCurve(double[] position, Mpx.MoveAttribute attributes);

void SCurve(double[] position, double[] speed, double[] accel, double[] decel, double[] jerkPct);

void SCurve(double[] position, double[] speed, double[] accel, double[] decel);

void SCurve(double[] position, double[] speed, double[] accel);

void SCurve(double[] position, double[] speed);

void SCurve(double[] position);

Sample Code

 

// Overload 1

//                          pos     speed   accel  decel  jerkPct  MoveAttr

controller.Motion[0].SCurve(1000.0, 5000.0, 500.0, 500.0, 100.0, Mpx.MoveAttribute.Id);

 

 

// Overload 2

//                          pos     speed   accel  decel  MoveAttr

controller.Motion[0].SCurve(1000.0, 5000.0, 500.0, 500.0, Mpx.MoveAttribute.Id);

 

 

// Overload 3

//                          pos     speed   accel  MoveAttr

controller.Motion[0].SCurve(1000.0, 5000.0, 500.0, Mpx.MoveAttribute.Id);

 

 

// Overload 4

//                          pos     speed   MoveAttr

controller.Motion[0].SCurve(1000.0, 5000.0, Mpx.MoveAttribute.Id);

 

 

// Overload 5

//                          pos     MoveAttr

controller.Motion[0].SCurve(1000.0, Mpx.MoveAttribute.Id);

 

 

// Overload 6

//                          pos     speed   accel  decel  jerkPct

controller.Motion[0].SCurve(1000.0, 5000.0, 500.0, 500.0, 100.0);

 

 

// Overload 7

//                          pos     speed   accel  decel

controller.Motion[0].SCurve(1000.0, 5000.0, 500.0, 500.0);

 

 

// Overload 8

//                          pos     speed   accel

controller.Motion[0].SCurve(1000.0, 5000.0, 500.0);

 

 

// Overload 9

//                          pos     speed

controller.Motion[0].SCurve(1000.0, 5000.0);

 

 

// Overload 10

//                          pos

controller.Motion[0].SCurve(1000.0);

 

 

// Overload 11

double[] pos = new double[] { 1000.0, 1500.0 };

double[] speed = new double[] { 5000.0, 5000.0 };

double[] accel = new double[] { 500.0, 550.0 };

double[] decel = new double[] { 500.0, 550.0 };

double[] jerk = new double[] { 100.0, 100.0 };

//                          pos  speed  accel  decel  jerkPct  MoveAttr

controller.Motion[0].SCurve(pos, speed, accel, decel, jerk, Mpx.MoveAttribute.Id);

 

 

// Overload 12

double[] pos = new double[] { 1000.0, 1500.0 };

double[] speed = new double[] { 5000.0, 5000.0 };

double[] accel = new double[] { 500.0, 550.0 };

double[] decel = new double[] { 500.0, 550.0 };

//                          pos  speed  accel  decel  MoveAttr

controller.Motion[0].SCurve(pos, speed, accel, decel, Mpx.MoveAttribute.Id);

 

 

// Overload 13

double[] pos = new double[] { 1000.0, 1500.0 };

double[] speed = new double[] { 5000.0, 5000.0 };

double[] accel = new double[] { 500.0, 550.0 };

//                          pos  speed  accel  MoveAttr

controller.Motion[0].SCurve(pos, speed, accel, Mpx.MoveAttribute.Id);

 

 

// Overload 14

double[] pos = new double[] { 1000.0, 1500.0 };

double[] speed = new double[] { 5000.0, 5000.0 };

//                          pos  speed  MoveAttr

controller.Motion[0].SCurve(pos, speed, Mpx.MoveAttribute.Id);

 

 

// Overload 15

double[] pos = new double[] { 1000.0, 1500.0 };

//                          pos  MoveAttr

controller.Motion[0].SCurve(pos, Mpx.MoveAttribute.Id);

 

 

// Overload 16

double[] pos = new double[] { 1000.0, 1500.0 };

double[] speed = new double[] { 5000.0, 5000.0 };

double[] accel = new double[] { 500.0, 550.0 };

double[] decel = new double[] { 500.0, 550.0 };

double[] jerk = new double[] { 100.0, 100.0 };

//                          pos  speed  accel  decel  jerkPct

controller.Motion[0].SCurve(pos, speed, accel, decel, jerk);

 

 

// Overload 17

double[] pos = new double[] { 1000.0, 1500.0 };

double[] speed = new double[] { 5000.0, 5000.0 };

double[] accel = new double[] { 500.0, 550.0 };

double[] decel = new double[] { 500.0, 550.0 };

//                          pos  speed  accel  decel

controller.Motion[0].SCurve(pos, speed, accel, decel);

 

 

// Overload 18

double[] pos = new double[] { 1000.0, 1500.0 };

double[] speed = new double[] { 5000.0, 5000.0 };

double[] accel = new double[] { 500.0, 550.0 };

//                          pos  speed  accel

controller.Motion[0].SCurve(pos, speed, accel);

 

 

// Overload 19

double[] pos = new double[] { 1000.0, 1500.0 };

double[] speed = new double[] { 5000.0, 5000.0 };

//                          pos  speed

controller.Motion[0].SCurve(pos, speed);

 

 

// Overload 20

double[] pos = new double[] { 1000.0, 1500.0 };

//                          pos

controller.Motion[0].SCurve(pos);

 

 

See Also

Traezoidal

MoveAttr

Axis Object
PositionScale

Synchronized Attributes

 

       Legal Notice  |  Tech Email  |  Feedback
      
Copyright ©
2001-2021 Motion Engineering