The RMP Motion Controller APIs
MultiAxis

RPCs

// Use a zero-based index, unlike RapidCode which uses a motion index.
rpc MultiAxis (MultiAxisRequest) returns (MultiAxisResponse) {};
rpc MultiAxisBatch (MultiAxisBatchRequest) returns (MultiAxisBatchResponse) {};

Request

message MultiAxisRequest {
// Common request header
RSI.RapidServer.RequestHeader header = 1;
// MultiAxis index
int32 index = 2;
optional MultiAxisConfig config = 3;
optional MultiAxisAction action = 4;
}

Response

message MultiAxisResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
// MultiAxis index
int32 index = 2;
optional MultiAxisConfig config = 3;
optional MultiAxisAction action = 4;
optional MultiAxisInfo info = 5;
optional MultiAxisStatus status = 6;
}

Batch Request and Response

message MultiAxisBatchRequest {
// Common request header
RSI.RapidServer.RequestHeader header = 1;
repeated MultiAxisRequest requests = 2;
}
message MultiAxisBatchResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
repeated MultiAxisResponse responses = 2;
}

Config

message MultiAxisConfig {
repeated int32 axes_indices = 1;
optional string user_label = 2;
optional double feed_rate = 3;
optional double stop_time = 4;
optional double e_stop_time = 5;
}

Action

message MultiAxisAction {
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 Move move = 12;
optional RemoveAxes remove_axes = 13;
optional Unmap unmap = 14;
optional Map map = 15;
optional AxisAdd axis_add = 16;
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; // read-only how long did it take to enable? only set if you specify a timeout to wait for AMP_ACTIVE
}
message AmpDisable {}
message Move {
oneof move {
MultiAxisMovePointToPoint point_to_point = 3;
MultiAxisMoveVelocity velocity = 4;
MoveStreaming streaming = 5;
}
optional uint32 motion_id = 6;
// Specify MotionHold criteria, if you want the motion to hold execution until conditions are met.
optional MotionHold motion_hold = 7;
bool blocking = 8;
message MultiAxisMovePointToPoint {
repeated AxisMovePointToPoint axis_move_point_to_points = 1;
bool relative = 2;
}
message MultiAxisMoveVelocity {
repeated AxisMoveVelocity axis_move_velocities = 1;
}
}
message RemoveAxes {}
message Unmap {}
message Map {}
message AxisAdd {
int32 axis_index = 1;
}
}

Info

message MultiAxisInfo {
// The zero-based index for this MultiAxis.
int32 index = 1;
// The internal motion index.
int32 motion_index = 2;
// Host and firmware addresses
repeated AddressInfo addresses = 3;
}

Status

message MultiAxisStatus {
RSIState state = 1;
RSISource source = 2;
string source_name = 3;
bool amp_enabled = 4;
MotionStatusBits motion_status_bits = 5;
repeated AxisStatus axis_statuses = 6;
bool is_mapped = 7;
message MotionStatusBits {
bool done = 1;
bool start = 2;
bool modify = 3;
bool at_velocity = 4;
bool out_of_frames = 5;
}
}