🔹 RPCs
rpc Axis (AxisRequest) returns (AxisResponse) {};
rpc AxisBatch (AxisBatchRequest) returns (AxisBatchResponse) {};
🔹 Request
message AxisRequest {
RSI.RapidServer.RequestHeader header = 1;
int32 index = 2;
optional AxisConfig config = 3;
optional AxisAction action = 4;
}
🔹 Response
message AxisResponse {
RSI.RapidServer.ResponseHeader header = 1;
int32 index = 2;
optional AxisConfig config = 3;
optional AxisAction action = 4;
optional AxisInfo info = 5;
optional AxisStatus status = 6;
}
🔹 Batch Request and Response
message AxisBatchRequest {
RSI.RapidServer.RequestHeader header = 1;
repeated AxisRequest requests = 2;
}
message AxisBatchResponse {
RSI.RapidServer.ResponseHeader header = 1;
repeated AxisResponse responses = 2;
}
🔹 Config
message AxisConfig {
optional double user_units = 1;
optional double origin_position = 2;
optional string user_label = 3;
optional TrajectoryDefaults defaults = 4;
optional HardwareTrigger amp_fault = 5;
optional HardwareTrigger home_switch = 6;
optional ErrorLimit error_limit = 7;
optional HardwareTrigger hardware_negative_limit = 8;
optional HardwareTrigger hardware_positive_limit = 9;
optional SoftwareTrigger software_negative_limit = 10;
optional SoftwareTrigger software_positive_limit = 11;
optional Settling settling = 12;
optional MotionConfig motion = 13;
optional Homing homing = 14;
optional int32 frame_buffer_size = 15;
message TrajectoryDefaults
{
optional double velocity = 1;
optional double acceleration = 2;
optional double deceleration = 3;
optional double jerk_percent = 4;
optional double position1 = 5;
optional double position2 = 6;
optional double relative_increment = 7;
}
message HardwareTrigger {
optional bool trigger_state = 2;
optional double duration = 3;
}
message SoftwareTrigger {
optional double trigger_value = 2;
}
message ErrorLimit {
optional double trigger_value = 2;
optional double duration = 3;
}
message Settling {
optional double position_tolerance_fine = 1;
optional double position_tolerance_coarse = 2;
optional double velocity_tolerance = 3;
optional double time_seconds = 4;
optional bool on_stop = 5;
optional bool on_estop = 6;
optional bool on_estop_cmd_equals_actual = 7;
}
message MotionConfig {
optional double stop_time = 1;
optional double estop_time = 2;
optional double triggered_modify_deceleration = 3;
optional double triggered_modify_jerk_percent = 4;
optional double estop_modify_deceleration = 5;
optional double estop_modify_jerk_percent = 6;
}
message Homing {
optional double offset = 2;
optional double velocity = 3;
optional double slow_velocity = 4;
optional double acceleration = 5;
optional double deceleration = 6;
optional double jerk_percent = 7;
optional bool state = 8;
}
}
🔹 Action
message AxisAction {
optional Abort abort = 1;
optional EStopAbort e_stop_abort = 2;
optional EStopModifyAbort e_stop_modify_abort = 3;
optional EStopModify e_stop_modify = 4;
optional EStop e_stop = 5;
optional TriggeredModify triggered_modify = 6;
optional Stop stop = 7;
optional Resume resume = 8;
optional ClearFaults clear_faults = 9;
optional AmpEnable amp_enable = 10;
optional AmpDisable amp_disable = 11;
optional HoldGateSet hold_gate_set = 12;
optional PositionSet position_set = 13;
optional Move move = 14;
optional GearEnable gear_enable = 15;
optional GearDisable gear_disable = 16;
optional Home home = 17;
optional HomeCancel home_cancel = 18;
message Abort {}
message EStopAbort {}
message EStopModifyAbort{}
message EStopModify{}
message EStop {}
message TriggeredModify {}
message Stop {}
message Resume {}
message ClearFaults {}
message AmpEnable {
optional int32 timeout_milliseconds = 1;
optional int32 duration = 2;
}
message AmpDisable {}
message HoldGateSet {
bool state = 1;
}
message PositionSet{
double position = 1;
}
message Move {
oneof move {
AxisMovePointToPoint point_to_point = 3;
AxisMoveVelocity velocity = 4;
MoveStreaming streaming = 5;
}
optional uint32 motion_id = 6;
optional MotionHold motion_hold = 7;
bool blocking = 8;
}
message GearEnable {
optional int32 master_axis_number = 2;
int32 numerator = 4;
int32 denominator = 5;
}
message GearDisable {}
message Home {
optional bool move_to_zero = 1;
}
message HomeCancel {}
}
message AxisMovePointToPoint {
double position = 1;
optional double velocity = 2;
optional double acceleration = 3;
optional double deceleration = 4;
optional double jerk_percent = 5;
optional double final_velocity = 6;
bool relative = 7;
}
message AxisMoveVelocity {
double velocity = 1;
double acceleration = 2;
double jerk_percent = 3;
}
message MoveStreaming {
repeated double positions = 1;
repeated double velocities = 2;
repeated double accelerations = 3;
repeated double jerks = 4;
repeated double times = 5;
int32 empty_count = 6;
bool retain = 7;
bool final = 8;
}
🔹 Info
message AxisInfo {
int32 index = 1;
repeated AddressInfo addresses = 2;
NetworkNodeInfo node_info = 3;
Constants constants = 4;
int32 motion_supervisor_index = 5;
message Constants {
uint32 network_index_invalid = 1;
double amp_enable_amp_fault_timeout_seconds_default = 2;
}
}
🔹 Status
message AxisStatus {
bool amp_enabled = 1;
string source_name = 4;
PositionStatus position = 5;
VelocityStatus velocity = 6;
AccelerationStatus acceleration = 7;
int32 frames_to_execute = 8;
uint32 motion_id = 9;
uint32 motion_id_executing = 10;
int32 element_id_executing = 11;
bool gear_enabled = 12;
MotorStatusBits motor_status_bits = 13;
MotionStatusBits motion_status_bits = 14;
Ds402StatusBits ds402_status_bits = 15;
DedicatedOutputBits dedicated_output_bits = 16;
DedicatedInputBits dedicated_input_bits = 17;
message PositionStatus {
double command = 1;
double actual = 2;
double error = 3;
double target = 4;
double origin = 5;
double encoder_0 = 6;
double encoder_1 = 7;
double compensation = 8;
double backlash = 9;
}
message VelocityStatus {
double command = 1;
double actual = 2;
}
message AccelerationStatus {
double command = 1;
}
message MotorStatusBits {
bool amp_fault = 1;
bool amp_warning = 2;
bool feedback_fault = 3;
bool limit_position_error = 4;
bool limit_torque = 5;
bool limit_hardware_negative = 6;
bool limit_hardware_positive = 7;
bool limit_software_negative = 8;
bool limit_software_positive = 9;
}
message MotionStatusBits {
bool done = 1;
bool start = 2;
bool modify = 3;
bool at_velocity = 4;
bool out_of_frames = 5;
bool near_target = 6;
bool at_target = 7;
bool settled = 8;
}
message Ds402StatusBits {
bool ready_to_switch_on = 1;
bool switched_on = 2;
bool operation_enabled = 3;
bool fault = 4;
bool voltage_enabled = 5;
bool quick_stop = 6;
bool switch_on_disabled = 7;
bool warning = 8;
bool manufacturer_specific_8 = 9;
bool remote = 10;
bool target_reached = 11;
bool internal_limit_active = 12;
bool operation_mode_specific_12 = 13;
bool operation_mode_specific_13 = 14;
bool manufacturer_specific_14 = 15;
bool manufacturer_specific_15 = 16;
}
message DedicatedOutputBits {
bool amp_enable = 1;
bool brake_release = 2;
}
message DedicatedInputBits {
bool amp_fault = 1;
bool brake_applied = 2;
bool home = 3;
bool limit_hardware_positive = 4;
bool limit_hardware_negative = 5;
bool index = 6;
bool index_secondary = 7;
bool feedback_fault = 8;
bool captured = 9;
bool hall_a = 10;
bool hall_b = 11;
bool hall_c = 12;
bool amp_active = 13;
bool warning = 14;
bool drive_status_9 = 15;
bool drive_status_10 = 16;
bool feedback_fault_primary = 17;
bool feedback_fault_secondary = 18;
}
}