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