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
2162 virtual void NetworkShutdown() PURE_VIRTUAL;
2163
2166 virtual RSINetworkState NetworkStateGet() PURE_VIRTUAL;
2167
2169 virtual int32_t NetworkCounterGet() PURE_VIRTUAL;
2170
2172 virtual int32_t NetworkInputCountGet() PURE_VIRTUAL;
2173
2175 virtual int32_t NetworkInputBitSizeGet(int32_t index) PURE_VIRTUAL;
2176
2180 virtual const char* const NetworkInputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2181
2184 virtual int32_t NetworkInputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2185
2188 virtual const char* const NetworkInputNameGet(int32_t index) PURE_VIRTUAL;
2189
2193 virtual uint64_t NetworkInputValueGet(int32_t index) PURE_VIRTUAL;
2194
2195
2196
2200 virtual uint64_t NetworkInputAddressGet(int32_t index) PURE_VIRTUAL;
2201
2205 virtual int32_t NetworkOutputCountGet() PURE_VIRTUAL;
2206
2209 virtual int32_t NetworkOutputBitSizeGet(int32_t index) PURE_VIRTUAL;
2210
2211
2215 virtual const char* const NetworkOutputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2216
2218 virtual int32_t NetworkOutputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2219
2221 virtual const char* const NetworkOutputNameGet(int32_t index) PURE_VIRTUAL;
2222
2238 virtual uint64_t NetworkOutputValueGet(int32_t index) PURE_VIRTUAL;
2239
2256 virtual void NetworkOutputValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2257
2276 virtual uint64_t NetworkOutputAddressGet(int32_t index) PURE_VIRTUAL;
2277
2282 virtual uint64_t NetworkOutputAddressGet(int32_t index, RSINetworkOutputAddressType type) PURE_VIRTUAL;
2283
2294 virtual uint64_t NetworkOutputIntendedValueGet(int32_t index) PURE_VIRTUAL;
2295
2307 virtual void NetworkOutputOverrideSet(int32_t index, bool outputOverride) PURE_VIRTUAL;
2308
2319 virtual bool NetworkOutputOverrideGet(int32_t index) PURE_VIRTUAL;
2320
2321
2322
2323
2340 virtual void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2341
2354 virtual uint64_t NetworkOutputOverrideValueGet(int32_t index) PURE_VIRTUAL;
2355
2370 virtual uint64_t NetworkOutputSentValueGet(int32_t index) PURE_VIRTUAL;
2371
2375 virtual int32_t NetworkLogMessageCountGet() PURE_VIRTUAL;
2376
2378 virtual RSINetworkStartError LastNetworkStartErrorGet() PURE_VIRTUAL;
2379
2384 virtual const char* const NetworkLogMessageGet(int32_t messageIndex) PURE_VIRTUAL;
2385
2387 virtual void NetworkTimingEnableSet(bool enable) PURE_VIRTUAL;
2388
2390 virtual void NetworkTimingClear() PURE_VIRTUAL;
2391
2393 virtual uint32_t NetworkTimingDeltaGet() PURE_VIRTUAL;
2394
2396 virtual uint32_t NetworkTimingMinGet() PURE_VIRTUAL;
2397
2399 virtual uint32_t NetworkTimingMaxGet() PURE_VIRTUAL;
2400
2402 virtual void NetworkTimingThresholdLowSet(uint32_t microseconds) PURE_VIRTUAL;
2403
2405 virtual void NetworkTimingThresholdHighSet(uint32_t microseconds) PURE_VIRTUAL;
2406
2408 virtual uint32_t NetworkTimingThresholdLowCountGet() PURE_VIRTUAL;
2409
2411 virtual uint32_t NetworkTimingThresholdHighCountGet() PURE_VIRTUAL;
2412
2414 virtual bool NetworkSynchronizedGet() PURE_VIRTUAL;
2416
2421
2438 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
2439
2458 virtual void InterruptWake() PURE_VIRTUAL;
2459
2487 virtual void SyncInterruptEnableSet(bool enable) PURE_VIRTUAL;
2488
2514 virtual void SyncInterruptPeriodSet(uint32_t samples) PURE_VIRTUAL;
2515
2535 virtual int32_t SyncInterruptWait() PURE_VIRTUAL;
2536
2538 virtual bool ServiceThreadStateGet() PURE_VIRTUAL;
2539
2550 virtual int32_t SyncInterruptHostProcessTimeGet() PURE_VIRTUAL;
2551
2553 virtual int32_t SyncInterruptHostProcessFlagGet() PURE_VIRTUAL;
2554
2567 virtual void SyncInterruptHostProcessFlagSet(bool hostProcessFlag) PURE_VIRTUAL;
2568
2579 virtual bool SyncInterruptHostProcessStatusBitGet() PURE_VIRTUAL;
2580
2590 virtual void SyncInterruptHostProcessStatusClear() PURE_VIRTUAL;
2591
2617
2618 virtual void ServiceThreadEnableSet(bool enable) PURE_VIRTUAL;
2620
2625
2626
2627
2646 virtual int32_t RecorderCountGet() PURE_VIRTUAL;
2647
2665 virtual void RecorderCountSet(int32_t recorderCount) PURE_VIRTUAL;
2666
2683 virtual void RecorderPeriodSet(uint32_t samples) PURE_VIRTUAL;
2684
2686 virtual void RecorderPeriodSet(int32_t recorderNumber, uint32_t samples) PURE_VIRTUAL;
2687
2704 virtual void RecorderCircularBufferSet(bool enable) PURE_VIRTUAL;
2705
2707 virtual void RecorderCircularBufferSet(int32_t recorderNumber, bool enable) PURE_VIRTUAL;
2708
2724 virtual void RecorderDataCountSet(int32_t count) PURE_VIRTUAL;
2725
2727 virtual void RecorderDataCountSet(int32_t recorderNumber,int32_t count) PURE_VIRTUAL;
2728
2745 virtual void RecorderDataAddressSet(int32_t index, uint64_t address) PURE_VIRTUAL;
2746
2748 virtual void RecorderDataAddressSet(int32_t recorderNumber,int32_t index, uint64_t address) PURE_VIRTUAL;
2749
2750
2756 virtual void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t* const addresses, int32_t addressCount) PURE_VIRTUAL;
2757
2771
2777 virtual void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2778
2785 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2786
2792 virtual void RecorderConfigureToTriggerOnMotion(MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2793
2800 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2801
2808 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, int32_t motionNumber, bool triggerOnMotion) PURE_VIRTUAL;
2809
2818 virtual bool RecorderTriggerOnMotionGet(int32_t recorderNumber) PURE_VIRTUAL;
2819
2835 virtual bool RecorderEnabledGet() PURE_VIRTUAL;
2836
2838 virtual bool RecorderEnabledGet(int32_t recorderNumber ) PURE_VIRTUAL;
2839
2856 virtual int32_t RecorderRecordCountGet() PURE_VIRTUAL;
2857
2859 virtual int32_t RecorderRecordCountGet(int32_t recorderNumber ) PURE_VIRTUAL;
2860
2874 virtual int32_t RecorderRecordMaxCountGet() PURE_VIRTUAL;
2875
2877 virtual int32_t RecorderRecordMaxCountGet(int32_t recorderNumber) PURE_VIRTUAL;
2878
2893 virtual void RecorderStart() PURE_VIRTUAL;
2894
2896 virtual void RecorderStart(int32_t recorderNumber) PURE_VIRTUAL;
2897
2914 virtual void RecorderStop() PURE_VIRTUAL;
2915
2917 virtual void RecorderStop(int32_t recorderNumber) PURE_VIRTUAL;
2918
2919
2920
2936 virtual const int32_t* const RecorderRecordDataGet() PURE_VIRTUAL;
2937
2939 virtual const int32_t* const RecorderRecordDataGet(int32_t recorderNumber) PURE_VIRTUAL;
2940
2955 virtual void RecorderRecordDataRetrieve() PURE_VIRTUAL;
2956
2976 virtual int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount) PURE_VIRTUAL;
2977
2979 virtual void RecorderRecordDataRetrieve(int32_t recorderNumber) PURE_VIRTUAL;
2980
2997 virtual int32_t RecorderRecordDataValueGet(int32_t index) PURE_VIRTUAL;
2998
3000 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
3001
3020 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3021
3023 virtual double RecorderRecordDataDoubleGet(int32_t index) PURE_VIRTUAL;
3024
3026 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
3027
3046 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3047
3065 virtual void RecorderBufferHighCountSet(int32_t bufferHighCount) PURE_VIRTUAL;
3066
3068 virtual void RecorderBufferHighCountSet(int32_t recorderNumber, int32_t bufferHighCount) PURE_VIRTUAL;
3069
3084 virtual void RecorderReset() PURE_VIRTUAL;
3085
3087 virtual void RecorderReset(int32_t recorderNumber) PURE_VIRTUAL;
3088
3100 virtual int32_t RecorderBufferSizeGet(int32_t recorderNumber) PURE_VIRTUAL;
3101
3118 virtual void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize) PURE_VIRTUAL;
3120
3125
3126
3127
3128
3153 virtual int32_t CompensatorCountGet() PURE_VIRTUAL;
3154
3174 virtual void CompensatorCountSet(int32_t compensatorCount) PURE_VIRTUAL;
3175
3186 virtual int32_t CompensatorPointCountGet(int32_t compensatorNumber) PURE_VIRTUAL;
3187
3207 virtual void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount) PURE_VIRTUAL;
3208
3222 virtual int32_t CompensatorDimensionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3223
3249 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;
3250
3280 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;
3281
3302 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;
3303
3324 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;
3325
3337 virtual void CompensatorTableSet(int32_t compensatorNumber, const double* const table) PURE_VIRTUAL;
3338
3350 virtual void CompensatorTableGet(int32_t compensatorNumber, double* table) PURE_VIRTUAL;
3351
3371 virtual double CompensatorPositionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3372
3373
3374
3375
3376
3377
3389
3390 virtual void CompensatorTableClear(int32_t compensatorNumber) PURE_VIRTUAL;
3391
3400 virtual void CompensatorDisable(int32_t compensatorNumber) PURE_VIRTUAL;
3401
3406 virtual void CompensatorDisable(int32_t compensatorNumber, bool force) PURE_VIRTUAL;
3407
3414 virtual void CompensatorEnable(int32_t compensatorNumber) PURE_VIRTUAL;
3415
3417
3422
3442 virtual int32_t UserLimitCountGet() PURE_VIRTUAL;
3443
3463 virtual void UserLimitCountSet(int32_t userLimitCount) PURE_VIRTUAL;
3464
3484 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot) PURE_VIRTUAL;
3485
3488 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration) PURE_VIRTUAL;
3489
3491 virtual RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number) PURE_VIRTUAL;
3492
3494 virtual RSIAction UserLimitActionGet(int32_t number) PURE_VIRTUAL;
3495
3497 virtual int32_t UserLimitAxisNumberGet(int32_t number) PURE_VIRTUAL;
3498
3500 virtual double UserLimitDurationGet(int32_t number) PURE_VIRTUAL;
3501
3503 virtual bool UserLimitSingleShotGet(int32_t number) PURE_VIRTUAL;
3504
3529 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32) PURE_VIRTUAL;
3530
3552 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfDouble, double limitValueDouble) PURE_VIRTUAL;
3553
3555 virtual RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3556
3558 virtual RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3559
3561 virtual uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3562
3564 virtual uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3565
3567 virtual int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3568
3570 virtual double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3571
3598 virtual void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3599
3602 virtual void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3603
3606 virtual void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3607
3610 virtual void UserLimitOutputSet(int32_t number, double limitValueDouble, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3611
3627 virtual void UserLimitOutputSet(int32_t number, RSIDataType dataType, uint64_t inputPtr, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3628
3630 virtual bool UserLimitOutputEnableGet(int32_t number) PURE_VIRTUAL;
3631
3633 virtual RSIDataType UserLimitOutputDataTypeGet(int32_t number) PURE_VIRTUAL;
3634
3636 virtual uint64_t UserLimitOutputAddressGet(int32_t number) PURE_VIRTUAL;
3637
3639 virtual uint64_t UserLimitOutputInputAddressGet(int32_t number) PURE_VIRTUAL;
3640
3642 virtual uint32_t UserLimitOutputAndMaskGet(int32_t number) PURE_VIRTUAL;
3643
3645 virtual uint32_t UserLimitOutputOrMaskGet(int32_t number) PURE_VIRTUAL;
3646
3648 virtual int32_t UserLimitOutputValueGet(int32_t number) PURE_VIRTUAL;
3649
3651 virtual uint64_t UserLimitOutputAndMask64Get(int32_t number) PURE_VIRTUAL;
3652
3654 virtual uint64_t UserLimitOutputOrMask64Get(int32_t number) PURE_VIRTUAL;
3655
3656
3658 virtual double UserLimitOutputDoubleGet(int32_t number) PURE_VIRTUAL;
3659
3680 virtual bool UserLimitStateGet(int32_t number) PURE_VIRTUAL;
3681
3702 virtual bool UserLimitEnableGet(int32_t number) PURE_VIRTUAL;
3703
3705 virtual void UserLimitEnableSet(int32_t number, bool enable) PURE_VIRTUAL;
3706
3721 virtual void UserLimitDisable(int32_t number) PURE_VIRTUAL;
3722
3734 virtual void UserLimitReset(int32_t number) PURE_VIRTUAL;
3735
3744
3745 virtual int32_t UserLimitCountMax() PURE_VIRTUAL;
3746
3764 virtual void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address) PURE_VIRTUAL;
3765
3767 virtual uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex) PURE_VIRTUAL;
3769
3770
3775
3785 virtual int32_t MathBlockCountGet() PURE_VIRTUAL;
3786
3797 virtual void MathBlockCountSet(int32_t mathBlockCount) PURE_VIRTUAL;
3798
3817
3819 virtual MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3820
3822 virtual void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig& config) PURE_VIRTUAL;
3823
3825 virtual FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3826
3828
3829
3834
3837
3839};
3840
3844class RSI_API RapidCodeNetworkNode : public virtual RapidCodeObject {
3845public:
3846
3851
3853 static inline constexpr uint32_t SDOTimeoutMillisecondsDefault = 100;
3854
3856
3857
3862
3864 virtual bool Exists() PURE_VIRTUAL;
3865
3867 virtual RSINodeType TypeGet() PURE_VIRTUAL;
3868
3870 virtual bool IsEtherCAT() PURE_VIRTUAL;
3871
3873 virtual bool IsSynqNet() PURE_VIRTUAL;
3874
3876
3881
3883 virtual bool HasIO() PURE_VIRTUAL;
3884
3886 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
3887
3889 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
3890
3892 virtual void DigitalOutSet(int32_t digitalOutNumber, bool state) PURE_VIRTUAL;
3893
3895 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
3896
3898 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
3899
3901 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
3902
3904
3908
3910 virtual int32_t DigitalInCountGet() PURE_VIRTUAL;
3911
3913 virtual int32_t DigitalOutCountGet() PURE_VIRTUAL;
3914
3916 virtual int32_t AnalogInCountGet() PURE_VIRTUAL;
3917
3919 virtual int32_t AnalogOutCountGet() PURE_VIRTUAL;
3920
3921
3923 virtual int32_t SegmentCountGet() PURE_VIRTUAL;
3924
3926 virtual int32_t SegmentDigitalInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3927
3929 virtual int32_t SegmentDigitalOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3930
3932 virtual int32_t SegmentAnalogInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3933
3935 virtual int32_t SegmentAnalogOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3936
3938 virtual int32_t SegmentIDGet(int32_t segmentNumber) PURE_VIRTUAL;
3939
3952 virtual uint64_t DigitalInAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3953
3966 virtual int32_t DigitalInMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3967
3980 virtual uint64_t DigitalOutAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3981
3994 virtual int32_t DigitalOutMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3995
4007 virtual uint64_t AnalogInAddressGet(int32_t channel) PURE_VIRTUAL;
4008
4020 virtual int32_t AnalogInMaskGet(int32_t channel) PURE_VIRTUAL;
4021
4033 virtual uint64_t AnalogOutAddressGet(int32_t channel) PURE_VIRTUAL;
4034
4046 virtual int32_t AnalogOutMaskGet(int32_t channel) PURE_VIRTUAL;
4047
4061 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4062
4066 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4067
4080 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4081
4085 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4086
4097 virtual RapidVector<uint8_t> ServiceChannelReadBytes(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4098
4112 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue) PURE_VIRTUAL;
4113
4114
4119 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4120
4132 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue) PURE_VIRTUAL;
4133
4141 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4142
4151 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, RapidVector<uint8_t> bytes, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4152
4158 virtual char* AKDASCIICommand(const char* const command) PURE_VIRTUAL;
4159
4161 virtual void ClearFaults(int32_t axisNumber) PURE_VIRTUAL;
4162
4164 virtual uint32_t VendorIdGet() PURE_VIRTUAL;
4165
4178 virtual const char* const NameGet() PURE_VIRTUAL;
4179
4192 virtual const char* const ProductNameGet() PURE_VIRTUAL;
4193
4206 virtual const char* const VendorNameGet() PURE_VIRTUAL;
4207
4209 virtual uint32_t ProductCodeGet() PURE_VIRTUAL;
4210
4212 virtual uint32_t RevisionGet() PURE_VIRTUAL;
4213
4215 virtual uint32_t StationAliasGet() PURE_VIRTUAL;
4216
4218 virtual const char* const SerialNumberGet() PURE_VIRTUAL;
4219
4221 virtual uint32_t AxisCountGet() PURE_VIRTUAL;
4222
4224 virtual uint16_t StatusWordGet(int32_t axisIndex) PURE_VIRTUAL;
4225};
4226
4228
4231class RSI_API RapidCodeMotion : public virtual RapidCodeInterrupt{
4232public:
4233
4239
4242
4244
4245
4249
4267 virtual int32_t NumberGet() PURE_VIRTUAL;
4268
4285 virtual int32_t AxisCountGet() PURE_VIRTUAL;
4286
4290
4315 virtual void TriggeredModify() PURE_VIRTUAL;
4316
4343 virtual void Stop() PURE_VIRTUAL;
4344
4369 virtual void Resume() PURE_VIRTUAL;
4370
4395 virtual void EStop() PURE_VIRTUAL;
4396
4417 virtual void EStopAbort() PURE_VIRTUAL;
4418
4435 virtual void EStopModify() PURE_VIRTUAL;
4436
4439 virtual void EStopModifyAbort() PURE_VIRTUAL;
4440
4462 virtual void Abort() PURE_VIRTUAL;
4463
4490 virtual void ClearFaults() PURE_VIRTUAL;
4491
4518 virtual void AmpEnableSet(bool enable) PURE_VIRTUAL;
4519
4549 virtual int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds) PURE_VIRTUAL;
4550
4570
4571 virtual void Map() PURE_VIRTUAL;
4572
4590 virtual void Unmap() PURE_VIRTUAL;
4591
4596 virtual bool IsMapped() PURE_VIRTUAL;
4597
4614 virtual void FeedRateSet(double rate) PURE_VIRTUAL;
4615
4634 virtual double FeedRateGet() PURE_VIRTUAL;
4635
4639
4640
4641
4642
4662 virtual RSIState StateGet() PURE_VIRTUAL;
4663
4691 virtual RSISource SourceGet() PURE_VIRTUAL;
4692
4717 virtual const char* const SourceNameGet(RSISource source) PURE_VIRTUAL;
4718
4741 virtual int32_t MotionDoneWait() PURE_VIRTUAL;
4742
4769 virtual int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds) PURE_VIRTUAL;
4770
4791 virtual bool MotionDoneGet() PURE_VIRTUAL;
4792
4815 virtual bool StatusBitGet(RSIEventType bitMask) PURE_VIRTUAL;
4816
4831 virtual uint64_t StatusBitsGet() PURE_VIRTUAL;
4832
4836
4865 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
4866
4880 virtual void InterruptWake() PURE_VIRTUAL;
4881
4885
4901 virtual double StopTimeGet() PURE_VIRTUAL;
4902
4918 virtual void StopTimeSet(double seconds) PURE_VIRTUAL;
4919
4935 virtual double EStopTimeGet() PURE_VIRTUAL;
4936
4952 virtual void EStopTimeSet(double seconds) PURE_VIRTUAL;
4953
4970 virtual double MotionDelayGet() PURE_VIRTUAL;
4971
4992 virtual void MotionDelaySet(double seconds) PURE_VIRTUAL;
4993
5014 virtual uint16_t MotionIdGet() PURE_VIRTUAL;
5015
5033 virtual void MotionIdSet(uint16_t id) PURE_VIRTUAL;
5034
5036 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
5037
5039 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
5040
5055 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
5056
5064 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
5065
5085 virtual RSIMotionHoldType MotionHoldTypeGet() PURE_VIRTUAL;
5086
5119 virtual void MotionHoldTypeSet(RSIMotionHoldType type) PURE_VIRTUAL;
5120
5132 virtual int32_t MotionHoldGateNumberGet() PURE_VIRTUAL;
5133
5152
5153 virtual void MotionHoldGateNumberSet(int32_t gateNumber) PURE_VIRTUAL;
5154
5171 virtual double MotionHoldTimeoutGet() PURE_VIRTUAL;
5172
5191 virtual void MotionHoldTimeoutSet(double seconds) PURE_VIRTUAL;
5192
5216 virtual bool MotionHoldGateGet() PURE_VIRTUAL;
5217
5240 virtual void MotionHoldGateSet(bool hold) PURE_VIRTUAL;
5241
5258 virtual int32_t MotionHoldAxisNumberGet() PURE_VIRTUAL;
5259
5276 virtual void MotionHoldAxisNumberSet(int32_t number) PURE_VIRTUAL;
5277
5294
5295 virtual double MotionHoldAxisPositionGet() PURE_VIRTUAL;
5296
5313 virtual void MotionHoldAxisPositionSet(double position) PURE_VIRTUAL;
5314
5316 virtual RSIUserLimitLogic MotionHoldAxisLogicGet() PURE_VIRTUAL;
5317
5319 virtual void MotionHoldAxisLogicSet(RSIUserLimitLogic logic) PURE_VIRTUAL;
5320
5337 virtual uint64_t MotionHoldUserAddressGet() PURE_VIRTUAL;
5338
5355 virtual void MotionHoldUserAddressSet(uint64_t address) PURE_VIRTUAL;
5356
5372 virtual int32_t MotionHoldUserMaskGet() PURE_VIRTUAL;
5373
5389 virtual void MotionHoldUserMaskSet(int32_t holdMask) PURE_VIRTUAL;
5390
5406 virtual int32_t MotionHoldUserPatternGet() PURE_VIRTUAL;
5407
5423 virtual void MotionHoldUserPatternSet(int32_t pattern) PURE_VIRTUAL;
5424
5426 virtual void MotionAttributeMaskDefaultSet() PURE_VIRTUAL;
5427
5452
5453 virtual bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5454
5473 virtual void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5474
5491
5492 virtual void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff) PURE_VIRTUAL;
5493
5497
5498
5499
5535 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;
5536
5574 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;
5575
5605 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;
5606
5611 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address) PURE_VIRTUAL;
5612
5634 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
5635
5640 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on) PURE_VIRTUAL;
5641
5660 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on, int32_t ptPointIndex) PURE_VIRTUAL;
5661
5677 virtual void StreamingOutputsClear() PURE_VIRTUAL;
5678
5698 virtual void StreamingOutputsEnableSet(bool enable) PURE_VIRTUAL;
5699};
5700
5701
5706class RSI_API Axis : public virtual RapidCodeMotion{
5707public:
5708
5709 friend class MotionController;
5710 friend class MultiAxis;
5711
5712
5717
5719 static inline constexpr uint32_t NetworkIndexInvalid = 65535;
5720
5722 static inline constexpr double AmpEnableAmpFaultTimeoutSecondsDefault = 1.0;
5723
5725
5726
5731
5736 RapidCodeNetworkNode* NetworkNode;
5737
5738
5740
5745
5783 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel) PURE_VIRTUAL;
5784
5806 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel) PURE_VIRTUAL;
5807
5830 virtual void MoveTrapezoidal(double position) PURE_VIRTUAL; // use defaults Overload
5831
5839
5840 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5841
5851 virtual void MoveSCurve(double position) PURE_VIRTUAL;
5852
5856 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5857
5861 virtual void MoveVelocity(double velocity) PURE_VIRTUAL;
5862
5897 virtual void MoveVelocity(double velocity, double accel) PURE_VIRTUAL;
5898
5936 virtual void MoveVelocitySCurve(double velocity, double accel, double jerkPct) PURE_VIRTUAL;
5937
5979 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5980
5987 virtual void MoveRelative(double relativePosition) PURE_VIRTUAL;
5988
5994 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5996
6001
6026 virtual void PositionSet(double position) PURE_VIRTUAL;
6027
6046 virtual double ActualPositionGet() PURE_VIRTUAL;
6047
6069 virtual void ActualPositionSet(double position) PURE_VIRTUAL;
6070
6087 virtual double CompensationPositionGet() PURE_VIRTUAL;
6088
6101 virtual void CompensationPositionSet(double position) PURE_VIRTUAL;
6102
6114 virtual double TargetPositionGet() PURE_VIRTUAL;
6115
6135 virtual double CommandPositionGet() PURE_VIRTUAL;
6136
6168 virtual void CommandPositionSet(double position) PURE_VIRTUAL;
6169
6193 virtual void CommandPositionDirectSet(double position) PURE_VIRTUAL;
6194
6211 virtual double OriginPositionGet() PURE_VIRTUAL;
6212
6235 virtual void OriginPositionSet(double position) PURE_VIRTUAL;
6236
6257 virtual double PositionErrorGet() PURE_VIRTUAL;
6258
6280 virtual double CommandVelocityGet() PURE_VIRTUAL;
6281
6304 virtual double ActualVelocityGet() PURE_VIRTUAL;
6305
6326 virtual double CommandAccelGet() PURE_VIRTUAL;
6327
6329 virtual double CommandJerkGet() PURE_VIRTUAL;
6330
6351 virtual double EncoderPositionGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
6352
6374 virtual double UserUnitsGet() PURE_VIRTUAL;
6375
6398 virtual void UserUnitsSet(double countsPerUserUnit) PURE_VIRTUAL;
6399
6401 virtual double UserUnitsToCounts(double userUnits) PURE_VIRTUAL;
6402
6404 virtual double CountsToUserUnits(double counts) PURE_VIRTUAL;
6405
6425 virtual int32_t FramesToExecuteGet() PURE_VIRTUAL;
6427
6432
6453
6454 virtual void Home() PURE_VIRTUAL; // this one moves to zero by default
6455
6459 virtual void Home(bool moveToZero) PURE_VIRTUAL;
6460
6479
6480 virtual RSIHomeMethod HomeMethodGet() PURE_VIRTUAL;
6481
6500
6501 virtual void HomeMethodSet(RSIHomeMethod method) PURE_VIRTUAL;
6502
6523
6524 virtual double HomeOffsetGet() PURE_VIRTUAL;
6525
6570 virtual void HomeOffsetSet(double offset) PURE_VIRTUAL;
6571
6589
6590 virtual double HomeVelocityGet() PURE_VIRTUAL;
6591
6594 virtual double HomeVelocityGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6595
6616 virtual void HomeVelocitySet(double velocity) PURE_VIRTUAL;
6617
6622 virtual void HomeVelocitySet(RSIHomeStage homeStage, double velocity) PURE_VIRTUAL;
6623
6639 virtual double HomeSlowVelocityGet() PURE_VIRTUAL;
6640
6656 virtual void HomeSlowVelocitySet(double velocity) PURE_VIRTUAL;
6657
6675
6676 virtual double HomeAccelerationGet() PURE_VIRTUAL;
6677
6680 virtual double HomeAccelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6681
6701
6702 virtual void HomeAccelerationSet(double accel) PURE_VIRTUAL;
6703
6707 virtual void HomeAccelerationSet(RSIHomeStage homeStage, double accel) PURE_VIRTUAL;
6708
6725
6726 virtual double HomeDecelerationGet() PURE_VIRTUAL;
6727
6730 virtual double HomeDecelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6731
6750
6751 virtual void HomeDecelerationSet(double decel) PURE_VIRTUAL;
6752
6756 virtual void HomeDecelerationSet(RSIHomeStage homeStage, double decel) PURE_VIRTUAL;
6757
6775
6776 virtual double HomeJerkPercentGet() PURE_VIRTUAL;
6777
6780 virtual double HomeJerkPercentGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6781
6801 virtual void HomeJerkPercentSet(double percent) PURE_VIRTUAL;
6802
6807 virtual void HomeJerkPercentSet(RSIHomeStage homeStage, double percent) PURE_VIRTUAL;
6808
6828 virtual void HomeCancelSet(bool cancel) PURE_VIRTUAL;
6829
6848 virtual bool HomeStateGet() PURE_VIRTUAL;
6849
6862 virtual void HomeStateSet(bool homed) PURE_VIRTUAL;
6863
6868 virtual void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex) PURE_VIRTUAL;
6869
6871 virtual void HomeLimitCustomConfigReset() PURE_VIRTUAL;
6872
6874 virtual uint64_t HomeLimitCustomConfigAddressGet() PURE_VIRTUAL;
6875
6878 virtual int32_t HomeLimitCustomConfigBitIndexGet() PURE_VIRTUAL;
6879
6901
6902 virtual void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel) PURE_VIRTUAL;
6903
6923 virtual RSIHomeStage HomeStageGet() PURE_VIRTUAL;
6924
6938 virtual void HomeBehaviorSet(RSIAction behavior) PURE_VIRTUAL;
6939
6951 virtual RSIAction HomeBehaviorGet() PURE_VIRTUAL;
6953
6959
6961 virtual bool FaultMaskBitGet(RSIMotorFaultMask bitMask) PURE_VIRTUAL;
6962
6964 virtual uint16_t StatusWordGet() PURE_VIRTUAL;
6966
6971 // reads active configuration to report state
6972
6996
6997 virtual bool NegativeLimitGet() PURE_VIRTUAL;
6998
7022 virtual bool PositiveLimitGet() PURE_VIRTUAL;
7023
7052 virtual bool HomeLimitGet() PURE_VIRTUAL;
7053
7081 virtual bool HomeSwitchGet() PURE_VIRTUAL;
7082
7103 virtual bool AmpFaultGet() PURE_VIRTUAL;
7104
7128 virtual bool AmpEnableGet() PURE_VIRTUAL;
7129
7154 virtual bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7155
7180 virtual bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7181
7204 virtual bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7205
7227 virtual uint32_t DedicatedInputsGet() PURE_VIRTUAL;
7228
7251 virtual bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7252
7274 virtual uint32_t DedicatedOutputsGet() PURE_VIRTUAL;
7276
7281
7302 virtual bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7303
7321 virtual uint32_t DigitalInputsGet() PURE_VIRTUAL;
7322
7343 virtual bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7344
7362 virtual uint32_t DigitalOutputsGet() PURE_VIRTUAL;
7363
7384
7385 virtual void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue) PURE_VIRTUAL;
7386
7405 virtual bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7406
7425 virtual const char* const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7426
7449 virtual RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7450
7469 virtual void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type) PURE_VIRTUAL;
7470
7487 virtual double AnalogInGet(int32_t channel) PURE_VIRTUAL;
7489
7494
7508 virtual double EStopDecelerationGet() PURE_VIRTUAL;
7509
7524 virtual void EStopDecelerationSet(double decel) PURE_VIRTUAL;
7525
7536 virtual double EStopJerkPercentGet() PURE_VIRTUAL;
7537
7555 virtual void EStopJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7556
7566 virtual double TriggeredModifyDecelerationGet() PURE_VIRTUAL;
7567
7585 virtual void TriggeredModifyDecelerationSet(double decel) PURE_VIRTUAL;
7586
7597 virtual double TriggeredModifyJerkPercentGet() PURE_VIRTUAL;
7598
7616 virtual void TriggeredModifyJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7617
7619 virtual int32_t FrameBufferSizeGet() PURE_VIRTUAL;
7620
7622 virtual void FrameBufferSizeSet(int32_t frameSize) PURE_VIRTUAL;
7623
7643 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
7644
7665 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
7667
7672
7674 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
7675
7677 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
7678
7680 virtual double DefaultVelocityGet() PURE_VIRTUAL;
7681
7683 virtual void DefaultVelocitySet(double velocity) PURE_VIRTUAL;
7684
7686 virtual double DefaultAccelerationGet() PURE_VIRTUAL;
7687
7689 virtual void DefaultAccelerationSet(double acceleration) PURE_VIRTUAL;
7690
7692 virtual double DefaultDecelerationGet() PURE_VIRTUAL;
7693
7695 virtual void DefaultDecelerationSet(double deceleration) PURE_VIRTUAL;
7696
7698 virtual double DefaultJerkPercentGet() PURE_VIRTUAL;
7699
7701 virtual void DefaultJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
7702
7704 virtual double DefaultPosition1Get() PURE_VIRTUAL;
7705
7707 virtual void DefaultPosition1Set(double position1) PURE_VIRTUAL;
7708
7710 virtual double DefaultPosition2Get() PURE_VIRTUAL;
7711
7713 virtual void DefaultPosition2Set(double position2) PURE_VIRTUAL;
7714
7716 virtual double DefaultRelativeIncrementGet() PURE_VIRTUAL;
7717
7719 virtual void DefaultRelativeIncrementSet(double relativeIncrement) PURE_VIRTUAL;
7721
7725 // /@{
7726
7749 virtual RSIAction AmpFaultActionGet() PURE_VIRTUAL;
7750
7773 virtual void AmpFaultActionSet(RSIAction action) PURE_VIRTUAL;
7774
7796 virtual bool AmpFaultTriggerStateGet() PURE_VIRTUAL;
7797
7819 virtual void AmpFaultTriggerStateSet(bool state) PURE_VIRTUAL;
7820
7841 virtual double AmpFaultDurationGet() PURE_VIRTUAL;
7842
7863 virtual void AmpFaultDurationSet(double seconds) PURE_VIRTUAL;
7864
7889 virtual RSIAction HomeActionGet() PURE_VIRTUAL;
7890
7914 virtual void HomeActionSet(RSIAction action) PURE_VIRTUAL;
7915
7941 virtual bool HomeTriggerStateGet() PURE_VIRTUAL;
7942
7963 virtual void HomeTriggerStateSet(bool state) PURE_VIRTUAL;
7964
7986 virtual double HomeDurationGet() PURE_VIRTUAL;
7987
8010 virtual void HomeDurationSet(double seconds) PURE_VIRTUAL;
8011
8040 virtual RSIAction ErrorLimitActionGet() PURE_VIRTUAL;
8041
8068 virtual void ErrorLimitActionSet(RSIAction action) PURE_VIRTUAL;
8069
8092 virtual double ErrorLimitTriggerValueGet() PURE_VIRTUAL;
8093
8115 virtual void ErrorLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8116
8138 virtual double ErrorLimitDurationGet() PURE_VIRTUAL;
8139
8162 virtual void ErrorLimitDurationSet(double seconds) PURE_VIRTUAL;
8163
8188 virtual RSIAction HardwareNegLimitActionGet() PURE_VIRTUAL;
8189
8214 virtual void HardwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8215
8239 virtual bool HardwareNegLimitTriggerStateGet() PURE_VIRTUAL;
8240
8264 virtual void HardwareNegLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8265
8288 virtual double HardwareNegLimitDurationGet() PURE_VIRTUAL;
8289
8313 virtual void HardwareNegLimitDurationSet(double seconds) PURE_VIRTUAL;
8314
8339 virtual RSIAction HardwarePosLimitActionGet() PURE_VIRTUAL;
8340
8365 virtual void HardwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8366
8387 virtual bool HardwarePosLimitTriggerStateGet() PURE_VIRTUAL;
8388
8412 virtual void HardwarePosLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8413
8436 virtual double HardwarePosLimitDurationGet() PURE_VIRTUAL;
8437
8460 virtual void HardwarePosLimitDurationSet(double seconds) PURE_VIRTUAL;
8461
8487 virtual RSIAction SoftwareNegLimitActionGet() PURE_VIRTUAL;
8488
8512 virtual void SoftwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8513
8536 virtual double SoftwareNegLimitTriggerValueGet() PURE_VIRTUAL;
8537
8560 virtual void SoftwareNegLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8561
8585 virtual RSIAction SoftwarePosLimitActionGet() PURE_VIRTUAL;
8586
8610 virtual void SoftwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8611
8634 virtual double SoftwarePosLimitTriggerValueGet() PURE_VIRTUAL;
8635
8658 virtual void SoftwarePosLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8659
8685 virtual RSIAction EncoderFaultActionGet() PURE_VIRTUAL;
8686
8711 virtual void EncoderFaultActionSet(RSIAction action) PURE_VIRTUAL;
8712
8736 virtual RSIMotorFeedbackFault EncoderFaultTriggerGet() PURE_VIRTUAL;
8737
8759 virtual void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder) PURE_VIRTUAL;
8760
8782 virtual double EncoderFaultDurationGet() PURE_VIRTUAL;
8783
8805 virtual void EncoderFaultDurationSet(double seconds) PURE_VIRTUAL;
8806
8808 virtual RSIAction NodeFailureActionGet() PURE_VIRTUAL;
8809
8811 virtual void NodeFailureActionSet(RSIAction action) PURE_VIRTUAL;
8812
8828 virtual uint64_t AddressGet( RSIAxisAddressType addressType) PURE_VIRTUAL;
8829
8843 virtual RSIDataType AddressDataTypeGet(RSIAxisAddressType type) PURE_VIRTUAL;
8844
8845 // common limit methods
8846
8848 virtual RSIAction LimitActionGet(RSIEventType limit) PURE_VIRTUAL;
8849
8851 virtual void LimitActionSet(RSIEventType limit, RSIAction action) PURE_VIRTUAL;
8852
8854 virtual bool LimitTriggerStateGet(RSIEventType limit) PURE_VIRTUAL;
8855
8857 virtual void LimitTriggerStateSet(RSIEventType limit, bool triggerState) PURE_VIRTUAL;
8858
8860 virtual double LimitTriggerValueGet(RSIEventType limit) PURE_VIRTUAL;
8861
8863 virtual void LimitTriggerValueSet(RSIEventType limit, double triggerValue) PURE_VIRTUAL;
8864
8866 virtual double LimitDurationGet(RSIEventType limit) PURE_VIRTUAL;
8867
8869 virtual void LimitDurationSet(RSIEventType limit, double seconds) PURE_VIRTUAL;
8871
8876
8890 virtual double PositionToleranceFineGet() PURE_VIRTUAL;
8891
8905 virtual void PositionToleranceFineSet(double tolerance) PURE_VIRTUAL;
8906
8920 virtual double PositionToleranceCoarseGet() PURE_VIRTUAL;
8921
8938 virtual void PositionToleranceCoarseSet(double tolerance) PURE_VIRTUAL;
8939
8953 virtual double VelocityToleranceGet() PURE_VIRTUAL;
8954
8968 virtual void VelocityToleranceSet(double tolerance) PURE_VIRTUAL;
8969
8984 virtual double SettlingTimeGet() PURE_VIRTUAL;
8985
9000 virtual void SettlingTimeSet(double time) PURE_VIRTUAL;
9001
9018 virtual bool SettleOnStopGet() PURE_VIRTUAL;
9019
9036
9037 virtual void SettleOnStopSet(bool state) PURE_VIRTUAL;
9038
9055 virtual bool SettleOnEStopGet() PURE_VIRTUAL;
9056
9072 virtual void SettleOnEStopSet(bool state) PURE_VIRTUAL;
9073
9090 virtual bool SettleOnEStopCmdEqActGet() PURE_VIRTUAL;
9091
9107 virtual void SettleOnEStopCmdEqActSet(bool state) PURE_VIRTUAL;
9109
9114
9131 virtual RSIMotorType MotorTypeGet() PURE_VIRTUAL;
9132
9148 virtual void MotorTypeSet(RSIMotorType type) PURE_VIRTUAL;
9149
9166 virtual RSIMotorDisableAction AmpDisableActionGet() PURE_VIRTUAL;
9167
9183 virtual void AmpDisableActionSet(RSIMotorDisableAction action) PURE_VIRTUAL;
9184
9202
9203 virtual RSIMotorBrakeMode BrakeModeGet() PURE_VIRTUAL;
9204
9220 virtual void BrakeModeSet(RSIMotorBrakeMode mode) PURE_VIRTUAL;
9221
9237 virtual double BrakeApplyDelayGet() PURE_VIRTUAL;
9238
9239
9256 virtual void BrakeApplyDelaySet(double seconds) PURE_VIRTUAL;
9257
9273 virtual double BrakeReleaseDelayGet() PURE_VIRTUAL;
9274
9292 virtual void BrakeReleaseDelaySet(double seconds) PURE_VIRTUAL;
9293
9295 virtual void ClosedLoopStepperSet(bool enable) PURE_VIRTUAL;
9296
9298 virtual int32_t ClosedLoopStepperVersionGet() PURE_VIRTUAL;
9299
9301 virtual uint64_t EncoderPointerGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9302
9304 virtual void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address) PURE_VIRTUAL;
9305
9307 virtual uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9308
9309
9311 virtual void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9312
9314 virtual uint64_t FeedbackPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9315
9333 virtual void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9334
9336 virtual int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9337
9339 virtual int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9340
9362 virtual void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9363
9365 virtual const char* const EncoderRatioPrimaryGet() PURE_VIRTUAL;
9366
9368 virtual void EncoderRatioPrimarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9369
9371 virtual const char* const EncoderRatioSecondaryGet() PURE_VIRTUAL;
9372
9374 virtual void EncoderRatioSecondarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9375
9377 virtual int32_t EncoderCountGet() PURE_VIRTUAL;
9378
9381 virtual void EncoderCountSet(int32_t count) PURE_VIRTUAL;
9382
9384 virtual RSIAxisGantryType GantryTypeGet() PURE_VIRTUAL;
9385
9387 virtual void GantryTypeSet(RSIAxisGantryType type) PURE_VIRTUAL;
9388
9402 virtual RSIOperationMode OperationModeGet() PURE_VIRTUAL;
9403
9417 virtual void OperationModeSet(RSIOperationMode mode) PURE_VIRTUAL;
9418
9438 virtual int32_t MotorFaultMaskGet() PURE_VIRTUAL;
9439
9465 virtual void MotorFaultMaskSet(int32_t faultMask) PURE_VIRTUAL;
9467
9472
9494 virtual void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9499 virtual void GearingEnable(Axis* masterAxis, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9500
9519 virtual void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9520
9537 virtual void GearingDisable() PURE_VIRTUAL;
9538
9540 virtual int32_t GearingNumeratorGet() PURE_VIRTUAL;
9541
9543 virtual int32_t GearingDenominatorGet() PURE_VIRTUAL;
9544
9546 virtual bool GearingEnableGet() PURE_VIRTUAL;
9547
9565 virtual int32_t GearingMasterAxisNumberGet() PURE_VIRTUAL;
9566
9579 virtual RSIAxisMasterType GearingSourceGet() PURE_VIRTUAL;
9581
9586
9603 virtual double MotionCamMasterStartGet(Axis* master) PURE_VIRTUAL;
9604
9619 virtual void MotionCamMasterStartSet(Axis* master, double startPosition) PURE_VIRTUAL;
9620
9637 virtual int32_t MotionCamRepeatFromGet() PURE_VIRTUAL;
9638
9656 virtual void MotionCamRepeatFromSet(int32_t repeatFrom) PURE_VIRTUAL;
9657
9675 virtual void MotionCamRepeatStop() PURE_VIRTUAL;
9676
9699 virtual void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
9700
9730 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;
9731
9748
9749 virtual int32_t DriveIndexGet() PURE_VIRTUAL;
9751
9756
9769 virtual double BacklashWidthGet() PURE_VIRTUAL;
9770
9783 virtual void BacklashWidthSet(double width) PURE_VIRTUAL;
9784
9797 virtual double BacklashRateGet() PURE_VIRTUAL;
9798
9811 virtual void BacklashRateSet(double rate) PURE_VIRTUAL;
9812
9813
9824 virtual double BacklashValueGet() PURE_VIRTUAL;
9826
9831
9859 virtual RSIFilterAlgorithm FilterAlgorithmGet() PURE_VIRTUAL;
9860
9885 virtual void FilterAlgorithmSet(RSIFilterAlgorithm algorithm) PURE_VIRTUAL;
9886
9912 virtual double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9913
9936 virtual void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9937
9940 virtual double FilterCoeffGet(RSIFilterGainPIVCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9945 virtual void FilterCoeffSet(RSIFilterGainPIVCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9946
9981 virtual int32_t FilterGainTableGet() PURE_VIRTUAL;
9982
10011 virtual void FilterGainTableSet(int32_t gainTable) PURE_VIRTUAL;
10012
10029 virtual int32_t FilterGainTableSizeGet() PURE_VIRTUAL;
10030
10032 virtual double FilterOutputGet(void) PURE_VIRTUAL;
10033
10046 virtual double FilterLowPassGet() PURE_VIRTUAL;
10047
10063 virtual void FilterLowPassSet(double frequency) PURE_VIRTUAL;
10064
10083 virtual void FilterDualLoopSet(Axis* velocityAxis, RSIMotorFeedback velocityEncoder, bool enable) PURE_VIRTUAL;
10084
10085
10087 virtual bool FilterGainSchedulingGet() PURE_VIRTUAL;
10088
10089
10091 virtual void FilterGainSchedulingSet(bool enable) PURE_VIRTUAL;
10092
10094 virtual bool IsTuneable() PURE_VIRTUAL;
10095
10112 virtual void PostFilterLowPassSet(int32_t sectionNumber, double frequency) PURE_VIRTUAL;
10113
10129 virtual void PostFilterUnityGainSet(int32_t sectionNumber) PURE_VIRTUAL;
10130
10149 virtual void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne) PURE_VIRTUAL;
10150
10166 virtual void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq) PURE_VIRTUAL;
10167
10185 virtual void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth) PURE_VIRTUAL;
10186
10205 virtual void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain) PURE_VIRTUAL;
10206
10225 virtual void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq) PURE_VIRTUAL;
10226
10242 virtual void PostFilterClear(int32_t sectionNumber) PURE_VIRTUAL;
10243
10264 virtual void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo) PURE_VIRTUAL;
10265
10267 virtual const char* const PostFilterInfoGet() PURE_VIRTUAL;
10268 //virtual RSIFilterPostFilterSection PostFilterSection;
10270
10275
10295 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10296
10317 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10319
10324
10346 virtual void PostTrajectoryGearingEnableSet(bool enable) PURE_VIRTUAL;
10347
10366 virtual bool PostTrajectoryGearingEnableGet() PURE_VIRTUAL;
10367
10387 virtual void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber) PURE_VIRTUAL;
10388
10407 virtual int32_t PostTrajectoryGearingMasterAxisGet() PURE_VIRTUAL;
10408
10428 virtual void PostTrajectoryGearingMultiplierSet(double multiplier) PURE_VIRTUAL;
10429
10448 virtual double PostTrajectoryGearingMultiplierGet() PURE_VIRTUAL;
10449
10470 virtual double PostTrajectoryGearingScaledOffsetGet() PURE_VIRTUAL;
10472
10473
10492 virtual uint32_t NetworkIndexGet(RSINetworkIndexType indexType) PURE_VIRTUAL;
10493
10512 virtual void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex) PURE_VIRTUAL;
10513
10521 virtual double BacklashHysteresisLimitGet() PURE_VIRTUAL;
10522
10529 virtual void BacklashHysteresisLimitSet(double hysteresisLimit) PURE_VIRTUAL;
10530
10554 virtual bool StepperMotorLoopbackGet() PURE_VIRTUAL;
10555
10579 virtual void StepperMotorLoopbackSet(bool loopback) PURE_VIRTUAL;
10580
10589 virtual RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse) PURE_VIRTUAL;
10590
10600 virtual void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type) PURE_VIRTUAL;
10601
10608 virtual uint64_t GearingMasterAddressGet() PURE_VIRTUAL;
10609
10611};
10612
10616class RSI_API MultiAxis : public virtual RapidCodeMotion {
10617public:
10618
10622
10636 virtual void AxisAdd(Axis *axis) PURE_VIRTUAL;
10637
10640 virtual void AxesAdd(Axis* *axes, int32_t axisCount) PURE_VIRTUAL;
10641
10654 virtual void AxisRemoveAll() PURE_VIRTUAL;
10655
10659
10675 virtual Axis* AxisGet(int32_t index) PURE_VIRTUAL;
10676
10696 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10697
10718 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10719
10723
10738 virtual double VectorVelocityGet() PURE_VIRTUAL;
10739
10755 virtual void VectorVelocitySet(double velocity) PURE_VIRTUAL;
10756
10771 virtual double VectorAccelerationGet() PURE_VIRTUAL;
10772
10795 virtual void VectorAccelerationSet(double acceleration) PURE_VIRTUAL;
10796
10811 virtual double VectorDecelerationGet() PURE_VIRTUAL;
10812
10835 virtual void VectorDecelerationSet(double deceleration) PURE_VIRTUAL;
10836
10851 virtual double VectorJerkPercentGet() PURE_VIRTUAL;
10852
10875 virtual void VectorJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
10876
10900 virtual void MoveVector(const double* const position) PURE_VIRTUAL;
10901
10904 virtual void MoveVectorRelative(const double* const relativePosition) PURE_VIRTUAL;
10905
10909
10929
10930 virtual double PathTimeSliceGet() PURE_VIRTUAL;
10931
10952
10953 virtual void PathTimeSliceSet(double seconds) PURE_VIRTUAL;
10954
10979 virtual void PathRatioSet(const double* const ratio) PURE_VIRTUAL;
10980
10983 virtual double PathRatioGet(int32_t index) PURE_VIRTUAL;
10984
11001 virtual void PathBlendSet(bool blend) PURE_VIRTUAL;
11002
11011
11012 virtual void PathPlanTypeSet(RSIPathPlanType type) PURE_VIRTUAL;
11013
11022
11023 virtual RSIPathPlanType PathPlanTypeGet() PURE_VIRTUAL;
11024
11043 virtual void PathListStart(const double* const startPosition) PURE_VIRTUAL;
11044
11065 virtual void PathLineAdd(const double* const position) PURE_VIRTUAL;
11066
11086 virtual void PathArcAdd(const double* const center, double angle) PURE_VIRTUAL;
11087
11106 virtual void PathListEnd() PURE_VIRTUAL;
11107
11124 virtual void PathMotionStart() PURE_VIRTUAL;
11125
11129
11147 virtual void MoveTrapezoidal(const double* const position, const double* const vel, const double* const accel, const double* const decel) PURE_VIRTUAL;
11148
11151 virtual void MoveTrapezoidal(const double* const position) PURE_VIRTUAL;
11152
11182 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;
11183
11194 virtual void MoveSCurve(const double* const position) PURE_VIRTUAL;
11195
11210 virtual void MoveVelocity(const double* const velocity, const double* const accel) PURE_VIRTUAL;
11211
11215 virtual void MoveVelocity(const double* const velocity) PURE_VIRTUAL;
11216
11238 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;
11239
11250 virtual void MoveRelative(const double* const relativePosition) PURE_VIRTUAL;
11251
11268 virtual void MoveVelocitySCurve(const double* const velocity, const double* const accel, const double* const jerkPct) PURE_VIRTUAL;
11269
11286 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
11287
11305 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
11306
11308 virtual int32_t AxisMapCountGet() PURE_VIRTUAL;
11309
11323 virtual uint64_t AddressGet(RSIMultiAxisAddressType addressType) PURE_VIRTUAL;
11324
11338 virtual RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type) PURE_VIRTUAL;
11339
11349 virtual bool AmpEnableGet() PURE_VIRTUAL;
11350
11351
11352};
11353
11359class RSI_API IOPoint : public virtual RapidCodeObject {
11360public:
11365
11382 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorDedicatedIn motorDedicatedInNumber);
11383
11400 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11401
11417 static IOPoint* CreateDigitalInput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11418 // use NetworkNode*
11419 static IOPoint* CreateDigitalInput(IO* io, int32_t bitNumber);
11420
11431 static IOPoint* CreateDigitalInput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11432
11446 static IOPoint* CreateDigitalInput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11447
11465 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorDedicatedOut motorDedicatedOutNumber);
11466
11483 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11484
11500 static IOPoint* CreateDigitalOutput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11501 // use NetworkNode*
11502 static IOPoint* CreateDigitalOutput(IO* io, int32_t bitNumber);
11503
11504
11517 static IOPoint* CreateDigitalOutput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11518
11532 static IOPoint* CreateDigitalOutput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11533
11548 static IOPoint* CreateAnalogInput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11549 // use RapidCodeNetworkNode*
11550 static IOPoint* CreateAnalogInput(IO* io, int32_t analogChannel);
11551
11566 static IOPoint* CreateAnalogOutput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11567 // use RapidCodeNetworkNode*
11568 static IOPoint* CreateAnalogOutput(IO* io, int32_t analogChannel);
11569
11571
11575
11578 virtual uint64_t AddressGet() PURE_VIRTUAL;
11579
11582 virtual int32_t MaskGet() PURE_VIRTUAL;
11583
11586 virtual bool IsDigital() PURE_VIRTUAL;
11587
11588
11591 virtual bool IsOutput() PURE_VIRTUAL;
11592
11596
11600 virtual bool Get() PURE_VIRTUAL;
11601
11608 virtual void Set(bool state) PURE_VIRTUAL;
11609
11613
11617 virtual double ValueGet() PURE_VIRTUAL;
11618
11622 virtual void ValueSet(double valueDouble) PURE_VIRTUAL;
11623};
11624
11628class RSI_API RTOS {
11629
11630public:
11631#if defined(_WIN32)
11636
11640
11645 static INtimeStatus INtimeStatusGet(const char* const nodeName);
11646
11650
11655 static INtimeStatus INtimeStart(const char* const nodeName);
11656
11660
11665 static INtimeStatus INtimeStop(const char* const nodeName);
11666
11670
11675 static INtimeStatus INtimeRestart(const char* const nodeName);
11676
11679 static const char* const INtimeCatalogRMPGet();
11680
11683 static const char* const INtimeCatalogRMPNetworkGet();
11684
11687 static uint32_t INtimeNodeCountGet();
11688
11692 static const char* const INtimeNodeNameGet(uint32_t nodeNumber);
11693
11697 static bool INtimeNodeIsLocal(uint32_t nodeNumber);
11699#endif // _WIN32
11700};
11701
11703class RSI_API Trace
11704{
11705public:
11710
11723 static void MaskSet(RSITrace mask);
11724
11740 static void MaskOnSet(RSITrace maskOn);
11741
11742
11762 static bool MaskOnGet(RSITrace maskOn);
11763
11779 static void MaskOffSet(RSITrace maskOff);
11780
11793 static void MaskClear();
11794
11809 static int32_t FileSet(const char* const fileName);
11810
11823 static void FileClose();
11824
11839 static void InjectMessage(RSITrace traceLevel, const char* const message);
11840
11842};
11843
11845
11847
11851class RSI_API IO : public virtual RapidCodeObject {
11852public:
11853
11854 friend class MotionController;
11855
11860
11862 RapidCodeNetworkNode* NetworkNode;
11865
11867
11872
11873
11906 virtual bool IOExists() PURE_VIRTUAL;
11907
11924 virtual int32_t NumberGet() PURE_VIRTUAL;
11926
11931
11932
11933
11963 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
11964
11997 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
11998
12029 virtual void DigitalOutSet(int32_t digitalOutNumber, bool outValue) PURE_VIRTUAL;
12030
12053 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
12054
12086 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
12087
12119 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
12121
12131 virtual const char* const UserLabelGet() PURE_VIRTUAL;
12132
12139 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
12140};
12141
12142#if defined(__cplusplus)
12143}
12144#endif
12145
12146template<typename ContainerClass>
12147class RSI_API RapidVectorIterator
12148{
12149public:
12151 typedef typename ContainerClass::ValueType ValueType;
12152
12154 typedef typename ContainerClass::PointerType PointerType;
12155
12158 ValueType& operator*();
12159
12162 const ValueType& operator*() const;
12163
12166 RapidVectorIterator& operator++();
12167
12170 RapidVectorIterator operator++(int);
12171
12174 bool operator==(const RapidVectorIterator&) const;
12175
12178 bool operator!=(const RapidVectorIterator&) const;
12179
12181 RapidVectorIterator(PointerType pointerArgument, PointerType startArgument, const size_t containerSize);
12182
12184 RapidVectorIterator(const RapidVectorIterator&) = default;
12185
12187 RapidVectorIterator& operator=(const RapidVectorIterator&) = default;
12188
12190 RapidVectorIterator(RapidVectorIterator&&) noexcept = default;
12191
12193 RapidVectorIterator& operator=(RapidVectorIterator&&) noexcept = default;
12194private:
12195 PointerType pointer;
12196 PointerType start, end;
12197 void VerifyPointer() const;
12198};
12199
12200// Forward declaration of the RapidVectorImplementation class.
12201template<typename Type>
12202class RapidVectorImplementation;
12203
12206
12219template<typename Type>
12220class RSI_API RapidVector
12221{
12222private:
12223 // The pointer to the implementation.
12224 RapidVectorImplementation<Type>* pImpl;
12225public:
12229 Type& operator[](const size_t index);
12230
12234 const Type& operator[](const size_t index) const;
12235
12239 Type& At(const size_t index);
12240
12244 const Type& At(const size_t index) const;
12245
12248 void PushBack(const Type& element);
12249
12252 const size_t Size() const;
12253
12255 void Clear();
12256
12258 void PopBack();
12259
12262 Type& Front();
12263
12266 const Type& Front() const;
12267
12270 Type& Back();
12271
12274 const Type& Back() const;
12275
12278
12280 RapidVector(const size_t size);
12281
12283 RapidVector(RapidVectorImplementation<Type>*);
12284
12287
12290
12293
12295 RapidVector(RapidVector&& other) noexcept;
12296
12299
12300 typedef Type* PointerType;
12301 typedef Type ValueType;
12302
12304 typedef RapidVectorIterator<RapidVector> Iterator;
12305
12308 Iterator begin() noexcept;
12309
12312 Iterator begin() const noexcept;
12313
12317 Iterator end() const noexcept;
12318};
12319
12321
12322} // namespace RapidCode
12323
12324} // namespace RSI
12325
12326#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:5736
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:5706
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:11851
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition rsi.h:11862
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:11864
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:11359
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:3836
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:10616
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:11628
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:4231
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:4241
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
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.
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:12221
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:12304
~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:11704
RSIFilterAlgorithm
Filter algorithms.
Definition rsienums.h:1124
RSINetworkEniResult
NetworkEniGenerate return values.
Definition rsienums.h:1389
RSIPDOType
Compensator output types.
Definition rsienums.h:1363
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1369
RSICompensatorOutputType
Compensator output types.
Definition rsienums.h:1357
RSINetworkStartMode
Network start modes.
Definition rsienums.h:587
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
Definition rsienums.h:1111
RSITrace
Trace masks.
Definition rsienums.h:539
RSIMotorStepperPulse
Pulse A or B.
Definition rsienums.h:1214
RSIAxisGantryType
How to combine Axis Feedback Positions.
Definition rsienums.h:1104
RSINetworkState
State of network.
Definition rsienums.h:567
RSIControllerAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:404
RSIMotorDisableAction
Action for when a motor is disabled.
Definition rsienums.h:1284
RSIEventType
Event Types or Status Bits.
Definition rsienums.h:933
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:1005
RSIDataType
Data types for User Limits and other triggers.
Definition rsienums.h:657
RSIUserLimitLogic
Logic options for User Limits.
Definition rsienums.h:644
RSIMotorIoTypeMask
Possible mask bits for Motor I/O types.
Definition rsienums.h:1230
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1080
RSIAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:433
RSIProcessorType
Controller's processor type.
Definition rsienums.h:294
RSIMotorStepperPulseType
Stepper pulse type.
Definition rsienums.h:1220
RSIMotorType
Motor Type.
Definition rsienums.h:1276
RSINetworkStartError
Network start errors.
Definition rsienums.h:593
RSIMotorGeneralIo
Motor I/O bit numbers.
Definition rsienums.h:884
RSIMotionAttrMask
Attribute masks for motion. You cannot mix RSIMotionAttrMaskDELAY and RSIMotionAttrMaskAPPEND.
Definition rsienums.h:1025
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:496
RSIFilterGainPIDCoeff
PID gain coefficients.
Definition rsienums.h:1133
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:631
RSINetworkOutputAddressType
Network output address types.
Definition rsienums.h:1350
INtimeStatus
INtime status values.
Definition rsienums.h:1322
RSIMotionHoldType
Types for MotionHold attribute.
Definition rsienums.h:1060
RSIControllerType
Controller type.
Definition rsienums.h:283
RSIMotorFaultMask
Mask values for several motor faults.
Definition rsienums.h:1264
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:396
RSIMotorBrakeMode
Brake modes.
Definition rsienums.h:1290
RSIErrorMessage
All possible RSI Error Messages.
Definition rsienums.h:17
RSINetworkType
Type of Network topology.
Definition rsienums.h:624
RSIMotorIoType
Possible configurations for Motor I/O.
Definition rsienums.h:1193
RSIAxisPositionInput
Feedback Positions for each Axis.
Definition rsienums.h:1098
RSINodeType
Valid Node types.
Definition rsienums.h:674
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:981
RSIMotorDedicatedIn
Dedicated Input bits per motor.
Definition rsienums.h:856
RSIMotorFeedback
Encoders per motor.
Definition rsienums.h:1118
RSIMotorDedicatedOut
Dedicated Output bits per motor.
Definition rsienums.h:878
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1296
RSIPathPlanType
Path motion planning types.
Definition rsienums.h:1019
RSINetworkTechnologyType
Network technology type.
Definition rsienums.h:1317
RSINetworkIndexType
Network index types for Axis.
Definition rsienums.h:1330
RSINetworkStartupMethod
Network startup methods.
Definition rsienums.h:579
RSIFilterGainPIVCoeff
PIV gain coefficients.
Definition rsienums.h:1154
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1183
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:3814
MathBlock configuration structure.
Definition rsi.h:3807
RSIDataType OutputDataType
Data type for Output. (optional)
Definition rsi.h:3812
uint64_t OutputAddress
Host memory address for Output. The MathBlock will write its result to this address....
Definition rsi.h:3813
uint64_t InputAddress0
Host memory address for Input0. Represents the left-hand side operand in math operations.
Definition rsi.h:3808
RSIDataType InputDataType0
Data type for Input0. This is the data type of the left-hand side operand in math operations.
Definition rsi.h:3809
uint64_t InputAddress1
Host memory address for Input1. Represents the right-hand side operand in math operations.
Definition rsi.h:3810
RSIDataType InputDataType1
Data type for Input1. This is the data type of the right-hand side operand in math operations.
Definition rsi.h:3811
RSIMathBlockOperation Operation
Math operation to be performed. (+, -, *, /, etc) use RSIMathBlockOperationNONE to disable a MathBloc...
Definition rsi.h:3815
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