The RMP Motion Controller APIs
NetworkNode

RPCs

rpc NetworkNode (NetworkNodeRequest) returns (NetworkNodeResponse) {};
rpc NetworkNodeBatch (NetworkNodeBatchRequest) returns (NetworkNodeBatchResponse) {};

Request

message NetworkNodeRequest {
// Common request header
RSI.RapidServer.RequestHeader header = 1;
// Network Node index
int32 index = 2;
optional NetworkNodeConfig config = 3;
optional NetworkNodeAction action = 4;
}

Response

message NetworkNodeResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
// Network Node index
int32 index = 2;
optional NetworkNodeConfig config = 3;
optional NetworkNodeAction action = 4;
optional NetworkNodeInfo info = 5;
optional NetworkNodeStatus status = 6;
}

Batch Request and Response

message NetworkNodeBatchRequest {
// Common request header
RSI.RapidServer.RequestHeader header = 1;
repeated NetworkNodeRequest requests = 2;
}
message NetworkNodeBatchResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
repeated NetworkNodeResponse responses = 2;
}

Config

Action

// The state of the digital output at the specified bit number.
message DigitalOutput {
// The bit number.
int32 bit_number = 1;
// The state of the digital output. When this message is used as a request
// to set a digital output, the digital output will be set to this value.
// When this message is returned as an action response, this field holds the
// new state.
bool state = 2;
}
// The value of the analog output at the specified channel.
message AnalogOutput {
// The channel number.
int32 channel = 1;
// The value of the analog output. When this message is used as a request
// to set an analog output, the analog output will be set to this value.
// When this message is returned as an action response, this field holds the
// new value.
int32 value = 2;
}
// The location, size, and value of a Service Data Object (SDO).
message SDO {
// The SDO index.
int32 index = 1;
// The SDO sub-index.
int32 sub_index = 2;
// The number of bytes.
int32 byte_count = 3;
// Set this field True to read the SDO value as a string. By default, SDO
// values are read as integers unless this field is True. This field is
// only used to read an SDO, and is ignored when used to request a write.
optional bool is_string_value = 4;
// Wait this long for a response, otherwise it will throw a timeout error.
optional uint32 timeout_milliseconds = 5;
// The SDO value. Set either integer_value or string_value during an SDO write.
// This field is ignored when requesting an SDO read, but will contain the
// value of the SDO when responding to an SDO read.
oneof value {
// Integer value used for all non-string types.
int32 integer_value = 6;
// String value.
string string_value = 7;
}
}
// An ASCII command to execute on an AKD drive.
message AKDASCII {
// The command as a string.
string command = 1;
// The returned result of the command. This field is ignored when requesting
// an AKDASCII command.
optional string result = 2;
}
// A set of actions to perform on a network node. This message is used to
// request a set of actions. A new instance of this message will be returned
// containing the results of the requested acitons.
message NetworkNodeAction {
// Any number of digital outputs to set. Add instances of the DigitalOutput
// message to this field to set digital outputs. When this message is
// returned in the action response, this field contains the new states of
// the digital outputs.
repeated DigitalOutput digital_output_sets = 1;
// Any number of analog outputs to set. Add instances of the AnalogOutput
// message to this field to set analog outputs. When this message is
// returned in the action response, this field contains the new values of
// the analog outputs.
repeated AnalogOutput analog_output_sets = 2;
// The requested SDO value(s) to write to the network. Add instances of the
// SDO message to this field to write to SDOs. When this message is returned
// in the action response, this field will be empty.
repeated SDO sdo_writes = 3;
// The SDO(s) to be read from the network. Add instances of the SDO message
// to this field to read SDO values. When this message is returned in the
// action response, the SDO messages will contain the read values.
repeated SDO sdo_reads = 4;
// AKD ASCII command(s). Only used for Kollmorgen AKD drives. Add instances
// of the AKDASCII message to request an ASCII command. When this message
// is returned in the action response, the AKDASCII messages will contain
// both the command executed and the returned result as a string.
repeated AKDASCII akd_asciis = 5;
}

Info

message NetworkNodeInfo {
// True if hardware exists.
bool exists = 1;
// The node index.
int32 index = 2;
// The number of Axis objects on this node.
int32 axis_count = 3;
// True if this node has I/O.
bool has_io = 4;
// The number of digital/analog inputs and outputs on this node.
IOCounts io_counts = 5;
// The bit masks and 64-bit host addresses for this node's I/O.
IOAddresses io_addresses = 6;
// The node type.
RSINodeType type = 7;
// 32-bit vendor identifier.
uint32 vendor_id = 8;
// 32-bit product code.
uint32 product_code = 9;
// 32-bit hardware revision.
uint32 hardware_revision = 10;
// Station alias.
uint32 station_alias = 11;
// Serial number.
string serial_number = 12;
// The node's name.
string name = 13;
// Product name.
string product_name = 14;
// Vendor name.
string vendor_name = 15;
Constants constants = 16;
// Internal messages.
// The number of digital/analog inputs and outputs.
message IOCounts {
// Number of digital inputs.
int32 digital_inputs = 1;
// Number of digital outputs.
int32 digital_outputs = 2;
// Number of analog inputs.
int32 analog_inputs = 3;
// Number of analog outputs.
int32 analog_outputs = 4;
}
message IOAddresses {
// Masks and 64-bit host addresses for each digital intput.
repeated AddressInfo digital_inputs = 1;
// Masks and 64-bit host addreses for each digital output.
repeated AddressInfo digital_outputs = 2;
// Masks and 64-bit host addreses for each analog input.
repeated AddressInfo analog_inputs = 3;
// Masks and 64-bit host addreses for each analog output.
repeated AddressInfo analog_outputs = 4;
}
message Constants {
// Default time to wait when reading or writing an SDO with ServiceChannelRead() or ServiceChannelWrite()
uint32 sdo_timeout_milliseconds_default = 1;
}
}

Status

message NetworkNodeStatus {
// All the digital input states.
repeated bool digital_input_states = 2;
// All the digital output states.
repeated bool digital_output_states = 3;
// All the analog input values.
repeated int32 analog_input_values = 4;
// All the analog output values.
repeated int32 analog_output_values = 5;
}