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 // The internal motion supervisor index
941 int32 motion_supervisor_index = 5;
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 supervisor index.
1104 int32 motion_supervisor_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 optional int32 period = 1;
1465
1466 // If true, the recorder will use a circular buffer, overwriting old data (be sure to read it out).
1467 optional 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 optional RecorderTriggerOnMotion trigger_on_motion = 4;
1474
1475 // Configure the recorder to generate a RECORDER_HIGH interrupt when the buffer reaches this size.
1476 optional 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 optional int32 record_max_count = 6;
1480
1481 // Internal messages.
1482
1483 message RecorderTriggerOnMotion {
1484 // Use an Axis or MutliAxis's motion supervisor index.
1485 optional int32 motion_supervisor_index = 1;
1486 // Set true if you want the recorder to start when motion starts and stop when motion is done.
1487 optional bool enable = 2;
1488 }
1489}
1490
1492
1494message UserLimitStatus {
1495 // The UserLimit's index.
1496 int32 index = 1;
1497
1498 // Is the UserLimit processing in the RMP firmware_version?
1499 bool enabled = 2;
1500
1501 // Is the UserLimit currently triggered?
1502 bool state = 3;
1503}
1505
1507message UserLimitAction {
1508
1509 optional Reset reset = 1;
1510 optional Enable enable = 2;
1511 optional Disable disable = 3;
1512
1513 message Reset {};
1514 message Enable {};
1515 message Disable {};
1516}
1518
1519
1521message UserLimitInfo {}
1523
1524
1526message UserLimitConfig {
1527
1528 // The type of trigger.
1529 optional RSIUserLimitTriggerType trigger_type = 1;
1530
1531 // The primary condition.
1532 optional UserLimitCondition condition_0 = 2;
1533
1534 // The second condition. Condition 1 will not be set if trigger type is SINGLE_CONDITION or invalid
1535 optional UserLimitCondition condition_1 = 3;
1536
1537 // Optionally set some output when the UserLimit triggers.
1538 optional UserLimitOutput output = 4;
1539
1540 // Optionally perform an action on an Axis when the UserLimit triggers.
1541 optional RSIAction action = 5;
1542
1543 // Perform the optional action on this Axis.
1544 optional int32 action_axis = 6;
1545
1546 // Duration the trigger state must be active before triggering. (Seconds)
1547 optional double duration = 7;
1548
1549 // True if the UserLimit should trigger once, then disable itself.
1550 optional bool is_single_shot = 8;
1551
1552 // Configurable interrupt data.
1553 repeated UserLimitInterruptUserData user_data = 9;
1554
1555 // Internal messages.
1556 message UserLimitCondition {
1557 // The data type to be evaluated.
1558 RSIDataType data_type = 1;
1559
1560 // The logic of the UserLimit.
1561 RSIUserLimitLogic logic = 2;
1562
1563 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1564 uint64 address = 3;
1565
1566 // A 32-bit AND mask.
1567 optional uint32 mask = 4;
1568
1569 // The 32-bit trigger value. (for 32-bit data types)
1570 optional int32 integer_limit_value = 5;
1571
1572 // The 64-bit double trigger value (for 64-bit doubles data types only).
1573 optional double double_limit_value = 6;
1574 }
1575
1576 message UInt32Masks {
1577 // 32-bit AND mask.
1578 uint32 and_mask = 1;
1579
1580 // 32-bit OR mask.
1581 uint32 or_mask = 2;
1582 }
1583
1584 message UInt64Masks {
1585 // 64-bit AND mask.
1586 uint64 and_mask = 1;
1587
1588 // 64-bit OR mask;
1589 uint64 or_mask = 2;
1590 }
1591
1592 message UserLimitOutput {
1593 // True if enabled
1594 bool enabled = 2;
1595
1596 // The type of data to output.
1597 RSIDataType data_type = 3;
1598
1599 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1600 uint64 address = 4;
1601
1602 // The type of output.
1603 oneof output {
1604 // Perform an AND and OR on a 64-bit value.
1605 UInt32Masks uint32_masks = 6;
1606
1607 // Output a 32-bit value.
1608 int32 int32_value = 7;
1609
1610 // Peform an AND and OR on a 64-bit value.
1611 UInt64Masks uint64_masks = 8;
1612
1613 // Output a 64-bit double.
1614 double double_value = 9;
1615
1616 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1617 // Use this field when you want the UserLimit to copy data from the input address to the output address.
1618 uint64 input_address = 10;
1619 }
1620 }
1621
1622 message UserLimitInterruptUserData {
1623 // Interrupt data index (0-4).
1624 uint32 index = 1;
1625
1626 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1627 optional uint64 address = 2;
1628 }
1629}
1631
1633message UserLimitRequest {
1634 // Common request header.
1635 RSI.RapidServer.RequestHeader header = 1;
1636
1637 // UserLimit index.
1638 int32 index = 2;
1639
1640 optional UserLimitConfig config = 3;
1641
1642 optional UserLimitAction action = 4;
1643}
1645
1647message UserLimitResponse {
1648 // Common response header. Always check the response header for errors.
1649 RSI.RapidServer.ResponseHeader header = 1;
1650
1651 // UserLimit index.
1652 int32 index = 2;
1653
1654 optional UserLimitConfig config = 3;
1655 optional UserLimitAction action = 4;
1656 optional UserLimitInfo info = 5;
1657 optional UserLimitStatus status = 6;
1658}
1660
1662message UserLimitBatchRequest {
1663 // Common request header.
1664 RSI.RapidServer.RequestHeader header = 1;
1665
1666 repeated UserLimitRequest requests = 2;
1667}
1668
1669message UserLimitBatchResponse {
1670 // Common response header. Always check the response header for errors.
1671 RSI.RapidServer.ResponseHeader header = 1;
1672
1673 repeated UserLimitResponse responses = 2;
1674}
1676
1678message RTOSConfig {}
1680
1682message RTOSInfo {
1683 // The RMP process catalog.
1684 string rmp_catalog = 1;
1685
1686 // The RMPNetwork process catalog.
1687 string rmp_network_catalog = 2;
1688
1689 // The number of INtime nodes.
1690 uint32 node_count = 3;
1691}
1693
1695message RTOSAction {
1696 optional Restart restart = 1;
1697 optional Stop stop = 2;
1698 optional Start start = 3;
1699
1700 message Restart {}
1701 message Stop {}
1702 message Start {}
1703}
1705
1707message RTOSStatus {
1708 // The status of the INtime node
1709 INtimeStatus status = 3;
1710}
1712
1714message RTOSRequest {
1715 // Common request header
1716 RSI.RapidServer.RequestHeader header = 1;
1717
1718 // Specify a specific INtime node by name.
1719 string name = 2;
1720
1721 optional RTOSConfig config = 3;
1722 optional RTOSAction action = 4;
1723}
1725
1727message RTOSResponse {
1728 // Common response header. Always check the response header for errors.
1729 RSI.RapidServer.ResponseHeader header = 1;
1730
1731 // Specify a specific INtime node by name.
1732 string name = 2;
1733
1734 optional RTOSConfig config = 3;
1735 optional RTOSAction action = 4;
1736 optional RTOSInfo info = 5;
1737 optional RTOSStatus status = 6;
1738}
1740
1742message RTOSBatchRequest {
1743 // Common request header
1744 RSI.RapidServer.RequestHeader header = 1;
1745
1746 repeated RTOSRequest requests = 2;
1747}
1748
1749message RTOSBatchResponse {
1750 // Common response header. Always check the response header for errors.
1751 RSI.RapidServer.ResponseHeader header = 1;
1752
1753 repeated RTOSResponse responses = 2;
1754}
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:1269
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:992
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:1065
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:1307
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:1168