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).
1255message SDO {
1256 // The SDO index.
1257 int32 index = 1;
1258
1259 // The SDO sub-index.
1260 int32 sub_index = 2;
1261
1262 // The number of bytes.
1263 int32 byte_count = 3;
1264
1265 // Set this field True to read the SDO value as a string. By default, SDO
1266 // values are read as integers unless this field is True. This field is
1267 // only used to read an SDO, and is ignored when used to request a write.
1268 optional bool is_string_value = 4;
1269
1270 // Wait this long for a response, otherwise it will throw a timeout error.
1271 optional uint32 timeout_milliseconds = 5;
1272
1273 // The SDO value. Set either integer_value or string_value during an SDO write.
1274 // This field is ignored when requesting an SDO read, but will contain the
1275 // value of the SDO when responding to an SDO read.
1276 oneof value {
1277 // Integer value used for all non-string types.
1278 int32 integer_value = 6;
1279
1280 // String value.
1281 string string_value = 7;
1282 }
1283}
1284
1285// An ASCII command to execute on an AKD drive.
1286message AKDASCII {
1287 // The command as a string.
1288 string command = 1;
1289
1290 // The returned result of the command. This field is ignored when requesting
1291 // an AKDASCII command.
1292 optional string result = 2;
1293}
1294
1295// A set of actions to perform on a network node. This message is used to
1296// request a set of actions. A new instance of this message will be returned
1297// containing the results of the requested acitons.
1298message NetworkNodeAction {
1299
1300 // Any number of digital outputs to set. Add instances of the DigitalOutput
1301 // message to this field to set digital outputs. When this message is
1302 // returned in the action response, this field contains the new states of
1303 // the digital outputs.
1304 repeated DigitalOutput digital_output_sets = 1;
1305
1306 // Any number of analog outputs to set. Add instances of the AnalogOutput
1307 // message to this field to set analog outputs. When this message is
1308 // returned in the action response, this field contains the new values of
1309 // the analog outputs.
1310 repeated AnalogOutput analog_output_sets = 2;
1311
1312 // The requested SDO value(s) to write to the network. Add instances of the
1313 // SDO message to this field to write to SDOs. When this message is returned
1314 // in the action response, this field will be empty.
1315 repeated SDO sdo_writes = 3;
1316
1317 // The SDO(s) to be read from the network. Add instances of the SDO message
1318 // to this field to read SDO values. When this message is returned in the
1319 // action response, the SDO messages will contain the read values.
1320 repeated SDO sdo_reads = 4;
1321
1322 // AKD ASCII command(s). Only used for Kollmorgen AKD drives. Add instances
1323 // of the AKDASCII message to request an ASCII command. When this message
1324 // is returned in the action response, the AKDASCII messages will contain
1325 // both the command executed and the returned result as a string.
1326 repeated AKDASCII akd_asciis = 5;
1327}
1329
1331message NetworkNodeConfig {}
1333
1335message NetworkNodeRequest {
1336 // Common request header
1337 RSI.RapidServer.RequestHeader header = 1;
1338
1339 // Network Node index
1340 int32 index = 2;
1341
1342 optional NetworkNodeConfig config = 3;
1343 optional NetworkNodeAction action = 4;
1344}
1346
1348message NetworkNodeResponse {
1349 // Common response header. Always check the response header for errors.
1350 RSI.RapidServer.ResponseHeader header = 1;
1351
1352 // Network Node index
1353 int32 index = 2;
1354
1355 optional NetworkNodeConfig config = 3;
1356 optional NetworkNodeAction action = 4;
1357 optional NetworkNodeInfo info = 5;
1358 optional NetworkNodeStatus status = 6;
1359}
1361
1363message NetworkNodeBatchRequest {
1364 // Common request header
1365 RSI.RapidServer.RequestHeader header = 1;
1366
1367 repeated NetworkNodeRequest requests = 2;
1368}
1369
1370message NetworkNodeBatchResponse {
1371 // Common response header. Always check the response header for errors.
1372 RSI.RapidServer.ResponseHeader header = 1;
1373
1374 repeated NetworkNodeResponse responses = 2;
1375}
1377
1378
1380message RecorderRequest {
1381 // Common request header.
1382 RSI.RapidServer.RequestHeader header = 1;
1383
1384 // The Recorder index. (Check MotionController's Recorder count.)
1385 int32 index = 2;
1386
1387 optional RecorderConfig config = 3;
1388 optional RecorderAction action = 4;
1389}
1391
1392
1394message RecorderResponse {
1395 // Common response header. Always check the response header for errors.
1396 RSI.RapidServer.ResponseHeader header = 1;
1397
1398 // Recorder index
1399 int32 index = 2;
1400
1401 optional RecorderConfig config = 3;
1402 optional RecorderAction action = 4;
1403 optional RecorderInfo info = 5;
1404 optional RecorderStatus status = 6;
1405}
1407
1409message RecorderBatchRequest {
1410 // Common request header
1411 RSI.RapidServer.RequestHeader header = 1;
1412
1413 repeated RecorderRequest requests = 2;
1414}
1415
1416message RecorderBatchResponse {
1417 // Common response header. Always check the response header for errors.
1418 RSI.RapidServer.ResponseHeader header = 1;
1419
1420 repeated RecorderResponse responses = 2;
1421}
1423
1424
1426message RecorderInfo { }
1428
1430message RecorderStatus {
1431 // Is the Recorder recording?
1432 bool is_recording = 1;
1433
1434 // The number of records available for retreival.
1435 int32 records_available = 2;
1436}
1438
1440message RecorderAction {
1441
1442 optional Reset reset = 1;
1443 optional Start start = 2;
1444 optional Stop stop = 3;
1445 optional RetrieveRecords retrieve_records = 4;
1446
1447 message Reset {}
1448 message Start {}
1449 message Stop {}
1450
1451 message RetrieveRecords {
1452 // New data records will be in the response, if any are available.
1453 repeated Record records = 1;
1454
1455 // A data record from the recorder.
1456 message Record {
1457 // The number of these will depend on the number of addresses to record in the recorder configuration.
1458 repeated Data data = 1;
1459
1460 // Type will depend on what is set in config for each address.
1461 message Data {
1462 // Keep the names short to keep packet sizes smaller.
1463 oneof data {
1464 double d = 1;
1465 int32 i32 = 2;
1466 }
1467 }
1468 }
1469 }
1470}
1472
1473
1475message RecorderConfig {
1476 // Recorder period, in samples.
1477 optional int32 period = 1;
1478
1479 // If true, the recorder will use a circular buffer, overwriting old data (be sure to read it out).
1480 optional bool circular_buffer = 2;
1481
1482 // The addresses to record. Get these from Controller/Axis/MultiAxis InfoGet rpcs.
1483 repeated AddressInfo addresses = 3;
1484
1485 // Use this to start and end recording with motion.
1486 optional RecorderTriggerOnMotion trigger_on_motion = 4;
1487
1488 // Configure the recorder to generate a RECORDER_HIGH interrupt when the buffer reaches this size.
1489 optional int32 buffer_high_count = 5;
1490
1491 // Read-only, this tells us how many records fit inside the recorder's buffer (see MotionController config's recorder buffer size).
1492 optional int32 record_max_count = 6;
1493
1494 // Internal messages.
1495
1496 message RecorderTriggerOnMotion {
1497 // Use an Axis or MutliAxis's motion supervisor index.
1498 optional int32 motion_supervisor_index = 1;
1499 // Set true if you want the recorder to start when motion starts and stop when motion is done.
1500 optional bool enable = 2;
1501 }
1502}
1503
1505
1507message UserLimitStatus {
1508 // The UserLimit's index.
1509 int32 index = 1;
1510
1511 // Is the UserLimit processing in the RMP firmware_version?
1512 bool enabled = 2;
1513
1514 // Is the UserLimit currently triggered?
1515 bool state = 3;
1516}
1518
1520message UserLimitAction {
1521
1522 optional Reset reset = 1;
1523 optional Enable enable = 2;
1524 optional Disable disable = 3;
1525
1526 message Reset {};
1527 message Enable {};
1528 message Disable {};
1529}
1531
1532
1534message UserLimitInfo {}
1536
1537
1539message UserLimitConfig {
1540
1541 // The type of trigger.
1542 optional RSIUserLimitTriggerType trigger_type = 1;
1543
1544 // The primary condition.
1545 optional UserLimitCondition condition_0 = 2;
1546
1547 // The second condition. Condition 1 will not be set if trigger type is SINGLE_CONDITION or invalid
1548 optional UserLimitCondition condition_1 = 3;
1549
1550 // Optionally set some output when the UserLimit triggers.
1551 optional UserLimitOutput output = 4;
1552
1553 // Optionally perform an action on an Axis when the UserLimit triggers.
1554 optional RSIAction action = 5;
1555
1556 // Perform the optional action on this Axis.
1557 optional int32 action_axis = 6;
1558
1559 // Duration the trigger state must be active before triggering. (Seconds)
1560 optional double duration = 7;
1561
1562 // True if the UserLimit should trigger once, then disable itself.
1563 optional bool is_single_shot = 8;
1564
1565 // Configurable interrupt data.
1566 repeated UserLimitInterruptUserData user_data = 9;
1567
1568 // Internal messages.
1569 message UserLimitCondition {
1570 // The data type to be evaluated.
1571 RSIDataType data_type = 1;
1572
1573 // The logic of the UserLimit.
1574 RSIUserLimitLogic logic = 2;
1575
1576 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1577 uint64 address = 3;
1578
1579 // A 32-bit AND mask.
1580 optional uint32 mask = 4;
1581
1582 // The 32-bit trigger value. (for 32-bit data types)
1583 optional int32 integer_limit_value = 5;
1584
1585 // The 64-bit double trigger value (for 64-bit doubles data types only).
1586 optional double double_limit_value = 6;
1587 }
1588
1589 message UInt32Masks {
1590 // 32-bit AND mask.
1591 uint32 and_mask = 1;
1592
1593 // 32-bit OR mask.
1594 uint32 or_mask = 2;
1595 }
1596
1597 message UInt64Masks {
1598 // 64-bit AND mask.
1599 uint64 and_mask = 1;
1600
1601 // 64-bit OR mask;
1602 uint64 or_mask = 2;
1603 }
1604
1605 message UserLimitOutput {
1606 // True if enabled
1607 bool enabled = 2;
1608
1609 // The type of data to output.
1610 RSIDataType data_type = 3;
1611
1612 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1613 uint64 address = 4;
1614
1615 // The type of output.
1616 oneof output {
1617 // Perform an AND and OR on a 64-bit value.
1618 UInt32Masks uint32_masks = 6;
1619
1620 // Output a 32-bit value.
1621 int32 int32_value = 7;
1622
1623 // Peform an AND and OR on a 64-bit value.
1624 UInt64Masks uint64_masks = 8;
1625
1626 // Output a 64-bit double.
1627 double double_value = 9;
1628
1629 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1630 // Use this field when you want the UserLimit to copy data from the input address to the output address.
1631 uint64 input_address = 10;
1632 }
1633 }
1634
1635 message UserLimitInterruptUserData {
1636 // Interrupt data index (0-4).
1637 uint32 index = 1;
1638
1639 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1640 optional uint64 address = 2;
1641 }
1642}
1644
1646message UserLimitRequest {
1647 // Common request header.
1648 RSI.RapidServer.RequestHeader header = 1;
1649
1650 // UserLimit index.
1651 int32 index = 2;
1652
1653 optional UserLimitConfig config = 3;
1654
1655 optional UserLimitAction action = 4;
1656}
1658
1660message UserLimitResponse {
1661 // Common response header. Always check the response header for errors.
1662 RSI.RapidServer.ResponseHeader header = 1;
1663
1664 // UserLimit index.
1665 int32 index = 2;
1666
1667 optional UserLimitConfig config = 3;
1668 optional UserLimitAction action = 4;
1669 optional UserLimitInfo info = 5;
1670 optional UserLimitStatus status = 6;
1671}
1673
1675message UserLimitBatchRequest {
1676 // Common request header.
1677 RSI.RapidServer.RequestHeader header = 1;
1678
1679 repeated UserLimitRequest requests = 2;
1680}
1681
1682message UserLimitBatchResponse {
1683 // Common response header. Always check the response header for errors.
1684 RSI.RapidServer.ResponseHeader header = 1;
1685
1686 repeated UserLimitResponse responses = 2;
1687}
1689
1691message RTOSConfig {}
1693
1695message RTOSInfo {
1696 // The RMP process catalog.
1697 string rmp_catalog = 1;
1698
1699 // The RMPNetwork process catalog.
1700 string rmp_network_catalog = 2;
1701
1702 // The number of INtime nodes.
1703 uint32 node_count = 3;
1704}
1706
1708message RTOSAction {
1709 optional Restart restart = 1;
1710 optional Stop stop = 2;
1711 optional Start start = 3;
1712
1713 message Restart {}
1714 message Stop {}
1715 message Start {}
1716}
1718
1720message RTOSStatus {
1721 // The status of the INtime node
1722 INtimeStatus status = 3;
1723}
1725
1727message RTOSRequest {
1728 // Common request header
1729 RSI.RapidServer.RequestHeader 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}
1738
1740message RTOSResponse {
1741 // Common response header. Always check the response header for errors.
1742 RSI.RapidServer.ResponseHeader 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 optional RTOSInfo info = 5;
1750 optional RTOSStatus status = 6;
1751}
1753
1755message RTOSBatchRequest {
1756 // Common request header
1757 RSI.RapidServer.RequestHeader header = 1;
1758
1759 repeated RTOSRequest requests = 2;
1760}
1761
1762message RTOSBatchResponse {
1763 // Common response header. Always check the response header for errors.
1764 RSI.RapidServer.ResponseHeader header = 1;
1765
1766 repeated RTOSResponse responses = 2;
1767}
RSINetworkEniResult
NetworkEniGenerate return values.
Definition rsienums.h:1382
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:1277
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:998
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:1073
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:1315
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:974
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1176