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
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
838 static inline constexpr double SampleRateDefault = 1000.0;
839
849 static inline constexpr int32_t AxisFrameBufferSizeDefault = 1024;
850
852
853 // Static functions or attributes should be grouped together.
858
861 {
866
871 static inline constexpr int32_t ControllerIndexDefault = 0;
872
877 static inline constexpr uint32_t PathLengthMaximum = 256;
878
884 static inline constexpr int32_t CpuAffinityDefault = -1;
885
890 static inline constexpr int32_t RmpThreadPriorityMaximumDefault = 45;
891
896 static inline constexpr int32_t RmpThreadPriorityRange = 8;
897
902 static inline constexpr int32_t RmpThreadPriorityMinimum = RmpThreadPriorityRange + 1;
903
908 static inline constexpr int32_t RmpThreadPriorityMaximum = 99;
909
914 static inline constexpr int32_t RmpThreadPriorityNoRealTime = 0;
916
917
922
928 {
929 ControllerIndex = ControllerIndexDefault;
930 std::memset(RmpPath, '\0', PathLengthMaximum);
931 std::memset(NicPrimary, '\0', PathLengthMaximum);
932 std::memset(NicSecondary, '\0', PathLengthMaximum);
933#if defined(_WIN32)
934 std::memset(NodeName, '\0', PathLengthMaximum);
935#elif defined(__linux__)
936 CpuAffinity = CpuAffinityDefault;
937 RmpThreadPriorityMax = RmpThreadPriorityMaximumDefault;
938#endif
939 }
941
946
952
957 char RmpPath[PathLengthMaximum];
958
963 char NicPrimary[PathLengthMaximum];
964
969 char NicSecondary[PathLengthMaximum];
971
972 // Control which platform specific parameters are available
973#if defined(_WIN32) && defined(__linux__)
974 static_assert(false, "_WIN32 and __linux__ defined. Double check preprocessor definitions");
975#elif !defined(_WIN32) && !defined(__linux__) && !defined(DOXYGEN)
976 static_assert(false, "Neither _WIN32 nor __linux__ are defined AND this is not a documentation build. Double check preprocessor definitions");
977#endif //defined(_WIN32) && defined(__linux__)
978#if defined(_WIN32) || defined(DOXYGEN)
979
984
989 char NodeName[PathLengthMaximum];
990
992#endif //defined(_WIN32)
993#if defined(__linux__) || defined(DOXYGEN)
994
999
1010
1022
1024# endif // defined(__linux__)
1025 };
1026
1037 static MotionController* Create(CreationParameters* creationParameters);
1038
1044
1049 static MotionController* Get(int32_t controllerIndex);
1050
1051#if defined(_WIN32)
1079
1084 static MotionController* CreateFromSoftware(const char* const RtaPath);
1085
1091 static MotionController* CreateFromSoftware(const char* const RtaPath, const char* const NodeName);
1092
1120#endif // defined(_WIN32)
1121
1126 static MotionController* CreateFromFile(const char* const fileName);
1128
1133
1152 virtual Axis* AxisGet(int32_t axisNumber) PURE_VIRTUAL;
1153
1170 virtual MultiAxis* MultiAxisGet(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1171
1185 virtual MultiAxis* LoadExistingMultiAxis(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1186
1201 virtual RapidCodeNetworkNode* NetworkNodeGet(int32_t nodeNumber) PURE_VIRTUAL;
1202
1218 virtual IO* IOGet(int32_t nodeNumber) PURE_VIRTUAL;
1219
1242 virtual void Delete(void) PURE_VIRTUAL;
1244
1249
1259 virtual void Reset() PURE_VIRTUAL;
1260
1265 virtual void Refresh() PURE_VIRTUAL;
1266
1274 virtual void Shutdown() PURE_VIRTUAL;
1275
1284 virtual void MemoryToFile(const char* const fileName) PURE_VIRTUAL;
1286
1291
1314 virtual int32_t SampleCounterGet() PURE_VIRTUAL;
1315
1330 virtual double ProcessorUsageGet() PURE_VIRTUAL;
1331
1342 virtual void ProcessorUsageClear() PURE_VIRTUAL;
1343
1347 virtual uint32_t FirmwareTimingDeltaGet() PURE_VIRTUAL;
1348
1349
1351
1356
1357
1358
1381 virtual uint32_t SerialNumberGet(void) PURE_VIRTUAL;
1382
1401 virtual void SampleWait(uint32_t samples) PURE_VIRTUAL;
1402
1403
1405 virtual RSIControllerType ControllerTypeGet() PURE_VIRTUAL;
1406
1408 virtual const char* const ServerNameGet() PURE_VIRTUAL;
1409
1411 virtual int32_t ServerPortGet() PURE_VIRTUAL;
1412
1413
1414
1415
1437 virtual RSIProcessorType ProcessorTypeGet() PURE_VIRTUAL;
1438
1443 virtual void SampleRateSet(double sampleRate) PURE_VIRTUAL;
1444
1447 virtual double SampleRateGet() PURE_VIRTUAL;
1448
1466 virtual int32_t AxisCountGet() PURE_VIRTUAL;
1467
1486 virtual void AxisCountSet(int32_t axisCount) PURE_VIRTUAL;
1487
1490 virtual void AxisCountSet(int32_t axisCount, bool setMotorFilterSupervisor) PURE_VIRTUAL;
1491
1494 virtual bool IsLicensed() PURE_VIRTUAL;
1495
1497 virtual int32_t PackageVariantGet() PURE_VIRTUAL;
1498
1500 virtual int32_t AxisLicenseCountGet() PURE_VIRTUAL;
1501
1503 virtual bool MechaWareLicenseGet() PURE_VIRTUAL;
1504
1506 virtual int32_t UnsupportedOptionSet(int32_t option) PURE_VIRTUAL;
1507
1532 virtual int32_t MotionCountGet() PURE_VIRTUAL;
1533
1550 virtual void MotionCountSet(int32_t motionCount) PURE_VIRTUAL;
1551
1577 virtual int32_t UserVersionGet() PURE_VIRTUAL;
1578
1602 virtual void UserVersionSet(int32_t version) PURE_VIRTUAL;
1603
1606 virtual int32_t ExternalMemorySizeGet() PURE_VIRTUAL;
1607
1624 virtual void AxisFrameBufferSizeSet(int32_t axisNumber, int32_t frameBufferSize) PURE_VIRTUAL;
1625
1640 virtual int32_t AxisFrameBufferSizeGet(int32_t axisNumber) PURE_VIRTUAL;
1642
1647
1665 virtual const char* const FirmwareVersionGet() PURE_VIRTUAL;
1666
1684 virtual int32_t FirmwareOptionGet() PURE_VIRTUAL;
1685
1687 virtual bool HasMechaWare() PURE_VIRTUAL;
1688
1712 virtual int32_t MemoryGet(uint64_t address) PURE_VIRTUAL;
1713
1714
1732 virtual double MemoryDoubleGet(uint64_t address) PURE_VIRTUAL;
1733
1759 virtual void MemoryBlockGet(uint64_t address, void* dataStart, int32_t size) PURE_VIRTUAL;
1760
1775 virtual void MemorySet(uint64_t address, int32_t data) PURE_VIRTUAL;
1776
1777
1778
1795 virtual void MemoryDoubleSet(uint64_t address, double dataDouble) PURE_VIRTUAL;
1796
1822 virtual void MemoryBlockSet(uint64_t address, const void* const dataStart, int32_t size) PURE_VIRTUAL;
1823
1842 virtual uint32_t FirmwareAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1843
1844
1845
1846
1869 virtual uint64_t HostAddressGet(uint32_t firmwareAddress) PURE_VIRTUAL;
1870
1871
1872
1895 virtual int32_t BackgroundCycleCounterGet() PURE_VIRTUAL;
1896
1897
1898
1899
1908 virtual uint64_t AddressFromStringGet(const char* const addressName) PURE_VIRTUAL;
1909
1910
1911
1920 virtual const char* const StringFromAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1921
1936 virtual uint64_t AddressGet(RSIControllerAddressType type) PURE_VIRTUAL;
1937
1955 virtual uint64_t AddressGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1956
1957
1970 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type) PURE_VIRTUAL;
1971
1976 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1977
1991 virtual bool MotionHoldGateGet(int32_t gateNumber) PURE_VIRTUAL;
1992
1993
1994
2010 virtual void MotionHoldGateSet(int32_t gateNumber, bool hold) PURE_VIRTUAL;
2012
2017
2019 virtual RSINetworkTechnologyType NetworkTechnologyTypeGet() PURE_VIRTUAL;
2020
2022 virtual RSINetworkType NetworkTypeGet() PURE_VIRTUAL;
2023
2026 virtual int32_t NetworkNodeCountGet() PURE_VIRTUAL;
2027
2073 virtual RSINetworkEniResult NetworkEniGenerate() PURE_VIRTUAL;
2074
2095 virtual const char* const NetworkEniGenerateOutputGet() PURE_VIRTUAL;
2096
2098 virtual void NetworkStart() PURE_VIRTUAL;
2099
2108 virtual void NetworkStart(RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2109
2113 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2114
2119 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
2120
2122 virtual void NetworkShutdown() PURE_VIRTUAL;
2123
2126 virtual RSINetworkState NetworkStateGet() PURE_VIRTUAL;
2127
2129 virtual int32_t NetworkCounterGet() PURE_VIRTUAL;
2130
2132 virtual int32_t NetworkInputCountGet() PURE_VIRTUAL;
2133
2135 virtual int32_t NetworkInputBitSizeGet(int32_t index) PURE_VIRTUAL;
2136
2140 virtual const char* const NetworkInputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2141
2144 virtual int32_t NetworkInputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2145
2148 virtual const char* const NetworkInputNameGet(int32_t index) PURE_VIRTUAL;
2149
2153 virtual uint64_t NetworkInputValueGet(int32_t index) PURE_VIRTUAL;
2154
2155
2156
2160 virtual uint64_t NetworkInputAddressGet(int32_t index) PURE_VIRTUAL;
2161
2165 virtual int32_t NetworkOutputCountGet() PURE_VIRTUAL;
2166
2169 virtual int32_t NetworkOutputBitSizeGet(int32_t index) PURE_VIRTUAL;
2170
2171
2175 virtual const char* const NetworkOutputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2176
2178 virtual int32_t NetworkOutputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2179
2181 virtual const char* const NetworkOutputNameGet(int32_t index) PURE_VIRTUAL;
2182
2198 virtual uint64_t NetworkOutputValueGet(int32_t index) PURE_VIRTUAL;
2199
2216 virtual void NetworkOutputValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2217
2236 virtual uint64_t NetworkOutputAddressGet(int32_t index) PURE_VIRTUAL;
2237
2242 virtual uint64_t NetworkOutputAddressGet(int32_t index, RSINetworkOutputAddressType type) PURE_VIRTUAL;
2243
2254 virtual uint64_t NetworkOutputIntendedValueGet(int32_t index) PURE_VIRTUAL;
2255
2267 virtual void NetworkOutputOverrideSet(int32_t index, bool outputOverride) PURE_VIRTUAL;
2268
2279 virtual bool NetworkOutputOverrideGet(int32_t index) PURE_VIRTUAL;
2280
2281
2282
2283
2300 virtual void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2301
2314 virtual uint64_t NetworkOutputOverrideValueGet(int32_t index) PURE_VIRTUAL;
2315
2330 virtual uint64_t NetworkOutputSentValueGet(int32_t index) PURE_VIRTUAL;
2331
2335 virtual int32_t NetworkLogMessageCountGet() PURE_VIRTUAL;
2336
2338 virtual RSINetworkStartError LastNetworkStartErrorGet() PURE_VIRTUAL;
2339
2344 virtual const char* const NetworkLogMessageGet(int32_t messageIndex) PURE_VIRTUAL;
2345
2347 virtual void NetworkTimingEnableSet(bool enable) PURE_VIRTUAL;
2348
2350 virtual void NetworkTimingClear() PURE_VIRTUAL;
2351
2353 virtual uint32_t NetworkTimingDeltaGet() PURE_VIRTUAL;
2354
2356 virtual uint32_t NetworkTimingMinGet() PURE_VIRTUAL;
2357
2359 virtual uint32_t NetworkTimingMaxGet() PURE_VIRTUAL;
2360
2362 virtual void NetworkTimingThresholdLowSet(uint32_t microseconds) PURE_VIRTUAL;
2363
2365 virtual void NetworkTimingThresholdHighSet(uint32_t microseconds) PURE_VIRTUAL;
2366
2368 virtual uint32_t NetworkTimingThresholdLowCountGet() PURE_VIRTUAL;
2369
2371 virtual uint32_t NetworkTimingThresholdHighCountGet() PURE_VIRTUAL;
2372
2374 virtual bool NetworkSynchronizedGet() PURE_VIRTUAL;
2376
2381
2398 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
2399
2418 virtual void InterruptWake() PURE_VIRTUAL;
2419
2447 virtual void SyncInterruptEnableSet(bool enable) PURE_VIRTUAL;
2448
2474 virtual void SyncInterruptPeriodSet(uint32_t samples) PURE_VIRTUAL;
2475
2495 virtual int32_t SyncInterruptWait() PURE_VIRTUAL;
2496
2498 virtual bool ServiceThreadStateGet() PURE_VIRTUAL;
2499
2510 virtual int32_t SyncInterruptHostProcessTimeGet() PURE_VIRTUAL;
2511
2513 virtual int32_t SyncInterruptHostProcessFlagGet() PURE_VIRTUAL;
2514
2527 virtual void SyncInterruptHostProcessFlagSet(bool hostProcessFlag) PURE_VIRTUAL;
2528
2539 virtual bool SyncInterruptHostProcessStatusBitGet() PURE_VIRTUAL;
2540
2550 virtual void SyncInterruptHostProcessStatusClear() PURE_VIRTUAL;
2551
2577
2578 virtual void ServiceThreadEnableSet(bool enable) PURE_VIRTUAL;
2580
2585
2586
2587
2606 virtual int32_t RecorderCountGet() PURE_VIRTUAL;
2607
2625 virtual void RecorderCountSet(int32_t recorderCount) PURE_VIRTUAL;
2626
2643 virtual void RecorderPeriodSet(uint32_t samples) PURE_VIRTUAL;
2644
2646 virtual void RecorderPeriodSet(int32_t recorderNumber, uint32_t samples) PURE_VIRTUAL;
2647
2664 virtual void RecorderCircularBufferSet(bool enable) PURE_VIRTUAL;
2665
2667 virtual void RecorderCircularBufferSet(int32_t recorderNumber, bool enable) PURE_VIRTUAL;
2668
2684 virtual void RecorderDataCountSet(int32_t count) PURE_VIRTUAL;
2685
2687 virtual void RecorderDataCountSet(int32_t recorderNumber,int32_t count) PURE_VIRTUAL;
2688
2705 virtual void RecorderDataAddressSet(int32_t index, uint64_t address) PURE_VIRTUAL;
2706
2708 virtual void RecorderDataAddressSet(int32_t recorderNumber,int32_t index, uint64_t address) PURE_VIRTUAL;
2709
2710
2716 virtual void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t* const addresses, int32_t addressCount) PURE_VIRTUAL;
2717
2731
2737 virtual void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2738
2745 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2746
2752 virtual void RecorderConfigureToTriggerOnMotion(MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2753
2760 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2761
2768 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, int32_t motionNumber, bool triggerOnMotion) PURE_VIRTUAL;
2769
2778 virtual bool RecorderTriggerOnMotionGet(int32_t recorderNumber) PURE_VIRTUAL;
2779
2795 virtual bool RecorderEnabledGet() PURE_VIRTUAL;
2796
2798 virtual bool RecorderEnabledGet(int32_t recorderNumber ) PURE_VIRTUAL;
2799
2816 virtual int32_t RecorderRecordCountGet() PURE_VIRTUAL;
2817
2819 virtual int32_t RecorderRecordCountGet(int32_t recorderNumber ) PURE_VIRTUAL;
2820
2834 virtual int32_t RecorderRecordMaxCountGet() PURE_VIRTUAL;
2835
2837 virtual int32_t RecorderRecordMaxCountGet(int32_t recorderNumber) PURE_VIRTUAL;
2838
2853 virtual void RecorderStart() PURE_VIRTUAL;
2854
2856 virtual void RecorderStart(int32_t recorderNumber) PURE_VIRTUAL;
2857
2874 virtual void RecorderStop() PURE_VIRTUAL;
2875
2877 virtual void RecorderStop(int32_t recorderNumber) PURE_VIRTUAL;
2878
2879
2880
2896 virtual const int32_t* const RecorderRecordDataGet() PURE_VIRTUAL;
2897
2899 virtual const int32_t* const RecorderRecordDataGet(int32_t recorderNumber) PURE_VIRTUAL;
2900
2915 virtual void RecorderRecordDataRetrieve() PURE_VIRTUAL;
2916
2936 virtual int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount) PURE_VIRTUAL;
2937
2939 virtual void RecorderRecordDataRetrieve(int32_t recorderNumber) PURE_VIRTUAL;
2940
2957 virtual int32_t RecorderRecordDataValueGet(int32_t index) PURE_VIRTUAL;
2958
2960 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2961
2980 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
2981
2983 virtual double RecorderRecordDataDoubleGet(int32_t index) PURE_VIRTUAL;
2984
2986 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2987
3006 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3007
3025 virtual void RecorderBufferHighCountSet(int32_t bufferHighCount) PURE_VIRTUAL;
3026
3028 virtual void RecorderBufferHighCountSet(int32_t recorderNumber, int32_t bufferHighCount) PURE_VIRTUAL;
3029
3044 virtual void RecorderReset() PURE_VIRTUAL;
3045
3047 virtual void RecorderReset(int32_t recorderNumber) PURE_VIRTUAL;
3048
3060 virtual int32_t RecorderBufferSizeGet(int32_t recorderNumber) PURE_VIRTUAL;
3061
3078 virtual void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize) PURE_VIRTUAL;
3080
3085
3086
3087
3088
3113 virtual int32_t CompensatorCountGet() PURE_VIRTUAL;
3114
3134 virtual void CompensatorCountSet(int32_t compensatorCount) PURE_VIRTUAL;
3135
3146 virtual int32_t CompensatorPointCountGet(int32_t compensatorNumber) PURE_VIRTUAL;
3147
3167 virtual void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount) PURE_VIRTUAL;
3168
3182 virtual int32_t CompensatorDimensionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3183
3209 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;
3210
3240 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;
3241
3262 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;
3263
3284 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;
3285
3297 virtual void CompensatorTableSet(int32_t compensatorNumber, const double* const table) PURE_VIRTUAL;
3298
3310 virtual void CompensatorTableGet(int32_t compensatorNumber, double* table) PURE_VIRTUAL;
3311
3331 virtual double CompensatorPositionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3332
3333
3334
3335
3336
3337
3349
3350 virtual void CompensatorTableClear(int32_t compensatorNumber) PURE_VIRTUAL;
3351
3360 virtual void CompensatorDisable(int32_t compensatorNumber) PURE_VIRTUAL;
3361
3366 virtual void CompensatorDisable(int32_t compensatorNumber, bool force) PURE_VIRTUAL;
3367
3374 virtual void CompensatorEnable(int32_t compensatorNumber) PURE_VIRTUAL;
3375
3377
3382
3402 virtual int32_t UserLimitCountGet() PURE_VIRTUAL;
3403
3423 virtual void UserLimitCountSet(int32_t userLimitCount) PURE_VIRTUAL;
3424
3444 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot) PURE_VIRTUAL;
3445
3448 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration) PURE_VIRTUAL;
3449
3451 virtual RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number) PURE_VIRTUAL;
3452
3454 virtual RSIAction UserLimitActionGet(int32_t number) PURE_VIRTUAL;
3455
3457 virtual int32_t UserLimitAxisNumberGet(int32_t number) PURE_VIRTUAL;
3458
3460 virtual double UserLimitDurationGet(int32_t number) PURE_VIRTUAL;
3461
3463 virtual bool UserLimitSingleShotGet(int32_t number) PURE_VIRTUAL;
3464
3489 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32) PURE_VIRTUAL;
3490
3512 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfDouble, double limitValueDouble) PURE_VIRTUAL;
3513
3515 virtual RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3516
3518 virtual RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3519
3521 virtual uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3522
3524 virtual uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3525
3527 virtual int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3528
3530 virtual double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3531
3558 virtual void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3559
3562 virtual void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3563
3566 virtual void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3567
3570 virtual void UserLimitOutputSet(int32_t number, double limitValueDouble, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3571
3587 virtual void UserLimitOutputSet(int32_t number, RSIDataType dataType, uint64_t inputPtr, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3588
3590 virtual bool UserLimitOutputEnableGet(int32_t number) PURE_VIRTUAL;
3591
3593 virtual RSIDataType UserLimitOutputDataTypeGet(int32_t number) PURE_VIRTUAL;
3594
3596 virtual uint64_t UserLimitOutputAddressGet(int32_t number) PURE_VIRTUAL;
3597
3599 virtual uint64_t UserLimitOutputInputAddressGet(int32_t number) PURE_VIRTUAL;
3600
3602 virtual uint32_t UserLimitOutputAndMaskGet(int32_t number) PURE_VIRTUAL;
3603
3605 virtual uint32_t UserLimitOutputOrMaskGet(int32_t number) PURE_VIRTUAL;
3606
3608 virtual int32_t UserLimitOutputValueGet(int32_t number) PURE_VIRTUAL;
3609
3611 virtual uint64_t UserLimitOutputAndMask64Get(int32_t number) PURE_VIRTUAL;
3612
3614 virtual uint64_t UserLimitOutputOrMask64Get(int32_t number) PURE_VIRTUAL;
3615
3616
3618 virtual double UserLimitOutputDoubleGet(int32_t number) PURE_VIRTUAL;
3619
3640 virtual bool UserLimitStateGet(int32_t number) PURE_VIRTUAL;
3641
3662 virtual bool UserLimitEnableGet(int32_t number) PURE_VIRTUAL;
3663
3665 virtual void UserLimitEnableSet(int32_t number, bool enable) PURE_VIRTUAL;
3666
3681 virtual void UserLimitDisable(int32_t number) PURE_VIRTUAL;
3682
3694 virtual void UserLimitReset(int32_t number) PURE_VIRTUAL;
3695
3704
3705 virtual int32_t UserLimitCountMax() PURE_VIRTUAL;
3706
3724 virtual void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address) PURE_VIRTUAL;
3725
3727 virtual uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex) PURE_VIRTUAL;
3729
3730
3735
3745 virtual int32_t MathBlockCountGet() PURE_VIRTUAL;
3746
3757 virtual void MathBlockCountSet(int32_t mathBlockCount) PURE_VIRTUAL;
3758
3777
3779 virtual MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3780
3782 virtual void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig& config) PURE_VIRTUAL;
3783
3785 virtual FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3786
3788
3789
3794
3797
3799};
3800
3804class RSI_API RapidCodeNetworkNode : public virtual RapidCodeObject {
3805public:
3806
3811
3813 static inline constexpr uint32_t SDOTimeoutMillisecondsDefault = 100;
3814
3816
3817
3822
3824 virtual bool Exists() PURE_VIRTUAL;
3825
3827 virtual RSINodeType TypeGet() PURE_VIRTUAL;
3828
3830 virtual bool IsEtherCAT() PURE_VIRTUAL;
3831
3833 virtual bool IsSynqNet() PURE_VIRTUAL;
3834
3836
3841
3843 virtual bool HasIO() PURE_VIRTUAL;
3844
3846 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
3847
3849 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
3850
3852 virtual void DigitalOutSet(int32_t digitalOutNumber, bool state) PURE_VIRTUAL;
3853
3855 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
3856
3858 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
3859
3861 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
3862
3864
3868
3870 virtual int32_t DigitalInCountGet() PURE_VIRTUAL;
3871
3873 virtual int32_t DigitalOutCountGet() PURE_VIRTUAL;
3874
3876 virtual int32_t AnalogInCountGet() PURE_VIRTUAL;
3877
3879 virtual int32_t AnalogOutCountGet() PURE_VIRTUAL;
3880
3881
3883 virtual int32_t SegmentCountGet() PURE_VIRTUAL;
3884
3886 virtual int32_t SegmentDigitalInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3887
3889 virtual int32_t SegmentDigitalOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3890
3892 virtual int32_t SegmentAnalogInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3893
3895 virtual int32_t SegmentAnalogOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3896
3898 virtual int32_t SegmentIDGet(int32_t segmentNumber) PURE_VIRTUAL;
3899
3912 virtual uint64_t DigitalInAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3913
3926 virtual int32_t DigitalInMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3927
3940 virtual uint64_t DigitalOutAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3941
3954 virtual int32_t DigitalOutMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3955
3967 virtual uint64_t AnalogInAddressGet(int32_t channel) PURE_VIRTUAL;
3968
3980 virtual int32_t AnalogInMaskGet(int32_t channel) PURE_VIRTUAL;
3981
3993 virtual uint64_t AnalogOutAddressGet(int32_t channel) PURE_VIRTUAL;
3994
4006 virtual int32_t AnalogOutMaskGet(int32_t channel) PURE_VIRTUAL;
4007
4021 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4022
4026 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4027
4040 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4041
4045 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4046
4057 virtual RapidVector<uint8_t> ServiceChannelReadBytes(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4058
4072 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue) PURE_VIRTUAL;
4073
4074
4079 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4080
4092 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue) PURE_VIRTUAL;
4093
4101 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4102
4111 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, RapidVector<uint8_t> bytes, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4112
4118 virtual char* AKDASCIICommand(const char* const command) PURE_VIRTUAL;
4119
4121 virtual void ClearFaults(int32_t axisNumber) PURE_VIRTUAL;
4122
4124 virtual uint32_t VendorIdGet() PURE_VIRTUAL;
4125
4138 virtual const char* const NameGet() PURE_VIRTUAL;
4139
4152 virtual const char* const ProductNameGet() PURE_VIRTUAL;
4153
4166 virtual const char* const VendorNameGet() PURE_VIRTUAL;
4167
4169 virtual uint32_t ProductCodeGet() PURE_VIRTUAL;
4170
4172 virtual uint32_t RevisionGet() PURE_VIRTUAL;
4173
4175 virtual uint32_t StationAliasGet() PURE_VIRTUAL;
4176
4178 virtual const char* const SerialNumberGet() PURE_VIRTUAL;
4179
4181 virtual uint32_t AxisCountGet() PURE_VIRTUAL;
4182
4184 virtual uint16_t StatusWordGet(int32_t axisIndex) PURE_VIRTUAL;
4185};
4186
4188
4191class RSI_API RapidCodeMotion : public virtual RapidCodeInterrupt{
4192public:
4193
4199
4202
4204
4205
4209
4227 virtual int32_t NumberGet() PURE_VIRTUAL;
4228
4245 virtual int32_t AxisCountGet() PURE_VIRTUAL;
4246
4250
4275 virtual void TriggeredModify() PURE_VIRTUAL;
4276
4303 virtual void Stop() PURE_VIRTUAL;
4304
4329 virtual void Resume() PURE_VIRTUAL;
4330
4355 virtual void EStop() PURE_VIRTUAL;
4356
4377 virtual void EStopAbort() PURE_VIRTUAL;
4378
4395 virtual void EStopModify() PURE_VIRTUAL;
4396
4399 virtual void EStopModifyAbort() PURE_VIRTUAL;
4400
4422 virtual void Abort() PURE_VIRTUAL;
4423
4450 virtual void ClearFaults() PURE_VIRTUAL;
4451
4478 virtual void AmpEnableSet(bool enable) PURE_VIRTUAL;
4479
4509 virtual int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds) PURE_VIRTUAL;
4510
4530
4531 virtual void Map() PURE_VIRTUAL;
4532
4550 virtual void Unmap() PURE_VIRTUAL;
4551
4556 virtual bool IsMapped() PURE_VIRTUAL;
4557
4574 virtual void FeedRateSet(double rate) PURE_VIRTUAL;
4575
4594 virtual double FeedRateGet() PURE_VIRTUAL;
4595
4599
4600
4601
4602
4622 virtual RSIState StateGet() PURE_VIRTUAL;
4623
4651 virtual RSISource SourceGet() PURE_VIRTUAL;
4652
4677 virtual const char* const SourceNameGet(RSISource source) PURE_VIRTUAL;
4678
4701 virtual int32_t MotionDoneWait() PURE_VIRTUAL;
4702
4729 virtual int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds) PURE_VIRTUAL;
4730
4751 virtual bool MotionDoneGet() PURE_VIRTUAL;
4752
4775 virtual bool StatusBitGet(RSIEventType bitMask) PURE_VIRTUAL;
4776
4791 virtual uint64_t StatusBitsGet() PURE_VIRTUAL;
4792
4796
4825 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
4826
4840 virtual void InterruptWake() PURE_VIRTUAL;
4841
4845
4861 virtual double StopTimeGet() PURE_VIRTUAL;
4862
4878 virtual void StopTimeSet(double seconds) PURE_VIRTUAL;
4879
4895 virtual double EStopTimeGet() PURE_VIRTUAL;
4896
4912 virtual void EStopTimeSet(double seconds) PURE_VIRTUAL;
4913
4930 virtual double MotionDelayGet() PURE_VIRTUAL;
4931
4952 virtual void MotionDelaySet(double seconds) PURE_VIRTUAL;
4953
4974 virtual uint16_t MotionIdGet() PURE_VIRTUAL;
4975
4993 virtual void MotionIdSet(uint16_t id) PURE_VIRTUAL;
4994
4996 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
4997
4999 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
5000
5015 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
5016
5024 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
5025
5045 virtual RSIMotionHoldType MotionHoldTypeGet() PURE_VIRTUAL;
5046
5079 virtual void MotionHoldTypeSet(RSIMotionHoldType type) PURE_VIRTUAL;
5080
5092 virtual int32_t MotionHoldGateNumberGet() PURE_VIRTUAL;
5093
5112
5113 virtual void MotionHoldGateNumberSet(int32_t gateNumber) PURE_VIRTUAL;
5114
5131 virtual double MotionHoldTimeoutGet() PURE_VIRTUAL;
5132
5151 virtual void MotionHoldTimeoutSet(double seconds) PURE_VIRTUAL;
5152
5176 virtual bool MotionHoldGateGet() PURE_VIRTUAL;
5177
5200 virtual void MotionHoldGateSet(bool hold) PURE_VIRTUAL;
5201
5218 virtual int32_t MotionHoldAxisNumberGet() PURE_VIRTUAL;
5219
5236 virtual void MotionHoldAxisNumberSet(int32_t number) PURE_VIRTUAL;
5237
5254
5255 virtual double MotionHoldAxisPositionGet() PURE_VIRTUAL;
5256
5273 virtual void MotionHoldAxisPositionSet(double position) PURE_VIRTUAL;
5274
5276 virtual RSIUserLimitLogic MotionHoldAxisLogicGet() PURE_VIRTUAL;
5277
5279 virtual void MotionHoldAxisLogicSet(RSIUserLimitLogic logic) PURE_VIRTUAL;
5280
5297 virtual uint64_t MotionHoldUserAddressGet() PURE_VIRTUAL;
5298
5315 virtual void MotionHoldUserAddressSet(uint64_t address) PURE_VIRTUAL;
5316
5332 virtual int32_t MotionHoldUserMaskGet() PURE_VIRTUAL;
5333
5349 virtual void MotionHoldUserMaskSet(int32_t holdMask) PURE_VIRTUAL;
5350
5366 virtual int32_t MotionHoldUserPatternGet() PURE_VIRTUAL;
5367
5383 virtual void MotionHoldUserPatternSet(int32_t pattern) PURE_VIRTUAL;
5384
5386 virtual void MotionAttributeMaskDefaultSet() PURE_VIRTUAL;
5387
5412
5413 virtual bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5414
5433 virtual void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5434
5451
5452 virtual void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff) PURE_VIRTUAL;
5453
5457
5458
5459
5495 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;
5496
5534 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;
5535
5565 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;
5566
5571 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address) PURE_VIRTUAL;
5572
5594 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
5595
5600 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on) PURE_VIRTUAL;
5601
5620 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on, int32_t ptPointIndex) PURE_VIRTUAL;
5621
5637 virtual void StreamingOutputsClear() PURE_VIRTUAL;
5638
5658 virtual void StreamingOutputsEnableSet(bool enable) PURE_VIRTUAL;
5659};
5660
5661
5666class RSI_API Axis : public virtual RapidCodeMotion{
5667public:
5668
5669 friend class MotionController;
5670 friend class MultiAxis;
5671
5672
5677
5679 static inline constexpr uint32_t NetworkIndexInvalid = 65535;
5680
5682 static inline constexpr double AmpEnableAmpFaultTimeoutSecondsDefault = 1.0;
5683
5685
5686
5691
5696 RapidCodeNetworkNode* NetworkNode;
5697
5698
5700
5705
5743 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel) PURE_VIRTUAL;
5744
5766 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel) PURE_VIRTUAL;
5767
5790 virtual void MoveTrapezoidal(double position) PURE_VIRTUAL; // use defaults Overload
5791 //virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel, bool checkLimits) PURE_VIRTUAL;
5792
5831 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5832
5837 virtual void MoveSCurve(double position) PURE_VIRTUAL;
5838
5848 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5849
5853 virtual void MoveVelocity(double velocity) PURE_VIRTUAL;
5854
5889 virtual void MoveVelocity(double velocity, double accel) PURE_VIRTUAL;
5890
5927 virtual void MoveVelocitySCurve(double velocity, double accel, double jerkPct) PURE_VIRTUAL;
5928
5967 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5968
5972 virtual void MoveRelative(double releativePosition) PURE_VIRTUAL;
5973
5977 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5979
5984
6009 virtual void PositionSet(double position) PURE_VIRTUAL;
6010
6029 virtual double ActualPositionGet() PURE_VIRTUAL;
6030
6052 virtual void ActualPositionSet(double position) PURE_VIRTUAL;
6053
6070 virtual double CompensationPositionGet() PURE_VIRTUAL;
6071
6084 virtual void CompensationPositionSet(double position) PURE_VIRTUAL;
6085
6097 virtual double TargetPositionGet() PURE_VIRTUAL;
6098
6118 virtual double CommandPositionGet() PURE_VIRTUAL;
6119
6151 virtual void CommandPositionSet(double position) PURE_VIRTUAL;
6152
6176 virtual void CommandPositionDirectSet(double position) PURE_VIRTUAL;
6177
6194 virtual double OriginPositionGet() PURE_VIRTUAL;
6195
6218 virtual void OriginPositionSet(double position) PURE_VIRTUAL;
6219
6240 virtual double PositionErrorGet() PURE_VIRTUAL;
6241
6263 virtual double CommandVelocityGet() PURE_VIRTUAL;
6264
6287 virtual double ActualVelocityGet() PURE_VIRTUAL;
6288
6309 virtual double CommandAccelGet() PURE_VIRTUAL;
6310
6312 virtual double CommandJerkGet() PURE_VIRTUAL;
6313
6334 virtual double EncoderPositionGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
6335
6357 virtual double UserUnitsGet() PURE_VIRTUAL;
6358
6381 virtual void UserUnitsSet(double countsPerUserUnit) PURE_VIRTUAL;
6382
6384 virtual double UserUnitsToCounts(double userUnits) PURE_VIRTUAL;
6385
6387 virtual double CountsToUserUnits(double counts) PURE_VIRTUAL;
6388
6408 virtual int32_t FramesToExecuteGet() PURE_VIRTUAL;
6410
6415
6436
6437 virtual void Home() PURE_VIRTUAL; // this one moves to zero by default
6438
6442 virtual void Home(bool moveToZero) PURE_VIRTUAL;
6443
6462
6463 virtual RSIHomeMethod HomeMethodGet() PURE_VIRTUAL;
6464
6483
6484 virtual void HomeMethodSet(RSIHomeMethod method) PURE_VIRTUAL;
6485
6506
6507 virtual double HomeOffsetGet() PURE_VIRTUAL;
6508
6527
6528 virtual void HomeOffsetSet(double offset) PURE_VIRTUAL;
6529
6547
6548 virtual double HomeVelocityGet() PURE_VIRTUAL;
6549
6552 virtual double HomeVelocityGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6553
6574 virtual void HomeVelocitySet(double velocity) PURE_VIRTUAL;
6575
6580 virtual void HomeVelocitySet(RSIHomeStage homeStage, double velocity) PURE_VIRTUAL;
6581
6597 virtual double HomeSlowVelocityGet() PURE_VIRTUAL;
6598
6614 virtual void HomeSlowVelocitySet(double velocity) PURE_VIRTUAL;
6615
6633
6634 virtual double HomeAccelerationGet() PURE_VIRTUAL;
6635
6638 virtual double HomeAccelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6639
6659
6660 virtual void HomeAccelerationSet(double accel) PURE_VIRTUAL;
6661
6665 virtual void HomeAccelerationSet(RSIHomeStage homeStage, double accel) PURE_VIRTUAL;
6666
6683
6684 virtual double HomeDecelerationGet() PURE_VIRTUAL;
6685
6688 virtual double HomeDecelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6689
6708
6709 virtual void HomeDecelerationSet(double decel) PURE_VIRTUAL;
6710
6714 virtual void HomeDecelerationSet(RSIHomeStage homeStage, double decel) PURE_VIRTUAL;
6715
6733
6734 virtual double HomeJerkPercentGet() PURE_VIRTUAL;
6735
6738 virtual double HomeJerkPercentGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6739
6759 virtual void HomeJerkPercentSet(double percent) PURE_VIRTUAL;
6760
6765 virtual void HomeJerkPercentSet(RSIHomeStage homeStage, double percent) PURE_VIRTUAL;
6766
6786 virtual void HomeCancelSet(bool cancel) PURE_VIRTUAL;
6787
6806 virtual bool HomeStateGet() PURE_VIRTUAL;
6807
6820 virtual void HomeStateSet(bool homed) PURE_VIRTUAL;
6821
6826 virtual void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex) PURE_VIRTUAL;
6827
6829 virtual void HomeLimitCustomConfigReset() PURE_VIRTUAL;
6830
6832 virtual uint64_t HomeLimitCustomConfigAddressGet() PURE_VIRTUAL;
6833
6836 virtual int32_t HomeLimitCustomConfigBitIndexGet() PURE_VIRTUAL;
6837
6859
6860 virtual void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel) PURE_VIRTUAL;
6861
6881 virtual RSIHomeStage HomeStageGet() PURE_VIRTUAL;
6882
6896 virtual void HomeBehaviorSet(RSIAction behavior) PURE_VIRTUAL;
6897
6909 virtual RSIAction HomeBehaviorGet() PURE_VIRTUAL;
6911
6917
6919 virtual bool FaultMaskBitGet(RSIMotorFaultMask bitMask) PURE_VIRTUAL;
6920
6922 virtual uint16_t StatusWordGet() PURE_VIRTUAL;
6924
6929 // reads active configuration to report state
6930
6954
6955 virtual bool NegativeLimitGet() PURE_VIRTUAL;
6956
6980 virtual bool PositiveLimitGet() PURE_VIRTUAL;
6981
7010 virtual bool HomeLimitGet() PURE_VIRTUAL;
7011
7039 virtual bool HomeSwitchGet() PURE_VIRTUAL;
7040
7061 virtual bool AmpFaultGet() PURE_VIRTUAL;
7062
7086 virtual bool AmpEnableGet() PURE_VIRTUAL;
7087
7112 virtual bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7113
7138 virtual bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7139
7162 virtual bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7163
7186 virtual bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7188
7193
7214 virtual bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7215
7236 virtual bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7237
7258
7259 virtual void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue) PURE_VIRTUAL;
7260
7279 virtual bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7280
7299 virtual const char* const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7300
7323 virtual RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7324
7343 virtual void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type) PURE_VIRTUAL;
7344
7361 virtual double AnalogInGet(int32_t channel) PURE_VIRTUAL;
7363
7368
7382 virtual double EStopDecelerationGet() PURE_VIRTUAL;
7383
7398 virtual void EStopDecelerationSet(double decel) PURE_VIRTUAL;
7399
7410 virtual double EStopJerkPercentGet() PURE_VIRTUAL;
7411
7429 virtual void EStopJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7430
7440 virtual double TriggeredModifyDecelerationGet() PURE_VIRTUAL;
7441
7459 virtual void TriggeredModifyDecelerationSet(double decel) PURE_VIRTUAL;
7460
7471 virtual double TriggeredModifyJerkPercentGet() PURE_VIRTUAL;
7472
7490 virtual void TriggeredModifyJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7491
7493 virtual int32_t FrameBufferSizeGet() PURE_VIRTUAL;
7494
7496 virtual void FrameBufferSizeSet(int32_t frameSize) PURE_VIRTUAL;
7497
7517 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
7518
7539 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
7541
7546
7548 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
7549
7551 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
7552
7554 virtual double DefaultVelocityGet() PURE_VIRTUAL;
7555
7557 virtual void DefaultVelocitySet(double velocity) PURE_VIRTUAL;
7558
7560 virtual double DefaultAccelerationGet() PURE_VIRTUAL;
7561
7563 virtual void DefaultAccelerationSet(double acceleration) PURE_VIRTUAL;
7564
7566 virtual double DefaultDecelerationGet() PURE_VIRTUAL;
7567
7569 virtual void DefaultDecelerationSet(double deceleration) PURE_VIRTUAL;
7570
7572 virtual double DefaultJerkPercentGet() PURE_VIRTUAL;
7573
7575 virtual void DefaultJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
7576
7578 virtual double DefaultPosition1Get() PURE_VIRTUAL;
7579
7581 virtual void DefaultPosition1Set(double position1) PURE_VIRTUAL;
7582
7584 virtual double DefaultPosition2Get() PURE_VIRTUAL;
7585
7587 virtual void DefaultPosition2Set(double position2) PURE_VIRTUAL;
7588
7590 virtual double DefaultRelativeIncrementGet() PURE_VIRTUAL;
7591
7593 virtual void DefaultRelativeIncrementSet(double relativeIncrement) PURE_VIRTUAL;
7595
7599 // /@{
7600
7623 virtual RSIAction AmpFaultActionGet() PURE_VIRTUAL;
7624
7647 virtual void AmpFaultActionSet(RSIAction action) PURE_VIRTUAL;
7648
7670 virtual bool AmpFaultTriggerStateGet() PURE_VIRTUAL;
7671
7693 virtual void AmpFaultTriggerStateSet(bool state) PURE_VIRTUAL;
7694
7715 virtual double AmpFaultDurationGet() PURE_VIRTUAL;
7716
7737 virtual void AmpFaultDurationSet(double seconds) PURE_VIRTUAL;
7738
7763 virtual RSIAction HomeActionGet() PURE_VIRTUAL;
7764
7788 virtual void HomeActionSet(RSIAction action) PURE_VIRTUAL;
7789
7815 virtual bool HomeTriggerStateGet() PURE_VIRTUAL;
7816
7837 virtual void HomeTriggerStateSet(bool state) PURE_VIRTUAL;
7838
7860 virtual double HomeDurationGet() PURE_VIRTUAL;
7861
7884 virtual void HomeDurationSet(double seconds) PURE_VIRTUAL;
7885
7914 virtual RSIAction ErrorLimitActionGet() PURE_VIRTUAL;
7915
7942 virtual void ErrorLimitActionSet(RSIAction action) PURE_VIRTUAL;
7943
7966 virtual double ErrorLimitTriggerValueGet() PURE_VIRTUAL;
7967
7989 virtual void ErrorLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
7990
8012 virtual double ErrorLimitDurationGet() PURE_VIRTUAL;
8013
8036 virtual void ErrorLimitDurationSet(double seconds) PURE_VIRTUAL;
8037
8062 virtual RSIAction HardwareNegLimitActionGet() PURE_VIRTUAL;
8063
8088 virtual void HardwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8089
8113 virtual bool HardwareNegLimitTriggerStateGet() PURE_VIRTUAL;
8114
8138 virtual void HardwareNegLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8139
8162 virtual double HardwareNegLimitDurationGet() PURE_VIRTUAL;
8163
8187 virtual void HardwareNegLimitDurationSet(double seconds) PURE_VIRTUAL;
8188
8213 virtual RSIAction HardwarePosLimitActionGet() PURE_VIRTUAL;
8214
8239 virtual void HardwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8240
8261 virtual bool HardwarePosLimitTriggerStateGet() PURE_VIRTUAL;
8262
8286 virtual void HardwarePosLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8287
8310 virtual double HardwarePosLimitDurationGet() PURE_VIRTUAL;
8311
8334 virtual void HardwarePosLimitDurationSet(double seconds) PURE_VIRTUAL;
8335
8361 virtual RSIAction SoftwareNegLimitActionGet() PURE_VIRTUAL;
8362
8386 virtual void SoftwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8387
8410 virtual double SoftwareNegLimitTriggerValueGet() PURE_VIRTUAL;
8411
8434 virtual void SoftwareNegLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8435
8459 virtual RSIAction SoftwarePosLimitActionGet() PURE_VIRTUAL;
8460
8484 virtual void SoftwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8485
8508 virtual double SoftwarePosLimitTriggerValueGet() PURE_VIRTUAL;
8509
8532 virtual void SoftwarePosLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8533
8559 virtual RSIAction EncoderFaultActionGet() PURE_VIRTUAL;
8560
8585 virtual void EncoderFaultActionSet(RSIAction action) PURE_VIRTUAL;
8586
8610 virtual RSIMotorFeedbackFault EncoderFaultTriggerGet() PURE_VIRTUAL;
8611
8633 virtual void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder) PURE_VIRTUAL;
8634
8656 virtual double EncoderFaultDurationGet() PURE_VIRTUAL;
8657
8679 virtual void EncoderFaultDurationSet(double seconds) PURE_VIRTUAL;
8680
8682 virtual RSIAction NodeFailureActionGet() PURE_VIRTUAL;
8683
8685 virtual void NodeFailureActionSet(RSIAction action) PURE_VIRTUAL;
8686
8702 virtual uint64_t AddressGet( RSIAxisAddressType addressType) PURE_VIRTUAL;
8703
8717 virtual RSIDataType AddressDataTypeGet(RSIAxisAddressType type) PURE_VIRTUAL;
8718
8719 // common limit methods
8720
8722 virtual RSIAction LimitActionGet(RSIEventType limit) PURE_VIRTUAL;
8723
8725 virtual void LimitActionSet(RSIEventType limit, RSIAction action) PURE_VIRTUAL;
8726
8728 virtual bool LimitTriggerStateGet(RSIEventType limit) PURE_VIRTUAL;
8729
8731 virtual void LimitTriggerStateSet(RSIEventType limit, bool triggerState) PURE_VIRTUAL;
8732
8734 virtual double LimitTriggerValueGet(RSIEventType limit) PURE_VIRTUAL;
8735
8737 virtual void LimitTriggerValueSet(RSIEventType limit, double triggerValue) PURE_VIRTUAL;
8738
8740 virtual double LimitDurationGet(RSIEventType limit) PURE_VIRTUAL;
8741
8743 virtual void LimitDurationSet(RSIEventType limit, double seconds) PURE_VIRTUAL;
8745
8750
8764 virtual double PositionToleranceFineGet() PURE_VIRTUAL;
8765
8779 virtual void PositionToleranceFineSet(double tolerance) PURE_VIRTUAL;
8780
8794 virtual double PositionToleranceCoarseGet() PURE_VIRTUAL;
8795
8812 virtual void PositionToleranceCoarseSet(double tolerance) PURE_VIRTUAL;
8813
8827 virtual double VelocityToleranceGet() PURE_VIRTUAL;
8828
8842 virtual void VelocityToleranceSet(double tolerance) PURE_VIRTUAL;
8843
8858 virtual double SettlingTimeGet() PURE_VIRTUAL;
8859
8874 virtual void SettlingTimeSet(double time) PURE_VIRTUAL;
8875
8892 virtual bool SettleOnStopGet() PURE_VIRTUAL;
8893
8910
8911 virtual void SettleOnStopSet(bool state) PURE_VIRTUAL;
8912
8929 virtual bool SettleOnEStopGet() PURE_VIRTUAL;
8930
8946 virtual void SettleOnEStopSet(bool state) PURE_VIRTUAL;
8947
8964 virtual bool SettleOnEStopCmdEqActGet() PURE_VIRTUAL;
8965
8981 virtual void SettleOnEStopCmdEqActSet(bool state) PURE_VIRTUAL;
8983
8988
9005 virtual RSIMotorType MotorTypeGet() PURE_VIRTUAL;
9006
9022 virtual void MotorTypeSet(RSIMotorType type) PURE_VIRTUAL;
9023
9040 virtual RSIMotorDisableAction AmpDisableActionGet() PURE_VIRTUAL;
9041
9057 virtual void AmpDisableActionSet(RSIMotorDisableAction action) PURE_VIRTUAL;
9058
9076
9077 virtual RSIMotorBrakeMode BrakeModeGet() PURE_VIRTUAL;
9078
9094 virtual void BrakeModeSet(RSIMotorBrakeMode mode) PURE_VIRTUAL;
9095
9111 virtual double BrakeApplyDelayGet() PURE_VIRTUAL;
9112
9113
9130 virtual void BrakeApplyDelaySet(double seconds) PURE_VIRTUAL;
9131
9147 virtual double BrakeReleaseDelayGet() PURE_VIRTUAL;
9148
9166 virtual void BrakeReleaseDelaySet(double seconds) PURE_VIRTUAL;
9167
9169 virtual void ClosedLoopStepperSet(bool enable) PURE_VIRTUAL;
9170
9172 virtual int32_t ClosedLoopStepperVersionGet() PURE_VIRTUAL;
9173
9175 virtual uint64_t EncoderPointerGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9176
9178 virtual void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address) PURE_VIRTUAL;
9179
9181 virtual uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9182
9183
9185 virtual void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9186
9188 virtual uint64_t FeedbackPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9189
9207 virtual void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9208
9210 virtual int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9211
9213 virtual int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9214
9236 virtual void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9237
9239 virtual const char* const EncoderRatioPrimaryGet() PURE_VIRTUAL;
9240
9242 virtual void EncoderRatioPrimarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9243
9245 virtual const char* const EncoderRatioSecondaryGet() PURE_VIRTUAL;
9246
9248 virtual void EncoderRatioSecondarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9249
9251 virtual int32_t EncoderCountGet() PURE_VIRTUAL;
9252
9255 virtual void EncoderCountSet(int32_t count) PURE_VIRTUAL;
9256
9258 virtual RSIAxisGantryType GantryTypeGet() PURE_VIRTUAL;
9259
9261 virtual void GantryTypeSet(RSIAxisGantryType type) PURE_VIRTUAL;
9262
9276 virtual RSIOperationMode OperationModeGet() PURE_VIRTUAL;
9277
9291 virtual void OperationModeSet(RSIOperationMode mode) PURE_VIRTUAL;
9292
9312 virtual int32_t MotorFaultMaskGet() PURE_VIRTUAL;
9313
9339 virtual void MotorFaultMaskSet(int32_t faultMask) PURE_VIRTUAL;
9341
9346
9368 virtual void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9373 virtual void GearingEnable(Axis* masterAxis, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9374
9393 virtual void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9394
9411 virtual void GearingDisable() PURE_VIRTUAL;
9412
9414 virtual int32_t GearingNumeratorGet() PURE_VIRTUAL;
9415
9417 virtual int32_t GearingDenominatorGet() PURE_VIRTUAL;
9418
9420 virtual bool GearingEnableGet() PURE_VIRTUAL;
9421
9439 virtual int32_t GearingMasterAxisNumberGet() PURE_VIRTUAL;
9440
9453 virtual RSIAxisMasterType GearingSourceGet() PURE_VIRTUAL;
9455
9460
9477 virtual double MotionCamMasterStartGet(Axis* master) PURE_VIRTUAL;
9478
9493 virtual void MotionCamMasterStartSet(Axis* master, double startPosition) PURE_VIRTUAL;
9494
9511 virtual int32_t MotionCamRepeatFromGet() PURE_VIRTUAL;
9512
9530 virtual void MotionCamRepeatFromSet(int32_t repeatFrom) PURE_VIRTUAL;
9531
9549 virtual void MotionCamRepeatStop() PURE_VIRTUAL;
9550
9573 virtual void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
9574
9604 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;
9605
9622
9623 virtual int32_t DriveIndexGet() PURE_VIRTUAL;
9625
9630
9643 virtual double BacklashWidthGet() PURE_VIRTUAL;
9644
9657 virtual void BacklashWidthSet(double width) PURE_VIRTUAL;
9658
9671 virtual double BacklashRateGet() PURE_VIRTUAL;
9672
9685 virtual void BacklashRateSet(double rate) PURE_VIRTUAL;
9686
9687
9698 virtual double BacklashValueGet() PURE_VIRTUAL;
9700
9705
9733 virtual RSIFilterAlgorithm FilterAlgorithmGet() PURE_VIRTUAL;
9734
9759 virtual void FilterAlgorithmSet(RSIFilterAlgorithm algorithm) PURE_VIRTUAL;
9760
9786 virtual double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9787
9810 virtual void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9811
9814 virtual double FilterCoeffGet(RSIFilterGainPIVCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9819 virtual void FilterCoeffSet(RSIFilterGainPIVCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9820
9855 virtual int32_t FilterGainTableGet() PURE_VIRTUAL;
9856
9885 virtual void FilterGainTableSet(int32_t gainTable) PURE_VIRTUAL;
9886
9903 virtual int32_t FilterGainTableSizeGet() PURE_VIRTUAL;
9904
9906 virtual double FilterOutputGet(void) PURE_VIRTUAL;
9907
9920 virtual double FilterLowPassGet() PURE_VIRTUAL;
9921
9937 virtual void FilterLowPassSet(double frequency) PURE_VIRTUAL;
9938
9957 virtual void FilterDualLoopSet(Axis* velocityAxis, RSIMotorFeedback velocityEncoder, bool enable) PURE_VIRTUAL;
9958
9959
9961 virtual bool FilterGainSchedulingGet() PURE_VIRTUAL;
9962
9963
9965 virtual void FilterGainSchedulingSet(bool enable) PURE_VIRTUAL;
9966
9968 virtual bool IsTuneable() PURE_VIRTUAL;
9969
9986 virtual void PostFilterLowPassSet(int32_t sectionNumber, double frequency) PURE_VIRTUAL;
9987
10003 virtual void PostFilterUnityGainSet(int32_t sectionNumber) PURE_VIRTUAL;
10004
10023 virtual void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne) PURE_VIRTUAL;
10024
10040 virtual void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq) PURE_VIRTUAL;
10041
10059 virtual void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth) PURE_VIRTUAL;
10060
10079 virtual void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain) PURE_VIRTUAL;
10080
10099 virtual void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq) PURE_VIRTUAL;
10100
10116 virtual void PostFilterClear(int32_t sectionNumber) PURE_VIRTUAL;
10117
10138 virtual void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo) PURE_VIRTUAL;
10139
10141 virtual const char* const PostFilterInfoGet() PURE_VIRTUAL;
10142 //virtual RSIFilterPostFilterSection PostFilterSection;
10144
10149
10169 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10170
10191 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10193
10198
10200 virtual void PostTrajectoryGearingEnableSet(bool enable) PURE_VIRTUAL;
10201
10203 virtual bool PostTrajectoryGearingEnableGet() PURE_VIRTUAL;
10204
10206 virtual void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber) PURE_VIRTUAL;
10207
10209 virtual int32_t PostTrajectoryGearingMasterAxisGet() PURE_VIRTUAL;
10210
10212 virtual void PostTrajectoryGearingMultiplierSet(double multiplier) PURE_VIRTUAL;
10213
10215 virtual double PostTrajectoryGearingMultiplierGet() PURE_VIRTUAL;
10216
10234 virtual uint32_t NetworkIndexGet(RSINetworkIndexType indexType) PURE_VIRTUAL;
10235
10254 virtual void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex) PURE_VIRTUAL;
10256
10258
10266 virtual double BacklashHysteresisLimitGet() PURE_VIRTUAL;
10267
10274 virtual void BacklashHysteresisLimitSet(double hysteresisLimit) PURE_VIRTUAL;
10275
10299 virtual bool StepperMotorLoopbackGet() PURE_VIRTUAL;
10300
10324 virtual void StepperMotorLoopbackSet(bool loopback) PURE_VIRTUAL;
10325
10334 virtual RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse) PURE_VIRTUAL;
10335
10345 virtual void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type) PURE_VIRTUAL;
10346
10353 virtual uint64_t GearingMasterAddressGet() PURE_VIRTUAL;
10354
10356};
10357
10361class RSI_API MultiAxis : public virtual RapidCodeMotion {
10362public:
10363
10367
10381 virtual void AxisAdd(Axis *axis) PURE_VIRTUAL;
10382
10385 virtual void AxesAdd(Axis* *axes, int32_t axisCount) PURE_VIRTUAL;
10386
10399 virtual void AxisRemoveAll() PURE_VIRTUAL;
10400
10404
10420 virtual Axis* AxisGet(int32_t index) PURE_VIRTUAL;
10421
10441 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10442
10463 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10464
10468
10483 virtual double VectorVelocityGet() PURE_VIRTUAL;
10484
10500 virtual void VectorVelocitySet(double velocity) PURE_VIRTUAL;
10501
10516 virtual double VectorAccelerationGet() PURE_VIRTUAL;
10517
10540 virtual void VectorAccelerationSet(double acceleration) PURE_VIRTUAL;
10541
10556 virtual double VectorDecelerationGet() PURE_VIRTUAL;
10557
10580 virtual void VectorDecelerationSet(double deceleration) PURE_VIRTUAL;
10581
10596 virtual double VectorJerkPercentGet() PURE_VIRTUAL;
10597
10620 virtual void VectorJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
10621
10645 virtual void MoveVector(const double* const position) PURE_VIRTUAL;
10646
10649 virtual void MoveVectorRelative(const double* const relativePosition) PURE_VIRTUAL;
10650
10654
10674
10675 virtual double PathTimeSliceGet() PURE_VIRTUAL;
10676
10697
10698 virtual void PathTimeSliceSet(double seconds) PURE_VIRTUAL;
10699
10724 virtual void PathRatioSet(const double* const ratio) PURE_VIRTUAL;
10725
10728 virtual double PathRatioGet(int32_t index) PURE_VIRTUAL;
10729
10746 virtual void PathBlendSet(bool blend) PURE_VIRTUAL;
10747
10756
10757 virtual void PathPlanTypeSet(RSIPathPlanType type) PURE_VIRTUAL;
10758
10767
10768 virtual RSIPathPlanType PathPlanTypeGet() PURE_VIRTUAL;
10769
10788 virtual void PathListStart(const double* const startPosition) PURE_VIRTUAL;
10789
10810 virtual void PathLineAdd(const double* const position) PURE_VIRTUAL;
10811
10831 virtual void PathArcAdd(const double* const center, double angle) PURE_VIRTUAL;
10832
10851 virtual void PathListEnd() PURE_VIRTUAL;
10852
10869 virtual void PathMotionStart() PURE_VIRTUAL;
10870
10874
10892 virtual void MoveTrapezoidal(const double* const position, const double* const vel, const double* const accel, const double* const decel) PURE_VIRTUAL;
10893
10896 virtual void MoveTrapezoidal(const double* const position) PURE_VIRTUAL;
10897
10924 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;
10925
10928 virtual void MoveSCurve(const double* const position) PURE_VIRTUAL;
10929
10944 virtual void MoveVelocity(const double* const velocity, const double* const accel) PURE_VIRTUAL;
10945
10949 virtual void MoveVelocity(const double* const velocity) PURE_VIRTUAL;
10950
10969 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;
10970
10973 virtual void MoveRelative(const double* const relativePosition) PURE_VIRTUAL;
10974
10990 virtual void MoveVelocitySCurve(const double* const velocity, const double* const accel, const double* const jerkPct) PURE_VIRTUAL;
10991
11008 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
11009
11027 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
11028
11030 virtual int32_t AxisMapCountGet() PURE_VIRTUAL;
11031
11045 virtual uint64_t AddressGet(RSIMultiAxisAddressType addressType) PURE_VIRTUAL;
11046
11060 virtual RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type) PURE_VIRTUAL;
11061
11071 virtual bool AmpEnableGet() PURE_VIRTUAL;
11072
11073
11074};
11075
11081class RSI_API IOPoint : public virtual RapidCodeObject {
11082public:
11087
11104 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorDedicatedIn motorDedicatedInNumber);
11105
11122 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11123
11139 static IOPoint* CreateDigitalInput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11140 // use NetworkNode*
11141 static IOPoint* CreateDigitalInput(IO* io, int32_t bitNumber);
11142
11153 static IOPoint* CreateDigitalInput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11154
11168 static IOPoint* CreateDigitalInput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11169
11187 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorDedicatedOut motorDedicatedOutNumber);
11188
11205 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11206
11222 static IOPoint* CreateDigitalOutput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11223 // use NetworkNode*
11224 static IOPoint* CreateDigitalOutput(IO* io, int32_t bitNumber);
11225
11226
11239 static IOPoint* CreateDigitalOutput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11240
11254 static IOPoint* CreateDigitalOutput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11255
11270 static IOPoint* CreateAnalogInput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11271 // use RapidCodeNetworkNode*
11272 static IOPoint* CreateAnalogInput(IO* io, int32_t analogChannel);
11273
11288 static IOPoint* CreateAnalogOutput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11289 // use RapidCodeNetworkNode*
11290 static IOPoint* CreateAnalogOutput(IO* io, int32_t analogChannel);
11291
11293
11297
11300 virtual uint64_t AddressGet() PURE_VIRTUAL;
11301
11304 virtual int32_t MaskGet() PURE_VIRTUAL;
11305
11308 virtual bool IsDigital() PURE_VIRTUAL;
11309
11310
11313 virtual bool IsOutput() PURE_VIRTUAL;
11314
11318
11322 virtual bool Get() PURE_VIRTUAL;
11323
11330 virtual void Set(bool state) PURE_VIRTUAL;
11331
11335
11339 virtual double ValueGet() PURE_VIRTUAL;
11340
11344 virtual void ValueSet(double valueDouble) PURE_VIRTUAL;
11345};
11346
11350class RSI_API RTOS {
11351
11352public:
11353#if defined(_WIN32)
11358
11362
11367 static INtimeStatus INtimeStatusGet(const char* const nodeName);
11368
11372
11377 static INtimeStatus INtimeStart(const char* const nodeName);
11378
11382
11387 static INtimeStatus INtimeStop(const char* const nodeName);
11388
11392
11397 static INtimeStatus INtimeRestart(const char* const nodeName);
11398
11401 static const char* const INtimeCatalogRMPGet();
11402
11405 static const char* const INtimeCatalogRMPNetworkGet();
11406
11409 static uint32_t INtimeNodeCountGet();
11410
11414 static const char* const INtimeNodeNameGet(uint32_t nodeNumber);
11415
11419 static bool INtimeNodeIsLocal(uint32_t nodeNumber);
11421#endif // _WIN32
11422};
11423
11425class RSI_API Trace
11426{
11427public:
11432
11445 static void MaskSet(RSITrace mask);
11446
11462 static void MaskOnSet(RSITrace maskOn);
11463
11464
11484 static bool MaskOnGet(RSITrace maskOn);
11485
11501 static void MaskOffSet(RSITrace maskOff);
11502
11515 static void MaskClear();
11516
11531 static int32_t FileSet(const char* const fileName);
11532
11545 static void FileClose();
11546
11561 static void InjectMessage(RSITrace traceLevel, const char* const message);
11562
11564};
11565
11567
11569
11573class RSI_API IO : public virtual RapidCodeObject {
11574public:
11575
11576 friend class MotionController;
11577
11582
11584 RapidCodeNetworkNode* NetworkNode;
11587
11589
11594
11595
11628 virtual bool IOExists() PURE_VIRTUAL;
11629
11646 virtual int32_t NumberGet() PURE_VIRTUAL;
11648
11653
11654
11655
11685 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
11686
11719 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
11720
11751 virtual void DigitalOutSet(int32_t digitalOutNumber, bool outValue) PURE_VIRTUAL;
11752
11775 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
11776
11808 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
11809
11841 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
11843
11853 virtual const char* const UserLabelGet() PURE_VIRTUAL;
11854
11861 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
11862};
11863
11864#if defined(__cplusplus)
11865}
11866#endif
11867
11868template<typename ContainerClass>
11869class RSI_API RapidVectorIterator
11870{
11871public:
11873 typedef typename ContainerClass::ValueType ValueType;
11874
11876 typedef typename ContainerClass::PointerType PointerType;
11877
11880 ValueType& operator*();
11881
11884 const ValueType& operator*() const;
11885
11888 RapidVectorIterator& operator++();
11889
11892 RapidVectorIterator operator++(int);
11893
11896 bool operator==(const RapidVectorIterator&) const;
11897
11900 bool operator!=(const RapidVectorIterator&) const;
11901
11903 RapidVectorIterator(PointerType pointerArgument, PointerType startArgument, const size_t containerSize);
11904
11906 RapidVectorIterator(const RapidVectorIterator&) = default;
11907
11909 RapidVectorIterator& operator=(const RapidVectorIterator&) = default;
11910
11912 RapidVectorIterator(RapidVectorIterator&&) noexcept = default;
11913
11915 RapidVectorIterator& operator=(RapidVectorIterator&&) noexcept = default;
11916private:
11917 PointerType pointer;
11918 PointerType start, end;
11919 void VerifyPointer() const;
11920};
11921
11923template<typename Type>
11925
11928
11937template<typename Type>
11938class RSI_API RapidVector
11939{
11940private:
11941 // The pointer to the implementation.
11943public:
11947 Type& operator[](const size_t index);
11948
11952 const Type& operator[](const size_t index) const;
11953
11957 Type& At(const size_t index);
11958
11962 const Type& At(const size_t index) const;
11963
11966 void PushBack(const Type& element);
11967
11970 const size_t Size() const;
11971
11973 void Clear();
11974
11976 void PopBack();
11977
11980 Type& Front();
11981
11984 const Type& Front() const;
11985
11988 Type& Back();
11989
11992 const Type& Back() const;
11993
11996
11998 RapidVector(const size_t size);
11999
12002
12005
12008
12011
12013 RapidVector(RapidVector&& other) noexcept;
12014
12017
12018 typedef Type* PointerType;
12019 typedef Type ValueType;
12020
12022 typedef RapidVectorIterator<RapidVector> Iterator;
12023
12026 Iterator begin() noexcept;
12027
12030 Iterator begin() const noexcept;
12031
12035 Iterator end() const noexcept;
12036};
12037
12039
12040} // namespace RapidCode
12041
12042} // namespace RSI
12043
12044#endif // _RSI_H
void MoveSCurve(double position)
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:5696
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 releativePosition)
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)
Command a point-to-point S-Curve motion.
Represents a single axis of motion control. This class provides an interface for commanding motion,...
Definition rsi.h:5666
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:11573
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition rsi.h:11584
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:11586
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:11081
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:3796
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:10361
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:11350
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:4191
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:4201
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.
Forward declaration of the implementation class for RapidVector.
Definition rsi.h:11939
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:12022
~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.
Forward declaration of the implementation class for RapidVector.
Definition rsi.h:11924
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:11426
RSIFilterAlgorithm
Filter algorithms.
Definition rsienums.h:1119
RSINetworkEniResult
NetworkEniGenerate return values.
Definition rsienums.h:1384
RSIPDOType
Compensator output types.
Definition rsienums.h:1358
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1364
RSICompensatorOutputType
Compensator output types.
Definition rsienums.h:1352
RSINetworkStartMode
Network start modes.
Definition rsienums.h:587
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
Definition rsienums.h:1106
RSITrace
Trace masks.
Definition rsienums.h:539
RSIMotorStepperPulse
Pulse A or B.
Definition rsienums.h:1209
RSIAxisGantryType
How to combine Axis Feedback Positions.
Definition rsienums.h:1099
RSINetworkState
State of network.
Definition rsienums.h:567
RSIControllerAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:404
RSIMotorDisableAction
Action for when a motor is disabled.
Definition rsienums.h:1279
RSIEventType
Event Types or Status Bits.
Definition rsienums.h:928
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:1000
RSIDataType
Data types for User Limits and other triggers.
Definition rsienums.h:654
RSIUserLimitLogic
Logic options for User Limits.
Definition rsienums.h:641
RSIMotorIoTypeMask
Possible mask bits for Motor I/O types.
Definition rsienums.h:1225
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1075
RSIAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:433
RSIProcessorType
Controller's processor type.
Definition rsienums.h:294
RSIMotorStepperPulseType
Stepper pulse type.
Definition rsienums.h:1215
RSIMotorType
Motor Type.
Definition rsienums.h:1271
RSINetworkStartError
Network start errors.
Definition rsienums.h:593
RSIMotorGeneralIo
Motor I/O bit numbers.
Definition rsienums.h:879
RSIMotionAttrMask
Attribute masks for motion. You cannot mix RSIMotionAttrMaskDELAY and RSIMotionAttrMaskAPPEND.
Definition rsienums.h:1020
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:496
RSIFilterGainPIDCoeff
PID gain coefficients.
Definition rsienums.h:1128
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:628
RSINetworkOutputAddressType
Network output address types.
Definition rsienums.h:1345
INtimeStatus
INtime status values.
Definition rsienums.h:1317
RSIMotionHoldType
Types for MotionHold attribute.
Definition rsienums.h:1055
RSIControllerType
Controller type.
Definition rsienums.h:283
RSIMotorFaultMask
Mask values for several motor faults.
Definition rsienums.h:1259
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:396
RSIMotorBrakeMode
Brake modes.
Definition rsienums.h:1285
RSIErrorMessage
All possible RSI Error Messages.
Definition rsienums.h:17
RSINetworkType
Type of Network topology.
Definition rsienums.h:621
RSIMotorIoType
Possible configurations for Motor I/O.
Definition rsienums.h:1188
RSIAxisPositionInput
Feedback Positions for each Axis.
Definition rsienums.h:1093
RSINodeType
Valid Node types.
Definition rsienums.h:671
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:976
RSIMotorDedicatedIn
Dedicated Input bits per motor.
Definition rsienums.h:851
RSIMotorFeedback
Encoders per motor.
Definition rsienums.h:1113
RSIMotorDedicatedOut
Dedicated Output bits per motor.
Definition rsienums.h:873
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1291
RSIPathPlanType
Path motion planning types.
Definition rsienums.h:1014
RSINetworkTechnologyType
Network technology type.
Definition rsienums.h:1312
RSINetworkIndexType
Network index types for Axis.
Definition rsienums.h:1325
RSINetworkStartupMethod
Network startup methods.
Definition rsienums.h:579
RSIFilterGainPIVCoeff
PIV gain coefficients.
Definition rsienums.h:1149
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1178
int32_t ControllerIndex
The index of the controller to create.
Definition rsi.h:951
int32_t CpuAffinity
[Linux] Indicate the CPU core on which the RMP and RMPNetwork processes run.
Definition rsi.h:1009
int32_t RmpThreadPriorityMax
[Linux] The maximum thread priority. All threads of the RMP and RMPNetwork will be based off of this....
Definition rsi.h:1021
CreationParameters()
Instantiate with default values and all memory zeroed out.
Definition rsi.h:927
CreationParameters for MotionController::Create.
Definition rsi.h:861
RSIDataType ProcessDataType
Data type for processing.
Definition rsi.h:3774
MathBlock configuration structure.
Definition rsi.h:3767
RSIDataType OutputDataType
Data type for Output. (optional)
Definition rsi.h:3772
uint64_t OutputAddress
Host memory address for Output. The MathBlock will write its result to this address....
Definition rsi.h:3773
uint64_t InputAddress0
Host memory address for Input0. Represents the left-hand side operand in math operations.
Definition rsi.h:3768
RSIDataType InputDataType0
Data type for Input0. This is the data type of the left-hand side operand in math operations.
Definition rsi.h:3769
uint64_t InputAddress1
Host memory address for Input1. Represents the right-hand side operand in math operations.
Definition rsi.h:3770
RSIDataType InputDataType1
Data type for Input1. This is the data type of the right-hand side operand in math operations.
Definition rsi.h:3771
RSIMathBlockOperation Operation
Math operation to be performed. (+, -, *, /, etc) use RSIMathBlockOperationNONE to disable a MathBloc...
Definition rsi.h:3775
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