APIs, concepts, guides, and more
rsi.h
1#ifndef _RSI_H
2#define _RSI_H
3
4#include <stdlib.h>
5#include <vector>
6#include <stdio.h>
7#include <string.h>
8#include <math.h>
9#include <exception>
10#include <cstdint>
11#include <cstring>
12
13#include "rsienums.h"
14
15#if defined(_WIN32)
16# if !defined(__INTIME__)
17# define HAS_CARTESIAN_ROBOT 1
18# endif
19# if !defined(RSI_API)
20# if defined(RSIDLL)
21# define RSI_API __declspec(dllexport)
22# else
23# define RSI_API __declspec(dllimport)
24# endif
25# endif
26#elif defined(__linux__)
27# define HAS_CARTESIAN_ROBOT 1
28# if !defined(RSI_API)
29# define RSI_API __attribute__ ((visibility ("default")))
30# endif
31#endif
32
33// Macro for pure virtual definitions
34#define PURE_VIRTUAL = 0
35
37namespace RSI
38{
39
41namespace RapidCode
42{
43
44 // Forward declaration of the implementation class for RapidVector.
45 template<typename Type>
46 class RapidVector;
47
48#if defined(__cplusplus)
49extern "C"
50{
51#endif
52
53
55class Axis;
56class MultiAxis;
57class IO;
58class RapidCodeNetworkNode;
59class IOPoint;
60class RTOS;
61
63class StaticInstanceMediator
64{
65private:
66 bool isValid;
67public:
68
69 bool IsValid() { return isValid; }
70
71 void OnDelete() { isValid = false; }
72
73 void OnCreate() { isValid = true; }
74};
75
78
110class RsiError : public std::exception
111{
112public:
116 int32_t lineNumber;
118 int32_t objectIndex;
122 static inline constexpr uint32_t RSI_ERROR_TEXT_SIZE = 512U;
123 char text[RSI_ERROR_TEXT_SIZE];
130
131 RsiError() : text{}, functionName{}, shortText{}, fileName{}
132 {
134 lineNumber = -1;
135 isWarning = false;
136 objectIndex = -1;
137 }
146 RsiError(const RsiError& copyFrom)
147 {
148#if defined(_WIN32)
149 strncpy_s(text, RSI_ERROR_TEXT_SIZE, copyFrom.text, RSI_ERROR_TEXT_SIZE);
153#elif defined(__linux__)
154 strncpy(text, copyFrom.text, RSI_ERROR_TEXT_SIZE);
156 strncpy(shortText, copyFrom.shortText, RSI_ERROR_TEXT_SIZE);
157 strncpy(fileName, copyFrom.fileName, RSI_ERROR_TEXT_SIZE);
158#endif
159 number = copyFrom.number;
160 lineNumber = copyFrom.lineNumber;
161 isWarning = copyFrom.isWarning;
162 objectIndex = copyFrom.objectIndex;
163 }
164 ~RsiError()
165 {
166 }
167
169 virtual const char* what() const noexcept { return text; }
170};
171
180class RSI_API RapidCodeObject {
181public:
186
187
188
201 virtual const char* const VersionGet() PURE_VIRTUAL;
202
204 virtual int32_t MpiVersionMajor() PURE_VIRTUAL;
206 virtual int32_t MpiVersionMinor() PURE_VIRTUAL;
208 virtual int32_t MpiVersionRelease() PURE_VIRTUAL;
210 virtual int32_t RSIVersionMajor() PURE_VIRTUAL;
212 virtual int32_t RSIVersionMinor() PURE_VIRTUAL;
214 virtual int32_t RSIVersionMicro() PURE_VIRTUAL;
216 virtual int32_t RSIVersionPatch() PURE_VIRTUAL;
217
220 virtual int32_t NumberGet() PURE_VIRTUAL;
222
227
228
229
230
256 virtual int32_t ErrorLogCountGet() PURE_VIRTUAL;
257
271 virtual const RsiError* const ErrorLogGet() PURE_VIRTUAL;
272
285 virtual void ErrorLogClear() PURE_VIRTUAL;
286
305 virtual void ThrowExceptions(bool state) PURE_VIRTUAL;
306
308 virtual const char* const RsiErrorMessageGet(RSIErrorMessage msg) PURE_VIRTUAL;
309
311 virtual const char* const ErrorMessageGet(RSIErrorMessage msg) PURE_VIRTUAL;
312
314 virtual bool WarningMsgCheck(RSIErrorMessage msg) PURE_VIRTUAL;
316
321
322
337 virtual void Trace(bool state) PURE_VIRTUAL;
338
353 virtual void TraceMaskOnSet(RSITrace maskOn) PURE_VIRTUAL;
354
355
376 virtual bool TraceMaskOnGet(RSITrace maskOn) PURE_VIRTUAL;
377
393 virtual void TraceMaskOffSet(RSITrace maskOff) PURE_VIRTUAL;
394
408 virtual void TraceMaskClear() PURE_VIRTUAL;
409
424 virtual void TraceFileSet(const char* const fileName) PURE_VIRTUAL;
425
438 virtual void TraceFileClose() PURE_VIRTUAL;
439
454 virtual void TraceInjectMessage(RSITrace traceLevel, const char* const message) PURE_VIRTUAL;
455
456
457
458
460};
461
463typedef union
464{
465 bool Bool;
466 int8_t Int8;
467 uint8_t UInt8;
468 int16_t Int16;
469 uint16_t UInt16;
470 int32_t Int32;
471 uint32_t UInt32;
472 float Float;
473 double Double;
474 int64_t Int64;
475 uint64_t UInt64;
477
479
493class RSI_API RapidCodeOS {
494public:
495
500
513 virtual void Sleep(int32_t milliseconds) PURE_VIRTUAL;
514
533 virtual int32_t KeyGet(int32_t milliseconds) PURE_VIRTUAL;
534
544 virtual int32_t TimerCountGet() PURE_VIRTUAL;
545
554 virtual int32_t TimerFrequencyGet() PURE_VIRTUAL;
555
556
568 virtual int32_t PerformanceTimerCountGet() PURE_VIRTUAL;
569
581 virtual int32_t PerformanceTimerFrequencyGet() PURE_VIRTUAL;
582
584};
585
587
590class RSI_API RapidCodeInterrupt : public virtual RapidCodeObject {
591public:
595
597 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
598
599
621 virtual RSIEventType InterruptWait(int32_t milliseconds) PURE_VIRTUAL;
622
642 virtual const char* const InterruptNameGet() PURE_VIRTUAL;
643
664 virtual int32_t InterruptSampleTimeGet() PURE_VIRTUAL;
665
666
687 virtual int32_t InterruptSourceNumberGet() PURE_VIRTUAL;
688
690 virtual uint16_t InterruptMotionIdGet() PURE_VIRTUAL;
691
693 virtual void InterruptWake() PURE_VIRTUAL;
694
696 virtual void InterruptMaskClear() PURE_VIRTUAL;
697
699 virtual void InterruptMaskAllSet() PURE_VIRTUAL;
700
702 virtual void InterruptMaskOnSet(RSIEventType eventType) PURE_VIRTUAL;
703
705 virtual void InterruptMaskOffSet(RSIEventType eventType) PURE_VIRTUAL;
706
708 virtual bool InterruptMaskOnGet(RSIEventType eventType) PURE_VIRTUAL;
709
710
723 virtual uint64_t InterruptUserDataGet(uint32_t userDataIndex) PURE_VIRTUAL;
724
725
737 virtual double InterruptUserDataDoubleGet(uint32_t userDataIndex) PURE_VIRTUAL;
738
744 virtual FirmwareValue InterruptUserDataValueGet(uint32_t userDataIndex) PURE_VIRTUAL;
745
781
783 virtual void InterruptUserDataAddressSet(uint32_t userDataIndex, uint64_t hostAddress) PURE_VIRTUAL;
784
790 virtual uint64_t InterruptUserDataAddressGet(uint32_t userDataIndex) PURE_VIRTUAL;
791};
792
796class RSI_API MotionController : public virtual RapidCodeInterrupt {
797protected:
798 MotionController();
799 StaticInstanceMediator* _mediator;
800
801public:
802
803 // Static functions or attributes should be grouped together.
808
810 static inline constexpr uint32_t NetworkStartTimeoutMillisecondsDefault = 30000;
811
813 static inline constexpr uint32_t AxisCountMaximum = 128;
814
816 static inline constexpr uint32_t MotionCountMaximum = 128;
817
819 static inline constexpr uint32_t NetworkNodeCountMaximum = 128;
820
822 static inline constexpr uint32_t RecorderCountMaximum = 128;
823
825 static inline constexpr uint32_t CompensatorCountMaximum = 128;
826
828 static inline constexpr uint32_t MathBlockCountMaximum = 128;
829
831 static inline constexpr uint32_t UserBufferDataCountMaximum = 1024;
832
839 static inline constexpr double SampleRateDefault = 1000.0;
840
850 static inline constexpr int32_t AxisFrameBufferSizeDefault = 1024;
851
853
854 // Static functions or attributes should be grouped together.
859
862 {
867
872 static inline constexpr int32_t ControllerIndexDefault = 0;
873
878 static inline constexpr uint32_t PathLengthMaximum = 256;
879
885 static inline constexpr int32_t CpuAffinityDefault = -1;
886
891 static inline constexpr int32_t RmpThreadPriorityMaximumDefault = 45;
892
897 static inline constexpr int32_t RmpThreadPriorityRange = 8;
898
903 static inline constexpr int32_t RmpThreadPriorityMinimum = RmpThreadPriorityRange + 1;
904
909 static inline constexpr int32_t RmpThreadPriorityMaximum = 99;
910
915 static inline constexpr int32_t RmpThreadPriorityNoRealTime = 0;
917
918
923
929 {
931 std::memset(RmpPath, '\0', PathLengthMaximum);
932 std::memset(NicPrimary, '\0', PathLengthMaximum);
933 std::memset(NicSecondary, '\0', PathLengthMaximum);
934#if defined(_WIN32)
935 std::memset(NodeName, '\0', PathLengthMaximum);
936#elif defined(__linux__)
939#endif
940 }
941
942
947
953
959
965
972
973 // Control which platform specific parameters are available
974#if defined(_WIN32) && defined(__linux__)
975 static_assert(false, "_WIN32 and __linux__ defined. Double check preprocessor definitions");
976#elif !defined(_WIN32) && !defined(__linux__) && !defined(DOXYGEN)
977 static_assert(false, "Neither _WIN32 nor __linux__ are defined AND this is not a documentation build. Double check preprocessor definitions");
978#endif //defined(_WIN32) && defined(__linux__)
979#if defined(_WIN32) || defined(DOXYGEN)
980
985
991
993#endif //defined(_WIN32)
994#if defined(__linux__) || defined(DOXYGEN)
995
1000
1011
1023
1025# endif // defined(__linux__)
1026 };
1027
1038 static MotionController* Create(CreationParameters* creationParameters);
1039
1044 static MotionController* Get();
1045
1051 static MotionController* Get(int32_t controllerIndex);
1052
1053#if defined(_WIN32)
1080 static MotionController* CreateFromSoftware();
1081
1086 static MotionController* CreateFromSoftware(const char* const RtaPath);
1087
1093 static MotionController* CreateFromSoftware(const char* const RtaPath, const char* const NodeName);
1094
1121 static MotionController* Create();
1122#endif // defined(_WIN32)
1123
1128 static MotionController* CreateFromFile(const char* const fileName);
1130
1135
1151 virtual Axis* AxisGet(int32_t axisNumber) PURE_VIRTUAL;
1152
1169 virtual MultiAxis* MultiAxisGet(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1170
1184 virtual MultiAxis* LoadExistingMultiAxis(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1185
1200 virtual RapidCodeNetworkNode* NetworkNodeGet(int32_t nodeNumber) PURE_VIRTUAL;
1201
1217 virtual IO* IOGet(int32_t nodeNumber) PURE_VIRTUAL;
1218
1241 virtual void Delete(void) PURE_VIRTUAL;
1243
1248
1255 virtual void Reset() PURE_VIRTUAL;
1256
1266 virtual void Refresh() PURE_VIRTUAL;
1267
1275 virtual void Shutdown() PURE_VIRTUAL;
1276
1285 virtual void MemoryToFile(const char* const fileName) PURE_VIRTUAL;
1287
1292
1315 virtual int32_t SampleCounterGet() PURE_VIRTUAL;
1316
1331 virtual double ProcessorUsageGet() PURE_VIRTUAL;
1332
1343 virtual void ProcessorUsageClear() PURE_VIRTUAL;
1344
1348 virtual uint32_t FirmwareTimingDeltaGet() PURE_VIRTUAL;
1349
1350
1352
1357
1358
1363
1386 virtual uint32_t SerialNumberGet(void) PURE_VIRTUAL;
1387
1406 virtual void SampleWait(uint32_t samples) PURE_VIRTUAL;
1407
1408
1410 virtual RSIControllerType ControllerTypeGet() PURE_VIRTUAL;
1411
1413 virtual const char* const ServerNameGet() PURE_VIRTUAL;
1414
1416 virtual int32_t ServerPortGet() PURE_VIRTUAL;
1417
1418
1419
1420
1442 virtual RSIProcessorType ProcessorTypeGet() PURE_VIRTUAL;
1443
1469 virtual void SampleRateSet(double sampleRate) PURE_VIRTUAL;
1470
1474 virtual double SampleRateGet() PURE_VIRTUAL;
1475
1493 virtual int32_t AxisCountGet() PURE_VIRTUAL;
1494
1512 virtual void AxisCountSet(int32_t axisCount) PURE_VIRTUAL;
1513
1520 virtual void AxisCountSet(int32_t axisCount, bool setMotorFilterSupervisor) PURE_VIRTUAL;
1521
1524 virtual bool IsLicensed() PURE_VIRTUAL;
1525
1527 virtual int32_t PackageVariantGet() PURE_VIRTUAL;
1528
1530 virtual int32_t AxisLicenseCountGet() PURE_VIRTUAL;
1531
1533 virtual bool MechaWareLicenseGet() PURE_VIRTUAL;
1534
1536 virtual int32_t UnsupportedOptionSet(int32_t option) PURE_VIRTUAL;
1537
1562 virtual int32_t MotionCountGet() PURE_VIRTUAL;
1563
1580 virtual void MotionCountSet(int32_t motionCount) PURE_VIRTUAL;
1581
1607 virtual int32_t UserVersionGet() PURE_VIRTUAL;
1608
1632 virtual void UserVersionSet(int32_t version) PURE_VIRTUAL;
1633
1636 virtual int32_t ExternalMemorySizeGet() PURE_VIRTUAL;
1637
1654 virtual void AxisFrameBufferSizeSet(int32_t axisNumber, int32_t frameBufferSize) PURE_VIRTUAL;
1655
1670 virtual int32_t AxisFrameBufferSizeGet(int32_t axisNumber) PURE_VIRTUAL;
1672
1677
1695 virtual const char* const FirmwareVersionGet() PURE_VIRTUAL;
1696
1714 virtual int32_t FirmwareOptionGet() PURE_VIRTUAL;
1715
1717 virtual bool HasMechaWare() PURE_VIRTUAL;
1718
1742 virtual int32_t MemoryGet(uint64_t address) PURE_VIRTUAL;
1743
1744
1762 virtual double MemoryDoubleGet(uint64_t address) PURE_VIRTUAL;
1763
1789 virtual void MemoryBlockGet(uint64_t address, void* dataStart, int32_t size) PURE_VIRTUAL;
1790
1805 virtual void MemorySet(uint64_t address, int32_t data) PURE_VIRTUAL;
1806
1807
1808
1825 virtual void MemoryDoubleSet(uint64_t address, double dataDouble) PURE_VIRTUAL;
1826
1852 virtual void MemoryBlockSet(uint64_t address, const void* const dataStart, int32_t size) PURE_VIRTUAL;
1853
1872 virtual uint64_t FirmwareAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1873
1874
1875
1876
1899 virtual uint64_t HostAddressGet(uint64_t firmwareAddress) PURE_VIRTUAL;
1900
1901
1902
1925 virtual int32_t BackgroundCycleCounterGet() PURE_VIRTUAL;
1926
1927
1928
1929
1938 virtual uint64_t AddressFromStringGet(const char* const addressName) PURE_VIRTUAL;
1939
1940
1941
1950 virtual const char* const StringFromAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1951
1966 virtual uint64_t AddressGet(RSIControllerAddressType type) PURE_VIRTUAL;
1967
1985 virtual uint64_t AddressGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1986
1987
2001
2006 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
2007
2021 virtual bool MotionHoldGateGet(int32_t gateNumber) PURE_VIRTUAL;
2022
2023
2024
2040 virtual void MotionHoldGateSet(int32_t gateNumber, bool hold) PURE_VIRTUAL;
2042
2047
2050
2052 virtual RSINetworkType NetworkTypeGet() PURE_VIRTUAL;
2053
2068 virtual int32_t NetworkNodeCountGet() PURE_VIRTUAL;
2069
2116
2137 virtual const char* const NetworkEniGenerateOutputGet() PURE_VIRTUAL;
2138
2145 virtual void NetworkStart() PURE_VIRTUAL;
2146
2151 virtual void NetworkStart(RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2152
2159 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2160
2165 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
2166
2177 virtual void NetworkShutdown() PURE_VIRTUAL;
2178
2181 virtual RSINetworkState NetworkStateGet() PURE_VIRTUAL;
2182
2197
2208 virtual NetworkStatus NetworkStatusGet() PURE_VIRTUAL;
2209
2211 virtual int32_t NetworkCounterGet() PURE_VIRTUAL;
2212
2214 virtual int32_t NetworkInputCountGet() PURE_VIRTUAL;
2215
2217 virtual int32_t NetworkInputBitSizeGet(int32_t index) PURE_VIRTUAL;
2218
2222 virtual const char* const NetworkInputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2223
2226 virtual int32_t NetworkInputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2227
2230 virtual const char* const NetworkInputNameGet(int32_t index) PURE_VIRTUAL;
2231
2235 virtual uint64_t NetworkInputValueGet(int32_t index) PURE_VIRTUAL;
2236
2237
2238
2246 virtual uint64_t NetworkInputAddressGet(int32_t index) PURE_VIRTUAL;
2247
2251 virtual int32_t NetworkOutputCountGet() PURE_VIRTUAL;
2252
2255 virtual int32_t NetworkOutputBitSizeGet(int32_t index) PURE_VIRTUAL;
2256
2257
2261 virtual const char* const NetworkOutputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2262
2264 virtual int32_t NetworkOutputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2265
2267 virtual const char* const NetworkOutputNameGet(int32_t index) PURE_VIRTUAL;
2268
2284 virtual uint64_t NetworkOutputValueGet(int32_t index) PURE_VIRTUAL;
2285
2302 virtual void NetworkOutputValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2303
2322 virtual uint64_t NetworkOutputAddressGet(int32_t index) PURE_VIRTUAL;
2323
2329 virtual uint64_t NetworkOutputAddressGet(int32_t index, RSINetworkOutputAddressType type) PURE_VIRTUAL;
2330
2341 virtual uint64_t NetworkOutputIntendedValueGet(int32_t index) PURE_VIRTUAL;
2342
2354 virtual void NetworkOutputOverrideSet(int32_t index, bool outputOverride) PURE_VIRTUAL;
2355
2366 virtual bool NetworkOutputOverrideGet(int32_t index) PURE_VIRTUAL;
2367
2368
2369
2370
2387 virtual void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2388
2401 virtual uint64_t NetworkOutputOverrideValueGet(int32_t index) PURE_VIRTUAL;
2402
2417 virtual uint64_t NetworkOutputSentValueGet(int32_t index) PURE_VIRTUAL;
2418
2422 virtual int32_t NetworkLogMessageCountGet() PURE_VIRTUAL;
2423
2426
2431 virtual const char* const NetworkLogMessageGet(int32_t messageIndex) PURE_VIRTUAL;
2432
2434 virtual void NetworkTimingEnableSet(bool enable) PURE_VIRTUAL;
2435
2437 virtual void NetworkTimingClear() PURE_VIRTUAL;
2438
2440 virtual uint32_t NetworkTimingDeltaGet() PURE_VIRTUAL;
2441
2443 virtual uint32_t NetworkTimingMinGet() PURE_VIRTUAL;
2444
2446 virtual uint32_t NetworkTimingMaxGet() PURE_VIRTUAL;
2447
2449 virtual void NetworkTimingThresholdLowSet(uint32_t microseconds) PURE_VIRTUAL;
2450
2452 virtual void NetworkTimingThresholdHighSet(uint32_t microseconds) PURE_VIRTUAL;
2453
2455 virtual uint32_t NetworkTimingThresholdLowCountGet() PURE_VIRTUAL;
2456
2458 virtual uint32_t NetworkTimingThresholdHighCountGet() PURE_VIRTUAL;
2459
2461 virtual bool NetworkSynchronizedGet() PURE_VIRTUAL;
2463
2468
2485 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
2486
2505 virtual void InterruptWake() PURE_VIRTUAL;
2506
2534 virtual void SyncInterruptEnableSet(bool enable) PURE_VIRTUAL;
2535
2561 virtual void SyncInterruptPeriodSet(uint32_t samples) PURE_VIRTUAL;
2562
2582 virtual int32_t SyncInterruptWait() PURE_VIRTUAL;
2583
2585 virtual bool ServiceThreadStateGet() PURE_VIRTUAL;
2586
2597 virtual int32_t SyncInterruptHostProcessTimeGet() PURE_VIRTUAL;
2598
2600 virtual int32_t SyncInterruptHostProcessFlagGet() PURE_VIRTUAL;
2601
2614 virtual void SyncInterruptHostProcessFlagSet(bool hostProcessFlag) PURE_VIRTUAL;
2615
2626 virtual bool SyncInterruptHostProcessStatusBitGet() PURE_VIRTUAL;
2627
2637 virtual void SyncInterruptHostProcessStatusClear() PURE_VIRTUAL;
2638
2665
2666 virtual void ServiceThreadEnableSet(bool enable) PURE_VIRTUAL;
2668
2673
2674
2675
2694 virtual int32_t RecorderCountGet() PURE_VIRTUAL;
2695
2713 virtual void RecorderCountSet(int32_t recorderCount) PURE_VIRTUAL;
2714
2731 virtual void RecorderPeriodSet(uint32_t samples) PURE_VIRTUAL;
2732
2734 virtual void RecorderPeriodSet(int32_t recorderNumber, uint32_t samples) PURE_VIRTUAL;
2735
2752 virtual void RecorderCircularBufferSet(bool enable) PURE_VIRTUAL;
2753
2755 virtual void RecorderCircularBufferSet(int32_t recorderNumber, bool enable) PURE_VIRTUAL;
2756
2772 virtual void RecorderDataCountSet(int32_t count) PURE_VIRTUAL;
2773
2775 virtual void RecorderDataCountSet(int32_t recorderNumber,int32_t count) PURE_VIRTUAL;
2776
2793 virtual void RecorderDataAddressSet(int32_t index, uint64_t address) PURE_VIRTUAL;
2794
2796 virtual void RecorderDataAddressSet(int32_t recorderNumber,int32_t index, uint64_t address) PURE_VIRTUAL;
2797
2798
2804 virtual void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t* const addresses, int32_t addressCount) PURE_VIRTUAL;
2805
2819
2825 virtual void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2826
2833 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2834
2840 virtual void RecorderConfigureToTriggerOnMotion(MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2841
2848 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2849
2856 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, int32_t motionNumber, bool triggerOnMotion) PURE_VIRTUAL;
2857
2866 virtual bool RecorderTriggerOnMotionGet(int32_t recorderNumber) PURE_VIRTUAL;
2867
2883 virtual bool RecorderEnabledGet() PURE_VIRTUAL;
2884
2886 virtual bool RecorderEnabledGet(int32_t recorderNumber ) PURE_VIRTUAL;
2887
2904 virtual int32_t RecorderRecordCountGet() PURE_VIRTUAL;
2905
2907 virtual int32_t RecorderRecordCountGet(int32_t recorderNumber ) PURE_VIRTUAL;
2908
2922 virtual int32_t RecorderRecordMaxCountGet() PURE_VIRTUAL;
2923
2925 virtual int32_t RecorderRecordMaxCountGet(int32_t recorderNumber) PURE_VIRTUAL;
2926
2941 virtual void RecorderStart() PURE_VIRTUAL;
2942
2944 virtual void RecorderStart(int32_t recorderNumber) PURE_VIRTUAL;
2945
2962 virtual void RecorderStop() PURE_VIRTUAL;
2963
2965 virtual void RecorderStop(int32_t recorderNumber) PURE_VIRTUAL;
2966
2967
2968
2984 virtual const int32_t* const RecorderRecordDataGet() PURE_VIRTUAL;
2985
2987 virtual const int32_t* const RecorderRecordDataGet(int32_t recorderNumber) PURE_VIRTUAL;
2988
3003 virtual void RecorderRecordDataRetrieve() PURE_VIRTUAL;
3004
3024 virtual int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount) PURE_VIRTUAL;
3025
3027 virtual void RecorderRecordDataRetrieve(int32_t recorderNumber) PURE_VIRTUAL;
3028
3045 virtual int32_t RecorderRecordDataValueGet(int32_t index) PURE_VIRTUAL;
3046
3048 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
3049
3068 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3069
3071 virtual double RecorderRecordDataDoubleGet(int32_t index) PURE_VIRTUAL;
3072
3074 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
3075
3094 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3095
3097 virtual FirmwareValue RecorderRecordDataFirmwareValueGet(int32_t index) PURE_VIRTUAL;
3098
3100 virtual FirmwareValue RecorderRecordDataFirmwareValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
3101
3122 virtual FirmwareValue RecorderRecordDataFirmwareValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3123
3141 virtual void RecorderBufferHighCountSet(int32_t bufferHighCount) PURE_VIRTUAL;
3142
3144 virtual void RecorderBufferHighCountSet(int32_t recorderNumber, int32_t bufferHighCount) PURE_VIRTUAL;
3145
3160 virtual void RecorderReset() PURE_VIRTUAL;
3161
3163 virtual void RecorderReset(int32_t recorderNumber) PURE_VIRTUAL;
3164
3176 virtual int32_t RecorderBufferSizeGet(int32_t recorderNumber) PURE_VIRTUAL;
3177
3194 virtual void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize) PURE_VIRTUAL;
3196
3201
3202
3203
3204
3229 virtual int32_t CompensatorCountGet() PURE_VIRTUAL;
3230
3250 virtual void CompensatorCountSet(int32_t compensatorCount) PURE_VIRTUAL;
3251
3262 virtual int32_t CompensatorPointCountGet(int32_t compensatorNumber) PURE_VIRTUAL;
3263
3283 virtual void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount) PURE_VIRTUAL;
3284
3298 virtual int32_t CompensatorDimensionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3299
3325 virtual void CompensatorConfigSet(int32_t compensatorNumber, int32_t firstInputAxisNumber, RSIAxisMasterType firstInputAxisType, double firstInputAxisMinimum, double firstInputAxisMaximum, double firstInputAxisDelta, int32_t secondInputAxisNumber, RSIAxisMasterType secondInputAxisType, double secondInputAxisMinimum, double secondInputAxisMaximum, double secondInputAxisDelta, int32_t outputAxisNumber, RSICompensatorOutputType outputType, const double* const table) PURE_VIRTUAL;
3326
3356 virtual void CompensatorConfigSet(int32_t compensatorNumber, Axis* firstInputAxis, RSIAxisMasterType firstInputAxisType, double firstInputAxisMinimum, double firstInputAxisMaximum, double firstInputAxisDelta, Axis* secondInputAxis, RSIAxisMasterType secondInputAxisType, double secondInputAxisMinimum, double secondInputAxisMaximum, double secondInputAxisDelta, Axis* outputAxis, RSICompensatorOutputType outputType, const double* const table) PURE_VIRTUAL;
3357
3378 virtual void CompensatorConfigSet(int32_t compensatorNumber, int32_t inputAxisNumber, RSIAxisMasterType inputAxisType, double inputAxisMinimum, double inputAxisMaximum, double inputAxisDelta, int32_t outputAxisNumber, RSICompensatorOutputType outputType, const double* const table) PURE_VIRTUAL;
3379
3400 virtual void CompensatorConfigSet(int32_t compensatorNumber, Axis* inputAxis, RSIAxisMasterType inputAxisType, double inputAxisMinimum, double inputAxisMaximum, double inputAxisDelta, Axis* outputAxis, RSICompensatorOutputType outputType, const double* const table) PURE_VIRTUAL;
3401
3413 virtual void CompensatorTableSet(int32_t compensatorNumber, const double* const table) PURE_VIRTUAL;
3414
3426 virtual void CompensatorTableGet(int32_t compensatorNumber, double* table) PURE_VIRTUAL;
3427
3447 virtual double CompensatorPositionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3448
3449
3450
3451
3452
3453
3465
3466 virtual void CompensatorTableClear(int32_t compensatorNumber) PURE_VIRTUAL;
3467
3477 virtual void CompensatorDisable(int32_t compensatorNumber, bool force = false) PURE_VIRTUAL;
3478
3485 virtual void CompensatorEnable(int32_t compensatorNumber) PURE_VIRTUAL;
3486
3488
3493
3513 virtual int32_t UserLimitCountGet() PURE_VIRTUAL;
3514
3534 virtual void UserLimitCountSet(int32_t userLimitCount) PURE_VIRTUAL;
3535
3555 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot) PURE_VIRTUAL;
3556
3559 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration) PURE_VIRTUAL;
3560
3562 virtual RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number) PURE_VIRTUAL;
3563
3565 virtual RSIAction UserLimitActionGet(int32_t number) PURE_VIRTUAL;
3566
3568 virtual int32_t UserLimitAxisNumberGet(int32_t number) PURE_VIRTUAL;
3569
3571 virtual double UserLimitDurationGet(int32_t number) PURE_VIRTUAL;
3572
3574 virtual bool UserLimitSingleShotGet(int32_t number) PURE_VIRTUAL;
3575
3600 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32) PURE_VIRTUAL;
3601
3623 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfDouble, double limitValueDouble) PURE_VIRTUAL;
3624
3626 virtual RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3627
3629 virtual RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3630
3632 virtual uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3633
3635 virtual uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3636
3638 virtual int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3639
3641 virtual double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3642
3669 virtual void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3670
3673 virtual void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3674
3677 virtual void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3678
3681 virtual void UserLimitOutputSet(int32_t number, double limitValueDouble, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3682
3698 virtual void UserLimitOutputSet(int32_t number, RSIDataType dataType, uint64_t inputPtr, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3699
3701 virtual bool UserLimitOutputEnableGet(int32_t number) PURE_VIRTUAL;
3702
3704 virtual RSIDataType UserLimitOutputDataTypeGet(int32_t number) PURE_VIRTUAL;
3705
3707 virtual uint64_t UserLimitOutputAddressGet(int32_t number) PURE_VIRTUAL;
3708
3710 virtual uint64_t UserLimitOutputInputAddressGet(int32_t number) PURE_VIRTUAL;
3711
3713 virtual uint32_t UserLimitOutputAndMaskGet(int32_t number) PURE_VIRTUAL;
3714
3716 virtual uint32_t UserLimitOutputOrMaskGet(int32_t number) PURE_VIRTUAL;
3717
3719 virtual int32_t UserLimitOutputValueGet(int32_t number) PURE_VIRTUAL;
3720
3722 virtual uint64_t UserLimitOutputAndMask64Get(int32_t number) PURE_VIRTUAL;
3723
3725 virtual uint64_t UserLimitOutputOrMask64Get(int32_t number) PURE_VIRTUAL;
3726
3727
3729 virtual double UserLimitOutputDoubleGet(int32_t number) PURE_VIRTUAL;
3730
3751 virtual bool UserLimitStateGet(int32_t number) PURE_VIRTUAL;
3752
3773 virtual bool UserLimitEnableGet(int32_t number) PURE_VIRTUAL;
3774
3776 virtual void UserLimitEnableSet(int32_t number, bool enable) PURE_VIRTUAL;
3777
3792 virtual void UserLimitDisable(int32_t number) PURE_VIRTUAL;
3793
3805 virtual void UserLimitReset(int32_t number) PURE_VIRTUAL;
3806
3815
3816 virtual int32_t UserLimitCountMax() PURE_VIRTUAL;
3817
3835 virtual void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address) PURE_VIRTUAL;
3836
3838 virtual uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex) PURE_VIRTUAL;
3840
3841
3846
3856 virtual int32_t MathBlockCountGet() PURE_VIRTUAL;
3857
3868 virtual void MathBlockCountSet(int32_t mathBlockCount) PURE_VIRTUAL;
3869
3888
3890 virtual MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3891
3893 virtual void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig& config) PURE_VIRTUAL;
3894
3896 virtual FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3897
3899
3900
3905
3908
3910};
3911
3915class RSI_API RapidCodeNetworkNode : public virtual RapidCodeObject {
3916public:
3917
3922
3924 static inline constexpr uint32_t SDOTimeoutMillisecondsDefault = 100;
3925
3927
3928
3933
3935 virtual bool Exists() PURE_VIRTUAL;
3936
3938 virtual RSINodeType TypeGet() PURE_VIRTUAL;
3939
3941 virtual bool IsEtherCAT() PURE_VIRTUAL;
3942
3944 virtual bool IsSynqNet() PURE_VIRTUAL;
3945
3947
3952
3960 virtual bool HasIO() PURE_VIRTUAL;
3961
3971 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
3972
3982 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
3983
3992 virtual void DigitalOutSet(int32_t digitalOutNumber, bool state) PURE_VIRTUAL;
3993
4003 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
4004
4014 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
4015
4024 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
4025
4027
4031
4039 virtual int32_t DigitalInCountGet() PURE_VIRTUAL;
4040
4048 virtual int32_t DigitalOutCountGet() PURE_VIRTUAL;
4049
4057 virtual int32_t AnalogInCountGet() PURE_VIRTUAL;
4058
4066 virtual int32_t AnalogOutCountGet() PURE_VIRTUAL;
4067
4068
4070 virtual int32_t SegmentCountGet() PURE_VIRTUAL;
4071
4073 virtual int32_t SegmentDigitalInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4074
4076 virtual int32_t SegmentDigitalOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4077
4079 virtual int32_t SegmentAnalogInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4080
4082 virtual int32_t SegmentAnalogOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4083
4085 virtual int32_t SegmentIDGet(int32_t segmentNumber) PURE_VIRTUAL;
4086
4099 virtual uint64_t DigitalInAddressGet(int32_t bitNumber) PURE_VIRTUAL;
4100
4113 virtual int32_t DigitalInMaskGet(int32_t bitNumber) PURE_VIRTUAL;
4114
4127 virtual uint64_t DigitalOutAddressGet(int32_t bitNumber) PURE_VIRTUAL;
4128
4141 virtual int32_t DigitalOutMaskGet(int32_t bitNumber) PURE_VIRTUAL;
4142
4154 virtual uint64_t AnalogInAddressGet(int32_t channel) PURE_VIRTUAL;
4155
4167 virtual int32_t AnalogInMaskGet(int32_t channel) PURE_VIRTUAL;
4168
4180 virtual uint64_t AnalogOutAddressGet(int32_t channel) PURE_VIRTUAL;
4181
4193 virtual int32_t AnalogOutMaskGet(int32_t channel) PURE_VIRTUAL;
4194
4198 virtual int32_t DigitalInNetworkIndexGet(int32_t digitalInNumber) PURE_VIRTUAL;
4199
4203 virtual int32_t DigitalOutNetworkIndexGet(int32_t digitalOutNumber) PURE_VIRTUAL;
4204
4208 virtual int32_t AnalogInNetworkIndexGet(int32_t analogChannel) PURE_VIRTUAL;
4209
4213 virtual int32_t AnalogOutNetworkIndexGet(int32_t analogChannel) PURE_VIRTUAL;
4214
4230 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds = SDOTimeoutMillisecondsDefault) PURE_VIRTUAL;
4231
4244 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds = SDOTimeoutMillisecondsDefault) PURE_VIRTUAL;
4245
4256 virtual RapidVector<uint8_t> ServiceChannelReadBytes(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4257
4273 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds = SDOTimeoutMillisecondsDefault) PURE_VIRTUAL;
4274
4287 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue, uint32_t timeoutMilliseconds = SDOTimeoutMillisecondsDefault) PURE_VIRTUAL;
4288
4297 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, RapidVector<uint8_t> bytes, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4298
4304 virtual char* AKDASCIICommand(const char* const command) PURE_VIRTUAL;
4305
4307 virtual void ClearFaults(int32_t axisNumber) PURE_VIRTUAL;
4308
4310 virtual uint32_t VendorIdGet() PURE_VIRTUAL;
4311
4324 virtual const char* const NameGet() PURE_VIRTUAL;
4325
4343 virtual const char* const ProductNameGet() PURE_VIRTUAL;
4344
4362 virtual const char* const VendorNameGet() PURE_VIRTUAL;
4363
4365 virtual uint32_t ProductCodeGet() PURE_VIRTUAL;
4366
4368 virtual uint32_t RevisionGet() PURE_VIRTUAL;
4369
4371 virtual uint32_t StationAliasGet() PURE_VIRTUAL;
4372
4374 virtual const char* const SerialNumberGet() PURE_VIRTUAL;
4375
4377 virtual uint32_t AxisCountGet() PURE_VIRTUAL;
4378
4380 virtual uint16_t StatusWordGet(int32_t axisIndex) PURE_VIRTUAL;
4381
4394
4405 virtual Status StatusGet() PURE_VIRTUAL;
4406
4414 virtual void StatusClear() PURE_VIRTUAL;
4415};
4416
4418
4421class RSI_API RapidCodeMotion : public virtual RapidCodeInterrupt{
4422public:
4423
4425 static inline constexpr int32_t AmpEnableTimeoutMillisecondsDefault = 500;
4426
4428 static inline constexpr int32_t WaitForever = -1;
4429
4435
4438
4440
4441
4445
4463 virtual int32_t NumberGet() PURE_VIRTUAL;
4464
4481 virtual int32_t AxisCountGet() PURE_VIRTUAL;
4482
4486
4511 virtual void TriggeredModify() PURE_VIRTUAL;
4512
4539 virtual void Stop() PURE_VIRTUAL;
4540
4565 virtual void Resume() PURE_VIRTUAL;
4566
4591 virtual void EStop() PURE_VIRTUAL;
4592
4613 virtual void EStopAbort() PURE_VIRTUAL;
4614
4631 virtual void EStopModify() PURE_VIRTUAL;
4632
4635 virtual void EStopModifyAbort() PURE_VIRTUAL;
4636
4658 virtual void Abort() PURE_VIRTUAL;
4659
4686 virtual void ClearFaults() PURE_VIRTUAL;
4687
4726 virtual int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds = AmpEnableTimeoutMillisecondsDefault, bool overrideRestrictedState = false) PURE_VIRTUAL;
4727
4738 virtual bool AmpEnableGet() PURE_VIRTUAL;
4739
4759
4760 virtual void Map() PURE_VIRTUAL;
4761
4779 virtual void Unmap() PURE_VIRTUAL;
4780
4785 virtual bool IsMapped() PURE_VIRTUAL;
4786
4803 virtual void FeedRateSet(double rate) PURE_VIRTUAL;
4804
4823 virtual double FeedRateGet() PURE_VIRTUAL;
4824
4828
4829
4830
4831
4851 virtual RSIState StateGet() PURE_VIRTUAL;
4852
4880 virtual RSISource SourceGet() PURE_VIRTUAL;
4881
4906 virtual const char* const SourceNameGet(RSISource source) PURE_VIRTUAL;
4907
4936 virtual int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds = WaitForever) PURE_VIRTUAL;
4937
4958 virtual bool MotionDoneGet() PURE_VIRTUAL;
4959
4982 virtual bool StatusBitGet(RSIEventType bitMask) PURE_VIRTUAL;
4983
4998 virtual uint64_t StatusBitsGet() PURE_VIRTUAL;
4999
5003
5032 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
5033
5047 virtual void InterruptWake() PURE_VIRTUAL;
5048
5052
5068 virtual double StopTimeGet() PURE_VIRTUAL;
5069
5085 virtual void StopTimeSet(double seconds) PURE_VIRTUAL;
5086
5102 virtual double EStopTimeGet() PURE_VIRTUAL;
5103
5119 virtual void EStopTimeSet(double seconds) PURE_VIRTUAL;
5120
5137 virtual double MotionDelayGet() PURE_VIRTUAL;
5138
5159 virtual void MotionDelaySet(double seconds) PURE_VIRTUAL;
5160
5181 virtual uint16_t MotionIdGet() PURE_VIRTUAL;
5182
5200 virtual void MotionIdSet(uint16_t id) PURE_VIRTUAL;
5201
5203 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
5204
5206 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
5207
5222 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
5223
5231 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
5232
5252 virtual RSIMotionHoldType MotionHoldTypeGet() PURE_VIRTUAL;
5253
5286 virtual void MotionHoldTypeSet(RSIMotionHoldType type) PURE_VIRTUAL;
5287
5299 virtual int32_t MotionHoldGateNumberGet() PURE_VIRTUAL;
5300
5319
5320 virtual void MotionHoldGateNumberSet(int32_t gateNumber) PURE_VIRTUAL;
5321
5338 virtual double MotionHoldTimeoutGet() PURE_VIRTUAL;
5339
5358 virtual void MotionHoldTimeoutSet(double seconds) PURE_VIRTUAL;
5359
5383 virtual bool MotionHoldGateGet() PURE_VIRTUAL;
5384
5407 virtual void MotionHoldGateSet(bool hold) PURE_VIRTUAL;
5408
5425 virtual int32_t MotionHoldAxisNumberGet() PURE_VIRTUAL;
5426
5443 virtual void MotionHoldAxisNumberSet(int32_t number) PURE_VIRTUAL;
5444
5461
5462 virtual double MotionHoldAxisPositionGet() PURE_VIRTUAL;
5463
5480 virtual void MotionHoldAxisPositionSet(double position) PURE_VIRTUAL;
5481
5484
5486 virtual void MotionHoldAxisLogicSet(RSIUserLimitLogic logic) PURE_VIRTUAL;
5487
5504 virtual uint64_t MotionHoldUserAddressGet() PURE_VIRTUAL;
5505
5522 virtual void MotionHoldUserAddressSet(uint64_t address) PURE_VIRTUAL;
5523
5539 virtual int32_t MotionHoldUserMaskGet() PURE_VIRTUAL;
5540
5556 virtual void MotionHoldUserMaskSet(int32_t holdMask) PURE_VIRTUAL;
5557
5573 virtual int32_t MotionHoldUserPatternGet() PURE_VIRTUAL;
5574
5590 virtual void MotionHoldUserPatternSet(int32_t pattern) PURE_VIRTUAL;
5591
5593 virtual void MotionAttributeMaskDefaultSet() PURE_VIRTUAL;
5594
5619
5620 virtual bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5621
5640 virtual void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5641
5658
5659 virtual void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff) PURE_VIRTUAL;
5660
5664
5665
5666
5702 virtual void MovePT(RSIMotionType type, const double* const position, const double* const time, int32_t pointCount, int32_t emptyCount, bool retain, bool final) PURE_VIRTUAL;
5703
5741 virtual void MovePVT(const double* const position, const double* const velocity, const double* const time, int32_t pointCount, int32_t emptyCount, bool retain, bool final) PURE_VIRTUAL;
5742
5772 virtual void MovePVAJT(const double* const position, const double* const velocity, const double* const acceleration, const double* const jerk, const double* const time, int32_t pointCount, int32_t emptyCount, bool retain, bool final) PURE_VIRTUAL;
5773
5810 virtual void MovePTF(const double* const position, const double* const time, const double* const feedforward, int32_t pointCount, int32_t emptyCount, bool retain, bool final) PURE_VIRTUAL;
5811
5852 virtual void MovePVTF(const double* const position, const double* const velocity, const double* const time, const double* const feedforward, int32_t pointCount, int32_t emptyCount, bool retain, bool final) PURE_VIRTUAL;
5853
5858 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address) PURE_VIRTUAL;
5859
5887 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
5888
5893 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on) PURE_VIRTUAL;
5894
5912 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on, int32_t ptPointIndex) PURE_VIRTUAL;
5913
5932 virtual void StreamingOutputsClear() PURE_VIRTUAL;
5933
5955 virtual void StreamingOutputsEnableSet(bool enable) PURE_VIRTUAL;
5956};
5957
5958
5963class RSI_API Axis : public virtual RapidCodeMotion{
5964public:
5965
5966 friend class MotionController;
5967 friend class MultiAxis;
5968
5969
5974
5976 static inline constexpr uint32_t NetworkIndexInvalid = 65535;
5977
5979 static inline constexpr double AmpEnableAmpFaultTimeoutSecondsDefault = 1.0;
5980
5982
5983
5988
5993 RapidCodeNetworkNode* NetworkNode;
5994
5995
5997
6002
6040 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel) PURE_VIRTUAL;
6041
6063 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel) PURE_VIRTUAL;
6064
6087 virtual void MoveTrapezoidal(double position) PURE_VIRTUAL; // use defaults Overload
6088
6096
6097 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
6098
6108 virtual void MoveSCurve(double position) PURE_VIRTUAL;
6109
6113 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
6114
6118 virtual void MoveVelocity(double velocity) PURE_VIRTUAL;
6119
6154 virtual void MoveVelocity(double velocity, double accel) PURE_VIRTUAL;
6155
6193 virtual void MoveVelocitySCurve(double velocity, double accel, double jerkPct) PURE_VIRTUAL;
6194
6236 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
6237
6244 virtual void MoveRelative(double relativePosition) PURE_VIRTUAL;
6245
6251 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
6253
6258
6283 virtual void PositionSet(double position) PURE_VIRTUAL;
6284
6303 virtual double ActualPositionGet() PURE_VIRTUAL;
6304
6326 virtual void ActualPositionSet(double position) PURE_VIRTUAL;
6327
6344 virtual double CompensationPositionGet() PURE_VIRTUAL;
6345
6358 virtual void CompensationPositionSet(double position) PURE_VIRTUAL;
6359
6371 virtual double TargetPositionGet() PURE_VIRTUAL;
6372
6392 virtual double CommandPositionGet() PURE_VIRTUAL;
6393
6425 virtual void CommandPositionSet(double position) PURE_VIRTUAL;
6426
6450 virtual void CommandPositionDirectSet(double position) PURE_VIRTUAL;
6451
6468 virtual double OriginPositionGet() PURE_VIRTUAL;
6469
6492 virtual void OriginPositionSet(double position) PURE_VIRTUAL;
6493
6514 virtual double PositionErrorGet() PURE_VIRTUAL;
6515
6537 virtual double CommandVelocityGet() PURE_VIRTUAL;
6538
6561 virtual double ActualVelocityGet() PURE_VIRTUAL;
6562
6583 virtual double CommandAccelGet() PURE_VIRTUAL;
6584
6586 virtual double CommandJerkGet() PURE_VIRTUAL;
6587
6608 virtual double EncoderPositionGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
6609
6631 virtual double UserUnitsGet() PURE_VIRTUAL;
6632
6655 virtual void UserUnitsSet(double countsPerUserUnit) PURE_VIRTUAL;
6656
6658 virtual double UserUnitsToCounts(double userUnits) PURE_VIRTUAL;
6659
6661 virtual double CountsToUserUnits(double counts) PURE_VIRTUAL;
6662
6682 virtual int32_t FramesToExecuteGet() PURE_VIRTUAL;
6684
6689
6710 virtual void Home(bool moveToZero = true) PURE_VIRTUAL;
6711
6730
6731 virtual RSIHomeMethod HomeMethodGet() PURE_VIRTUAL;
6732
6751
6752 virtual void HomeMethodSet(RSIHomeMethod method) PURE_VIRTUAL;
6753
6774
6775 virtual double HomeOffsetGet() PURE_VIRTUAL;
6776
6821 virtual void HomeOffsetSet(double offset) PURE_VIRTUAL;
6822
6841 virtual double HomeVelocityGet(RSIHomeStage homeStage = RSIHomeStage::RSIHomeStageSTAGE_ONE) PURE_VIRTUAL;
6842
6863 virtual void HomeVelocitySet(double velocity) PURE_VIRTUAL;
6864
6869 virtual void HomeVelocitySet(RSIHomeStage homeStage, double velocity) PURE_VIRTUAL;
6870
6886 virtual double HomeSlowVelocityGet() PURE_VIRTUAL;
6887
6903 virtual void HomeSlowVelocitySet(double velocity) PURE_VIRTUAL;
6904
6923 virtual double HomeAccelerationGet(RSIHomeStage homeStage = RSIHomeStage::RSIHomeStageSTAGE_ONE) PURE_VIRTUAL;
6924
6944
6945 virtual void HomeAccelerationSet(double accel) PURE_VIRTUAL;
6946
6950 virtual void HomeAccelerationSet(RSIHomeStage homeStage, double accel) PURE_VIRTUAL;
6951
6969 virtual double HomeDecelerationGet(RSIHomeStage homeStage = RSIHomeStage::RSIHomeStageSTAGE_ONE) PURE_VIRTUAL;
6970
6989
6990 virtual void HomeDecelerationSet(double decel) PURE_VIRTUAL;
6991
6995 virtual void HomeDecelerationSet(RSIHomeStage homeStage, double decel) PURE_VIRTUAL;
6996
7015 virtual double HomeJerkPercentGet(RSIHomeStage homeStage = RSIHomeStage::RSIHomeStageSTAGE_ONE) PURE_VIRTUAL;
7016
7036 virtual void HomeJerkPercentSet(double percent) PURE_VIRTUAL;
7037
7042 virtual void HomeJerkPercentSet(RSIHomeStage homeStage, double percent) PURE_VIRTUAL;
7043
7063 virtual void HomeCancelSet(bool cancel) PURE_VIRTUAL;
7064
7083 virtual bool HomeStateGet() PURE_VIRTUAL;
7084
7097 virtual void HomeStateSet(bool homed) PURE_VIRTUAL;
7098
7103 virtual void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex) PURE_VIRTUAL;
7104
7106 virtual void HomeLimitCustomConfigReset() PURE_VIRTUAL;
7107
7109 virtual uint64_t HomeLimitCustomConfigAddressGet() PURE_VIRTUAL;
7110
7113 virtual int32_t HomeLimitCustomConfigBitIndexGet() PURE_VIRTUAL;
7114
7136
7137 virtual void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel) PURE_VIRTUAL;
7138
7158 virtual RSIHomeStage HomeStageGet() PURE_VIRTUAL;
7159
7173 virtual void HomeBehaviorSet(RSIAction behavior) PURE_VIRTUAL;
7174
7186 virtual RSIAction HomeBehaviorGet() PURE_VIRTUAL;
7188
7194
7196 virtual bool FaultMaskBitGet(RSIMotorFaultMask bitMask) PURE_VIRTUAL;
7197
7199 virtual uint16_t StatusWordGet() PURE_VIRTUAL;
7201
7206 // reads active configuration to report state
7207
7231
7232 virtual bool NegativeLimitGet() PURE_VIRTUAL;
7233
7257 virtual bool PositiveLimitGet() PURE_VIRTUAL;
7258
7287 virtual bool HomeLimitGet() PURE_VIRTUAL;
7288
7316 virtual bool HomeSwitchGet() PURE_VIRTUAL;
7317
7338 virtual bool AmpFaultGet() PURE_VIRTUAL;
7339
7363 virtual bool AmpEnableGet() PURE_VIRTUAL;
7364
7389 virtual bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7390
7415 virtual bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7416
7439 virtual bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7440
7462 virtual uint32_t DedicatedInputsGet() PURE_VIRTUAL;
7463
7486 virtual bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7487
7509 virtual uint32_t DedicatedOutputsGet() PURE_VIRTUAL;
7511
7516
7537 virtual bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7538
7556 virtual uint32_t DigitalInputsGet() PURE_VIRTUAL;
7557
7578 virtual bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7579
7597 virtual uint32_t DigitalOutputsGet() PURE_VIRTUAL;
7598
7619
7620 virtual void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue) PURE_VIRTUAL;
7621
7640 virtual bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7641
7660 virtual const char* const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7661
7684 virtual RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7685
7704 virtual void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type) PURE_VIRTUAL;
7705
7722 virtual double AnalogInGet(int32_t channel) PURE_VIRTUAL;
7724
7729
7743 virtual double EStopDecelerationGet() PURE_VIRTUAL;
7744
7759 virtual void EStopDecelerationSet(double decel) PURE_VIRTUAL;
7760
7771 virtual double EStopJerkPercentGet() PURE_VIRTUAL;
7772
7790 virtual void EStopJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7791
7801 virtual double TriggeredModifyDecelerationGet() PURE_VIRTUAL;
7802
7820 virtual void TriggeredModifyDecelerationSet(double decel) PURE_VIRTUAL;
7821
7832 virtual double TriggeredModifyJerkPercentGet() PURE_VIRTUAL;
7833
7851 virtual void TriggeredModifyJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7852
7854 virtual int32_t FrameBufferSizeGet() PURE_VIRTUAL;
7855
7857 virtual void FrameBufferSizeSet(int32_t frameSize) PURE_VIRTUAL;
7858
7878 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
7879
7900 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
7902
7907
7909 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
7910
7912 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
7913
7915 virtual double DefaultVelocityGet() PURE_VIRTUAL;
7916
7918 virtual void DefaultVelocitySet(double velocity) PURE_VIRTUAL;
7919
7921 virtual double DefaultAccelerationGet() PURE_VIRTUAL;
7922
7924 virtual void DefaultAccelerationSet(double acceleration) PURE_VIRTUAL;
7925
7927 virtual double DefaultDecelerationGet() PURE_VIRTUAL;
7928
7930 virtual void DefaultDecelerationSet(double deceleration) PURE_VIRTUAL;
7931
7933 virtual double DefaultJerkPercentGet() PURE_VIRTUAL;
7934
7936 virtual void DefaultJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
7937
7939 virtual double DefaultPosition1Get() PURE_VIRTUAL;
7940
7942 virtual void DefaultPosition1Set(double position1) PURE_VIRTUAL;
7943
7945 virtual double DefaultPosition2Get() PURE_VIRTUAL;
7946
7948 virtual void DefaultPosition2Set(double position2) PURE_VIRTUAL;
7949
7951 virtual double DefaultRelativeIncrementGet() PURE_VIRTUAL;
7952
7954 virtual void DefaultRelativeIncrementSet(double relativeIncrement) PURE_VIRTUAL;
7956
7960 // /@{
7961
7984 virtual RSIAction AmpFaultActionGet() PURE_VIRTUAL;
7985
8008 virtual void AmpFaultActionSet(RSIAction action) PURE_VIRTUAL;
8009
8031 virtual bool AmpFaultTriggerStateGet() PURE_VIRTUAL;
8032
8054 virtual void AmpFaultTriggerStateSet(bool state) PURE_VIRTUAL;
8055
8076 virtual double AmpFaultDurationGet() PURE_VIRTUAL;
8077
8098 virtual void AmpFaultDurationSet(double seconds) PURE_VIRTUAL;
8099
8124 virtual RSIAction HomeActionGet() PURE_VIRTUAL;
8125
8149 virtual void HomeActionSet(RSIAction action) PURE_VIRTUAL;
8150
8176 virtual bool HomeTriggerStateGet() PURE_VIRTUAL;
8177
8198 virtual void HomeTriggerStateSet(bool state) PURE_VIRTUAL;
8199
8221 virtual double HomeDurationGet() PURE_VIRTUAL;
8222
8245 virtual void HomeDurationSet(double seconds) PURE_VIRTUAL;
8246
8275 virtual RSIAction ErrorLimitActionGet() PURE_VIRTUAL;
8276
8303 virtual void ErrorLimitActionSet(RSIAction action) PURE_VIRTUAL;
8304
8327 virtual double ErrorLimitTriggerValueGet() PURE_VIRTUAL;
8328
8350 virtual void ErrorLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8351
8373 virtual double ErrorLimitDurationGet() PURE_VIRTUAL;
8374
8397 virtual void ErrorLimitDurationSet(double seconds) PURE_VIRTUAL;
8398
8423 virtual RSIAction HardwareNegLimitActionGet() PURE_VIRTUAL;
8424
8449 virtual void HardwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8450
8474 virtual bool HardwareNegLimitTriggerStateGet() PURE_VIRTUAL;
8475
8499 virtual void HardwareNegLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8500
8523 virtual double HardwareNegLimitDurationGet() PURE_VIRTUAL;
8524
8548 virtual void HardwareNegLimitDurationSet(double seconds) PURE_VIRTUAL;
8549
8574 virtual RSIAction HardwarePosLimitActionGet() PURE_VIRTUAL;
8575
8600 virtual void HardwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8601
8622 virtual bool HardwarePosLimitTriggerStateGet() PURE_VIRTUAL;
8623
8647 virtual void HardwarePosLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8648
8671 virtual double HardwarePosLimitDurationGet() PURE_VIRTUAL;
8672
8695 virtual void HardwarePosLimitDurationSet(double seconds) PURE_VIRTUAL;
8696
8722 virtual RSIAction SoftwareNegLimitActionGet() PURE_VIRTUAL;
8723
8747 virtual void SoftwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8748
8771 virtual double SoftwareNegLimitTriggerValueGet() PURE_VIRTUAL;
8772
8795 virtual void SoftwareNegLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8796
8820 virtual RSIAction SoftwarePosLimitActionGet() PURE_VIRTUAL;
8821
8845 virtual void SoftwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8846
8869 virtual double SoftwarePosLimitTriggerValueGet() PURE_VIRTUAL;
8870
8893 virtual void SoftwarePosLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8894
8920 virtual RSIAction EncoderFaultActionGet() PURE_VIRTUAL;
8921
8946 virtual void EncoderFaultActionSet(RSIAction action) PURE_VIRTUAL;
8947
8971 virtual RSIMotorFeedbackFault EncoderFaultTriggerGet() PURE_VIRTUAL;
8972
8994 virtual void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder) PURE_VIRTUAL;
8995
9017 virtual double EncoderFaultDurationGet() PURE_VIRTUAL;
9018
9040 virtual void EncoderFaultDurationSet(double seconds) PURE_VIRTUAL;
9041
9043 virtual RSIAction NodeFailureActionGet() PURE_VIRTUAL;
9044
9046 virtual void NodeFailureActionSet(RSIAction action) PURE_VIRTUAL;
9047
9063 virtual uint64_t AddressGet( RSIAxisAddressType addressType) PURE_VIRTUAL;
9064
9078 virtual RSIDataType AddressDataTypeGet(RSIAxisAddressType type) PURE_VIRTUAL;
9079
9080 // common limit methods
9081
9083 virtual RSIAction LimitActionGet(RSIEventType limit) PURE_VIRTUAL;
9084
9086 virtual void LimitActionSet(RSIEventType limit, RSIAction action) PURE_VIRTUAL;
9087
9089 virtual bool LimitTriggerStateGet(RSIEventType limit) PURE_VIRTUAL;
9090
9092 virtual void LimitTriggerStateSet(RSIEventType limit, bool triggerState) PURE_VIRTUAL;
9093
9095 virtual double LimitTriggerValueGet(RSIEventType limit) PURE_VIRTUAL;
9096
9098 virtual void LimitTriggerValueSet(RSIEventType limit, double triggerValue) PURE_VIRTUAL;
9099
9101 virtual double LimitDurationGet(RSIEventType limit) PURE_VIRTUAL;
9102
9104 virtual void LimitDurationSet(RSIEventType limit, double seconds) PURE_VIRTUAL;
9106
9111
9125 virtual double PositionToleranceFineGet() PURE_VIRTUAL;
9126
9140 virtual void PositionToleranceFineSet(double tolerance) PURE_VIRTUAL;
9141
9155 virtual double PositionToleranceCoarseGet() PURE_VIRTUAL;
9156
9173 virtual void PositionToleranceCoarseSet(double tolerance) PURE_VIRTUAL;
9174
9188 virtual double VelocityToleranceGet() PURE_VIRTUAL;
9189
9203 virtual void VelocityToleranceSet(double tolerance) PURE_VIRTUAL;
9204
9219 virtual double SettlingTimeGet() PURE_VIRTUAL;
9220
9235 virtual void SettlingTimeSet(double time) PURE_VIRTUAL;
9236
9253 virtual bool SettleOnStopGet() PURE_VIRTUAL;
9254
9271
9272 virtual void SettleOnStopSet(bool state) PURE_VIRTUAL;
9273
9290 virtual bool SettleOnEStopGet() PURE_VIRTUAL;
9291
9307 virtual void SettleOnEStopSet(bool state) PURE_VIRTUAL;
9308
9325 virtual bool SettleOnEStopCmdEqActGet() PURE_VIRTUAL;
9326
9342 virtual void SettleOnEStopCmdEqActSet(bool state) PURE_VIRTUAL;
9344
9349
9366 virtual RSIMotorType MotorTypeGet() PURE_VIRTUAL;
9367
9383 virtual void MotorTypeSet(RSIMotorType type) PURE_VIRTUAL;
9384
9401 virtual RSIMotorDisableAction AmpDisableActionGet() PURE_VIRTUAL;
9402
9420 virtual void AmpDisableActionSet(RSIMotorDisableAction action) PURE_VIRTUAL;
9421
9439
9440 virtual RSIMotorBrakeMode BrakeModeGet() PURE_VIRTUAL;
9441
9457 virtual void BrakeModeSet(RSIMotorBrakeMode mode) PURE_VIRTUAL;
9458
9474 virtual double BrakeApplyDelayGet() PURE_VIRTUAL;
9475
9476
9493 virtual void BrakeApplyDelaySet(double seconds) PURE_VIRTUAL;
9494
9510 virtual double BrakeReleaseDelayGet() PURE_VIRTUAL;
9511
9529 virtual void BrakeReleaseDelaySet(double seconds) PURE_VIRTUAL;
9530
9532 virtual void ClosedLoopStepperSet(bool enable) PURE_VIRTUAL;
9533
9535 virtual int32_t ClosedLoopStepperVersionGet() PURE_VIRTUAL;
9536
9538 virtual uint64_t EncoderPointerGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9539
9541 virtual void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address) PURE_VIRTUAL;
9542
9544 virtual uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9545
9546
9548 virtual void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9549
9551 virtual uint64_t FeedbackPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9552
9570 virtual void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9571
9573 virtual int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9574
9576 virtual int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9577
9599 virtual void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9600
9602 virtual const char* const EncoderRatioPrimaryGet() PURE_VIRTUAL;
9603
9605 virtual void EncoderRatioPrimarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9606
9608 virtual const char* const EncoderRatioSecondaryGet() PURE_VIRTUAL;
9609
9611 virtual void EncoderRatioSecondarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9612
9614 virtual int32_t EncoderCountGet() PURE_VIRTUAL;
9615
9618 virtual void EncoderCountSet(int32_t count) PURE_VIRTUAL;
9619
9621 virtual RSIAxisGantryType GantryTypeGet() PURE_VIRTUAL;
9622
9624 virtual void GantryTypeSet(RSIAxisGantryType type) PURE_VIRTUAL;
9625
9644 virtual RSIOperationMode OperationModeGet() PURE_VIRTUAL;
9645
9665 virtual void OperationModeSet(RSIOperationMode mode) PURE_VIRTUAL;
9666
9686 virtual int32_t MotorFaultMaskGet() PURE_VIRTUAL;
9687
9713 virtual void MotorFaultMaskSet(int32_t faultMask) PURE_VIRTUAL;
9715
9720
9741 virtual void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9746 virtual void GearingEnable(Axis* masterAxis, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9747
9766 virtual void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9767
9784 virtual void GearingDisable() PURE_VIRTUAL;
9785
9787 virtual int32_t GearingNumeratorGet() PURE_VIRTUAL;
9788
9790 virtual int32_t GearingDenominatorGet() PURE_VIRTUAL;
9791
9793 virtual bool GearingEnableGet() PURE_VIRTUAL;
9794
9812 virtual int32_t GearingMasterAxisNumberGet() PURE_VIRTUAL;
9813
9826 virtual RSIAxisMasterType GearingSourceGet() PURE_VIRTUAL;
9828
9833
9850 virtual double MotionCamMasterStartGet(Axis* master) PURE_VIRTUAL;
9851
9866 virtual void MotionCamMasterStartSet(Axis* master, double startPosition) PURE_VIRTUAL;
9867
9884 virtual int32_t MotionCamRepeatFromGet() PURE_VIRTUAL;
9885
9903 virtual void MotionCamRepeatFromSet(int32_t repeatFrom) PURE_VIRTUAL;
9904
9922 virtual void MotionCamRepeatStop() PURE_VIRTUAL;
9923
9945 virtual void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
9946
9976 virtual void MoveCamCubic(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, const double* const gearRatios, int32_t pointCount) PURE_VIRTUAL;
9977
9994
9995 virtual int32_t DriveIndexGet() PURE_VIRTUAL;
9997
10002
10015 virtual double BacklashWidthGet() PURE_VIRTUAL;
10016
10029 virtual void BacklashWidthSet(double width) PURE_VIRTUAL;
10030
10043 virtual double BacklashRateGet() PURE_VIRTUAL;
10044
10057 virtual void BacklashRateSet(double rate) PURE_VIRTUAL;
10058
10059
10070 virtual double BacklashValueGet() PURE_VIRTUAL;
10072
10077
10105 virtual RSIFilterAlgorithm FilterAlgorithmGet() PURE_VIRTUAL;
10106
10131 virtual void FilterAlgorithmSet(RSIFilterAlgorithm algorithm) PURE_VIRTUAL;
10132
10158 virtual double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
10159
10182 virtual void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
10183
10186 virtual double FilterCoeffGet(RSIFilterGainPIVCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
10191 virtual void FilterCoeffSet(RSIFilterGainPIVCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
10192
10227 virtual int32_t FilterGainTableGet() PURE_VIRTUAL;
10228
10257 virtual void FilterGainTableSet(int32_t gainTable) PURE_VIRTUAL;
10258
10275 virtual int32_t FilterGainTableSizeGet() PURE_VIRTUAL;
10276
10278 virtual double FilterOutputGet(void) PURE_VIRTUAL;
10279
10292 virtual double FilterLowPassGet() PURE_VIRTUAL;
10293
10309 virtual void FilterLowPassSet(double frequency) PURE_VIRTUAL;
10310
10329 virtual void FilterDualLoopSet(Axis* velocityAxis, RSIMotorFeedback velocityEncoder, bool enable) PURE_VIRTUAL;
10330
10331
10333 virtual bool FilterGainSchedulingGet() PURE_VIRTUAL;
10334
10335
10337 virtual void FilterGainSchedulingSet(bool enable) PURE_VIRTUAL;
10338
10340 virtual bool IsTuneable() PURE_VIRTUAL;
10341
10358 virtual void PostFilterLowPassSet(int32_t sectionNumber, double frequency) PURE_VIRTUAL;
10359
10375 virtual void PostFilterUnityGainSet(int32_t sectionNumber) PURE_VIRTUAL;
10376
10395 virtual void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne) PURE_VIRTUAL;
10396
10412 virtual void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq) PURE_VIRTUAL;
10413
10431 virtual void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth) PURE_VIRTUAL;
10432
10451 virtual void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain) PURE_VIRTUAL;
10452
10471 virtual void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq) PURE_VIRTUAL;
10472
10488 virtual void PostFilterClear(int32_t sectionNumber) PURE_VIRTUAL;
10489
10510 virtual void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo) PURE_VIRTUAL;
10511
10513 virtual const char* const PostFilterInfoGet() PURE_VIRTUAL;
10514 //virtual RSIFilterPostFilterSection PostFilterSection;
10516
10521
10541 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10542
10563 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10565
10570
10592 virtual void PostTrajectoryGearingEnableSet(bool enable) PURE_VIRTUAL;
10593
10612 virtual bool PostTrajectoryGearingEnableGet() PURE_VIRTUAL;
10613
10633 virtual void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber) PURE_VIRTUAL;
10634
10653 virtual int32_t PostTrajectoryGearingMasterAxisGet() PURE_VIRTUAL;
10654
10674 virtual void PostTrajectoryGearingMultiplierSet(double multiplier) PURE_VIRTUAL;
10675
10694 virtual double PostTrajectoryGearingMultiplierGet() PURE_VIRTUAL;
10695
10716 virtual double PostTrajectoryGearingScaledOffsetGet() PURE_VIRTUAL;
10718
10719
10744 virtual uint32_t NetworkIndexGet(RSINetworkIndexType indexType) PURE_VIRTUAL;
10745
10780 virtual void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex) PURE_VIRTUAL;
10781
10789 virtual double BacklashHysteresisLimitGet() PURE_VIRTUAL;
10790
10797 virtual void BacklashHysteresisLimitSet(double hysteresisLimit) PURE_VIRTUAL;
10798
10822 virtual bool StepperMotorLoopbackGet() PURE_VIRTUAL;
10823
10847 virtual void StepperMotorLoopbackSet(bool loopback) PURE_VIRTUAL;
10848
10858
10868 virtual void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type) PURE_VIRTUAL;
10869
10876 virtual uint64_t GearingMasterAddressGet() PURE_VIRTUAL;
10877
10879};
10880
10884class RSI_API MultiAxis : public virtual RapidCodeMotion {
10885public:
10886
10890
10904 virtual void AxisAdd(Axis *axis) PURE_VIRTUAL;
10905
10908 virtual void AxesAdd(Axis* *axes, int32_t axisCount) PURE_VIRTUAL;
10909
10922 virtual void AxisRemoveAll() PURE_VIRTUAL;
10923
10927
10943 virtual Axis* AxisGet(int32_t index) PURE_VIRTUAL;
10944
10964 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10965
10986 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10987
10991
11006 virtual double VectorVelocityGet() PURE_VIRTUAL;
11007
11023 virtual void VectorVelocitySet(double velocity) PURE_VIRTUAL;
11024
11039 virtual double VectorAccelerationGet() PURE_VIRTUAL;
11040
11063 virtual void VectorAccelerationSet(double acceleration) PURE_VIRTUAL;
11064
11079 virtual double VectorDecelerationGet() PURE_VIRTUAL;
11080
11103 virtual void VectorDecelerationSet(double deceleration) PURE_VIRTUAL;
11104
11119 virtual double VectorJerkPercentGet() PURE_VIRTUAL;
11120
11143 virtual void VectorJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
11144
11168 virtual void MoveVector(const double* const position) PURE_VIRTUAL;
11169
11172 virtual void MoveVectorRelative(const double* const relativePosition) PURE_VIRTUAL;
11173
11177
11197
11198 virtual double PathTimeSliceGet() PURE_VIRTUAL;
11199
11220
11221 virtual void PathTimeSliceSet(double seconds) PURE_VIRTUAL;
11222
11247 virtual void PathRatioSet(const double* const ratio) PURE_VIRTUAL;
11248
11251 virtual double PathRatioGet(int32_t index) PURE_VIRTUAL;
11252
11269 virtual void PathBlendSet(bool blend) PURE_VIRTUAL;
11270
11279
11280 virtual void PathPlanTypeSet(RSIPathPlanType type) PURE_VIRTUAL;
11281
11290
11291 virtual RSIPathPlanType PathPlanTypeGet() PURE_VIRTUAL;
11292
11311 virtual void PathListStart(const double* const startPosition) PURE_VIRTUAL;
11312
11333 virtual void PathLineAdd(const double* const position) PURE_VIRTUAL;
11334
11354 virtual void PathArcAdd(const double* const center, double angle) PURE_VIRTUAL;
11355
11374 virtual void PathListEnd() PURE_VIRTUAL;
11375
11392 virtual void PathMotionStart() PURE_VIRTUAL;
11393
11397
11415 virtual void MoveTrapezoidal(const double* const position, const double* const vel, const double* const accel, const double* const decel) PURE_VIRTUAL;
11416
11419 virtual void MoveTrapezoidal(const double* const position) PURE_VIRTUAL;
11420
11450 virtual void MoveSCurve(const double* const position, const double* const vel, const double* const accel, const double* const decel, const double* const jerkPct) PURE_VIRTUAL;
11451
11462 virtual void MoveSCurve(const double* const position) PURE_VIRTUAL;
11463
11468 virtual void MoveSCurve(const double* const position, const double* const vel, const double* const accel, const double* const decel, const double* const jerkPct, const double* const finalVel) PURE_VIRTUAL;
11469
11484 virtual void MoveVelocity(const double* const velocity, const double* const accel) PURE_VIRTUAL;
11485
11489 virtual void MoveVelocity(const double* const velocity) PURE_VIRTUAL;
11490
11512 virtual void MoveRelative(const double* const relativePosition, const double* const vel, const double* const accel, const double* const decel, const double* const jerkPct) PURE_VIRTUAL;
11513
11524 virtual void MoveRelative(const double* const relativePosition) PURE_VIRTUAL;
11525
11530 virtual void MoveRelative(const double* const relativePosition, const double* const vel, const double* const accel, const double* const decel, const double* const jerkPct, const double* const finalVel) PURE_VIRTUAL;
11531
11548 virtual void MoveVelocitySCurve(const double* const velocity, const double* const accel, const double* const jerkPct) PURE_VIRTUAL;
11549
11566 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
11567
11585 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
11586
11588 virtual int32_t AxisMapCountGet() PURE_VIRTUAL;
11589
11603 virtual uint64_t AddressGet(RSIMultiAxisAddressType addressType) PURE_VIRTUAL;
11604
11619
11629 virtual bool AmpEnableGet() PURE_VIRTUAL;
11630
11631
11632};
11633
11639class RSI_API IOPoint : public virtual RapidCodeObject {
11640public:
11645
11662 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorDedicatedIn motorDedicatedInNumber);
11663
11680 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11681
11697 static IOPoint* CreateDigitalInput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11698 // use NetworkNode*
11699 static IOPoint* CreateDigitalInput(IO* io, int32_t bitNumber);
11700
11711 static IOPoint* CreateDigitalInput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11712
11726 static IOPoint* CreateDigitalInput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11727
11745 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorDedicatedOut motorDedicatedOutNumber);
11746
11763 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11764
11780 static IOPoint* CreateDigitalOutput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11781 // use NetworkNode*
11782 static IOPoint* CreateDigitalOutput(IO* io, int32_t bitNumber);
11783
11784
11797 static IOPoint* CreateDigitalOutput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11798
11812 static IOPoint* CreateDigitalOutput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11813
11828 static IOPoint* CreateAnalogInput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11829 // use RapidCodeNetworkNode*
11830 static IOPoint* CreateAnalogInput(IO* io, int32_t analogChannel);
11831
11846 static IOPoint* CreateAnalogOutput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11847 // use RapidCodeNetworkNode*
11848 static IOPoint* CreateAnalogOutput(IO* io, int32_t analogChannel);
11849
11851
11855
11858 virtual uint64_t AddressGet() PURE_VIRTUAL;
11859
11862 virtual int32_t MaskGet() PURE_VIRTUAL;
11863
11866 virtual bool IsDigital() PURE_VIRTUAL;
11867
11868
11871 virtual bool IsOutput() PURE_VIRTUAL;
11872
11876
11880 virtual bool Get() PURE_VIRTUAL;
11881
11888 virtual void Set(bool state) PURE_VIRTUAL;
11889
11893
11897 virtual double ValueGet() PURE_VIRTUAL;
11898
11902 virtual void ValueSet(double valueDouble) PURE_VIRTUAL;
11903};
11904
11908class RSI_API RTOS {
11909
11910public:
11911#if defined(_WIN32)
11916
11920
11925 static INtimeStatus INtimeStatusGet(const char* const nodeName);
11926
11930
11935 static INtimeStatus INtimeStart(const char* const nodeName);
11936
11940
11945 static INtimeStatus INtimeStop(const char* const nodeName);
11946
11950
11955 static INtimeStatus INtimeRestart(const char* const nodeName);
11956
11959 static const char* const INtimeCatalogRMPGet();
11960
11963 static const char* const INtimeCatalogRMPNetworkGet();
11964
11967 static uint32_t INtimeNodeCountGet();
11968
11972 static const char* const INtimeNodeNameGet(uint32_t nodeNumber);
11973
11977 static bool INtimeNodeIsLocal(uint32_t nodeNumber);
11979#endif // _WIN32
11980};
11981
11983class RSI_API Trace
11984{
11985public:
11990
12003 static void MaskSet(RSITrace mask);
12004
12020 static void MaskOnSet(RSITrace maskOn);
12021
12022
12042 static bool MaskOnGet(RSITrace maskOn);
12043
12059 static void MaskOffSet(RSITrace maskOff);
12060
12073 static void MaskClear();
12074
12089 static int32_t FileSet(const char* const fileName);
12090
12103 static void FileClose();
12104
12119 static void InjectMessage(RSITrace traceLevel, const char* const message);
12120
12122};
12123
12125
12127
12131class RSI_API IO : public virtual RapidCodeObject {
12132public:
12133
12134 friend class MotionController;
12135
12140
12142 RapidCodeNetworkNode* NetworkNode;
12144 MotionController* rsiControl;
12145
12147
12152
12153
12186 virtual bool IOExists() PURE_VIRTUAL;
12187
12204 virtual int32_t NumberGet() PURE_VIRTUAL;
12206
12211
12212
12213
12243 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
12244
12277 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
12278
12309 virtual void DigitalOutSet(int32_t digitalOutNumber, bool outValue) PURE_VIRTUAL;
12310
12333 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
12334
12366 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
12367
12399 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
12401
12411 virtual const char* const UserLabelGet() PURE_VIRTUAL;
12412
12419 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
12420};
12421
12422#if defined(__cplusplus)
12423}
12424#endif
12425
12426template<typename ContainerClass>
12427class RSI_API RapidVectorIterator
12428{
12429public:
12431 typedef typename ContainerClass::ValueType ValueType;
12432
12434 typedef typename ContainerClass::PointerType PointerType;
12435
12438 ValueType& operator*();
12439
12442 const ValueType& operator*() const;
12443
12446 RapidVectorIterator& operator++();
12447
12450 RapidVectorIterator operator++(int);
12451
12454 bool operator==(const RapidVectorIterator&) const;
12455
12458 bool operator!=(const RapidVectorIterator&) const;
12459
12461 RapidVectorIterator(PointerType pointerArgument, PointerType startArgument, const size_t containerSize);
12462
12464 RapidVectorIterator(const RapidVectorIterator&) = default;
12465
12467 RapidVectorIterator& operator=(const RapidVectorIterator&) = default;
12468
12470 RapidVectorIterator(RapidVectorIterator&&) noexcept = default;
12471
12473 RapidVectorIterator& operator=(RapidVectorIterator&&) noexcept = default;
12474private:
12475 PointerType pointer;
12476 PointerType start, end;
12477 void VerifyPointer() const;
12478};
12479
12480// Forward declaration of the RapidVectorImplementation class.
12481template<typename Type>
12482class RapidVectorImplementation;
12483
12486
12499template<typename Type>
12500class RSI_API RapidVector
12501{
12502private:
12503 // The pointer to the implementation.
12504 RapidVectorImplementation<Type>* pImpl;
12505public:
12509 Type& operator[](const size_t index);
12510
12514 const Type& operator[](const size_t index) const;
12515
12519 Type& At(const size_t index);
12520
12524 const Type& At(const size_t index) const;
12525
12528 void PushBack(const Type& element);
12529
12532 void PushBack(Type&& element);
12533
12536 const size_t Size() const;
12537
12539 void Clear();
12540
12542 void PopBack();
12543
12546 Type& Front();
12547
12550 const Type& Front() const;
12551
12554 Type& Back();
12555
12558 const Type& Back() const;
12559
12562 void Reserve(const size_t capacity);
12563
12566
12568#if defined(SWIG) && defined(__linux__)
12569 // SWIG 4.3.0 on Linux cannot parse the complex SFINAE template syntax
12570 // This constructor is ignored via %ignore in the .i files anyway
12571 explicit RapidVector(const size_t size);
12572#elif defined(_WIN32)
12573 template<typename = typename std::enable_if_t<std::is_default_constructible_v<Type>>>
12574 explicit RapidVector(const size_t size);
12575#else
12576 template<typename UType = Type, typename Enable = typename std::enable_if<std::is_default_constructible<UType>::value>::type>
12577 explicit RapidVector(const size_t size);
12578#endif
12579
12581 RapidVector(RapidVectorImplementation<Type>*);
12582
12585
12588
12591
12593 RapidVector(RapidVector&& other) noexcept;
12594
12597
12598 typedef Type* PointerType;
12599 typedef Type ValueType;
12600
12602 typedef RapidVectorIterator<RapidVector> Iterator;
12603
12606 Iterator begin() noexcept;
12607
12610 Iterator begin() const noexcept;
12611
12615 Iterator end() const noexcept;
12616};
12617
12619
12620} // namespace RapidCode
12621
12622} // namespace RSI
12623
12624#endif // _RSI_H
uint32_t NetworkIndexGet(RSINetworkIndexType indexType)
Get the PDO array index for an axis signal mapping.
void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue)
Set a filter coefficient (ex: Kp, Ki, Kd).
void HardwareNegLimitActionSet(RSIAction action)
Set the action that will occur when the Hardware Negative Limit Event triggers.
void ErrorLimitDurationSet(double seconds)
Sets the duration required before the Position Error Limit event triggers.
double PositionErrorGet()
Get the current position error.
void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel)
Set the max travel used in a specific Homing Stage.
bool HomeLimitGet()
Get the current state of the Home limit.
uint64_t AddressGet(RSIAxisAddressType addressType)
Get the an address for some location on the Axis.
RSIMotorFeedbackFault EncoderFaultTriggerGet()
Get the encoders which are used to generate encoder faults.
RSIAction AmpFaultActionGet()
Get the Amp Fault action.
int32_t FrameBufferSizeGet()
double SettlingTimeGet()
Get the Settling time.
void TriggeredModifyDecelerationSet(double decel)
Set the deceleration rate for an Triggered Modify Event.
void HomeSlowVelocitySet(double velocity)
Set the slow home velocity.
double CommandPositionGet()
Get the current command position.
double BrakeApplyDelayGet()
Get the delay time for the brake to be applied.
uint32_t DigitalOutputsGet()
Get all 32 digital output bits at once for this axis.
void HardwareNegLimitDurationSet(double seconds)
Set the duration required before the Hardware Negative Limit event triggers.
RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse)
Determine how the stepper pulse outputs are configured.
void MoveSCurve(double position)
MoveSCurve with the Axis defaults trajectory values from DefaultVelocitySet, DefaultAccelerationSet,...
bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber)
Determine if a particular General I/O bit exists for a motor.
void SoftwarePosLimitTriggerValueSet(double triggerValue)
Set the Software Positive Position limit.
double AnalogInGet(int32_t channel)
Get the value of an analog input.
RSIAxisMasterType GearingSourceGet()
Get the Source used to slave to the Master Axis.
void CommandPositionSet(double position)
Sets the value of the command and actual positions of an axis.
void HardwarePosLimitActionSet(RSIAction action)
Set the action that will occur when the Hardware Positive Limit Event triggers.
const char *const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber)
Get the name of a Motor I/O bit.
RSIAction HomeBehaviorGet()
Get the Action used during Master based Homing.
void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address)
Configure an axis for dual loop feedback.
RSIMotorType MotorTypeGet()
Get the motor type.
void AmpDisableActionSet(RSIMotorDisableAction action)
Set the Amp Disable action.
double SoftwareNegLimitTriggerValueGet()
Get the Software Negative Position limit.
void PositionToleranceCoarseSet(double tolerance)
Set the Coarse Position Tolerance for Axis settling.
void OriginPositionSet(double position)
Set the origin position.
double UserUnitsGet()
Get the number of counts per User Unit.
void BacklashRateSet(double rate)
Sets the rate at which Backlash is applied.
bool AmpEnableGet()
Get the state of the Amp Enable Output.
void SettleOnStopSet(bool state)
Set the Stop Event settling configuration.
int32_t DriveIndexGet()
Get the drive index, relative to the Network Node (multi-axis drives).
void HomeBehaviorSet(RSIAction behavior)
Set the Action used for Master based homing.
bool HomeSwitchGet()
Get the current state of the Home switch input.
void MoveRelative(double relativePosition)
double PositionToleranceFineGet()
Get the Fine Position Tolerance for axis settling.
double EncoderFaultDurationGet()
Get the duration required before the Encoder Fault Limit event triggers.
bool SettleOnEStopCmdEqActGet()
Get the E-Stop Event settling configuration when E-Stop is configured for (Command = Actual).
void Home(bool moveToZero=true)
Execute the homing routine.
RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber)
Get the type mask for a Motor I/O bit.
RSIAction HardwarePosLimitActionGet()
Get the action that will occur when the Hardware Positive Limit Event triggers.
int32_t FilterGainTableSizeGet()
Gets the size of gain tables.
void OperationModeSet(RSIOperationMode mode)
Set the axis operation mode.
void CommandPositionDirectSet(double position)
directly sets the value of the command position of an axis
RSIHomeMethod HomeMethodGet()
Get the method to be used for homing.
int32_t MotorFaultMaskGet()
Get the Motor Fault Mask.
void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double *const masterDistances, const double *const slavePositions, int32_t pointCount)
Enable this Axis to be linear follower (slave) using an electronic cam.
void BrakeModeSet(RSIMotorBrakeMode mode)
Set the brake mode.
void HomeVelocitySet(double velocity)
Set the home velocity.
bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber)
Read a digital input.
double CompensationPositionGet()
Get the compensator position.
double TriggeredModifyDecelerationGet()
Get the deceleration rate for an Triggered Modify Event.
void BacklashHysteresisLimitSet(double hysteresisLimit)
Brief.
void MoveVelocitySCurve(double velocity, double accel, double jerkPct)
Command a constant velocity move (jog) with non-constant acceleration.
void FilterAlgorithmSet(RSIFilterAlgorithm algorithm)
Set the algorithm type for an axis.
int32_t HomeLimitCustomConfigBitIndexGet()
void HardwarePosLimitTriggerStateSet(bool state)
sets the trigger state.
const char *const UserLabelGet()
Get the axis User defined Label.
void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber)
Set the master axis for post-trajectory gearing.
NetworkNode * NetworkNode
Gets the associated NetworkNode object.
Definition rsi.h:5993
int32_t FilterGainTableGet()
Gets which gain table is currently in use by the axis.
void SoftwareNegLimitActionSet(RSIAction action)
Set the action that will occur when the Software Negative Limit Event triggers.
double BacklashHysteresisLimitGet()
Get the backlash hysteresis limit.
double ActualVelocityGet()
Get the current actual velocity.
double HomeAccelerationGet(RSIHomeStage homeStage=RSIHomeStage::RSIHomeStageSTAGE_ONE)
Get the deceleration used for homing.
bool PositiveLimitGet()
Get the state of the Hardware Positive Limit input.
void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq)
Use a High Pass Post Filter.
void UserUnitsSet(double countsPerUserUnit)
Sets the number of counts per User Unit.
double OriginPositionGet()
Get the origin position.
void EStopJerkPercentSet(double jerkPct)
Set the jerk percent for an E-Stop, Modify Event.
void AmpFaultActionSet(RSIAction action)
Set the Amp Fault action.
void EncoderFaultActionSet(RSIAction action)
Set the action that will occur when the Encoder Fault Limit Event triggers.
void UserLabelSet(const char *const userLabel)
Set the axis User defined Label.
void AmpFaultTriggerStateSet(bool state)
Set the trigger state of the Amp Fault input.
void FilterGainTableSet(int32_t gainTable)
Set the gain table to be used by an axis.
void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue)
Set a digital output bit.
void MoveTrapezoidal(double position)
Point-to-point trapezoidal move.
void HomeActionSet(RSIAction action)
Set the action that will occur when the Home Event triggers.
bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber)
Determine if a particular Dedicated output bit exists for a motor.
void ErrorLimitTriggerValueSet(double triggerValue)
Set the Position Error Limit trigger value.
bool StepperMotorLoopbackGet()
Determine if the stepper is open or closed loop.
void BrakeApplyDelaySet(double seconds)
Set the brake apply delay.
void MotionCamRepeatFromSet(int32_t repeatFrom)
Set the segment at which camming repeats.
RSIAction HomeActionGet()
Get the action that will occur when the Home LIMIT triggers.
void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo)
Use a Digital Biquad Post Filter.
void PositionToleranceFineSet(double tolerance)
Set the Fine Position Tolerance for Axis settling.
void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type)
Set the type for a Motor I/O bit.
double HomeJerkPercentGet(RSIHomeStage homeStage=RSIHomeStage::RSIHomeStageSTAGE_ONE)
Get the Jerk Percent used for homing.
void HomeTriggerStateSet(bool state)
Set the trigger state for the Home input.
uint32_t DedicatedOutputsGet()
Get all 32 dedicated output bits at once for this axis.
void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator)
Sets the ratio to scale Encoder counts.
void ErrorLimitActionSet(RSIAction action)
Set the action that will occur when the Error Limit Event triggers.
void GearingRatioChange(int32_t numerator, int32_t denominator)
Change the electronic gearing ratio.
bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber)
Get the state of digital output bit.
RSIHomeStage HomeStageGet()
Get the current Homing Stage.
static constexpr double AmpEnableAmpFaultTimeoutSecondsDefault
Default time an Axis waits before generating an AmpFault if the Axis does not enable after calling Am...
Definition rsi.h:5979
RSIMotorDisableAction AmpDisableActionGet()
Get the Amp Disable action.
void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel)
void MoveVelocity(double velocity)
double TargetPositionGet()
Get the target position.
double BacklashRateGet()
Gets the Backlash Rate which was set by the user.
double AmpFaultDurationGet()
Get the duration required before the Amp Fault event triggers.
double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable)
Get value for a filter coefficient (ex: Kp, Ki, Kd, etc).
double HardwareNegLimitDurationGet()
Get the duration required before the Hardware Negative Limit event triggers.
bool HardwarePosLimitTriggerStateGet()
trigger state return.
bool SettleOnStopGet()
Get the Stop Event settling configuration.
double SoftwarePosLimitTriggerValueGet()
Get the Software Positive Position limit.
void EncoderFaultDurationSet(double seconds)
Set the duration required before the Encoder Fault Limit event triggers.
double ErrorLimitTriggerValueGet()
Get the Position Error Limit trigger value.
void HomeDecelerationSet(double decel)
Set the decleration to be used for homing when using the switch is not detected before the HomeTravel...
void PostFilterLowPassSet(int32_t sectionNumber, double frequency)
Use a Low-Pass filter.
RSIAction SoftwareNegLimitActionGet()
Get the action that will occur when the Software Negative Limit Event triggers.
void HomeCancelSet(bool cancel)
Cancel Homing.
void PostTrajectoryGearingMultiplierSet(double multiplier)
Set the multiplier for post-trajectory gearing.
void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel)
double EStopJerkPercentGet()
Get the jerk percent for an E-Stop, Modify Event.
int32_t PostTrajectoryGearingMasterAxisGet()
Get the master axis number used for post-trajectory gearing.
void TriggeredModifyJerkPercentSet(double jerkPct)
Set the jerk percent for an Triggered Modify Event.
double CommandAccelGet()
Get the current commanded acceleration.
double HomeVelocityGet(RSIHomeStage homeStage=RSIHomeStage::RSIHomeStageSTAGE_ONE)
Get the home velocity.
void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne)
Use a Single Order Post Filter.
void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq)
Use a Lead Lag Post Filter.
void HardwarePosLimitDurationSet(double seconds)
Set the duration required before the Hardware Positive Limit event triggers.
void HomeStateSet(bool homed)
Set the home state.
bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber)
Determine if a particular Dedicated input bit exists for a motor.
void BacklashWidthSet(double width)
Sets the total range of the give in a system with Backlash.
double BacklashWidthGet()
Gets the Backlash Width which was set by the user.
RSIOperationMode OperationModeGet()
Get the operation mode.
void MotionCamMasterStartSet(Axis *master, double startPosition)
Set the position at which camming starts.
void FilterDualLoopSet(Axis *velocityAxis, RSIMotorFeedback velocityEncoder, bool enable)
Configure an axis for dual loop feedback.
void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel)
Point-to-point trapezoidal move.
bool SettleOnEStopGet()
Get the E-Stop Event settling configuration.
uint16_t MotionIdExecutingGet()
RSIAction EncoderFaultActionGet()
Get the action that will occur when the Encoder Fault Limit Event triggers.
void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder)
Set the encoders which are used to generate encoder faults.
void MoveTrapezoidal(double position, double vel, double accel, double decel)
Point-to-point trapezoidal move.
RSIFilterAlgorithm FilterAlgorithmGet()
Get the control algorithm type for an axis.
double CommandVelocityGet()
Get the current commanded velocity.
int32_t FramesToExecuteGet()
bool HomeTriggerStateGet()
Get the trigger state for the Home input.
uint64_t GearingMasterAddressGet()
Get the address of the gearing master.
void HomeAccelerationSet(double accel)
Set the deceleration used for homing.
RSIDataType AddressDataTypeGet(RSIAxisAddressType type)
Get the data type for an address the Axis.
void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type)
Set how the stepper pulse outputs are configured.
void VelocityToleranceSet(double tolerance)
Set the Velocity Tolerance used for settling.
void EncoderCountSet(int32_t count)
void StepperMotorLoopbackSet(bool loopback)
Configure the stepper to be open or closed loop.
void CompensationPositionSet(double position)
Set the compensator position.
double BacklashValueGet()
Gets the current backlash compensation value.
double PostTrajectoryGearingScaledOffsetGet()
Get the current scaled position offset from post-trajectory gearing.
double PositionToleranceCoarseGet()
Get the Coarse Position Tolerance for axis settling.
double HomeDecelerationGet(RSIHomeStage homeStage=RSIHomeStage::RSIHomeStageSTAGE_ONE)
Get the decleration to be used for homing when using the switch is not detected before the HomeTravel...
double EStopDecelerationGet()
Get the deceleration rate for an E-Stop, Modify Event.
bool AmpFaultTriggerStateGet()
Get the Amp Fault trigger state.
double EncoderPositionGet(RSIMotorFeedback encoder)
Get the raw encoder position.
void MotorFaultMaskSet(int32_t faultMask)
Set the Motor Fault Mask.
double VelocityToleranceGet()
Get the velocity tolerance used for settling.
void HomeDurationSet(double seconds)
Set the duration required before the Home event triggers.
void HomeMethodSet(RSIHomeMethod method)
Set the method to be used for homing.
void EStopDecelerationSet(double decel)
Set the deceleration rate for an E-Stop, Modify Event.
double TriggeredModifyJerkPercentGet()
Get the jerk percent for an Triggered Modify Event.
void MoveCamCubic(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double *const masterDistances, const double *const slavePositions, const double *const gearRatios, int32_t pointCount)
Enable this Axis to be cubic follower (slave) using an electronic cam.
void PostFilterClear(int32_t sectionNumber)
Remove any Post Filters in section Number.
double HomeDurationGet()
Get the duration required before the Home event triggers.
bool NegativeLimitGet()
Get the state of the Hardware Negative Limit input.
bool HomeStateGet()
Get the home state.
void SettleOnEStopSet(bool state)
Set the E-Stop Event settling configuration.
void MotorTypeSet(RSIMotorType type)
Set the motor type.
void SoftwareNegLimitTriggerValueSet(double triggerValue)
Set the Software Negative Position limit.
void GearingDisable()
Disable the electronic gearing.
void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex)
void PositionSet(double position)
Set the Command and Actual positions.
double BrakeReleaseDelayGet()
Get the brake release delay time.
uint32_t DedicatedInputsGet()
Get all 32 dedicated input bits at once for this axis.
bool AmpFaultGet()
Get the current state of the Amp Fault input.
void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex)
Override the PDO array index for an axis signal mapping.
int32_t GearingMasterAxisNumberGet()
Get a Slave's Master Axis Number.
void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct)
Command a relative point-to-point S-Curve motion.
bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber)
Read a digital input.
RSIMotorBrakeMode BrakeModeGet()
Get the brake mode.
bool HardwareNegLimitTriggerStateGet()
Trigger state return.
void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth)
Use a Notch Post Filter.
double ActualPositionGet()
Get the current actual position.
uint16_t MotionElementIdExecutingGet()
void FrameBufferSizeSet(int32_t frameSize)
void FilterLowPassSet(double frequency)
Use a Low-Pass filter.
double MotionCamMasterStartGet(Axis *master)
Gets the position on the master that will start the cam when exceeded.
RSIAction ErrorLimitActionGet()
Get the action that will occur when the Position Error Limit Event triggers.
void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator)
Enable this Axis to be follower (slave) using electronic gearing.
void HomeOffsetSet(double offset)
Sets the user coordinate value assigned to the detected homing reference point.
double HardwarePosLimitDurationGet()
Get the duration required before the Hardware Positive Limit event triggers.
void AmpFaultDurationSet(double seconds)
Set the duration required before the Amp Fault event triggers.
double HomeSlowVelocityGet()
Get the slow home velocity.
void HomeJerkPercentSet(double percent)
Set the Jerk Percent used for homing.
RSIAction SoftwarePosLimitActionGet()
Get the action that will occur when the Software Positive Limit Event triggers.
void PostFilterUnityGainSet(int32_t sectionNumber)
Use a Unity Gain Post Filter.
double HomeOffsetGet()
Get the home offset.
void MotionCamRepeatStop()
Stops a Repeating Cam.
double ErrorLimitDurationGet()
Get the duration required before the Position Error Limit event triggers.
double PostTrajectoryGearingMultiplierGet()
Get the multiplier for post-trajectory gearing.
void PostTrajectoryGearingEnableSet(bool enable)
Enable or disable post-trajectory gearing for this axis.
void MoveVelocity(double velocity, double accel)
Command a constant velocity move (jog).
void ActualPositionSet(double position)
Set the actual position.
void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain)
Use a Resonator Post Filter.
bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber)
Get the state of dedicated output bit.
bool PostTrajectoryGearingEnableGet()
Get the enable state of post-trajectory gearing.
double FilterLowPassGet()
Get the value of the Low-Pass filter.
RSIAction HardwareNegLimitActionGet()
Get the action that will occur when the Hardware Negative Limit Event triggers.
void SettleOnEStopCmdEqActSet(bool state)
Set the settling configuration for E-Stop events (when configured for Command = Actual).
void BrakeReleaseDelaySet(double seconds)
Set the Brake Release Delay.
void HardwareNegLimitTriggerStateSet(bool state)
Sets the trigger state.
uint32_t DigitalInputsGet()
Get all 32 digital input bits at once for this axis.
int32_t MotionCamRepeatFromGet()
Get the segment at which camming repeats.
void SettlingTimeSet(double time)
Set the settling time.
void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct)
void SoftwarePosLimitActionSet(RSIAction action)
Set the action that will occur when the Software Positive Limit Event triggers.
Represents a single axis of motion control. This class provides an interface for commanding motion,...
Definition rsi.h:5963
void DefaultVelocitySet(double velocity)
Set the default velocity in UserUnits.
void EncoderRatioPrimarySet(char *numeratorCommaDenominator)
Set the primary feedback encoder ratio as text. "1.0 ,2.0".
bool LimitTriggerStateGet(RSIEventType limit)
Get the trigger state for any type of limit.
void NodeFailureActionSet(RSIAction action)
Set the action for a node failure.
double DefaultDecelerationGet()
Get the default deceleration in UserUnits.
uint64_t HomeLimitCustomConfigAddressGet()
Get the host address of the custom home input configuration.
static constexpr uint32_t NetworkIndexInvalid
Returned by NetworkIndexGet() when the index is invalid or nonexistent for this Axis.
Definition rsi.h:5976
void EncoderRatioSecondarySet(char *numeratorCommaDenominator)
Set the secondary feedback encoder ratio as text. "1.0 ,2.0".
double CommandJerkGet()
Get the current commanded jerk value (custom firmware required).
double FilterOutputGet(void)
Get the output of a demand filter, range is +/- 100.0.
void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address)
Set the pointer (host address) for the motor feedback.
void DefaultAccelerationSet(double acceleration)
Set the default acceleration in UserUnits.
bool IsTuneable()
Is an Axis tunable? Returns false if Axis is in position mode, otherwise true.
double DefaultPosition2Get()
Get the default Position 2 value in UserUnits (used by RapidSetup).
void LimitTriggerStateSet(RSIEventType limit, bool triggerState)
Set the trigger state for any type of limit.
double DefaultJerkPercentGet()
Get the default jerk percent.
double DefaultAccelerationGet()
Get the default acceleration in UserUnits.
const char *const EncoderRatioSecondaryGet()
Get the secondary feedback encoder ratio as text.
double DefaultVelocityGet()
Get the default velocity in UserUnits.
int32_t GearingDenominatorGet()
Get the denominator of the gearing ratio.
void FilterGainSchedulingSet(bool enable)
Enable or disable automatic gain scheduling.
double UserUnitsToCounts(double userUnits)
Convert from UserUnits to raw feedback counts.
const char *const PostFilterInfoGet()
Get a text description of the current post filters.
void GantryTypeSet(RSIAxisGantryType type)
Set the gantry type.
uint16_t StatusWordGet()
Get the DS402 status word.
double LimitTriggerValueGet(RSIEventType limit)
Get the trigger value for any type of limit.
double DefaultPosition1Get()
Get the default Position 1 value in UserUnits (used by RapidSetup).
int32_t ClosedLoopStepperVersionGet()
Unsupported.
int32_t GearingNumeratorGet()
Get the numerator of the gearing ratio.
uint64_t EncoderPointerGet(RSIMotorFeedback encoder)
Get the pointer (host address) for the motor feedback.
const char *const EncoderRatioPrimaryGet()
Get the primary feedback encoder ratio as text.
double LimitDurationGet(RSIEventType limit)
Get the duration for any type of limit.
void MotionFinalVelocitySet(double finalVelocity)
Set the final velocity of a motion, when FINAL_VEL motion attribute is used.
uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input)
Get the pointer (host address) for the axis feedback.
bool FaultMaskBitGet(RSIMotorFaultMask bitMask)
Unsupported Function. Likely to be removed in the future.
void HomeLimitCustomConfigReset()
Remove any custom home input configuration and reset to use the Axis' dedicated home input bit.
void DefaultPosition1Set(double position1)
Set the default Position 1 value in UserUnits (used by RapidSetup).
void DefaultDecelerationSet(double deceleration)
Set the default deceleration in UserUnits.
double DefaultRelativeIncrementGet()
Get the default relative increment value in UserUnits (used by RapidSetup).
int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder)
Get the encoder ration denominator.
void DefaultRelativeIncrementSet(double relativeIncrement)
Set the default relative value in UserUnits (used by RapidSetup).
double CountsToUserUnits(double counts)
Convert from raw feedback counts to UserUnits.
void DefaultPosition2Set(double position2)
Set the default Position 2 value in UserUnits (used by RapidSetup).
int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder)
Get the encoder ratio numerator.
void ClosedLoopStepperSet(bool enable)
Unsupported.
RSIAction LimitActionGet(RSIEventType limit)
Get the action for any type of limit.
void LimitDurationSet(RSIEventType limit, double seconds)
Set the duration for any type of limit.
void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address)
Set the pointer (host address) for the axis feedback.
double MotionFinalVelocityGet()
Get final velocity of a motion, when FINAL_VEL motion attribute is used.
RSIAxisGantryType GantryTypeGet()
Get the gantry type.
uint64_t FeedbackPointerGet(RSIAxisPositionInput input)
Get the pointer (host address) for the axis feedback.
void LimitActionSet(RSIEventType limit, RSIAction action)
Set the action for any type of limit.
RSIAction NodeFailureActionGet()
Get the action for a node failure.
bool GearingEnableGet()
Get the state of gearing feature. If true, this Axis is a geared slave.
void DefaultJerkPercentSet(double jerkPercent)
Set the default jerk percent.
void LimitTriggerValueSet(RSIEventType limit, double triggerValue)
Set the trigger value for any type of limit.
int32_t EncoderCountGet()
Get the number of encoders processed in firmware by the motor object. Valid values: 0,...
bool FilterGainSchedulingGet()
Get the status of automatic gain scheduling.
bool IOExists()
IOExists validates your IO object is an IO Node.
bool DigitalInGet(int32_t digitalInNumber)
Get the state of a digital input bit.
const char *const UserLabelGet()
Get the IO User defined Label.
void UserLabelSet(const char *const userLabel)
Set the IO User defined Label.
int32_t AnalogInGet(int32_t analogChannel)
Get the value of an analog input.
bool DigitalOutGet(int32_t digitalOutNumber)
Get the state of a Digital Output bit.
int32_t NumberGet()
Get the zero-based IO number.
int32_t AnalogOutGet(int32_t analogChannel)
Get the value of an analog output.
void DigitalOutSet(int32_t digitalOutNumber, bool outValue)
Set the state of a digital output bit.
void AnalogOutSet(int32_t analogChannel, int32_t analogValue)
Set the value of an analog output.
The IO object provides an interface to the inputs and outputs of a network node.
Definition rsi.h:12131
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition rsi.h:12142
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:12144
uint64_t AddressGet()
Get the Host Address for the I/O point.
static IOPoint * CreateDigitalInput(Axis *axis, RSIMotorGeneralIo motorGeneralIoNumber)
Create a Digital Input from an Axis' general purpose inputs.
void ValueSet(double valueDouble)
Set the value for an Analog Output.
double ValueGet()
Get the value of an Analog Input or Output.
bool IsOutput()
Determine if an I/O point is an output.
static IOPoint * CreateDigitalInput(NetworkNode *networkNode, int32_t bitNumber)
Create a Digital Input from a RapidCodeNetworkNode.
static IOPoint * CreateDigitalOutput(MotionController *controller, uint64_t memoryAddress, int32_t bitNumber)
Create a Digital Output from a network PDO.
void Set(bool state)
Set the state of a Digital Output.
static IOPoint * CreateDigitalOutput(Axis *axis, RSIMotorGeneralIo motorGeneralIoNumber)
Create a Digital Output from an Axis' general purpose inputs.
static IOPoint * CreateAnalogInput(NetworkNode *networkNode, int32_t analogChannel)
Create an Analog Input from a RapidCodeNetworkNode.
static IOPoint * CreateAnalogOutput(NetworkNode *networkNode, int32_t analogChannel)
Create an Analog Output from a RapidCodeNetworkNode.
static IOPoint * CreateDigitalInput(Axis *axis, RSIMotorDedicatedIn motorDedicatedInNumber)
Create a Digital Input from an Axis' Dedicated Input bits.
static IOPoint * CreateDigitalOutput(MotionController *controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type)
Create a Digital Output from a network PDO.
bool IsDigital()
Determine if an I/O point is Digital or Analog.
static IOPoint * CreateDigitalInput(MotionController *controller, uint64_t memoryAddress, int32_t bitNumber)
Create a Digital Output from a network PDO.
static IOPoint * CreateDigitalInput(MotionController *controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type)
Create a Digital Output from a network PDO.
static IOPoint * CreateDigitalOutput(Axis *axis, RSIMotorDedicatedOut motorDedicatedOutNumber)
Create a Digital Output from an Axis' Dedicated Output bits.
static IOPoint * CreateDigitalOutput(NetworkNode *networkNode, int32_t bitNumber)
Create a Digital Output from a RapidCodeNetworkNode.
bool Get()
Get the state of Digital Input or Output.
int32_t MaskGet()
Get the bit mask for the I/O point.
Represents one specific point: Digital Output, Digital Input, Analog Output, or Analog Input....
Definition rsi.h:11639
Axis * AxisGet(int32_t axisNumber)
AxisGet returns a pointer to an Axis object and initializes its internals.
NetworkNode * NetworkNodeGet(int32_t nodeNumber)
NetworkNodeGet returns a pointer to a RapidCodeNetworkNode object using its node number and initializ...
void UserLimitDisable(int32_t number)
Disable the processing of a User Limit.
void InterruptWake()
Wake all threads waiting for a controller interrupt.
int32_t RecorderRecordCountGet()
Get the number of records that are stored and ready for reading on Recorder 0.
void UserLimitReset(int32_t number)
Clear the latched status of a User Limit.
int32_t UserLimitCountGet()
Get the number of UserLimits processing in the firmware.
uint64_t NetworkOutputValueGet(int32_t index)
Gets the value sent out over EtherCAT.
void RecorderStart()
Start recording data.
void RecorderCircularBufferSet(bool enable)
Configure recorder as circular buffer (or not) on Recorder 0.
int32_t RecorderBufferSizeGet(int32_t recorderNumber)
Get Frame buffer size for the Recorder.
void UserVersionSet(int32_t version)
Sets a customer designed Version for the application.
void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue)
Sets a PDO output directly.
RSINetworkState NetworkStateGet()
void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize)
Set buffer size for the Recorder.
static constexpr int32_t AxisFrameBufferSizeDefault
The default value of the AxisFrameBufferSize, also the minimum allowable value.
Definition rsi.h:850
void MathBlockCountSet(int32_t mathBlockCount)
Set the number of processed MathBlocks in the MotionController.
bool RecorderTriggerOnMotionGet(int32_t recorderNumber)
Check to see if the Recorder is set to trigger on motion.
void RecorderRecordDataRetrieve()
Retrieve one record of recorded data on Recorder 0.
RSINetworkEniResult NetworkEniGenerate()
Generate the network ENI file, EtherCAT.xml.
void SampleRateSet(double sampleRate)
Configure the RMP firmware control loop frequency.
const char *const FirmwareVersionGet()
Get the firmware version.
void RecorderDataCountSet(int32_t count)
Set the number of data values to be recorded on Recorder 0.
void Reset()
Reset the controller which stops and restarts the RMP firmware.
uint64_t FirmwareAddressGet(uint64_t hostAddress)
Convert a host controller address to a firmware address.
int32_t NetworkInputBitOffsetGet(int32_t index)
void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion)
Configure the Recorder 0 to trigger on Axis motion.
void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32)
Set the conditions for a User Limit with a 32-bit integer trigger value.
void SyncInterruptHostProcessStatusClear()
Clear the Host Process status bit.
void MotionCountSet(int32_t motionCount)
Set the number of processed Motion Supervisors in the controller.
void MemorySet(uint64_t address, int32_t data)
Write a value to controller memory.
uint64_t NetworkOutputOverrideValueGet(int32_t index)
Sets a PDO output directly.
static MotionController * Get()
Get an already running RMP EtherCAT controller.
static MotionController * Create(CreationParameters *creationParameters)
Initialize and start the RMP EtherCAT controller.
int32_t CompensatorCountGet()
Get the number of Compensators available in the firmware.
void NetworkOutputOverrideSet(int32_t index, bool outputOverride)
Set NetworkOutputValue to override RMP cyclic value.
const char *const NetworkOutputDataTypeNameGet(int32_t index)
void MemoryDoubleSet(uint64_t address, double dataDouble)
Write a 64-bit double value to controller memory.
const int32_t *const RecorderRecordDataGet()
Get one record of recorded data on Recorder 0.
void ServiceThreadEnableSet(bool enable)
Enable or disable the service thread.
RSIDataType AddressDataTypeGet(RSIControllerAddressType type)
Get the data type for an address on the MotionController.
uint64_t AddressGet(RSIControllerAddressType type)
Get the an address for some location on the MotionController.
void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled)
Configure a User Limit Output block.
int32_t RecorderRecordMaxCountGet()
Get the maximum number of records the recorder can store on Recorder 0.
int32_t CompensatorPointCountGet(int32_t compensatorNumber)
Get the number of points for use with a Compensator.
int32_t NetworkNodeCountGet()
Get the number of nodes discovered on the EtherCAT network.
void CompensatorEnable(int32_t compensatorNumber)
Enables the compensator only if it will cause no errors.
bool UserLimitEnableGet(int32_t number)
Get the enabled state of a User Limit.
void SyncInterruptEnableSet(bool enable)
Configure Sync (periodic) interrupts for the controller.
void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount)
Set the number of points for use with a Compensator.
uint64_t NetworkInputValueGet(int32_t index)
static MotionController * Create()
Initialize and start the RMP EtherCAT controller.
RSIProcessorType ProcessorTypeGet()
Get the processor type.
uint64_t AddressFromStringGet(const char *const addressName)
Get a controller memory address from string.
void CompensatorTableGet(int32_t compensatorNumber, double *table)
Read the table for a configured compensator.
bool IsLicensed()
Check to see if this MotionController is licensed.
uint64_t NetworkOutputIntendedValueGet(int32_t index)
Gets the value set by the cyclic RMP processes.
uint64_t NetworkOutputSentValueGet(int32_t index)
Gets the value sent out over EtherCAT.
static MotionController * CreateFromFile(const char *const fileName)
Create a MotionController from a memory-dumped file.
void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t *const addresses, int32_t addressCount)
Setup multiple addresses to record at once.
void SyncInterruptHostProcessFlagSet(bool hostProcessFlag)
Set the Host Process flag.
double CompensatorPositionGet(int32_t compensatorNumber)
Get the compensator position.
void NetworkShutdown()
Shutdown the EtherCAT network.
int32_t MemoryGet(uint64_t address)
Read controller memory.
uint64_t NetworkOutputAddressGet(int32_t index)
Get the host address for a Network Output.
void SampleWait(uint32_t samples)
Wait for controller firmware to execute samples.
void SyncInterruptPeriodSet(uint32_t samples)
Configure the period for the Sync Interrupt on the controller.
void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address)
Set the User Data address based on a User Limit trigger.
void MemoryToFile(const char *const fileName)
Saves an RMP firmware memory dump which can be compared with others.
int32_t BackgroundCycleCounterGet()
Get the current value of the controller's processor's background cycle counter.
int32_t RecorderRecordDataValueGet(int32_t index)
Get one value from a retrieved record on Recorder 0.
void NetworkStart()
Start the network, doing both a discovery followed by starting to OPERATIONAL state.
void NetworkOutputValueSet(int32_t index, uint64_t outputValue)
Sets a PDO output directly.
void MotionHoldGateSet(int32_t gateNumber, bool hold)
Set the Motion Hold Gate.
void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot)
Configure a User Limit.
const char *const NetworkEniGenerateOutputGet()
Retrieve the text output from the previous NetworkEniGenerate() call.
void CompensatorTableSet(int32_t compensatorNumber, const double *const table)
Override the table for a configured compensator.
static constexpr double SampleRateDefault
Default RMP sample rate in hertz.
Definition rsi.h:839
void MemoryBlockSet(uint64_t address, const void *const dataStart, int32_t size)
Set controller memory.
uint64_t HostAddressGet(uint64_t firmwareAddress)
Convert a firmware address to a host controller address.
uint64_t NetworkInputAddressGet(int32_t index)
Get the host address for a PDO input.
void RecorderStop()
Stop recording data on Recorder 0.
const char *const NetworkLogMessageGet(int32_t messageIndex)
static MotionController * CreateFromSoftware(const char *const RtaPath, const char *const NodeName)
Initialize and start the RMP EtherCAT controller.
int32_t MathBlockCountGet()
Get the number of MathBlocks processing in the firmware.
static MotionController * CreateFromSoftware()
Initialize and start the RMP EtherCAT controller.
int32_t SyncInterruptHostProcessTimeGet()
Get the total number of microseconds availble for host processing.
void Delete(void)
Delete the MotionController and all its objects.
int32_t FirmwareOptionGet()
Get the firmware option number.
int32_t SampleCounterGet()
Get the current value of the controller's processor's sample counter.
double ProcessorUsageGet()
Get the processor usage percent.
int32_t AxisFrameBufferSizeGet(int32_t axisNumber)
Get Frame buffer size for the axis.
int32_t UserVersionGet()
Get a customer designated Version for the application.
void CompensatorDisable(int32_t compensatorNumber, bool force=false)
Disable a compensator with the option to force the action.
static MotionController * CreateFromSoftware(const char *const RtaPath)
Initialize and start the RMP EtherCAT controller.
bool SyncInterruptHostProcessStatusBitGet()
See if the host was processing too int32_t on previous Sync Interrupt.
IO * IOGet(int32_t nodeNumber)
IOGet returns a pointer to an IO object using its node number and initializes its internals.
void RecorderReset()
Reset the recorder on Recorder 0.
uint32_t FirmwareTimingDeltaGet()
Get the most recent time (in microseconds) between samples.
int32_t RecorderCountGet()
Get the number of Recorder available in the firmware.
CreationParameters CreationParametersGet()
Get the CreationParameters used to create this MotionController.
static MotionController * Get(int32_t controllerIndex)
Get an already running RMP EtherCAT controller.
void RecorderDataAddressSet(int32_t index, uint64_t address)
Setup the addresses to be recorded on Recorder 0.
void AxisFrameBufferSizeSet(int32_t axisNumber, int32_t frameBufferSize)
Set Frame buffer size for the axis.
int32_t UserLimitCountMax()
Get the total number of User Limits available.
void Refresh()
Refresh / reinitialize the motion controller. Required after changing dynamic memory object counts.
void Shutdown()
Shutdown the controller.
bool UserLimitStateGet(int32_t number)
Get the state of a User Limit.
int32_t CompensatorDimensionGet(int32_t compensatorNumber)
Get the dimension of the compensator.
void MemoryBlockGet(uint64_t address, void *dataStart, int32_t size)
Read controller memory.
MultiAxis * MultiAxisGet(int32_t motionSupervisorNumber)
MultiAxisGet returns a pointer to a MultiAxis object and initializes its internals.
int32_t AxisCountGet()
Get the number of axes processing.
void RecorderPeriodSet(uint32_t samples)
Set the number of samples between records on Recorder 0.
int32_t MotionCountGet()
Get the number of Motion Supervisors available in the firmware.
void RecorderCountSet(int32_t recorderCount)
Set the number of processed Recorders in the controller.
NetworkStatus NetworkStatusGet()
Get the EtherCAT network status.
MultiAxis * LoadExistingMultiAxis(int32_t motionSupervisorNumber)
Get/Create a MultiAxis object from one that already exists (previously setup) on the RMP motion contr...
double MemoryDoubleGet(uint64_t address)
Read a 64-bit double value from controller memory.
void CompensatorCountSet(int32_t compensatorCount)
Set the number of Compensators available in the firmware.
bool MotionHoldGateGet(int32_t gateNumber)
Get the state of the hold gate.
bool RecorderEnabledGet()
Determine if the recorder is recording on Recorder 0.
int32_t SyncInterruptWait()
Suspend the current thread until an interrupt arrives from the controller.
bool NetworkOutputOverrideGet(int32_t index)
Gets if the NetworkOutputValue or the RMP cyclic value is exchanged over EtherCAT.
void ProcessorUsageClear()
Clear the processor usage percent.
int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount)
Retrieve a group of records of recorded data.
void CompensatorConfigSet(int32_t compensatorNumber, int32_t firstInputAxisNumber, RSIAxisMasterType firstInputAxisType, double firstInputAxisMinimum, double firstInputAxisMaximum, double firstInputAxisDelta, int32_t secondInputAxisNumber, RSIAxisMasterType secondInputAxisType, double secondInputAxisMinimum, double secondInputAxisMaximum, double secondInputAxisDelta, int32_t outputAxisNumber, RSICompensatorOutputType outputType, const double *const table)
Configure a 2D compensator.
void UserLimitCountSet(int32_t userLimitCount)
Set the number of processed UserLimits in the MotionController.
void RecorderBufferHighCountSet(int32_t bufferHighCount)
Set the high count for the recording buffer on Recorder 0.
void CompensatorTableClear(int32_t compensatorNumber)
Sets all values in the compensator table to 0.
uint32_t SerialNumberGet(void)
Get the controller's serial number.
const char *const StringFromAddressGet(uint64_t hostAddress)
Get a human-readable string from a memory address.
void InterruptEnableSet(bool enable)
Control interrupts for this class.
void AxisCountSet(int32_t axisCount)
Set the number of allocated and processed axes in the controller.
const char *const NetworkInputDataTypeNameGet(int32_t index)
Represents the RMP soft motion controller. This class provides an interface to general controller con...
Definition rsi.h:796
int32_t UnsupportedOptionSet(int32_t option)
deprecated
RSIControllerType ControllerTypeGet()
Get the type of motion controller.
int32_t UserLimitOutputValueGet(int32_t number)
Get the user limit output value.
uint32_t NetworkTimingThresholdHighCountGet()
Get the number of network packets that were sent to slowly (above the high threshold).
bool HasMechaWare()
Returns true if this RMP firmware supports MechaWare.
uint64_t UserLimitOutputAddressGet(int32_t number)
Get the user limit output address. The output will write its value to this address.
uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber)
Get the user limit condition mask.
int32_t SyncInterruptHostProcessFlagGet()
Get the host process flag.
bool NetworkSynchronizedGet()
Returns true if the network is synchronized with distributed clocks.
uint32_t NetworkTimingMinGet()
Get the minimum microseconds recorded between network packets.
uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber)
Get the user limit condition address.
const char *const NetworkOutputNameGet(int32_t index)
Get the name of a PDO output.
int32_t ServerPortGet()
Get the TCP port of the server. (Valid if controller type is CLIENT.).
uint32_t NetworkTimingThresholdLowCountGet()
Get the number of network packets that were sent to quickly (below the low threshold).
uint32_t NetworkTimingMaxGet()
Get the maximum microseconds recorded between consecutive network packets.
int32_t NetworkOutputBitSizeGet(int32_t index)
Get the size (in bits) of a PDO output.
uint64_t UserLimitOutputAndMask64Get(int32_t number)
Get the user limit output 64-bit AND mask.
RSIAction UserLimitActionGet(int32_t number)
Get the user limit action.
uint32_t UserLimitOutputOrMaskGet(int32_t number)
Get the user limit output OR mask.
MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber)
Get a MathBlock configuration.
int32_t NetworkOutputBitOffsetGet(int32_t index)
Get the raw PDO offset for an output.
int32_t AxisLicenseCountGet()
Get the number of licensed Axis objects on this motion controller. If you need more,...
RapidCodeOS * OS
Provides access to operating system (Windows) features.
Definition rsi.h:3907
bool ServiceThreadStateGet()
Returns true if the service thread was started.
static constexpr uint32_t RecorderCountMaximum
Maximum number of Recorder objects supported.
Definition rsi.h:822
uint32_t UserLimitOutputAndMaskGet(int32_t number)
Get the user limit output AND mask.
bool UserLimitSingleShotGet(int32_t number)
Returns true if the user limit is configured for single-shot.
bool UserLimitOutputEnableGet(int32_t number)
Returns true if the user limit output is enabled.
const char *const ServerNameGet()
Get the name of the server. (Valid if controller type is CLIENT.).
bool MechaWareLicenseGet()
Returns true if this motion controller is licensed to run MechaWare.
int32_t PackageVariantGet()
Get the motion controller package.
RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber)
Get the user limit condition logic.
static constexpr uint32_t AxisCountMaximum
Maximum number of Axis objects supported.
Definition rsi.h:813
void UserLimitEnableSet(int32_t number, bool enable)
Enable or disable a user limit to be processed by the RMP firmware.
double UserLimitOutputDoubleGet(int32_t number)
Get the user limit output 64-bit double value.
static constexpr uint32_t NetworkStartTimeoutMillisecondsDefault
Default time to wait when calling NetworkStart().
Definition rsi.h:810
FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber)
Get a MathBlock process value.
void NetworkTimingEnableSet(bool enable)
Enable or disable the firmware to start timing the network packets.
RSINetworkStartError LastNetworkStartErrorGet()
Get the last (most recent) network start error.
void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig &config)
Set a MathBlock configuration.
int32_t NetworkInputCountGet()
Get the number of PDO inputs found on the network.
void NetworkTimingThresholdHighSet(uint32_t microseconds)
Set a high threshold. The RMP will count the number of network packets sent above this threshold (too...
uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex)
Get the user limit interrupt user data address.
int32_t NetworkInputBitSizeGet(int32_t index)
Get the size (in bits) of a network input.
static constexpr uint32_t CompensatorCountMaximum
Maximum number of position Compensator objects supported.
Definition rsi.h:825
RSINetworkType NetworkTypeGet()
Returns network type. (Currently only STRING type is supported.).
int32_t NetworkCounterGet()
Read the network counter. This increments by one for each cycle of the network.
uint64_t UserLimitOutputInputAddressGet(int32_t number)
Get the user limit output address. The user limit will output the value stored at this address when t...
RSINetworkTechnologyType NetworkTechnologyTypeGet()
Get the network technology type EtherCAT.
double RecorderRecordDataDoubleGet(int32_t index)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static constexpr uint32_t UserBufferDataCountMaximum
Maximum number of 64-bit values that can be stored in the UserBuffer.
Definition rsi.h:831
uint32_t NetworkTimingDeltaGet()
Get the number of microseconds since the previous network packet was sent.
RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber)
Get the user limit condition data type.
double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber)
Get the user limit condition limit value (as 64-bit double).
int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber)
Get the user limit condition value.
RSIDataType UserLimitOutputDataTypeGet(int32_t number)
Get the user limit output data type.
int32_t UserLimitAxisNumberGet(int32_t number)
Get the user limit axis number.
static constexpr uint32_t MathBlockCountMaximum
Maximum number of MathBlock objects supported.
Definition rsi.h:828
double UserLimitDurationGet(int32_t number)
Get the user limit duration (seconds).
static constexpr uint32_t NetworkNodeCountMaximum
Maximum numober of nodes allowed on the network.
Definition rsi.h:819
static constexpr uint32_t MotionCountMaximum
Maximum number of Motion objects supported. (One required for each Axis and MultiAxis).
Definition rsi.h:816
void NetworkTimingThresholdLowSet(uint32_t microseconds)
Set a low threshold. The RMP will count the number of network packets sent below this threshold (too ...
FirmwareValue RecorderRecordDataFirmwareValueGet(int32_t index)
This is an overloaded member function, provided for convenience. It differs from the above function o...
RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number)
Get the user limit trigger type.
uint64_t UserLimitOutputOrMask64Get(int32_t number)
Get the user limit output 64-bit OR mask.
void NetworkTimingClear()
Clear all the network timing values.
const char *const NetworkInputNameGet(int32_t index)
Get the name of a PDO network input.
void MoveVelocitySCurve(const double *const velocity, const double *const accel, const double *const jerkPct)
Velocity move with non-constant acceleration.
void PathListStart(const double *const startPosition)
Start a line and arc point list for path motion.
void MoveTrapezoidal(const double *const position, const double *const vel, const double *const accel, const double *const decel)
Point-to-point trapezoidal move.
void PathMotionStart()
Start the path motion.
void PathArcAdd(const double *const center, double angle)
Add an arc segment to the path.
Axis * AxisGet(int32_t index)
Get the Axis class used in this MultiAxis class.
bool AmpEnableGet()
Get the enabled/disabled state of the multi axis.
void PathRatioSet(const double *const ratio)
Set the scale factor ratios for each axis.
double VectorJerkPercentGet()
Get the vector jerk percent.
uint64_t AddressGet(RSIMultiAxisAddressType addressType)
Get the host address for some location on the MultiAxis.
double VectorAccelerationGet()
Get the vector acceleration.
RSIPathPlanType PathPlanTypeGet()
Get the path motion planning type.
const char *const UserLabelGet()
Get the MultiAxis User defined Label.
void UserLabelSet(const char *const userLabel)
Set the MultiAxis User defined Label.
double VectorVelocityGet()
Get the vector velocity.
double VectorDecelerationGet()
Get the vector deceleration.
void AxisRemoveAll()
Remove all axes from a MultiAxis group.s.
RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type)
Get the data type for an address of the MultiAxis.
void MoveRelative(const double *const relativePosition, const double *const vel, const double *const accel, const double *const decel, const double *const jerkPct)
Command a relative point-to-point S-Curve motion.
void VectorDecelerationSet(double deceleration)
Set the vector deceleration.
void MoveVector(const double *const position)
Point-to-point vector move.
void PathPlanTypeSet(RSIPathPlanType type)
Set the path motion planning type.
void MoveVectorRelative(const double *const relativePosition)
void MoveSCurve(const double *const position, const double *const vel, const double *const accel, const double *const decel, const double *const jerkPct)
Point-to-point S-Curve Move.
void PathLineAdd(const double *const position)
Add a line segment to the path.
void AxesAdd(Axis **axes, int32_t axisCount)
void PathTimeSliceSet(double seconds)
Set the time slice for the Path.
void PathBlendSet(bool blend)
Set the blending attribute.
void VectorAccelerationSet(double acceleration)
Set the vector acceleration.
void MoveVelocity(const double *const velocity, const double *const accel)
Velocity move.
uint16_t MotionElementIdExecutingGet()
void VectorJerkPercentSet(double jerkPercent)
Set the jerk percent for a vector move.
double PathRatioGet(int32_t index)
void PathListEnd()
End a line and arc point list for path motion.
void AxisAdd(Axis *axis)
Add an Axis to a MultiAxis group.
double PathTimeSliceGet()
Set the time slice for the Path.
void VectorVelocitySet(double velocity)
Set the vector velocity.
Represents multiple axes of motion control, allows you to map two or more Axis objects together for e...
Definition rsi.h:10884
int32_t AxisMapCountGet()
Get the number of Axis objects in the Axis map.
Status StatusGet()
Get the node's status details.
void DigitalOutSet(int32_t digitalOutNumber, bool state)
Set the state of a digital output.
void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds=SDOTimeoutMillisecondsDefault)
Write a number in the SDO.
bool DigitalInGet(int32_t digitalInNumber)
Get the state of a digital input.
uint64_t DigitalOutAddressGet(int32_t bitNumber)
Get the host address for a Node's digital output.
const char *const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds=SDOTimeoutMillisecondsDefault)
Read a string from the SDO.
RapidVector< uint8_t > ServiceChannelReadBytes(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds)
Read a number of bytes from the SDO.
uint64_t AnalogInAddressGet(int32_t channel)
Get the host address for a Node's analog input.
int32_t DigitalInCountGet()
Get the number of digital inputs on this node.
bool HasIO()
Check if the node has any analog or digital inputs or outputs.
const char *const VendorNameGet()
Get the node's vendor name from NodeInfo.xml or CustomNodeInfo.xml.
int32_t AnalogInMaskGet(int32_t channel)
Get the bitwise mask for a Node's analog input.
int32_t AnalogOutNetworkIndexGet(int32_t analogChannel)
Get the global network output index for a node's analog output channel.
int32_t DigitalInMaskGet(int32_t bitNumber)
Get the bitwise mask for a Node's digital input.
int32_t DigitalOutNetworkIndexGet(int32_t digitalOutNumber)
Get the global network output index for a node's digital output channel.
int32_t AnalogInGet(int32_t analogChannel)
Get the value of an analog input.
int32_t DigitalOutMaskGet(int32_t bitNumber)
Get the bitwise mask for a Node's digital output.
int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds=SDOTimeoutMillisecondsDefault)
Read a 32-bit integer value from the SDO.
uint64_t DigitalInAddressGet(int32_t bitNumber)
Get the host address for a Node's digital input.
bool DigitalOutGet(int32_t digitalOutNumber)
Get the state of a digital output.
char * AKDASCIICommand(const char *const command)
Send a Kollmorgen AKD ASCII command (NodeType must equal KOLLMORGEN_AKD).
const char *const NameGet()
Get the Node's Short Name that appears on NodeInfo.xml.
const char *const ProductNameGet()
Get the node's product name from NodeInfo.xml or CustomNodeInfo.xml.
int32_t AnalogOutGet(int32_t analogChannel)
Get the value of an analog output.
int32_t AnalogInCountGet()
Get the number of analog inputs on this node.
int32_t DigitalOutCountGet()
Get the number of digital outputs on this node.
int32_t DigitalInNetworkIndexGet(int32_t digitalInNumber)
Get the global network input index for a node's digital input channel.
int32_t AnalogInNetworkIndexGet(int32_t analogChannel)
Get the global network input index for a node's analog input channel.
int32_t AnalogOutCountGet()
Get the number of analog outputs on this node.
void StatusClear()
Clear the node's status values.
void AnalogOutSet(int32_t analogChannel, int32_t analogValue)
Set the value of an analog output.
uint64_t AnalogOutAddressGet(int32_t channel)
Get the host address for a Node's analog output.
int32_t AnalogOutMaskGet(int32_t channel)
Get the bitwise mask for a Node's analog output.
uint32_t RevisionGet()
Get the EtherCAT hardware revision.
uint32_t AxisCountGet()
Get the number of Axis objects associated with this NetworkNode.
int32_t SegmentDigitalOutCountGet(int32_t segmentNumber)
Get the number of digital outputs on a segment.
int32_t SegmentIDGet(int32_t segmentNumber)
Get the ID number of a segment.
uint32_t ProductCodeGet()
Get the EtherCAT product code.
uint16_t StatusWordGet(int32_t axisIndex)
Get the DS402 status word.
int32_t SegmentCountGet()
Get the number of segments on this node.
int32_t SegmentAnalogOutCountGet(int32_t segmentNumber)
Get the number of analog outputs on a segment.
bool IsEtherCAT()
Check if the node is EtherCAT.
int32_t SegmentAnalogInCountGet(int32_t segmentNumber)
Get the number of analog inputs on a segment.
static constexpr uint32_t SDOTimeoutMillisecondsDefault
Default time to wait when reading or writing an SDO with ServiceChannelRead() or ServiceChannelWrite(...
Definition rsi.h:3924
uint32_t VendorIdGet()
Get the EtherCAT vendor ID.
bool IsSynqNet()
Check if the node is SynqNet.
void ClearFaults(int32_t axisNumber)
Clear the faults for a specific axis number on this node.
bool Exists()
Returns true if this NetworkNode exists on a physical network.
int32_t SegmentDigitalInCountGet(int32_t segmentNumber)
Get the number of digital inputs on a segment.
RSINodeType TypeGet()
Get the node type, as determined by the Vendor ID and Product Code.
uint32_t StationAliasGet()
Get the EtherCAT station alias.
const char *const SerialNumberGet()
Get the serial number as text.
static const char *const INtimeCatalogRMPNetworkGet()
Get the RMPNetwork catalog.
static INtimeStatus INtimeStatusGet(const char *const nodeName)
Get the status of INtime.
static INtimeStatus INtimeStart()
Start INtime.
static INtimeStatus INtimeRestart(const char *const nodeName)
Restart INtime (reboot INtime).
static uint32_t INtimeNodeCountGet()
Get the number of INtime nodes on this PC.
static const char *const INtimeCatalogRMPGet()
Get the RMP catalog.
static INtimeStatus INtimeStart(const char *const nodeName)
Start INtime.
static INtimeStatus INtimeStatusGet()
Get the status of INtime.
static bool INtimeNodeIsLocal(uint32_t nodeNumber)
Determine if an INtime node is local (on this PC) or distributed (on another PC).
static INtimeStatus INtimeStop(const char *const nodeName)
Stop INtime.
static const char *const INtimeNodeNameGet(uint32_t nodeNumber)
Get the name of an INtime node.
static INtimeStatus INtimeRestart()
Restart INtime (reboot INtime).
static INtimeStatus INtimeStop()
Stop INtime.
Represents the real-time operating system (INtime) when using RMP for Windows. This class provides st...
Definition rsi.h:11908
double InterruptUserDataDoubleGet(uint32_t userDataIndex)
Get the user data associated with the interrupt, as a 64-bit double.
uint64_t InterruptUserDataAddressGet(uint32_t userDataIndex)
Get the 64-bit host address from the interrupt's UserData.
int32_t InterruptSourceNumberGet()
Get the number (or index) of the object (Axis, Motor, etc) that generated the interrupt.
int32_t InterruptSampleTimeGet()
Get the sample timer value when the last interrupt was generated.
const char *const InterruptNameGet()
Get the text name of an interrupt type.
FirmwareValue InterruptUserDataValueGet(uint32_t userDataIndex)
Read the user data associated with the interrupt as a FirmwareValue.
void InterruptUserDataAddressSet(uint32_t userDataIndex, uint64_t hostAddress)
Set the interrupt's UserData address.
uint64_t InterruptUserDataGet(uint32_t userDataIndex)
Get the user data associated with the interrupt, as a 64-bit unsigned integer.
RSIEventType InterruptWait(int32_t milliseconds)
Suspend the current thread until an interrupt arrives from the controller.
Interface for objects which can use interrupts.
Definition rsi.h:590
void InterruptWake()
Wake any and all threads waiting for interrupts.
void InterruptMaskClear()
Clear the interrupt mask so no interrupts will be generated.
uint16_t InterruptMotionIdGet()
Get the 16-bit MotionId - only valid if RSIEventType == MOTION_DONE.
void InterruptMaskOnSet(RSIEventType eventType)
Set a bit in the interrupt mask so you will get interrupts for the given RSIEventType.
void InterruptMaskOffSet(RSIEventType eventType)
Clear a bit in the interrupt mask so you won't get interrupts for the given RSIEventType.
void InterruptMaskAllSet()
Set all the bits of the interrupt mask to get interrupts for ALL sources.
bool InterruptMaskOnGet(RSIEventType eventType)
Get the status of the interrupt mask for the given RSIEventType.
void InterruptEnableSet(bool enable)
Enable or disable interrupts.
void ClearFaults()
Clear all faults for an Axis or MultiAxis.
void MotionHoldAxisPositionSet(double position)
Sets the Axis position.
void InterruptWake()
Wake all threads waiting for an interrupt on this Axis.
bool MotionHoldGateGet()
Get the state of the hold gate.
double MotionHoldAxisPositionGet()
Gets the Axis position.
double MotionDelayGet()
Get the delay (seconds) that will occur before motion starts.
void Abort()
Abort an axis.
int32_t MotionHoldAxisNumberGet()
Gets the Axis number.
void StopTimeSet(double seconds)
Set the deceleration time for a Stop Event.
void MotionDelaySet(double seconds)
Set the time (seconds) that a motion will wait before starting.
void EStop()
E-Stop an axis.
void MotionHoldUserMaskSet(int32_t holdMask)
Sets the Motion Hold User bit mask.
double EStopTimeGet()
Get E-Stop Event deceleration time.
bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn)
Check to see if a particular motion attribute mask is turned on.
void Map()
Writes the axis mapping relationship to the Controller.
void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address)
bool AmpEnableGet()
Get the enabled state of all amplifiers.
void MovePVTF(const double *const position, const double *const velocity, const double *const time, const double *const feedforward, int32_t pointCount, int32_t emptyCount, bool retain, bool final)
Move commanded by list of positions, velocities, times, and feedforward values.
double FeedRateGet()
Get the axis feed rate.
void MotionHoldUserPatternSet(int32_t pattern)
Sets the Motion Hold User pattern bit mask.
void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff)
Turn off a particular motion attribute mask.
uint64_t MotionHoldUserAddressGet()
Gets the Motion Hold User Address.
void MotionHoldTypeSet(RSIMotionHoldType type)
Set the motion hold type.
int32_t MotionHoldGateNumberGet()
Returns the Motion Hold Gate number that the axis or multiaxis is set to.
void TriggeredModify()
Modify the currently executing motion to decelerate the Axis or MultiAxis to a zero velocity IDLE sta...
void MotionHoldAxisNumberSet(int32_t number)
Sets the Axis number for Motion Hold.
const char *const SourceNameGet(RSISource source)
Get the name (string) of the source of an error for an Axis or MultiAxis.
void MotionIdSet(uint16_t id)
Set the Motion identifier.
bool StatusBitGet(RSIEventType bitMask)
Return the state of a status bit.
int32_t MotionHoldUserMaskGet()
Gets the Motion Hold User Mask.
void EStopTimeSet(double seconds)
Set the deceleration time for an E-Stop Event.
int32_t MotionHoldUserPatternGet()
Gets the Motion Hold user bit pattern.
void MotionHoldGateNumberSet(int32_t gateNumber)
Assigns the axis or multiaxis Motion Hold Gate number to the specified controller gate.
RSIMotionHoldType MotionHoldTypeGet()
Get the motion hold attribute type.
int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds=WaitForever)
Waits for a move to complete.
RSIState StateGet()
Get the Axis or MultiAxis state.
void MotionHoldUserAddressSet(uint64_t address)
Sets the Motion Hold User Address.
void Resume()
Resume an axis.
void StreamingOutputsClear()
Clear the contents of the Streaming Output List.
uint64_t StatusBitsGet()
Return all the RMP firmware status bits as a 64-bit unsigned bitmask.
void MotionHoldGateSet(bool hold)
Set the Motion Hold Gate.
void StreamingOutputsEnableSet(bool enable)
Sets whether Streaming Output is enabled (true) or disabled (false).
int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds=AmpEnableTimeoutMillisecondsDefault, bool overrideRestrictedState=false)
Enable all amplifiers.
void FeedRateSet(double rate)
Set the feed rate for an Axis.
double MotionHoldTimeoutGet()
Get the motion hold timeout value.
void MotionHoldTimeoutSet(double seconds)
Set the motion hold timeout value.
void MotionFinalVelocitySet(double finalVelocity)
Sets final velocity value in UserUnits (!!! only used if FINAL_VEL motion attribute is used !...
int32_t NumberGet()
Get the axis number.
RSISource SourceGet()
Get the source of an error state for an Axis or MultiAxis.
uint16_t MotionIdGet()
Get the motion identifier.
void EStopModify()
E-Stop with a deceleration rate.
void MovePVT(const double *const position, const double *const velocity, const double *const time, int32_t pointCount, int32_t emptyCount, bool retain, bool final)
Move commanded by list of positions, velocities, and times.
void Unmap()
Removes the axis mapping relationship of the MultiAxis.
void MovePT(RSIMotionType type, const double *const position, const double *const time, int32_t pointCount, int32_t emptyCount, bool retain, bool final)
A move commanded by a list of position and time points.
void MovePTF(const double *const position, const double *const time, const double *const feedforward, int32_t pointCount, int32_t emptyCount, bool retain, bool final)
A move commanded by a list of position, time, and feedforward points.
bool IsMapped()
Check to see if the axis mapping is active on the firmware.
bool MotionDoneGet()
Check to see if motion is done and settled.
double StopTimeGet()
Get Stop Event deceleration time.
int32_t AxisCountGet()
Get the axis count.
void EStopAbort()
E-Stop, then abort an axis.
void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn)
Turn on a particular motion attribute mask.
double MotionFinalVelocityGet()
Gets final velocity value (!!! only used if FINAL_VEL motion attribute is used !!!...
void MovePVAJT(const double *const position, const double *const velocity, const double *const acceleration, const double *const jerk, const double *const time, int32_t pointCount, int32_t emptyCount, bool retain, bool final)
void InterruptEnableSet(bool enable)
Control interrupts for this class.
The RapidCodeMotion interface is implemented by Axis and MultiAxis .
Definition rsi.h:4421
static constexpr int32_t AmpEnableTimeoutMillisecondsDefault
Default timeout in milliseconds for AmpEnableSet() to wait for AMP_ACTIVE / OPERATION_ENABLED to go h...
Definition rsi.h:4425
RSIUserLimitLogic MotionHoldAxisLogicGet()
Get the logic when holding for Axis ActualPosition.
uint16_t MotionIdExecutingGet()
Get the currently executing motion ID.
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:4437
void MotionHoldAxisLogicSet(RSIUserLimitLogic logic)
Set the logic when holding for Axis ActualPosition.
static constexpr int32_t WaitForever
Use this value to wait indefinitely in methods which accept a waitTimeoutMilliseconds parameter.
Definition rsi.h:4428
void MotionAttributeMaskDefaultSet()
Restore the motion attribute mask to the RapidCode default.
uint16_t MotionElementIdExecutingGet()
Get the currently executing element ID (streaming motion).
void Sleep(int32_t milliseconds)
Put the current thread to sleep.
int32_t KeyGet(int32_t milliseconds)
Wait for a key to be pressed and return its value.
int32_t PerformanceTimerFrequencyGet()
Gets the frequency of the performance counter.
int32_t PerformanceTimerCountGet()
Gets the current high performance counter value.
int32_t TimerFrequencyGet()
Get the number milliseconds per second.
int32_t TimerCountGet()
Gets the time since startup.
The RapidCodeOS object provides access to operating system (Windows) features. Accessible via MotionC...
Definition rsi.h:493
void Trace(bool state)
Enables/Disables trace output.
void TraceInjectMessage(RSITrace traceLevel, const char *const message)
Add a message to the Trace Log.
bool TraceMaskOnGet(RSITrace maskOn)
Check to see if a particular trace output mask is turned on.
void TraceMaskOnSet(RSITrace maskOn)
Turn on a particular trace output mask.
void TraceMaskClear()
Clear the trace output mask.
void ThrowExceptions(bool state)
Configure a class to throw exceptions.
void ErrorLogClear()
Clear the error log.
const RsiError *const ErrorLogGet()
Get the next RsiError in the log.
void TraceFileSet(const char *const fileName)
Channels Tracing messages to specified file.
void TraceMaskOffSet(RSITrace maskOff)
Turn off a particular trace output mask.
const char *const VersionGet()
Get the RSI RapidCode version.
int32_t NumberGet()
Get the zero-based index of this object.
void TraceFileClose()
Stops Logging to the file.
int32_t ErrorLogCountGet()
Get the number of software errors in the error log.
The RapidCode base class. All non-error objects are derived from this class.
Definition rsi.h:180
int32_t RSIVersionPatch()
Get the patch RSI version.
int32_t MpiVersionRelease()
Get the release MPI version.
int32_t MpiVersionMinor()
Get the minor MPI version.
const char *const ErrorMessageGet(RSIErrorMessage msg)
Get the detailed text message for an RSIErrorMessage.
int32_t RSIVersionMicro()
Get the micro RSI version.
const char *const RsiErrorMessageGet(RSIErrorMessage msg)
Get the RSI-specific error message text for a specific RSIErrorMessage.
int32_t RSIVersionMinor()
Get the minor RSI version.
int32_t RSIVersionMajor()
Get the major RSI version.
int32_t MpiVersionMajor()
Get the major MPI version.
bool WarningMsgCheck(RSIErrorMessage msg)
Check to see if an RSIErrorMessage is a warning (true) or not (false).
void Reserve(const size_t capacity)
Increases the size of the allocated storage of the vector to at least the specified size.
const size_t Size() const
Returns the number of elements in the vector.
const Type & operator[](const size_t index) const
Returns a const reference to the element at the location specified by the index.
const Type & Back() const
Returns a const reference to the last element in the vector.
void PushBack(Type &&element)
Appends the given element to the end of the vector.
Iterator begin() noexcept
Returns a RapidVectorIterator to the first element of the vector. The naming convention follows STL c...
Type & Front()
Returns a reference to the first element in the vector.
Iterator end() const noexcept
Returns a RapidVectorIterator to the element following the last element of the vector....
const Type & Front() const
Returns a const reference to the first element in the vector.
const Type & At(const size_t index) const
Returns a const reference to the element at the location specified by the index.
void PushBack(const Type &element)
Appends the given element to the end of the vector.
Type & Back()
Returns a reference to the last element in the vector.
Type & operator[](const size_t index)
Returns a reference to the element at the location specified by the index.
Type & At(const size_t index)
Returns a reference to the element at the location specified by the index.
A wrapper class for the C++ STL vector class that aims to maintain application binary interface....
Definition rsi.h:12501
RapidVector(RapidVector &&other) noexcept
Move constructor. Replaces contents with those of the other RapidVector.
RapidVectorIterator< RapidVector > Iterator
The iterator type for this RapidVector.
Definition rsi.h:12602
~RapidVector()
Destructs the vector and deallocates used storage.
RapidVector & operator=(const RapidVector &other)
Copy assignment operator. Replaces contents with the contents of the other RapidVector.
RapidVector(const RapidVector &other)
Copy constructor. Constructs a RapidVector as a deep-copy.
RapidVector(RapidVectorImplementation< Type > *)
Constructs a RapidVector with the given implementation. Intended for RSI internal use only.
void Clear()
Erases all elements from the vector.
void PopBack()
Removes the last element from the container. Calling PopBack() on an empty container results in undef...
RapidVector(const size_t size)
Constructs a vector with the specified size.
RapidVector & operator=(RapidVector &&other) noexcept
Move assignment operator. Replaces contents with those of the other RapidVector. The original content...
RapidVector()
Default constructor that constructs an empty vector.
RsiError(const RsiError &copyFrom)
Copy constructor for RsiError.
Definition rsi.h:146
Represents the error details thrown as an exception by all RapidCode classes. This class contains an ...
Definition rsi.h:111
char fileName[RSI_ERROR_TEXT_SIZE]
source file name
Definition rsi.h:129
bool isWarning
Whether the error is or is not a warning.
Definition rsi.h:120
static constexpr uint32_t RSI_ERROR_TEXT_SIZE
Error message text.
Definition rsi.h:122
const char * what() const noexcept
Returns a null terminated character sequence that may be used to identify the exception.
Definition rsi.h:169
char shortText[RSI_ERROR_TEXT_SIZE]
Error short text.
Definition rsi.h:127
int32_t lineNumber
Source code line number.
Definition rsi.h:116
char functionName[RSI_ERROR_TEXT_SIZE]
Function name of the raised the error.
Definition rsi.h:125
RSIErrorMessage number
Error number.
Definition rsi.h:114
int32_t objectIndex
Object index (0-based index of the object that has the error).
Definition rsi.h:118
static void MaskSet(RSITrace mask)
Sets the specified trace mask.
static void MaskOnSet(RSITrace maskOn)
Turn on a particular trace output mask.
static void InjectMessage(RSITrace traceLevel, const char *const message)
Add a message to the Trace Log.
static bool MaskOnGet(RSITrace maskOn)
Check to see if a particular trace output mask is turned on.
static void MaskOffSet(RSITrace maskOff)
Turn off a particular trace output mask.
static void FileClose()
Stops Logging to the file.
static int32_t FileSet(const char *const fileName)
Channels Tracing messages to specified file.
static void MaskClear()
Clear the trace output mask.
Tracing allows for low level logs to be generated.
Definition rsi.h:11984
RSIFilterAlgorithm
Filter algorithms.
Definition rsienums.h:1206
RSINetworkEniResult
NetworkEniGenerate return values.
Definition rsienums.h:1506
RSIPDOType
Compensator output types.
Definition rsienums.h:1480
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1486
RSICompensatorOutputType
Compensator output types.
Definition rsienums.h:1474
RSINetworkStartMode
Network start modes.
Definition rsienums.h:629
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
Definition rsienums.h:1193
RSITrace
Trace masks.
Definition rsienums.h:581
RSIMotorStepperPulse
Pulse A or B.
Definition rsienums.h:1296
RSIAxisGantryType
How to combine Axis Feedback Positions.
Definition rsienums.h:1186
RSINetworkState
State of network.
Definition rsienums.h:609
RSIControllerAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:405
RSIMotorDisableAction
Action for when a motor is disabled.
Definition rsienums.h:1366
RSIEventType
Event Types or Status Bits.
Definition rsienums.h:1013
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:1085
RSIDataType
Data types for User Limits and other triggers.
Definition rsienums.h:703
RSIUserLimitLogic
Logic options for User Limits.
Definition rsienums.h:690
RSIMotorIoTypeMask
Possible mask bits for Motor I/O types.
Definition rsienums.h:1312
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1162
RSIAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:439
RSIProcessorType
Controller's processor type.
Definition rsienums.h:295
RSIMotorStepperPulseType
Stepper pulse type.
Definition rsienums.h:1302
RSIMotorType
Motor Type.
Definition rsienums.h:1358
RSINetworkInterfaceType
Network host interface type used for EtherCAT frame I/O.
Definition rsienums.h:1404
RSINetworkStartError
Network start errors.
Definition rsienums.h:635
RSIMotorGeneralIo
Motor I/O bit numbers.
Definition rsienums.h:964
RSIMotionAttrMask
Attribute masks for motion. You cannot mix RSIMotionAttrMaskDELAY and RSIMotionAttrMaskAPPEND.
Definition rsienums.h:1107
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:502
RSIFilterGainPIDCoeff
PID gain coefficients.
Definition rsienums.h:1215
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:677
RSINetworkOutputAddressType
Network output address types.
Definition rsienums.h:1467
INtimeStatus
INtime status values.
Definition rsienums.h:1412
RSIMotionHoldType
Types for MotionHold attribute.
Definition rsienums.h:1142
RSIControllerType
Controller type.
Definition rsienums.h:284
RSIMotorFaultMask
Mask values for several motor faults.
Definition rsienums.h:1346
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:397
RSIMotorBrakeMode
Brake modes.
Definition rsienums.h:1372
RSIErrorMessage
All possible RSI Error Messages.
Definition rsienums.h:17
RSINetworkType
Type of Network topology.
Definition rsienums.h:670
RSIMotorIoType
Possible configurations for Motor I/O.
Definition rsienums.h:1275
RSIAxisPositionInput
Feedback Positions for each Axis.
Definition rsienums.h:1180
RSINodeType
Valid Node types.
Definition rsienums.h:721
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:1061
RSIMotorDedicatedIn
Dedicated Input bits per motor.
Definition rsienums.h:936
RSIMotorFeedback
Encoders per motor.
Definition rsienums.h:1200
RSIMotorDedicatedOut
Dedicated Output bits per motor.
Definition rsienums.h:958
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1378
RSIPathPlanType
Path motion planning types.
Definition rsienums.h:1101
RSINetworkTechnologyType
Network technology type.
Definition rsienums.h:1399
RSINetworkIndexType
Network PDO index types for configuring axis input/output mappings.
Definition rsienums.h:1445
RSINetworkStartupMethod
Network startup methods.
Definition rsienums.h:621
RSIFilterGainPIVCoeff
PIV gain coefficients.
Definition rsienums.h:1236
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1265
int32_t ControllerIndex
The index of the controller to create.
Definition rsi.h:952
static constexpr int32_t RmpThreadPriorityMaximum
The maximum thread priority for the real-time system.
Definition rsi.h:909
static constexpr int32_t CpuAffinityDefault
The default value for CpuAffinity specifying no particular CPU core to run on.
Definition rsi.h:885
char NodeName[PathLengthMaximum]
[Windows/INtime] Indicate the INtime node on which the RMP and RMPNetwork processes run.
Definition rsi.h:990
char RmpPath[PathLengthMaximum]
Location of the RMP firmware executable, license, and associated binaries and resources.
Definition rsi.h:958
static constexpr int32_t ControllerIndexDefault
The default value for ControllerIndex.
Definition rsi.h:872
static constexpr int32_t RmpThreadPriorityNoRealTime
The thread priority where real time properties (scheduler and relative priorities) are not set.
Definition rsi.h:915
static constexpr int32_t RmpThreadPriorityMinimum
The minimum thread priority for the real-time system.
Definition rsi.h:903
static constexpr int32_t RmpThreadPriorityMaximumDefault
The default value for RmpThreadPriorityMax.
Definition rsi.h:891
static constexpr int32_t RmpThreadPriorityRange
The priority range required for RMP and RMPNetwork threads. Minimum thread priority is this +1.
Definition rsi.h:897
int32_t CpuAffinity
[Linux] Indicate the CPU core on which the RMP and RMPNetwork processes run.
Definition rsi.h:1010
char NicPrimary[PathLengthMaximum]
Primary EtherCAT Network Interface (NIC) name.
Definition rsi.h:964
int32_t RmpThreadPriorityMax
[Linux] The maximum thread priority. All threads of the RMP and RMPNetwork will be based off of this....
Definition rsi.h:1022
static constexpr uint32_t PathLengthMaximum
MotionController::CreationParameters Maximum string buffer length.
Definition rsi.h:878
CreationParameters()
Instantiate with default values and all memory zeroed out.
Definition rsi.h:928
char NicSecondary[PathLengthMaximum]
Secondary EtherCAT Network Interface (NIC) name. Reserved for future use.
Definition rsi.h:970
CreationParameters for MotionController::Create.
Definition rsi.h:862
RSIDataType ProcessDataType
Data type for processing.
Definition rsi.h:3885
MathBlock configuration structure.
Definition rsi.h:3878
RSIDataType OutputDataType
Data type for Output. (optional).
Definition rsi.h:3883
uint64_t OutputAddress
Host memory address for Output. The MathBlock will write its result to this address....
Definition rsi.h:3884
uint64_t InputAddress0
Host memory address for Input0. Represents the left-hand side operand in math operations.
Definition rsi.h:3879
RSIDataType InputDataType0
Data type for Input0. This is the data type of the left-hand side operand in math operations.
Definition rsi.h:3880
uint64_t InputAddress1
Host memory address for Input1. Represents the right-hand side operand in math operations.
Definition rsi.h:3881
RSIDataType InputDataType1
Data type for Input1. This is the data type of the right-hand side operand in math operations.
Definition rsi.h:3882
RSIMathBlockOperation Operation
Math operation to be performed. (+, -, *, /, etc) use RSIMathBlockOperationNONE to disable a MathBloc...
Definition rsi.h:3886
NetworkStatus structure for EtherCAT network health monitoring.
Definition rsi.h:2189
uint32_t MissedCyclicFrameCount
Cumulative count of missed cyclic EtherCAT frames since network startup. Indicates communication reli...
Definition rsi.h:2192
RSINetworkInterfaceType InterfaceType
Host-side packet interface mechanism used for EtherCAT frame I/O (for example, INtime HPE2 or Linux A...
Definition rsi.h:2195
uint32_t AlStatus
Logical OR of AL Status registers (0x0130) from all nodes. A value of 8 indicates all nodes are Opera...
Definition rsi.h:2191
uint32_t CyclicFramePeriodUs
Most recent cyclic frame period in microseconds. Should match the configured sample rate.
Definition rsi.h:2193
int32_t SynchronizationErrorNs
Distributed Clock synchronization error in nanoseconds. Updated approximately every 16 samples....
Definition rsi.h:2194
uint32_t ActiveNodeCount
Number of nodes actively responding on the network. Compare against expected node count to detect dro...
Definition rsi.h:2190
Status structure for individual EtherCAT node diagnostics.
Definition rsi.h:4388
uint32_t AlStatus
EtherCAT AL Status register (0x0130) value. This is a snapshot value primarily useful for detecting u...
Definition rsi.h:4389
int32_t CoeEmergencyMessageNetworkCounter
Network counter value when the current CoeEmergencyMessage was received. Use to determine if the emer...
Definition rsi.h:4392
uint64_t CoeEmergencyMessage
CANopen over EtherCAT (CoE) emergency message. 8-byte value containing error code and additional data...
Definition rsi.h:4391
uint32_t AlStatusCode
EtherCAT AL Status Code register value. This is a snapshot value captured when the node reports an er...
Definition rsi.h:4390
Union representing a generic RMP firmware value with multiple data types, stored in 64-bits.
Definition rsi.h:464
float Float
Single precision (32-bit) floating-point.
Definition rsi.h:472
int64_t Int64
64-bit signed integer.
Definition rsi.h:474
uint8_t UInt8
8-bit unsigned integer.
Definition rsi.h:467
int8_t Int8
8-bit signed integer.
Definition rsi.h:466
double Double
Double precision (64-bit) floating-point.
Definition rsi.h:473
int32_t Int32
32-bit signed integer.
Definition rsi.h:470
uint16_t UInt16
16-bit unsigned integer.
Definition rsi.h:469
int16_t Int16
16-bit signed integer.
Definition rsi.h:468
bool Bool
Boolean value.
Definition rsi.h:465
uint32_t UInt32
32-bit unsigned integer.
Definition rsi.h:471
uint64_t UInt64
64-bit unsigned integer.
Definition rsi.h:475