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