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