static void Main(string[] args)
        {
            // Constants
            const int AXIS_NUMBER       = 0;       // Specify which axis/motor to control.
            const int USER_UNITS        = 1048576; // Specify your counts per unit / user units.   (the motor used in this sample app has 1048576 encoder pulses per revolution)
            const int RELATIVE_POSITION = 50;      // Specify which position to travel to.
            const int VELOCITY          = 10;      // Specify your velocity - units: Units/Sec     (it will do "10485760 counts/10 motor revolution per second)
            const int ACCELERATION      = 100;     // Specify your acceleration - units: Units/Sec^2
            const int DECELERATION      = 100;     // Specify your deceleration - units: Units/Sec^2
            const int JERK_PCT          = 50;      // Specify your jerk percent - units: Units/Sec^3
            const int FINAL_VELOCITY    = 5;       // Specify your final velocity - units: Units/Sec

            // Initialize RapidCode Objects
            MotionController controller = MotionController.CreateFromSoftware(/*@"C:\RSI\X.X.X\"*/); // Insert the path location of the RMP.rta (usually the RapidSetup folder)

            SampleAppsCS.HelperFunctions.CheckErrors(controller);                                    // [Helper Function] Check that the controller has been initialize correctly.

            SampleAppsCS.HelperFunctions.StartTheNetwork(controller);                                // [Helper Function] Initialize the network. (Function logic at the bottom of source code)

            Axis axis = controller.AxisGet(AXIS_NUMBER);                                             // Initialize the axis.

            SampleAppsCS.HelperFunctions.CheckErrors(axis);                                          // [Helper Function] Check that the axis has been initialized correctly.

            try
            {
                axis.UserUnitsSet(USER_UNITS);                                                  // Specify the counts per unit. (every 1048576 counts my motor does one full turn) (varies per motor)
                axis.ErrorLimitTriggerValueSet(1);                                              // Specify the position error limit trigger value. (learn more about this on our support page)
                axis.PositionSet(0);                                                            // Ensure the motor starts at position 0 every time.

                axis.Abort();                                                                   // If there is any motion happening, abort it.
                axis.ClearFaults();                                                             // Clear any faults.
                axis.AmpEnableSet(true);                                                        // Enable the axis.

                Console.WriteLine("\nFinal Velocity Example");
                Console.WriteLine("\nSCurve Motion in progress...\n");

                axis.MoveSCurve(RELATIVE_POSITION,                                              // Command an SCurve move with a final velocity of FINAL_VELOCITY.
                                VELOCITY,
                                ACCELERATION,                                                   // Once the commanded position has been reached, the motor will begin
                                DECELERATION,                                                   // spinning with a speed of FINAL_VELOCITY, and continue to spin at that
                                JERK_PCT,                                                       // velocity until stopped.
                                FINAL_VELOCITY);

                controller.OS.Sleep(8000);                                                      // Motion should take 8 seconds to complete.


                Console.WriteLine("\nSCurve Motion Done\n");
                Console.WriteLine("\nMotor now spinning at a speed of " + axis.ActualVelocityGet() + " revs/sec\n");

                controller.OS.Sleep(2500);                                                      // Let the axis spin for 2.5 seconds before stopping.

                Console.WriteLine("\nMotor Stopped\n");
                axis.Abort();                                                                   // Stop the motion.
                axis.AmpEnableSet(false);                                                       // Disable the axis.
                axis.ClearFaults();                                                             // Clear any faults so the axis is ready to be used again.
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.WriteLine("\nPress Any Key To Exit");                                       // Allow time to read Console.
            Console.ReadKey();
        }