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
|