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
54class MotionController;
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()
132 {
133 text[0] = '\0';
134 functionName[0] = '\0';
135 shortText[0] = '\0';
136 fileName[0] = '\0';
138 lineNumber = -1;
139 isWarning = false;
140 objectIndex = -1;
141 }
150 RsiError(const RsiError& copyFrom)
151 {
152#if defined(_WIN32)
153 strncpy_s(text, RSI_ERROR_TEXT_SIZE, copyFrom.text, RSI_ERROR_TEXT_SIZE);
157#elif defined(__linux__)
158 strncpy(text, copyFrom.text, RSI_ERROR_TEXT_SIZE);
160 strncpy(shortText, copyFrom.shortText, RSI_ERROR_TEXT_SIZE);
161 strncpy(fileName, copyFrom.fileName, RSI_ERROR_TEXT_SIZE);
162#endif
163 number = copyFrom.number;
164 lineNumber = copyFrom.lineNumber;
165 isWarning = copyFrom.isWarning;
166 objectIndex = copyFrom.objectIndex;
167 }
168 ~RsiError()
169 {
170 }
171
173 virtual const char* what() const noexcept { return text; }
174};
175
184class RSI_API RapidCodeObject {
185public:
190
191
192
205 virtual const char* const VersionGet() PURE_VIRTUAL;
206
208 virtual int32_t MpiVersionMajor() PURE_VIRTUAL;
210 virtual int32_t MpiVersionMinor() PURE_VIRTUAL;
212 virtual int32_t MpiVersionRelease() PURE_VIRTUAL;
214 virtual int32_t RSIVersionMajor() PURE_VIRTUAL;
216 virtual int32_t RSIVersionMinor() PURE_VIRTUAL;
218 virtual int32_t RSIVersionMicro() PURE_VIRTUAL;
220 virtual int32_t RSIVersionPatch() PURE_VIRTUAL;
221
224 virtual int32_t NumberGet() PURE_VIRTUAL;
226
231
232
233
234
260 virtual int32_t ErrorLogCountGet() PURE_VIRTUAL;
261
275 virtual const RsiError* const ErrorLogGet() PURE_VIRTUAL;
276
289 virtual void ErrorLogClear() PURE_VIRTUAL;
290
309 virtual void ThrowExceptions(bool state) PURE_VIRTUAL;
310
312 virtual const char* const RsiErrorMessageGet(RSIErrorMessage msg) PURE_VIRTUAL;
313
315 virtual const char* const ErrorMessageGet(RSIErrorMessage msg) PURE_VIRTUAL;
316
318 virtual bool WarningMsgCheck(RSIErrorMessage msg) PURE_VIRTUAL;
320
325
326
341 virtual void Trace(bool state) PURE_VIRTUAL;
342
357 virtual void TraceMaskOnSet(RSITrace maskOn) PURE_VIRTUAL;
358
359
380 virtual bool TraceMaskOnGet(RSITrace maskOn) PURE_VIRTUAL;
381
397 virtual void TraceMaskOffSet(RSITrace maskOff) PURE_VIRTUAL;
398
412 virtual void TraceMaskClear() PURE_VIRTUAL;
413
428 virtual void TraceFileSet(const char* const fileName) PURE_VIRTUAL;
429
442 virtual void TraceFileClose() PURE_VIRTUAL;
443
458 virtual void TraceInjectMessage(RSITrace traceLevel, const char* const message) PURE_VIRTUAL;
459
460
461
462
464};
465
467typedef union
468{
469 bool Bool;
470 int8_t Int8;
471 uint8_t UInt8;
472 int16_t Int16;
473 uint16_t UInt16;
474 int32_t Int32;
475 uint32_t UInt32;
476 float Float;
477 double Double;
478 int64_t Int64;
479 uint64_t UInt64;
481
483
497class RSI_API RapidCodeOS {
498public:
499
504
517 virtual void Sleep(int32_t milliseconds) PURE_VIRTUAL;
518
537 virtual int32_t KeyGet(int32_t milliseconds) PURE_VIRTUAL;
538
548 virtual int32_t TimerCountGet() PURE_VIRTUAL;
549
558 virtual int32_t TimerFrequencyGet() PURE_VIRTUAL;
559
560
572 virtual int32_t PerformanceTimerCountGet() PURE_VIRTUAL;
573
585 virtual int32_t PerformanceTimerFrequencyGet() PURE_VIRTUAL;
586
588};
589
591
594class RSI_API RapidCodeInterrupt : public virtual RapidCodeObject {
595public:
599
601 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
602
603
625 virtual RSIEventType InterruptWait(int32_t milliseconds) PURE_VIRTUAL;
626
646 virtual const char* const InterruptNameGet() PURE_VIRTUAL;
647
668 virtual int32_t InterruptSampleTimeGet() PURE_VIRTUAL;
669
670
691 virtual int32_t InterruptSourceNumberGet() PURE_VIRTUAL;
692
694 virtual uint16_t InterruptMotionIdGet() PURE_VIRTUAL;
695
697 virtual void InterruptWake() PURE_VIRTUAL;
698
700 virtual void InterruptMaskClear() PURE_VIRTUAL;
701
703 virtual void InterruptMaskAllSet() PURE_VIRTUAL;
704
706 virtual void InterruptMaskOnSet(RSIEventType eventType) PURE_VIRTUAL;
707
709 virtual void InterruptMaskOffSet(RSIEventType eventType) PURE_VIRTUAL;
710
712 virtual bool InterruptMaskOnGet(RSIEventType eventType) PURE_VIRTUAL;
713
714
727 virtual uint64_t InterruptUserDataGet(uint32_t userDataIndex) PURE_VIRTUAL;
728
729
741 virtual double InterruptUserDataDoubleGet(uint32_t userDataIndex) PURE_VIRTUAL;
742
748 virtual FirmwareValue InterruptUserDataValueGet(uint32_t userDataIndex) PURE_VIRTUAL;
749
785
787 virtual void InterruptUserDataAddressSet(uint32_t userDataIndex, uint64_t hostAddress) PURE_VIRTUAL;
788
794 virtual uint64_t InterruptUserDataAddressGet(uint32_t userDataIndex) PURE_VIRTUAL;
795};
796
800class RSI_API MotionController : public virtual RapidCodeInterrupt {
801protected:
803 StaticInstanceMediator* _mediator;
804
805public:
806
807 // Static functions or attributes should be grouped together.
812
814 static inline constexpr uint32_t NetworkStartTimeoutMillisecondsDefault = 30000;
815
817 static inline constexpr uint32_t AxisCountMaximum = 64;
818
820 static inline constexpr uint32_t MotionCountMaximum = 64;
821
823 static inline constexpr uint32_t NetworkNodeCountMaximum = 64;
824
826 static inline constexpr uint32_t RecorderCountMaximum = 64;
827
829 static inline constexpr uint32_t CompensatorCountMaximum = 64;
830
832 static inline constexpr uint32_t MathBlockCountMaximum = 64;
833
835 static inline constexpr uint32_t UserBufferDataCountMaximum = 1024;
836
843 static inline constexpr double SampleRateDefault = 1000.0;
844
854 static inline constexpr int32_t AxisFrameBufferSizeDefault = 1024;
855
857
858 // Static functions or attributes should be grouped together.
863
866 {
871
876 static inline constexpr int32_t ControllerIndexDefault = 0;
877
882 static inline constexpr uint32_t PathLengthMaximum = 256;
883
889 static inline constexpr int32_t CpuAffinityDefault = -1;
890
895 static inline constexpr int32_t RmpThreadPriorityMaximumDefault = 45;
896
901 static inline constexpr int32_t RmpThreadPriorityRange = 8;
902
907 static inline constexpr int32_t RmpThreadPriorityMinimum = RmpThreadPriorityRange + 1;
908
913 static inline constexpr int32_t RmpThreadPriorityMaximum = 99;
914
919 static inline constexpr int32_t RmpThreadPriorityNoRealTime = 0;
921
922
927
933 {
934 ControllerIndex = ControllerIndexDefault;
935 std::memset(RmpPath, '\0', PathLengthMaximum);
936 std::memset(NicPrimary, '\0', PathLengthMaximum);
937 std::memset(NicSecondary, '\0', PathLengthMaximum);
938#if defined(_WIN32)
939 std::memset(NodeName, '\0', PathLengthMaximum);
940#elif defined(__linux__)
941 CpuAffinity = CpuAffinityDefault;
942 RmpThreadPriorityMax = RmpThreadPriorityMaximumDefault;
943#endif
944 }
946
951
957
962 char RmpPath[PathLengthMaximum];
963
968 char NicPrimary[PathLengthMaximum];
969
974 char NicSecondary[PathLengthMaximum];
976
977 // Control which platform specific parameters are available
978#if defined(_WIN32) && defined(__linux__)
979 static_assert(false, "_WIN32 and __linux__ defined. Double check preprocessor definitions");
980#elif !defined(_WIN32) && !defined(__linux__) && !defined(DOXYGEN)
981 static_assert(false, "Neither _WIN32 nor __linux__ are defined AND this is not a documentation build. Double check preprocessor definitions");
982#endif //defined(_WIN32) && defined(__linux__)
983#if defined(_WIN32) || defined(DOXYGEN)
984
989
994 char NodeName[PathLengthMaximum];
995
997#endif //defined(_WIN32)
998#if defined(__linux__) || defined(DOXYGEN)
999
1004
1015
1027
1029# endif // defined(__linux__)
1030 };
1031
1042 static MotionController* Create(CreationParameters* creationParameters);
1043
1049
1055 static MotionController* Get(int32_t controllerIndex);
1056
1057#if defined(_WIN32)
1085
1090 static MotionController* CreateFromSoftware(const char* const RtaPath);
1091
1097 static MotionController* CreateFromSoftware(const char* const RtaPath, const char* const NodeName);
1098
1126#endif // defined(_WIN32)
1127
1132 static MotionController* CreateFromFile(const char* const fileName);
1134
1139
1155 virtual Axis* AxisGet(int32_t axisNumber) PURE_VIRTUAL;
1156
1173 virtual MultiAxis* MultiAxisGet(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1174
1188 virtual MultiAxis* LoadExistingMultiAxis(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1189
1204 virtual RapidCodeNetworkNode* NetworkNodeGet(int32_t nodeNumber) PURE_VIRTUAL;
1205
1221 virtual IO* IOGet(int32_t nodeNumber) PURE_VIRTUAL;
1222
1245 virtual void Delete(void) PURE_VIRTUAL;
1247
1252
1259 virtual void Reset() PURE_VIRTUAL;
1260
1270 virtual void Refresh() PURE_VIRTUAL;
1271
1279 virtual void Shutdown() PURE_VIRTUAL;
1280
1289 virtual void MemoryToFile(const char* const fileName) PURE_VIRTUAL;
1291
1296
1319 virtual int32_t SampleCounterGet() PURE_VIRTUAL;
1320
1335 virtual double ProcessorUsageGet() PURE_VIRTUAL;
1336
1347 virtual void ProcessorUsageClear() PURE_VIRTUAL;
1348
1352 virtual uint32_t FirmwareTimingDeltaGet() PURE_VIRTUAL;
1353
1354
1356
1361
1362
1366 virtual CreationParameters CreationParametersGet() PURE_VIRTUAL;
1367
1390 virtual uint32_t SerialNumberGet(void) PURE_VIRTUAL;
1391
1410 virtual void SampleWait(uint32_t samples) PURE_VIRTUAL;
1411
1412
1414 virtual RSIControllerType ControllerTypeGet() PURE_VIRTUAL;
1415
1417 virtual const char* const ServerNameGet() PURE_VIRTUAL;
1418
1420 virtual int32_t ServerPortGet() PURE_VIRTUAL;
1421
1422
1423
1424
1446 virtual RSIProcessorType ProcessorTypeGet() PURE_VIRTUAL;
1447
1472 virtual void SampleRateSet(double sampleRate) PURE_VIRTUAL;
1473
1477 virtual double SampleRateGet() PURE_VIRTUAL;
1478
1496 virtual int32_t AxisCountGet() PURE_VIRTUAL;
1497
1516 virtual void AxisCountSet(int32_t axisCount) PURE_VIRTUAL;
1517
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 uint32_t FirmwareAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1873
1874
1875
1876
1899 virtual uint64_t HostAddressGet(uint32_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
2000 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type) PURE_VIRTUAL;
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
2049 virtual RSINetworkTechnologyType NetworkTechnologyTypeGet() PURE_VIRTUAL;
2050
2052 virtual RSINetworkType NetworkTypeGet() PURE_VIRTUAL;
2053
2056 virtual int32_t NetworkNodeCountGet() PURE_VIRTUAL;
2057
2103 virtual RSINetworkEniResult NetworkEniGenerate() PURE_VIRTUAL;
2104
2125 virtual const char* const NetworkEniGenerateOutputGet() PURE_VIRTUAL;
2126
2133 virtual void NetworkStart() PURE_VIRTUAL;
2134
2139 virtual void NetworkStart(RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2140
2147 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2148
2153 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
2154
2165 virtual void NetworkShutdown() PURE_VIRTUAL;
2166
2169 virtual RSINetworkState NetworkStateGet() PURE_VIRTUAL;
2170
2172 virtual int32_t NetworkCounterGet() PURE_VIRTUAL;
2173
2175 virtual int32_t NetworkInputCountGet() PURE_VIRTUAL;
2176
2178 virtual int32_t NetworkInputBitSizeGet(int32_t index) PURE_VIRTUAL;
2179
2183 virtual const char* const NetworkInputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2184
2187 virtual int32_t NetworkInputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2188
2191 virtual const char* const NetworkInputNameGet(int32_t index) PURE_VIRTUAL;
2192
2196 virtual uint64_t NetworkInputValueGet(int32_t index) PURE_VIRTUAL;
2197
2198
2199
2203 virtual uint64_t NetworkInputAddressGet(int32_t index) PURE_VIRTUAL;
2204
2208 virtual int32_t NetworkOutputCountGet() PURE_VIRTUAL;
2209
2212 virtual int32_t NetworkOutputBitSizeGet(int32_t index) PURE_VIRTUAL;
2213
2214
2218 virtual const char* const NetworkOutputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2219
2221 virtual int32_t NetworkOutputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2222
2224 virtual const char* const NetworkOutputNameGet(int32_t index) PURE_VIRTUAL;
2225
2241 virtual uint64_t NetworkOutputValueGet(int32_t index) PURE_VIRTUAL;
2242
2259 virtual void NetworkOutputValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2260
2279 virtual uint64_t NetworkOutputAddressGet(int32_t index) PURE_VIRTUAL;
2280
2285 virtual uint64_t NetworkOutputAddressGet(int32_t index, RSINetworkOutputAddressType type) PURE_VIRTUAL;
2286
2297 virtual uint64_t NetworkOutputIntendedValueGet(int32_t index) PURE_VIRTUAL;
2298
2310 virtual void NetworkOutputOverrideSet(int32_t index, bool outputOverride) PURE_VIRTUAL;
2311
2322 virtual bool NetworkOutputOverrideGet(int32_t index) PURE_VIRTUAL;
2323
2324
2325
2326
2343 virtual void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2344
2357 virtual uint64_t NetworkOutputOverrideValueGet(int32_t index) PURE_VIRTUAL;
2358
2373 virtual uint64_t NetworkOutputSentValueGet(int32_t index) PURE_VIRTUAL;
2374
2378 virtual int32_t NetworkLogMessageCountGet() PURE_VIRTUAL;
2379
2381 virtual RSINetworkStartError LastNetworkStartErrorGet() PURE_VIRTUAL;
2382
2387 virtual const char* const NetworkLogMessageGet(int32_t messageIndex) PURE_VIRTUAL;
2388
2390 virtual void NetworkTimingEnableSet(bool enable) PURE_VIRTUAL;
2391
2393 virtual void NetworkTimingClear() PURE_VIRTUAL;
2394
2396 virtual uint32_t NetworkTimingDeltaGet() PURE_VIRTUAL;
2397
2399 virtual uint32_t NetworkTimingMinGet() PURE_VIRTUAL;
2400
2402 virtual uint32_t NetworkTimingMaxGet() PURE_VIRTUAL;
2403
2405 virtual void NetworkTimingThresholdLowSet(uint32_t microseconds) PURE_VIRTUAL;
2406
2408 virtual void NetworkTimingThresholdHighSet(uint32_t microseconds) PURE_VIRTUAL;
2409
2411 virtual uint32_t NetworkTimingThresholdLowCountGet() PURE_VIRTUAL;
2412
2414 virtual uint32_t NetworkTimingThresholdHighCountGet() PURE_VIRTUAL;
2415
2417 virtual bool NetworkSynchronizedGet() PURE_VIRTUAL;
2419
2424
2441 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
2442
2461 virtual void InterruptWake() PURE_VIRTUAL;
2462
2490 virtual void SyncInterruptEnableSet(bool enable) PURE_VIRTUAL;
2491
2517 virtual void SyncInterruptPeriodSet(uint32_t samples) PURE_VIRTUAL;
2518
2538 virtual int32_t SyncInterruptWait() PURE_VIRTUAL;
2539
2541 virtual bool ServiceThreadStateGet() PURE_VIRTUAL;
2542
2553 virtual int32_t SyncInterruptHostProcessTimeGet() PURE_VIRTUAL;
2554
2556 virtual int32_t SyncInterruptHostProcessFlagGet() PURE_VIRTUAL;
2557
2570 virtual void SyncInterruptHostProcessFlagSet(bool hostProcessFlag) PURE_VIRTUAL;
2571
2582 virtual bool SyncInterruptHostProcessStatusBitGet() PURE_VIRTUAL;
2583
2593 virtual void SyncInterruptHostProcessStatusClear() PURE_VIRTUAL;
2594
2621
2622 virtual void ServiceThreadEnableSet(bool enable) PURE_VIRTUAL;
2624
2629
2630
2631
2650 virtual int32_t RecorderCountGet() PURE_VIRTUAL;
2651
2669 virtual void RecorderCountSet(int32_t recorderCount) PURE_VIRTUAL;
2670
2687 virtual void RecorderPeriodSet(uint32_t samples) PURE_VIRTUAL;
2688
2690 virtual void RecorderPeriodSet(int32_t recorderNumber, uint32_t samples) PURE_VIRTUAL;
2691
2708 virtual void RecorderCircularBufferSet(bool enable) PURE_VIRTUAL;
2709
2711 virtual void RecorderCircularBufferSet(int32_t recorderNumber, bool enable) PURE_VIRTUAL;
2712
2728 virtual void RecorderDataCountSet(int32_t count) PURE_VIRTUAL;
2729
2731 virtual void RecorderDataCountSet(int32_t recorderNumber,int32_t count) PURE_VIRTUAL;
2732
2749 virtual void RecorderDataAddressSet(int32_t index, uint64_t address) PURE_VIRTUAL;
2750
2752 virtual void RecorderDataAddressSet(int32_t recorderNumber,int32_t index, uint64_t address) PURE_VIRTUAL;
2753
2754
2760 virtual void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t* const addresses, int32_t addressCount) PURE_VIRTUAL;
2761
2775
2781 virtual void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2782
2789 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2790
2796 virtual void RecorderConfigureToTriggerOnMotion(MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2797
2804 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2805
2812 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, int32_t motionNumber, bool triggerOnMotion) PURE_VIRTUAL;
2813
2822 virtual bool RecorderTriggerOnMotionGet(int32_t recorderNumber) PURE_VIRTUAL;
2823
2839 virtual bool RecorderEnabledGet() PURE_VIRTUAL;
2840
2842 virtual bool RecorderEnabledGet(int32_t recorderNumber ) PURE_VIRTUAL;
2843
2860 virtual int32_t RecorderRecordCountGet() PURE_VIRTUAL;
2861
2863 virtual int32_t RecorderRecordCountGet(int32_t recorderNumber ) PURE_VIRTUAL;
2864
2878 virtual int32_t RecorderRecordMaxCountGet() PURE_VIRTUAL;
2879
2881 virtual int32_t RecorderRecordMaxCountGet(int32_t recorderNumber) PURE_VIRTUAL;
2882
2897 virtual void RecorderStart() PURE_VIRTUAL;
2898
2900 virtual void RecorderStart(int32_t recorderNumber) PURE_VIRTUAL;
2901
2918 virtual void RecorderStop() PURE_VIRTUAL;
2919
2921 virtual void RecorderStop(int32_t recorderNumber) PURE_VIRTUAL;
2922
2923
2924
2940 virtual const int32_t* const RecorderRecordDataGet() PURE_VIRTUAL;
2941
2943 virtual const int32_t* const RecorderRecordDataGet(int32_t recorderNumber) PURE_VIRTUAL;
2944
2959 virtual void RecorderRecordDataRetrieve() PURE_VIRTUAL;
2960
2980 virtual int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount) PURE_VIRTUAL;
2981
2983 virtual void RecorderRecordDataRetrieve(int32_t recorderNumber) PURE_VIRTUAL;
2984
3001 virtual int32_t RecorderRecordDataValueGet(int32_t index) PURE_VIRTUAL;
3002
3004 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
3005
3024 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3025
3027 virtual double RecorderRecordDataDoubleGet(int32_t index) PURE_VIRTUAL;
3028
3030 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
3031
3050 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3051
3069 virtual void RecorderBufferHighCountSet(int32_t bufferHighCount) PURE_VIRTUAL;
3070
3072 virtual void RecorderBufferHighCountSet(int32_t recorderNumber, int32_t bufferHighCount) PURE_VIRTUAL;
3073
3088 virtual void RecorderReset() PURE_VIRTUAL;
3089
3091 virtual void RecorderReset(int32_t recorderNumber) PURE_VIRTUAL;
3092
3104 virtual int32_t RecorderBufferSizeGet(int32_t recorderNumber) PURE_VIRTUAL;
3105
3122 virtual void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize) PURE_VIRTUAL;
3124
3129
3130
3131
3132
3157 virtual int32_t CompensatorCountGet() PURE_VIRTUAL;
3158
3178 virtual void CompensatorCountSet(int32_t compensatorCount) PURE_VIRTUAL;
3179
3190 virtual int32_t CompensatorPointCountGet(int32_t compensatorNumber) PURE_VIRTUAL;
3191
3211 virtual void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount) PURE_VIRTUAL;
3212
3226 virtual int32_t CompensatorDimensionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3227
3253 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;
3254
3284 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;
3285
3306 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;
3307
3328 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;
3329
3341 virtual void CompensatorTableSet(int32_t compensatorNumber, const double* const table) PURE_VIRTUAL;
3342
3354 virtual void CompensatorTableGet(int32_t compensatorNumber, double* table) PURE_VIRTUAL;
3355
3375 virtual double CompensatorPositionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3376
3377
3378
3379
3380
3381
3393
3394 virtual void CompensatorTableClear(int32_t compensatorNumber) PURE_VIRTUAL;
3395
3404 virtual void CompensatorDisable(int32_t compensatorNumber) PURE_VIRTUAL;
3405
3410 virtual void CompensatorDisable(int32_t compensatorNumber, bool force) PURE_VIRTUAL;
3411
3418 virtual void CompensatorEnable(int32_t compensatorNumber) PURE_VIRTUAL;
3419
3421
3426
3446 virtual int32_t UserLimitCountGet() PURE_VIRTUAL;
3447
3467 virtual void UserLimitCountSet(int32_t userLimitCount) PURE_VIRTUAL;
3468
3488 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot) PURE_VIRTUAL;
3489
3492 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration) PURE_VIRTUAL;
3493
3495 virtual RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number) PURE_VIRTUAL;
3496
3498 virtual RSIAction UserLimitActionGet(int32_t number) PURE_VIRTUAL;
3499
3501 virtual int32_t UserLimitAxisNumberGet(int32_t number) PURE_VIRTUAL;
3502
3504 virtual double UserLimitDurationGet(int32_t number) PURE_VIRTUAL;
3505
3507 virtual bool UserLimitSingleShotGet(int32_t number) PURE_VIRTUAL;
3508
3533 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32) PURE_VIRTUAL;
3534
3556 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfDouble, double limitValueDouble) PURE_VIRTUAL;
3557
3559 virtual RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3560
3562 virtual RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3563
3565 virtual uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3566
3568 virtual uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3569
3571 virtual int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3572
3574 virtual double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3575
3602 virtual void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3603
3606 virtual void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3607
3610 virtual void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3611
3614 virtual void UserLimitOutputSet(int32_t number, double limitValueDouble, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3615
3631 virtual void UserLimitOutputSet(int32_t number, RSIDataType dataType, uint64_t inputPtr, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3632
3634 virtual bool UserLimitOutputEnableGet(int32_t number) PURE_VIRTUAL;
3635
3637 virtual RSIDataType UserLimitOutputDataTypeGet(int32_t number) PURE_VIRTUAL;
3638
3640 virtual uint64_t UserLimitOutputAddressGet(int32_t number) PURE_VIRTUAL;
3641
3643 virtual uint64_t UserLimitOutputInputAddressGet(int32_t number) PURE_VIRTUAL;
3644
3646 virtual uint32_t UserLimitOutputAndMaskGet(int32_t number) PURE_VIRTUAL;
3647
3649 virtual uint32_t UserLimitOutputOrMaskGet(int32_t number) PURE_VIRTUAL;
3650
3652 virtual int32_t UserLimitOutputValueGet(int32_t number) PURE_VIRTUAL;
3653
3655 virtual uint64_t UserLimitOutputAndMask64Get(int32_t number) PURE_VIRTUAL;
3656
3658 virtual uint64_t UserLimitOutputOrMask64Get(int32_t number) PURE_VIRTUAL;
3659
3660
3662 virtual double UserLimitOutputDoubleGet(int32_t number) PURE_VIRTUAL;
3663
3684 virtual bool UserLimitStateGet(int32_t number) PURE_VIRTUAL;
3685
3706 virtual bool UserLimitEnableGet(int32_t number) PURE_VIRTUAL;
3707
3709 virtual void UserLimitEnableSet(int32_t number, bool enable) PURE_VIRTUAL;
3710
3725 virtual void UserLimitDisable(int32_t number) PURE_VIRTUAL;
3726
3738 virtual void UserLimitReset(int32_t number) PURE_VIRTUAL;
3739
3748
3749 virtual int32_t UserLimitCountMax() PURE_VIRTUAL;
3750
3768 virtual void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address) PURE_VIRTUAL;
3769
3771 virtual uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex) PURE_VIRTUAL;
3773
3774
3779
3789 virtual int32_t MathBlockCountGet() PURE_VIRTUAL;
3790
3801 virtual void MathBlockCountSet(int32_t mathBlockCount) PURE_VIRTUAL;
3802
3821
3823 virtual MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3824
3826 virtual void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig& config) PURE_VIRTUAL;
3827
3829 virtual FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3830
3832
3833
3838
3841
3843};
3844
3848class RSI_API RapidCodeNetworkNode : public virtual RapidCodeObject {
3849public:
3850
3855
3857 static inline constexpr uint32_t SDOTimeoutMillisecondsDefault = 100;
3858
3860
3861
3866
3868 virtual bool Exists() PURE_VIRTUAL;
3869
3871 virtual RSINodeType TypeGet() PURE_VIRTUAL;
3872
3874 virtual bool IsEtherCAT() PURE_VIRTUAL;
3875
3877 virtual bool IsSynqNet() PURE_VIRTUAL;
3878
3880
3885
3893 virtual bool HasIO() PURE_VIRTUAL;
3894
3904 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
3905
3915 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
3916
3925 virtual void DigitalOutSet(int32_t digitalOutNumber, bool state) PURE_VIRTUAL;
3926
3936 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
3937
3947 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
3948
3957 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
3958
3960
3964
3972 virtual int32_t DigitalInCountGet() PURE_VIRTUAL;
3973
3981 virtual int32_t DigitalOutCountGet() PURE_VIRTUAL;
3982
3990 virtual int32_t AnalogInCountGet() PURE_VIRTUAL;
3991
3999 virtual int32_t AnalogOutCountGet() PURE_VIRTUAL;
4000
4001
4003 virtual int32_t SegmentCountGet() PURE_VIRTUAL;
4004
4006 virtual int32_t SegmentDigitalInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4007
4009 virtual int32_t SegmentDigitalOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4010
4012 virtual int32_t SegmentAnalogInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4013
4015 virtual int32_t SegmentAnalogOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4016
4018 virtual int32_t SegmentIDGet(int32_t segmentNumber) PURE_VIRTUAL;
4019
4032 virtual uint64_t DigitalInAddressGet(int32_t bitNumber) PURE_VIRTUAL;
4033
4046 virtual int32_t DigitalInMaskGet(int32_t bitNumber) PURE_VIRTUAL;
4047
4060 virtual uint64_t DigitalOutAddressGet(int32_t bitNumber) PURE_VIRTUAL;
4061
4074 virtual int32_t DigitalOutMaskGet(int32_t bitNumber) PURE_VIRTUAL;
4075
4087 virtual uint64_t AnalogInAddressGet(int32_t channel) PURE_VIRTUAL;
4088
4100 virtual int32_t AnalogInMaskGet(int32_t channel) PURE_VIRTUAL;
4101
4113 virtual uint64_t AnalogOutAddressGet(int32_t channel) PURE_VIRTUAL;
4114
4126 virtual int32_t AnalogOutMaskGet(int32_t channel) PURE_VIRTUAL;
4127
4141 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4142
4146 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4147
4160 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4161
4165 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4166
4177 virtual RapidVector<uint8_t> ServiceChannelReadBytes(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4178
4192 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue) PURE_VIRTUAL;
4193
4194
4199 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4200
4212 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue) PURE_VIRTUAL;
4213
4221 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4222
4231 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, RapidVector<uint8_t> bytes, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4232
4238 virtual char* AKDASCIICommand(const char* const command) PURE_VIRTUAL;
4239
4241 virtual void ClearFaults(int32_t axisNumber) PURE_VIRTUAL;
4242
4244 virtual uint32_t VendorIdGet() PURE_VIRTUAL;
4245
4258 virtual const char* const NameGet() PURE_VIRTUAL;
4259
4272 virtual const char* const ProductNameGet() PURE_VIRTUAL;
4273
4286 virtual const char* const VendorNameGet() PURE_VIRTUAL;
4287
4289 virtual uint32_t ProductCodeGet() PURE_VIRTUAL;
4290
4292 virtual uint32_t RevisionGet() PURE_VIRTUAL;
4293
4295 virtual uint32_t StationAliasGet() PURE_VIRTUAL;
4296
4298 virtual const char* const SerialNumberGet() PURE_VIRTUAL;
4299
4301 virtual uint32_t AxisCountGet() PURE_VIRTUAL;
4302
4304 virtual uint16_t StatusWordGet(int32_t axisIndex) PURE_VIRTUAL;
4305};
4306
4308
4311class RSI_API RapidCodeMotion : public virtual RapidCodeInterrupt{
4312public:
4313
4315 static inline constexpr int32_t AmpEnableTimeoutMillisecondsDefault = 500;
4316
4322
4325
4327
4328
4332
4350 virtual int32_t NumberGet() PURE_VIRTUAL;
4351
4368 virtual int32_t AxisCountGet() PURE_VIRTUAL;
4369
4373
4398 virtual void TriggeredModify() PURE_VIRTUAL;
4399
4426 virtual void Stop() PURE_VIRTUAL;
4427
4452 virtual void Resume() PURE_VIRTUAL;
4453
4478 virtual void EStop() PURE_VIRTUAL;
4479
4500 virtual void EStopAbort() PURE_VIRTUAL;
4501
4518 virtual void EStopModify() PURE_VIRTUAL;
4519
4522 virtual void EStopModifyAbort() PURE_VIRTUAL;
4523
4545 virtual void Abort() PURE_VIRTUAL;
4546
4573 virtual void ClearFaults() PURE_VIRTUAL;
4574
4613 virtual int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds = AmpEnableTimeoutMillisecondsDefault, bool overrideRestrictedState = false) PURE_VIRTUAL;
4614
4625 virtual bool AmpEnableGet() PURE_VIRTUAL;
4626
4646
4647 virtual void Map() PURE_VIRTUAL;
4648
4666 virtual void Unmap() PURE_VIRTUAL;
4667
4672 virtual bool IsMapped() PURE_VIRTUAL;
4673
4690 virtual void FeedRateSet(double rate) PURE_VIRTUAL;
4691
4710 virtual double FeedRateGet() PURE_VIRTUAL;
4711
4715
4716
4717
4718
4738 virtual RSIState StateGet() PURE_VIRTUAL;
4739
4767 virtual RSISource SourceGet() PURE_VIRTUAL;
4768
4793 virtual const char* const SourceNameGet(RSISource source) PURE_VIRTUAL;
4794
4817 virtual int32_t MotionDoneWait() PURE_VIRTUAL;
4818
4845 virtual int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds) PURE_VIRTUAL;
4846
4867 virtual bool MotionDoneGet() PURE_VIRTUAL;
4868
4891 virtual bool StatusBitGet(RSIEventType bitMask) PURE_VIRTUAL;
4892
4907 virtual uint64_t StatusBitsGet() PURE_VIRTUAL;
4908
4912
4941 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
4942
4956 virtual void InterruptWake() PURE_VIRTUAL;
4957
4961
4977 virtual double StopTimeGet() PURE_VIRTUAL;
4978
4994 virtual void StopTimeSet(double seconds) PURE_VIRTUAL;
4995
5011 virtual double EStopTimeGet() PURE_VIRTUAL;
5012
5028 virtual void EStopTimeSet(double seconds) PURE_VIRTUAL;
5029
5046 virtual double MotionDelayGet() PURE_VIRTUAL;
5047
5068 virtual void MotionDelaySet(double seconds) PURE_VIRTUAL;
5069
5090 virtual uint16_t MotionIdGet() PURE_VIRTUAL;
5091
5109 virtual void MotionIdSet(uint16_t id) PURE_VIRTUAL;
5110
5112 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
5113
5115 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
5116
5131 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
5132
5140 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
5141
5161 virtual RSIMotionHoldType MotionHoldTypeGet() PURE_VIRTUAL;
5162
5195 virtual void MotionHoldTypeSet(RSIMotionHoldType type) PURE_VIRTUAL;
5196
5208 virtual int32_t MotionHoldGateNumberGet() PURE_VIRTUAL;
5209
5228
5229 virtual void MotionHoldGateNumberSet(int32_t gateNumber) PURE_VIRTUAL;
5230
5247 virtual double MotionHoldTimeoutGet() PURE_VIRTUAL;
5248
5267 virtual void MotionHoldTimeoutSet(double seconds) PURE_VIRTUAL;
5268
5292 virtual bool MotionHoldGateGet() PURE_VIRTUAL;
5293
5316 virtual void MotionHoldGateSet(bool hold) PURE_VIRTUAL;
5317
5334 virtual int32_t MotionHoldAxisNumberGet() PURE_VIRTUAL;
5335
5352 virtual void MotionHoldAxisNumberSet(int32_t number) PURE_VIRTUAL;
5353
5370
5371 virtual double MotionHoldAxisPositionGet() PURE_VIRTUAL;
5372
5389 virtual void MotionHoldAxisPositionSet(double position) PURE_VIRTUAL;
5390
5392 virtual RSIUserLimitLogic MotionHoldAxisLogicGet() PURE_VIRTUAL;
5393
5395 virtual void MotionHoldAxisLogicSet(RSIUserLimitLogic logic) PURE_VIRTUAL;
5396
5413 virtual uint64_t MotionHoldUserAddressGet() PURE_VIRTUAL;
5414
5431 virtual void MotionHoldUserAddressSet(uint64_t address) PURE_VIRTUAL;
5432
5448 virtual int32_t MotionHoldUserMaskGet() PURE_VIRTUAL;
5449
5465 virtual void MotionHoldUserMaskSet(int32_t holdMask) PURE_VIRTUAL;
5466
5482 virtual int32_t MotionHoldUserPatternGet() PURE_VIRTUAL;
5483
5499 virtual void MotionHoldUserPatternSet(int32_t pattern) PURE_VIRTUAL;
5500
5502 virtual void MotionAttributeMaskDefaultSet() PURE_VIRTUAL;
5503
5528
5529 virtual bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5530
5549 virtual void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5550
5567
5568 virtual void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff) PURE_VIRTUAL;
5569
5573
5574
5575
5611 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;
5612
5650 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;
5651
5681 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;
5682
5719 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;
5720
5761 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;
5762
5767 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address) PURE_VIRTUAL;
5768
5790 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
5791
5796 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on) PURE_VIRTUAL;
5797
5816 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on, int32_t ptPointIndex) PURE_VIRTUAL;
5817
5833 virtual void StreamingOutputsClear() PURE_VIRTUAL;
5834
5854 virtual void StreamingOutputsEnableSet(bool enable) PURE_VIRTUAL;
5855};
5856
5857
5862class RSI_API Axis : public virtual RapidCodeMotion{
5863public:
5864
5865 friend class MotionController;
5866 friend class MultiAxis;
5867
5868
5873
5875 static inline constexpr uint32_t NetworkIndexInvalid = 65535;
5876
5878 static inline constexpr double AmpEnableAmpFaultTimeoutSecondsDefault = 1.0;
5879
5881
5882
5887
5892 RapidCodeNetworkNode* NetworkNode;
5893
5894
5896
5901
5939 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel) PURE_VIRTUAL;
5940
5962 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel) PURE_VIRTUAL;
5963
5986 virtual void MoveTrapezoidal(double position) PURE_VIRTUAL; // use defaults Overload
5987
5995
5996 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5997
6007 virtual void MoveSCurve(double position) PURE_VIRTUAL;
6008
6012 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
6013
6017 virtual void MoveVelocity(double velocity) PURE_VIRTUAL;
6018
6053 virtual void MoveVelocity(double velocity, double accel) PURE_VIRTUAL;
6054
6092 virtual void MoveVelocitySCurve(double velocity, double accel, double jerkPct) PURE_VIRTUAL;
6093
6135 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
6136
6143 virtual void MoveRelative(double relativePosition) PURE_VIRTUAL;
6144
6150 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
6152
6157
6182 virtual void PositionSet(double position) PURE_VIRTUAL;
6183
6202 virtual double ActualPositionGet() PURE_VIRTUAL;
6203
6225 virtual void ActualPositionSet(double position) PURE_VIRTUAL;
6226
6243 virtual double CompensationPositionGet() PURE_VIRTUAL;
6244
6257 virtual void CompensationPositionSet(double position) PURE_VIRTUAL;
6258
6270 virtual double TargetPositionGet() PURE_VIRTUAL;
6271
6291 virtual double CommandPositionGet() PURE_VIRTUAL;
6292
6324 virtual void CommandPositionSet(double position) PURE_VIRTUAL;
6325
6349 virtual void CommandPositionDirectSet(double position) PURE_VIRTUAL;
6350
6367 virtual double OriginPositionGet() PURE_VIRTUAL;
6368
6391 virtual void OriginPositionSet(double position) PURE_VIRTUAL;
6392
6413 virtual double PositionErrorGet() PURE_VIRTUAL;
6414
6436 virtual double CommandVelocityGet() PURE_VIRTUAL;
6437
6460 virtual double ActualVelocityGet() PURE_VIRTUAL;
6461
6482 virtual double CommandAccelGet() PURE_VIRTUAL;
6483
6485 virtual double CommandJerkGet() PURE_VIRTUAL;
6486
6507 virtual double EncoderPositionGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
6508
6530 virtual double UserUnitsGet() PURE_VIRTUAL;
6531
6554 virtual void UserUnitsSet(double countsPerUserUnit) PURE_VIRTUAL;
6555
6557 virtual double UserUnitsToCounts(double userUnits) PURE_VIRTUAL;
6558
6560 virtual double CountsToUserUnits(double counts) PURE_VIRTUAL;
6561
6581 virtual int32_t FramesToExecuteGet() PURE_VIRTUAL;
6583
6588
6609
6610 virtual void Home() PURE_VIRTUAL; // this one moves to zero by default
6611
6615 virtual void Home(bool moveToZero) PURE_VIRTUAL;
6616
6635
6636 virtual RSIHomeMethod HomeMethodGet() PURE_VIRTUAL;
6637
6656
6657 virtual void HomeMethodSet(RSIHomeMethod method) PURE_VIRTUAL;
6658
6679
6680 virtual double HomeOffsetGet() PURE_VIRTUAL;
6681
6726 virtual void HomeOffsetSet(double offset) PURE_VIRTUAL;
6727
6745
6746 virtual double HomeVelocityGet() PURE_VIRTUAL;
6747
6750 virtual double HomeVelocityGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6751
6772 virtual void HomeVelocitySet(double velocity) PURE_VIRTUAL;
6773
6778 virtual void HomeVelocitySet(RSIHomeStage homeStage, double velocity) PURE_VIRTUAL;
6779
6795 virtual double HomeSlowVelocityGet() PURE_VIRTUAL;
6796
6812 virtual void HomeSlowVelocitySet(double velocity) PURE_VIRTUAL;
6813
6831
6832 virtual double HomeAccelerationGet() PURE_VIRTUAL;
6833
6836 virtual double HomeAccelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6837
6857
6858 virtual void HomeAccelerationSet(double accel) PURE_VIRTUAL;
6859
6863 virtual void HomeAccelerationSet(RSIHomeStage homeStage, double accel) PURE_VIRTUAL;
6864
6881
6882 virtual double HomeDecelerationGet() PURE_VIRTUAL;
6883
6886 virtual double HomeDecelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6887
6906
6907 virtual void HomeDecelerationSet(double decel) PURE_VIRTUAL;
6908
6912 virtual void HomeDecelerationSet(RSIHomeStage homeStage, double decel) PURE_VIRTUAL;
6913
6931
6932 virtual double HomeJerkPercentGet() PURE_VIRTUAL;
6933
6936 virtual double HomeJerkPercentGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6937
6957 virtual void HomeJerkPercentSet(double percent) PURE_VIRTUAL;
6958
6963 virtual void HomeJerkPercentSet(RSIHomeStage homeStage, double percent) PURE_VIRTUAL;
6964
6984 virtual void HomeCancelSet(bool cancel) PURE_VIRTUAL;
6985
7004 virtual bool HomeStateGet() PURE_VIRTUAL;
7005
7018 virtual void HomeStateSet(bool homed) PURE_VIRTUAL;
7019
7024 virtual void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex) PURE_VIRTUAL;
7025
7027 virtual void HomeLimitCustomConfigReset() PURE_VIRTUAL;
7028
7030 virtual uint64_t HomeLimitCustomConfigAddressGet() PURE_VIRTUAL;
7031
7034 virtual int32_t HomeLimitCustomConfigBitIndexGet() PURE_VIRTUAL;
7035
7057
7058 virtual void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel) PURE_VIRTUAL;
7059
7079 virtual RSIHomeStage HomeStageGet() PURE_VIRTUAL;
7080
7094 virtual void HomeBehaviorSet(RSIAction behavior) PURE_VIRTUAL;
7095
7107 virtual RSIAction HomeBehaviorGet() PURE_VIRTUAL;
7109
7115
7117 virtual bool FaultMaskBitGet(RSIMotorFaultMask bitMask) PURE_VIRTUAL;
7118
7120 virtual uint16_t StatusWordGet() PURE_VIRTUAL;
7122
7127 // reads active configuration to report state
7128
7152
7153 virtual bool NegativeLimitGet() PURE_VIRTUAL;
7154
7178 virtual bool PositiveLimitGet() PURE_VIRTUAL;
7179
7208 virtual bool HomeLimitGet() PURE_VIRTUAL;
7209
7237 virtual bool HomeSwitchGet() PURE_VIRTUAL;
7238
7259 virtual bool AmpFaultGet() PURE_VIRTUAL;
7260
7284 virtual bool AmpEnableGet() PURE_VIRTUAL;
7285
7310 virtual bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7311
7336 virtual bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7337
7360 virtual bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7361
7383 virtual uint32_t DedicatedInputsGet() PURE_VIRTUAL;
7384
7407 virtual bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7408
7430 virtual uint32_t DedicatedOutputsGet() PURE_VIRTUAL;
7432
7437
7458 virtual bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7459
7477 virtual uint32_t DigitalInputsGet() PURE_VIRTUAL;
7478
7499 virtual bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7500
7518 virtual uint32_t DigitalOutputsGet() PURE_VIRTUAL;
7519
7540
7541 virtual void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue) PURE_VIRTUAL;
7542
7561 virtual bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7562
7581 virtual const char* const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7582
7605 virtual RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7606
7625 virtual void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type) PURE_VIRTUAL;
7626
7643 virtual double AnalogInGet(int32_t channel) PURE_VIRTUAL;
7645
7650
7664 virtual double EStopDecelerationGet() PURE_VIRTUAL;
7665
7680 virtual void EStopDecelerationSet(double decel) PURE_VIRTUAL;
7681
7692 virtual double EStopJerkPercentGet() PURE_VIRTUAL;
7693
7711 virtual void EStopJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7712
7722 virtual double TriggeredModifyDecelerationGet() PURE_VIRTUAL;
7723
7741 virtual void TriggeredModifyDecelerationSet(double decel) PURE_VIRTUAL;
7742
7753 virtual double TriggeredModifyJerkPercentGet() PURE_VIRTUAL;
7754
7772 virtual void TriggeredModifyJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7773
7775 virtual int32_t FrameBufferSizeGet() PURE_VIRTUAL;
7776
7778 virtual void FrameBufferSizeSet(int32_t frameSize) PURE_VIRTUAL;
7779
7799 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
7800
7821 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
7823
7828
7830 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
7831
7833 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
7834
7836 virtual double DefaultVelocityGet() PURE_VIRTUAL;
7837
7839 virtual void DefaultVelocitySet(double velocity) PURE_VIRTUAL;
7840
7842 virtual double DefaultAccelerationGet() PURE_VIRTUAL;
7843
7845 virtual void DefaultAccelerationSet(double acceleration) PURE_VIRTUAL;
7846
7848 virtual double DefaultDecelerationGet() PURE_VIRTUAL;
7849
7851 virtual void DefaultDecelerationSet(double deceleration) PURE_VIRTUAL;
7852
7854 virtual double DefaultJerkPercentGet() PURE_VIRTUAL;
7855
7857 virtual void DefaultJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
7858
7860 virtual double DefaultPosition1Get() PURE_VIRTUAL;
7861
7863 virtual void DefaultPosition1Set(double position1) PURE_VIRTUAL;
7864
7866 virtual double DefaultPosition2Get() PURE_VIRTUAL;
7867
7869 virtual void DefaultPosition2Set(double position2) PURE_VIRTUAL;
7870
7872 virtual double DefaultRelativeIncrementGet() PURE_VIRTUAL;
7873
7875 virtual void DefaultRelativeIncrementSet(double relativeIncrement) PURE_VIRTUAL;
7877
7881 // /@{
7882
7905 virtual RSIAction AmpFaultActionGet() PURE_VIRTUAL;
7906
7929 virtual void AmpFaultActionSet(RSIAction action) PURE_VIRTUAL;
7930
7952 virtual bool AmpFaultTriggerStateGet() PURE_VIRTUAL;
7953
7975 virtual void AmpFaultTriggerStateSet(bool state) PURE_VIRTUAL;
7976
7997 virtual double AmpFaultDurationGet() PURE_VIRTUAL;
7998
8019 virtual void AmpFaultDurationSet(double seconds) PURE_VIRTUAL;
8020
8045 virtual RSIAction HomeActionGet() PURE_VIRTUAL;
8046
8070 virtual void HomeActionSet(RSIAction action) PURE_VIRTUAL;
8071
8097 virtual bool HomeTriggerStateGet() PURE_VIRTUAL;
8098
8119 virtual void HomeTriggerStateSet(bool state) PURE_VIRTUAL;
8120
8142 virtual double HomeDurationGet() PURE_VIRTUAL;
8143
8166 virtual void HomeDurationSet(double seconds) PURE_VIRTUAL;
8167
8196 virtual RSIAction ErrorLimitActionGet() PURE_VIRTUAL;
8197
8224 virtual void ErrorLimitActionSet(RSIAction action) PURE_VIRTUAL;
8225
8248 virtual double ErrorLimitTriggerValueGet() PURE_VIRTUAL;
8249
8271 virtual void ErrorLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8272
8294 virtual double ErrorLimitDurationGet() PURE_VIRTUAL;
8295
8318 virtual void ErrorLimitDurationSet(double seconds) PURE_VIRTUAL;
8319
8344 virtual RSIAction HardwareNegLimitActionGet() PURE_VIRTUAL;
8345
8370 virtual void HardwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8371
8395 virtual bool HardwareNegLimitTriggerStateGet() PURE_VIRTUAL;
8396
8420 virtual void HardwareNegLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8421
8444 virtual double HardwareNegLimitDurationGet() PURE_VIRTUAL;
8445
8469 virtual void HardwareNegLimitDurationSet(double seconds) PURE_VIRTUAL;
8470
8495 virtual RSIAction HardwarePosLimitActionGet() PURE_VIRTUAL;
8496
8521 virtual void HardwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8522
8543 virtual bool HardwarePosLimitTriggerStateGet() PURE_VIRTUAL;
8544
8568 virtual void HardwarePosLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8569
8592 virtual double HardwarePosLimitDurationGet() PURE_VIRTUAL;
8593
8616 virtual void HardwarePosLimitDurationSet(double seconds) PURE_VIRTUAL;
8617
8643 virtual RSIAction SoftwareNegLimitActionGet() PURE_VIRTUAL;
8644
8668 virtual void SoftwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8669
8692 virtual double SoftwareNegLimitTriggerValueGet() PURE_VIRTUAL;
8693
8716 virtual void SoftwareNegLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8717
8741 virtual RSIAction SoftwarePosLimitActionGet() PURE_VIRTUAL;
8742
8766 virtual void SoftwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8767
8790 virtual double SoftwarePosLimitTriggerValueGet() PURE_VIRTUAL;
8791
8814 virtual void SoftwarePosLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8815
8841 virtual RSIAction EncoderFaultActionGet() PURE_VIRTUAL;
8842
8867 virtual void EncoderFaultActionSet(RSIAction action) PURE_VIRTUAL;
8868
8892 virtual RSIMotorFeedbackFault EncoderFaultTriggerGet() PURE_VIRTUAL;
8893
8915 virtual void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder) PURE_VIRTUAL;
8916
8938 virtual double EncoderFaultDurationGet() PURE_VIRTUAL;
8939
8961 virtual void EncoderFaultDurationSet(double seconds) PURE_VIRTUAL;
8962
8964 virtual RSIAction NodeFailureActionGet() PURE_VIRTUAL;
8965
8967 virtual void NodeFailureActionSet(RSIAction action) PURE_VIRTUAL;
8968
8984 virtual uint64_t AddressGet( RSIAxisAddressType addressType) PURE_VIRTUAL;
8985
8999 virtual RSIDataType AddressDataTypeGet(RSIAxisAddressType type) PURE_VIRTUAL;
9000
9001 // common limit methods
9002
9004 virtual RSIAction LimitActionGet(RSIEventType limit) PURE_VIRTUAL;
9005
9007 virtual void LimitActionSet(RSIEventType limit, RSIAction action) PURE_VIRTUAL;
9008
9010 virtual bool LimitTriggerStateGet(RSIEventType limit) PURE_VIRTUAL;
9011
9013 virtual void LimitTriggerStateSet(RSIEventType limit, bool triggerState) PURE_VIRTUAL;
9014
9016 virtual double LimitTriggerValueGet(RSIEventType limit) PURE_VIRTUAL;
9017
9019 virtual void LimitTriggerValueSet(RSIEventType limit, double triggerValue) PURE_VIRTUAL;
9020
9022 virtual double LimitDurationGet(RSIEventType limit) PURE_VIRTUAL;
9023
9025 virtual void LimitDurationSet(RSIEventType limit, double seconds) PURE_VIRTUAL;
9027
9032
9046 virtual double PositionToleranceFineGet() PURE_VIRTUAL;
9047
9061 virtual void PositionToleranceFineSet(double tolerance) PURE_VIRTUAL;
9062
9076 virtual double PositionToleranceCoarseGet() PURE_VIRTUAL;
9077
9094 virtual void PositionToleranceCoarseSet(double tolerance) PURE_VIRTUAL;
9095
9109 virtual double VelocityToleranceGet() PURE_VIRTUAL;
9110
9124 virtual void VelocityToleranceSet(double tolerance) PURE_VIRTUAL;
9125
9140 virtual double SettlingTimeGet() PURE_VIRTUAL;
9141
9156 virtual void SettlingTimeSet(double time) PURE_VIRTUAL;
9157
9174 virtual bool SettleOnStopGet() PURE_VIRTUAL;
9175
9192
9193 virtual void SettleOnStopSet(bool state) PURE_VIRTUAL;
9194
9211 virtual bool SettleOnEStopGet() PURE_VIRTUAL;
9212
9228 virtual void SettleOnEStopSet(bool state) PURE_VIRTUAL;
9229
9246 virtual bool SettleOnEStopCmdEqActGet() PURE_VIRTUAL;
9247
9263 virtual void SettleOnEStopCmdEqActSet(bool state) PURE_VIRTUAL;
9265
9270
9287 virtual RSIMotorType MotorTypeGet() PURE_VIRTUAL;
9288
9304 virtual void MotorTypeSet(RSIMotorType type) PURE_VIRTUAL;
9305
9322 virtual RSIMotorDisableAction AmpDisableActionGet() PURE_VIRTUAL;
9323
9341 virtual void AmpDisableActionSet(RSIMotorDisableAction action) PURE_VIRTUAL;
9342
9360
9361 virtual RSIMotorBrakeMode BrakeModeGet() PURE_VIRTUAL;
9362
9378 virtual void BrakeModeSet(RSIMotorBrakeMode mode) PURE_VIRTUAL;
9379
9395 virtual double BrakeApplyDelayGet() PURE_VIRTUAL;
9396
9397
9414 virtual void BrakeApplyDelaySet(double seconds) PURE_VIRTUAL;
9415
9431 virtual double BrakeReleaseDelayGet() PURE_VIRTUAL;
9432
9450 virtual void BrakeReleaseDelaySet(double seconds) PURE_VIRTUAL;
9451
9453 virtual void ClosedLoopStepperSet(bool enable) PURE_VIRTUAL;
9454
9456 virtual int32_t ClosedLoopStepperVersionGet() PURE_VIRTUAL;
9457
9459 virtual uint64_t EncoderPointerGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9460
9462 virtual void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address) PURE_VIRTUAL;
9463
9465 virtual uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9466
9467
9469 virtual void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9470
9472 virtual uint64_t FeedbackPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9473
9491 virtual void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9492
9494 virtual int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9495
9497 virtual int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9498
9520 virtual void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9521
9523 virtual const char* const EncoderRatioPrimaryGet() PURE_VIRTUAL;
9524
9526 virtual void EncoderRatioPrimarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9527
9529 virtual const char* const EncoderRatioSecondaryGet() PURE_VIRTUAL;
9530
9532 virtual void EncoderRatioSecondarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9533
9535 virtual int32_t EncoderCountGet() PURE_VIRTUAL;
9536
9539 virtual void EncoderCountSet(int32_t count) PURE_VIRTUAL;
9540
9542 virtual RSIAxisGantryType GantryTypeGet() PURE_VIRTUAL;
9543
9545 virtual void GantryTypeSet(RSIAxisGantryType type) PURE_VIRTUAL;
9546
9560 virtual RSIOperationMode OperationModeGet() PURE_VIRTUAL;
9561
9575 virtual void OperationModeSet(RSIOperationMode mode) PURE_VIRTUAL;
9576
9596 virtual int32_t MotorFaultMaskGet() PURE_VIRTUAL;
9597
9623 virtual void MotorFaultMaskSet(int32_t faultMask) PURE_VIRTUAL;
9625
9630
9651 virtual void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9656 virtual void GearingEnable(Axis* masterAxis, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9657
9676 virtual void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9677
9694 virtual void GearingDisable() PURE_VIRTUAL;
9695
9697 virtual int32_t GearingNumeratorGet() PURE_VIRTUAL;
9698
9700 virtual int32_t GearingDenominatorGet() PURE_VIRTUAL;
9701
9703 virtual bool GearingEnableGet() PURE_VIRTUAL;
9704
9722 virtual int32_t GearingMasterAxisNumberGet() PURE_VIRTUAL;
9723
9736 virtual RSIAxisMasterType GearingSourceGet() PURE_VIRTUAL;
9738
9743
9760 virtual double MotionCamMasterStartGet(Axis* master) PURE_VIRTUAL;
9761
9776 virtual void MotionCamMasterStartSet(Axis* master, double startPosition) PURE_VIRTUAL;
9777
9794 virtual int32_t MotionCamRepeatFromGet() PURE_VIRTUAL;
9795
9813 virtual void MotionCamRepeatFromSet(int32_t repeatFrom) PURE_VIRTUAL;
9814
9832 virtual void MotionCamRepeatStop() PURE_VIRTUAL;
9833
9855 virtual void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
9856
9886 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;
9887
9904
9905 virtual int32_t DriveIndexGet() PURE_VIRTUAL;
9907
9912
9925 virtual double BacklashWidthGet() PURE_VIRTUAL;
9926
9939 virtual void BacklashWidthSet(double width) PURE_VIRTUAL;
9940
9953 virtual double BacklashRateGet() PURE_VIRTUAL;
9954
9967 virtual void BacklashRateSet(double rate) PURE_VIRTUAL;
9968
9969
9980 virtual double BacklashValueGet() PURE_VIRTUAL;
9982
9987
10015 virtual RSIFilterAlgorithm FilterAlgorithmGet() PURE_VIRTUAL;
10016
10041 virtual void FilterAlgorithmSet(RSIFilterAlgorithm algorithm) PURE_VIRTUAL;
10042
10068 virtual double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
10069
10092 virtual void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
10093
10096 virtual double FilterCoeffGet(RSIFilterGainPIVCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
10101 virtual void FilterCoeffSet(RSIFilterGainPIVCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
10102
10137 virtual int32_t FilterGainTableGet() PURE_VIRTUAL;
10138
10167 virtual void FilterGainTableSet(int32_t gainTable) PURE_VIRTUAL;
10168
10185 virtual int32_t FilterGainTableSizeGet() PURE_VIRTUAL;
10186
10188 virtual double FilterOutputGet(void) PURE_VIRTUAL;
10189
10202 virtual double FilterLowPassGet() PURE_VIRTUAL;
10203
10219 virtual void FilterLowPassSet(double frequency) PURE_VIRTUAL;
10220
10239 virtual void FilterDualLoopSet(Axis* velocityAxis, RSIMotorFeedback velocityEncoder, bool enable) PURE_VIRTUAL;
10240
10241
10243 virtual bool FilterGainSchedulingGet() PURE_VIRTUAL;
10244
10245
10247 virtual void FilterGainSchedulingSet(bool enable) PURE_VIRTUAL;
10248
10250 virtual bool IsTuneable() PURE_VIRTUAL;
10251
10268 virtual void PostFilterLowPassSet(int32_t sectionNumber, double frequency) PURE_VIRTUAL;
10269
10285 virtual void PostFilterUnityGainSet(int32_t sectionNumber) PURE_VIRTUAL;
10286
10305 virtual void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne) PURE_VIRTUAL;
10306
10322 virtual void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq) PURE_VIRTUAL;
10323
10341 virtual void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth) PURE_VIRTUAL;
10342
10361 virtual void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain) PURE_VIRTUAL;
10362
10381 virtual void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq) PURE_VIRTUAL;
10382
10398 virtual void PostFilterClear(int32_t sectionNumber) PURE_VIRTUAL;
10399
10420 virtual void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo) PURE_VIRTUAL;
10421
10423 virtual const char* const PostFilterInfoGet() PURE_VIRTUAL;
10424 //virtual RSIFilterPostFilterSection PostFilterSection;
10426
10431
10451 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10452
10473 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10475
10480
10502 virtual void PostTrajectoryGearingEnableSet(bool enable) PURE_VIRTUAL;
10503
10522 virtual bool PostTrajectoryGearingEnableGet() PURE_VIRTUAL;
10523
10543 virtual void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber) PURE_VIRTUAL;
10544
10563 virtual int32_t PostTrajectoryGearingMasterAxisGet() PURE_VIRTUAL;
10564
10584 virtual void PostTrajectoryGearingMultiplierSet(double multiplier) PURE_VIRTUAL;
10585
10604 virtual double PostTrajectoryGearingMultiplierGet() PURE_VIRTUAL;
10605
10626 virtual double PostTrajectoryGearingScaledOffsetGet() PURE_VIRTUAL;
10628
10629
10654 virtual uint32_t NetworkIndexGet(RSINetworkIndexType indexType) PURE_VIRTUAL;
10655
10690 virtual void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex) PURE_VIRTUAL;
10691
10699 virtual double BacklashHysteresisLimitGet() PURE_VIRTUAL;
10700
10707 virtual void BacklashHysteresisLimitSet(double hysteresisLimit) PURE_VIRTUAL;
10708
10732 virtual bool StepperMotorLoopbackGet() PURE_VIRTUAL;
10733
10757 virtual void StepperMotorLoopbackSet(bool loopback) PURE_VIRTUAL;
10758
10767 virtual RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse) PURE_VIRTUAL;
10768
10778 virtual void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type) PURE_VIRTUAL;
10779
10786 virtual uint64_t GearingMasterAddressGet() PURE_VIRTUAL;
10787
10789};
10790
10794class RSI_API MultiAxis : public virtual RapidCodeMotion {
10795public:
10796
10800
10814 virtual void AxisAdd(Axis *axis) PURE_VIRTUAL;
10815
10818 virtual void AxesAdd(Axis* *axes, int32_t axisCount) PURE_VIRTUAL;
10819
10832 virtual void AxisRemoveAll() PURE_VIRTUAL;
10833
10837
10853 virtual Axis* AxisGet(int32_t index) PURE_VIRTUAL;
10854
10874 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10875
10896 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10897
10901
10916 virtual double VectorVelocityGet() PURE_VIRTUAL;
10917
10933 virtual void VectorVelocitySet(double velocity) PURE_VIRTUAL;
10934
10949 virtual double VectorAccelerationGet() PURE_VIRTUAL;
10950
10973 virtual void VectorAccelerationSet(double acceleration) PURE_VIRTUAL;
10974
10989 virtual double VectorDecelerationGet() PURE_VIRTUAL;
10990
11013 virtual void VectorDecelerationSet(double deceleration) PURE_VIRTUAL;
11014
11029 virtual double VectorJerkPercentGet() PURE_VIRTUAL;
11030
11053 virtual void VectorJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
11054
11078 virtual void MoveVector(const double* const position) PURE_VIRTUAL;
11079
11082 virtual void MoveVectorRelative(const double* const relativePosition) PURE_VIRTUAL;
11083
11087
11107
11108 virtual double PathTimeSliceGet() PURE_VIRTUAL;
11109
11130
11131 virtual void PathTimeSliceSet(double seconds) PURE_VIRTUAL;
11132
11157 virtual void PathRatioSet(const double* const ratio) PURE_VIRTUAL;
11158
11161 virtual double PathRatioGet(int32_t index) PURE_VIRTUAL;
11162
11179 virtual void PathBlendSet(bool blend) PURE_VIRTUAL;
11180
11189
11190 virtual void PathPlanTypeSet(RSIPathPlanType type) PURE_VIRTUAL;
11191
11200
11201 virtual RSIPathPlanType PathPlanTypeGet() PURE_VIRTUAL;
11202
11221 virtual void PathListStart(const double* const startPosition) PURE_VIRTUAL;
11222
11243 virtual void PathLineAdd(const double* const position) PURE_VIRTUAL;
11244
11264 virtual void PathArcAdd(const double* const center, double angle) PURE_VIRTUAL;
11265
11284 virtual void PathListEnd() PURE_VIRTUAL;
11285
11302 virtual void PathMotionStart() PURE_VIRTUAL;
11303
11307
11325 virtual void MoveTrapezoidal(const double* const position, const double* const vel, const double* const accel, const double* const decel) PURE_VIRTUAL;
11326
11329 virtual void MoveTrapezoidal(const double* const position) PURE_VIRTUAL;
11330
11360 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;
11361
11372 virtual void MoveSCurve(const double* const position) PURE_VIRTUAL;
11373
11378 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;
11379
11394 virtual void MoveVelocity(const double* const velocity, const double* const accel) PURE_VIRTUAL;
11395
11399 virtual void MoveVelocity(const double* const velocity) PURE_VIRTUAL;
11400
11422 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;
11423
11434 virtual void MoveRelative(const double* const relativePosition) PURE_VIRTUAL;
11435
11440 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;
11441
11458 virtual void MoveVelocitySCurve(const double* const velocity, const double* const accel, const double* const jerkPct) PURE_VIRTUAL;
11459
11476 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
11477
11495 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
11496
11498 virtual int32_t AxisMapCountGet() PURE_VIRTUAL;
11499
11513 virtual uint64_t AddressGet(RSIMultiAxisAddressType addressType) PURE_VIRTUAL;
11514
11528 virtual RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type) PURE_VIRTUAL;
11529
11539 virtual bool AmpEnableGet() PURE_VIRTUAL;
11540
11541
11542};
11543
11549class RSI_API IOPoint : public virtual RapidCodeObject {
11550public:
11555
11572 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorDedicatedIn motorDedicatedInNumber);
11573
11590 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11591
11607 static IOPoint* CreateDigitalInput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11608 // use NetworkNode*
11609 static IOPoint* CreateDigitalInput(IO* io, int32_t bitNumber);
11610
11621 static IOPoint* CreateDigitalInput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11622
11636 static IOPoint* CreateDigitalInput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11637
11655 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorDedicatedOut motorDedicatedOutNumber);
11656
11673 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11674
11690 static IOPoint* CreateDigitalOutput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11691 // use NetworkNode*
11692 static IOPoint* CreateDigitalOutput(IO* io, int32_t bitNumber);
11693
11694
11707 static IOPoint* CreateDigitalOutput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11708
11722 static IOPoint* CreateDigitalOutput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11723
11738 static IOPoint* CreateAnalogInput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11739 // use RapidCodeNetworkNode*
11740 static IOPoint* CreateAnalogInput(IO* io, int32_t analogChannel);
11741
11756 static IOPoint* CreateAnalogOutput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11757 // use RapidCodeNetworkNode*
11758 static IOPoint* CreateAnalogOutput(IO* io, int32_t analogChannel);
11759
11761
11765
11768 virtual uint64_t AddressGet() PURE_VIRTUAL;
11769
11772 virtual int32_t MaskGet() PURE_VIRTUAL;
11773
11776 virtual bool IsDigital() PURE_VIRTUAL;
11777
11778
11781 virtual bool IsOutput() PURE_VIRTUAL;
11782
11786
11790 virtual bool Get() PURE_VIRTUAL;
11791
11798 virtual void Set(bool state) PURE_VIRTUAL;
11799
11803
11807 virtual double ValueGet() PURE_VIRTUAL;
11808
11812 virtual void ValueSet(double valueDouble) PURE_VIRTUAL;
11813};
11814
11818class RSI_API RTOS {
11819
11820public:
11821#if defined(_WIN32)
11826
11830
11835 static INtimeStatus INtimeStatusGet(const char* const nodeName);
11836
11840
11845 static INtimeStatus INtimeStart(const char* const nodeName);
11846
11850
11855 static INtimeStatus INtimeStop(const char* const nodeName);
11856
11860
11865 static INtimeStatus INtimeRestart(const char* const nodeName);
11866
11869 static const char* const INtimeCatalogRMPGet();
11870
11873 static const char* const INtimeCatalogRMPNetworkGet();
11874
11877 static uint32_t INtimeNodeCountGet();
11878
11882 static const char* const INtimeNodeNameGet(uint32_t nodeNumber);
11883
11887 static bool INtimeNodeIsLocal(uint32_t nodeNumber);
11889#endif // _WIN32
11890};
11891
11893class RSI_API Trace
11894{
11895public:
11900
11913 static void MaskSet(RSITrace mask);
11914
11930 static void MaskOnSet(RSITrace maskOn);
11931
11932
11952 static bool MaskOnGet(RSITrace maskOn);
11953
11969 static void MaskOffSet(RSITrace maskOff);
11970
11983 static void MaskClear();
11984
11999 static int32_t FileSet(const char* const fileName);
12000
12013 static void FileClose();
12014
12029 static void InjectMessage(RSITrace traceLevel, const char* const message);
12030
12032};
12033
12035
12037
12041class RSI_API IO : public virtual RapidCodeObject {
12042public:
12043
12044 friend class MotionController;
12045
12050
12052 RapidCodeNetworkNode* NetworkNode;
12055
12057
12062
12063
12096 virtual bool IOExists() PURE_VIRTUAL;
12097
12114 virtual int32_t NumberGet() PURE_VIRTUAL;
12116
12121
12122
12123
12153 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
12154
12187 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
12188
12219 virtual void DigitalOutSet(int32_t digitalOutNumber, bool outValue) PURE_VIRTUAL;
12220
12243 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
12244
12276 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
12277
12309 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
12311
12321 virtual const char* const UserLabelGet() PURE_VIRTUAL;
12322
12329 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
12330};
12331
12332#if defined(__cplusplus)
12333}
12334#endif
12335
12336template<typename ContainerClass>
12337class RSI_API RapidVectorIterator
12338{
12339public:
12341 typedef typename ContainerClass::ValueType ValueType;
12342
12344 typedef typename ContainerClass::PointerType PointerType;
12345
12348 ValueType& operator*();
12349
12352 const ValueType& operator*() const;
12353
12356 RapidVectorIterator& operator++();
12357
12360 RapidVectorIterator operator++(int);
12361
12364 bool operator==(const RapidVectorIterator&) const;
12365
12368 bool operator!=(const RapidVectorIterator&) const;
12369
12371 RapidVectorIterator(PointerType pointerArgument, PointerType startArgument, const size_t containerSize);
12372
12374 RapidVectorIterator(const RapidVectorIterator&) = default;
12375
12377 RapidVectorIterator& operator=(const RapidVectorIterator&) = default;
12378
12380 RapidVectorIterator(RapidVectorIterator&&) noexcept = default;
12381
12383 RapidVectorIterator& operator=(RapidVectorIterator&&) noexcept = default;
12384private:
12385 PointerType pointer;
12386 PointerType start, end;
12387 void VerifyPointer() const;
12388};
12389
12390// Forward declaration of the RapidVectorImplementation class.
12391template<typename Type>
12392class RapidVectorImplementation;
12393
12396
12409template<typename Type>
12410class RSI_API RapidVector
12411{
12412private:
12413 // The pointer to the implementation.
12414 RapidVectorImplementation<Type>* pImpl;
12415public:
12419 Type& operator[](const size_t index);
12420
12424 const Type& operator[](const size_t index) const;
12425
12429 Type& At(const size_t index);
12430
12434 const Type& At(const size_t index) const;
12435
12438 void PushBack(const Type& element);
12439
12442 void PushBack(Type&& element);
12443
12446 const size_t Size() const;
12447
12449 void Clear();
12450
12452 void PopBack();
12453
12456 Type& Front();
12457
12460 const Type& Front() const;
12461
12464 Type& Back();
12465
12468 const Type& Back() const;
12469
12472 void Reserve(const size_t capacity);
12473
12476
12478#if defined(SWIG) && defined(__linux__)
12479 // SWIG 4.3.0 on Linux cannot parse the complex SFINAE template syntax
12480 // This constructor is ignored via %ignore in the .i files anyway
12481 explicit RapidVector(const size_t size);
12482#elif defined(_WIN32)
12483 template<typename = typename std::enable_if_t<std::is_default_constructible_v<Type>>>
12484 explicit RapidVector(const size_t size);
12485#else
12486 template<typename UType = Type, typename Enable = typename std::enable_if<std::is_default_constructible<UType>::value>::type>
12487 explicit RapidVector(const size_t size);
12488#endif
12489
12491 RapidVector(RapidVectorImplementation<Type>*);
12492
12495
12498
12501
12503 RapidVector(RapidVector&& other) noexcept;
12504
12507
12508 typedef Type* PointerType;
12509 typedef Type ValueType;
12510
12512 typedef RapidVectorIterator<RapidVector> Iterator;
12513
12516 Iterator begin() noexcept;
12517
12520 Iterator begin() const noexcept;
12521
12525 Iterator end() const noexcept;
12526};
12527
12529
12530} // namespace RapidCode
12531
12532} // namespace RSI
12533
12534#endif // _RSI_H
void MoveSCurve(double position)
MoveSCurve with the Axis defaults trajectory values from DefaultVelocitySet, DefaultAccelerationSet,...
void MoveRelative(double relativePosition)
void MoveVelocitySCurve(double velocity, double accel, double jerkPct)
Command a constant velocity move (jog) with non-constant acceleration.
NetworkNode * NetworkNode
Gets the associated NetworkNode object.
Definition rsi.h:5892
void MoveTrapezoidal(double position)
Point-to-point trapezoidal move.
void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel)
void MoveVelocity(double velocity)
void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel)
void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel)
Point-to-point trapezoidal move.
void MoveTrapezoidal(double position, double vel, double accel, double decel)
Point-to-point trapezoidal move.
void PositionSet(double position)
Set the Command and Actual positions.
void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct)
Command a relative point-to-point S-Curve motion.
double ActualPositionGet()
Get the current actual position.
void MoveVelocity(double velocity, double accel)
Command a constant velocity move (jog).
void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct)
Represents a single axis of motion control. This class provides an interface for commanding motion,...
Definition rsi.h:5862
bool IOExists()
IOExists validates your IO object is an IO Node.
The IO object provides an interface to the inputs and outputs of a network node.
Definition rsi.h:12041
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition rsi.h:12052
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:12054
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.
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.
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.
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.
Represents one specific point: Digital Output, Digital Input, Analog Output, or Analog Input....
Definition rsi.h:11549
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 Reset()
Reset the controller which stops and restarts the RMP firmware.
static MotionController * Get()
Get an already running RMP EtherCAT controller.
static MotionController * Create(CreationParameters *creationParameters)
Initialize and start the RMP EtherCAT controller.
static MotionController * Create()
Initialize and start the RMP EtherCAT controller.
static MotionController * CreateFromFile(const char *const fileName)
Create a MotionController from a memory-dumped file.
static MotionController * CreateFromSoftware(const char *const RtaPath, const char *const NodeName)
Initialize and start the RMP EtherCAT controller.
static MotionController * CreateFromSoftware()
Initialize and start the RMP EtherCAT controller.
void Delete(void)
Delete the MotionController and all its objects.
static MotionController * CreateFromSoftware(const char *const RtaPath)
Initialize and start the RMP EtherCAT controller.
IO * IOGet(int32_t nodeNumber)
IOGet returns a pointer to an IO object using its node number and initializes its internals.
static MotionController * Get(int32_t controllerIndex)
Get an already running RMP EtherCAT controller.
MultiAxis * MultiAxisGet(int32_t motionSupervisorNumber)
MultiAxisGet returns a pointer to a MultiAxis object and initializes its internals.
MultiAxis * LoadExistingMultiAxis(int32_t motionSupervisorNumber)
Get/Create a MultiAxis object from one that already exists (previously setup) on the RMP motion contr...
Represents the RMP soft motion controller. This class provides an interface to general controller con...
Definition rsi.h:800
MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber)
Get a MathBlock configuration.
RapidCodeOS * OS
Provides access to operating system (Windows) features.
Definition rsi.h:3840
FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber)
Get a MathBlock process value.
void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig &config)
Set a MathBlock configuration.
void AxisRemoveAll()
Remove all axes from a MultiAxis group.s.
void AxesAdd(Axis **axes, int32_t axisCount)
void AxisAdd(Axis *axis)
Add an Axis to a MultiAxis group.
Represents multiple axes of motion control, allows you to map two or more Axis objects together for e...
Definition rsi.h:10794
bool Exists()
Returns true if this NetworkNode exists on a physical network.
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:11818
const char *const InterruptNameGet()
Get the text name of an interrupt type.
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:594
void InterruptEnableSet(bool enable)
Enable or disable interrupts.
int32_t NumberGet()
Get the axis number.
The RapidCodeMotion interface is implemented by Axis and MultiAxis .
Definition rsi.h:4311
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:4324
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 TimerCountGet()
Gets the time since startup.
The RapidCodeOS object provides access to operating system (Windows) features. Accessible via MotionC...
Definition rsi.h:497
const char *const VersionGet()
Get the RSI RapidCode version.
The RapidCode base class. All non-error objects are derived from this class.
Definition rsi.h:184
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.
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:12411
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:12512
~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:150
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:173
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:11894
RSIFilterAlgorithm
Filter algorithms.
Definition rsienums.h:1159
RSINetworkEniResult
NetworkEniGenerate return values.
Definition rsienums.h:1451
RSIPDOType
Compensator output types.
Definition rsienums.h:1425
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1431
RSICompensatorOutputType
Compensator output types.
Definition rsienums.h:1419
RSINetworkStartMode
Network start modes.
Definition rsienums.h:588
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
Definition rsienums.h:1146
RSITrace
Trace masks.
Definition rsienums.h:540
RSIMotorStepperPulse
Pulse A or B.
Definition rsienums.h:1249
RSIAxisGantryType
How to combine Axis Feedback Positions.
Definition rsienums.h:1139
RSINetworkState
State of network.
Definition rsienums.h:568
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:1319
RSIEventType
Event Types or Status Bits.
Definition rsienums.h:966
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:1038
RSIDataType
Data types for User Limits and other triggers.
Definition rsienums.h:659
RSIUserLimitLogic
Logic options for User Limits.
Definition rsienums.h:646
RSIMotorIoTypeMask
Possible mask bits for Motor I/O types.
Definition rsienums.h:1265
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1115
RSIAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:434
RSIProcessorType
Controller's processor type.
Definition rsienums.h:295
RSIMotorStepperPulseType
Stepper pulse type.
Definition rsienums.h:1255
RSIMotorType
Motor Type.
Definition rsienums.h:1311
RSINetworkStartError
Network start errors.
Definition rsienums.h:594
RSIMotorGeneralIo
Motor I/O bit numbers.
Definition rsienums.h:917
RSIMotionAttrMask
Attribute masks for motion. You cannot mix RSIMotionAttrMaskDELAY and RSIMotionAttrMaskAPPEND.
Definition rsienums.h:1060
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:497
RSIFilterGainPIDCoeff
PID gain coefficients.
Definition rsienums.h:1168
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:633
RSINetworkOutputAddressType
Network output address types.
Definition rsienums.h:1412
INtimeStatus
INtime status values.
Definition rsienums.h:1357
RSIMotionHoldType
Types for MotionHold attribute.
Definition rsienums.h:1095
RSIControllerType
Controller type.
Definition rsienums.h:284
RSIMotorFaultMask
Mask values for several motor faults.
Definition rsienums.h:1299
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:397
RSIMotorBrakeMode
Brake modes.
Definition rsienums.h:1325
RSIErrorMessage
All possible RSI Error Messages.
Definition rsienums.h:17
RSINetworkType
Type of Network topology.
Definition rsienums.h:626
RSIMotorIoType
Possible configurations for Motor I/O.
Definition rsienums.h:1228
RSIAxisPositionInput
Feedback Positions for each Axis.
Definition rsienums.h:1133
RSINodeType
Valid Node types.
Definition rsienums.h:677
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:1014
RSIMotorDedicatedIn
Dedicated Input bits per motor.
Definition rsienums.h:889
RSIMotorFeedback
Encoders per motor.
Definition rsienums.h:1153
RSIMotorDedicatedOut
Dedicated Output bits per motor.
Definition rsienums.h:911
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1331
RSIPathPlanType
Path motion planning types.
Definition rsienums.h:1054
RSINetworkTechnologyType
Network technology type.
Definition rsienums.h:1352
RSINetworkIndexType
Network PDO index types for configuring axis input/output mappings.
Definition rsienums.h:1390
RSINetworkStartupMethod
Network startup methods.
Definition rsienums.h:580
RSIFilterGainPIVCoeff
PIV gain coefficients.
Definition rsienums.h:1189
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1218
int32_t ControllerIndex
The index of the controller to create.
Definition rsi.h:956
int32_t CpuAffinity
[Linux] Indicate the CPU core on which the RMP and RMPNetwork processes run.
Definition rsi.h:1014
int32_t RmpThreadPriorityMax
[Linux] The maximum thread priority. All threads of the RMP and RMPNetwork will be based off of this....
Definition rsi.h:1026
CreationParameters()
Instantiate with default values and all memory zeroed out.
Definition rsi.h:932
CreationParameters for MotionController::Create.
Definition rsi.h:866
RSIDataType ProcessDataType
Data type for processing.
Definition rsi.h:3818
MathBlock configuration structure.
Definition rsi.h:3811
RSIDataType OutputDataType
Data type for Output. (optional)
Definition rsi.h:3816
uint64_t OutputAddress
Host memory address for Output. The MathBlock will write its result to this address....
Definition rsi.h:3817
uint64_t InputAddress0
Host memory address for Input0. Represents the left-hand side operand in math operations.
Definition rsi.h:3812
RSIDataType InputDataType0
Data type for Input0. This is the data type of the left-hand side operand in math operations.
Definition rsi.h:3813
uint64_t InputAddress1
Host memory address for Input1. Represents the right-hand side operand in math operations.
Definition rsi.h:3814
RSIDataType InputDataType1
Data type for Input1. This is the data type of the right-hand side operand in math operations.
Definition rsi.h:3815
RSIMathBlockOperation Operation
Math operation to be performed. (+, -, *, /, etc) use RSIMathBlockOperationNONE to disable a MathBloc...
Definition rsi.h:3819
Union representing a generic RMP firmware value with multiple data types, stored in 64-bits.
Definition rsi.h:468
float Float
Single precision (32-bit) floating-point.
Definition rsi.h:476
int64_t Int64
64-bit signed integer.
Definition rsi.h:478
uint8_t UInt8
8-bit unsigned integer.
Definition rsi.h:471
int8_t Int8
8-bit signed integer.
Definition rsi.h:470
double Double
Double precision (64-bit) floating-point.
Definition rsi.h:477
int32_t Int32
32-bit signed integer.
Definition rsi.h:474
uint16_t UInt16
16-bit unsigned integer.
Definition rsi.h:473
int16_t Int16
16-bit signed integer.
Definition rsi.h:472
bool Bool
Boolean value.
Definition rsi.h:469
uint32_t UInt32
32-bit unsigned integer.
Definition rsi.h:475
uint64_t UInt64
64-bit unsigned integer.
Definition rsi.h:479