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 FirmwareValue 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 // Cumulative EoE (Ethernet over EtherCAT) frames sent host->nodes since network start, network-wide
454 // (includes broadcasts, so >= the sum of per-node NetworkNodeStatus.eoe_host_to_node_frame_count).
455 uint64 eoe_host_to_node_frame_count = 16;
456 // Cumulative EoE frames received nodes->host since network start, network-wide.
457 uint64 eoe_node_to_host_frame_count = 17;
458
459 message TimingMetricsStatus {
460 // Most recent value.
461 uint32 delta = 1;
462 // Lowest recorded since last clear.
463 uint32 min_recorded = 2;
464 // Highest recorded since last clear.
465 uint32 max_recorded = 3;
466 // Count below low_threshold since last clear.
467 uint32 low_count = 4;
468 // Count above high_threshold since last clear.
469 uint32 high_count = 5;
470 // True if timing metrics are currently enabled.
471 bool enabled = 6;
472 }
473
474 message PdoInputStatus {
475 // The index of this PDO in RMP firmware.
476 int32 index = 1;
477 // The value of this PDO.
478 FirmwareValue value = 2;
479 }
480
481 message PdoOutputStatus {
482 // The index of this PDO in RMP firmware.
483 int32 index = 1;
484 // The value that was sent on the network.
485 FirmwareValue sent_value = 2;
486 // Whether or not the override_value is being used.
487 bool override_enabled = 3;
488 // The override value that can be written by software.
489 FirmwareValue override_value = 4;
490 // The value that the RMP is going to send, unless overridden.
491 FirmwareValue firmware_value = 5;
492 }
493}
495
497message NetworkInfo {
498 RSINetworkType type = 1;
499 int32 pdo_input_count = 4;
500 int32 pdo_output_count = 5;
501
502 // Collection of all Network PDO Inputs.
503 repeated PdoInputInfo pdo_inputs = 6;
504
505 // Collection of all Network PDO Outputs.
506 repeated PdoOutputInfo pdo_outputs = 7;
507
508 message PdoInputInfo {
509 string name = 1;
510 AddressInfo address_info = 2;
511 int32 bit_size = 3;
512 int32 bit_offset = 4;
513 string data_type_name = 5;
514 }
515
516 message PdoOutputInfo {
517 string name = 1;
518 AddressInfo sent_value_address = 2;
519 AddressInfo override_value_address = 3;
520 AddressInfo firmware_value_address = 4;
521 int32 bit_size = 5;
522 int32 bit_offset = 6;
523 string data_type_name = 7;
524 }
525}
527
528
529
530
532message AxisRequest {
533 // Common request header
534 RSI.RapidServer.RequestHeader header = 1;
535
536 // Axis index
537 int32 index = 2;
538
539 optional AxisConfig config = 3;
540 optional AxisAction action = 4;
541}
543
545message AxisResponse {
546 // Common response header. Always check the response header for errors.
547 RSI.RapidServer.ResponseHeader header = 1;
548
549 // Axis index
550 int32 index = 2;
551
552 optional AxisConfig config = 3;
553 optional AxisAction action = 4;
554 optional AxisInfo info = 5;
555 optional AxisStatus status = 6;
556}
558
560message AxisBatchRequest {
561 // Common request header
562 RSI.RapidServer.RequestHeader header = 1;
563
564 repeated AxisRequest requests = 2;
565}
566
567message AxisBatchResponse {
568 // Common response header. Always check the response header for errors.
569 RSI.RapidServer.ResponseHeader header = 1;
570
571 repeated AxisResponse responses = 2;
572}
574
576message AxisStatus {
577 // Is the amp enabled?
578 bool amp_enabled = 1;
579
580 // The state (IDLE, MOVING, ERROR, etc.).
581 RSIState state = 2;
582
583 // The cause of the error (if in ERROR, STOPPED, STOPPING_ERROR state).
584 RSISource source = 3;
585
586 // Extra fault info from the drive
587 string source_name = 4;
588
589 // Positions.
590 PositionStatus position = 5;
591
592 // Command and actual velocity.
593 VelocityStatus velocity = 6;
594
595 // Command acceleration.
596 AccelerationStatus acceleration = 7;
597
598 // How many frames does the Axis have left to execute?
599 int32 frames_to_execute = 8;
600
601 // The motion id as stored in the Axis class (unsigned 16-bit integer).
602 uint32 motion_id = 9;
603
604 // The currently executing motion identifier (unsigned 16-bit integer).
605 uint32 motion_id_executing = 10;
606
607 // The currently exeucting motion element identifier (unsigned 16-bit integer).
608 int32 element_id_executing = 11;
609
610 // Is electronic gearing enabled?
611 bool gear_enabled = 12;
612
613 // Status bits related to the motor.
614 MotorStatusBits motor_status_bits = 13;
615
616 // Status bits related to motion.
617 MotionStatusBits motion_status_bits = 14;
618
619 // DS402 status bits, for drives that support DS402.
620 Ds402StatusBits ds402_status_bits = 15;
621
622 // Dedicated output bits.
623 DedicatedOutputBits dedicated_output_bits = 16;
624
625 // Dedicated input bits.
626 DedicatedInputBits dedicated_input_bits = 17;
627
628 // Homing status
629 bool home_state = 18;
630 RSIHomeStage home_stage = 19;
631
632 // The states of the general purpose input bits, DigitalInputsGet().
633 uint32 general_input_bits = 20;
634
635 // The states of the general purpose output bits, DigitalOutputsGet().
636 uint32 general_output_bits = 21;
637
638 message PositionStatus {
639 double command = 1;
640 double actual = 2;
641 double error = 3;
642 double target = 4;
643 double origin = 5;
644 double encoder_0 = 6;
645 double encoder_1 = 7;
646 double compensation = 8;
647 double backlash = 9;
648 }
649
650 message VelocityStatus {
651 double command = 1;
652 double actual = 2;
653 }
654
655 message AccelerationStatus {
656 double command = 1;
657 }
658
659 message MotorStatusBits {
660 bool amp_fault = 1;
661 bool amp_warning = 2;
662 bool feedback_fault = 3;
663 bool limit_position_error = 4;
664 bool limit_torque = 5;
665 bool limit_hardware_negative = 6;
666 bool limit_hardware_positive = 7;
667 bool limit_software_negative = 8;
668 bool limit_software_positive = 9;
669 }
670
671 message MotionStatusBits {
672 bool done = 1;
673 bool start = 2;
674 bool modify = 3;
675 bool at_velocity = 4;
676 bool out_of_frames = 5;
677 bool near_target = 6;
678 bool at_target = 7;
679 bool settled = 8;
680 }
681
682 message Ds402StatusBits {
683 bool ready_to_switch_on = 1;
684 bool switched_on = 2;
685 bool operation_enabled = 3;
686 bool fault = 4;
687 bool voltage_enabled = 5;
688 bool quick_stop = 6;
689 bool switch_on_disabled = 7;
690 bool warning = 8;
691 bool manufacturer_specific_8 = 9;
692 bool remote = 10;
693 bool target_reached = 11;
694 bool internal_limit_active = 12;
695 bool operation_mode_specific_12 = 13;
696 bool operation_mode_specific_13 = 14;
697 bool manufacturer_specific_14 = 15;
698 bool manufacturer_specific_15 = 16;
699 }
700
701 message DedicatedOutputBits {
702 bool amp_enable = 1;
703 bool brake_release = 2;
704 }
705
706 message DedicatedInputBits {
707 bool amp_fault = 1;
708 bool brake_applied = 2;
709 bool home = 3;
710 bool limit_hardware_positive = 4;
711 bool limit_hardware_negative = 5;
712 bool index = 6;
713 bool index_secondary = 7;
714 bool feedback_fault = 8;
715 bool captured = 9;
716 bool hall_a = 10;
717 bool hall_b = 11;
718 bool hall_c = 12;
719 bool amp_active = 13;
720 bool warning = 14;
721 bool drive_status_9 = 15;
722 bool drive_status_10 = 16;
723 bool feedback_fault_primary = 17;
724 bool feedback_fault_secondary = 18;
725 }
726}
728
730message AxisAction {
731 optional Abort abort = 1;
732 optional EStopAbort e_stop_abort = 2;
733 optional EStopModifyAbort e_stop_modify_abort = 3;
734 optional EStopModify e_stop_modify = 4;
735 optional EStop e_stop = 5;
736 optional TriggeredModify triggered_modify = 6;
737 optional Stop stop = 7;
738 optional Resume resume = 8;
739
740 optional ClearFaults clear_faults = 9;
741 optional AmpEnable amp_enable = 10;
742 optional AmpDisable amp_disable = 11;
743 optional HoldGateSet hold_gate_set = 12;
744 optional PositionSet position_set = 13;
745 optional Move move = 14;
746 optional GearEnable gear_enable = 15;
747 optional GearDisable gear_disable = 16;
748 optional Home home = 17;
749 optional HomeCancel home_cancel = 18;
750 optional OperationMode operation_mode_set = 19;
751 optional OperationMode operation_mode_get = 20;
752
753 // Remap logical PDO indexes (control word, status word, etc.) on this axis.
754 // Each entry calls Axis::NetworkIndexSet(type, index). Per-entry failures are
755 // reported via ResponseHeader.Errors; successful entries still take effect.
756 // Equivalent to the C++/C# API `axis->NetworkIndexSet(indexType, newIndex)`.
757 repeated AxisNetworkIndex network_index_sets = 21;
758
759 message Abort {}
760 message EStopAbort {}
761 message EStopModifyAbort{}
762 message EStopModify{}
763 message EStop {}
764 message TriggeredModify {}
765 message Stop {}
766 message Resume {}
767
768 message ClearFaults {}
769
770 message AmpEnable {
771 optional int32 timeout_milliseconds = 1;
772 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
773 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
774 }
775 message AmpDisable {}
776 message HoldGateSet {
777 bool state = 1;
778 }
779 message PositionSet{
780 double position = 1;
781 }
782
783 message Move {
784 // Request one type of motion.
785 oneof move {
786 AxisMovePointToPoint point_to_point = 3;
787 AxisMoveVelocity velocity = 4;
788 MoveStreaming streaming = 5;
789 }
790
791 // Specify the MotionID for this move. (If you don't specify one, it will be auto-incremented after each move.)
792 optional uint32 motion_id = 6;
793
794 // Specify MotionHold criteria, if you want the motion to hold execution until conditions are met.
795 optional MotionHold motion_hold = 7;
796
797 // Wait for motion to complete? (See ConfigSet settling criteria.)
798 bool blocking = 8;
799 }
800
801 message GearEnable {
802 optional int32 master_axis_number = 2;
803 optional RSIAxisMasterType gearing_source = 3;
804 int32 numerator = 4;
805 int32 denominator = 5;
806 }
807 message GearDisable {}
808
809 message Home {
810 RSIHomeMethod method = 1;
811 double velocity = 2;
812 double slow_velocity = 3;
813 double acceleration = 4;
814 double deceleration = 5;
815 optional double jerk_percent = 6;
816 optional bool move_to_zero = 7;
817 optional double offset = 8;
818 optional RSIAction behavior = 9;
819 }
820
821 message HomeCancel {}
822
823 message OperationMode {
824 // For setting the operation mode in the request, or getting it from the response.
825 optional RSIOperationMode operation_mode = 1;
826 }
827}
828
829// Internal MoveRequest messages.
830 message AxisMovePointToPoint {
831 // Move to this position. Absolute, unless the relative boolean is true. (UserUnits)
832 double position = 1;
833
834 // Maximum velocity. (UserUnits/second).
835 optional double velocity = 2;
836
837 // Maximum acceleration. (UserUnits/second^2). If specified, velocity and deceleration must be specified.
838 optional double acceleration = 3;
839
840 // Maximum deceleration. (UserUnits/second^2). If specified, velocity and acceleration must be specified
841 optional double deceleration = 4;
842
843 // Percentage of acceleration that will be smoothed. (0-100)
844 // Acceleration time will not change so if Jerk Percent is 100, maximum acceleration will be 2x the specified maximum.
845 // If specified, velocity, acceleration, and deceleration must be specified.
846 // A non-zero value makes the PointToPoint MoveSCurve
847 optional double jerk_percent = 5;
848
849 // Final velocity. 0.0 is default. (UserUnits/second)
850 // If specified, velocity, acceleration, and deceleration must be specified.
851 optional double final_velocity = 6;
852
853 // Set true if you intend position to be a relative increment. If specified, jerk_percent must be specified.
854 bool relative = 7;
855}
856
857message AxisMoveVelocity {
858 // Move at this velocity. (UserUnits/second)
859 double velocity = 1;
860
861 // Maximum acceleration. (UserUnits/second^2)
862 double acceleration = 2;
863
864 // Percentage of acceleration that will be smoothed. (0-100)
865 // Acceleration time will not change so if Jerk Percent is 100, maximum acceleration will be 2x the specified maximum.
866 // A non-zero value uses MoveVelocitySCurve
867 double jerk_percent = 3;
868}
869
870message MoveStreaming {
871 repeated double positions = 1;
872 repeated double velocities = 2;
873 repeated double accelerations = 3;
874 repeated double jerks = 4;
875 repeated double times = 5;
876 int32 empty_count = 6;
877 bool retain = 7;
878 bool final = 8;
879
880 // Specify the interpolation algorithm to use when only providing positions and no velocities nor accelerations.
881 // Uses the RapidCode method RapidCodeMotion::MovePT()
882 // The three currently supported ones are:
883 // RSIMotionTypePT (no interpolation)
884 // RSIMotionTypeBSPLINE (default)
885 // RSIMotionTypePVT is used in the RapidCode method RapidCodeMotion::MovePVT(), i.e. when positions and velocities are given.
886 optional RSIMotionType pt_motion_type = 9;
887
888 // Feedforward values for PTF/PVTF motion. When present and matching positions size:
889 // - With velocities: uses MovePVTF()
890 // - Without velocities: uses MovePTF()
891 repeated double feedforwards = 10;
892}
894
895message MotionHoldGate{
896 int32 number = 1;
897}
898
899message MotionHoldAxis {
900 // If true, motion will hold for Actual Position. If false, it will hold for Command Position.
901 bool actual = 1;
902
903 // Greater than, less than, etc.
904 RSIUserLimitLogic logic = 2;
905
906 // The number of the Axis whose position we're waiting for.
907 int32 hold_axis_number = 3;
908
909 // The position of the hold axis which will trigger the hold to finish.
910 double hold_axis_position = 4;
911}
912
913message MotionHoldUser {
914 // The 64-bit host address on the server.
915 uint64 address = 1;
916
917 // The 32-bit mask that will be ANDed with the value stored at the User Address.
918 int32 mask = 2;
919
920 // The 32-bit mask that will compared for equality after the AND mask.
921 int32 pattern = 3;
922}
923
924message MotionHold {
925 // Choose the type of hold.
926 oneof type {
927 MotionHoldGate gate = 2;
928 MotionHoldAxis axis = 3;
929 MotionHoldUser user = 4;
930 }
931
932 // The motion will execute regardless of hold status after this amount of time.
933 optional double hold_timeout_seconds = 6;
934
935 // This optional delay will occur before motion starts.
936 optional double delay_seconds = 7;
937}
938
940message AxisConfig {
941 // The number of encoder counts to UserUnits.
942 optional double user_units = 1;
943
944 // The origin position, typically set when homing.
945 optional double origin_position = 2;
946
947 // Give the Axis a name, if you like.
948 optional string user_label = 3;
949
950 // Default trajectory values.
951 optional TrajectoryDefaults defaults = 4;
952 optional HardwareTrigger amp_fault = 5;
953 optional HardwareTrigger home_switch = 6;
954 optional ErrorLimit error_limit = 7;
955 optional HardwareTrigger hardware_negative_limit = 8;
956 optional HardwareTrigger hardware_positive_limit = 9;
957 optional SoftwareTrigger software_negative_limit = 10;
958 optional SoftwareTrigger software_positive_limit = 11;
959 optional Settling settling = 12;
960 optional MotionConfig motion = 13;
961 optional Homing homing = 14;
962 optional int32 frame_buffer_size = 15;
963 optional RSIMotorDisableAction amp_disable_action = 16;
964 optional double feed_rate = 17;
965
966 // Internal messages.
967 message TrajectoryDefaults
968 {
969 optional double velocity = 1;
970 optional double acceleration = 2;
971 optional double deceleration = 3;
972 optional double jerk_percent = 4;
973 optional double position1 = 5;
974 optional double position2 = 6;
975 optional double relative_increment = 7;
976 }
977
978 message HardwareTrigger {
979 optional RSIAction action = 1;
980 optional bool trigger_state = 2;
981 optional double duration = 3;
982 }
983
984 message SoftwareTrigger {
985 optional RSIAction action = 1;
986 optional double trigger_value = 2;
987 }
988
989 message ErrorLimit {
990 optional RSIAction action = 1;
991 optional double trigger_value = 2;
992 optional double duration = 3;
993 }
994
995 message Settling {
996 optional double position_tolerance_fine = 1;
997 optional double position_tolerance_coarse = 2;
998 optional double velocity_tolerance = 3;
999 optional double time_seconds = 4;
1000 optional bool on_stop = 5;
1001 optional bool on_estop = 6;
1002 optional bool on_estop_cmd_equals_actual = 7;
1003 }
1004
1005 message MotionConfig {
1006 // Seconds.
1007 optional double stop_time = 1;
1008
1009 // Seconds.
1010 optional double estop_time = 2;
1011
1012 // UserUnits per second.
1013 optional double triggered_modify_deceleration = 3;
1014
1015 // Jerk percent (0-100).
1016 optional double triggered_modify_jerk_percent = 4;
1017
1018 // UserUnits per second.
1019 optional double estop_modify_deceleration = 5;
1020
1021 // Jerk percent (0-100).
1022 optional double estop_modify_jerk_percent = 6;
1023 }
1024 message Homing {
1025 // placeholder for possible future homing configuration. see Action for Home configuration.
1026 }
1027}
1029
1031message AxisInfo {
1032 // Axis index.
1033 int32 index = 1;
1034
1035 // Host and firmware addresses
1036 repeated AddressInfo addresses = 2;
1037
1038 // NetworkNode information.
1039 NetworkNodeInfo node_info = 3;
1040
1041 // Constants from the Axis object
1042 Constants constants = 4;
1043
1044 // The internal motion supervisor index
1045 int32 motion_supervisor_index = 5;
1046
1047 // The drive index of this axis relative to its network node.
1048 // For single-axis drives this is always 0.
1049 int32 drive_index = 6;
1050
1051 // Resolved global network PDO indexes for this axis. One entry per
1052 // RSINetworkIndexType that resolves to a valid index on this drive.
1053 // Entries whose resolved value equals Constants.network_index_invalid
1054 // are omitted: absence means the PDO is not mapped on this drive.
1055 // Equivalent to Axis.NetworkIndexGet() in the C++/C# API.
1056 // Static after network start.
1057 repeated AxisNetworkIndex network_indexes = 7;
1058
1059 message Constants {
1060 // The value returned by NetworkIndexGet() when the index is invalid or nonexistent for this Axis.
1061 uint32 network_index_invalid = 1;
1062
1063 // The default time an Axis waits before generating an AmpFault if the Axis does not enable after calling AmpEnableSet(true).
1064 double amp_enable_amp_fault_timeout_seconds_default = 2;
1065 }
1066}
1068
1069// A resolved global network PDO index for an axis. Used by both
1070// AxisInfo.network_indexes (read) and AxisAction.network_index_sets (write).
1071// Named AxisNetworkIndex rather than NetworkIndex to keep the axis-scoped
1072// meaning explicit at top-level scope.
1073message AxisNetworkIndex {
1074 RSINetworkIndexType type = 1;
1075 int32 index = 2;
1076}
1077
1079message MultiAxisRequest {
1080 // Common request header
1081 RSI.RapidServer.RequestHeader header = 1;
1082
1083 // MultiAxis index
1084 int32 index = 2;
1085
1086 optional MultiAxisConfig config = 3;
1087 optional MultiAxisAction action = 4;
1088}
1090
1092message MultiAxisResponse {
1093 // Common response header. Always check the response header for errors.
1094 RSI.RapidServer.ResponseHeader header = 1;
1095
1096 // MultiAxis index
1097 int32 index = 2;
1098
1099 optional MultiAxisConfig config = 3;
1100 optional MultiAxisAction action = 4;
1101 optional MultiAxisInfo info = 5;
1102 optional MultiAxisStatus status = 6;
1103}
1105
1107message MultiAxisBatchRequest {
1108 // Common request header
1109 RSI.RapidServer.RequestHeader header = 1;
1110
1111 repeated MultiAxisRequest requests = 2;
1112}
1113
1114message MultiAxisBatchResponse {
1115 // Common response header. Always check the response header for errors.
1116 RSI.RapidServer.ResponseHeader header = 1;
1117
1118 repeated MultiAxisResponse responses = 2;
1119}
1121
1122
1124message MultiAxisStatus {
1125 RSIState state = 1;
1126 RSISource source = 2;
1127 string source_name = 3;
1128 bool amp_enabled = 4;
1129 MotionStatusBits motion_status_bits = 5;
1130 repeated AxisStatus axis_statuses = 6;
1131 bool is_mapped = 7;
1132
1133 message MotionStatusBits {
1134 bool done = 1;
1135 bool start = 2;
1136 bool modify = 3;
1137 bool at_velocity = 4;
1138 bool out_of_frames = 5;
1139 }
1140}
1142
1144message MultiAxisAction {
1145 optional Abort abort = 1;
1146 optional EStopAbort e_stop_abort = 2;
1147 optional EStopModifyAbort e_stop_modify_abort = 3;
1148 optional EStopModify e_stop_modify = 4;
1149 optional EStop e_stop = 5;
1150 optional TriggeredModify triggered_modify = 6;
1151 optional Stop stop = 7;
1152 optional Resume resume = 8;
1153
1154 optional ClearFaults clear_faults = 9;
1155 optional AmpEnable amp_enable = 10;
1156 optional AmpDisable amp_disable = 11;
1157 optional Move move = 12;
1158 optional RemoveAxes remove_axes = 13;
1159 optional Unmap unmap = 14;
1160 optional Map map = 15;
1161 optional AxisAdd axis_add = 16;
1162
1163 message Abort {}
1164 message EStopAbort {}
1165 message EStopModifyAbort{}
1166 message EStopModify{}
1167 message EStop {}
1168 message TriggeredModify {}
1169 message Stop {}
1170 message Resume {}
1171
1172 message ClearFaults {}
1173
1174 message AmpEnable {
1175 optional int32 timeout_milliseconds = 1;
1176 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
1177 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
1178 }
1179 message AmpDisable {}
1180
1181 message Move {
1182 oneof move {
1183 MultiAxisMovePointToPoint point_to_point = 3;
1184 MultiAxisMoveVelocity velocity = 4;
1185 MoveStreaming streaming = 5;
1186 }
1187 optional uint32 motion_id = 6;
1188
1189 // Specify MotionHold criteria, if you want the motion to hold execution until conditions are met.
1190 optional MotionHold motion_hold = 7;
1191
1192 bool blocking = 8;
1193
1194 message MultiAxisMovePointToPoint {
1195 repeated AxisMovePointToPoint axis_move_point_to_points = 1;
1196 bool relative = 2;
1197 }
1198
1199 message MultiAxisMoveVelocity {
1200 repeated AxisMoveVelocity axis_move_velocities = 1;
1201 }
1202 }
1203 message RemoveAxes {}
1204 message Unmap {}
1205 message Map {}
1206 message AxisAdd {
1207 int32 axis_index = 1;
1208 }
1209}
1211
1213message MultiAxisConfig {
1214 repeated int32 axes_indices = 1;
1215 optional string user_label = 2;
1216 optional double feed_rate = 3;
1217 optional double stop_time = 4;
1218 optional double e_stop_time = 5;
1219}
1221
1223message MultiAxisInfo {
1224 // The zero-based index for this MultiAxis.
1225 int32 index = 1;
1226
1227 // The internal motion supervisor index.
1228 int32 motion_supervisor_index = 2;
1229
1230 // Host and firmware addresses
1231 repeated AddressInfo addresses = 3;
1232}
1234
1236message NetworkNodeInfo {
1237 // True if hardware exists.
1238 bool exists = 1;
1239
1240 // The node index.
1241 int32 index = 2;
1242
1243 // The number of Axis objects on this node.
1244 int32 axis_count = 3;
1245
1246 // True if this node has I/O.
1247 bool has_io = 4;
1248
1249 // The number of digital/analog inputs and outputs on this node.
1250 IOCounts io_counts = 5;
1251
1252 // The bit masks and 64-bit host addresses for this node's I/O.
1253 IOAddresses io_addresses = 6;
1254
1255 // The node type.
1256 RSINodeType type = 7;
1257
1258 // 32-bit vendor identifier.
1259 uint32 vendor_id = 8;
1260
1261 // 32-bit product code.
1262 uint32 product_code = 9;
1263
1264 // 32-bit hardware revision.
1265 uint32 hardware_revision = 10;
1266
1267 // Station alias.
1268 uint32 station_alias = 11;
1269
1270 // Serial number.
1271 string serial_number = 12;
1272
1273 // The node's name.
1274 string name = 13;
1275
1276 // Product name.
1277 string product_name = 14;
1278
1279 // Vendor name.
1280 string vendor_name = 15;
1281
1282 Constants constants = 16;
1283
1284 // The global network PDO indexes for this node's I/O channels.
1285 IONetworkIndexes io_network_indexes = 17;
1286
1287
1288 // Internal messages.
1289
1290 // The number of digital/analog inputs and outputs.
1291 message IOCounts {
1292 // Number of digital inputs.
1293 int32 digital_inputs = 1;
1294
1295 // Number of digital outputs.
1296 int32 digital_outputs = 2;
1297
1298 // Number of analog inputs.
1299 int32 analog_inputs = 3;
1300
1301 // Number of analog outputs.
1302 int32 analog_outputs = 4;
1303 }
1304
1305 message IOAddresses {
1306 // Masks and 64-bit host addresses for each digital input.
1307 repeated AddressInfo digital_inputs = 1;
1308
1309 // Masks and 64-bit host addresses for each digital output.
1310 repeated AddressInfo digital_outputs = 2;
1311
1312 // Masks and 64-bit host addresses for each analog input.
1313 repeated AddressInfo analog_inputs = 3;
1314
1315 // Masks and 64-bit host addresses for each analog output.
1316 repeated AddressInfo analog_outputs = 4;
1317 }
1318
1319 message IONetworkIndexes {
1320 // Global network input index for each digital input.
1321 repeated int32 digital_inputs = 1;
1322
1323 // Global network output index for each digital output.
1324 repeated int32 digital_outputs = 2;
1325
1326 // Global network input index for each analog input.
1327 repeated int32 analog_inputs = 3;
1328
1329 // Global network output index for each analog output.
1330 repeated int32 analog_outputs = 4;
1331 }
1332
1333 message Constants {
1334 // Default time to wait when reading or writing an SDO with ServiceChannelRead() or ServiceChannelWrite()
1335 uint32 sdo_timeout_milliseconds_default = 1;
1336 }
1337}
1339
1341message NetworkNodeStatus {
1342 // All the digital input states.
1343 repeated bool digital_input_states = 2;
1344
1345 // All the digital output states.
1346 repeated bool digital_output_states = 3;
1347
1348 // All the analog input values.
1349 repeated int32 analog_input_values = 4;
1350
1351 // All the analog output values.
1352 repeated int32 analog_output_values = 5;
1353
1354 // EtherCAT AL Status register (0x0130). Bits 0-3: state (1=Init, 2=PreOp, 4=SafeOp, 8=Op).
1355 uint32 al_status = 6;
1356 // EtherCAT AL Status Code register. Non-zero indicates an error condition.
1357 uint32 al_status_code = 7;
1358 // CANopen over EtherCAT (CoE) emergency message (8 bytes per CiA 301).
1359 uint64 coe_emergency_message = 8;
1360 // Network counter when CoeEmergencyMessage was received.
1361 int32 coe_emergency_message_network_counter = 9;
1362 // Cumulative EoE (Ethernet over EtherCAT) frames sent host->this node since network start.
1363 uint64 eoe_host_to_node_frame_count = 10;
1364 // Cumulative EoE frames received this node->host since network start.
1365 uint64 eoe_node_to_host_frame_count = 11;
1366}
1368
1369
1371// The state of the digital output at the specified bit number.
1372message DigitalOutput {
1373 // The bit number.
1374 int32 bit_number = 1;
1375
1376 // The state of the digital output. When this message is used as a request
1377 // to set a digital output, the digital output will be set to this value.
1378 // When this message is returned as an action response, this field holds the
1379 // new state.
1380 bool state = 2;
1381}
1382
1383// The value of the analog output at the specified channel.
1384message AnalogOutput {
1385 // The channel number.
1386 int32 channel = 1;
1387
1388 // The value of the analog output. When this message is used as a request
1389 // to set an analog output, the analog output will be set to this value.
1390 // When this message is returned as an action response, this field holds the
1391 // new value.
1392 int32 value = 2;
1393}
1394
1395// The location, size, and value of a Service Data Object (SDO).
1396// This message is used to read or write SDOs on a network node.
1397// See NetworkNodeAction sdo_writes and sdo_reads.
1398message SDO {
1399 // The SDO index.
1400 int32 index = 1;
1401
1402 // The SDO sub-index.
1403 int32 sub_index = 2;
1404
1405 // The number of bytes.
1406 int32 byte_count = 3;
1407
1408 // The types of data values we can read or write.
1409 enum ValueType {
1410 option allow_alias = true;
1411 UNKNOWN = 0;
1412 INTEGER = 0;
1413 STRING = 1;
1414 BYTES = 2;
1415 }
1416
1417 // When reading an SDO, specify the read type. Default is integer.
1418 optional ValueType read_type = 4;
1419
1420 // Wait this long for a response, otherwise it will throw a timeout error.
1421 optional uint32 timeout_milliseconds = 5;
1422
1423 // The SDO value.
1424 // SDO write: This field is used to set the value to write.
1425 // SDO read: This field is ignored when SDO read action request, but will contain the
1426 // value read from the SDO in the SDO read action response.
1427 oneof value {
1428 // Integer value used for all non-string types.
1429 int32 integer_value = 6;
1430
1431 // String value.
1432 string string_value = 7;
1433
1434 // Raw bytes value
1435 bytes bytes_value = 8;
1436 }
1437}
1438
1439// An ASCII command to execute on an AKD drive.
1440message AKDASCII {
1441 // The command as a string.
1442 string command = 1;
1443
1444 // The returned result of the command. This field is ignored when requesting
1445 // an AKDASCII command.
1446 optional string result = 2;
1447}
1448
1449// A set of actions to perform on a network node. This message is used to
1450// request a set of actions. A new instance of this message will be returned
1451// containing the results of the requested acitons.
1452message NetworkNodeAction {
1453
1454 // Any number of digital outputs to set. Add instances of the DigitalOutput
1455 // message to this field to set digital outputs. When this message is
1456 // returned in the action response, this field contains the new states of
1457 // the digital outputs.
1458 repeated DigitalOutput digital_output_sets = 1;
1459
1460 // Any number of analog outputs to set. Add instances of the AnalogOutput
1461 // message to this field to set analog outputs. When this message is
1462 // returned in the action response, this field contains the new values of
1463 // the analog outputs.
1464 repeated AnalogOutput analog_output_sets = 2;
1465
1466 // The requested SDO value(s) to write to the network. Add instances of the
1467 // SDO message to this field to write to SDOs. When this message is returned
1468 // in the action response, this field will be empty.
1469 repeated SDO sdo_writes = 3;
1470
1471 // The SDO(s) to be read from the network. Add instances of the SDO message
1472 // to this field to read SDO values. When this message is returned in the
1473 // action response, the SDO messages will contain the read values.
1474 repeated SDO sdo_reads = 4;
1475
1476 // AKD ASCII command(s). Only used for Kollmorgen AKD drives. Add instances
1477 // of the AKDASCII message to request an ASCII command. When this message
1478 // is returned in the action response, the AKDASCII messages will contain
1479 // both the command executed and the returned result as a string.
1480 repeated AKDASCII akd_asciis = 5;
1481}
1483
1485message NetworkNodeConfig {}
1487
1489message NetworkNodeRequest {
1490 // Common request header
1491 RSI.RapidServer.RequestHeader header = 1;
1492
1493 // Network Node index
1494 int32 index = 2;
1495
1496 optional NetworkNodeConfig config = 3;
1497 optional NetworkNodeAction action = 4;
1498}
1500
1502message NetworkNodeResponse {
1503 // Common response header. Always check the response header for errors.
1504 RSI.RapidServer.ResponseHeader header = 1;
1505
1506 // Network Node index
1507 int32 index = 2;
1508
1509 optional NetworkNodeConfig config = 3;
1510 optional NetworkNodeAction action = 4;
1511 optional NetworkNodeInfo info = 5;
1512 optional NetworkNodeStatus status = 6;
1513}
1515
1517message NetworkNodeBatchRequest {
1518 // Common request header
1519 RSI.RapidServer.RequestHeader header = 1;
1520
1521 repeated NetworkNodeRequest requests = 2;
1522}
1523
1524message NetworkNodeBatchResponse {
1525 // Common response header. Always check the response header for errors.
1526 RSI.RapidServer.ResponseHeader header = 1;
1527
1528 repeated NetworkNodeResponse responses = 2;
1529}
1531
1532
1534message RecorderRequest {
1535 // Common request header.
1536 RSI.RapidServer.RequestHeader header = 1;
1537
1538 // The Recorder index. (Check MotionController's Recorder count.)
1539 int32 index = 2;
1540
1541 optional RecorderConfig config = 3;
1542 optional RecorderAction action = 4;
1543}
1545
1546
1548message RecorderResponse {
1549 // Common response header. Always check the response header for errors.
1550 RSI.RapidServer.ResponseHeader header = 1;
1551
1552 // Recorder index
1553 int32 index = 2;
1554
1555 optional RecorderConfig config = 3;
1556 optional RecorderAction action = 4;
1557 optional RecorderInfo info = 5;
1558 optional RecorderStatus status = 6;
1559}
1561
1563message RecorderBatchRequest {
1564 // Common request header
1565 RSI.RapidServer.RequestHeader header = 1;
1566
1567 repeated RecorderRequest requests = 2;
1568}
1569
1570message RecorderBatchResponse {
1571 // Common response header. Always check the response header for errors.
1572 RSI.RapidServer.ResponseHeader header = 1;
1573
1574 repeated RecorderResponse responses = 2;
1575}
1577
1578
1580message RecorderInfo { }
1582
1584message RecorderStatus {
1585 // Is the Recorder recording?
1586 bool is_recording = 1;
1587
1588 // The number of records available for retrieval.
1589 int32 records_available = 2;
1590}
1592
1594message RecorderAction {
1595
1596 optional Reset reset = 1;
1597 optional Start start = 2;
1598 optional Stop stop = 3;
1599 optional RetrieveRecords retrieve_records = 4;
1600
1601 message Reset {}
1602 message Start {}
1603 message Stop {}
1604
1605 message RetrieveRecords {
1606 // New data records will be in the response, if any are available.
1607 repeated Record records = 1;
1608
1609 // A data record from the recorder.
1610 message Record {
1611 // The number of these will depend on the number of addresses to record in the recorder configuration.
1612 repeated FirmwareValue data = 1;
1613 }
1614 }
1615}
1617
1618
1620message RecorderConfig {
1621 // Recorder period, in samples.
1622 optional int32 period = 1;
1623
1624 // If true, the recorder will use a circular buffer, overwriting old data (be sure to read it out).
1625 optional bool circular_buffer = 2;
1626
1627 // The addresses to record. Get these from Controller/Axis/MultiAxis InfoGet rpcs.
1628 repeated AddressInfo addresses = 3;
1629
1630 // Use this to start and end recording with motion.
1631 optional RecorderTriggerOnMotion trigger_on_motion = 4;
1632
1633 // Configure the recorder to generate a RECORDER_HIGH interrupt when the buffer reaches this size.
1634 optional int32 buffer_high_count = 5;
1635
1636 // Read-only, this tells us how many records fit inside the recorder's buffer (see MotionController config's recorder buffer size).
1637 optional int32 record_max_count = 6;
1638
1639 // Internal messages.
1640
1641 message RecorderTriggerOnMotion {
1642 // Use an Axis or MutliAxis's motion supervisor index.
1643 optional int32 motion_supervisor_index = 1;
1644 // Set true if you want the recorder to start when motion starts and stop when motion is done.
1645 optional bool enable = 2;
1646 }
1647}
1648
1650
1652message UserLimitStatus {
1653 // The UserLimit's index.
1654 int32 index = 1;
1655
1656 // Is the UserLimit processing in the RMP firmware_version?
1657 bool enabled = 2;
1658
1659 // Is the UserLimit currently triggered?
1660 bool state = 3;
1661}
1663
1665message UserLimitAction {
1666
1667 optional Reset reset = 1;
1668 optional Enable enable = 2;
1669 optional Disable disable = 3;
1670
1671 message Reset {};
1672 message Enable {};
1673 message Disable {};
1674}
1676
1677
1679message UserLimitInfo {}
1681
1682
1684message UserLimitConfig {
1685
1686 // The type of trigger.
1687 optional RSIUserLimitTriggerType trigger_type = 1;
1688
1689 // The primary condition.
1690 optional UserLimitCondition condition_0 = 2;
1691
1692 // The second condition. Condition 1 will not be set if trigger type is SINGLE_CONDITION or invalid
1693 optional UserLimitCondition condition_1 = 3;
1694
1695 // Optionally set some output when the UserLimit triggers.
1696 optional UserLimitOutput output = 4;
1697
1698 // Optionally perform an action on an Axis when the UserLimit triggers.
1699 optional RSIAction action = 5;
1700
1701 // Perform the optional action on this Axis.
1702 optional int32 action_axis = 6;
1703
1704 // Duration the trigger state must be active before triggering. (Seconds)
1705 optional double duration = 7;
1706
1707 // True if the UserLimit should trigger once, then disable itself.
1708 optional bool is_single_shot = 8;
1709
1710 // Configurable interrupt data.
1711 repeated UserLimitInterruptUserData user_data = 9;
1712
1713 // Internal messages.
1714 message UserLimitCondition {
1715 // The data type to be evaluated.
1716 RSIDataType data_type = 1;
1717
1718 // The logic of the UserLimit.
1719 RSIUserLimitLogic logic = 2;
1720
1721 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1722 uint64 address = 3;
1723
1724 // A 32-bit AND mask.
1725 optional uint32 mask = 4;
1726
1727 // The 32-bit trigger value. (for 32-bit data types)
1728 optional int32 integer_limit_value = 5;
1729
1730 // The 64-bit double trigger value (for 64-bit doubles data types only).
1731 optional double double_limit_value = 6;
1732 }
1733
1734 message UInt32Masks {
1735 // 32-bit AND mask.
1736 uint32 and_mask = 1;
1737
1738 // 32-bit OR mask.
1739 uint32 or_mask = 2;
1740 }
1741
1742 message UInt64Masks {
1743 // 64-bit AND mask.
1744 uint64 and_mask = 1;
1745
1746 // 64-bit OR mask;
1747 uint64 or_mask = 2;
1748 }
1749
1750 message UserLimitOutput {
1751 // True if enabled
1752 bool enabled = 2;
1753
1754 // The type of data to output.
1755 RSIDataType data_type = 3;
1756
1757 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1758 uint64 address = 4;
1759
1760 // The type of output.
1761 oneof output {
1762 // Perform an AND and OR on a 64-bit value.
1763 UInt32Masks uint32_masks = 6;
1764
1765 // Output a 32-bit value.
1766 int32 int32_value = 7;
1767
1768 // Perform an AND and OR on a 64-bit value.
1769 UInt64Masks uint64_masks = 8;
1770
1771 // Output a 64-bit double.
1772 double double_value = 9;
1773
1774 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1775 // Use this field when you want the UserLimit to copy data from the input address to the output address.
1776 uint64 input_address = 10;
1777 }
1778 }
1779
1780 message UserLimitInterruptUserData {
1781 // Interrupt data index (0-4).
1782 uint32 index = 1;
1783
1784 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1785 optional uint64 address = 2;
1786 }
1787}
1789
1791message UserLimitRequest {
1792 // Common request header.
1793 RSI.RapidServer.RequestHeader header = 1;
1794
1795 // UserLimit index.
1796 int32 index = 2;
1797
1798 optional UserLimitConfig config = 3;
1799
1800 optional UserLimitAction action = 4;
1801}
1803
1805message UserLimitResponse {
1806 // Common response header. Always check the response header for errors.
1807 RSI.RapidServer.ResponseHeader header = 1;
1808
1809 // UserLimit index.
1810 int32 index = 2;
1811
1812 optional UserLimitConfig config = 3;
1813 optional UserLimitAction action = 4;
1814 optional UserLimitInfo info = 5;
1815 optional UserLimitStatus status = 6;
1816}
1818
1820message UserLimitBatchRequest {
1821 // Common request header.
1822 RSI.RapidServer.RequestHeader header = 1;
1823
1824 repeated UserLimitRequest requests = 2;
1825}
1826
1827message UserLimitBatchResponse {
1828 // Common response header. Always check the response header for errors.
1829 RSI.RapidServer.ResponseHeader header = 1;
1830
1831 repeated UserLimitResponse responses = 2;
1832}
1834
1836message MathBlockConfig {
1837 // Host memory address for Input0 (left-hand operand).
1838 optional uint64 input_address_0 = 1;
1839
1840 // Data type for Input0.
1841 optional RSIDataType input_data_type_0 = 2;
1842
1843 // Host memory address for Input1 (right-hand operand).
1844 optional uint64 input_address_1 = 3;
1845
1846 // Data type for Input1.
1847 optional RSIDataType input_data_type_1 = 4;
1848
1849 // Data type for Output. (optional output)
1850 optional RSIDataType output_data_type = 5;
1851
1852 // Host memory address for Output. Set to 0 to disable.
1853 optional uint64 output_address = 6;
1854
1855 // Data type for processing / process value.
1856 optional RSIDataType process_data_type = 7;
1857
1858 // Math operation to perform. Use NONE to disable.
1859 optional RSIMathBlockOperation operation = 8;
1860}
1862
1864message MathBlockAction {
1865 // Get the current process value of the MathBlock.
1866 optional ProcessValueGet process_value_get = 1;
1867
1868 message ProcessValueGet {
1869 // The process value result. (response only)
1870 optional FirmwareValue value = 1;
1871 }
1872}
1874
1876message MathBlockInfo {
1877 // Process value host address (use with Recorder or UserLimit).
1878 optional uint64 process_value_host_address = 1;
1879
1880 // Process value firmware address.
1881 optional uint64 process_value_firmware_address = 2;
1882
1883 // Process value data type (matches Config.process_data_type but available even with skip_config).
1884 optional RSIDataType process_value_data_type = 3;
1885}
1887
1889message MathBlockStatus {
1890 // The MathBlock's index.
1891 int32 index = 1;
1892
1893 // Current process value of the MathBlock (changes every sample).
1894 optional FirmwareValue process_value = 2;
1895}
1897
1899message MathBlockRequest {
1900 // Common request header.
1901 RSI.RapidServer.RequestHeader header = 1;
1902
1903 // MathBlock index.
1904 int32 index = 2;
1905
1906 optional MathBlockConfig config = 3;
1907 optional MathBlockAction action = 4;
1908}
1910
1912message MathBlockResponse {
1913 // Common response header. Always check the response header for errors.
1914 RSI.RapidServer.ResponseHeader header = 1;
1915
1916 // MathBlock index.
1917 int32 index = 2;
1918
1919 optional MathBlockConfig config = 3;
1920 optional MathBlockAction action = 4;
1921 optional MathBlockInfo info = 5;
1922 optional MathBlockStatus status = 6;
1923}
1925
1927message MathBlockBatchRequest {
1928 // Common request header.
1929 RSI.RapidServer.RequestHeader header = 1;
1930
1931 repeated MathBlockRequest requests = 2;
1932}
1933
1934message MathBlockBatchResponse {
1935 // Common response header. Always check the response header for errors.
1936 RSI.RapidServer.ResponseHeader header = 1;
1937
1938 repeated MathBlockResponse responses = 2;
1939}
1941
1943message RTOSConfig {}
1945
1947message RTOSInfo {
1948 // The RMP process catalog.
1949 string rmp_catalog = 1;
1950
1951 // The RMPNetwork process catalog.
1952 string rmp_network_catalog = 2;
1953
1954 // The number of INtime nodes.
1955 uint32 node_count = 3;
1956}
1958
1960message RTOSAction {
1961 optional Restart restart = 1;
1962 optional Stop stop = 2;
1963 optional Start start = 3;
1964
1965 message Restart {}
1966 message Stop {}
1967 message Start {}
1968}
1970
1972message RTOSStatus {
1973 // The status of the INtime node
1974 INtimeStatus status = 3;
1975}
1977
1979message RTOSRequest {
1980 // Common request header
1981 RSI.RapidServer.RequestHeader 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}
1990
1992message RTOSResponse {
1993 // Common response header. Always check the response header for errors.
1994 RSI.RapidServer.ResponseHeader header = 1;
1995
1996 // Specify a specific INtime node by name.
1997 string name = 2;
1998
1999 optional RTOSConfig config = 3;
2000 optional RTOSAction action = 4;
2001 optional RTOSInfo info = 5;
2002 optional RTOSStatus status = 6;
2003}
2005
2007message RTOSBatchRequest {
2008 // Common request header
2009 RSI.RapidServer.RequestHeader header = 1;
2010
2011 repeated RTOSRequest requests = 2;
2012}
2013
2014message RTOSBatchResponse {
2015 // Common response header. Always check the response header for errors.
2016 RSI.RapidServer.ResponseHeader header = 1;
2017
2018 repeated RTOSResponse responses = 2;
2019}
2021
2023message RTTaskCreationParameters {
2024 // The name of the function to run in the task
2025 string function_name = 1;
2026
2027 // The task functions library directory and name.
2028 optional string library_name = 2;
2029 optional string library_directory = 3;
2030
2031 // The task's user defined label.
2032 optional string user_label = 4;
2033
2034 // The task's priority. 0 is the highest priority, 255 is the lowest.
2035 optional TaskPriority priority = 5;
2036
2037 // Number of times to repeat the task. -1 means infinite.
2038 optional int32 repeats = 6;
2039
2040 // How frequently to run the task in samples
2041 optional int32 period = 7;
2042
2043 // Offset in samples for when to run the task. For example, if the task is set
2044 // to run every 10 samples, and the phase is set to 3, the task will run at
2045 // 3, 13, 23, etc.
2046 optional int32 phase = 8;
2047
2048 // Whether to record execution time metrics for the task.
2049 optional bool enable_timing = 9;
2050}
2052
2054message RTTaskConfig {}
2055
2057
2059message RTTaskAction {
2060 // Stop the task.
2061 optional Stop stop = 1;
2062
2063 // Remove the current task from the task manager
2064 optional Remove remove = 2;
2065
2066 // Reset the timing metrics for the task. (ExecutionTimeMax, Min, Mean, Last)
2067 optional TimingReset timing_reset = 3;
2068
2069 // Wait until the task has executed this many times before returning.
2070 optional ExecutionCountAbsoluteWait execution_count_absolute_wait = 4;
2071
2072 // Wait until the task has executed this many more times before returning.
2073 optional ExecutionCountRelativeWait execution_count_relative_wait = 5;
2074
2075 message Stop {}
2076 message Remove {}
2077 message TimingReset {}
2078
2079 message ExecutionCountAbsoluteWait {
2080 // Wait until the task has executed this many times total.
2081 optional int64 count = 1;
2082
2083 // The maximum time to wait for the task to execute the specified number of times.
2084 optional int32 timeout_ms = 2;
2085 }
2086
2087 message ExecutionCountRelativeWait {
2088 // Wait until the task has executed this many more times from the current count.
2089 optional int64 count = 1;
2090
2091 // The maximum time to wait for the task to execute the specified number of times.
2092 optional int32 timeout_ms = 2;
2093 }
2094}
2096
2098message RTTaskInfo {
2099 // The unique id of the task (not unique across task managers).
2100 int32 id = 1;
2101
2102 // The id of the task manager that created this task.
2103 int32 manager_id = 2;
2104
2105 // Constants related to the RTTask class.
2106 Constants constants = 3;
2107
2108 // The parameters that were used to create the task.
2109 RTTaskCreationParameters creation_parameters = 4;
2110
2111 message Constants {
2112 // Constants related to the RTTask creation parameters.
2113 CreationParameterConstants creation_parameters = 1;
2114
2115 // Constants related to the RTTask status.
2116 StatusConstants status = 2;
2117
2118 message CreationParameterConstants {
2119 // The maximum length of the library directory path.
2120 int32 directory_length_maximum = 1;
2121
2122 // The maximum length of the library name and user label.
2123 int32 name_length_maximum = 2;
2124
2125 // The default library name to use if none is specified.
2126 string library_name_default = 3;
2127
2128 // The default task priority.
2129 int32 priority_default = 4;
2130
2131 // The special value for the repeats field to indicate infinite repeats.
2132 int32 repeat_forever = 5;
2133
2134 // The special value for the repeats field to indicate no repeats.
2135 int32 repeat_none = 6;
2136
2137 // The default period for the task.
2138 int32 period_default = 7;
2139
2140 // The default phase for the task.
2141 int32 phase_default = 8;
2142
2143 // The default value for the enable_timing field.
2144 int32 enable_timing_default = 9;
2145 }
2146
2147 message StatusConstants {
2148 // The special value for the execution count to indicate an invalid count.
2149 int64 invalid_execution_count = 1;
2150
2151 // The special value for the execution time to indicate an invalid time.
2152 uint64 invalid_execution_time = 2;
2153
2154 // The maximum size of the error message.
2155 uint64 error_message_size_maximum = 3;
2156 }
2157 }
2158}
2160
2162message RTTaskStatus {
2163 // The current state of the task (running, waiting, etc.)
2164 RTTaskState state = 1;
2165
2166 // The number of times the task has executed.
2167 optional int64 execution_count = 2;
2168
2169 // The maximum execution time of the task (in nanoseconds).
2170 optional uint64 execution_time_max = 3;
2171
2172 // The minimum execution time of the task (in nanoseconds).
2173 optional uint64 execution_time_min = 4;
2174
2175 // The mean execution time of the task (in nanoseconds).
2176 optional double execution_time_mean = 5;
2177
2178 // The most recent execution time for the task (in nanoseconds).
2179 optional uint64 execution_time_last = 6;
2180
2181 // The time since the task was last started (in nanoseconds).
2182 optional uint64 start_time_delta_last = 7;
2183
2184 // The maximum time difference between the start of one task execution and the next (in nanoseconds).
2185 optional uint64 start_time_delta_max = 8;
2186
2187 // The mean time difference between the start of one task execution and the next (in nanoseconds).
2188 optional double start_time_delta_mean = 9;
2189
2190 // If the task is in an error state, this will contain the error message.
2191 optional string error_message = 10;
2192}
2194
2196message RTTaskRequest {
2197 // Common request header.
2198 RSI.RapidServer.RequestHeader header = 1;
2199
2200 // The id of the task. This is the id assigned to the task when it was created.
2201 int32 id = 2;
2202
2203 // The id of the task manager that the task was submitted to.
2204 int32 manager_id = 3;
2205
2206 optional RTTaskConfig config = 4;
2207 optional RTTaskAction action = 5;
2208}
2210
2212message RTTaskResponse {
2213 // Common response header. Always check the response header for errors.
2214 RSI.RapidServer.ResponseHeader header = 1;
2215
2216 // The id of the task. This is the id assigned to the task when it was created.
2217 int32 id = 2;
2218
2219 // The id of the task manager that the task was submitted to.
2220 int32 manager_id = 3;
2221
2222 optional RTTaskConfig config = 4;
2223 optional RTTaskAction action = 5;
2224 optional RTTaskInfo info = 6;
2225 optional RTTaskStatus status = 7;
2226}
2228
2230message RTTaskBatchRequest {
2231 // Common request header.
2232 RSI.RapidServer.RequestHeader header = 1;
2233
2234 repeated RTTaskRequest requests = 2;
2235}
2236
2237message RTTaskBatchResponse {
2238 // Common response header. Always check the response header for errors.
2239 RSI.RapidServer.ResponseHeader header = 1;
2240
2241 repeated RTTaskResponse responses = 2;
2242}
2244
2246message RTTaskManagerCreationParameters {
2247 // Where the rttaskmanager executable is located (usually the RSI installation directory).
2248 optional string rt_task_directory = 1;
2249
2250 // The platform to run the task manager on. Not needed on Linux. On Windows/INtime,
2251 // use INTIME for real time performance. Only use WINDOWS for debugging.
2252 optional PlatformType platform = 2;
2253
2254 // For INtime managers, the name of the INtime node to run on (usually NodeA).
2255 optional string node_name = 3;
2256
2257 // On Linux, the CPU core to pin the task manager to.
2258 optional int32 cpu_core = 4;
2259
2260 // The task manager's user defined label.
2261 optional string user_label = 5;
2262
2263 // Disable the initialization of the RMP and RapidCode objects on task manager startup and their use in synchronizing task manager cycles.
2264 optional bool no_rmp = 6;
2265}
2267
2269message RTTaskManagerConfig {}
2270
2272
2274message RTTaskManagerAction {
2275 // Start a new task manager.
2276 optional Create create = 1;
2277
2278 // Discover the task managers that are currently running.
2279 optional Discover discover = 2;
2280
2281 // Shutdown the task manager.
2282 optional Shutdown shutdown = 3;
2283
2284 // Submit and start a new task.
2285 optional TaskSubmit task_submit = 4;
2286
2287 // Remove a task from the task manager.
2288 optional TaskRemove task_remove = 5;
2289
2290 // Set the values of global variables
2291 repeated GlobalValueSet global_value_sets = 6;
2292
2293 message Create {
2294 // The task manager's creation parameters.
2295 RTTaskManagerCreationParameters creation_parameters = 1;
2296
2297 // The id of the created task manager.
2298 int32 id = 2; // read-only
2299 }
2300
2301 message Discover {
2302 // The ids of all the task managers that were discoverd
2303 repeated int32 manager_ids = 1; // read-only
2304 }
2305
2306 message Shutdown {}
2307
2308 message TaskSubmit {
2309 // The parameters for the task to create.
2310 RTTaskCreationParameters task_creation_parameters = 1;
2311
2312 // The id of the created task
2313 optional int32 task_id = 2; // read-only
2314 }
2315
2316 message TaskRemove {
2317 // The id of the task to remove.
2318 int32 task_id = 1;
2319 }
2320
2321 message GlobalValueSet {
2322 // The value to set the global variable to. See FirmwareValue for details.
2323 FirmwareValue value = 1;
2324
2325 // The name of the global variable to set.
2326 string name = 2;
2327
2328 // The name and directory of the library that contains the global variable.
2329 // (The task functions library)
2330 optional string library_name = 3;
2331 optional string library_directory = 4;
2332 }
2333}
2335
2337message RTTaskManagerInfo {
2338 // The unique id of the task manager.
2339 int32 id = 1;
2340
2341 // Constants related to the RTTaskManager class.
2342 Constants constants = 2;
2343
2344 // The creation parameters that were used to create the task manager.
2345 RTTaskManagerCreationParameters creation_parameters = 3;
2346
2347 message Constants {
2348 // The maximum number of RTTaskManagers that can be created.
2349 int32 rt_task_manager_count_maximum = 1;
2350
2351 // The maximum number of RTTasks that can be created in a single RTTaskManager.
2352 int32 rt_task_count_maximum = 2;
2353
2354 // The name of the RTTaskManager executable.
2355 string rt_task_manager_executable_name = 3;
2356
2357 // Constants related to the RTTaskManager's creation parameters.
2358 CreationParameterConstants creation_parameters = 4;
2359
2360 message CreationParameterConstants {
2361 // The maximum length of the RTTaskManager's directory name.
2362 int32 directory_length_maximum = 1;
2363
2364 // The maximum length of the RTTaskManager's library name and user label.
2365 int32 name_length_maximum = 2;
2366
2367 // The default user label for the RTTaskManager if none is specified.
2368 string user_label_default = 3;
2369 }
2370 }
2371}
2373
2375message RTTaskManagerStatus {
2376 // The ids of the tasks that are currently registered with the task manager.
2377 // (Includes tasks that are not running.)
2378 repeated int32 task_ids = 1;
2379
2380 // The names and values of the global variables that the task manager has access to.
2381 map<string, FirmwareValue> global_values = 2;
2382
2383 // The state of the RTTaskManager (dead, running, etc.)
2384 optional RTTaskManagerState state = 3;
2385
2386 // The total number of tasks that have been submitted to the task manager (even if they are no longer running).
2387 optional uint64 task_submission_count = 4;
2388
2389 // The number of cycles (iterations) the task manager has run.
2390 optional int64 cycle_count = 5;
2391
2392 // The time it took for the longest cycle to complete (in nanoseconds).
2393 optional uint64 cycle_time_max = 6;
2394
2395 // The time it took for the shortest cycle to complete (in nanoseconds).
2396 optional uint64 cycle_time_min = 7;
2397
2398 // The mean of the cycle times (in nanoseconds).
2399 optional double cycle_time_mean = 8;
2400
2401 // The time it took for the last cycle to complete (in nanoseconds).
2402 optional uint64 cycle_time_last = 9;
2403
2404 // The time since the last cycle started (in nanoseconds).
2405 optional uint64 start_time_delta_last = 10;
2406
2407 // The maximum time difference between the start of one cycle and the next (in nanoseconds).
2408 optional uint64 start_time_delta_max = 11;
2409
2410 // The mean time difference between the start of one cycle and the next (in nanoseconds).
2411 optional double start_time_delta_mean = 12;
2412}
2414
2416message RTTaskManagerRequest {
2417 // Common request header.
2418 RSI.RapidServer.RequestHeader header = 1;
2419
2420 // RTTaskManager id.
2421 optional int32 id = 2; // Required for all actions except Create and Discover.
2422
2423 optional RTTaskManagerConfig config = 3;
2424 optional RTTaskManagerAction action = 4;
2425}
2427
2429message RTTaskManagerResponse {
2430 // Common response header. Always check the response header for errors.
2431 RSI.RapidServer.ResponseHeader header = 1;
2432
2433 // RTTaskManager id.
2434 optional int32 id = 2; // When creating a RTTaskManager, this will be the new RTTaskManager's id.
2435
2436 optional RTTaskManagerConfig config = 3;
2437 optional RTTaskManagerAction action = 4;
2438 optional RTTaskManagerInfo info = 5;
2439 optional RTTaskManagerStatus status = 6;
2440}
2442
2444message RTTaskManagerBatchRequest {
2445 // Common request header.
2446 RSI.RapidServer.RequestHeader header = 1;
2447
2448 repeated RTTaskManagerRequest requests = 2;
2449}
2450
2451message RTTaskManagerBatchResponse {
2452 // Common response header. Always check the response header for errors.
2453 RSI.RapidServer.ResponseHeader header = 1;
2454
2455 repeated RTTaskManagerResponse responses = 2;
2456}
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:1574
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1554
RSINetworkStartMode
Network start modes.
Definition rsienums.h:655
RSINetworkState
State of network.
Definition rsienums.h:617
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:1403
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:1122
RSIDataType
Data types for User Limits and other triggers.
Definition rsienums.h:730
RSIUserLimitLogic
Logic options for User Limits.
Definition rsienums.h:717
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1199
RSIAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:447
RSINetworkInterfaceType
Network host interface type used for EtherCAT frame I/O.
Definition rsienums.h:1469
RSINetworkStartError
Network start errors.
Definition rsienums.h:661
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:510
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:704
INtimeStatus
INtime status values.
Definition rsienums.h:1480
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:397
RSINetworkType
Type of Network topology.
Definition rsienums.h:697
RSINodeType
Valid Node types.
Definition rsienums.h:750
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:1094
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1415
RSINetworkIndexType
Network PDO index types for configuring axis input/output mappings.
Definition rsienums.h:1513
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1302