1""" Sample application that demonstrates basic Axis motion.
2"""
3
4import sys
5from _imports import RapidCode, helpers, time, config, constants
6
7print("⬤ Axis Basic Motion")
8
9exit_code = 0
10
11
12DISTANCE = 2
13VELOCITY = 10
14ACCELERATION = 5
15DECELERATION = 3
16JERK_PERCENTAGE = 50
17
18
19AXIS_INDEX = 0
20
21def print_status(axis: RapidCode.Axis):
22 print(f"State: {helpers.enum_to_name(axis.StateGet(), 'RSIState')}, Position: {axis.CommandPositionGet():.5f}, Velocity: {axis.CommandVelocityGet():.5f}, Acceleration: {axis.CommandAccelGet():.5f}")
23
24
25creation_params: RapidCode.CreationParameters = helpers.get_creation_parameters()
26controller: RapidCode.MotionController = RapidCode.MotionController.Create(creation_params)
27
28try:
29 helpers.check_errors(controller)
30
31
32 print(f"This object is a {type(controller)}")
33
34
35 config.setup_controller(controller, numAxes=AXIS_INDEX + 1)
36
37
38 axis: RapidCode.Axis = controller.AxisGet(AXIS_INDEX)
39 helpers.check_errors(axis)
40
41
42 axis.ClearFaults()
43 enable_ms = axis.AmpEnableSet(True, 750)
44 print(f'Amplifier took {enable_ms}ms to enable')
45 helpers.verify_idle_state(axis)
46
47 print_status(axis)
48
49
50 axis.MoveRelative(DISTANCE, VELOCITY, ACCELERATION, DECELERATION, JERK_PERCENTAGE)
51
52
53 while not axis.MotionDoneGet():
54 print_status(axis)
55 time.sleep(0.1)
56
57 print_status(axis)
58
59
60 helpers.verify_idle_state(axis)
61
62 exit_code = constants.EXIT_SUCCESS
63except Exception as e:
64 print(f"❌ Error: {e}")
65 exit_code = constants.EXIT_FAILURE
66finally:
67 controller.Delete()
68
69sys.exit(exit_code)