The RMP Motion Controller APIs
MotionController

RPCs

rpc MotionController(MotionControllerRequest) returns (MotionControllerResponse) {};

Request

message MotionControllerRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
optional MotionControllerConfig config = 2;
optional MotionControllerAction action = 3;
}

Response

message MotionControllerResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
optional MotionControllerConfig config = 2;
optional MotionControllerAction action = 3;
optional MotionControllerInfo info = 4;
optional MotionControllerStatus status = 5;
}

Config

message MotionControllerConfig {
// The number of Axis objects.
optional int32 axis_count = 1;
// The number of MultiAxis objects. (internal MotionCount - AxisCount)
optional int32 multi_axis_count = 2;
// The number of UserLimits.
optional int32 user_limit_count = 3;
// The number of data recorders.
optional int32 recorder_count = 4;
// The sizes of each recorder's buffer.
repeated int32 recorder_buffer_sizes = 5;
// The number of position compensators.
optional int32 compensator_count = 6;
// The number of points for each position compensator.
repeated int32 compensator_point_counts = 7;
// The number of licensed Axis objects (read-only).
int32 axis_license_count = 8;
// The size of each Axis' frame buffer. Must be power of 2.
repeated int32 axis_frame_buffer_sizes = 9;
// The number of 32-bit words free in the RMP firmware memory (read-only).
int32 external_memory_size = 10;
// A 32-bit integer for users to specify a version.
optional int32 user_version = 11;
}

Action

message AddressInfo {
// The requested address type.
oneof address_type {
RSIControllerAddressType controller = 1;
RSIMultiAxisAddressType multi_axis = 3;
}
// The 64-bit host address from the server.
uint64 host_address = 4;
// The data type at this address. Useful for using the Recorder service.
RSIDataType data_type = 5;
// The internal 32-bit firmware address. (What you might see in VM3.)
uint32 firmware_address = 6;
// The 0-based object index for use when accessing Controller Addresses
// Not used with Axis or MultiAxis addresses.
optional int32 index = 7;
}
message MotionControllerMemory {
message Integer {
uint64 host_address = 1;
int32 value = 2;
}
message Double {
uint64 host_address = 1;
double value = 2;
}
message Block {
uint64 host_address = 1;
bytes values = 2;
int32 size = 3;
}
oneof memory {
Integer integer = 1;
Double double = 2;
Block block = 3;
}
}
message MotionControllerAction {
// Create a MotionController. You must do this before using any other RapidCode remote service!
optional Create create = 1;
repeated MotionControllerMemory memory_sets = 2;
repeated MotionControllerMemory memory_gets = 3;
repeated AddressInfo address_gets = 4;
optional Shutdown shutdown = 5;
message Create {
// Path to the RMP firmware (RMP.rta), license file, etc.
string rta_path = 1;
// The name of the INtime node where you want to start the RMP. ("NodeA" is default.)
string node_name = 2;
}
message Shutdown {}
}

Info

message MotionControllerInfo {
// The RMP serial number.
uint32 serial_number = 1;
// The RapidCode version.
string rapid_code_version = 2;
// RMP firmware version.
string firmware_version = 3;
repeated AddressInfo addresses = 4;
}

RapidCode calls

SerialNumberGet(), RSI::RapidCode::MotionController::VersionGet() RSI::RapidCode::MotionController::FirmwareVersionGet()

Status

message MotionControllerStatus {
// The RMP sample counter.
int32 sample_counter = 1;
// Network node count.
uint32 network_node_count = 2;
}
RSI::RapidCode::RSIMultiAxisAddressType
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition: rsienums.h:487
RSI
RSI::RapidCode::RSIControllerAddressType
RSIControllerAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition: rsienums.h:411
RSI::RapidCode::RSIDataType
RSIDataType
Data types for User Limits and other triggers.
Definition: rsienums.h:640
RSI::RapidCode::RSIAxisAddressType
RSIAxisAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition: rsienums.h:426