The RMP Motion Controller APIs
rapidcode.proto
1// This file describes the gRPC interface for the RapidCode services of RapidServer.
2
3syntax = "proto3";
4package RSI.RapidCodeRemote;
5import "rsienums.proto";
6import "rapidgrpc.proto";
7
8/*** Service Definitions ***/
9
10// Provides an interface for the RMP, and a way to interact with RapidCode objects
11// (MotionController, Axis, MultiAxis, RTOS, etc.)
12service RMPService {
13
15 // RPC for MotionController: Sends config/actions, receives updated config, action details, status, and read-only info.
16 rpc MotionController(MotionControllerRequest) returns (MotionControllerResponse) {};
18
20 // RPC for Network: Sends config/actions, receives updated config, action details, status, and read-only info.
21 rpc Network(NetworkRequest) returns (NetworkResponse) {};
23
25 rpc Axis (AxisRequest) returns (AxisResponse) {};
26 rpc AxisBatch (AxisBatchRequest) returns (AxisBatchResponse) {};
28
30 // Use a zero-based index, unlike RapidCode which uses a motion index.
31 rpc MultiAxis (MultiAxisRequest) returns (MultiAxisResponse) {};
32 rpc MultiAxisBatch (MultiAxisBatchRequest) returns (MultiAxisBatchResponse) {};
34
36 rpc NetworkNode (NetworkNodeRequest) returns (NetworkNodeResponse) {};
37 rpc NetworkNodeBatch (NetworkNodeBatchRequest) returns (NetworkNodeBatchResponse) {};
39
41 rpc Recorder (RecorderRequest) returns (RecorderResponse) {};
42 rpc RecorderBatch(RecorderBatchRequest) returns (RecorderBatchResponse) {};
44
46 rpc UserLimit (UserLimitRequest) returns (UserLimitResponse) {};
47 rpc UserLimitBatch(UserLimitBatchRequest) returns (UserLimitBatchResponse) {};
49
50
52 rpc RTOS(RTOSRequest) returns (RTOSResponse) {};
53 rpc RTOSBatch(RTOSBatchRequest) returns (RTOSBatchResponse) {};
55}
56
57
59message MotionControllerConfig {
60 // The number of Axis objects.
61 optional int32 axis_count = 1;
62
63 // The number of MultiAxis objects. (internal MotionCount - AxisCount)
64 optional int32 multi_axis_count = 2;
65
66 // The number of UserLimits.
67 optional int32 user_limit_count = 3;
68
69 // The number of data recorders.
70 optional int32 recorder_count = 4;
71
72 // The sizes of each recorder's buffer.
73 repeated int32 recorder_buffer_sizes = 5;
74
75 // The number of position compensators.
76 optional int32 compensator_count = 6;
77
78 // The number of points for each position compensator.
79 repeated int32 compensator_point_counts = 7;
80
81 // The size of each Axis' frame buffer. Must be power of 2.
82 repeated int32 axis_frame_buffer_sizes = 8;
83
84 // A 32-bit integer for users to specify a version.
85 optional int32 user_version = 10;
86
87 // A double to specify the sample rate in Hertz (samples per second)
88 optional double sample_rate = 11;
89}
90
92
93
94
96message AddressInfo {
97 // The requested address type.
98 oneof address_type {
99 RSIControllerAddressType controller = 1;
100 RSIAxisAddressType axis = 2;
101 RSIMultiAxisAddressType multi_axis = 3;
102 }
103
104 // The 64-bit host address from the server. This address can be used to configure the recorder.
105 uint64 host_address = 4;
106
107 // The data type at this address. Useful for using the Recorder service.
108 RSIDataType data_type = 5;
109
110 // The internal 32-bit firmware address. (What you might see in VM3.)
111 uint32 firmware_address = 6;
112
113 // The 0-based object index for use when accessing Controller Addresses
114 // Not used with Axis or MultiAxis addresses.
115 optional int32 index = 7;
116
117 // IO bit mask
118 optional int32 mask = 8;
119}
120
121message MotionControllerMemory {
122 message Integer {
123 uint64 host_address = 1;
124 int32 value = 2;
125 }
126 message Double {
127 uint64 host_address = 1;
128 double value = 2;
129 }
130 message Block {
131 uint64 host_address = 1;
132 bytes values = 2;
133 int32 size = 3;
134 }
135 oneof memory {
136 Integer integer = 1;
137 Double double = 2;
138 Block block = 3;
139 }
140}
141
142message MotionControllerAction {
143 // Create a MotionController. You must do this before using any other RapidCode remote service!
144 optional Create create = 1;
145 repeated MotionControllerMemory memory_sets = 2;
146 repeated MotionControllerMemory memory_gets = 3;
147 repeated AddressInfo address_gets = 4;
148 optional Shutdown shutdown = 5;
149 optional ProcessorUsageClear processor_usage_clear = 6;
150
151 message Create {
152 // Path to the RMP firmware (RMP.rta), license file, etc.
153 optional string rmp_path = 1;
154 optional string node_name = 2; // [Windows/INtime] INtime Node used for RMP and RMPNetwork.
155
156 optional string primary_nic = 3;
157 optional string secondary_nic = 4;
158
159 optional int32 cpu_affinity = 5; // [Linux] CPU used for RMP and RMPNetwork
160 optional int32 rmp_thread_priority_max = 6; // [Linux] Relative thread priority
161
162 //string memorydump_filename = 5;
163 }
164
165 // shutdown the RMP
166 message Shutdown {}
167
168 // clear the RMP's processor usage
169 message ProcessorUsageClear {}
170}
172
173
174
176message MotionControllerInfo {
177 // The RMP serial number.
178 uint32 serial_number = 1;
179
180 // The RapidCode version.
181 string rapid_code_version = 2;
182
183 // RMP firmware version.
184 string firmware_version = 3;
185
186 // The number of licensed Axis objects.
187 int32 axis_license_count = 4;
188
189 repeated AddressInfo addresses = 5;
190
191 // Constants from the MotionController object
192 Constants constants = 6;
193
194 message Constants {
195 // Default time to wait when calling NetworkStart()
196 uint32 network_start_timeout_milliseconds_default = 1;
197
198 // Maximum number of Axis objects supported.
199 uint32 axis_count_maximum = 2;
200
201 // Maximum number of motion objects supported (One required for each Axis and MultiAxis).
202 uint32 motion_count_maximum = 3;
203
204 // Maximum number of nodes allowed on the network.
205 uint32 network_node_count_maximum = 4;
206
207 // maximum number of Recorder objects supported
208 uint32 recorder_count_maximum = 5;
209
210 // Maximum number of Position Compensator objects supported.
211 uint32 compensator_count_maximum = 6;
212
213 // Maximum number of 64-bit values that can be stored in the User Buffer.
214 uint32 user_buffer_data_count_maximum = 7;
215
216 // Maximum number of global Sequencer variables that can be stored.
217 uint32 sequencer_global_count_maximum = 8;
218
219 // Default RMP sample rate in hertz.
220 double sample_rate_default = 9;
221
222 CreationParameters creation_parameters = 10;
223
224 message CreationParameters {
225 // MotionControllerAction::Create::rmp_path maximum string buffer length
226 uint32 path_length_maximum = 1;
227
228 // The default value of MotionControllerAction::Create::cpu_affinity
229 uint32 cpu_affinity_default = 2;
230
231 // The default value of MotionControllerAction::Create::rmp_thread_priority_max
232 uint32 rmp_thread_priority_maximum_default = 3;
233
234 // The range required for RMP and RMPNetwork threads. rmp_thread_priority_max must be greater than or equal to this value.
235 uint32 rmp_thread_priority_range = 4;
236 }
237 }
238}
240
241
242
244message MotionControllerStatus {
245 // The RMP sample counter.
246 int32 sample_counter = 1;
247
248 // Network node count.
249 uint32 network_node_count = 2;
250
251 // The percentage of the firmware sample time used by the RMP.
252 double processor_usage = 3;
253
254 // The most recent time (in microseconds) between firmware samples
255 uint32 firmware_timing_delta = 4;
256
257 // The number of 32-bit words free in the RMP firmware memory.
258 int32 external_memory_size = 9;
259}
261
262
263
265message MotionControllerRequest {
266 // Common request header.
267 RSI.RapidServer.RequestHeader header = 1;
268
269 optional MotionControllerConfig config = 2;
270 optional MotionControllerAction action = 3;
271}
273
274
276message MotionControllerResponse {
277 // Common response header. Always check the response header for errors.
278 RSI.RapidServer.ResponseHeader header = 1;
279
280 optional MotionControllerConfig config = 2;
281 optional MotionControllerAction action = 3;
282 optional MotionControllerInfo info = 4;
283 optional MotionControllerStatus status = 5;
284}
286
288message NetworkConfig {}
290
292message NetworkAction {
293 // Shutdown the network.
294 optional Shutdown shutdown = 1;
295
296 // Start the network.
297 optional Discover discover = 2;
298 optional Start start = 3;
299 optional DiscoverAndStart discover_and_start = 4;
300
301
302 // Evaluate network timing.
303 optional TimingMetricsEnable timing_metrics_enable = 5;
304 optional TimingMetricsDisable timing_metrics_disable = 6;
305 optional TimingMetricsClear timing_metrics_clear = 7;
306
307 // Used to override firmware values with your custom outputs.
308 repeated OutputOverride output_override = 8;
309
310 // Creating the object does the job.
311 message Shutdown { }
312
313 message Discover {
314 // Default: MotionController::NetworkStartTimeoutMillisecondsDefault which is 30000 ms.
315 optional uint32 timeout_milliseconds = 3;
316 }
317 message Start {
318 // Default: RSINetworkStartModeOPERATIONAL.
319 optional RSINetworkStartMode mode = 1;
320 // Default: MotionController::NetworkStartTimeoutMillisecondsDefault which is 30000 ms.
321 optional uint32 timeout_milliseconds = 2;
322 }
323
324 message DiscoverAndStart {
325 // Default: RSINetworkStartModeOPERATIONAL.
326 optional RSINetworkStartMode mode = 1;
327 // Default: MotionController::NetworkStartTimeoutMillisecondsDefault which is 30000 ms.
328 optional uint32 timeout_milliseconds = 2;
329 }
330
331 message TimingMetricsEnable {
332 // Determines when low_count increases.
333 optional uint32 low_threshold = 1;
334 // Determines when high_count increases.
335 optional uint32 high_threshold = 2;
336 }
337 message TimingMetricsDisable {}
338 message TimingMetricsClear {}
339
340 message OutputOverride {
341 // Index of the output.
342 int32 index = 1;
343 // Turn on or off overriding of the firmware value with the override_value.
344 optional bool override = 2;
345 // Your custom value rather than our intended firmware value.
346 optional int64 override_value = 3;
347 }
348}
350
352message NetworkRequest {
353 // Common request header.
354 RSI.RapidServer.RequestHeader header = 1;
355
356 optional NetworkConfig config = 2;
357
358 optional NetworkAction action = 3;
359}
361
363message NetworkResponse {
364 // Common response header. Always check the response header for errors.
365 RSI.RapidServer.ResponseHeader header = 1;
366
367 optional NetworkConfig config = 2;
368 optional NetworkAction action = 3;
369 optional NetworkInfo info = 4;
370 optional NetworkStatus status = 5;
371}
373
375message NetworkStatus {
376 RSINetworkState state = 1;
377 int32 node_count = 2;
378 int32 counter = 3;
379 bool synchronized = 4;
380 RSINetworkStartError last_start_error = 5;
381
382 // output logged from RMPNetwork when it closes.
383 string log_message = 6;
384
385 // NetworkTiming in RapidCode. Used to evaluate stability.
386 TimingMetricsStatus timing_metrics = 7;
387
388 // Collection of all Network PDO Inputs.
389 repeated PdoInputStatus pdo_inputs = 8;
390
391 // Collection of all Network PDO Outputs.
392 repeated PdoOutputStatus pdo_outputs = 9;
393
394 message TimingMetricsStatus {
395 // Most recent value.
396 uint32 delta = 1;
397 // Lowest recorded since last clear.
398 uint32 min_recorded = 2;
399 // Highest recorded since last clear.
400 uint32 max_recorded = 3;
401 // Count below low_threshold since last clear.
402 uint32 low_count = 4;
403 // Count above high_threshold since last clear.
404 uint32 high_count = 5;
405 }
406
407 message PdoInputStatus {
408 // The index of this PDO in RMP firmware.
409 int32 index = 1;
410 // The raw 64-bit value of this PDO.
411 int64 value = 2;
412 }
413
414 message PdoOutputStatus {
415 // The index of this PDO in RMP firmware.
416 int32 index = 1;
417 // The raw 64-bit value that was sent on the network.
418 int64 sent_value = 2;
419 // The raw 64-bit override value that can be written by software.
420 int64 override_value = 3;
421 // The raw 64-bit value that the RMP is going to send, unless overridden.
422 int64 firmware_value = 4;
423 // Whether or not the override_value is being used.
424 bool override_enabled = 5;
425 }
426}
428
430message NetworkInfo {
431 RSINetworkType type = 1;
432 int32 pdo_input_count = 4;
433 int32 pdo_output_count = 5;
434
435 // Collection of all Network PDO Inputs.
436 repeated PdoInputInfo pdo_inputs = 6;
437
438 // Collection of all Network PDO Outputs.
439 repeated PdoOutputInfo pdo_outputs = 7;
440
441 message PdoInputInfo {
442 string name = 1;
443 AddressInfo address_info = 2;
444 int32 bit_size = 3;
445 int32 bit_offset = 4;
446 }
447
448 message PdoOutputInfo {
449 string name = 1;
450 AddressInfo sent_value_address = 2;
451 AddressInfo override_value_address = 3;
452 AddressInfo firmware_value_address = 4;
453 int32 bit_size = 5;
454 int32 bit_offset = 6;
455 }
456}
458
459
460
461
463message AxisRequest {
464 // Common request header
465 RSI.RapidServer.RequestHeader header = 1;
466
467 // Axis index
468 int32 index = 2;
469
470 optional AxisConfig config = 3;
471 optional AxisAction action = 4;
472}
474
476message AxisResponse {
477 // Common response header. Always check the response header for errors.
478 RSI.RapidServer.ResponseHeader header = 1;
479
480 // Axis index
481 int32 index = 2;
482
483 optional AxisConfig config = 3;
484 optional AxisAction action = 4;
485 optional AxisInfo info = 5;
486 optional AxisStatus status = 6;
487}
489
491message AxisBatchRequest {
492 // Common request header
493 RSI.RapidServer.RequestHeader header = 1;
494
495 repeated AxisRequest requests = 2;
496}
497
498message AxisBatchResponse {
499 // Common response header. Always check the response header for errors.
500 RSI.RapidServer.ResponseHeader header = 1;
501
502 repeated AxisResponse responses = 2;
503}
505
507message AxisStatus {
508 // Is the amp enabled?
509 bool amp_enabled = 1;
510
511 // The state (IDLE, MOVING, ERROR, etc.).
512 RSIState state = 2;
513
514 // The cause of the error (if in ERROR, STOPPED, STOPPING_ERROR state).
515 RSISource source = 3;
516
517 // Extra fault info from the drive
518 string source_name = 4;
519
520 // Positions.
521 PositionStatus position = 5;
522
523 // Command and actual velocity.
524 VelocityStatus velocity = 6;
525
526 // Command acceleration.
527 AccelerationStatus acceleration = 7;
528
529 // How many frames does the Axis have left to execute?
530 int32 frames_to_execute = 8;
531
532 // The motion id as stored in the Axis class (unsigned 16-bit integer).
533 uint32 motion_id = 9;
534
535 // The currently executing motion identifier (unsigned 16-bit integer).
536 uint32 motion_id_executing = 10;
537
538 // The currently exeucting motion element identifier (unsigned 16-bit integer).
539 int32 element_id_executing = 11;
540
541 // Is electronic gearing enabled?
542 bool gear_enabled = 12;
543
544 // Status bits related to the motor.
545 MotorStatusBits motor_status_bits = 13;
546
547 // Status bits related to motion.
548 MotionStatusBits motion_status_bits = 14;
549
550 // DS402 status bits, for drives that support DS402.
551 Ds402StatusBits ds402_status_bits = 15;
552
553 // Dedicated output bits.
554 DedicatedOutputBits dedicated_output_bits = 16;
555
556 // Dedicated input bits.
557 DedicatedInputBits dedicated_input_bits = 17;
558
559 message PositionStatus {
560 double command = 1;
561 double actual = 2;
562 double error = 3;
563 double target = 4;
564 double origin = 5;
565 double encoder_0 = 6;
566 double encoder_1 = 7;
567 double compensation = 8;
568 double backlash = 9;
569 }
570
571 message VelocityStatus {
572 double command = 1;
573 double actual = 2;
574 }
575
576 message AccelerationStatus {
577 double command = 1;
578 }
579
580 message MotorStatusBits {
581 bool amp_fault = 1;
582 bool amp_warning = 2;
583 bool feedback_fault = 3;
584 bool limit_position_error = 4;
585 bool limit_torque = 5;
586 bool limit_hardware_negative = 6;
587 bool limit_hardware_positive = 7;
588 bool limit_software_negative = 8;
589 bool limit_software_positive = 9;
590 }
591
592 message MotionStatusBits {
593 bool done = 1;
594 bool start = 2;
595 bool modify = 3;
596 bool at_velocity = 4;
597 bool out_of_frames = 5;
598 bool near_target = 6;
599 bool at_target = 7;
600 bool settled = 8;
601 }
602
603 message Ds402StatusBits {
604 bool ready_to_switch_on = 1;
605 bool switched_on = 2;
606 bool operation_enabled = 3;
607 bool fault = 4;
608 bool voltage_enabled = 5;
609 bool quick_stop = 6;
610 bool switch_on_disabled = 7;
611 bool warning = 8;
612 bool manufacturer_specific_8 = 9;
613 bool remote = 10;
614 bool target_reached = 11;
615 bool internal_limit_active = 12;
616 bool operation_mode_specific_12 = 13;
617 bool operation_mode_specific_13 = 14;
618 bool manufacturer_specific_14 = 15;
619 bool manufacturer_specific_15 = 16;
620 }
621
622 message DedicatedOutputBits {
623 bool amp_enable = 1;
624 bool brake_release = 2;
625 }
626
627 message DedicatedInputBits {
628 bool amp_fault = 1;
629 bool brake_applied = 2;
630 bool home = 3;
631 bool limit_hardware_positive = 4;
632 bool limit_hardware_negative = 5;
633 bool index = 6;
634 bool index_secondary = 7;
635 bool feedback_fault = 8;
636 bool captured = 9;
637 bool hall_a = 10;
638 bool hall_b = 11;
639 bool hall_c = 12;
640 bool amp_active = 13;
641 bool warning = 14;
642 bool drive_status_9 = 15;
643 bool drive_status_10 = 16;
644 bool feedback_fault_primary = 17;
645 bool feedback_fault_secondary = 18;
646 }
647}
649
651message AxisAction {
652 optional Abort abort = 1;
653 optional EStopAbort e_stop_abort = 2;
654 optional EStopModifyAbort e_stop_modify_abort = 3;
655 optional EStopModify e_stop_modify = 4;
656 optional EStop e_stop = 5;
657 optional TriggeredModify triggered_modify = 6;
658 optional Stop stop = 7;
659 optional Resume resume = 8;
660
661 optional ClearFaults clear_faults = 9;
662 optional AmpEnable amp_enable = 10;
663 optional AmpDisable amp_disable = 11;
664 optional HoldGateSet hold_gate_set = 12;
665 optional PositionSet position_set = 13;
666 optional Move move = 14;
667 optional GearEnable gear_enable = 15;
668 optional GearDisable gear_disable = 16;
669 optional Home home = 17;
670 optional HomeCancel home_cancel = 18;
671
672 message Abort {}
673 message EStopAbort {}
674 message EStopModifyAbort{}
675 message EStopModify{}
676 message EStop {}
677 message TriggeredModify {}
678 message Stop {}
679 message Resume {}
680
681 message ClearFaults {}
682
683 message AmpEnable {
684 optional int32 timeout_milliseconds = 1;
685 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
686 }
687 message AmpDisable {}
688 message HoldGateSet {
689 bool state = 1;
690 }
691 message PositionSet{
692 double position = 1;
693 }
694
695 message Move {
696 // Request one type of motion.
697 oneof move {
698 AxisMovePointToPoint point_to_point = 3;
699 AxisMoveVelocity velocity = 4;
700 MoveStreaming streaming = 5;
701 }
702
703 // Specify the MotionID for this move. (If you don't specify one, it will be auto-incremented after each move.)
704 optional uint32 motion_id = 6;
705
706 // Specify MotionHold criteria, if you want the motion to hold execution until conditions are met.
707 optional MotionHold motion_hold = 7;
708
709 // Wait for motion to complete? (See ConfigSet settling criteria.)
710 bool blocking = 8;
711 }
712
713 message GearEnable {
714 optional int32 master_axis_number = 2;
715 optional RSIAxisMasterType gearing_source = 3;
716 int32 numerator = 4;
717 int32 denominator = 5;
718 }
719 message GearDisable {}
720
721 message Home {
722 optional bool move_to_zero = 1;
723 }
724 message HomeCancel {}
725}
726
727// Internal MoveRequest messages.
728 message AxisMovePointToPoint {
729 // Move to this position. Absolute, unless the relative boolean is true. (UserUnits)
730 double position = 1;
731
732 // Maximum velocity. (UserUnits/second).
733 optional double velocity = 2;
734
735 // Maximum acceleration. (UserUnits/second^2). If specified, velocity and deceleration must be specified.
736 optional double acceleration = 3;
737
738 // Maximum deceleration. (UserUnits/second^2). If specified, velocity and acceleration must be specified
739 optional double deceleration = 4;
740
741 // Percentage of acceleration that will be smoothed. (0-100)
742 // Acceleration time will not change so if Jerk Percent is 100, maximum acceleration will be 2x the specified maximum.
743 // If specified, velocity, acceleration, and deceleration must be specified.
744 optional double jerk_percent = 5;
745
746 // Final velocity. 0.0 is default. (UserUnits/second)
747 // If specified, velocity, acceleration, and decleration must be specified.
748 optional double final_velocity = 6;
749
750 // Set true if you intend position to be a relative increment. If specified, jerk_percent must be specified.
751 bool relative = 7;
752}
753
754message AxisMoveVelocity {
755 // Move at this velocity. (UserUnits/second)
756 double velocity = 1;
757
758 // Maximum acceleration. (UserUnits/second^2)
759 double acceleration = 2;
760
761 // Percentage of acceleration that will be smoothed. (0-100)
762 // Acceleration time will not change so if Jerk Percent is 100, maximum acceleration will be 2x the specified maximum.
763 double jerk_percent = 3;
764}
765
766message MoveStreaming {
767 repeated double positions = 1;
768 repeated double velocities = 2;
769 repeated double accelerations = 3;
770 repeated double jerks = 4;
771 repeated double times = 5;
772 int32 empty_count = 6;
773 bool retain = 7;
774 bool final = 8;
775
776 // Specify the interpolation algorithm to use when only providing positions and no velocities nor accelerations.
777 // Uses the RapidCode method RapidCodeMotion::MovePT()
778 // The three currently supported ones are:
779 // RSIMotionTypePT (no interpolation)
780 // RSIMotionTypeBSPLINE (default)
781 // RSIMotionTypePVT is used in the RapidCode method RapidCodeMotion::MovePVT(), i.e. when positions and velocities are given.
782 optional RSIMotionType pt_motion_type = 9;
783}
785
786message MotionHoldGate{
787 int32 number = 1;
788}
789
790message MotionHoldAxis {
791 // If true, motion will hold for Actual Position. If false, it will hold for Command Position.
792 bool actual = 1;
793
794 // Greater than, less than, etc.
795 RSIUserLimitLogic logic = 2;
796
797 // The number of the Axis whose position we're waiting for.
798 int32 hold_axis_number = 3;
799
800 // The position of the hold axis which will trigger the hold to finish.
801 double hold_axis_position = 4;
802}
803
804message MotionHoldUser {
805 // The 64-bit host address on the server.
806 uint64 address = 1;
807
808 // The 32-bit mask that will be ANDed with the value stored at the User Address.
809 int32 mask = 2;
810
811 // The 32-bit mask that will compared for equality after the AND mask.
812 int32 pattern = 3;
813}
814
815message MotionHold {
816 // Choose the type of hold.
817 oneof type {
818 MotionHoldGate gate = 2;
819 MotionHoldAxis axis = 3;
820 MotionHoldUser user = 4;
821 }
822
823 // The motion will execute regardless of hold status after this amount of time.
824 optional double hold_timeout_seconds = 6;
825
826 // This optional delay will occur before motion starts.
827 optional double delay_seconds = 7;
828}
829
831message AxisConfig {
832 // The number of encoder counts to UserUnits.
833 optional double user_units = 1;
834
835 // The origin position, typically set when homing.
836 optional double origin_position = 2;
837
838 // Give the Axis a name, if you like.
839 optional string user_label = 3;
840
841 // Default trajectory values.
842 optional TrajectoryDefaults defaults = 4;
843 optional HardwareTrigger amp_fault = 5;
844 optional HardwareTrigger home_switch = 6;
845 optional ErrorLimit error_limit = 7;
846 optional HardwareTrigger hardware_negative_limit = 8;
847 optional HardwareTrigger hardware_positive_limit = 9;
848 optional SoftwareTrigger software_negative_limit = 10;
849 optional SoftwareTrigger software_positive_limit = 11;
850 optional Settling settling = 12;
851 optional MotionConfig motion = 13;
852 optional Homing homing = 14;
853 optional int32 frame_buffer_size = 15;
854 optional RSIMotorDisableAction amp_disable_action = 16;
855
856 // Internal messages.
857 message TrajectoryDefaults
858 {
859 optional double velocity = 1;
860 optional double acceleration = 2;
861 optional double deceleration = 3;
862 optional double jerk_percent = 4;
863 optional double position1 = 5;
864 optional double position2 = 6;
865 optional double relative_increment = 7;
866 }
867
868 message HardwareTrigger {
869 optional RSIAction action = 1;
870 optional bool trigger_state = 2;
871 optional double duration = 3;
872 }
873
874 message SoftwareTrigger {
875 optional RSIAction action = 1;
876 optional double trigger_value = 2;
877 }
878
879 message ErrorLimit {
880 optional RSIAction action = 1;
881 optional double trigger_value = 2;
882 optional double duration = 3;
883 }
884
885 message Settling {
886 optional double position_tolerance_fine = 1;
887 optional double position_tolerance_coarse = 2;
888 optional double velocity_tolerance = 3;
889 optional double time_seconds = 4;
890 optional bool on_stop = 5;
891 optional bool on_estop = 6;
892 optional bool on_estop_cmd_equals_actual = 7;
893 }
894
895 message MotionConfig {
896 // Seconds.
897 optional double stop_time = 1;
898
899 // Seconds.
900 optional double estop_time = 2;
901
902 // UserUnits per second.
903 optional double triggered_modify_deceleration = 3;
904
905 // Jerk percent (0-100).
906 optional double triggered_modify_jerk_percent = 4;
907
908 // UserUnits per second.
909 optional double estop_modify_deceleration = 5;
910
911 // Jerk percent (0-100).
912 optional double estop_modify_jerk_percent = 6;
913 }
914 message Homing {
915 optional RSIHomeMethod method = 1;
916 optional double offset = 2;
917 optional double velocity = 3; // this requires the home stage?
918 optional double slow_velocity = 4;
919 optional double acceleration = 5; // this requires the home stage?
920 optional double deceleration = 6; // this requires the home stage?
921 optional double jerk_percent = 7;
922 optional bool state = 8;
923 optional RSIHomeStage stage = 9;
924 optional RSIAction behavior = 10;
925 }
926}
928
930message AxisInfo {
931 // Axis index.
932 int32 index = 1;
933
934 // Host and firmware addresses
935 repeated AddressInfo addresses = 2;
936
937 // NetworkNode information.
938 NetworkNodeInfo node_info = 3;
939
940 // Constants from the Axis object
941 Constants constants = 4;
942
943 message Constants {
944 // The value returned by NetworkIndexGet() when the index is invalid or nonexistent for this Axis.
945 uint32 network_index_invalid = 1;
946
947 // The default time an Axis waits before generating an AmpFault if the Axis does not enable after calling AmpEnableSet(true).
948 double amp_enable_amp_fault_timeout_seconds_default = 2;
949 }
950
951}
953
954
956message MultiAxisRequest {
957 // Common request header
958 RSI.RapidServer.RequestHeader header = 1;
959
960 // MultiAxis index
961 int32 index = 2;
962
963 optional MultiAxisConfig config = 3;
964 optional MultiAxisAction action = 4;
965}
967
969message MultiAxisResponse {
970 // Common response header. Always check the response header for errors.
971 RSI.RapidServer.ResponseHeader header = 1;
972
973 // MultiAxis index
974 int32 index = 2;
975
976 optional MultiAxisConfig config = 3;
977 optional MultiAxisAction action = 4;
978 optional MultiAxisInfo info = 5;
979 optional MultiAxisStatus status = 6;
980}
982
984message MultiAxisBatchRequest {
985 // Common request header
986 RSI.RapidServer.RequestHeader header = 1;
987
988 repeated MultiAxisRequest requests = 2;
989}
990
991message MultiAxisBatchResponse {
992 // Common response header. Always check the response header for errors.
993 RSI.RapidServer.ResponseHeader header = 1;
994
995 repeated MultiAxisResponse responses = 2;
996}
998
999
1001message MultiAxisStatus {
1002 RSIState state = 1;
1003 RSISource source = 2;
1004 string source_name = 3;
1005 bool amp_enabled = 4;
1006 MotionStatusBits motion_status_bits = 5;
1007 repeated AxisStatus axis_statuses = 6;
1008 bool is_mapped = 7;
1009
1010 message MotionStatusBits {
1011 bool done = 1;
1012 bool start = 2;
1013 bool modify = 3;
1014 bool at_velocity = 4;
1015 bool out_of_frames = 5;
1016 }
1017}
1019
1021message MultiAxisAction {
1022 optional Abort abort = 1;
1023 optional EStopAbort e_stop_abort = 2;
1024 optional EStopModifyAbort e_stop_modify_abort = 3;
1025 optional EStopModify e_stop_modify = 4;
1026 optional EStop e_stop = 5;
1027 optional TriggeredModify triggered_modify = 6;
1028 optional Stop stop = 7;
1029 optional Resume resume = 8;
1030
1031 optional ClearFaults clear_faults = 9;
1032 optional AmpEnable amp_enable = 10;
1033 optional AmpDisable amp_disable = 11;
1034 optional Move move = 12;
1035 optional RemoveAxes remove_axes = 13;
1036 optional Unmap unmap = 14;
1037 optional Map map = 15;
1038 optional AxisAdd axis_add = 16;
1039
1040 message Abort {}
1041 message EStopAbort {}
1042 message EStopModifyAbort{}
1043 message EStopModify{}
1044 message EStop {}
1045 message TriggeredModify {}
1046 message Stop {}
1047 message Resume {}
1048
1049 message ClearFaults {}
1050
1051 message AmpEnable {
1052 optional int32 timeout_milliseconds = 1;
1053 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
1054 }
1055 message AmpDisable {}
1056
1057 message Move {
1058 oneof move {
1059 MultiAxisMovePointToPoint point_to_point = 3;
1060 MultiAxisMoveVelocity velocity = 4;
1061 MoveStreaming streaming = 5;
1062 }
1063 optional uint32 motion_id = 6;
1064
1065 // Specify MotionHold criteria, if you want the motion to hold execution until conditions are met.
1066 optional MotionHold motion_hold = 7;
1067
1068 bool blocking = 8;
1069
1070 message MultiAxisMovePointToPoint {
1071 repeated AxisMovePointToPoint axis_move_point_to_points = 1;
1072 bool relative = 2;
1073 }
1074
1075 message MultiAxisMoveVelocity {
1076 repeated AxisMoveVelocity axis_move_velocities = 1;
1077 }
1078 }
1079 message RemoveAxes {}
1080 message Unmap {}
1081 message Map {}
1082 message AxisAdd {
1083 int32 axis_index = 1;
1084 }
1085}
1087
1089message MultiAxisConfig {
1090 repeated int32 axes_indices = 1;
1091 optional string user_label = 2;
1092 optional double feed_rate = 3;
1093 optional double stop_time = 4;
1094 optional double e_stop_time = 5;
1095}
1097
1099message MultiAxisInfo {
1100 // The zero-based index for this MultiAxis.
1101 int32 index = 1;
1102
1103 // The internal motion index.
1104 int32 motion_index = 2;
1105
1106 // Host and firmware addresses
1107 repeated AddressInfo addresses = 3;
1108}
1110
1112message NetworkNodeInfo {
1113 // True if hardware exists.
1114 bool exists = 1;
1115
1116 // The node index.
1117 int32 index = 2;
1118
1119 // The number of Axis objects on this node.
1120 int32 axis_count = 3;
1121
1122 // True if this node has I/O.
1123 bool has_io = 4;
1124
1125 // The number of digital/analog inputs and outputs on this node.
1126 IOCounts io_counts = 5;
1127
1128 // The bit masks and 64-bit host addresses for this node's I/O.
1129 IOAddresses io_addresses = 6;
1130
1131 // The node type.
1132 RSINodeType type = 7;
1133
1134 // 32-bit vendor identifier.
1135 uint32 vendor_id = 8;
1136
1137 // 32-bit product code.
1138 uint32 product_code = 9;
1139
1140 // 32-bit hardware revision.
1141 uint32 hardware_revision = 10;
1142
1143 // Station alias.
1144 uint32 station_alias = 11;
1145
1146 // Serial number.
1147 string serial_number = 12;
1148
1149 // The node's name.
1150 string name = 13;
1151
1152 // Product name.
1153 string product_name = 14;
1154
1155 // Vendor name.
1156 string vendor_name = 15;
1157
1158 Constants constants = 16;
1159
1160
1161 // Internal messages.
1162
1163 // The number of digital/analog inputs and outputs.
1164 message IOCounts {
1165 // Number of digital inputs.
1166 int32 digital_inputs = 1;
1167
1168 // Number of digital outputs.
1169 int32 digital_outputs = 2;
1170
1171 // Number of analog inputs.
1172 int32 analog_inputs = 3;
1173
1174 // Number of analog outputs.
1175 int32 analog_outputs = 4;
1176 }
1177
1178 message IOAddresses {
1179 // Masks and 64-bit host addresses for each digital intput.
1180 repeated AddressInfo digital_inputs = 1;
1181
1182 // Masks and 64-bit host addreses for each digital output.
1183 repeated AddressInfo digital_outputs = 2;
1184
1185 // Masks and 64-bit host addreses for each analog input.
1186 repeated AddressInfo analog_inputs = 3;
1187
1188 // Masks and 64-bit host addreses for each analog output.
1189 repeated AddressInfo analog_outputs = 4;
1190 }
1191
1192 message Constants {
1193 // Default time to wait when reading or writing an SDO with ServiceChannelRead() or ServiceChannelWrite()
1194 uint32 sdo_timeout_milliseconds_default = 1;
1195 }
1196}
1198
1200message NetworkNodeStatus {
1201 // All the digital input states.
1202 repeated bool digital_input_states = 2;
1203
1204 // All the digital output states.
1205 repeated bool digital_output_states = 3;
1206
1207 // All the analog input values.
1208 repeated int32 analog_input_values = 4;
1209
1210 // All the analog output values.
1211 repeated int32 analog_output_values = 5;
1212}
1214
1215
1217// The state of the digital output at the specified bit number.
1218message DigitalOutput {
1219 // The bit number.
1220 int32 bit_number = 1;
1221
1222 // The state of the digital output. When this message is used as a request
1223 // to set a digital output, the digital output will be set to this value.
1224 // When this message is returned as an action response, this field holds the
1225 // new state.
1226 bool state = 2;
1227}
1228
1229// The value of the analog output at the specified channel.
1230message AnalogOutput {
1231 // The channel number.
1232 int32 channel = 1;
1233
1234 // The value of the analog output. When this message is used as a request
1235 // to set an analog output, the analog output will be set to this value.
1236 // When this message is returned as an action response, this field holds the
1237 // new value.
1238 int32 value = 2;
1239}
1240
1241// The location, size, and value of a Service Data Object (SDO).
1242message SDO {
1243 // The SDO index.
1244 int32 index = 1;
1245
1246 // The SDO sub-index.
1247 int32 sub_index = 2;
1248
1249 // The number of bytes.
1250 int32 byte_count = 3;
1251
1252 // Set this field True to read the SDO value as a string. By default, SDO
1253 // values are read as integers unless this field is True. This field is
1254 // only used to read an SDO, and is ignored when used to request a write.
1255 optional bool is_string_value = 4;
1256
1257 // Wait this long for a response, otherwise it will throw a timeout error.
1258 optional uint32 timeout_milliseconds = 5;
1259
1260 // The SDO value. Set either integer_value or string_value during an SDO write.
1261 // This field is ignored when requesting an SDO read, but will contain the
1262 // value of the SDO when responding to an SDO read.
1263 oneof value {
1264 // Integer value used for all non-string types.
1265 int32 integer_value = 6;
1266
1267 // String value.
1268 string string_value = 7;
1269 }
1270}
1271
1272// An ASCII command to execute on an AKD drive.
1273message AKDASCII {
1274 // The command as a string.
1275 string command = 1;
1276
1277 // The returned result of the command. This field is ignored when requesting
1278 // an AKDASCII command.
1279 optional string result = 2;
1280}
1281
1282// A set of actions to perform on a network node. This message is used to
1283// request a set of actions. A new instance of this message will be returned
1284// containing the results of the requested acitons.
1285message NetworkNodeAction {
1286
1287 // Any number of digital outputs to set. Add instances of the DigitalOutput
1288 // message to this field to set digital outputs. When this message is
1289 // returned in the action response, this field contains the new states of
1290 // the digital outputs.
1291 repeated DigitalOutput digital_output_sets = 1;
1292
1293 // Any number of analog outputs to set. Add instances of the AnalogOutput
1294 // message to this field to set analog outputs. When this message is
1295 // returned in the action response, this field contains the new values of
1296 // the analog outputs.
1297 repeated AnalogOutput analog_output_sets = 2;
1298
1299 // The requested SDO value(s) to write to the network. Add instances of the
1300 // SDO message to this field to write to SDOs. When this message is returned
1301 // in the action response, this field will be empty.
1302 repeated SDO sdo_writes = 3;
1303
1304 // The SDO(s) to be read from the network. Add instances of the SDO message
1305 // to this field to read SDO values. When this message is returned in the
1306 // action response, the SDO messages will contain the read values.
1307 repeated SDO sdo_reads = 4;
1308
1309 // AKD ASCII command(s). Only used for Kollmorgen AKD drives. Add instances
1310 // of the AKDASCII message to request an ASCII command. When this message
1311 // is returned in the action response, the AKDASCII messages will contain
1312 // both the command executed and the returned result as a string.
1313 repeated AKDASCII akd_asciis = 5;
1314}
1316
1318message NetworkNodeConfig {}
1320
1322message NetworkNodeRequest {
1323 // Common request header
1324 RSI.RapidServer.RequestHeader header = 1;
1325
1326 // Network Node index
1327 int32 index = 2;
1328
1329 optional NetworkNodeConfig config = 3;
1330 optional NetworkNodeAction action = 4;
1331}
1333
1335message NetworkNodeResponse {
1336 // Common response header. Always check the response header for errors.
1337 RSI.RapidServer.ResponseHeader header = 1;
1338
1339 // Network Node index
1340 int32 index = 2;
1341
1342 optional NetworkNodeConfig config = 3;
1343 optional NetworkNodeAction action = 4;
1344 optional NetworkNodeInfo info = 5;
1345 optional NetworkNodeStatus status = 6;
1346}
1348
1350message NetworkNodeBatchRequest {
1351 // Common request header
1352 RSI.RapidServer.RequestHeader header = 1;
1353
1354 repeated NetworkNodeRequest requests = 2;
1355}
1356
1357message NetworkNodeBatchResponse {
1358 // Common response header. Always check the response header for errors.
1359 RSI.RapidServer.ResponseHeader header = 1;
1360
1361 repeated NetworkNodeResponse responses = 2;
1362}
1364
1365
1367message RecorderRequest {
1368 // Common request header.
1369 RSI.RapidServer.RequestHeader header = 1;
1370
1371 // The Recorder index. (Check MotionController's Recorder count.)
1372 int32 index = 2;
1373
1374 optional RecorderConfig config = 3;
1375 optional RecorderAction action = 4;
1376}
1378
1379
1381message RecorderResponse {
1382 // Common response header. Always check the response header for errors.
1383 RSI.RapidServer.ResponseHeader header = 1;
1384
1385 // Recorder index
1386 int32 index = 2;
1387
1388 optional RecorderConfig config = 3;
1389 optional RecorderAction action = 4;
1390 optional RecorderInfo info = 5;
1391 optional RecorderStatus status = 6;
1392}
1394
1396message RecorderBatchRequest {
1397 // Common request header
1398 RSI.RapidServer.RequestHeader header = 1;
1399
1400 repeated RecorderRequest requests = 2;
1401}
1402
1403message RecorderBatchResponse {
1404 // Common response header. Always check the response header for errors.
1405 RSI.RapidServer.ResponseHeader header = 1;
1406
1407 repeated RecorderResponse responses = 2;
1408}
1410
1411
1413message RecorderInfo { }
1415
1417message RecorderStatus {
1418 // Is the Recorder recording?
1419 bool is_recording = 1;
1420
1421 // The number of records available for retreival.
1422 int32 records_available = 2;
1423}
1425
1427message RecorderAction {
1428
1429 optional Reset reset = 1;
1430 optional Start start = 2;
1431 optional Stop stop = 3;
1432 optional RetrieveRecords retrieve_records = 4;
1433
1434 message Reset {}
1435 message Start {}
1436 message Stop {}
1437
1438 message RetrieveRecords {
1439 // New data records will be in the response, if any are available.
1440 repeated Record records = 1;
1441
1442 // A data record from the recorder.
1443 message Record {
1444 // The number of these will depend on the number of addresses to record in the recorder configuration.
1445 repeated Data data = 1;
1446
1447 // Type will depend on what is set in config for each address.
1448 message Data {
1449 // Keep the names short to keep packet sizes smaller.
1450 oneof data {
1451 double d = 1;
1452 int32 i32 = 2;
1453 }
1454 }
1455 }
1456 }
1457}
1459
1460
1462message RecorderConfig {
1463 // Recorder period, in samples.
1464 int32 period = 1;
1465
1466 // If true, the recorder will use a circular buffer, overwriting old data (be sure to read it out).
1467 bool circular_buffer = 2;
1468
1469 // The addresses to record. Get these from Controller/Axis/MultiAxis InfoGet rpcs.
1470 repeated AddressInfo addresses = 3;
1471
1472 // Use this to start and end recording with motion.
1473 RecorderTriggerOnMotion trigger = 4;
1474
1475 // Configure the recorder to generate a RECORDER_HIGH interrupt when the buffer reaches this size.
1476 int32 buffer_high_count = 5;
1477
1478 // Read-only, this tells us how many records fit inside the recorder's buffer (see MotionController config's recorder buffer size).
1479 int32 record_max_count = 6;
1480
1481 // Internal messages.
1482
1483 message RecorderTriggerOnMotion {
1484 // Use an Axis index or MutliAxis's motion index if you want the recorder to start when motion starts.
1485 int32 motion_index = 1;
1486 }
1487}
1489
1491message UserLimitStatus {
1492 // The UserLimit's index.
1493 int32 index = 1;
1494
1495 // Is the UserLimit processing in the RMP firmware_version?
1496 bool enabled = 2;
1497
1498 // Is the UserLimit currently triggered?
1499 bool state = 3;
1500}
1502
1504message UserLimitAction {
1505
1506 optional Reset reset = 1;
1507 optional Enable enable = 2;
1508 optional Disable disable = 3;
1509
1510 message Reset {};
1511 message Enable {};
1512 message Disable {};
1513}
1515
1516
1518message UserLimitInfo {}
1520
1521
1523message UserLimitConfig {
1524
1525 // The type of trigger.
1526 optional RSIUserLimitTriggerType trigger_type = 1;
1527
1528 // The primary condition.
1529 optional UserLimitCondition condition_0 = 2;
1530
1531 // The second condition. Condition 1 will not be set if trigger type is SINGLE_CONDITION or invalid
1532 optional UserLimitCondition condition_1 = 3;
1533
1534 // Optionally set some output when the UserLimit triggers.
1535 optional UserLimitOutput output = 4;
1536
1537 // Optionally perform an action on an Axis when the UserLimit triggers.
1538 optional RSIAction action = 5;
1539
1540 // Perform the optional action on this Axis.
1541 optional int32 action_axis = 6;
1542
1543 // Duration the trigger state must be active before triggering. (Seconds)
1544 optional double duration = 7;
1545
1546 // True if the UserLimit should trigger once, then disable itself.
1547 optional bool is_single_shot = 8;
1548
1549 // Configurable interrupt data.
1550 repeated UserLimitInterruptUserData user_data = 9;
1551
1552 // Internal messages.
1553 message UserLimitCondition {
1554 // The data type to be evaluated.
1555 RSIDataType data_type = 1;
1556
1557 // The logic of the UserLimit.
1558 RSIUserLimitLogic logic = 2;
1559
1560 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1561 uint64 address = 3;
1562
1563 // A 32-bit AND mask.
1564 optional uint32 mask = 4;
1565
1566 // The 32-bit trigger value. (for 32-bit data types)
1567 optional int32 integer_limit_value = 5;
1568
1569 // The 64-bit double trigger value (for 64-bit doubles data types only).
1570 optional double double_limit_value = 6;
1571 }
1572
1573 message UInt32Masks {
1574 // 32-bit AND mask.
1575 uint32 and_mask = 1;
1576
1577 // 32-bit OR mask.
1578 uint32 or_mask = 2;
1579 }
1580
1581 message UInt64Masks {
1582 // 64-bit AND mask.
1583 uint64 and_mask = 1;
1584
1585 // 64-bit OR mask;
1586 uint64 or_mask = 2;
1587 }
1588
1589 message UserLimitOutput {
1590 // True if enabled
1591 bool enabled = 2;
1592
1593 // The type of data to output.
1594 RSIDataType data_type = 3;
1595
1596 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1597 uint64 address = 4;
1598
1599 // The type of output.
1600 oneof output {
1601 // Perform an AND and OR on a 64-bit value.
1602 UInt32Masks uint32_masks = 6;
1603
1604 // Output a 32-bit value.
1605 int32 int32_value = 7;
1606
1607 // Peform an AND and OR on a 64-bit value.
1608 UInt64Masks uint64_masks = 8;
1609
1610 // Output a 64-bit double.
1611 double double_value = 9;
1612
1613 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1614 // Use this field when you want the UserLimit to copy data from the input address to the output address.
1615 uint64 input_address = 10;
1616 }
1617 }
1618
1619 message UserLimitInterruptUserData {
1620 // Interrupt data index (0-4).
1621 uint32 index = 1;
1622
1623 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1624 optional uint64 address = 2;
1625 }
1626}
1628
1630message UserLimitRequest {
1631 // Common request header.
1632 RSI.RapidServer.RequestHeader header = 1;
1633
1634 // UserLimit index.
1635 int32 index = 2;
1636
1637 optional UserLimitConfig config = 3;
1638
1639 optional UserLimitAction action = 4;
1640}
1642
1644message UserLimitResponse {
1645 // Common response header. Always check the response header for errors.
1646 RSI.RapidServer.ResponseHeader header = 1;
1647
1648 // UserLimit index.
1649 int32 index = 2;
1650
1651 optional UserLimitConfig config = 3;
1652 optional UserLimitAction action = 4;
1653 optional UserLimitInfo info = 5;
1654 optional UserLimitStatus status = 6;
1655}
1657
1659message UserLimitBatchRequest {
1660 // Common request header.
1661 RSI.RapidServer.RequestHeader header = 1;
1662
1663 repeated UserLimitRequest requests = 2;
1664}
1665
1666message UserLimitBatchResponse {
1667 // Common response header. Always check the response header for errors.
1668 RSI.RapidServer.ResponseHeader header = 1;
1669
1670 repeated UserLimitResponse responses = 2;
1671}
1673
1675message RTOSConfig {}
1677
1679message RTOSInfo {
1680 // The RMP process catalog.
1681 string rmp_catalog = 1;
1682
1683 // The RMPNetwork process catalog.
1684 string rmp_network_catalog = 2;
1685
1686 // The number of INtime nodes.
1687 uint32 node_count = 3;
1688}
1690
1692message RTOSAction {
1693 optional Restart restart = 1;
1694 optional Stop stop = 2;
1695 optional Start start = 3;
1696
1697 message Restart {}
1698 message Stop {}
1699 message Start {}
1700}
1702
1704message RTOSStatus {
1705 // The status of the INtime node
1706 INtimeStatus status = 3;
1707}
1709
1711message RTOSRequest {
1712 // Common request header
1713 RSI.RapidServer.RequestHeader header = 1;
1714
1715 // Specify a specific INtime node by name.
1716 string name = 2;
1717
1718 optional RTOSConfig config = 3;
1719 optional RTOSAction action = 4;
1720}
1722
1724message RTOSResponse {
1725 // Common response header. Always check the response header for errors.
1726 RSI.RapidServer.ResponseHeader header = 1;
1727
1728 // Specify a specific INtime node by name.
1729 string name = 2;
1730
1731 optional RTOSConfig config = 3;
1732 optional RTOSAction action = 4;
1733 optional RTOSInfo info = 5;
1734 optional RTOSStatus status = 6;
1735}
1737
1739message RTOSBatchRequest {
1740 // Common request header
1741 RSI.RapidServer.RequestHeader header = 1;
1742
1743 repeated RTOSRequest requests = 2;
1744}
1745
1746message RTOSBatchResponse {
1747 // Common response header. Always check the response header for errors.
1748 RSI.RapidServer.ResponseHeader header = 1;
1749
1750 repeated RTOSResponse responses = 2;
1751}
RSINetworkStartMode
Network start modes.
Definition rsienums.h:577
RSINetworkState
State of network.
Definition rsienums.h:557
RSIControllerAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition rsienums.h:404
RSIMotorDisableAction
Action for when a motor is disabled.
Definition rsienums.h:1255
RSIMotionType
Streaming motion types.
Definition rsienums.h:979
RSIDataType
Data types for User Limits and other triggers.
Definition rsienums.h:644
RSIUserLimitLogic
Logic options for User Limits.
Definition rsienums.h:631
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1051
RSIAxisAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition rsienums.h:425
RSINetworkStartError
Network start errors.
Definition rsienums.h:583
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition rsienums.h:487
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:618
INtimeStatus
INtime status values.
Definition rsienums.h:1293
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:396
RSINetworkType
Type of Network topology.
Definition rsienums.h:611
RSINodeType
Valid Node types.
Definition rsienums.h:661
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:958
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1154
ServerInfo Start(Platform _platform, const char *const _nodeName, const char *const rmp_node, const char *const executable_path, const int32_t grpc_port=50051, const char *const friendly_name="RapidServer", const uint64_t timeout_ms=1000, const int32_t broadcast_port=60061)
Starts a RapidServer instance and confirms that the server process is started.