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 RTOS(RTOSRequest) returns (RTOSResponse) {};
52 rpc RTOSBatch(RTOSBatchRequest) returns (RTOSBatchResponse) {};
54
60 rpc TaskManager (TaskManagerRequest) returns (TaskManagerResponse) {};
61 rpc TaskManagerBatch(TaskManagerBatchRequest) returns (TaskManagerBatchResponse) {};
63
65 rpc Task (TaskRequest) returns (TaskResponse) {};
66 rpc TaskBatch(TaskBatchRequest) returns (TaskBatchResponse) {};
69}
70
71
73message MotionControllerConfig {
74 // The number of Axis objects.
75 optional int32 axis_count = 1;
76
77 // The number of MultiAxis objects. (internal MotionCount - AxisCount)
78 optional int32 multi_axis_count = 2;
79
80 // The number of UserLimits.
81 optional int32 user_limit_count = 3;
82
83 // The number of data recorders.
84 optional int32 recorder_count = 4;
85
86 // The sizes of each recorder's buffer.
87 repeated int32 recorder_buffer_sizes = 5;
88
89 // The number of position compensators.
90 optional int32 compensator_count = 6;
91
92 // The number of points for each position compensator.
93 repeated int32 compensator_point_counts = 7;
94
95 // The size of each Axis' frame buffer. Must be power of 2.
96 repeated int32 axis_frame_buffer_sizes = 8;
97
98 // A 32-bit integer for users to specify a version.
99 optional int32 user_version = 10;
100
101 // A double to specify the sample rate in Hertz (samples per second)
102 optional double sample_rate = 11;
103}
104
106
107
108
110message AddressInfo {
111 // The requested address type.
112 oneof address_type {
113 RSIControllerAddressType controller = 1;
114 RSIAxisAddressType axis = 2;
115 RSIMultiAxisAddressType multi_axis = 3;
116 }
117
118 // The 64-bit host address from the server. This address can be used to configure the recorder.
119 uint64 host_address = 4;
120
121 // The data type at this address. Useful for using the Recorder service.
122 RSIDataType data_type = 5;
123
124 // The internal 32-bit firmware address. (What you might see in VM3.)
125 uint32 firmware_address = 6;
126
127 // The 0-based object index for use when accessing Controller Addresses
128 // Not used with Axis or MultiAxis addresses.
129 optional int32 index = 7;
130
131 // IO bit mask
132 optional int32 mask = 8;
133}
134
135message MotionControllerMemory {
136 message Integer {
137 uint64 host_address = 1;
138 int32 value = 2;
139 }
140 message Double {
141 uint64 host_address = 1;
142 double value = 2;
143 }
144 message Block {
145 uint64 host_address = 1;
146 bytes values = 2;
147 int32 size = 3;
148 }
149 oneof memory {
150 Integer integer = 1;
151 Double double = 2;
152 Block block = 3;
153 }
154}
155
156message MotionControllerAction {
157 // Create a MotionController. You must do this before using any other RapidCode remote service!
158 optional Create create = 1;
159 repeated MotionControllerMemory memory_sets = 2;
160 repeated MotionControllerMemory memory_gets = 3;
161 repeated AddressInfo address_gets = 4;
162 optional Shutdown shutdown = 5;
163 optional ProcessorUsageClear processor_usage_clear = 6;
164
165 message Create {
166 // Path to the RMP firmware (RMP.rta), license file, etc.
167 optional string rmp_path = 1;
168 optional string node_name = 2; // [Windows/INtime] INtime Node used for RMP and RMPNetwork.
169
170 optional string primary_nic = 3;
171 optional string secondary_nic = 4;
172
173 optional int32 cpu_affinity = 5; // [Linux] CPU used for RMP and RMPNetwork
174 optional int32 rmp_thread_priority_max = 6; // [Linux] Relative thread priority
175
176 //string memorydump_filename = 5;
177 }
178
179 // shutdown the RMP
180 message Shutdown {}
181
182 // clear the RMP's processor usage
183 message ProcessorUsageClear {}
184}
186
187
188
190message MotionControllerInfo {
191 // The RMP serial number.
192 uint32 serial_number = 1;
193
194 // The RapidCode version.
195 string rapid_code_version = 2;
196
197 // RMP firmware version.
198 string firmware_version = 3;
199
200 // The number of licensed Axis objects.
201 int32 axis_license_count = 4;
202
203 repeated AddressInfo addresses = 5;
204
205 // Constants from the MotionController object
206 Constants constants = 6;
207
208 message Constants {
209 // Default time to wait when calling NetworkStart()
210 uint32 network_start_timeout_milliseconds_default = 1;
211
212 // Maximum number of Axis objects supported.
213 uint32 axis_count_maximum = 2;
214
215 // Maximum number of motion objects supported (One required for each Axis and MultiAxis).
216 uint32 motion_count_maximum = 3;
217
218 // Maximum number of nodes allowed on the network.
219 uint32 network_node_count_maximum = 4;
220
221 // maximum number of Recorder objects supported
222 uint32 recorder_count_maximum = 5;
223
224 // Maximum number of Position Compensator objects supported.
225 uint32 compensator_count_maximum = 6;
226
227 // Maximum number of 64-bit values that can be stored in the User Buffer.
228 uint32 user_buffer_data_count_maximum = 7;
229
230 // Default RMP sample rate in hertz.
231 double sample_rate_default = 8;
232
233 CreationParameters creation_parameters = 9;
234
235 message CreationParameters {
236 // MotionControllerAction::Create::rmp_path maximum string buffer length
237 uint32 path_length_maximum = 1;
238
239 // The default value of MotionControllerAction::Create::cpu_affinity
240 uint32 cpu_affinity_default = 2;
241
242 // The default value of MotionControllerAction::Create::rmp_thread_priority_max
243 uint32 rmp_thread_priority_maximum_default = 3;
244
245 // The range required for RMP and RMPNetwork threads. rmp_thread_priority_max must be greater than or equal to this value.
246 uint32 rmp_thread_priority_range = 4;
247 }
248 }
249}
251
252
253
255message MotionControllerStatus {
256 // The RMP sample counter.
257 int32 sample_counter = 1;
258
259 // Network node count.
260 uint32 network_node_count = 2;
261
262 // The percentage of the firmware sample time used by the RMP.
263 double processor_usage = 3;
264
265 // The most recent time (in microseconds) between firmware samples
266 uint32 firmware_timing_delta = 4;
267
268 // The number of 32-bit words free in the RMP firmware memory.
269 int32 external_memory_size = 9;
270}
272
273
274
276message MotionControllerRequest {
277 // Common request header.
278 RSI.RapidServer.RequestHeader header = 1;
279
280 optional MotionControllerConfig config = 2;
281 optional MotionControllerAction action = 3;
282}
284
285
287message MotionControllerResponse {
288 // Common response header. Always check the response header for errors.
289 RSI.RapidServer.ResponseHeader header = 1;
290
291 optional MotionControllerConfig config = 2;
292 optional MotionControllerAction action = 3;
293 optional MotionControllerInfo info = 4;
294 optional MotionControllerStatus status = 5;
295}
297
299message NetworkConfig {}
301
303message NetworkAction {
304 // Shutdown the network.
305 optional Shutdown shutdown = 1;
306
307 // Start the network.
308 optional Discover discover = 2;
309 optional Start start = 3;
310 optional DiscoverAndStart discover_and_start = 4;
311
312 // Evaluate network timing.
313 optional TimingMetricsEnable timing_metrics_enable = 5;
314 optional TimingMetricsDisable timing_metrics_disable = 6;
315 optional TimingMetricsClear timing_metrics_clear = 7;
316
317 // Used to override firmware values with your custom outputs.
318 repeated OutputOverride output_override = 8;
319
320 // Generate ENI file
321 optional EniGenerate eni_generate = 9;
322
323 // Creating the object does the job.
324 message Shutdown { }
325
326 message Discover {
327 // Default: MotionController::NetworkStartTimeoutMillisecondsDefault which is 30000 ms.
328 optional uint32 timeout_milliseconds = 3;
329 }
330 message Start {
331 // Default: RSINetworkStartModeOPERATIONAL.
332 optional RSINetworkStartMode mode = 1;
333 // Default: MotionController::NetworkStartTimeoutMillisecondsDefault which is 30000 ms.
334 optional uint32 timeout_milliseconds = 2;
335 }
336
337 message DiscoverAndStart {
338 // Default: RSINetworkStartModeOPERATIONAL.
339 optional RSINetworkStartMode mode = 1;
340 // Default: MotionController::NetworkStartTimeoutMillisecondsDefault which is 30000 ms.
341 optional uint32 timeout_milliseconds = 2;
342 }
343
344 message TimingMetricsEnable {
345 // Determines when low_count increases.
346 optional uint32 low_threshold = 1;
347 // Determines when high_count increases.
348 optional uint32 high_threshold = 2;
349 }
350 message TimingMetricsDisable {}
351 message TimingMetricsClear {}
352
353 message OutputOverride {
354 // Index of the output.
355 int32 index = 1;
356 // Turn on or off overriding of the firmware value with the override_value.
357 optional bool override = 2;
358 // Your custom value rather than our intended firmware value.
359 optional int64 override_value = 3;
360 }
361
362 message EniGenerate {
363 // result of the attempt to generate the ENI file.
364 optional RSINetworkEniResult result = 1;
365 // resulting output from rsiconfig (which is used to generate the ENI file)
366 optional string output = 2;
367 }
368}
370
372message NetworkRequest {
373 // Common request header.
374 RSI.RapidServer.RequestHeader header = 1;
375
376 optional NetworkConfig config = 2;
377
378 optional NetworkAction action = 3;
379}
381
383message NetworkResponse {
384 // Common response header. Always check the response header for errors.
385 RSI.RapidServer.ResponseHeader header = 1;
386
387 optional NetworkConfig config = 2;
388 optional NetworkAction action = 3;
389 optional NetworkInfo info = 4;
390 optional NetworkStatus status = 5;
391}
393
395message NetworkStatus {
396 RSINetworkState state = 1;
397 int32 node_count = 2;
398 int32 counter = 3;
399 bool synchronized = 4;
400 RSINetworkStartError last_start_error = 5;
401
402 // output logged from RMPNetwork when it closes.
403 string log_message = 6;
404
405 // NetworkTiming in RapidCode. Used to evaluate stability.
406 TimingMetricsStatus timing_metrics = 7;
407
408 // Collection of all Network PDO Inputs.
409 repeated PdoInputStatus pdo_inputs = 8;
410
411 // Collection of all Network PDO Outputs.
412 repeated PdoOutputStatus pdo_outputs = 9;
413
414 message TimingMetricsStatus {
415 // Most recent value.
416 uint32 delta = 1;
417 // Lowest recorded since last clear.
418 uint32 min_recorded = 2;
419 // Highest recorded since last clear.
420 uint32 max_recorded = 3;
421 // Count below low_threshold since last clear.
422 uint32 low_count = 4;
423 // Count above high_threshold since last clear.
424 uint32 high_count = 5;
425 }
426
427 message PdoInputStatus {
428 // The index of this PDO in RMP firmware.
429 int32 index = 1;
430 // The raw 64-bit value of this PDO.
431 int64 value = 2;
432 }
433
434 message PdoOutputStatus {
435 // The index of this PDO in RMP firmware.
436 int32 index = 1;
437 // The raw 64-bit value that was sent on the network.
438 int64 sent_value = 2;
439 // The raw 64-bit override value that can be written by software.
440 int64 override_value = 3;
441 // The raw 64-bit value that the RMP is going to send, unless overridden.
442 int64 firmware_value = 4;
443 // Whether or not the override_value is being used.
444 bool override_enabled = 5;
445 }
446}
448
450message NetworkInfo {
451 RSINetworkType type = 1;
452 int32 pdo_input_count = 4;
453 int32 pdo_output_count = 5;
454
455 // Collection of all Network PDO Inputs.
456 repeated PdoInputInfo pdo_inputs = 6;
457
458 // Collection of all Network PDO Outputs.
459 repeated PdoOutputInfo pdo_outputs = 7;
460
461 message PdoInputInfo {
462 string name = 1;
463 AddressInfo address_info = 2;
464 int32 bit_size = 3;
465 int32 bit_offset = 4;
466 }
467
468 message PdoOutputInfo {
469 string name = 1;
470 AddressInfo sent_value_address = 2;
471 AddressInfo override_value_address = 3;
472 AddressInfo firmware_value_address = 4;
473 int32 bit_size = 5;
474 int32 bit_offset = 6;
475 }
476}
478
479
480
481
483message AxisRequest {
484 // Common request header
485 RSI.RapidServer.RequestHeader header = 1;
486
487 // Axis index
488 int32 index = 2;
489
490 optional AxisConfig config = 3;
491 optional AxisAction action = 4;
492}
494
496message AxisResponse {
497 // Common response header. Always check the response header for errors.
498 RSI.RapidServer.ResponseHeader header = 1;
499
500 // Axis index
501 int32 index = 2;
502
503 optional AxisConfig config = 3;
504 optional AxisAction action = 4;
505 optional AxisInfo info = 5;
506 optional AxisStatus status = 6;
507}
509
511message AxisBatchRequest {
512 // Common request header
513 RSI.RapidServer.RequestHeader header = 1;
514
515 repeated AxisRequest requests = 2;
516}
517
518message AxisBatchResponse {
519 // Common response header. Always check the response header for errors.
520 RSI.RapidServer.ResponseHeader header = 1;
521
522 repeated AxisResponse responses = 2;
523}
525
527message AxisStatus {
528 // Is the amp enabled?
529 bool amp_enabled = 1;
530
531 // The state (IDLE, MOVING, ERROR, etc.).
532 RSIState state = 2;
533
534 // The cause of the error (if in ERROR, STOPPED, STOPPING_ERROR state).
535 RSISource source = 3;
536
537 // Extra fault info from the drive
538 string source_name = 4;
539
540 // Positions.
541 PositionStatus position = 5;
542
543 // Command and actual velocity.
544 VelocityStatus velocity = 6;
545
546 // Command acceleration.
547 AccelerationStatus acceleration = 7;
548
549 // How many frames does the Axis have left to execute?
550 int32 frames_to_execute = 8;
551
552 // The motion id as stored in the Axis class (unsigned 16-bit integer).
553 uint32 motion_id = 9;
554
555 // The currently executing motion identifier (unsigned 16-bit integer).
556 uint32 motion_id_executing = 10;
557
558 // The currently exeucting motion element identifier (unsigned 16-bit integer).
559 int32 element_id_executing = 11;
560
561 // Is electronic gearing enabled?
562 bool gear_enabled = 12;
563
564 // Status bits related to the motor.
565 MotorStatusBits motor_status_bits = 13;
566
567 // Status bits related to motion.
568 MotionStatusBits motion_status_bits = 14;
569
570 // DS402 status bits, for drives that support DS402.
571 Ds402StatusBits ds402_status_bits = 15;
572
573 // Dedicated output bits.
574 DedicatedOutputBits dedicated_output_bits = 16;
575
576 // Dedicated input bits.
577 DedicatedInputBits dedicated_input_bits = 17;
578
579 // Homing status
580 bool home_state = 18;
581 RSIHomeStage home_stage = 19;
582
583 // The states of the general purpose input bits, DigitalInputsGet().
584 uint32 general_input_bits = 20;
585
586 // The states of the general purpose output bits, DigitalOutputsGet().
587 uint32 general_output_bits = 21;
588
589 message PositionStatus {
590 double command = 1;
591 double actual = 2;
592 double error = 3;
593 double target = 4;
594 double origin = 5;
595 double encoder_0 = 6;
596 double encoder_1 = 7;
597 double compensation = 8;
598 double backlash = 9;
599 }
600
601 message VelocityStatus {
602 double command = 1;
603 double actual = 2;
604 }
605
606 message AccelerationStatus {
607 double command = 1;
608 }
609
610 message MotorStatusBits {
611 bool amp_fault = 1;
612 bool amp_warning = 2;
613 bool feedback_fault = 3;
614 bool limit_position_error = 4;
615 bool limit_torque = 5;
616 bool limit_hardware_negative = 6;
617 bool limit_hardware_positive = 7;
618 bool limit_software_negative = 8;
619 bool limit_software_positive = 9;
620 }
621
622 message MotionStatusBits {
623 bool done = 1;
624 bool start = 2;
625 bool modify = 3;
626 bool at_velocity = 4;
627 bool out_of_frames = 5;
628 bool near_target = 6;
629 bool at_target = 7;
630 bool settled = 8;
631 }
632
633 message Ds402StatusBits {
634 bool ready_to_switch_on = 1;
635 bool switched_on = 2;
636 bool operation_enabled = 3;
637 bool fault = 4;
638 bool voltage_enabled = 5;
639 bool quick_stop = 6;
640 bool switch_on_disabled = 7;
641 bool warning = 8;
642 bool manufacturer_specific_8 = 9;
643 bool remote = 10;
644 bool target_reached = 11;
645 bool internal_limit_active = 12;
646 bool operation_mode_specific_12 = 13;
647 bool operation_mode_specific_13 = 14;
648 bool manufacturer_specific_14 = 15;
649 bool manufacturer_specific_15 = 16;
650 }
651
652 message DedicatedOutputBits {
653 bool amp_enable = 1;
654 bool brake_release = 2;
655 }
656
657 message DedicatedInputBits {
658 bool amp_fault = 1;
659 bool brake_applied = 2;
660 bool home = 3;
661 bool limit_hardware_positive = 4;
662 bool limit_hardware_negative = 5;
663 bool index = 6;
664 bool index_secondary = 7;
665 bool feedback_fault = 8;
666 bool captured = 9;
667 bool hall_a = 10;
668 bool hall_b = 11;
669 bool hall_c = 12;
670 bool amp_active = 13;
671 bool warning = 14;
672 bool drive_status_9 = 15;
673 bool drive_status_10 = 16;
674 bool feedback_fault_primary = 17;
675 bool feedback_fault_secondary = 18;
676 }
677}
679
681message AxisAction {
682 optional Abort abort = 1;
683 optional EStopAbort e_stop_abort = 2;
684 optional EStopModifyAbort e_stop_modify_abort = 3;
685 optional EStopModify e_stop_modify = 4;
686 optional EStop e_stop = 5;
687 optional TriggeredModify triggered_modify = 6;
688 optional Stop stop = 7;
689 optional Resume resume = 8;
690
691 optional ClearFaults clear_faults = 9;
692 optional AmpEnable amp_enable = 10;
693 optional AmpDisable amp_disable = 11;
694 optional HoldGateSet hold_gate_set = 12;
695 optional PositionSet position_set = 13;
696 optional Move move = 14;
697 optional GearEnable gear_enable = 15;
698 optional GearDisable gear_disable = 16;
699 optional Home home = 17;
700 optional HomeCancel home_cancel = 18;
701 optional OperationMode operation_mode_set = 19;
702 optional OperationMode operation_mode_get = 20;
703
704 message Abort {}
705 message EStopAbort {}
706 message EStopModifyAbort{}
707 message EStopModify{}
708 message EStop {}
709 message TriggeredModify {}
710 message Stop {}
711 message Resume {}
712
713 message ClearFaults {}
714
715 message AmpEnable {
716 optional int32 timeout_milliseconds = 1;
717 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
718 }
719 message AmpDisable {}
720 message HoldGateSet {
721 bool state = 1;
722 }
723 message PositionSet{
724 double position = 1;
725 }
726
727 message Move {
728 // Request one type of motion.
729 oneof move {
730 AxisMovePointToPoint point_to_point = 3;
731 AxisMoveVelocity velocity = 4;
732 MoveStreaming streaming = 5;
733 }
734
735 // Specify the MotionID for this move. (If you don't specify one, it will be auto-incremented after each move.)
736 optional uint32 motion_id = 6;
737
738 // Specify MotionHold criteria, if you want the motion to hold execution until conditions are met.
739 optional MotionHold motion_hold = 7;
740
741 // Wait for motion to complete? (See ConfigSet settling criteria.)
742 bool blocking = 8;
743 }
744
745 message GearEnable {
746 optional int32 master_axis_number = 2;
747 optional RSIAxisMasterType gearing_source = 3;
748 int32 numerator = 4;
749 int32 denominator = 5;
750 }
751 message GearDisable {}
752
753 message Home {
754 RSIHomeMethod method = 1;
755 double velocity = 2;
756 double slow_velocity = 3;
757 double acceleration = 4;
758 double deceleration = 5;
759 optional double jerk_percent = 6;
760 optional bool move_to_zero = 7;
761 optional double offset = 8;
762 optional RSIAction behavior = 9;
763 }
764
765 message HomeCancel {}
766
767 message OperationMode {
768 // For setting the operation mode in the request, or getting it from the response.
769 optional RSIOperationMode operation_mode = 1;
770 }
771}
772
773// Internal MoveRequest messages.
774 message AxisMovePointToPoint {
775 // Move to this position. Absolute, unless the relative boolean is true. (UserUnits)
776 double position = 1;
777
778 // Maximum velocity. (UserUnits/second).
779 optional double velocity = 2;
780
781 // Maximum acceleration. (UserUnits/second^2). If specified, velocity and deceleration must be specified.
782 optional double acceleration = 3;
783
784 // Maximum deceleration. (UserUnits/second^2). If specified, velocity and acceleration must be specified
785 optional double deceleration = 4;
786
787 // Percentage of acceleration that will be smoothed. (0-100)
788 // Acceleration time will not change so if Jerk Percent is 100, maximum acceleration will be 2x the specified maximum.
789 // If specified, velocity, acceleration, and deceleration must be specified.
790 optional double jerk_percent = 5;
791
792 // Final velocity. 0.0 is default. (UserUnits/second)
793 // If specified, velocity, acceleration, and decleration must be specified.
794 optional double final_velocity = 6;
795
796 // Set true if you intend position to be a relative increment. If specified, jerk_percent must be specified.
797 bool relative = 7;
798}
799
800message AxisMoveVelocity {
801 // Move at this velocity. (UserUnits/second)
802 double velocity = 1;
803
804 // Maximum acceleration. (UserUnits/second^2)
805 double acceleration = 2;
806
807 // Percentage of acceleration that will be smoothed. (0-100)
808 // Acceleration time will not change so if Jerk Percent is 100, maximum acceleration will be 2x the specified maximum.
809 double jerk_percent = 3;
810}
811
812message MoveStreaming {
813 repeated double positions = 1;
814 repeated double velocities = 2;
815 repeated double accelerations = 3;
816 repeated double jerks = 4;
817 repeated double times = 5;
818 int32 empty_count = 6;
819 bool retain = 7;
820 bool final = 8;
821
822 // Specify the interpolation algorithm to use when only providing positions and no velocities nor accelerations.
823 // Uses the RapidCode method RapidCodeMotion::MovePT()
824 // The three currently supported ones are:
825 // RSIMotionTypePT (no interpolation)
826 // RSIMotionTypeBSPLINE (default)
827 // RSIMotionTypePVT is used in the RapidCode method RapidCodeMotion::MovePVT(), i.e. when positions and velocities are given.
828 optional RSIMotionType pt_motion_type = 9;
829}
831
832message MotionHoldGate{
833 int32 number = 1;
834}
835
836message MotionHoldAxis {
837 // If true, motion will hold for Actual Position. If false, it will hold for Command Position.
838 bool actual = 1;
839
840 // Greater than, less than, etc.
841 RSIUserLimitLogic logic = 2;
842
843 // The number of the Axis whose position we're waiting for.
844 int32 hold_axis_number = 3;
845
846 // The position of the hold axis which will trigger the hold to finish.
847 double hold_axis_position = 4;
848}
849
850message MotionHoldUser {
851 // The 64-bit host address on the server.
852 uint64 address = 1;
853
854 // The 32-bit mask that will be ANDed with the value stored at the User Address.
855 int32 mask = 2;
856
857 // The 32-bit mask that will compared for equality after the AND mask.
858 int32 pattern = 3;
859}
860
861message MotionHold {
862 // Choose the type of hold.
863 oneof type {
864 MotionHoldGate gate = 2;
865 MotionHoldAxis axis = 3;
866 MotionHoldUser user = 4;
867 }
868
869 // The motion will execute regardless of hold status after this amount of time.
870 optional double hold_timeout_seconds = 6;
871
872 // This optional delay will occur before motion starts.
873 optional double delay_seconds = 7;
874}
875
877message AxisConfig {
878 // The number of encoder counts to UserUnits.
879 optional double user_units = 1;
880
881 // The origin position, typically set when homing.
882 optional double origin_position = 2;
883
884 // Give the Axis a name, if you like.
885 optional string user_label = 3;
886
887 // Default trajectory values.
888 optional TrajectoryDefaults defaults = 4;
889 optional HardwareTrigger amp_fault = 5;
890 optional HardwareTrigger home_switch = 6;
891 optional ErrorLimit error_limit = 7;
892 optional HardwareTrigger hardware_negative_limit = 8;
893 optional HardwareTrigger hardware_positive_limit = 9;
894 optional SoftwareTrigger software_negative_limit = 10;
895 optional SoftwareTrigger software_positive_limit = 11;
896 optional Settling settling = 12;
897 optional MotionConfig motion = 13;
898 optional Homing homing = 14;
899 optional int32 frame_buffer_size = 15;
900 optional RSIMotorDisableAction amp_disable_action = 16;
901 optional double feed_rate = 17;
902
903 // Internal messages.
904 message TrajectoryDefaults
905 {
906 optional double velocity = 1;
907 optional double acceleration = 2;
908 optional double deceleration = 3;
909 optional double jerk_percent = 4;
910 optional double position1 = 5;
911 optional double position2 = 6;
912 optional double relative_increment = 7;
913 }
914
915 message HardwareTrigger {
916 optional RSIAction action = 1;
917 optional bool trigger_state = 2;
918 optional double duration = 3;
919 }
920
921 message SoftwareTrigger {
922 optional RSIAction action = 1;
923 optional double trigger_value = 2;
924 }
925
926 message ErrorLimit {
927 optional RSIAction action = 1;
928 optional double trigger_value = 2;
929 optional double duration = 3;
930 }
931
932 message Settling {
933 optional double position_tolerance_fine = 1;
934 optional double position_tolerance_coarse = 2;
935 optional double velocity_tolerance = 3;
936 optional double time_seconds = 4;
937 optional bool on_stop = 5;
938 optional bool on_estop = 6;
939 optional bool on_estop_cmd_equals_actual = 7;
940 }
941
942 message MotionConfig {
943 // Seconds.
944 optional double stop_time = 1;
945
946 // Seconds.
947 optional double estop_time = 2;
948
949 // UserUnits per second.
950 optional double triggered_modify_deceleration = 3;
951
952 // Jerk percent (0-100).
953 optional double triggered_modify_jerk_percent = 4;
954
955 // UserUnits per second.
956 optional double estop_modify_deceleration = 5;
957
958 // Jerk percent (0-100).
959 optional double estop_modify_jerk_percent = 6;
960 }
961 message Homing {
962 // placeholder for possible future homing configuration. see Action for Home configuration.
963 }
964}
966
968message AxisInfo {
969 // Axis index.
970 int32 index = 1;
971
972 // Host and firmware addresses
973 repeated AddressInfo addresses = 2;
974
975 // NetworkNode information.
976 NetworkNodeInfo node_info = 3;
977
978 // Constants from the Axis object
979 Constants constants = 4;
980
981 // The internal motion supervisor index
982 int32 motion_supervisor_index = 5;
983
984 message Constants {
985 // The value returned by NetworkIndexGet() when the index is invalid or nonexistent for this Axis.
986 uint32 network_index_invalid = 1;
987
988 // The default time an Axis waits before generating an AmpFault if the Axis does not enable after calling AmpEnableSet(true).
989 double amp_enable_amp_fault_timeout_seconds_default = 2;
990 }
991
992}
994
995
997message MultiAxisRequest {
998 // Common request header
999 RSI.RapidServer.RequestHeader header = 1;
1000
1001 // MultiAxis index
1002 int32 index = 2;
1003
1004 optional MultiAxisConfig config = 3;
1005 optional MultiAxisAction action = 4;
1006}
1008
1010message MultiAxisResponse {
1011 // Common response header. Always check the response header for errors.
1012 RSI.RapidServer.ResponseHeader header = 1;
1013
1014 // MultiAxis index
1015 int32 index = 2;
1016
1017 optional MultiAxisConfig config = 3;
1018 optional MultiAxisAction action = 4;
1019 optional MultiAxisInfo info = 5;
1020 optional MultiAxisStatus status = 6;
1021}
1023
1025message MultiAxisBatchRequest {
1026 // Common request header
1027 RSI.RapidServer.RequestHeader header = 1;
1028
1029 repeated MultiAxisRequest requests = 2;
1030}
1031
1032message MultiAxisBatchResponse {
1033 // Common response header. Always check the response header for errors.
1034 RSI.RapidServer.ResponseHeader header = 1;
1035
1036 repeated MultiAxisResponse responses = 2;
1037}
1039
1040
1042message MultiAxisStatus {
1043 RSIState state = 1;
1044 RSISource source = 2;
1045 string source_name = 3;
1046 bool amp_enabled = 4;
1047 MotionStatusBits motion_status_bits = 5;
1048 repeated AxisStatus axis_statuses = 6;
1049 bool is_mapped = 7;
1050
1051 message MotionStatusBits {
1052 bool done = 1;
1053 bool start = 2;
1054 bool modify = 3;
1055 bool at_velocity = 4;
1056 bool out_of_frames = 5;
1057 }
1058}
1060
1062message MultiAxisAction {
1063 optional Abort abort = 1;
1064 optional EStopAbort e_stop_abort = 2;
1065 optional EStopModifyAbort e_stop_modify_abort = 3;
1066 optional EStopModify e_stop_modify = 4;
1067 optional EStop e_stop = 5;
1068 optional TriggeredModify triggered_modify = 6;
1069 optional Stop stop = 7;
1070 optional Resume resume = 8;
1071
1072 optional ClearFaults clear_faults = 9;
1073 optional AmpEnable amp_enable = 10;
1074 optional AmpDisable amp_disable = 11;
1075 optional Move move = 12;
1076 optional RemoveAxes remove_axes = 13;
1077 optional Unmap unmap = 14;
1078 optional Map map = 15;
1079 optional AxisAdd axis_add = 16;
1080
1081 message Abort {}
1082 message EStopAbort {}
1083 message EStopModifyAbort{}
1084 message EStopModify{}
1085 message EStop {}
1086 message TriggeredModify {}
1087 message Stop {}
1088 message Resume {}
1089
1090 message ClearFaults {}
1091
1092 message AmpEnable {
1093 optional int32 timeout_milliseconds = 1;
1094 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
1095 }
1096 message AmpDisable {}
1097
1098 message Move {
1099 oneof move {
1100 MultiAxisMovePointToPoint point_to_point = 3;
1101 MultiAxisMoveVelocity velocity = 4;
1102 MoveStreaming streaming = 5;
1103 }
1104 optional uint32 motion_id = 6;
1105
1106 // Specify MotionHold criteria, if you want the motion to hold execution until conditions are met.
1107 optional MotionHold motion_hold = 7;
1108
1109 bool blocking = 8;
1110
1111 message MultiAxisMovePointToPoint {
1112 repeated AxisMovePointToPoint axis_move_point_to_points = 1;
1113 bool relative = 2;
1114 }
1115
1116 message MultiAxisMoveVelocity {
1117 repeated AxisMoveVelocity axis_move_velocities = 1;
1118 }
1119 }
1120 message RemoveAxes {}
1121 message Unmap {}
1122 message Map {}
1123 message AxisAdd {
1124 int32 axis_index = 1;
1125 }
1126}
1128
1130message MultiAxisConfig {
1131 repeated int32 axes_indices = 1;
1132 optional string user_label = 2;
1133 optional double feed_rate = 3;
1134 optional double stop_time = 4;
1135 optional double e_stop_time = 5;
1136}
1138
1140message MultiAxisInfo {
1141 // The zero-based index for this MultiAxis.
1142 int32 index = 1;
1143
1144 // The internal motion supervisor index.
1145 int32 motion_supervisor_index = 2;
1146
1147 // Host and firmware addresses
1148 repeated AddressInfo addresses = 3;
1149}
1151
1153message NetworkNodeInfo {
1154 // True if hardware exists.
1155 bool exists = 1;
1156
1157 // The node index.
1158 int32 index = 2;
1159
1160 // The number of Axis objects on this node.
1161 int32 axis_count = 3;
1162
1163 // True if this node has I/O.
1164 bool has_io = 4;
1165
1166 // The number of digital/analog inputs and outputs on this node.
1167 IOCounts io_counts = 5;
1168
1169 // The bit masks and 64-bit host addresses for this node's I/O.
1170 IOAddresses io_addresses = 6;
1171
1172 // The node type.
1173 RSINodeType type = 7;
1174
1175 // 32-bit vendor identifier.
1176 uint32 vendor_id = 8;
1177
1178 // 32-bit product code.
1179 uint32 product_code = 9;
1180
1181 // 32-bit hardware revision.
1182 uint32 hardware_revision = 10;
1183
1184 // Station alias.
1185 uint32 station_alias = 11;
1186
1187 // Serial number.
1188 string serial_number = 12;
1189
1190 // The node's name.
1191 string name = 13;
1192
1193 // Product name.
1194 string product_name = 14;
1195
1196 // Vendor name.
1197 string vendor_name = 15;
1198
1199 Constants constants = 16;
1200
1201
1202 // Internal messages.
1203
1204 // The number of digital/analog inputs and outputs.
1205 message IOCounts {
1206 // Number of digital inputs.
1207 int32 digital_inputs = 1;
1208
1209 // Number of digital outputs.
1210 int32 digital_outputs = 2;
1211
1212 // Number of analog inputs.
1213 int32 analog_inputs = 3;
1214
1215 // Number of analog outputs.
1216 int32 analog_outputs = 4;
1217 }
1218
1219 message IOAddresses {
1220 // Masks and 64-bit host addresses for each digital intput.
1221 repeated AddressInfo digital_inputs = 1;
1222
1223 // Masks and 64-bit host addreses for each digital output.
1224 repeated AddressInfo digital_outputs = 2;
1225
1226 // Masks and 64-bit host addreses for each analog input.
1227 repeated AddressInfo analog_inputs = 3;
1228
1229 // Masks and 64-bit host addreses for each analog output.
1230 repeated AddressInfo analog_outputs = 4;
1231 }
1232
1233 message Constants {
1234 // Default time to wait when reading or writing an SDO with ServiceChannelRead() or ServiceChannelWrite()
1235 uint32 sdo_timeout_milliseconds_default = 1;
1236 }
1237}
1239
1241message NetworkNodeStatus {
1242 // All the digital input states.
1243 repeated bool digital_input_states = 2;
1244
1245 // All the digital output states.
1246 repeated bool digital_output_states = 3;
1247
1248 // All the analog input values.
1249 repeated int32 analog_input_values = 4;
1250
1251 // All the analog output values.
1252 repeated int32 analog_output_values = 5;
1253}
1255
1256
1258// The state of the digital output at the specified bit number.
1259message DigitalOutput {
1260 // The bit number.
1261 int32 bit_number = 1;
1262
1263 // The state of the digital output. When this message is used as a request
1264 // to set a digital output, the digital output will be set to this value.
1265 // When this message is returned as an action response, this field holds the
1266 // new state.
1267 bool state = 2;
1268}
1269
1270// The value of the analog output at the specified channel.
1271message AnalogOutput {
1272 // The channel number.
1273 int32 channel = 1;
1274
1275 // The value of the analog output. When this message is used as a request
1276 // to set an analog output, the analog output will be set to this value.
1277 // When this message is returned as an action response, this field holds the
1278 // new value.
1279 int32 value = 2;
1280}
1281
1282// The location, size, and value of a Service Data Object (SDO).
1283// This message is used to read or write SDOs on a network node.
1284// See NetworkNodeAction sdo_writes and sdo_reads.
1285message SDO {
1286 // The SDO index.
1287 int32 index = 1;
1288
1289 // The SDO sub-index.
1290 int32 sub_index = 2;
1291
1292 // The number of bytes.
1293 int32 byte_count = 3;
1294
1295 // The types of data values we can read or write.
1296 enum ValueType {
1297 option allow_alias = true;
1298 UNKNOWN = 0;
1299 INTEGER = 0;
1300 STRING = 1;
1301 BYTES = 2;
1302 }
1303
1304 // When reading an SDO, specify the read type. Default is integer.
1305 optional ValueType read_type = 4;
1306
1307 // Wait this long for a response, otherwise it will throw a timeout error.
1308 optional uint32 timeout_milliseconds = 5;
1309
1310 // The SDO value.
1311 // SDO write: This field is used to set the value to write.
1312 // SDO read: This field is ignored when SDO read action request, but will contain the
1313 // value read from the SDO in the SDO read action response.
1314 oneof value {
1315 // Integer value used for all non-string types.
1316 int32 integer_value = 6;
1317
1318 // String value.
1319 string string_value = 7;
1320
1321 // Raw bytes value
1322 bytes bytes_value = 8;
1323 }
1324}
1325
1326// An ASCII command to execute on an AKD drive.
1327message AKDASCII {
1328 // The command as a string.
1329 string command = 1;
1330
1331 // The returned result of the command. This field is ignored when requesting
1332 // an AKDASCII command.
1333 optional string result = 2;
1334}
1335
1336// A set of actions to perform on a network node. This message is used to
1337// request a set of actions. A new instance of this message will be returned
1338// containing the results of the requested acitons.
1339message NetworkNodeAction {
1340
1341 // Any number of digital outputs to set. Add instances of the DigitalOutput
1342 // message to this field to set digital outputs. When this message is
1343 // returned in the action response, this field contains the new states of
1344 // the digital outputs.
1345 repeated DigitalOutput digital_output_sets = 1;
1346
1347 // Any number of analog outputs to set. Add instances of the AnalogOutput
1348 // message to this field to set analog outputs. When this message is
1349 // returned in the action response, this field contains the new values of
1350 // the analog outputs.
1351 repeated AnalogOutput analog_output_sets = 2;
1352
1353 // The requested SDO value(s) to write to the network. Add instances of the
1354 // SDO message to this field to write to SDOs. When this message is returned
1355 // in the action response, this field will be empty.
1356 repeated SDO sdo_writes = 3;
1357
1358 // The SDO(s) to be read from the network. Add instances of the SDO message
1359 // to this field to read SDO values. When this message is returned in the
1360 // action response, the SDO messages will contain the read values.
1361 repeated SDO sdo_reads = 4;
1362
1363 // AKD ASCII command(s). Only used for Kollmorgen AKD drives. Add instances
1364 // of the AKDASCII message to request an ASCII command. When this message
1365 // is returned in the action response, the AKDASCII messages will contain
1366 // both the command executed and the returned result as a string.
1367 repeated AKDASCII akd_asciis = 5;
1368}
1370
1372message NetworkNodeConfig {}
1374
1376message NetworkNodeRequest {
1377 // Common request header
1378 RSI.RapidServer.RequestHeader header = 1;
1379
1380 // Network Node index
1381 int32 index = 2;
1382
1383 optional NetworkNodeConfig config = 3;
1384 optional NetworkNodeAction action = 4;
1385}
1387
1389message NetworkNodeResponse {
1390 // Common response header. Always check the response header for errors.
1391 RSI.RapidServer.ResponseHeader header = 1;
1392
1393 // Network Node index
1394 int32 index = 2;
1395
1396 optional NetworkNodeConfig config = 3;
1397 optional NetworkNodeAction action = 4;
1398 optional NetworkNodeInfo info = 5;
1399 optional NetworkNodeStatus status = 6;
1400}
1402
1404message NetworkNodeBatchRequest {
1405 // Common request header
1406 RSI.RapidServer.RequestHeader header = 1;
1407
1408 repeated NetworkNodeRequest requests = 2;
1409}
1410
1411message NetworkNodeBatchResponse {
1412 // Common response header. Always check the response header for errors.
1413 RSI.RapidServer.ResponseHeader header = 1;
1414
1415 repeated NetworkNodeResponse responses = 2;
1416}
1418
1419
1421message RecorderRequest {
1422 // Common request header.
1423 RSI.RapidServer.RequestHeader header = 1;
1424
1425 // The Recorder index. (Check MotionController's Recorder count.)
1426 int32 index = 2;
1427
1428 optional RecorderConfig config = 3;
1429 optional RecorderAction action = 4;
1430}
1432
1433
1435message RecorderResponse {
1436 // Common response header. Always check the response header for errors.
1437 RSI.RapidServer.ResponseHeader header = 1;
1438
1439 // Recorder index
1440 int32 index = 2;
1441
1442 optional RecorderConfig config = 3;
1443 optional RecorderAction action = 4;
1444 optional RecorderInfo info = 5;
1445 optional RecorderStatus status = 6;
1446}
1448
1450message RecorderBatchRequest {
1451 // Common request header
1452 RSI.RapidServer.RequestHeader header = 1;
1453
1454 repeated RecorderRequest requests = 2;
1455}
1456
1457message RecorderBatchResponse {
1458 // Common response header. Always check the response header for errors.
1459 RSI.RapidServer.ResponseHeader header = 1;
1460
1461 repeated RecorderResponse responses = 2;
1462}
1464
1465
1467message RecorderInfo { }
1469
1471message RecorderStatus {
1472 // Is the Recorder recording?
1473 bool is_recording = 1;
1474
1475 // The number of records available for retreival.
1476 int32 records_available = 2;
1477}
1479
1481message RecorderAction {
1482
1483 optional Reset reset = 1;
1484 optional Start start = 2;
1485 optional Stop stop = 3;
1486 optional RetrieveRecords retrieve_records = 4;
1487
1488 message Reset {}
1489 message Start {}
1490 message Stop {}
1491
1492 message RetrieveRecords {
1493 // New data records will be in the response, if any are available.
1494 repeated Record records = 1;
1495
1496 // A data record from the recorder.
1497 message Record {
1498 // The number of these will depend on the number of addresses to record in the recorder configuration.
1499 repeated Data data = 1;
1500
1501 // Type will depend on what is set in config for each address.
1502 message Data {
1503 // Keep the names short to keep packet sizes smaller.
1504 oneof data {
1505 double d = 1;
1506 int32 i32 = 2;
1507 }
1508 }
1509 }
1510 }
1511}
1513
1514
1516message RecorderConfig {
1517 // Recorder period, in samples.
1518 optional int32 period = 1;
1519
1520 // If true, the recorder will use a circular buffer, overwriting old data (be sure to read it out).
1521 optional bool circular_buffer = 2;
1522
1523 // The addresses to record. Get these from Controller/Axis/MultiAxis InfoGet rpcs.
1524 repeated AddressInfo addresses = 3;
1525
1526 // Use this to start and end recording with motion.
1527 optional RecorderTriggerOnMotion trigger_on_motion = 4;
1528
1529 // Configure the recorder to generate a RECORDER_HIGH interrupt when the buffer reaches this size.
1530 optional int32 buffer_high_count = 5;
1531
1532 // Read-only, this tells us how many records fit inside the recorder's buffer (see MotionController config's recorder buffer size).
1533 optional int32 record_max_count = 6;
1534
1535 // Internal messages.
1536
1537 message RecorderTriggerOnMotion {
1538 // Use an Axis or MutliAxis's motion supervisor index.
1539 optional int32 motion_supervisor_index = 1;
1540 // Set true if you want the recorder to start when motion starts and stop when motion is done.
1541 optional bool enable = 2;
1542 }
1543}
1544
1546
1548message UserLimitStatus {
1549 // The UserLimit's index.
1550 int32 index = 1;
1551
1552 // Is the UserLimit processing in the RMP firmware_version?
1553 bool enabled = 2;
1554
1555 // Is the UserLimit currently triggered?
1556 bool state = 3;
1557}
1559
1561message UserLimitAction {
1562
1563 optional Reset reset = 1;
1564 optional Enable enable = 2;
1565 optional Disable disable = 3;
1566
1567 message Reset {};
1568 message Enable {};
1569 message Disable {};
1570}
1572
1573
1575message UserLimitInfo {}
1577
1578
1580message UserLimitConfig {
1581
1582 // The type of trigger.
1583 optional RSIUserLimitTriggerType trigger_type = 1;
1584
1585 // The primary condition.
1586 optional UserLimitCondition condition_0 = 2;
1587
1588 // The second condition. Condition 1 will not be set if trigger type is SINGLE_CONDITION or invalid
1589 optional UserLimitCondition condition_1 = 3;
1590
1591 // Optionally set some output when the UserLimit triggers.
1592 optional UserLimitOutput output = 4;
1593
1594 // Optionally perform an action on an Axis when the UserLimit triggers.
1595 optional RSIAction action = 5;
1596
1597 // Perform the optional action on this Axis.
1598 optional int32 action_axis = 6;
1599
1600 // Duration the trigger state must be active before triggering. (Seconds)
1601 optional double duration = 7;
1602
1603 // True if the UserLimit should trigger once, then disable itself.
1604 optional bool is_single_shot = 8;
1605
1606 // Configurable interrupt data.
1607 repeated UserLimitInterruptUserData user_data = 9;
1608
1609 // Internal messages.
1610 message UserLimitCondition {
1611 // The data type to be evaluated.
1612 RSIDataType data_type = 1;
1613
1614 // The logic of the UserLimit.
1615 RSIUserLimitLogic logic = 2;
1616
1617 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1618 uint64 address = 3;
1619
1620 // A 32-bit AND mask.
1621 optional uint32 mask = 4;
1622
1623 // The 32-bit trigger value. (for 32-bit data types)
1624 optional int32 integer_limit_value = 5;
1625
1626 // The 64-bit double trigger value (for 64-bit doubles data types only).
1627 optional double double_limit_value = 6;
1628 }
1629
1630 message UInt32Masks {
1631 // 32-bit AND mask.
1632 uint32 and_mask = 1;
1633
1634 // 32-bit OR mask.
1635 uint32 or_mask = 2;
1636 }
1637
1638 message UInt64Masks {
1639 // 64-bit AND mask.
1640 uint64 and_mask = 1;
1641
1642 // 64-bit OR mask;
1643 uint64 or_mask = 2;
1644 }
1645
1646 message UserLimitOutput {
1647 // True if enabled
1648 bool enabled = 2;
1649
1650 // The type of data to output.
1651 RSIDataType data_type = 3;
1652
1653 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1654 uint64 address = 4;
1655
1656 // The type of output.
1657 oneof output {
1658 // Perform an AND and OR on a 64-bit value.
1659 UInt32Masks uint32_masks = 6;
1660
1661 // Output a 32-bit value.
1662 int32 int32_value = 7;
1663
1664 // Peform an AND and OR on a 64-bit value.
1665 UInt64Masks uint64_masks = 8;
1666
1667 // Output a 64-bit double.
1668 double double_value = 9;
1669
1670 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1671 // Use this field when you want the UserLimit to copy data from the input address to the output address.
1672 uint64 input_address = 10;
1673 }
1674 }
1675
1676 message UserLimitInterruptUserData {
1677 // Interrupt data index (0-4).
1678 uint32 index = 1;
1679
1680 // A 64-bit host address, see InfoGet on MotionController, Axis, MultiAxis.
1681 optional uint64 address = 2;
1682 }
1683}
1685
1687message UserLimitRequest {
1688 // Common request header.
1689 RSI.RapidServer.RequestHeader header = 1;
1690
1691 // UserLimit index.
1692 int32 index = 2;
1693
1694 optional UserLimitConfig config = 3;
1695
1696 optional UserLimitAction action = 4;
1697}
1699
1701message UserLimitResponse {
1702 // Common response header. Always check the response header for errors.
1703 RSI.RapidServer.ResponseHeader header = 1;
1704
1705 // UserLimit index.
1706 int32 index = 2;
1707
1708 optional UserLimitConfig config = 3;
1709 optional UserLimitAction action = 4;
1710 optional UserLimitInfo info = 5;
1711 optional UserLimitStatus status = 6;
1712}
1714
1716message UserLimitBatchRequest {
1717 // Common request header.
1718 RSI.RapidServer.RequestHeader header = 1;
1719
1720 repeated UserLimitRequest requests = 2;
1721}
1722
1723message UserLimitBatchResponse {
1724 // Common response header. Always check the response header for errors.
1725 RSI.RapidServer.ResponseHeader header = 1;
1726
1727 repeated UserLimitResponse responses = 2;
1728}
1730
1732message RTOSConfig {}
1734
1736message RTOSInfo {
1737 // The RMP process catalog.
1738 string rmp_catalog = 1;
1739
1740 // The RMPNetwork process catalog.
1741 string rmp_network_catalog = 2;
1742
1743 // The number of INtime nodes.
1744 uint32 node_count = 3;
1745}
1747
1749message RTOSAction {
1750 optional Restart restart = 1;
1751 optional Stop stop = 2;
1752 optional Start start = 3;
1753
1754 message Restart {}
1755 message Stop {}
1756 message Start {}
1757}
1759
1761message RTOSStatus {
1762 // The status of the INtime node
1763 INtimeStatus status = 3;
1764}
1766
1768message RTOSRequest {
1769 // Common request header
1770 RSI.RapidServer.RequestHeader header = 1;
1771
1772 // Specify a specific INtime node by name.
1773 string name = 2;
1774
1775 optional RTOSConfig config = 3;
1776 optional RTOSAction action = 4;
1777}
1779
1781message RTOSResponse {
1782 // Common response header. Always check the response header for errors.
1783 RSI.RapidServer.ResponseHeader header = 1;
1784
1785 // Specify a specific INtime node by name.
1786 string name = 2;
1787
1788 optional RTOSConfig config = 3;
1789 optional RTOSAction action = 4;
1790 optional RTOSInfo info = 5;
1791 optional RTOSStatus status = 6;
1792}
1794
1796message RTOSBatchRequest {
1797 // Common request header
1798 RSI.RapidServer.RequestHeader header = 1;
1799
1800 repeated RTOSRequest requests = 2;
1801}
1802
1803message RTOSBatchResponse {
1804 // Common response header. Always check the response header for errors.
1805 RSI.RapidServer.ResponseHeader header = 1;
1806
1807 repeated RTOSResponse responses = 2;
1808}
1810
1811
1816message GlobalTag {
1817 optional int64 int_val = 1;
1818 optional uint64 uint_val = 2;
1819 optional double real_val = 3;
1820 // repeated bytes bytes_val = 4; TODO: bytes
1821}
1822
1823enum GlobalTagType {
1824 GlobalTagTypeUNKNOWN = 0;
1825 GlobalTagTypeINT = 1;
1826 GlobalTagTypeUINT = 2;
1827 GlobalTagTypeREAL = 3;
1828 // GlobalTagTypeBYTES = 4; TODO: bytes
1829}
1830
1831message TaskParameters {
1832 optional string library_directory = 1;
1833 optional string library_name = 2;
1834 string function_name = 3;
1835 optional int32 task_priority = 4;
1836 optional int32 repeats = 5;
1837 optional int32 period = 6;
1838 optional int32 phase = 7;
1839 optional bool enable_timing = 8;
1840}
1841
1842enum PlatformTypeEnum {
1843 PlatformTypeNATIVE = 0;
1844 PlatformTypeINTIME = 1;
1845 PlatformTypeLINUX = 2;
1846 PlatformTypeWINDOWS = 3;
1847}
1848
1849enum TaskManagerStateEnum {
1850 TaskManagerStateUNKNOWN = 0;
1851 TaskManagerStateDEAD = 1;
1852 TaskManagerStateRUNNING = 2;
1853 TaskManagerStateSTOPPED = 3;
1854}
1855
1857message TaskManagerConfig {}
1859
1861message TaskManagerAction {
1862 optional Create create = 1;
1863 optional Discover discover = 2;
1864 optional Stop stop = 3;
1865 optional TaskSubmit task_submit = 4;
1866
1867 optional GlobalNamesGet global_names_get = 5;
1868 optional GlobalTagGet global_tag_get = 6;
1869
1870 message CreationParameters {
1871 optional int32 id = 1;
1872 optional int32 max_tasks = 2;
1873 optional string rt_task_directory = 3;
1874 optional PlatformTypeEnum platform = 4;
1875 optional string node_name = 5;
1876 optional int32 cpu_core = 6;
1877 }
1878
1879 message Create {
1880 CreationParameters creation_parameters = 1;
1881 }
1882
1883 message Discover {
1884 repeated int32 task_manager_ids = 1; // read-only, the task manager ids that are currently running.
1885 }
1886
1887 message Stop {}
1888
1889 message TaskSubmit {
1890 TaskParameters task_parameters = 1;
1891 optional int32 task_id = 2; // read-only, the id of the created task.
1892 }
1893
1894 message GlobalNamesGet {
1895 optional string library_name = 1;
1896 optional string library_directory = 2;
1897 repeated string global_names = 3; // read-only, the global names in the library.
1898 }
1899
1900 message GlobalTagGet {
1901 string name = 1;
1902 optional string library_name = 2;
1903 optional string library_directory = 3;
1904 GlobalTagType type = 4;
1905 GlobalTag tag = 5; // read-only, the global tag.
1906 }
1907}
1909
1911message TaskManagerInfo {
1912 int32 id = 1;
1913 optional string node_name = 2; // INtime node name
1914 optional int32 cpu_core = 3; // CPU core (Linux only)
1915
1916 Constants constants = 4;
1917
1918 message Constants {
1919 string executable_name = 1;
1920 CreationParameters creation_parameters = 2;
1921
1922 message CreationParameters {
1923 int32 first_manager_id = 1;
1924 int32 max_managers = 2;
1925 int32 last_manager_id = 3;
1926 int32 max_tasks_limit = 4;
1927 int32 max_directory_length = 5;
1928 int32 max_name_length = 6;
1929 }
1930 }
1931}
1933
1935message TaskManagerStatus {
1936 TaskManagerStateEnum state = 1;
1937 uint64 task_submission_count = 2;
1938 int64 cycle_count = 3;
1939 optional uint64 cycle_time_max = 4;
1940 optional uint64 cycle_time_min = 5;
1941 optional double cycle_time_mean = 6;
1942 optional uint64 cycle_time_last = 7;
1943 repeated int32 task_ids = 8;
1944}
1946
1948message TaskManagerRequest {
1949 // Common request header.
1950 RSI.RapidServer.RequestHeader header = 1;
1951
1952 // TaskManager id.
1953 optional int32 id = 2; // Required for all actions except Create and Discover.
1954
1955 optional TaskManagerConfig config = 3;
1956 optional TaskManagerAction action = 4;
1957}
1959
1961message TaskManagerResponse {
1962 // Common response header. Always check the response header for errors.
1963 RSI.RapidServer.ResponseHeader header = 1;
1964
1965 // TaskManager id.
1966 optional int32 id = 2; // When creating a TaskManager, this will be the new TaskManager's id.
1967
1968 optional TaskManagerConfig config = 3;
1969 optional TaskManagerAction action = 4;
1970 optional TaskManagerInfo info = 5;
1971 optional TaskManagerStatus status = 6;
1972}
1974
1976message TaskManagerBatchRequest {
1977 // Common request header.
1978 RSI.RapidServer.RequestHeader header = 1;
1979
1980 repeated TaskManagerRequest requests = 2;
1981}
1982
1983message TaskManagerBatchResponse {
1984 // Common response header. Always check the response header for errors.
1985 RSI.RapidServer.ResponseHeader header = 1;
1986
1987 repeated TaskManagerResponse responses = 2;
1988}
1990
1992message TaskConfig {}
1994
1996message TaskAction {
1997 optional Stop stop = 1;
1998
1999 message Stop {}
2000}
2002
2004message TaskInfo {
2005 int32 id = 1;
2006 int32 task_manager_id = 2;
2007 Constants constants = 3;
2008
2009 message Constants {
2010 TaskParameters task_parameters = 1;
2011 TaskStatus task_status = 2;
2012
2013 message TaskParameters {
2014 int32 max_directory_length = 1;
2015 int32 max_name_length = 2;
2016 int32 default_priority = 3;
2017 int32 cyclic_repeats = 4;
2018 int32 no_repeats = 5;
2019 int32 default_period = 6;
2020 int32 default_phase = 7;
2021 bool default_timing = 8;
2022 }
2023
2024 message TaskStatus {
2025 int64 invalid_execution_count = 1;
2026 uint64 invalid_execution_time = 2;
2027 }
2028 }
2029}
2031
2032enum TaskStateEnum {
2033 TaskStateUNKNOWN = 0;
2034 TaskStateDEAD = 1;
2035 TaskStateDISABLED = 2;
2036 TaskStateWAITING = 3;
2037 TaskStateRUNNING = 4;
2038}
2039
2041message TaskStatus {
2042 TaskStateEnum state = 1;
2043 int64 execution_count = 2;
2044 optional uint64 execution_time_max = 3;
2045 optional uint64 execution_time_min = 4;
2046 optional double execution_time_mean = 5;
2047 optional uint64 execution_time_last = 6;
2048}
2050
2052message TaskRequest {
2053 // Common request header.
2054 RSI.RapidServer.RequestHeader header = 1;
2055
2056 // Task id.
2057 int32 id = 2;
2058 int32 task_manager_id = 3;
2059
2060 optional TaskConfig config = 4;
2061 optional TaskAction action = 5;
2062}
2064
2066message TaskResponse {
2067 // Common response header. Always check the response header for errors.
2068 RSI.RapidServer.ResponseHeader header = 1;
2069
2070 // Task id.
2071 int32 id = 2;
2072 int32 task_manager_id = 3;
2073
2074 optional TaskConfig config = 4;
2075 optional TaskAction action = 5;
2076 optional TaskInfo info = 6;
2077 optional TaskStatus status = 7;
2078}
2080
2082message TaskBatchRequest {
2083 // Common request header.
2084 RSI.RapidServer.RequestHeader header = 1;
2085
2086 repeated TaskRequest requests = 2;
2087}
2088
2089message TaskBatchResponse {
2090 // Common response header. Always check the response header for errors.
2091 RSI.RapidServer.ResponseHeader header = 1;
2092
2093 repeated TaskResponse responses = 2;
2094}
RSINetworkEniResult
NetworkEniGenerate return values.
Definition rsienums.h:1384
RSINetworkStartMode
Network start modes.
Definition rsienums.h:587
RSINetworkState
State of network.
Definition rsienums.h:567
RSIControllerAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:404
RSIMotorDisableAction
Action for when a motor is disabled.
Definition rsienums.h:1279
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:1000
RSIDataType
Data types for User Limits and other triggers.
Definition rsienums.h:654
RSIUserLimitLogic
Logic options for User Limits.
Definition rsienums.h:641
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1075
RSIAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:433
RSINetworkStartError
Network start errors.
Definition rsienums.h:593
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:496
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:628
INtimeStatus
INtime status values.
Definition rsienums.h:1317
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:396
RSINetworkType
Type of Network topology.
Definition rsienums.h:621
RSINodeType
Valid Node types.
Definition rsienums.h:671
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:976
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1291
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1178