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
1158 virtual Axis* AxisGet(int32_t axisNumber) PURE_VIRTUAL;
1159
1176 virtual MultiAxis* MultiAxisGet(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1177
1191 virtual MultiAxis* LoadExistingMultiAxis(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1192
1207 virtual RapidCodeNetworkNode* NetworkNodeGet(int32_t nodeNumber) PURE_VIRTUAL;
1208
1224 virtual IO* IOGet(int32_t nodeNumber) PURE_VIRTUAL;
1225
1248 virtual void Delete(void) PURE_VIRTUAL;
1250
1255
1265 virtual void Reset() PURE_VIRTUAL;
1266
1276 virtual void Refresh() PURE_VIRTUAL;
1277
1285 virtual void Shutdown() PURE_VIRTUAL;
1286
1295 virtual void MemoryToFile(const char* const fileName) PURE_VIRTUAL;
1297
1302
1325 virtual int32_t SampleCounterGet() PURE_VIRTUAL;
1326
1341 virtual double ProcessorUsageGet() PURE_VIRTUAL;
1342
1353 virtual void ProcessorUsageClear() PURE_VIRTUAL;
1354
1358 virtual uint32_t FirmwareTimingDeltaGet() PURE_VIRTUAL;
1359
1360
1362
1367
1368
1372 virtual CreationParameters CreationParametersGet() PURE_VIRTUAL;
1373
1396 virtual uint32_t SerialNumberGet(void) PURE_VIRTUAL;
1397
1416 virtual void SampleWait(uint32_t samples) PURE_VIRTUAL;
1417
1418
1420 virtual RSIControllerType ControllerTypeGet() PURE_VIRTUAL;
1421
1423 virtual const char* const ServerNameGet() PURE_VIRTUAL;
1424
1426 virtual int32_t ServerPortGet() PURE_VIRTUAL;
1427
1428
1429
1430
1452 virtual RSIProcessorType ProcessorTypeGet() PURE_VIRTUAL;
1453
1478 virtual void SampleRateSet(double sampleRate) PURE_VIRTUAL;
1479
1483 virtual double SampleRateGet() PURE_VIRTUAL;
1484
1502 virtual int32_t AxisCountGet() PURE_VIRTUAL;
1503
1522 virtual void AxisCountSet(int32_t axisCount) PURE_VIRTUAL;
1523
1526 virtual void AxisCountSet(int32_t axisCount, bool setMotorFilterSupervisor) PURE_VIRTUAL;
1527
1530 virtual bool IsLicensed() PURE_VIRTUAL;
1531
1533 virtual int32_t PackageVariantGet() PURE_VIRTUAL;
1534
1536 virtual int32_t AxisLicenseCountGet() PURE_VIRTUAL;
1537
1539 virtual bool MechaWareLicenseGet() PURE_VIRTUAL;
1540
1542 virtual int32_t UnsupportedOptionSet(int32_t option) PURE_VIRTUAL;
1543
1568 virtual int32_t MotionCountGet() PURE_VIRTUAL;
1569
1586 virtual void MotionCountSet(int32_t motionCount) PURE_VIRTUAL;
1587
1613 virtual int32_t UserVersionGet() PURE_VIRTUAL;
1614
1638 virtual void UserVersionSet(int32_t version) PURE_VIRTUAL;
1639
1642 virtual int32_t ExternalMemorySizeGet() PURE_VIRTUAL;
1643
1660 virtual void AxisFrameBufferSizeSet(int32_t axisNumber, int32_t frameBufferSize) PURE_VIRTUAL;
1661
1676 virtual int32_t AxisFrameBufferSizeGet(int32_t axisNumber) PURE_VIRTUAL;
1678
1683
1701 virtual const char* const FirmwareVersionGet() PURE_VIRTUAL;
1702
1720 virtual int32_t FirmwareOptionGet() PURE_VIRTUAL;
1721
1723 virtual bool HasMechaWare() PURE_VIRTUAL;
1724
1748 virtual int32_t MemoryGet(uint64_t address) PURE_VIRTUAL;
1749
1750
1768 virtual double MemoryDoubleGet(uint64_t address) PURE_VIRTUAL;
1769
1795 virtual void MemoryBlockGet(uint64_t address, void* dataStart, int32_t size) PURE_VIRTUAL;
1796
1811 virtual void MemorySet(uint64_t address, int32_t data) PURE_VIRTUAL;
1812
1813
1814
1831 virtual void MemoryDoubleSet(uint64_t address, double dataDouble) PURE_VIRTUAL;
1832
1858 virtual void MemoryBlockSet(uint64_t address, const void* const dataStart, int32_t size) PURE_VIRTUAL;
1859
1878 virtual uint32_t FirmwareAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1879
1880
1881
1882
1905 virtual uint64_t HostAddressGet(uint32_t firmwareAddress) PURE_VIRTUAL;
1906
1907
1908
1931 virtual int32_t BackgroundCycleCounterGet() PURE_VIRTUAL;
1932
1933
1934
1935
1944 virtual uint64_t AddressFromStringGet(const char* const addressName) PURE_VIRTUAL;
1945
1946
1947
1956 virtual const char* const StringFromAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1957
1972 virtual uint64_t AddressGet(RSIControllerAddressType type) PURE_VIRTUAL;
1973
1991 virtual uint64_t AddressGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1992
1993
2006 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type) PURE_VIRTUAL;
2007
2012 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
2013
2027 virtual bool MotionHoldGateGet(int32_t gateNumber) PURE_VIRTUAL;
2028
2029
2030
2046 virtual void MotionHoldGateSet(int32_t gateNumber, bool hold) PURE_VIRTUAL;
2048
2053
2055 virtual RSINetworkTechnologyType NetworkTechnologyTypeGet() PURE_VIRTUAL;
2056
2058 virtual RSINetworkType NetworkTypeGet() PURE_VIRTUAL;
2059
2062 virtual int32_t NetworkNodeCountGet() PURE_VIRTUAL;
2063
2109 virtual RSINetworkEniResult NetworkEniGenerate() PURE_VIRTUAL;
2110
2131 virtual const char* const NetworkEniGenerateOutputGet() PURE_VIRTUAL;
2132
2139 virtual void NetworkStart() PURE_VIRTUAL;
2140
2145 virtual void NetworkStart(RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2146
2153 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2154
2159 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
2160
2171 virtual void NetworkShutdown() PURE_VIRTUAL;
2172
2175 virtual RSINetworkState NetworkStateGet() PURE_VIRTUAL;
2176
2178 virtual int32_t NetworkCounterGet() PURE_VIRTUAL;
2179
2181 virtual int32_t NetworkInputCountGet() PURE_VIRTUAL;
2182
2184 virtual int32_t NetworkInputBitSizeGet(int32_t index) PURE_VIRTUAL;
2185
2189 virtual const char* const NetworkInputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2190
2193 virtual int32_t NetworkInputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2194
2197 virtual const char* const NetworkInputNameGet(int32_t index) PURE_VIRTUAL;
2198
2202 virtual uint64_t NetworkInputValueGet(int32_t index) PURE_VIRTUAL;
2203
2204
2205
2209 virtual uint64_t NetworkInputAddressGet(int32_t index) PURE_VIRTUAL;
2210
2214 virtual int32_t NetworkOutputCountGet() PURE_VIRTUAL;
2215
2218 virtual int32_t NetworkOutputBitSizeGet(int32_t index) PURE_VIRTUAL;
2219
2220
2224 virtual const char* const NetworkOutputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2225
2227 virtual int32_t NetworkOutputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2228
2230 virtual const char* const NetworkOutputNameGet(int32_t index) PURE_VIRTUAL;
2231
2247 virtual uint64_t NetworkOutputValueGet(int32_t index) PURE_VIRTUAL;
2248
2265 virtual void NetworkOutputValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2266
2285 virtual uint64_t NetworkOutputAddressGet(int32_t index) PURE_VIRTUAL;
2286
2291 virtual uint64_t NetworkOutputAddressGet(int32_t index, RSINetworkOutputAddressType type) PURE_VIRTUAL;
2292
2303 virtual uint64_t NetworkOutputIntendedValueGet(int32_t index) PURE_VIRTUAL;
2304
2316 virtual void NetworkOutputOverrideSet(int32_t index, bool outputOverride) PURE_VIRTUAL;
2317
2328 virtual bool NetworkOutputOverrideGet(int32_t index) PURE_VIRTUAL;
2329
2330
2331
2332
2349 virtual void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2350
2363 virtual uint64_t NetworkOutputOverrideValueGet(int32_t index) PURE_VIRTUAL;
2364
2379 virtual uint64_t NetworkOutputSentValueGet(int32_t index) PURE_VIRTUAL;
2380
2384 virtual int32_t NetworkLogMessageCountGet() PURE_VIRTUAL;
2385
2387 virtual RSINetworkStartError LastNetworkStartErrorGet() PURE_VIRTUAL;
2388
2393 virtual const char* const NetworkLogMessageGet(int32_t messageIndex) PURE_VIRTUAL;
2394
2396 virtual void NetworkTimingEnableSet(bool enable) PURE_VIRTUAL;
2397
2399 virtual void NetworkTimingClear() PURE_VIRTUAL;
2400
2402 virtual uint32_t NetworkTimingDeltaGet() PURE_VIRTUAL;
2403
2405 virtual uint32_t NetworkTimingMinGet() PURE_VIRTUAL;
2406
2408 virtual uint32_t NetworkTimingMaxGet() PURE_VIRTUAL;
2409
2411 virtual void NetworkTimingThresholdLowSet(uint32_t microseconds) PURE_VIRTUAL;
2412
2414 virtual void NetworkTimingThresholdHighSet(uint32_t microseconds) PURE_VIRTUAL;
2415
2417 virtual uint32_t NetworkTimingThresholdLowCountGet() PURE_VIRTUAL;
2418
2420 virtual uint32_t NetworkTimingThresholdHighCountGet() PURE_VIRTUAL;
2421
2423 virtual bool NetworkSynchronizedGet() PURE_VIRTUAL;
2425
2430
2447 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
2448
2467 virtual void InterruptWake() PURE_VIRTUAL;
2468
2496 virtual void SyncInterruptEnableSet(bool enable) PURE_VIRTUAL;
2497
2523 virtual void SyncInterruptPeriodSet(uint32_t samples) PURE_VIRTUAL;
2524
2544 virtual int32_t SyncInterruptWait() PURE_VIRTUAL;
2545
2547 virtual bool ServiceThreadStateGet() PURE_VIRTUAL;
2548
2559 virtual int32_t SyncInterruptHostProcessTimeGet() PURE_VIRTUAL;
2560
2562 virtual int32_t SyncInterruptHostProcessFlagGet() PURE_VIRTUAL;
2563
2576 virtual void SyncInterruptHostProcessFlagSet(bool hostProcessFlag) PURE_VIRTUAL;
2577
2588 virtual bool SyncInterruptHostProcessStatusBitGet() PURE_VIRTUAL;
2589
2599 virtual void SyncInterruptHostProcessStatusClear() PURE_VIRTUAL;
2600
2626
2627 virtual void ServiceThreadEnableSet(bool enable) PURE_VIRTUAL;
2629
2634
2635
2636
2655 virtual int32_t RecorderCountGet() PURE_VIRTUAL;
2656
2674 virtual void RecorderCountSet(int32_t recorderCount) PURE_VIRTUAL;
2675
2692 virtual void RecorderPeriodSet(uint32_t samples) PURE_VIRTUAL;
2693
2695 virtual void RecorderPeriodSet(int32_t recorderNumber, uint32_t samples) PURE_VIRTUAL;
2696
2713 virtual void RecorderCircularBufferSet(bool enable) PURE_VIRTUAL;
2714
2716 virtual void RecorderCircularBufferSet(int32_t recorderNumber, bool enable) PURE_VIRTUAL;
2717
2733 virtual void RecorderDataCountSet(int32_t count) PURE_VIRTUAL;
2734
2736 virtual void RecorderDataCountSet(int32_t recorderNumber,int32_t count) PURE_VIRTUAL;
2737
2754 virtual void RecorderDataAddressSet(int32_t index, uint64_t address) PURE_VIRTUAL;
2755
2757 virtual void RecorderDataAddressSet(int32_t recorderNumber,int32_t index, uint64_t address) PURE_VIRTUAL;
2758
2759
2765 virtual void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t* const addresses, int32_t addressCount) PURE_VIRTUAL;
2766
2780
2786 virtual void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2787
2794 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2795
2801 virtual void RecorderConfigureToTriggerOnMotion(MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2802
2809 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2810
2817 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, int32_t motionNumber, bool triggerOnMotion) PURE_VIRTUAL;
2818
2827 virtual bool RecorderTriggerOnMotionGet(int32_t recorderNumber) PURE_VIRTUAL;
2828
2844 virtual bool RecorderEnabledGet() PURE_VIRTUAL;
2845
2847 virtual bool RecorderEnabledGet(int32_t recorderNumber ) PURE_VIRTUAL;
2848
2865 virtual int32_t RecorderRecordCountGet() PURE_VIRTUAL;
2866
2868 virtual int32_t RecorderRecordCountGet(int32_t recorderNumber ) PURE_VIRTUAL;
2869
2883 virtual int32_t RecorderRecordMaxCountGet() PURE_VIRTUAL;
2884
2886 virtual int32_t RecorderRecordMaxCountGet(int32_t recorderNumber) PURE_VIRTUAL;
2887
2902 virtual void RecorderStart() PURE_VIRTUAL;
2903
2905 virtual void RecorderStart(int32_t recorderNumber) PURE_VIRTUAL;
2906
2923 virtual void RecorderStop() PURE_VIRTUAL;
2924
2926 virtual void RecorderStop(int32_t recorderNumber) PURE_VIRTUAL;
2927
2928
2929
2945 virtual const int32_t* const RecorderRecordDataGet() PURE_VIRTUAL;
2946
2948 virtual const int32_t* const RecorderRecordDataGet(int32_t recorderNumber) PURE_VIRTUAL;
2949
2964 virtual void RecorderRecordDataRetrieve() PURE_VIRTUAL;
2965
2985 virtual int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount) PURE_VIRTUAL;
2986
2988 virtual void RecorderRecordDataRetrieve(int32_t recorderNumber) PURE_VIRTUAL;
2989
3006 virtual int32_t RecorderRecordDataValueGet(int32_t index) PURE_VIRTUAL;
3007
3009 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
3010
3029 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3030
3032 virtual double RecorderRecordDataDoubleGet(int32_t index) PURE_VIRTUAL;
3033
3035 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
3036
3055 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3056
3074 virtual void RecorderBufferHighCountSet(int32_t bufferHighCount) PURE_VIRTUAL;
3075
3077 virtual void RecorderBufferHighCountSet(int32_t recorderNumber, int32_t bufferHighCount) PURE_VIRTUAL;
3078
3093 virtual void RecorderReset() PURE_VIRTUAL;
3094
3096 virtual void RecorderReset(int32_t recorderNumber) PURE_VIRTUAL;
3097
3109 virtual int32_t RecorderBufferSizeGet(int32_t recorderNumber) PURE_VIRTUAL;
3110
3127 virtual void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize) PURE_VIRTUAL;
3129
3134
3135
3136
3137
3162 virtual int32_t CompensatorCountGet() PURE_VIRTUAL;
3163
3183 virtual void CompensatorCountSet(int32_t compensatorCount) PURE_VIRTUAL;
3184
3195 virtual int32_t CompensatorPointCountGet(int32_t compensatorNumber) PURE_VIRTUAL;
3196
3216 virtual void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount) PURE_VIRTUAL;
3217
3231 virtual int32_t CompensatorDimensionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3232
3258 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;
3259
3289 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;
3290
3311 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;
3312
3333 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;
3334
3346 virtual void CompensatorTableSet(int32_t compensatorNumber, const double* const table) PURE_VIRTUAL;
3347
3359 virtual void CompensatorTableGet(int32_t compensatorNumber, double* table) PURE_VIRTUAL;
3360
3380 virtual double CompensatorPositionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3381
3382
3383
3384
3385
3386
3398
3399 virtual void CompensatorTableClear(int32_t compensatorNumber) PURE_VIRTUAL;
3400
3409 virtual void CompensatorDisable(int32_t compensatorNumber) PURE_VIRTUAL;
3410
3415 virtual void CompensatorDisable(int32_t compensatorNumber, bool force) PURE_VIRTUAL;
3416
3423 virtual void CompensatorEnable(int32_t compensatorNumber) PURE_VIRTUAL;
3424
3426
3431
3451 virtual int32_t UserLimitCountGet() PURE_VIRTUAL;
3452
3472 virtual void UserLimitCountSet(int32_t userLimitCount) PURE_VIRTUAL;
3473
3493 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot) PURE_VIRTUAL;
3494
3497 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration) PURE_VIRTUAL;
3498
3500 virtual RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number) PURE_VIRTUAL;
3501
3503 virtual RSIAction UserLimitActionGet(int32_t number) PURE_VIRTUAL;
3504
3506 virtual int32_t UserLimitAxisNumberGet(int32_t number) PURE_VIRTUAL;
3507
3509 virtual double UserLimitDurationGet(int32_t number) PURE_VIRTUAL;
3510
3512 virtual bool UserLimitSingleShotGet(int32_t number) PURE_VIRTUAL;
3513
3538 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32) PURE_VIRTUAL;
3539
3561 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfDouble, double limitValueDouble) PURE_VIRTUAL;
3562
3564 virtual RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3565
3567 virtual RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3568
3570 virtual uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3571
3573 virtual uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3574
3576 virtual int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3577
3579 virtual double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3580
3607 virtual void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3608
3611 virtual void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3612
3615 virtual void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3616
3619 virtual void UserLimitOutputSet(int32_t number, double limitValueDouble, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3620
3636 virtual void UserLimitOutputSet(int32_t number, RSIDataType dataType, uint64_t inputPtr, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3637
3639 virtual bool UserLimitOutputEnableGet(int32_t number) PURE_VIRTUAL;
3640
3642 virtual RSIDataType UserLimitOutputDataTypeGet(int32_t number) PURE_VIRTUAL;
3643
3645 virtual uint64_t UserLimitOutputAddressGet(int32_t number) PURE_VIRTUAL;
3646
3648 virtual uint64_t UserLimitOutputInputAddressGet(int32_t number) PURE_VIRTUAL;
3649
3651 virtual uint32_t UserLimitOutputAndMaskGet(int32_t number) PURE_VIRTUAL;
3652
3654 virtual uint32_t UserLimitOutputOrMaskGet(int32_t number) PURE_VIRTUAL;
3655
3657 virtual int32_t UserLimitOutputValueGet(int32_t number) PURE_VIRTUAL;
3658
3660 virtual uint64_t UserLimitOutputAndMask64Get(int32_t number) PURE_VIRTUAL;
3661
3663 virtual uint64_t UserLimitOutputOrMask64Get(int32_t number) PURE_VIRTUAL;
3664
3665
3667 virtual double UserLimitOutputDoubleGet(int32_t number) PURE_VIRTUAL;
3668
3689 virtual bool UserLimitStateGet(int32_t number) PURE_VIRTUAL;
3690
3711 virtual bool UserLimitEnableGet(int32_t number) PURE_VIRTUAL;
3712
3714 virtual void UserLimitEnableSet(int32_t number, bool enable) PURE_VIRTUAL;
3715
3730 virtual void UserLimitDisable(int32_t number) PURE_VIRTUAL;
3731
3743 virtual void UserLimitReset(int32_t number) PURE_VIRTUAL;
3744
3753
3754 virtual int32_t UserLimitCountMax() PURE_VIRTUAL;
3755
3773 virtual void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address) PURE_VIRTUAL;
3774
3776 virtual uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex) PURE_VIRTUAL;
3778
3779
3784
3794 virtual int32_t MathBlockCountGet() PURE_VIRTUAL;
3795
3806 virtual void MathBlockCountSet(int32_t mathBlockCount) PURE_VIRTUAL;
3807
3826
3828 virtual MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3829
3831 virtual void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig& config) PURE_VIRTUAL;
3832
3834 virtual FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3835
3837
3838
3843
3846
3848};
3849
3853class RSI_API RapidCodeNetworkNode : public virtual RapidCodeObject {
3854public:
3855
3860
3862 static inline constexpr uint32_t SDOTimeoutMillisecondsDefault = 100;
3863
3865
3866
3871
3873 virtual bool Exists() PURE_VIRTUAL;
3874
3876 virtual RSINodeType TypeGet() PURE_VIRTUAL;
3877
3879 virtual bool IsEtherCAT() PURE_VIRTUAL;
3880
3882 virtual bool IsSynqNet() PURE_VIRTUAL;
3883
3885
3890
3898 virtual bool HasIO() PURE_VIRTUAL;
3899
3909 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
3910
3920 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
3921
3930 virtual void DigitalOutSet(int32_t digitalOutNumber, bool state) PURE_VIRTUAL;
3931
3941 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
3942
3952 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
3953
3962 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
3963
3965
3969
3977 virtual int32_t DigitalInCountGet() PURE_VIRTUAL;
3978
3986 virtual int32_t DigitalOutCountGet() PURE_VIRTUAL;
3987
3995 virtual int32_t AnalogInCountGet() PURE_VIRTUAL;
3996
4004 virtual int32_t AnalogOutCountGet() PURE_VIRTUAL;
4005
4006
4008 virtual int32_t SegmentCountGet() PURE_VIRTUAL;
4009
4011 virtual int32_t SegmentDigitalInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4012
4014 virtual int32_t SegmentDigitalOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4015
4017 virtual int32_t SegmentAnalogInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4018
4020 virtual int32_t SegmentAnalogOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
4021
4023 virtual int32_t SegmentIDGet(int32_t segmentNumber) PURE_VIRTUAL;
4024
4037 virtual uint64_t DigitalInAddressGet(int32_t bitNumber) PURE_VIRTUAL;
4038
4051 virtual int32_t DigitalInMaskGet(int32_t bitNumber) PURE_VIRTUAL;
4052
4065 virtual uint64_t DigitalOutAddressGet(int32_t bitNumber) PURE_VIRTUAL;
4066
4079 virtual int32_t DigitalOutMaskGet(int32_t bitNumber) PURE_VIRTUAL;
4080
4092 virtual uint64_t AnalogInAddressGet(int32_t channel) PURE_VIRTUAL;
4093
4105 virtual int32_t AnalogInMaskGet(int32_t channel) PURE_VIRTUAL;
4106
4118 virtual uint64_t AnalogOutAddressGet(int32_t channel) PURE_VIRTUAL;
4119
4131 virtual int32_t AnalogOutMaskGet(int32_t channel) PURE_VIRTUAL;
4132
4146 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4147
4151 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4152
4165 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4166
4170 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4171
4182 virtual RapidVector<uint8_t> ServiceChannelReadBytes(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4183
4197 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue) PURE_VIRTUAL;
4198
4199
4204 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4205
4217 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue) PURE_VIRTUAL;
4218
4226 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4227
4236 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, RapidVector<uint8_t> bytes, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4237
4243 virtual char* AKDASCIICommand(const char* const command) PURE_VIRTUAL;
4244
4246 virtual void ClearFaults(int32_t axisNumber) PURE_VIRTUAL;
4247
4249 virtual uint32_t VendorIdGet() PURE_VIRTUAL;
4250
4263 virtual const char* const NameGet() PURE_VIRTUAL;
4264
4277 virtual const char* const ProductNameGet() PURE_VIRTUAL;
4278
4291 virtual const char* const VendorNameGet() PURE_VIRTUAL;
4292
4294 virtual uint32_t ProductCodeGet() PURE_VIRTUAL;
4295
4297 virtual uint32_t RevisionGet() PURE_VIRTUAL;
4298
4300 virtual uint32_t StationAliasGet() PURE_VIRTUAL;
4301
4303 virtual const char* const SerialNumberGet() PURE_VIRTUAL;
4304
4306 virtual uint32_t AxisCountGet() PURE_VIRTUAL;
4307
4309 virtual uint16_t StatusWordGet(int32_t axisIndex) PURE_VIRTUAL;
4310};
4311
4313
4316class RSI_API RapidCodeMotion : public virtual RapidCodeInterrupt{
4317public:
4318
4320 static inline constexpr int32_t AmpEnableTimeoutMillisecondsDefault = 500;
4321
4327
4330
4332
4333
4337
4355 virtual int32_t NumberGet() PURE_VIRTUAL;
4356
4373 virtual int32_t AxisCountGet() PURE_VIRTUAL;
4374
4378
4403 virtual void TriggeredModify() PURE_VIRTUAL;
4404
4431 virtual void Stop() PURE_VIRTUAL;
4432
4457 virtual void Resume() PURE_VIRTUAL;
4458
4483 virtual void EStop() PURE_VIRTUAL;
4484
4505 virtual void EStopAbort() PURE_VIRTUAL;
4506
4523 virtual void EStopModify() PURE_VIRTUAL;
4524
4527 virtual void EStopModifyAbort() PURE_VIRTUAL;
4528
4550 virtual void Abort() PURE_VIRTUAL;
4551
4578 virtual void ClearFaults() PURE_VIRTUAL;
4579
4620 virtual int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds = AmpEnableTimeoutMillisecondsDefault, bool overrideRestrictedState = false) PURE_VIRTUAL;
4621
4632 virtual bool AmpEnableGet() PURE_VIRTUAL;
4633
4653
4654 virtual void Map() PURE_VIRTUAL;
4655
4673 virtual void Unmap() PURE_VIRTUAL;
4674
4679 virtual bool IsMapped() PURE_VIRTUAL;
4680
4697 virtual void FeedRateSet(double rate) PURE_VIRTUAL;
4698
4717 virtual double FeedRateGet() PURE_VIRTUAL;
4718
4722
4723
4724
4725
4745 virtual RSIState StateGet() PURE_VIRTUAL;
4746
4774 virtual RSISource SourceGet() PURE_VIRTUAL;
4775
4800 virtual const char* const SourceNameGet(RSISource source) PURE_VIRTUAL;
4801
4824 virtual int32_t MotionDoneWait() PURE_VIRTUAL;
4825
4852 virtual int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds) PURE_VIRTUAL;
4853
4874 virtual bool MotionDoneGet() PURE_VIRTUAL;
4875
4898 virtual bool StatusBitGet(RSIEventType bitMask) PURE_VIRTUAL;
4899
4914 virtual uint64_t StatusBitsGet() PURE_VIRTUAL;
4915
4919
4948 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
4949
4963 virtual void InterruptWake() PURE_VIRTUAL;
4964
4968
4984 virtual double StopTimeGet() PURE_VIRTUAL;
4985
5001 virtual void StopTimeSet(double seconds) PURE_VIRTUAL;
5002
5018 virtual double EStopTimeGet() PURE_VIRTUAL;
5019
5035 virtual void EStopTimeSet(double seconds) PURE_VIRTUAL;
5036
5053 virtual double MotionDelayGet() PURE_VIRTUAL;
5054
5075 virtual void MotionDelaySet(double seconds) PURE_VIRTUAL;
5076
5097 virtual uint16_t MotionIdGet() PURE_VIRTUAL;
5098
5116 virtual void MotionIdSet(uint16_t id) PURE_VIRTUAL;
5117
5119 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
5120
5122 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
5123
5138 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
5139
5147 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
5148
5168 virtual RSIMotionHoldType MotionHoldTypeGet() PURE_VIRTUAL;
5169
5202 virtual void MotionHoldTypeSet(RSIMotionHoldType type) PURE_VIRTUAL;
5203
5215 virtual int32_t MotionHoldGateNumberGet() PURE_VIRTUAL;
5216
5235
5236 virtual void MotionHoldGateNumberSet(int32_t gateNumber) PURE_VIRTUAL;
5237
5254 virtual double MotionHoldTimeoutGet() PURE_VIRTUAL;
5255
5274 virtual void MotionHoldTimeoutSet(double seconds) PURE_VIRTUAL;
5275
5299 virtual bool MotionHoldGateGet() PURE_VIRTUAL;
5300
5323 virtual void MotionHoldGateSet(bool hold) PURE_VIRTUAL;
5324
5341 virtual int32_t MotionHoldAxisNumberGet() PURE_VIRTUAL;
5342
5359 virtual void MotionHoldAxisNumberSet(int32_t number) PURE_VIRTUAL;
5360
5377
5378 virtual double MotionHoldAxisPositionGet() PURE_VIRTUAL;
5379
5396 virtual void MotionHoldAxisPositionSet(double position) PURE_VIRTUAL;
5397
5399 virtual RSIUserLimitLogic MotionHoldAxisLogicGet() PURE_VIRTUAL;
5400
5402 virtual void MotionHoldAxisLogicSet(RSIUserLimitLogic logic) PURE_VIRTUAL;
5403
5420 virtual uint64_t MotionHoldUserAddressGet() PURE_VIRTUAL;
5421
5438 virtual void MotionHoldUserAddressSet(uint64_t address) PURE_VIRTUAL;
5439
5455 virtual int32_t MotionHoldUserMaskGet() PURE_VIRTUAL;
5456
5472 virtual void MotionHoldUserMaskSet(int32_t holdMask) PURE_VIRTUAL;
5473
5489 virtual int32_t MotionHoldUserPatternGet() PURE_VIRTUAL;
5490
5506 virtual void MotionHoldUserPatternSet(int32_t pattern) PURE_VIRTUAL;
5507
5509 virtual void MotionAttributeMaskDefaultSet() PURE_VIRTUAL;
5510
5535
5536 virtual bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5537
5556 virtual void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5557
5574
5575 virtual void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff) PURE_VIRTUAL;
5576
5580
5581
5582
5618 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;
5619
5657 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;
5658
5688 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;
5689
5694 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address) PURE_VIRTUAL;
5695
5717 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
5718
5723 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on) PURE_VIRTUAL;
5724
5743 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on, int32_t ptPointIndex) PURE_VIRTUAL;
5744
5760 virtual void StreamingOutputsClear() PURE_VIRTUAL;
5761
5781 virtual void StreamingOutputsEnableSet(bool enable) PURE_VIRTUAL;
5782};
5783
5784
5789class RSI_API Axis : public virtual RapidCodeMotion{
5790public:
5791
5792 friend class MotionController;
5793 friend class MultiAxis;
5794
5795
5800
5802 static inline constexpr uint32_t NetworkIndexInvalid = 65535;
5803
5805 static inline constexpr double AmpEnableAmpFaultTimeoutSecondsDefault = 1.0;
5806
5808
5809
5814
5819 RapidCodeNetworkNode* NetworkNode;
5820
5821
5823
5828
5866 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel) PURE_VIRTUAL;
5867
5889 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel) PURE_VIRTUAL;
5890
5913 virtual void MoveTrapezoidal(double position) PURE_VIRTUAL; // use defaults Overload
5914
5922
5923 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5924
5934 virtual void MoveSCurve(double position) PURE_VIRTUAL;
5935
5939 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5940
5944 virtual void MoveVelocity(double velocity) PURE_VIRTUAL;
5945
5980 virtual void MoveVelocity(double velocity, double accel) PURE_VIRTUAL;
5981
6019 virtual void MoveVelocitySCurve(double velocity, double accel, double jerkPct) PURE_VIRTUAL;
6020
6062 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
6063
6070 virtual void MoveRelative(double relativePosition) PURE_VIRTUAL;
6071
6077 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
6079
6084
6109 virtual void PositionSet(double position) PURE_VIRTUAL;
6110
6129 virtual double ActualPositionGet() PURE_VIRTUAL;
6130
6152 virtual void ActualPositionSet(double position) PURE_VIRTUAL;
6153
6170 virtual double CompensationPositionGet() PURE_VIRTUAL;
6171
6184 virtual void CompensationPositionSet(double position) PURE_VIRTUAL;
6185
6197 virtual double TargetPositionGet() PURE_VIRTUAL;
6198
6218 virtual double CommandPositionGet() PURE_VIRTUAL;
6219
6251 virtual void CommandPositionSet(double position) PURE_VIRTUAL;
6252
6276 virtual void CommandPositionDirectSet(double position) PURE_VIRTUAL;
6277
6294 virtual double OriginPositionGet() PURE_VIRTUAL;
6295
6318 virtual void OriginPositionSet(double position) PURE_VIRTUAL;
6319
6340 virtual double PositionErrorGet() PURE_VIRTUAL;
6341
6363 virtual double CommandVelocityGet() PURE_VIRTUAL;
6364
6387 virtual double ActualVelocityGet() PURE_VIRTUAL;
6388
6409 virtual double CommandAccelGet() PURE_VIRTUAL;
6410
6412 virtual double CommandJerkGet() PURE_VIRTUAL;
6413
6434 virtual double EncoderPositionGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
6435
6457 virtual double UserUnitsGet() PURE_VIRTUAL;
6458
6481 virtual void UserUnitsSet(double countsPerUserUnit) PURE_VIRTUAL;
6482
6484 virtual double UserUnitsToCounts(double userUnits) PURE_VIRTUAL;
6485
6487 virtual double CountsToUserUnits(double counts) PURE_VIRTUAL;
6488
6508 virtual int32_t FramesToExecuteGet() PURE_VIRTUAL;
6510
6515
6536
6537 virtual void Home() PURE_VIRTUAL; // this one moves to zero by default
6538
6542 virtual void Home(bool moveToZero) PURE_VIRTUAL;
6543
6562
6563 virtual RSIHomeMethod HomeMethodGet() PURE_VIRTUAL;
6564
6583
6584 virtual void HomeMethodSet(RSIHomeMethod method) PURE_VIRTUAL;
6585
6606
6607 virtual double HomeOffsetGet() PURE_VIRTUAL;
6608
6653 virtual void HomeOffsetSet(double offset) PURE_VIRTUAL;
6654
6672
6673 virtual double HomeVelocityGet() PURE_VIRTUAL;
6674
6677 virtual double HomeVelocityGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6678
6699 virtual void HomeVelocitySet(double velocity) PURE_VIRTUAL;
6700
6705 virtual void HomeVelocitySet(RSIHomeStage homeStage, double velocity) PURE_VIRTUAL;
6706
6722 virtual double HomeSlowVelocityGet() PURE_VIRTUAL;
6723
6739 virtual void HomeSlowVelocitySet(double velocity) PURE_VIRTUAL;
6740
6758
6759 virtual double HomeAccelerationGet() PURE_VIRTUAL;
6760
6763 virtual double HomeAccelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6764
6784
6785 virtual void HomeAccelerationSet(double accel) PURE_VIRTUAL;
6786
6790 virtual void HomeAccelerationSet(RSIHomeStage homeStage, double accel) PURE_VIRTUAL;
6791
6808
6809 virtual double HomeDecelerationGet() PURE_VIRTUAL;
6810
6813 virtual double HomeDecelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6814
6833
6834 virtual void HomeDecelerationSet(double decel) PURE_VIRTUAL;
6835
6839 virtual void HomeDecelerationSet(RSIHomeStage homeStage, double decel) PURE_VIRTUAL;
6840
6858
6859 virtual double HomeJerkPercentGet() PURE_VIRTUAL;
6860
6863 virtual double HomeJerkPercentGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6864
6884 virtual void HomeJerkPercentSet(double percent) PURE_VIRTUAL;
6885
6890 virtual void HomeJerkPercentSet(RSIHomeStage homeStage, double percent) PURE_VIRTUAL;
6891
6911 virtual void HomeCancelSet(bool cancel) PURE_VIRTUAL;
6912
6931 virtual bool HomeStateGet() PURE_VIRTUAL;
6932
6945 virtual void HomeStateSet(bool homed) PURE_VIRTUAL;
6946
6951 virtual void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex) PURE_VIRTUAL;
6952
6954 virtual void HomeLimitCustomConfigReset() PURE_VIRTUAL;
6955
6957 virtual uint64_t HomeLimitCustomConfigAddressGet() PURE_VIRTUAL;
6958
6961 virtual int32_t HomeLimitCustomConfigBitIndexGet() PURE_VIRTUAL;
6962
6984
6985 virtual void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel) PURE_VIRTUAL;
6986
7006 virtual RSIHomeStage HomeStageGet() PURE_VIRTUAL;
7007
7021 virtual void HomeBehaviorSet(RSIAction behavior) PURE_VIRTUAL;
7022
7034 virtual RSIAction HomeBehaviorGet() PURE_VIRTUAL;
7036
7042
7044 virtual bool FaultMaskBitGet(RSIMotorFaultMask bitMask) PURE_VIRTUAL;
7045
7047 virtual uint16_t StatusWordGet() PURE_VIRTUAL;
7049
7054 // reads active configuration to report state
7055
7079
7080 virtual bool NegativeLimitGet() PURE_VIRTUAL;
7081
7105 virtual bool PositiveLimitGet() PURE_VIRTUAL;
7106
7135 virtual bool HomeLimitGet() PURE_VIRTUAL;
7136
7164 virtual bool HomeSwitchGet() PURE_VIRTUAL;
7165
7186 virtual bool AmpFaultGet() PURE_VIRTUAL;
7187
7211 virtual bool AmpEnableGet() PURE_VIRTUAL;
7212
7237 virtual bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7238
7263 virtual bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7264
7287 virtual bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7288
7310 virtual uint32_t DedicatedInputsGet() PURE_VIRTUAL;
7311
7334 virtual bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7335
7357 virtual uint32_t DedicatedOutputsGet() PURE_VIRTUAL;
7359
7364
7385 virtual bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7386
7404 virtual uint32_t DigitalInputsGet() PURE_VIRTUAL;
7405
7426 virtual bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7427
7445 virtual uint32_t DigitalOutputsGet() PURE_VIRTUAL;
7446
7467
7468 virtual void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue) PURE_VIRTUAL;
7469
7488 virtual bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7489
7508 virtual const char* const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7509
7532 virtual RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7533
7552 virtual void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type) PURE_VIRTUAL;
7553
7570 virtual double AnalogInGet(int32_t channel) PURE_VIRTUAL;
7572
7577
7591 virtual double EStopDecelerationGet() PURE_VIRTUAL;
7592
7607 virtual void EStopDecelerationSet(double decel) PURE_VIRTUAL;
7608
7619 virtual double EStopJerkPercentGet() PURE_VIRTUAL;
7620
7638 virtual void EStopJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7639
7649 virtual double TriggeredModifyDecelerationGet() PURE_VIRTUAL;
7650
7668 virtual void TriggeredModifyDecelerationSet(double decel) PURE_VIRTUAL;
7669
7680 virtual double TriggeredModifyJerkPercentGet() PURE_VIRTUAL;
7681
7699 virtual void TriggeredModifyJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7700
7702 virtual int32_t FrameBufferSizeGet() PURE_VIRTUAL;
7703
7705 virtual void FrameBufferSizeSet(int32_t frameSize) PURE_VIRTUAL;
7706
7726 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
7727
7748 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
7750
7755
7757 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
7758
7760 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
7761
7763 virtual double DefaultVelocityGet() PURE_VIRTUAL;
7764
7766 virtual void DefaultVelocitySet(double velocity) PURE_VIRTUAL;
7767
7769 virtual double DefaultAccelerationGet() PURE_VIRTUAL;
7770
7772 virtual void DefaultAccelerationSet(double acceleration) PURE_VIRTUAL;
7773
7775 virtual double DefaultDecelerationGet() PURE_VIRTUAL;
7776
7778 virtual void DefaultDecelerationSet(double deceleration) PURE_VIRTUAL;
7779
7781 virtual double DefaultJerkPercentGet() PURE_VIRTUAL;
7782
7784 virtual void DefaultJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
7785
7787 virtual double DefaultPosition1Get() PURE_VIRTUAL;
7788
7790 virtual void DefaultPosition1Set(double position1) PURE_VIRTUAL;
7791
7793 virtual double DefaultPosition2Get() PURE_VIRTUAL;
7794
7796 virtual void DefaultPosition2Set(double position2) PURE_VIRTUAL;
7797
7799 virtual double DefaultRelativeIncrementGet() PURE_VIRTUAL;
7800
7802 virtual void DefaultRelativeIncrementSet(double relativeIncrement) PURE_VIRTUAL;
7804
7808 // /@{
7809
7832 virtual RSIAction AmpFaultActionGet() PURE_VIRTUAL;
7833
7856 virtual void AmpFaultActionSet(RSIAction action) PURE_VIRTUAL;
7857
7879 virtual bool AmpFaultTriggerStateGet() PURE_VIRTUAL;
7880
7902 virtual void AmpFaultTriggerStateSet(bool state) PURE_VIRTUAL;
7903
7924 virtual double AmpFaultDurationGet() PURE_VIRTUAL;
7925
7946 virtual void AmpFaultDurationSet(double seconds) PURE_VIRTUAL;
7947
7972 virtual RSIAction HomeActionGet() PURE_VIRTUAL;
7973
7997 virtual void HomeActionSet(RSIAction action) PURE_VIRTUAL;
7998
8024 virtual bool HomeTriggerStateGet() PURE_VIRTUAL;
8025
8046 virtual void HomeTriggerStateSet(bool state) PURE_VIRTUAL;
8047
8069 virtual double HomeDurationGet() PURE_VIRTUAL;
8070
8093 virtual void HomeDurationSet(double seconds) PURE_VIRTUAL;
8094
8123 virtual RSIAction ErrorLimitActionGet() PURE_VIRTUAL;
8124
8151 virtual void ErrorLimitActionSet(RSIAction action) PURE_VIRTUAL;
8152
8175 virtual double ErrorLimitTriggerValueGet() PURE_VIRTUAL;
8176
8198 virtual void ErrorLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8199
8221 virtual double ErrorLimitDurationGet() PURE_VIRTUAL;
8222
8245 virtual void ErrorLimitDurationSet(double seconds) PURE_VIRTUAL;
8246
8271 virtual RSIAction HardwareNegLimitActionGet() PURE_VIRTUAL;
8272
8297 virtual void HardwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8298
8322 virtual bool HardwareNegLimitTriggerStateGet() PURE_VIRTUAL;
8323
8347 virtual void HardwareNegLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8348
8371 virtual double HardwareNegLimitDurationGet() PURE_VIRTUAL;
8372
8396 virtual void HardwareNegLimitDurationSet(double seconds) PURE_VIRTUAL;
8397
8422 virtual RSIAction HardwarePosLimitActionGet() PURE_VIRTUAL;
8423
8448 virtual void HardwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8449
8470 virtual bool HardwarePosLimitTriggerStateGet() PURE_VIRTUAL;
8471
8495 virtual void HardwarePosLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8496
8519 virtual double HardwarePosLimitDurationGet() PURE_VIRTUAL;
8520
8543 virtual void HardwarePosLimitDurationSet(double seconds) PURE_VIRTUAL;
8544
8570 virtual RSIAction SoftwareNegLimitActionGet() PURE_VIRTUAL;
8571
8595 virtual void SoftwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8596
8619 virtual double SoftwareNegLimitTriggerValueGet() PURE_VIRTUAL;
8620
8643 virtual void SoftwareNegLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8644
8668 virtual RSIAction SoftwarePosLimitActionGet() PURE_VIRTUAL;
8669
8693 virtual void SoftwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8694
8717 virtual double SoftwarePosLimitTriggerValueGet() PURE_VIRTUAL;
8718
8741 virtual void SoftwarePosLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8742
8768 virtual RSIAction EncoderFaultActionGet() PURE_VIRTUAL;
8769
8794 virtual void EncoderFaultActionSet(RSIAction action) PURE_VIRTUAL;
8795
8819 virtual RSIMotorFeedbackFault EncoderFaultTriggerGet() PURE_VIRTUAL;
8820
8842 virtual void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder) PURE_VIRTUAL;
8843
8865 virtual double EncoderFaultDurationGet() PURE_VIRTUAL;
8866
8888 virtual void EncoderFaultDurationSet(double seconds) PURE_VIRTUAL;
8889
8891 virtual RSIAction NodeFailureActionGet() PURE_VIRTUAL;
8892
8894 virtual void NodeFailureActionSet(RSIAction action) PURE_VIRTUAL;
8895
8911 virtual uint64_t AddressGet( RSIAxisAddressType addressType) PURE_VIRTUAL;
8912
8926 virtual RSIDataType AddressDataTypeGet(RSIAxisAddressType type) PURE_VIRTUAL;
8927
8928 // common limit methods
8929
8931 virtual RSIAction LimitActionGet(RSIEventType limit) PURE_VIRTUAL;
8932
8934 virtual void LimitActionSet(RSIEventType limit, RSIAction action) PURE_VIRTUAL;
8935
8937 virtual bool LimitTriggerStateGet(RSIEventType limit) PURE_VIRTUAL;
8938
8940 virtual void LimitTriggerStateSet(RSIEventType limit, bool triggerState) PURE_VIRTUAL;
8941
8943 virtual double LimitTriggerValueGet(RSIEventType limit) PURE_VIRTUAL;
8944
8946 virtual void LimitTriggerValueSet(RSIEventType limit, double triggerValue) PURE_VIRTUAL;
8947
8949 virtual double LimitDurationGet(RSIEventType limit) PURE_VIRTUAL;
8950
8952 virtual void LimitDurationSet(RSIEventType limit, double seconds) PURE_VIRTUAL;
8954
8959
8973 virtual double PositionToleranceFineGet() PURE_VIRTUAL;
8974
8988 virtual void PositionToleranceFineSet(double tolerance) PURE_VIRTUAL;
8989
9003 virtual double PositionToleranceCoarseGet() PURE_VIRTUAL;
9004
9021 virtual void PositionToleranceCoarseSet(double tolerance) PURE_VIRTUAL;
9022
9036 virtual double VelocityToleranceGet() PURE_VIRTUAL;
9037
9051 virtual void VelocityToleranceSet(double tolerance) PURE_VIRTUAL;
9052
9067 virtual double SettlingTimeGet() PURE_VIRTUAL;
9068
9083 virtual void SettlingTimeSet(double time) PURE_VIRTUAL;
9084
9101 virtual bool SettleOnStopGet() PURE_VIRTUAL;
9102
9119
9120 virtual void SettleOnStopSet(bool state) PURE_VIRTUAL;
9121
9138 virtual bool SettleOnEStopGet() PURE_VIRTUAL;
9139
9155 virtual void SettleOnEStopSet(bool state) PURE_VIRTUAL;
9156
9173 virtual bool SettleOnEStopCmdEqActGet() PURE_VIRTUAL;
9174
9190 virtual void SettleOnEStopCmdEqActSet(bool state) PURE_VIRTUAL;
9192
9197
9214 virtual RSIMotorType MotorTypeGet() PURE_VIRTUAL;
9215
9231 virtual void MotorTypeSet(RSIMotorType type) PURE_VIRTUAL;
9232
9249 virtual RSIMotorDisableAction AmpDisableActionGet() PURE_VIRTUAL;
9250
9268 virtual void AmpDisableActionSet(RSIMotorDisableAction action) PURE_VIRTUAL;
9269
9287
9288 virtual RSIMotorBrakeMode BrakeModeGet() PURE_VIRTUAL;
9289
9305 virtual void BrakeModeSet(RSIMotorBrakeMode mode) PURE_VIRTUAL;
9306
9322 virtual double BrakeApplyDelayGet() PURE_VIRTUAL;
9323
9324
9341 virtual void BrakeApplyDelaySet(double seconds) PURE_VIRTUAL;
9342
9358 virtual double BrakeReleaseDelayGet() PURE_VIRTUAL;
9359
9377 virtual void BrakeReleaseDelaySet(double seconds) PURE_VIRTUAL;
9378
9380 virtual void ClosedLoopStepperSet(bool enable) PURE_VIRTUAL;
9381
9383 virtual int32_t ClosedLoopStepperVersionGet() PURE_VIRTUAL;
9384
9386 virtual uint64_t EncoderPointerGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9387
9389 virtual void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address) PURE_VIRTUAL;
9390
9392 virtual uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9393
9394
9396 virtual void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9397
9399 virtual uint64_t FeedbackPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9400
9418 virtual void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9419
9421 virtual int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9422
9424 virtual int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9425
9447 virtual void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9448
9450 virtual const char* const EncoderRatioPrimaryGet() PURE_VIRTUAL;
9451
9453 virtual void EncoderRatioPrimarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9454
9456 virtual const char* const EncoderRatioSecondaryGet() PURE_VIRTUAL;
9457
9459 virtual void EncoderRatioSecondarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9460
9462 virtual int32_t EncoderCountGet() PURE_VIRTUAL;
9463
9466 virtual void EncoderCountSet(int32_t count) PURE_VIRTUAL;
9467
9469 virtual RSIAxisGantryType GantryTypeGet() PURE_VIRTUAL;
9470
9472 virtual void GantryTypeSet(RSIAxisGantryType type) PURE_VIRTUAL;
9473
9487 virtual RSIOperationMode OperationModeGet() PURE_VIRTUAL;
9488
9502 virtual void OperationModeSet(RSIOperationMode mode) PURE_VIRTUAL;
9503
9523 virtual int32_t MotorFaultMaskGet() PURE_VIRTUAL;
9524
9550 virtual void MotorFaultMaskSet(int32_t faultMask) PURE_VIRTUAL;
9552
9557
9579 virtual void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9584 virtual void GearingEnable(Axis* masterAxis, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9585
9604 virtual void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9605
9622 virtual void GearingDisable() PURE_VIRTUAL;
9623
9625 virtual int32_t GearingNumeratorGet() PURE_VIRTUAL;
9626
9628 virtual int32_t GearingDenominatorGet() PURE_VIRTUAL;
9629
9631 virtual bool GearingEnableGet() PURE_VIRTUAL;
9632
9650 virtual int32_t GearingMasterAxisNumberGet() PURE_VIRTUAL;
9651
9664 virtual RSIAxisMasterType GearingSourceGet() PURE_VIRTUAL;
9666
9671
9688 virtual double MotionCamMasterStartGet(Axis* master) PURE_VIRTUAL;
9689
9704 virtual void MotionCamMasterStartSet(Axis* master, double startPosition) PURE_VIRTUAL;
9705
9722 virtual int32_t MotionCamRepeatFromGet() PURE_VIRTUAL;
9723
9741 virtual void MotionCamRepeatFromSet(int32_t repeatFrom) PURE_VIRTUAL;
9742
9760 virtual void MotionCamRepeatStop() PURE_VIRTUAL;
9761
9784 virtual void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
9785
9815 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;
9816
9833
9834 virtual int32_t DriveIndexGet() PURE_VIRTUAL;
9836
9841
9854 virtual double BacklashWidthGet() PURE_VIRTUAL;
9855
9868 virtual void BacklashWidthSet(double width) PURE_VIRTUAL;
9869
9882 virtual double BacklashRateGet() PURE_VIRTUAL;
9883
9896 virtual void BacklashRateSet(double rate) PURE_VIRTUAL;
9897
9898
9909 virtual double BacklashValueGet() PURE_VIRTUAL;
9911
9916
9944 virtual RSIFilterAlgorithm FilterAlgorithmGet() PURE_VIRTUAL;
9945
9970 virtual void FilterAlgorithmSet(RSIFilterAlgorithm algorithm) PURE_VIRTUAL;
9971
9997 virtual double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9998
10021 virtual void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
10022
10025 virtual double FilterCoeffGet(RSIFilterGainPIVCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
10030 virtual void FilterCoeffSet(RSIFilterGainPIVCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
10031
10066 virtual int32_t FilterGainTableGet() PURE_VIRTUAL;
10067
10096 virtual void FilterGainTableSet(int32_t gainTable) PURE_VIRTUAL;
10097
10114 virtual int32_t FilterGainTableSizeGet() PURE_VIRTUAL;
10115
10117 virtual double FilterOutputGet(void) PURE_VIRTUAL;
10118
10131 virtual double FilterLowPassGet() PURE_VIRTUAL;
10132
10148 virtual void FilterLowPassSet(double frequency) PURE_VIRTUAL;
10149
10168 virtual void FilterDualLoopSet(Axis* velocityAxis, RSIMotorFeedback velocityEncoder, bool enable) PURE_VIRTUAL;
10169
10170
10172 virtual bool FilterGainSchedulingGet() PURE_VIRTUAL;
10173
10174
10176 virtual void FilterGainSchedulingSet(bool enable) PURE_VIRTUAL;
10177
10179 virtual bool IsTuneable() PURE_VIRTUAL;
10180
10197 virtual void PostFilterLowPassSet(int32_t sectionNumber, double frequency) PURE_VIRTUAL;
10198
10214 virtual void PostFilterUnityGainSet(int32_t sectionNumber) PURE_VIRTUAL;
10215
10234 virtual void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne) PURE_VIRTUAL;
10235
10251 virtual void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq) PURE_VIRTUAL;
10252
10270 virtual void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth) PURE_VIRTUAL;
10271
10290 virtual void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain) PURE_VIRTUAL;
10291
10310 virtual void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq) PURE_VIRTUAL;
10311
10327 virtual void PostFilterClear(int32_t sectionNumber) PURE_VIRTUAL;
10328
10349 virtual void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo) PURE_VIRTUAL;
10350
10352 virtual const char* const PostFilterInfoGet() PURE_VIRTUAL;
10353 //virtual RSIFilterPostFilterSection PostFilterSection;
10355
10360
10380 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10381
10402 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10404
10409
10431 virtual void PostTrajectoryGearingEnableSet(bool enable) PURE_VIRTUAL;
10432
10451 virtual bool PostTrajectoryGearingEnableGet() PURE_VIRTUAL;
10452
10472 virtual void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber) PURE_VIRTUAL;
10473
10492 virtual int32_t PostTrajectoryGearingMasterAxisGet() PURE_VIRTUAL;
10493
10513 virtual void PostTrajectoryGearingMultiplierSet(double multiplier) PURE_VIRTUAL;
10514
10533 virtual double PostTrajectoryGearingMultiplierGet() PURE_VIRTUAL;
10534
10555 virtual double PostTrajectoryGearingScaledOffsetGet() PURE_VIRTUAL;
10557
10558
10577 virtual uint32_t NetworkIndexGet(RSINetworkIndexType indexType) PURE_VIRTUAL;
10578
10597 virtual void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex) PURE_VIRTUAL;
10598
10606 virtual double BacklashHysteresisLimitGet() PURE_VIRTUAL;
10607
10614 virtual void BacklashHysteresisLimitSet(double hysteresisLimit) PURE_VIRTUAL;
10615
10639 virtual bool StepperMotorLoopbackGet() PURE_VIRTUAL;
10640
10664 virtual void StepperMotorLoopbackSet(bool loopback) PURE_VIRTUAL;
10665
10674 virtual RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse) PURE_VIRTUAL;
10675
10685 virtual void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type) PURE_VIRTUAL;
10686
10693 virtual uint64_t GearingMasterAddressGet() PURE_VIRTUAL;
10694
10696};
10697
10701class RSI_API MultiAxis : public virtual RapidCodeMotion {
10702public:
10703
10707
10721 virtual void AxisAdd(Axis *axis) PURE_VIRTUAL;
10722
10725 virtual void AxesAdd(Axis* *axes, int32_t axisCount) PURE_VIRTUAL;
10726
10739 virtual void AxisRemoveAll() PURE_VIRTUAL;
10740
10744
10760 virtual Axis* AxisGet(int32_t index) PURE_VIRTUAL;
10761
10781 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10782
10803 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10804
10808
10823 virtual double VectorVelocityGet() PURE_VIRTUAL;
10824
10840 virtual void VectorVelocitySet(double velocity) PURE_VIRTUAL;
10841
10856 virtual double VectorAccelerationGet() PURE_VIRTUAL;
10857
10880 virtual void VectorAccelerationSet(double acceleration) PURE_VIRTUAL;
10881
10896 virtual double VectorDecelerationGet() PURE_VIRTUAL;
10897
10920 virtual void VectorDecelerationSet(double deceleration) PURE_VIRTUAL;
10921
10936 virtual double VectorJerkPercentGet() PURE_VIRTUAL;
10937
10960 virtual void VectorJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
10961
10985 virtual void MoveVector(const double* const position) PURE_VIRTUAL;
10986
10989 virtual void MoveVectorRelative(const double* const relativePosition) PURE_VIRTUAL;
10990
10994
11014
11015 virtual double PathTimeSliceGet() PURE_VIRTUAL;
11016
11037
11038 virtual void PathTimeSliceSet(double seconds) PURE_VIRTUAL;
11039
11064 virtual void PathRatioSet(const double* const ratio) PURE_VIRTUAL;
11065
11068 virtual double PathRatioGet(int32_t index) PURE_VIRTUAL;
11069
11086 virtual void PathBlendSet(bool blend) PURE_VIRTUAL;
11087
11096
11097 virtual void PathPlanTypeSet(RSIPathPlanType type) PURE_VIRTUAL;
11098
11107
11108 virtual RSIPathPlanType PathPlanTypeGet() PURE_VIRTUAL;
11109
11128 virtual void PathListStart(const double* const startPosition) PURE_VIRTUAL;
11129
11150 virtual void PathLineAdd(const double* const position) PURE_VIRTUAL;
11151
11171 virtual void PathArcAdd(const double* const center, double angle) PURE_VIRTUAL;
11172
11191 virtual void PathListEnd() PURE_VIRTUAL;
11192
11209 virtual void PathMotionStart() PURE_VIRTUAL;
11210
11214
11232 virtual void MoveTrapezoidal(const double* const position, const double* const vel, const double* const accel, const double* const decel) PURE_VIRTUAL;
11233
11236 virtual void MoveTrapezoidal(const double* const position) PURE_VIRTUAL;
11237
11267 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;
11268
11279 virtual void MoveSCurve(const double* const position) PURE_VIRTUAL;
11280
11285 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;
11286
11301 virtual void MoveVelocity(const double* const velocity, const double* const accel) PURE_VIRTUAL;
11302
11306 virtual void MoveVelocity(const double* const velocity) PURE_VIRTUAL;
11307
11329 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;
11330
11341 virtual void MoveRelative(const double* const relativePosition) PURE_VIRTUAL;
11342
11347 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;
11348
11365 virtual void MoveVelocitySCurve(const double* const velocity, const double* const accel, const double* const jerkPct) PURE_VIRTUAL;
11366
11383 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
11384
11402 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
11403
11405 virtual int32_t AxisMapCountGet() PURE_VIRTUAL;
11406
11420 virtual uint64_t AddressGet(RSIMultiAxisAddressType addressType) PURE_VIRTUAL;
11421
11435 virtual RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type) PURE_VIRTUAL;
11436
11446 virtual bool AmpEnableGet() PURE_VIRTUAL;
11447
11448
11449};
11450
11456class RSI_API IOPoint : public virtual RapidCodeObject {
11457public:
11462
11479 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorDedicatedIn motorDedicatedInNumber);
11480
11497 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11498
11514 static IOPoint* CreateDigitalInput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11515 // use NetworkNode*
11516 static IOPoint* CreateDigitalInput(IO* io, int32_t bitNumber);
11517
11528 static IOPoint* CreateDigitalInput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11529
11543 static IOPoint* CreateDigitalInput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11544
11562 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorDedicatedOut motorDedicatedOutNumber);
11563
11580 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11581
11597 static IOPoint* CreateDigitalOutput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11598 // use NetworkNode*
11599 static IOPoint* CreateDigitalOutput(IO* io, int32_t bitNumber);
11600
11601
11614 static IOPoint* CreateDigitalOutput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11615
11629 static IOPoint* CreateDigitalOutput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11630
11645 static IOPoint* CreateAnalogInput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11646 // use RapidCodeNetworkNode*
11647 static IOPoint* CreateAnalogInput(IO* io, int32_t analogChannel);
11648
11663 static IOPoint* CreateAnalogOutput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11664 // use RapidCodeNetworkNode*
11665 static IOPoint* CreateAnalogOutput(IO* io, int32_t analogChannel);
11666
11668
11672
11675 virtual uint64_t AddressGet() PURE_VIRTUAL;
11676
11679 virtual int32_t MaskGet() PURE_VIRTUAL;
11680
11683 virtual bool IsDigital() PURE_VIRTUAL;
11684
11685
11688 virtual bool IsOutput() PURE_VIRTUAL;
11689
11693
11697 virtual bool Get() PURE_VIRTUAL;
11698
11705 virtual void Set(bool state) PURE_VIRTUAL;
11706
11710
11714 virtual double ValueGet() PURE_VIRTUAL;
11715
11719 virtual void ValueSet(double valueDouble) PURE_VIRTUAL;
11720};
11721
11725class RSI_API RTOS {
11726
11727public:
11728#if defined(_WIN32)
11733
11737
11742 static INtimeStatus INtimeStatusGet(const char* const nodeName);
11743
11747
11752 static INtimeStatus INtimeStart(const char* const nodeName);
11753
11757
11762 static INtimeStatus INtimeStop(const char* const nodeName);
11763
11767
11772 static INtimeStatus INtimeRestart(const char* const nodeName);
11773
11776 static const char* const INtimeCatalogRMPGet();
11777
11780 static const char* const INtimeCatalogRMPNetworkGet();
11781
11784 static uint32_t INtimeNodeCountGet();
11785
11789 static const char* const INtimeNodeNameGet(uint32_t nodeNumber);
11790
11794 static bool INtimeNodeIsLocal(uint32_t nodeNumber);
11796#endif // _WIN32
11797};
11798
11800class RSI_API Trace
11801{
11802public:
11807
11820 static void MaskSet(RSITrace mask);
11821
11837 static void MaskOnSet(RSITrace maskOn);
11838
11839
11859 static bool MaskOnGet(RSITrace maskOn);
11860
11876 static void MaskOffSet(RSITrace maskOff);
11877
11890 static void MaskClear();
11891
11906 static int32_t FileSet(const char* const fileName);
11907
11920 static void FileClose();
11921
11936 static void InjectMessage(RSITrace traceLevel, const char* const message);
11937
11939};
11940
11942
11944
11948class RSI_API IO : public virtual RapidCodeObject {
11949public:
11950
11951 friend class MotionController;
11952
11957
11959 RapidCodeNetworkNode* NetworkNode;
11962
11964
11969
11970
12003 virtual bool IOExists() PURE_VIRTUAL;
12004
12021 virtual int32_t NumberGet() PURE_VIRTUAL;
12023
12028
12029
12030
12060 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
12061
12094 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
12095
12126 virtual void DigitalOutSet(int32_t digitalOutNumber, bool outValue) PURE_VIRTUAL;
12127
12150 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
12151
12183 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
12184
12216 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
12218
12228 virtual const char* const UserLabelGet() PURE_VIRTUAL;
12229
12236 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
12237};
12238
12239#if defined(__cplusplus)
12240}
12241#endif
12242
12243template<typename ContainerClass>
12244class RSI_API RapidVectorIterator
12245{
12246public:
12248 typedef typename ContainerClass::ValueType ValueType;
12249
12251 typedef typename ContainerClass::PointerType PointerType;
12252
12255 ValueType& operator*();
12256
12259 const ValueType& operator*() const;
12260
12263 RapidVectorIterator& operator++();
12264
12267 RapidVectorIterator operator++(int);
12268
12271 bool operator==(const RapidVectorIterator&) const;
12272
12275 bool operator!=(const RapidVectorIterator&) const;
12276
12278 RapidVectorIterator(PointerType pointerArgument, PointerType startArgument, const size_t containerSize);
12279
12281 RapidVectorIterator(const RapidVectorIterator&) = default;
12282
12284 RapidVectorIterator& operator=(const RapidVectorIterator&) = default;
12285
12287 RapidVectorIterator(RapidVectorIterator&&) noexcept = default;
12288
12290 RapidVectorIterator& operator=(RapidVectorIterator&&) noexcept = default;
12291private:
12292 PointerType pointer;
12293 PointerType start, end;
12294 void VerifyPointer() const;
12295};
12296
12297// Forward declaration of the RapidVectorImplementation class.
12298template<typename Type>
12299class RapidVectorImplementation;
12300
12303
12316template<typename Type>
12317class RSI_API RapidVector
12318{
12319private:
12320 // The pointer to the implementation.
12321 RapidVectorImplementation<Type>* pImpl;
12322public:
12326 Type& operator[](const size_t index);
12327
12331 const Type& operator[](const size_t index) const;
12332
12336 Type& At(const size_t index);
12337
12341 const Type& At(const size_t index) const;
12342
12345 void PushBack(const Type& element);
12346
12349 void PushBack(Type&& element);
12350
12353 const size_t Size() const;
12354
12356 void Clear();
12357
12359 void PopBack();
12360
12363 Type& Front();
12364
12367 const Type& Front() const;
12368
12371 Type& Back();
12372
12375 const Type& Back() const;
12376
12379 void Reserve(const size_t capacity);
12380
12383
12385#if defined(SWIG) && defined(__linux__)
12386 // SWIG 4.3.0 on Linux cannot parse the complex SFINAE template syntax
12387 // This constructor is ignored via %ignore in the .i files anyway
12388 explicit RapidVector(const size_t size);
12389#elif defined(_WIN32)
12390 template<typename = typename std::enable_if_t<std::is_default_constructible_v<Type>>>
12391 explicit RapidVector(const size_t size);
12392#else
12393 template<typename UType = Type, typename Enable = typename std::enable_if<std::is_default_constructible<UType>::value>::type>
12394 explicit RapidVector(const size_t size);
12395#endif
12396
12398 RapidVector(RapidVectorImplementation<Type>*);
12399
12402
12405
12408
12410 RapidVector(RapidVector&& other) noexcept;
12411
12414
12415 typedef Type* PointerType;
12416 typedef Type ValueType;
12417
12419 typedef RapidVectorIterator<RapidVector> Iterator;
12420
12423 Iterator begin() noexcept;
12424
12427 Iterator begin() const noexcept;
12428
12432 Iterator end() const noexcept;
12433};
12434
12436
12437} // namespace RapidCode
12438
12439} // namespace RSI
12440
12441#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:5819
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:5789
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:11948
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition rsi.h:11959
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:11961
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:11456
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:3845
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:10701
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:11725
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:4316
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:4329
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:12318
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:12419
~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:11801
RSIFilterAlgorithm
Filter algorithms.
Definition rsienums.h:1156
RSINetworkEniResult
NetworkEniGenerate return values.
Definition rsienums.h:1421
RSIPDOType
Compensator output types.
Definition rsienums.h:1395
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1401
RSICompensatorOutputType
Compensator output types.
Definition rsienums.h:1389
RSINetworkStartMode
Network start modes.
Definition rsienums.h:588
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
Definition rsienums.h:1143
RSITrace
Trace masks.
Definition rsienums.h:540
RSIMotorStepperPulse
Pulse A or B.
Definition rsienums.h:1246
RSIAxisGantryType
How to combine Axis Feedback Positions.
Definition rsienums.h:1136
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:1316
RSIEventType
Event Types or Status Bits.
Definition rsienums.h:965
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:1037
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:1262
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1112
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:1252
RSIMotorType
Motor Type.
Definition rsienums.h:1308
RSINetworkStartError
Network start errors.
Definition rsienums.h:594
RSIMotorGeneralIo
Motor I/O bit numbers.
Definition rsienums.h:916
RSIMotionAttrMask
Attribute masks for motion. You cannot mix RSIMotionAttrMaskDELAY and RSIMotionAttrMaskAPPEND.
Definition rsienums.h:1057
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:497
RSIFilterGainPIDCoeff
PID gain coefficients.
Definition rsienums.h:1165
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:633
RSINetworkOutputAddressType
Network output address types.
Definition rsienums.h:1382
INtimeStatus
INtime status values.
Definition rsienums.h:1354
RSIMotionHoldType
Types for MotionHold attribute.
Definition rsienums.h:1092
RSIControllerType
Controller type.
Definition rsienums.h:284
RSIMotorFaultMask
Mask values for several motor faults.
Definition rsienums.h:1296
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:397
RSIMotorBrakeMode
Brake modes.
Definition rsienums.h:1322
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:1225
RSIAxisPositionInput
Feedback Positions for each Axis.
Definition rsienums.h:1130
RSINodeType
Valid Node types.
Definition rsienums.h:677
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:1013
RSIMotorDedicatedIn
Dedicated Input bits per motor.
Definition rsienums.h:888
RSIMotorFeedback
Encoders per motor.
Definition rsienums.h:1150
RSIMotorDedicatedOut
Dedicated Output bits per motor.
Definition rsienums.h:910
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1328
RSIPathPlanType
Path motion planning types.
Definition rsienums.h:1051
RSINetworkTechnologyType
Network technology type.
Definition rsienums.h:1349
RSINetworkIndexType
Network index types for Axis.
Definition rsienums.h:1362
RSINetworkStartupMethod
Network startup methods.
Definition rsienums.h:580
RSIFilterGainPIVCoeff
PIV gain coefficients.
Definition rsienums.h:1186
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1215
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:3823
MathBlock configuration structure.
Definition rsi.h:3816
RSIDataType OutputDataType
Data type for Output. (optional)
Definition rsi.h:3821
uint64_t OutputAddress
Host memory address for Output. The MathBlock will write its result to this address....
Definition rsi.h:3822
uint64_t InputAddress0
Host memory address for Input0. Represents the left-hand side operand in math operations.
Definition rsi.h:3817
RSIDataType InputDataType0
Data type for Input0. This is the data type of the left-hand side operand in math operations.
Definition rsi.h:3818
uint64_t InputAddress1
Host memory address for Input1. Represents the right-hand side operand in math operations.
Definition rsi.h:3819
RSIDataType InputDataType1
Data type for Input1. This is the data type of the right-hand side operand in math operations.
Definition rsi.h:3820
RSIMathBlockOperation Operation
Math operation to be performed. (+, -, *, /, etc) use RSIMathBlockOperationNONE to disable a MathBloc...
Definition rsi.h:3824
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