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
51 rpc MathBlock (MathBlockRequest) returns (MathBlockResponse) {};
52 rpc MathBlockBatch(MathBlockBatchRequest) returns (MathBlockBatchResponse) {};
54
56 rpc RTOS(RTOSRequest) returns (RTOSResponse) {};
57 rpc RTOSBatch(RTOSBatchRequest) returns (RTOSBatchResponse) {};
59
61 rpc RTTask (RTTaskRequest) returns (RTTaskResponse) {};
62 rpc RTTaskBatch(RTTaskBatchRequest) returns (RTTaskBatchResponse) {};
64
66 rpc RTTaskManager (RTTaskManagerRequest) returns (RTTaskManagerResponse) {};
67 rpc RTTaskManagerBatch(RTTaskManagerBatchRequest) returns (RTTaskManagerBatchResponse) {};
69}
70
72message MotionControllerConfig {
73 // The number of Axis objects.
74 optional int32 axis_count = 1;
75
76 // The number of MultiAxis objects. (internal MotionCount - AxisCount)
77 optional int32 multi_axis_count = 2;
78
79 // The number of UserLimits.
80 optional int32 user_limit_count = 3;
81
82 // The number of data recorders.
83 optional int32 recorder_count = 4;
84
85 // The sizes of each recorder's buffer.
86 repeated int32 recorder_buffer_sizes = 5;
87
88 // The number of position compensators.
89 optional int32 compensator_count = 6;
90
91 // The number of points for each position compensator.
92 repeated int32 compensator_point_counts = 7;
93
94 // The size of each Axis' frame buffer. Must be power of 2.
95 repeated int32 axis_frame_buffer_sizes = 8;
96
97 // The number of MathBlocks.
98 optional int32 math_block_count = 9;
99
100 // A 32-bit integer for users to specify a version.
101 optional int32 user_version = 10;
102
103 // A double to specify the sample rate in Hertz (samples per second)
104 optional double sample_rate = 11;
105}
106
108
109
110
112message AddressInfo {
113 // The requested address type.
114 oneof address_type {
115 RSIControllerAddressType controller = 1;
116 RSIAxisAddressType axis = 2;
117 RSIMultiAxisAddressType multi_axis = 3;
118 }
119
120 // The 64-bit host address from the server. This address can be used to configure the recorder.
121 uint64 host_address = 4;
122
123 // The data type at this address. Useful for using the Recorder service.
124 RSIDataType data_type = 5;
125
126 // The internal RMP firmware address. (What you might see in VM3.)
127 uint64 firmware_address = 6;
128
129 // The 0-based object index for use when accessing Controller Addresses
130 // Not used with Axis or MultiAxis addresses.
131 optional int32 index = 7;
132
133 // IO bit mask
134 optional int32 mask = 8;
135}
136
137message MotionControllerMemory {
138 message Integer {
139 uint64 host_address = 1;
140 int32 value = 2;
141 }
142 message Double {
143 uint64 host_address = 1;
144 double value = 2;
145 }
146 message Block {
147 uint64 host_address = 1;
148 bytes values = 2;
149 int32 size = 3;
150 }
151 oneof memory {
152 Integer integer = 1;
153 Double double = 2;
154 Block block = 3;
155 }
156}
157
158message MotionControllerCreationParameters {
159 // Path to the RMP firmware (RMP.rta), license file, etc.
160 optional string rmp_path = 1;
161 optional string node_name = 2; // [Windows/INtime] INtime Node used for RMP and RMPNetwork.
162
163 optional string primary_nic = 3;
164 optional string secondary_nic = 4;
165
166 optional int32 cpu_affinity = 5; // [Linux] CPU used for RMP and RMPNetwork
167 optional int32 rmp_thread_priority_max = 6; // [Linux] Relative thread priority
168
169 optional int32 controller_index = 7; // for future multiple controller support
170}
171
172message MotionControllerAction {
173 // Create a MotionController. You must do this before using any other RapidCode remote service!
174 optional MotionControllerCreationParameters create = 1;
175
176 repeated MotionControllerMemory memory_sets = 2;
177 repeated MotionControllerMemory memory_gets = 3;
178 repeated AddressInfo address_gets = 4;
179 optional Shutdown shutdown = 5;
180 optional ProcessorUsageClear processor_usage_clear = 6;
181
182 // shutdown the RMP
183 message Shutdown {}
184
185 // clear the RMP's processor usage
186 message ProcessorUsageClear {}
187}
189
190
191
193message MotionControllerInfo {
194 // The RMP serial number.
195 uint32 serial_number = 1;
196
197 // The RapidCode version.
198 string rapid_code_version = 2;
199
200 // RMP firmware version.
201 string firmware_version = 3;
202
203 // The number of licensed Axis objects.
204 int32 axis_license_count = 4;
205
206 repeated AddressInfo addresses = 5;
207
208 // Constants from the MotionController object
209 Constants constants = 6;
210
211 message Constants {
212 // Default time to wait when calling NetworkStart()
213 uint32 network_start_timeout_milliseconds_default = 1;
214
215 // Maximum number of Axis objects supported.
216 uint32 axis_count_maximum = 2;
217
218 // Maximum number of motion objects supported (One required for each Axis and MultiAxis).
219 uint32 motion_count_maximum = 3;
220
221 // Maximum number of nodes allowed on the network.
222 uint32 network_node_count_maximum = 4;
223
224 // maximum number of Recorder objects supported
225 uint32 recorder_count_maximum = 5;
226
227 // Maximum number of Position Compensator objects supported.
228 uint32 compensator_count_maximum = 6;
229
230 // Maximum number of 64-bit values that can be stored in the User Buffer.
231 uint32 user_buffer_data_count_maximum = 7;
232
233 // Default RMP sample rate in hertz.
234 double sample_rate_default = 8;
235
236 CreationParameters creation_parameters = 9;
237
238 // Maximum number of MathBlock objects supported.
239 uint32 math_block_count_maximum = 10;
240
241 message CreationParameters {
242 // MotionControllerAction::Create::rmp_path maximum string buffer length
243 uint32 path_length_maximum = 1;
244
245 // The default value of MotionControllerAction::Create::cpu_affinity
246 uint32 cpu_affinity_default = 2;
247
248 // The default value of MotionControllerAction::Create::rmp_thread_priority_max
249 uint32 rmp_thread_priority_maximum_default = 3;
250
251 // The range required for RMP and RMPNetwork threads. rmp_thread_priority_max must be greater than or equal to this value.
252 uint32 rmp_thread_priority_range = 4;
253 }
254 }
255
256 // The parameters that were used to create the MotionController.
257 MotionControllerCreationParameters creation_parameters = 7;
258}
260
261
262
264message MotionControllerStatus {
265 // The RMP sample counter.
266 int32 sample_counter = 1;
267
268 // Network node count.
269 uint32 network_node_count = 2;
270
271 // The percentage of the firmware sample time used by the RMP.
272 double processor_usage = 3;
273
274 // The most recent time (in microseconds) between firmware samples
275 uint32 firmware_timing_delta = 4;
276
277 // The number of 32-bit words free in the RMP firmware memory.
278 int32 external_memory_size = 9;
279}
281
282
283
285message MotionControllerRequest {
286 // Common request header.
287 RSI.RapidServer.RequestHeader header = 1;
288
289 optional MotionControllerConfig config = 2;
290 optional MotionControllerAction action = 3;
291}
293
294
296message MotionControllerResponse {
297 // Common response header. Always check the response header for errors.
298 RSI.RapidServer.ResponseHeader header = 1;
299
300 optional MotionControllerConfig config = 2;
301 optional MotionControllerAction action = 3;
302 optional MotionControllerInfo info = 4;
303 optional MotionControllerStatus status = 5;
304}
306
308message FirmwareValue {
309 oneof value {
310 bool bool_value = 1;
311 int32 int8_value = 2;
312 uint32 uint8_value = 3;
313 int32 int16_value = 4;
314 uint32 uint16_value = 5;
315 int32 int32_value = 6;
316 uint32 uint32_value = 7;
317 float float_value = 8;
318 double double_value = 9;
319 int64 int64_value = 10;
320 uint64 uint64_value = 11;
321 }
322}
324
326message NetworkConfig {}
328
330message NetworkAction {
331 // Shutdown the network.
332 optional Shutdown shutdown = 1;
333
334 // Start the network.
335 optional Discover discover = 2;
336 optional Start start = 3;
337 optional DiscoverAndStart discover_and_start = 4;
338
339 // Evaluate network timing.
340 optional TimingMetricsEnable timing_metrics_enable = 5;
341 optional TimingMetricsDisable timing_metrics_disable = 6;
342 optional TimingMetricsClear timing_metrics_clear = 7;
343
344 // Used to override firmware values with your custom outputs.
345 repeated OutputOverride output_override = 8;
346
347 // Generate ENI file
348 optional EniGenerate eni_generate = 9;
349
350 // Creating the object does the job.
351 message Shutdown { }
352
353 message Discover {
354 // Default: MotionController::NetworkStartTimeoutMillisecondsDefault which is 30000 ms.
355 optional uint32 timeout_milliseconds = 3;
356 }
357 message Start {
358 // Default: RSINetworkStartModeOPERATIONAL.
359 optional RSINetworkStartMode mode = 1;
360 // Default: MotionController::NetworkStartTimeoutMillisecondsDefault which is 30000 ms.
361 optional uint32 timeout_milliseconds = 2;
362 }
363
364 message DiscoverAndStart {
365 // Default: RSINetworkStartModeOPERATIONAL.
366 optional RSINetworkStartMode mode = 1;
367 // Default: MotionController::NetworkStartTimeoutMillisecondsDefault which is 30000 ms.
368 optional uint32 timeout_milliseconds = 2;
369 }
370
371 message TimingMetricsEnable {
372 // Determines when low_count increases.
373 optional uint32 low_threshold = 1;
374 // Determines when high_count increases.
375 optional uint32 high_threshold = 2;
376 }
377 message TimingMetricsDisable {}
378 message TimingMetricsClear {}
379
380 message OutputOverride {
381 // Index of the output.
382 int32 index = 1;
383 // Turn on or off overriding of the firmware value with the override_value.
384 optional bool override = 2;
385 // Your custom value rather than our intended firmware value.
386 optional int64 override_value = 3;
387 }
388
389 message EniGenerate {
390 // result of the attempt to generate the ENI file.
391 optional RSINetworkEniResult result = 1;
392 // resulting output from rsiconfig (which is used to generate the ENI file)
393 optional string output = 2;
394 }
395}
397
399message NetworkRequest {
400 // Common request header.
401 RSI.RapidServer.RequestHeader header = 1;
402
403 optional NetworkConfig config = 2;
404
405 optional NetworkAction action = 3;
406}
408
410message NetworkResponse {
411 // Common response header. Always check the response header for errors.
412 RSI.RapidServer.ResponseHeader header = 1;
413
414 optional NetworkConfig config = 2;
415 optional NetworkAction action = 3;
416 optional NetworkInfo info = 4;
417 optional NetworkStatus status = 5;
418}
420
422message NetworkStatus {
423 RSINetworkState state = 1;
424 int32 node_count = 2;
425 int32 counter = 3;
426 bool synchronized = 4;
427 RSINetworkStartError last_start_error = 5;
428
429 // output logged from RMPNetwork when it closes.
430 string log_message = 6;
431
432 // NetworkTiming in RapidCode. Used to evaluate stability.
433 TimingMetricsStatus timing_metrics = 7;
434
435 // Collection of all Network PDO Inputs.
436 repeated PdoInputStatus pdo_inputs = 8;
437
438 // Collection of all Network PDO Outputs.
439 repeated PdoOutputStatus pdo_outputs = 9;
440
441 // Logical OR of AL Status registers from all nodes. 8 = all Operational.
442 uint32 al_status = 10;
443 // Cumulative count of missed cyclic EtherCAT frames since network startup.
444 uint32 missed_cyclic_frame_count = 11;
445 // Most recent cyclic frame period in microseconds.
446 uint32 cyclic_frame_period_us = 12;
447 // Distributed Clock synchronization error in nanoseconds.
448 int32 synchronization_error_ns = 13;
449 // Number of nodes actively responding on the network.
450 uint32 active_node_count = 14;
451 // The host network interface type used for EtherCAT frame I/O.
452 RSINetworkInterfaceType interface_type = 15;
453
454 message TimingMetricsStatus {
455 // Most recent value.
456 uint32 delta = 1;
457 // Lowest recorded since last clear.
458 uint32 min_recorded = 2;
459 // Highest recorded since last clear.
460 uint32 max_recorded = 3;
461 // Count below low_threshold since last clear.
462 uint32 low_count = 4;
463 // Count above high_threshold since last clear.
464 uint32 high_count = 5;
465 }
466
467 message PdoInputStatus {
468 // The index of this PDO in RMP firmware.
469 int32 index = 1;
470 // The raw 64-bit value of this PDO.
471 int64 value = 2;
472 }
473
474 message PdoOutputStatus {
475 // The index of this PDO in RMP firmware.
476 int32 index = 1;
477 // The raw 64-bit value that was sent on the network.
478 int64 sent_value = 2;
479 // The raw 64-bit override value that can be written by software.
480 int64 override_value = 3;
481 // The raw 64-bit value that the RMP is going to send, unless overridden.
482 int64 firmware_value = 4;
483 // Whether or not the override_value is being used.
484 bool override_enabled = 5;
485 }
486}
488
490message NetworkInfo {
491 RSINetworkType type = 1;
492 int32 pdo_input_count = 4;
493 int32 pdo_output_count = 5;
494
495 // Collection of all Network PDO Inputs.
496 repeated PdoInputInfo pdo_inputs = 6;
497
498 // Collection of all Network PDO Outputs.
499 repeated PdoOutputInfo pdo_outputs = 7;
500
501 message PdoInputInfo {
502 string name = 1;
503 AddressInfo address_info = 2;
504 int32 bit_size = 3;
505 int32 bit_offset = 4;
506 }
507
508 message PdoOutputInfo {
509 string name = 1;
510 AddressInfo sent_value_address = 2;
511 AddressInfo override_value_address = 3;
512 AddressInfo firmware_value_address = 4;
513 int32 bit_size = 5;
514 int32 bit_offset = 6;
515 }
516}
518
519
520
521
523message AxisRequest {
524 // Common request header
525 RSI.RapidServer.RequestHeader header = 1;
526
527 // Axis index
528 int32 index = 2;
529
530 optional AxisConfig config = 3;
531 optional AxisAction action = 4;
532}
534
536message AxisResponse {
537 // Common response header. Always check the response header for errors.
538 RSI.RapidServer.ResponseHeader header = 1;
539
540 // Axis index
541 int32 index = 2;
542
543 optional AxisConfig config = 3;
544 optional AxisAction action = 4;
545 optional AxisInfo info = 5;
546 optional AxisStatus status = 6;
547}
549
551message AxisBatchRequest {
552 // Common request header
553 RSI.RapidServer.RequestHeader header = 1;
554
555 repeated AxisRequest requests = 2;
556}
557
558message AxisBatchResponse {
559 // Common response header. Always check the response header for errors.
560 RSI.RapidServer.ResponseHeader header = 1;
561
562 repeated AxisResponse responses = 2;
563}
565
567message AxisStatus {
568 // Is the amp enabled?
569 bool amp_enabled = 1;
570
571 // The state (IDLE, MOVING, ERROR, etc.).
572 RSIState state = 2;
573
574 // The cause of the error (if in ERROR, STOPPED, STOPPING_ERROR state).
575 RSISource source = 3;
576
577 // Extra fault info from the drive
578 string source_name = 4;
579
580 // Positions.
581 PositionStatus position = 5;
582
583 // Command and actual velocity.
584 VelocityStatus velocity = 6;
585
586 // Command acceleration.
587 AccelerationStatus acceleration = 7;
588
589 // How many frames does the Axis have left to execute?
590 int32 frames_to_execute = 8;
591
592 // The motion id as stored in the Axis class (unsigned 16-bit integer).
593 uint32 motion_id = 9;
594
595 // The currently executing motion identifier (unsigned 16-bit integer).
596 uint32 motion_id_executing = 10;
597
598 // The currently exeucting motion element identifier (unsigned 16-bit integer).
599 int32 element_id_executing = 11;
600
601 // Is electronic gearing enabled?
602 bool gear_enabled = 12;
603
604 // Status bits related to the motor.
605 MotorStatusBits motor_status_bits = 13;
606
607 // Status bits related to motion.
608 MotionStatusBits motion_status_bits = 14;
609
610 // DS402 status bits, for drives that support DS402.
611 Ds402StatusBits ds402_status_bits = 15;
612
613 // Dedicated output bits.
614 DedicatedOutputBits dedicated_output_bits = 16;
615
616 // Dedicated input bits.
617 DedicatedInputBits dedicated_input_bits = 17;
618
619 // Homing status
620 bool home_state = 18;
621 RSIHomeStage home_stage = 19;
622
623 // The states of the general purpose input bits, DigitalInputsGet().
624 uint32 general_input_bits = 20;
625
626 // The states of the general purpose output bits, DigitalOutputsGet().
627 uint32 general_output_bits = 21;
628
629 message PositionStatus {
630 double command = 1;
631 double actual = 2;
632 double error = 3;
633 double target = 4;
634 double origin = 5;
635 double encoder_0 = 6;
636 double encoder_1 = 7;
637 double compensation = 8;
638 double backlash = 9;
639 }
640
641 message VelocityStatus {
642 double command = 1;
643 double actual = 2;
644 }
645
646 message AccelerationStatus {
647 double command = 1;
648 }
649
650 message MotorStatusBits {
651 bool amp_fault = 1;
652 bool amp_warning = 2;
653 bool feedback_fault = 3;
654 bool limit_position_error = 4;
655 bool limit_torque = 5;
656 bool limit_hardware_negative = 6;
657 bool limit_hardware_positive = 7;
658 bool limit_software_negative = 8;
659 bool limit_software_positive = 9;
660 }
661
662 message MotionStatusBits {
663 bool done = 1;
664 bool start = 2;
665 bool modify = 3;
666 bool at_velocity = 4;
667 bool out_of_frames = 5;
668 bool near_target = 6;
669 bool at_target = 7;
670 bool settled = 8;
671 }
672
673 message Ds402StatusBits {
674 bool ready_to_switch_on = 1;
675 bool switched_on = 2;
676 bool operation_enabled = 3;
677 bool fault = 4;
678 bool voltage_enabled = 5;
679 bool quick_stop = 6;
680 bool switch_on_disabled = 7;
681 bool warning = 8;
682 bool manufacturer_specific_8 = 9;
683 bool remote = 10;
684 bool target_reached = 11;
685 bool internal_limit_active = 12;
686 bool operation_mode_specific_12 = 13;
687 bool operation_mode_specific_13 = 14;
688 bool manufacturer_specific_14 = 15;
689 bool manufacturer_specific_15 = 16;
690 }
691
692 message DedicatedOutputBits {
693 bool amp_enable = 1;
694 bool brake_release = 2;
695 }
696
697 message DedicatedInputBits {
698 bool amp_fault = 1;
699 bool brake_applied = 2;
700 bool home = 3;
701 bool limit_hardware_positive = 4;
702 bool limit_hardware_negative = 5;
703 bool index = 6;
704 bool index_secondary = 7;
705 bool feedback_fault = 8;
706 bool captured = 9;
707 bool hall_a = 10;
708 bool hall_b = 11;
709 bool hall_c = 12;
710 bool amp_active = 13;
711 bool warning = 14;
712 bool drive_status_9 = 15;
713 bool drive_status_10 = 16;
714 bool feedback_fault_primary = 17;
715 bool feedback_fault_secondary = 18;
716 }
717}
719
721message AxisAction {
722 optional Abort abort = 1;
723 optional EStopAbort e_stop_abort = 2;
724 optional EStopModifyAbort e_stop_modify_abort = 3;
725 optional EStopModify e_stop_modify = 4;
726 optional EStop e_stop = 5;
727 optional TriggeredModify triggered_modify = 6;
728 optional Stop stop = 7;
729 optional Resume resume = 8;
730
731 optional ClearFaults clear_faults = 9;
732 optional AmpEnable amp_enable = 10;
733 optional AmpDisable amp_disable = 11;
734 optional HoldGateSet hold_gate_set = 12;
735 optional PositionSet position_set = 13;
736 optional Move move = 14;
737 optional GearEnable gear_enable = 15;
738 optional GearDisable gear_disable = 16;
739 optional Home home = 17;
740 optional HomeCancel home_cancel = 18;
741 optional OperationMode operation_mode_set = 19;
742 optional OperationMode operation_mode_get = 20;
743
744 // Remap logical PDO indexes (control word, status word, etc.) on this axis.
745 // Each entry calls Axis::NetworkIndexSet(type, index). Per-entry failures are
746 // reported via ResponseHeader.Errors; successful entries still take effect.
747 // Equivalent to the C++/C# API `axis->NetworkIndexSet(indexType, newIndex)`.
748 repeated AxisNetworkIndex network_index_sets = 21;
749
750 message Abort {}
751 message EStopAbort {}
752 message EStopModifyAbort{}
753 message EStopModify{}
754 message EStop {}
755 message TriggeredModify {}
756 message Stop {}
757 message Resume {}
758
759 message ClearFaults {}
760
761 message AmpEnable {
762 optional int32 timeout_milliseconds = 1;
763 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
764 optional bool override_restricted_state = 3; // if true, allows potentially dangerous enabling of an Amplifier even if it's in MOVING, STOPPING or STOPPED state
765 }
766 message AmpDisable {}
767 message HoldGateSet {
768 bool state = 1;
769 }
770 message PositionSet{
771 double position = 1;
772 }
773
774 message Move {
775 // Request one type of motion.
776 oneof move {
777 AxisMovePointToPoint point_to_point = 3;
778 AxisMoveVelocity velocity = 4;
779 MoveStreaming streaming = 5;
780 }
781
782 // Specify the MotionID for this move. (If you don't specify one, it will be auto-incremented after each move.)
783 optional uint32 motion_id = 6;
784
785 // Specify MotionHold criteria, if you want the motion to hold execution until conditions are met.
786 optional MotionHold motion_hold = 7;
787
788 // Wait for motion to complete? (See ConfigSet settling criteria.)
789 bool blocking = 8;
790 }
791
792 message GearEnable {
793 optional int32 master_axis_number = 2;
794 optional RSIAxisMasterType gearing_source = 3;
795 int32 numerator = 4;
796 int32 denominator = 5;
797 }
798 message GearDisable {}
799
800 message Home {
801 RSIHomeMethod method = 1;
802 double velocity = 2;
803 double slow_velocity = 3;
804 double acceleration = 4;
805 double deceleration = 5;
806 optional double jerk_percent = 6;
807 optional bool move_to_zero = 7;
808 optional double offset = 8;
809 optional RSIAction behavior = 9;
810 }
811
812 message HomeCancel {}
813
814 message OperationMode {
815 // For setting the operation mode in the request, or getting it from the response.
816 optional RSIOperationMode operation_mode = 1;
817 }
818}
819
820// Internal MoveRequest messages.
821 message AxisMovePointToPoint {
822 // Move to this position. Absolute, unless the relative boolean is true. (UserUnits)
823 double position = 1;
824
825 // Maximum velocity. (UserUnits/second).
826 optional double velocity = 2;
827
828 // Maximum acceleration. (UserUnits/second^2). If specified, velocity and deceleration must be specified.
829 optional double acceleration = 3;
830
831 // Maximum deceleration. (UserUnits/second^2). If specified, velocity and acceleration must be specified
832 optional double deceleration = 4;
833
834 // Percentage of acceleration that will be smoothed. (0-100)
835 // Acceleration time will not change so if Jerk Percent is 100, maximum acceleration will be 2x the specified maximum.
836 // If specified, velocity, acceleration, and deceleration must be specified.
837 // A non-zero value makes the PointToPoint MoveSCurve
838 optional double jerk_percent = 5;
839
840 // Final velocity. 0.0 is default. (UserUnits/second)
841 // If specified, velocity, acceleration, and deceleration must be specified.
842 optional double final_velocity = 6;
843
844 // Set true if you intend position to be a relative increment. If specified, jerk_percent must be specified.
845 bool relative = 7;
846}
847
848message AxisMoveVelocity {
849 // Move at this velocity. (UserUnits/second)
850 double velocity = 1;
851
852 // Maximum acceleration. (UserUnits/second^2)
853 double acceleration = 2;
854
855 // Percentage of acceleration that will be smoothed. (0-100)
856 // Acceleration time will not change so if Jerk Percent is 100, maximum acceleration will be 2x the specified maximum.
857 // A non-zero value uses MoveVelocitySCurve
858 double jerk_percent = 3;
859}
860
861message MoveStreaming {
862 repeated double positions = 1;
863 repeated double velocities = 2;
864 repeated double accelerations = 3;
865 repeated double jerks = 4;
866 repeated double times = 5;
867 int32 empty_count = 6;
868 bool retain = 7;
869 bool final = 8;
870
871 // Specify the interpolation algorithm to use when only providing positions and no velocities nor accelerations.
872 // Uses the RapidCode method RapidCodeMotion::MovePT()
873 // The three currently supported ones are:
874 // RSIMotionTypePT (no interpolation)
875 // RSIMotionTypeBSPLINE (default)
876 // RSIMotionTypePVT is used in the RapidCode method RapidCodeMotion::MovePVT(), i.e. when positions and velocities are given.
877 optional RSIMotionType pt_motion_type = 9;
878
879 // Feedforward values for PTF/PVTF motion. When present and matching positions size:
880 // - With velocities: uses MovePVTF()
881 // - Without velocities: uses MovePTF()
882 repeated double feedforwards = 10;
883}
885
886message MotionHoldGate{
887 int32 number = 1;
888}
889
890message MotionHoldAxis {
891 // If true, motion will hold for Actual Position. If false, it will hold for Command Position.
892 bool actual = 1;
893
894 // Greater than, less than, etc.
895 RSIUserLimitLogic logic = 2;
896
897 // The number of the Axis whose position we're waiting for.
898 int32 hold_axis_number = 3;
899
900 // The position of the hold axis which will trigger the hold to finish.
901 double hold_axis_position = 4;
902}
903
904message MotionHoldUser {
905 // The 64-bit host address on the server.
906 uint64 address = 1;
907
908 // The 32-bit mask that will be ANDed with the value stored at the User Address.
909 int32 mask = 2;
910
911 // The 32-bit mask that will compared for equality after the AND mask.
912 int32 pattern = 3;
913}
914
915message MotionHold {
916 // Choose the type of hold.
917 oneof type {
918 MotionHoldGate gate = 2;
919 MotionHoldAxis axis = 3;
920 MotionHoldUser user = 4;
921 }
922
923 // The motion will execute regardless of hold status after this amount of time.
924 optional double hold_timeout_seconds = 6;
925
926 // This optional delay will occur before motion starts.
927 optional double delay_seconds = 7;
928}
929
931message AxisConfig {
932 // The number of encoder counts to UserUnits.
933 optional double user_units = 1;
934
935 // The origin position, typically set when homing.
936 optional double origin_position = 2;
937
938 // Give the Axis a name, if you like.
939 optional string user_label = 3;
940
941 // Default trajectory values.
942 optional TrajectoryDefaults defaults = 4;
943 optional HardwareTrigger amp_fault = 5;
944 optional HardwareTrigger home_switch = 6;
945 optional ErrorLimit error_limit = 7;
946 optional HardwareTrigger hardware_negative_limit = 8;
947 optional HardwareTrigger hardware_positive_limit = 9;
948 optional SoftwareTrigger software_negative_limit = 10;
949 optional SoftwareTrigger software_positive_limit = 11;
950 optional Settling settling = 12;
951 optional MotionConfig motion = 13;
952 optional Homing homing = 14;
953 optional int32 frame_buffer_size = 15;
954 optional RSIMotorDisableAction amp_disable_action = 16;
955 optional double feed_rate = 17;
956
957 // Internal messages.
958 message TrajectoryDefaults
959 {
960 optional double velocity = 1;
961 optional double acceleration = 2;
962 optional double deceleration = 3;
963 optional double jerk_percent = 4;
964 optional double position1 = 5;
965 optional double position2 = 6;
966 optional double relative_increment = 7;
967 }
968
969 message HardwareTrigger {
970 optional RSIAction action = 1;
971 optional bool trigger_state = 2;
972 optional double duration = 3;
973 }
974
975 message SoftwareTrigger {
976 optional RSIAction action = 1;
977 optional double trigger_value = 2;
978 }
979
980 message ErrorLimit {
981 optional RSIAction action = 1;
982 optional double trigger_value = 2;
983 optional double duration = 3;
984 }
985
986 message Settling {
987 optional double position_tolerance_fine = 1;
988 optional double position_tolerance_coarse = 2;
989 optional double velocity_tolerance = 3;
990 optional double time_seconds = 4;
991 optional bool on_stop = 5;
992 optional bool on_estop = 6;
993 optional bool on_estop_cmd_equals_actual = 7;
994 }
995
996 message MotionConfig {
997 // Seconds.
998 optional double stop_time = 1;
999
1000 // Seconds.
1001 optional double estop_time = 2;
1002
1003 // UserUnits per second.
1004 optional double triggered_modify_deceleration = 3;
1005
1006 // Jerk percent (0-100).
1007 optional double triggered_modify_jerk_percent = 4;
1008
1009 // UserUnits per second.
1010 optional double estop_modify_deceleration = 5;
1011
1012 // Jerk percent (0-100).
1013 optional double estop_modify_jerk_percent = 6;
1014 }
1015 message Homing {
1016 // placeholder for possible future homing configuration. see Action for Home configuration.
1017 }
1018}
1020
1022message AxisInfo {
1023 // Axis index.
1024 int32 index = 1;
1025
1026 // Host and firmware addresses
1027 repeated AddressInfo addresses = 2;
1028
1029 // NetworkNode information.
1030 NetworkNodeInfo node_info = 3;
1031
1032 // Constants from the Axis object
1033 Constants constants = 4;
1034
1035 // The internal motion supervisor index
1036 int32 motion_supervisor_index = 5;
1037
1038 // The drive index of this axis relative to its network node.
1039 // For single-axis drives this is always 0.
1040 int32 drive_index = 6;
1041
1042 // Resolved global network PDO indexes for this axis. One entry per
1043 // RSINetworkIndexType that resolves to a valid index on this drive.
1044 // Entries whose resolved value equals Constants.network_index_invalid
1045 // are omitted: absence means the PDO is not mapped on this drive.
1046 // Equivalent to Axis.NetworkIndexGet() in the C++/C# API.
1047 // Static after network start.
1048 repeated AxisNetworkIndex network_indexes = 7;
1049
1050 message Constants {
1051 // The value returned by NetworkIndexGet() when the index is invalid or nonexistent for this Axis.
1052 uint32 network_index_invalid = 1;
1053
1054 // The default time an Axis waits before generating an AmpFault if the Axis does not enable after calling AmpEnableSet(true).
1055 double amp_enable_amp_fault_timeout_seconds_default = 2;
1056 }
1057}
1059
1060// A resolved global network PDO index for an axis. Used by both
1061// AxisInfo.network_indexes (read) and AxisAction.network_index_sets (write).
1062// Named AxisNetworkIndex rather than NetworkIndex to keep the axis-scoped
1063// meaning explicit at top-level scope.
1064message AxisNetworkIndex {
1065 RSINetworkIndexType type = 1;
1066 int32 index = 2;
1067}
1068
1070message MultiAxisRequest {
1071 // Common request header
1072 RSI.RapidServer.RequestHeader header = 1;
1073
1074 // MultiAxis index
1075 int32 index = 2;
1076
1077 optional MultiAxisConfig config = 3;
1078 optional MultiAxisAction action = 4;
1079}
1081
1083message MultiAxisResponse {
1084 // Common response header. Always check the response header for errors.
1085 RSI.RapidServer.ResponseHeader header = 1;
1086
1087 // MultiAxis index
1088 int32 index = 2;
1089
1090 optional MultiAxisConfig config = 3;
1091 optional MultiAxisAction action = 4;
1092 optional MultiAxisInfo info = 5;
1093 optional MultiAxisStatus status = 6;
1094}
1096
1098message MultiAxisBatchRequest {
1099 // Common request header
1100 RSI.RapidServer.RequestHeader header = 1;
1101
1102 repeated MultiAxisRequest requests = 2;
1103}
1104
1105message MultiAxisBatchResponse {
1106 // Common response header. Always check the response header for errors.
1107 RSI.RapidServer.ResponseHeader header = 1;
1108
1109 repeated MultiAxisResponse responses = 2;
1110}
1112
1113
1115message MultiAxisStatus {
1116 RSIState state = 1;
1117 RSISource source = 2;
1118 string source_name = 3;
1119 bool amp_enabled = 4;
1120 MotionStatusBits motion_status_bits = 5;
1121 repeated AxisStatus axis_statuses = 6;
1122 bool is_mapped = 7;
1123
1124 message MotionStatusBits {
1125 bool done = 1;
1126 bool start = 2;
1127 bool modify = 3;
1128 bool at_velocity = 4;
1129 bool out_of_frames = 5;
1130 }
1131}
1133
1135message MultiAxisAction {
1136 optional Abort abort = 1;
1137 optional EStopAbort e_stop_abort = 2;
1138 optional EStopModifyAbort e_stop_modify_abort = 3;
1139 optional EStopModify e_stop_modify = 4;
1140 optional EStop e_stop = 5;
1141 optional TriggeredModify triggered_modify = 6;
1142 optional Stop stop = 7;
1143 optional Resume resume = 8;
1144
1145 optional ClearFaults clear_faults = 9;
1146 optional AmpEnable amp_enable = 10;
1147 optional AmpDisable amp_disable = 11;
1148 optional Move move = 12;
1149 optional RemoveAxes remove_axes = 13;
1150 optional Unmap unmap = 14;
1151 optional Map map = 15;
1152 optional AxisAdd axis_add = 16;
1153
1154 message Abort {}
1155 message EStopAbort {}
1156 message EStopModifyAbort{}
1157 message EStopModify{}
1158 message EStop {}
1159 message TriggeredModify {}
1160 message Stop {}
1161 message Resume {}
1162
1163 message ClearFaults {}
1164
1165 message AmpEnable {
1166 optional int32 timeout_milliseconds = 1;
1167 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
1168 optional bool override_restricted_state = 3; // if true, allows potentially dangerous enabling of an Amplifier even if it's in MOVING, STOPPING or STOPPED state
1169 }
1170 message AmpDisable {}
1171
1172 message Move {
1173 oneof move {
1174 MultiAxisMovePointToPoint point_to_point = 3;
1175 MultiAxisMoveVelocity velocity = 4;
1176 MoveStreaming streaming = 5;
1177 }
1178 optional uint32 motion_id = 6;
1179
1180 // Specify MotionHold criteria, if you want the motion to hold execution until conditions are met.
1181 optional MotionHold motion_hold = 7;
1182
1183 bool blocking = 8;
1184
1185 message MultiAxisMovePointToPoint {
1186 repeated AxisMovePointToPoint axis_move_point_to_points = 1;
1187 bool relative = 2;
1188 }
1189
1190 message MultiAxisMoveVelocity {
1191 repeated AxisMoveVelocity axis_move_velocities = 1;
1192 }
1193 }
1194 message RemoveAxes {}
1195 message Unmap {}
1196 message Map {}
1197 message AxisAdd {
1198 int32 axis_index = 1;
1199 }
1200}
1202
1204message MultiAxisConfig {
1205 repeated int32 axes_indices = 1;
1206 optional string user_label = 2;
1207 optional double feed_rate = 3;
1208 optional double stop_time = 4;
1209 optional double e_stop_time = 5;
1210}
1212
1214message MultiAxisInfo {
1215 // The zero-based index for this MultiAxis.
1216 int32 index = 1;
1217
1218 // The internal motion supervisor index.
1219 int32 motion_supervisor_index = 2;
1220
1221 // Host and firmware addresses
1222 repeated AddressInfo addresses = 3;
1223}
1225
1227message NetworkNodeInfo {
1228 // True if hardware exists.
1229 bool exists = 1;
1230
1231 // The node index.
1232 int32 index = 2;
1233
1234 // The number of Axis objects on this node.
1235 int32 axis_count = 3;
1236
1237 // True if this node has I/O.
1238 bool has_io = 4;
1239
1240 // The number of digital/analog inputs and outputs on this node.
1241 IOCounts io_counts = 5;
1242
1243 // The bit masks and 64-bit host addresses for this node's I/O.
1244 IOAddresses io_addresses = 6;
1245
1246 // The node type.
1247 RSINodeType type = 7;
1248
1249 // 32-bit vendor identifier.
1250 uint32 vendor_id = 8;
1251
1252 // 32-bit product code.
1253 uint32 product_code = 9;
1254
1255 // 32-bit hardware revision.
1256 uint32 hardware_revision = 10;
1257
1258 // Station alias.
1259 uint32 station_alias = 11;
1260
1261 // Serial number.
1262 string serial_number = 12;
1263
1264 // The node's name.
1265 string name = 13;
1266
1267 // Product name.
1268 string product_name = 14;
1269
1270 // Vendor name.
1271 string vendor_name = 15;
1272
1273 Constants constants = 16;
1274
1275 // The global network PDO indexes for this node's I/O channels.
1276 IONetworkIndexes io_network_indexes = 17;
1277
1278
1279 // Internal messages.
1280
1281 // The number of digital/analog inputs and outputs.
1282 message IOCounts {
1283 // Number of digital inputs.
1284 int32 digital_inputs = 1;
1285
1286 // Number of digital outputs.
1287 int32 digital_outputs = 2;
1288
1289 // Number of analog inputs.
1290 int32 analog_inputs = 3;
1291
1292 // Number of analog outputs.
1293 int32 analog_outputs = 4;
1294 }
1295
1296 message IOAddresses {
1297 // Masks and 64-bit host addresses for each digital input.
1298 repeated AddressInfo digital_inputs = 1;
1299
1300 // Masks and 64-bit host addresses for each digital output.
1301 repeated AddressInfo digital_outputs = 2;
1302
1303 // Masks and 64-bit host addresses for each analog input.
1304 repeated AddressInfo analog_inputs = 3;
1305
1306 // Masks and 64-bit host addresses for each analog output.
1307 repeated AddressInfo analog_outputs = 4;
1308 }
1309
1310 message IONetworkIndexes {
1311 // Global network input index for each digital input.
1312 repeated int32 digital_inputs = 1;
1313
1314 // Global network output index for each digital output.
1315 repeated int32 digital_outputs = 2;
1316
1317 // Global network input index for each analog input.
1318 repeated int32 analog_inputs = 3;
1319
1320 // Global network output index for each analog output.
1321 repeated int32 analog_outputs = 4;
1322 }
1323
1324 message Constants {
1325 // Default time to wait when reading or writing an SDO with ServiceChannelRead() or ServiceChannelWrite()
1326 uint32 sdo_timeout_milliseconds_default = 1;
1327 }
1328}
1330
1332message NetworkNodeStatus {
1333 // All the digital input states.
1334 repeated bool digital_input_states = 2;
1335
1336 // All the digital output states.
1337 repeated bool digital_output_states = 3;
1338
1339 // All the analog input values.
1340 repeated int32 analog_input_values = 4;
1341
1342 // All the analog output values.
1343 repeated int32 analog_output_values = 5;
1344
1345 // EtherCAT AL Status register (0x0130). Bits 0-3: state (1=Init, 2=PreOp, 4=SafeOp, 8=Op).
1346 uint32 al_status = 6;
1347 // EtherCAT AL Status Code register. Non-zero indicates an error condition.
1348 uint32 al_status_code = 7;
1349 // CANopen over EtherCAT (CoE) emergency message (8 bytes per CiA 301).
1350 uint64 coe_emergency_message = 8;
1351 // Network counter when CoeEmergencyMessage was received.
1352 int32 coe_emergency_message_network_counter = 9;
1353}
1355
1356
1358// The state of the digital output at the specified bit number.
1359message DigitalOutput {
1360 // The bit number.
1361 int32 bit_number = 1;
1362
1363 // The state of the digital output. When this message is used as a request
1364 // to set a digital output, the digital output will be set to this value.
1365 // When this message is returned as an action response, this field holds the
1366 // new state.
1367 bool state = 2;
1368}
1369
1370// The value of the analog output at the specified channel.
1371message AnalogOutput {
1372 // The channel number.
1373 int32 channel = 1;
1374
1375 // The value of the analog output. When this message is used as a request
1376 // to set an analog output, the analog output will be set to this value.
1377 // When this message is returned as an action response, this field holds the
1378 // new value.
1379 int32 value = 2;
1380}
1381
1382// The location, size, and value of a Service Data Object (SDO).
1383// This message is used to read or write SDOs on a network node.
1384// See NetworkNodeAction sdo_writes and sdo_reads.
1385message SDO {
1386 // The SDO index.
1387 int32 index = 1;
1388
1389 // The SDO sub-index.
1390 int32 sub_index = 2;
1391
1392 // The number of bytes.
1393 int32 byte_count = 3;
1394
1395 // The types of data values we can read or write.
1396 enum ValueType {
1397 option allow_alias = true;
1398 UNKNOWN = 0;
1399 INTEGER = 0;
1400 STRING = 1;
1401 BYTES = 2;
1402 }
1403
1404 // When reading an SDO, specify the read type. Default is integer.
1405 optional ValueType read_type = 4;
1406
1407 // Wait this long for a response, otherwise it will throw a timeout error.
1408 optional uint32 timeout_milliseconds = 5;
1409
1410 // The SDO value.
1411 // SDO write: This field is used to set the value to write.
1412 // SDO read: This field is ignored when SDO read action request, but will contain the
1413 // value read from the SDO in the SDO read action response.
1414 oneof value {
1415 // Integer value used for all non-string types.
1416 int32 integer_value = 6;
1417
1418 // String value.
1419 string string_value = 7;
1420
1421 // Raw bytes value
1422 bytes bytes_value = 8;
1423 }
1424}
1425
1426// An ASCII command to execute on an AKD drive.
1427message AKDASCII {
1428 // The command as a string.
1429 string command = 1;
1430
1431 // The returned result of the command. This field is ignored when requesting
1432 // an AKDASCII command.
1433 optional string result = 2;
1434}
1435
1436// A set of actions to perform on a network node. This message is used to
1437// request a set of actions. A new instance of this message will be returned
1438// containing the results of the requested acitons.
1439message NetworkNodeAction {
1440
1441 // Any number of digital outputs to set. Add instances of the DigitalOutput
1442 // message to this field to set digital outputs. When this message is
1443 // returned in the action response, this field contains the new states of
1444 // the digital outputs.
1445 repeated DigitalOutput digital_output_sets = 1;
1446
1447 // Any number of analog outputs to set. Add instances of the AnalogOutput
1448 // message to this field to set analog outputs. When this message is
1449 // returned in the action response, this field contains the new values of
1450 // the analog outputs.
1451 repeated AnalogOutput analog_output_sets = 2;
1452
1453 // The requested SDO value(s) to write to the network. Add instances of the
1454 // SDO message to this field to write to SDOs. When this message is returned
1455 // in the action response, this field will be empty.
1456 repeated SDO sdo_writes = 3;
1457
1458 // The SDO(s) to be read from the network. Add instances of the SDO message
1459 // to this field to read SDO values. When this message is returned in the
1460 // action response, the SDO messages will contain the read values.
1461 repeated SDO sdo_reads = 4;
1462
1463 // AKD ASCII command(s). Only used for Kollmorgen AKD drives. Add instances
1464 // of the AKDASCII message to request an ASCII command. When this message
1465 // is returned in the action response, the AKDASCII messages will contain
1466 // both the command executed and the returned result as a string.
1467 repeated AKDASCII akd_asciis = 5;
1468}
1470
1472message NetworkNodeConfig {}
1474
1476message NetworkNodeRequest {
1477 // Common request header
1478 RSI.RapidServer.RequestHeader header = 1;
1479
1480 // Network Node index
1481 int32 index = 2;
1482
1483 optional NetworkNodeConfig config = 3;
1484 optional NetworkNodeAction action = 4;
1485}
1487
1489message NetworkNodeResponse {
1490 // Common response header. Always check the response header for errors.
1491 RSI.RapidServer.ResponseHeader header = 1;
1492
1493 // Network Node index
1494 int32 index = 2;
1495
1496 optional NetworkNodeConfig config = 3;
1497 optional NetworkNodeAction action = 4;
1498 optional NetworkNodeInfo info = 5;
1499 optional NetworkNodeStatus status = 6;
1500}
1502
1504message NetworkNodeBatchRequest {
1505 // Common request header
1506 RSI.RapidServer.RequestHeader header = 1;
1507
1508 repeated NetworkNodeRequest requests = 2;
1509}
1510
1511message NetworkNodeBatchResponse {
1512 // Common response header. Always check the response header for errors.
1513 RSI.RapidServer.ResponseHeader header = 1;
1514
1515 repeated NetworkNodeResponse responses = 2;
1516}
1518
1519
1521message RecorderRequest {
1522 // Common request header.
1523 RSI.RapidServer.RequestHeader header = 1;
1524
1525 // The Recorder index. (Check MotionController's Recorder count.)
1526 int32 index = 2;
1527
1528 optional RecorderConfig config = 3;
1529 optional RecorderAction action = 4;
1530}
1532
1533
1535message RecorderResponse {
1536 // Common response header. Always check the response header for errors.
1537 RSI.RapidServer.ResponseHeader header = 1;
1538
1539 // Recorder index
1540 int32 index = 2;
1541
1542 optional RecorderConfig config = 3;
1543 optional RecorderAction action = 4;
1544 optional RecorderInfo info = 5;
1545 optional RecorderStatus status = 6;
1546}
1548
1550message RecorderBatchRequest {
1551 // Common request header
1552 RSI.RapidServer.RequestHeader header = 1;
1553
1554 repeated RecorderRequest requests = 2;
1555}
1556
1557message RecorderBatchResponse {
1558 // Common response header. Always check the response header for errors.
1559 RSI.RapidServer.ResponseHeader header = 1;
1560
1561 repeated RecorderResponse responses = 2;
1562}
1564
1565
1567message RecorderInfo { }
1569
1571message RecorderStatus {
1572 // Is the Recorder recording?
1573 bool is_recording = 1;
1574
1575 // The number of records available for retrieval.
1576 int32 records_available = 2;
1577}
1579
1581message RecorderAction {
1582
1583 optional Reset reset = 1;
1584 optional Start start = 2;
1585 optional Stop stop = 3;
1586 optional RetrieveRecords retrieve_records = 4;
1587
1588 message Reset {}
1589 message Start {}
1590 message Stop {}
1591
1592 message RetrieveRecords {
1593 // New data records will be in the response, if any are available.
1594 repeated Record records = 1;
1595
1596 // A data record from the recorder.
1597 message Record {
1598 // The number of these will depend on the number of addresses to record in the recorder configuration.
1599 repeated FirmwareValue data = 1;
1600 }
1601 }
1602}
1604
1605
1607message RecorderConfig {
1608 // Recorder period, in samples.
1609 optional int32 period = 1;
1610
1611 // If true, the recorder will use a circular buffer, overwriting old data (be sure to read it out).
1612 optional bool circular_buffer = 2;
1613
1614 // The addresses to record. Get these from Controller/Axis/MultiAxis InfoGet rpcs.
1615 repeated AddressInfo addresses = 3;
1616
1617 // Use this to start and end recording with motion.
1618 optional RecorderTriggerOnMotion trigger_on_motion = 4;
1619
1620 // Configure the recorder to generate a RECORDER_HIGH interrupt when the buffer reaches this size.
1621 optional int32 buffer_high_count = 5;
1622
1623 // Read-only, this tells us how many records fit inside the recorder's buffer (see MotionController config's recorder buffer size).
1624 optional int32 record_max_count = 6;
1625
1626 // Internal messages.
1627
1628 message RecorderTriggerOnMotion {
1629 // Use an Axis or MutliAxis's motion supervisor index.
1630 optional int32 motion_supervisor_index = 1;
1631 // Set true if you want the recorder to start when motion starts and stop when motion is done.
1632 optional bool enable = 2;
1633 }
1634}
1635
1637
1639message UserLimitStatus {
1640 // The UserLimit's index.
1641 int32 index = 1;
1642
1643 // Is the UserLimit processing in the RMP firmware_version?
1644 bool enabled = 2;
1645
1646 // Is the UserLimit currently triggered?
1647 bool state = 3;
1648}
1650
1652message UserLimitAction {
1653
1654 optional Reset reset = 1;
1655 optional Enable enable = 2;
1656 optional Disable disable = 3;
1657
1658 message Reset {};
1659 message Enable {};
1660 message Disable {};
1661}
1663
1664
1666message UserLimitInfo {}
1668
1669
1671message UserLimitConfig {
1672
1673 // The type of trigger.
1674 optional RSIUserLimitTriggerType trigger_type = 1;
1675
1676 // The primary condition.
1677 optional UserLimitCondition condition_0 = 2;
1678
1679 // The second condition. Condition 1 will not be set if trigger type is SINGLE_CONDITION or invalid
1680 optional UserLimitCondition condition_1 = 3;
1681
1682 // Optionally set some output when the UserLimit triggers.
1683 optional UserLimitOutput output = 4;
1684
1685 // Optionally perform an action on an Axis when the UserLimit triggers.
1686 optional RSIAction action = 5;
1687
1688 // Perform the optional action on this Axis.
1689 optional int32 action_axis = 6;
1690
1691 // Duration the trigger state must be active before triggering. (Seconds)
1692 optional double duration = 7;
1693
1694 // True if the UserLimit should trigger once, then disable itself.
1695 optional bool is_single_shot = 8;
1696
1697 // Configurable interrupt data.
1698 repeated UserLimitInterruptUserData user_data = 9;
1699
1700 // Internal messages.
1701 message UserLimitCondition {
1702 // The data type to be evaluated.
1703 RSIDataType data_type = 1;
1704
1705 // The logic of the UserLimit.
1706 RSIUserLimitLogic logic = 2;
1707
1708 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1709 uint64 address = 3;
1710
1711 // A 32-bit AND mask.
1712 optional uint32 mask = 4;
1713
1714 // The 32-bit trigger value. (for 32-bit data types)
1715 optional int32 integer_limit_value = 5;
1716
1717 // The 64-bit double trigger value (for 64-bit doubles data types only).
1718 optional double double_limit_value = 6;
1719 }
1720
1721 message UInt32Masks {
1722 // 32-bit AND mask.
1723 uint32 and_mask = 1;
1724
1725 // 32-bit OR mask.
1726 uint32 or_mask = 2;
1727 }
1728
1729 message UInt64Masks {
1730 // 64-bit AND mask.
1731 uint64 and_mask = 1;
1732
1733 // 64-bit OR mask;
1734 uint64 or_mask = 2;
1735 }
1736
1737 message UserLimitOutput {
1738 // True if enabled
1739 bool enabled = 2;
1740
1741 // The type of data to output.
1742 RSIDataType data_type = 3;
1743
1744 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1745 uint64 address = 4;
1746
1747 // The type of output.
1748 oneof output {
1749 // Perform an AND and OR on a 64-bit value.
1750 UInt32Masks uint32_masks = 6;
1751
1752 // Output a 32-bit value.
1753 int32 int32_value = 7;
1754
1755 // Perform an AND and OR on a 64-bit value.
1756 UInt64Masks uint64_masks = 8;
1757
1758 // Output a 64-bit double.
1759 double double_value = 9;
1760
1761 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1762 // Use this field when you want the UserLimit to copy data from the input address to the output address.
1763 uint64 input_address = 10;
1764 }
1765 }
1766
1767 message UserLimitInterruptUserData {
1768 // Interrupt data index (0-4).
1769 uint32 index = 1;
1770
1771 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1772 optional uint64 address = 2;
1773 }
1774}
1776
1778message UserLimitRequest {
1779 // Common request header.
1780 RSI.RapidServer.RequestHeader header = 1;
1781
1782 // UserLimit index.
1783 int32 index = 2;
1784
1785 optional UserLimitConfig config = 3;
1786
1787 optional UserLimitAction action = 4;
1788}
1790
1792message UserLimitResponse {
1793 // Common response header. Always check the response header for errors.
1794 RSI.RapidServer.ResponseHeader header = 1;
1795
1796 // UserLimit index.
1797 int32 index = 2;
1798
1799 optional UserLimitConfig config = 3;
1800 optional UserLimitAction action = 4;
1801 optional UserLimitInfo info = 5;
1802 optional UserLimitStatus status = 6;
1803}
1805
1807message UserLimitBatchRequest {
1808 // Common request header.
1809 RSI.RapidServer.RequestHeader header = 1;
1810
1811 repeated UserLimitRequest requests = 2;
1812}
1813
1814message UserLimitBatchResponse {
1815 // Common response header. Always check the response header for errors.
1816 RSI.RapidServer.ResponseHeader header = 1;
1817
1818 repeated UserLimitResponse responses = 2;
1819}
1821
1823message MathBlockConfig {
1824 // Host memory address for Input0 (left-hand operand).
1825 optional uint64 input_address_0 = 1;
1826
1827 // Data type for Input0.
1828 optional RSIDataType input_data_type_0 = 2;
1829
1830 // Host memory address for Input1 (right-hand operand).
1831 optional uint64 input_address_1 = 3;
1832
1833 // Data type for Input1.
1834 optional RSIDataType input_data_type_1 = 4;
1835
1836 // Data type for Output. (optional output)
1837 optional RSIDataType output_data_type = 5;
1838
1839 // Host memory address for Output. Set to 0 to disable.
1840 optional uint64 output_address = 6;
1841
1842 // Data type for processing / process value.
1843 optional RSIDataType process_data_type = 7;
1844
1845 // Math operation to perform. Use NONE to disable.
1846 optional RSIMathBlockOperation operation = 8;
1847}
1849
1851message MathBlockAction {
1852 // Get the current process value of the MathBlock.
1853 optional ProcessValueGet process_value_get = 1;
1854
1855 message ProcessValueGet {
1856 // The process value result. (response only)
1857 optional FirmwareValue value = 1;
1858 }
1859}
1861
1863message MathBlockInfo {
1864 // Process value host address (use with Recorder or UserLimit).
1865 optional uint64 process_value_host_address = 1;
1866
1867 // Process value firmware address.
1868 optional uint64 process_value_firmware_address = 2;
1869
1870 // Process value data type (matches Config.process_data_type but available even with skip_config).
1871 optional RSIDataType process_value_data_type = 3;
1872}
1874
1876message MathBlockStatus {
1877 // The MathBlock's index.
1878 int32 index = 1;
1879
1880 // Current process value of the MathBlock (changes every sample).
1881 optional FirmwareValue process_value = 2;
1882}
1884
1886message MathBlockRequest {
1887 // Common request header.
1888 RSI.RapidServer.RequestHeader header = 1;
1889
1890 // MathBlock index.
1891 int32 index = 2;
1892
1893 optional MathBlockConfig config = 3;
1894 optional MathBlockAction action = 4;
1895}
1897
1899message MathBlockResponse {
1900 // Common response header. Always check the response header for errors.
1901 RSI.RapidServer.ResponseHeader header = 1;
1902
1903 // MathBlock index.
1904 int32 index = 2;
1905
1906 optional MathBlockConfig config = 3;
1907 optional MathBlockAction action = 4;
1908 optional MathBlockInfo info = 5;
1909 optional MathBlockStatus status = 6;
1910}
1912
1914message MathBlockBatchRequest {
1915 // Common request header.
1916 RSI.RapidServer.RequestHeader header = 1;
1917
1918 repeated MathBlockRequest requests = 2;
1919}
1920
1921message MathBlockBatchResponse {
1922 // Common response header. Always check the response header for errors.
1923 RSI.RapidServer.ResponseHeader header = 1;
1924
1925 repeated MathBlockResponse responses = 2;
1926}
1928
1930message RTOSConfig {}
1932
1934message RTOSInfo {
1935 // The RMP process catalog.
1936 string rmp_catalog = 1;
1937
1938 // The RMPNetwork process catalog.
1939 string rmp_network_catalog = 2;
1940
1941 // The number of INtime nodes.
1942 uint32 node_count = 3;
1943}
1945
1947message RTOSAction {
1948 optional Restart restart = 1;
1949 optional Stop stop = 2;
1950 optional Start start = 3;
1951
1952 message Restart {}
1953 message Stop {}
1954 message Start {}
1955}
1957
1959message RTOSStatus {
1960 // The status of the INtime node
1961 INtimeStatus status = 3;
1962}
1964
1966message RTOSRequest {
1967 // Common request header
1968 RSI.RapidServer.RequestHeader header = 1;
1969
1970 // Specify a specific INtime node by name.
1971 string name = 2;
1972
1973 optional RTOSConfig config = 3;
1974 optional RTOSAction action = 4;
1975}
1977
1979message RTOSResponse {
1980 // Common response header. Always check the response header for errors.
1981 RSI.RapidServer.ResponseHeader header = 1;
1982
1983 // Specify a specific INtime node by name.
1984 string name = 2;
1985
1986 optional RTOSConfig config = 3;
1987 optional RTOSAction action = 4;
1988 optional RTOSInfo info = 5;
1989 optional RTOSStatus status = 6;
1990}
1992
1994message RTOSBatchRequest {
1995 // Common request header
1996 RSI.RapidServer.RequestHeader header = 1;
1997
1998 repeated RTOSRequest requests = 2;
1999}
2000
2001message RTOSBatchResponse {
2002 // Common response header. Always check the response header for errors.
2003 RSI.RapidServer.ResponseHeader header = 1;
2004
2005 repeated RTOSResponse responses = 2;
2006}
2008
2010message RTTaskCreationParameters {
2011 // The name of the function to run in the task
2012 string function_name = 1;
2013
2014 // The task functions library directory and name.
2015 optional string library_name = 2;
2016 optional string library_directory = 3;
2017
2018 // The task's user defined label.
2019 optional string user_label = 4;
2020
2021 // The task's priority. 0 is the highest priority, 255 is the lowest.
2022 optional TaskPriority priority = 5;
2023
2024 // Number of times to repeat the task. -1 means infinite.
2025 optional int32 repeats = 6;
2026
2027 // How frequently to run the task in samples
2028 optional int32 period = 7;
2029
2030 // Offset in samples for when to run the task. For example, if the task is set
2031 // to run every 10 samples, and the phase is set to 3, the task will run at
2032 // 3, 13, 23, etc.
2033 optional int32 phase = 8;
2034
2035 // Whether to record execution time metrics for the task.
2036 optional bool enable_timing = 9;
2037}
2039
2041message RTTaskConfig {}
2042
2044
2046message RTTaskAction {
2047 // Stop the task.
2048 optional Stop stop = 1;
2049
2050 // Remove the current task from the task manager
2051 optional Remove remove = 2;
2052
2053 // Reset the timing metrics for the task. (ExecutionTimeMax, Min, Mean, Last)
2054 optional TimingReset timing_reset = 3;
2055
2056 // Wait until the task has executed this many times before returning.
2057 optional ExecutionCountAbsoluteWait execution_count_absolute_wait = 4;
2058
2059 // Wait until the task has executed this many more times before returning.
2060 optional ExecutionCountRelativeWait execution_count_relative_wait = 5;
2061
2062 message Stop {}
2063 message Remove {}
2064 message TimingReset {}
2065
2066 message ExecutionCountAbsoluteWait {
2067 // Wait until the task has executed this many times total.
2068 optional int64 count = 1;
2069
2070 // The maximum time to wait for the task to execute the specified number of times.
2071 optional int32 timeout_ms = 2;
2072 }
2073
2074 message ExecutionCountRelativeWait {
2075 // Wait until the task has executed this many more times from the current count.
2076 optional int64 count = 1;
2077
2078 // The maximum time to wait for the task to execute the specified number of times.
2079 optional int32 timeout_ms = 2;
2080 }
2081}
2083
2085message RTTaskInfo {
2086 // The unique id of the task (not unique across task managers).
2087 int32 id = 1;
2088
2089 // The id of the task manager that created this task.
2090 int32 manager_id = 2;
2091
2092 // Constants related to the RTTask class.
2093 Constants constants = 3;
2094
2095 // The parameters that were used to create the task.
2096 RTTaskCreationParameters creation_parameters = 4;
2097
2098 message Constants {
2099 // Constants related to the RTTask creation parameters.
2100 CreationParameterConstants creation_parameters = 1;
2101
2102 // Constants related to the RTTask status.
2103 StatusConstants status = 2;
2104
2105 message CreationParameterConstants {
2106 // The maximum length of the library directory path.
2107 int32 directory_length_maximum = 1;
2108
2109 // The maximum length of the library name and user label.
2110 int32 name_length_maximum = 2;
2111
2112 // The default library name to use if none is specified.
2113 string library_name_default = 3;
2114
2115 // The default task priority.
2116 int32 priority_default = 4;
2117
2118 // The special value for the repeats field to indicate infinite repeats.
2119 int32 repeat_forever = 5;
2120
2121 // The special value for the repeats field to indicate no repeats.
2122 int32 repeat_none = 6;
2123
2124 // The default period for the task.
2125 int32 period_default = 7;
2126
2127 // The default phase for the task.
2128 int32 phase_default = 8;
2129
2130 // The default value for the enable_timing field.
2131 int32 enable_timing_default = 9;
2132 }
2133
2134 message StatusConstants {
2135 // The special value for the execution count to indicate an invalid count.
2136 int64 invalid_execution_count = 1;
2137
2138 // The special value for the execution time to indicate an invalid time.
2139 uint64 invalid_execution_time = 2;
2140
2141 // The maximum size of the error message.
2142 uint64 error_message_size_maximum = 3;
2143 }
2144 }
2145}
2147
2149message RTTaskStatus {
2150 // The current state of the task (running, waiting, etc.)
2151 RTTaskState state = 1;
2152
2153 // The number of times the task has executed.
2154 optional int64 execution_count = 2;
2155
2156 // The maximum execution time of the task (in nanoseconds).
2157 optional uint64 execution_time_max = 3;
2158
2159 // The minimum execution time of the task (in nanoseconds).
2160 optional uint64 execution_time_min = 4;
2161
2162 // The mean execution time of the task (in nanoseconds).
2163 optional double execution_time_mean = 5;
2164
2165 // The most recent execution time for the task (in nanoseconds).
2166 optional uint64 execution_time_last = 6;
2167
2168 // The time since the task was last started (in nanoseconds).
2169 optional uint64 start_time_delta_last = 7;
2170
2171 // The maximum time difference between the start of one task execution and the next (in nanoseconds).
2172 optional uint64 start_time_delta_max = 8;
2173
2174 // The mean time difference between the start of one task execution and the next (in nanoseconds).
2175 optional double start_time_delta_mean = 9;
2176
2177 // If the task is in an error state, this will contain the error message.
2178 optional string error_message = 10;
2179}
2181
2183message RTTaskRequest {
2184 // Common request header.
2185 RSI.RapidServer.RequestHeader header = 1;
2186
2187 // The id of the task. This is the id assigned to the task when it was created.
2188 int32 id = 2;
2189
2190 // The id of the task manager that the task was submitted to.
2191 int32 manager_id = 3;
2192
2193 optional RTTaskConfig config = 4;
2194 optional RTTaskAction action = 5;
2195}
2197
2199message RTTaskResponse {
2200 // Common response header. Always check the response header for errors.
2201 RSI.RapidServer.ResponseHeader header = 1;
2202
2203 // The id of the task. This is the id assigned to the task when it was created.
2204 int32 id = 2;
2205
2206 // The id of the task manager that the task was submitted to.
2207 int32 manager_id = 3;
2208
2209 optional RTTaskConfig config = 4;
2210 optional RTTaskAction action = 5;
2211 optional RTTaskInfo info = 6;
2212 optional RTTaskStatus status = 7;
2213}
2215
2217message RTTaskBatchRequest {
2218 // Common request header.
2219 RSI.RapidServer.RequestHeader header = 1;
2220
2221 repeated RTTaskRequest requests = 2;
2222}
2223
2224message RTTaskBatchResponse {
2225 // Common response header. Always check the response header for errors.
2226 RSI.RapidServer.ResponseHeader header = 1;
2227
2228 repeated RTTaskResponse responses = 2;
2229}
2231
2233message RTTaskManagerCreationParameters {
2234 // Where the rttaskmanager executable is located (usually the RSI installation directory).
2235 optional string rt_task_directory = 1;
2236
2237 // The platform to run the task manager on. Not needed on Linux. On Windows/INtime,
2238 // use INTIME for real time performance. Only use WINDOWS for debugging.
2239 optional PlatformType platform = 2;
2240
2241 // For INtime managers, the name of the INtime node to run on (usually NodeA).
2242 optional string node_name = 3;
2243
2244 // On Linux, the CPU core to pin the task manager to.
2245 optional int32 cpu_core = 4;
2246
2247 // The task manager's user defined label.
2248 optional string user_label = 5;
2249
2250 // Disable the initialization of the RMP and RapidCode objects on task manager startup and their use in synchronizing task manager cycles.
2251 optional bool no_rmp = 6;
2252}
2254
2256message RTTaskManagerConfig {}
2257
2259
2261message RTTaskManagerAction {
2262 // Start a new task manager.
2263 optional Create create = 1;
2264
2265 // Discover the task managers that are currently running.
2266 optional Discover discover = 2;
2267
2268 // Shutdown the task manager.
2269 optional Shutdown shutdown = 3;
2270
2271 // Submit and start a new task.
2272 optional TaskSubmit task_submit = 4;
2273
2274 // Remove a task from the task manager.
2275 optional TaskRemove task_remove = 5;
2276
2277 // Set the values of global variables
2278 repeated GlobalValueSet global_value_sets = 6;
2279
2280 message Create {
2281 // The task manager's creation parameters.
2282 RTTaskManagerCreationParameters creation_parameters = 1;
2283
2284 // The id of the created task manager.
2285 int32 id = 2; // read-only
2286 }
2287
2288 message Discover {
2289 // The ids of all the task managers that were discoverd
2290 repeated int32 manager_ids = 1; // read-only
2291 }
2292
2293 message Shutdown {}
2294
2295 message TaskSubmit {
2296 // The parameters for the task to create.
2297 RTTaskCreationParameters task_creation_parameters = 1;
2298
2299 // The id of the created task
2300 optional int32 task_id = 2; // read-only
2301 }
2302
2303 message TaskRemove {
2304 // The id of the task to remove.
2305 int32 task_id = 1;
2306 }
2307
2308 message GlobalValueSet {
2309 // The value to set the global variable to. See FirmwareValue for details.
2310 FirmwareValue value = 1;
2311
2312 // The name of the global variable to set.
2313 string name = 2;
2314
2315 // The name and directory of the library that contains the global variable.
2316 // (The task functions library)
2317 optional string library_name = 3;
2318 optional string library_directory = 4;
2319 }
2320}
2322
2324message RTTaskManagerInfo {
2325 // The unique id of the task manager.
2326 int32 id = 1;
2327
2328 // Constants related to the RTTaskManager class.
2329 Constants constants = 2;
2330
2331 // The creation parameters that were used to create the task manager.
2332 RTTaskManagerCreationParameters creation_parameters = 3;
2333
2334 message Constants {
2335 // The maximum number of RTTaskManagers that can be created.
2336 int32 rt_task_manager_count_maximum = 1;
2337
2338 // The maximum number of RTTasks that can be created in a single RTTaskManager.
2339 int32 rt_task_count_maximum = 2;
2340
2341 // The name of the RTTaskManager executable.
2342 string rt_task_manager_executable_name = 3;
2343
2344 // Constants related to the RTTaskManager's creation parameters.
2345 CreationParameterConstants creation_parameters = 4;
2346
2347 message CreationParameterConstants {
2348 // The maximum length of the RTTaskManager's directory name.
2349 int32 directory_length_maximum = 1;
2350
2351 // The maximum length of the RTTaskManager's library name and user label.
2352 int32 name_length_maximum = 2;
2353
2354 // The default user label for the RTTaskManager if none is specified.
2355 string user_label_default = 3;
2356 }
2357 }
2358}
2360
2362message RTTaskManagerStatus {
2363 // The ids of the tasks that are currently registered with the task manager.
2364 // (Includes tasks that are not running.)
2365 repeated int32 task_ids = 1;
2366
2367 // The names and values of the global variables that the task manager has access to.
2368 map<string, FirmwareValue> global_values = 2;
2369
2370 // The state of the RTTaskManager (dead, running, etc.)
2371 optional RTTaskManagerState state = 3;
2372
2373 // The total number of tasks that have been submitted to the task manager (even if they are no longer running).
2374 optional uint64 task_submission_count = 4;
2375
2376 // The number of cycles (iterations) the task manager has run.
2377 optional int64 cycle_count = 5;
2378
2379 // The time it took for the longest cycle to complete (in nanoseconds).
2380 optional uint64 cycle_time_max = 6;
2381
2382 // The time it took for the shortest cycle to complete (in nanoseconds).
2383 optional uint64 cycle_time_min = 7;
2384
2385 // The mean of the cycle times (in nanoseconds).
2386 optional double cycle_time_mean = 8;
2387
2388 // The time it took for the last cycle to complete (in nanoseconds).
2389 optional uint64 cycle_time_last = 9;
2390
2391 // The time since the last cycle started (in nanoseconds).
2392 optional uint64 start_time_delta_last = 10;
2393
2394 // The maximum time difference between the start of one cycle and the next (in nanoseconds).
2395 optional uint64 start_time_delta_max = 11;
2396
2397 // The mean time difference between the start of one cycle and the next (in nanoseconds).
2398 optional double start_time_delta_mean = 12;
2399}
2401
2403message RTTaskManagerRequest {
2404 // Common request header.
2405 RSI.RapidServer.RequestHeader header = 1;
2406
2407 // RTTaskManager id.
2408 optional int32 id = 2; // Required for all actions except Create and Discover.
2409
2410 optional RTTaskManagerConfig config = 3;
2411 optional RTTaskManagerAction action = 4;
2412}
2414
2416message RTTaskManagerResponse {
2417 // Common response header. Always check the response header for errors.
2418 RSI.RapidServer.ResponseHeader header = 1;
2419
2420 // RTTaskManager id.
2421 optional int32 id = 2; // When creating a RTTaskManager, this will be the new RTTaskManager's id.
2422
2423 optional RTTaskManagerConfig config = 3;
2424 optional RTTaskManagerAction action = 4;
2425 optional RTTaskManagerInfo info = 5;
2426 optional RTTaskManagerStatus status = 6;
2427}
2429
2431message RTTaskManagerBatchRequest {
2432 // Common request header.
2433 RSI.RapidServer.RequestHeader header = 1;
2434
2435 repeated RTTaskManagerRequest requests = 2;
2436}
2437
2438message RTTaskManagerBatchResponse {
2439 // Common response header. Always check the response header for errors.
2440 RSI.RapidServer.ResponseHeader header = 1;
2441
2442 repeated RTTaskManagerResponse responses = 2;
2443}
TaskPriority
Enum representing the priority levels for a real-time task.
Definition rttask.h:102
RTTaskManagerState
Enum representing the possible states of an RTTaskManager.
Definition rttask.h:76
RTTaskState
Enum representing the possible states of a real-time task.
Definition rttask.h:64
PlatformType
Enum representing the platform type for an RTTaskManager.
Definition rttask.h:87
RSINetworkEniResult
NetworkEniGenerate return values.
Definition rsienums.h:1540
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1520
RSINetworkStartMode
Network start modes.
Definition rsienums.h:629
RSINetworkState
State of network.
Definition rsienums.h:609
RSIControllerAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:405
RSIMotorDisableAction
Action for when a motor is disabled.
Definition rsienums.h:1369
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:1088
RSIDataType
Data types for User Limits and other triggers.
Definition rsienums.h:703
RSIUserLimitLogic
Logic options for User Limits.
Definition rsienums.h:690
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1165
RSIAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:439
RSINetworkInterfaceType
Network host interface type used for EtherCAT frame I/O.
Definition rsienums.h:1435
RSINetworkStartError
Network start errors.
Definition rsienums.h:635
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:502
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:677
INtimeStatus
INtime status values.
Definition rsienums.h:1446
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:397
RSINetworkType
Type of Network topology.
Definition rsienums.h:670
RSINodeType
Valid Node types.
Definition rsienums.h:721
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:1064
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1381
RSINetworkIndexType
Network PDO index types for configuring axis input/output mappings.
Definition rsienums.h:1479
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1268