APIs, concepts, guides, and more
rsi.h
1#ifndef _RSI_H
2#define _RSI_H
3
4#include <stdlib.h>
5#include <vector>
6#include <stdio.h>
7#include <string.h>
8#include <math.h>
9#include <exception>
10#include <cstdint>
11#include <cstring>
12
13#include "rsienums.h"
14
15#if defined(_WIN32)
16# if !defined(__INTIME__)
17# define HAS_CARTESIAN_ROBOT 1
18# endif
19# if !defined(RSI_API)
20# if defined(RSIDLL)
21# define RSI_API __declspec(dllexport)
22# else
23# define RSI_API __declspec(dllimport)
24# endif
25# endif
26#elif defined(__linux__)
27# define HAS_CARTESIAN_ROBOT 1
28# if !defined(RSI_API)
29# define RSI_API __attribute__ ((visibility ("default")))
30# endif
31#endif
32
33// Macro for pure virtual definitions
34#define PURE_VIRTUAL = 0
35
37namespace RSI
38{
39
41namespace RapidCode
42{
43
44#if defined(__cplusplus)
45extern "C"
46{
47#endif
48
49
50class MotionController;
51class Axis;
52class MultiAxis;
53class IO;
54class RapidCodeNetworkNode;
55class IOPoint;
56class RTOS;
57
59class StaticInstanceMediator
60{
61private:
62 bool isValid;
63public:
64
65 bool IsValid() { return isValid; }
66
67 void OnDelete() { isValid = false; }
68
69 void OnCreate() { isValid = true; }
70};
71
74
106class RsiError : public std::exception
107{
108public:
112 int32_t lineNumber;
114 int32_t objectIndex;
118 static inline constexpr uint32_t RSI_ERROR_TEXT_SIZE = 512U;
119 char text[RSI_ERROR_TEXT_SIZE];
126
127 RsiError()
128 {
129 text[0] = '\0';
130 functionName[0] = '\0';
131 shortText[0] = '\0';
132 fileName[0] = '\0';
134 lineNumber = -1;
135 isWarning = false;
136 objectIndex = -1;
137 }
146 RsiError(const RsiError& copyFrom)
147 {
148#if defined(_WIN32)
149 strncpy_s(text, RSI_ERROR_TEXT_SIZE, copyFrom.text, RSI_ERROR_TEXT_SIZE);
153#elif defined(__linux__)
154 strncpy(text, copyFrom.text, RSI_ERROR_TEXT_SIZE);
156 strncpy(shortText, copyFrom.shortText, RSI_ERROR_TEXT_SIZE);
157 strncpy(fileName, copyFrom.fileName, RSI_ERROR_TEXT_SIZE);
158#endif
159 number = copyFrom.number;
160 lineNumber = copyFrom.lineNumber;
161 isWarning = copyFrom.isWarning;
162 objectIndex = copyFrom.objectIndex;
163 }
164 ~RsiError()
165 {
166 }
167
169 virtual const char* what() const noexcept { return text; }
170};
171
180class RSI_API RapidCodeObject {
181public:
186
187
188
201 virtual const char* const VersionGet() PURE_VIRTUAL;
202
204 virtual int32_t MpiVersionMajor() PURE_VIRTUAL;
206 virtual int32_t MpiVersionMinor() PURE_VIRTUAL;
208 virtual int32_t MpiVersionRelease() PURE_VIRTUAL;
210 virtual int32_t RSIVersionMajor() PURE_VIRTUAL;
212 virtual int32_t RSIVersionMinor() PURE_VIRTUAL;
214 virtual int32_t RSIVersionMicro() PURE_VIRTUAL;
216 virtual int32_t RSIVersionPatch() PURE_VIRTUAL;
217
220 virtual int32_t NumberGet() PURE_VIRTUAL;
222
227
228
229
230
256 virtual int32_t ErrorLogCountGet() PURE_VIRTUAL;
257
271 virtual const RsiError* const ErrorLogGet() PURE_VIRTUAL;
272
285 virtual void ErrorLogClear() PURE_VIRTUAL;
286
305 virtual void ThrowExceptions(bool state) PURE_VIRTUAL;
306
308 virtual const char* const RsiErrorMessageGet(RSIErrorMessage msg) PURE_VIRTUAL;
309
311 virtual const char* const ErrorMessageGet(RSIErrorMessage msg) PURE_VIRTUAL;
312
314 virtual bool WarningMsgCheck(RSIErrorMessage msg) PURE_VIRTUAL;
316
321
322
337 virtual void Trace(bool state) PURE_VIRTUAL;
338
353 virtual void TraceMaskOnSet(RSITrace maskOn) PURE_VIRTUAL;
354
355
376 virtual bool TraceMaskOnGet(RSITrace maskOn) PURE_VIRTUAL;
377
393 virtual void TraceMaskOffSet(RSITrace maskOff) PURE_VIRTUAL;
394
408 virtual void TraceMaskClear() PURE_VIRTUAL;
409
424 virtual void TraceFileSet(const char* const fileName) PURE_VIRTUAL;
425
438 virtual void TraceFileClose() PURE_VIRTUAL;
439
454 virtual void TraceInjectMessage(RSITrace traceLevel, const char* const message) PURE_VIRTUAL;
455
456
457
458
460};
461
463typedef union
464{
465 bool Bool;
466 int8_t Int8;
467 uint8_t UInt8;
468 int16_t Int16;
469 uint16_t UInt16;
470 int32_t Int32;
471 uint32_t UInt32;
472 float Float;
473 double Double;
474 int64_t Int64;
475 uint64_t UInt64;
477
479
493class RSI_API RapidCodeOS {
494public:
495
500
513 virtual void Sleep(int32_t milliseconds) PURE_VIRTUAL;
514
533 virtual int32_t KeyGet(int32_t milliseconds) PURE_VIRTUAL;
534
544 virtual int32_t TimerCountGet() PURE_VIRTUAL;
545
554 virtual int32_t TimerFrequencyGet() PURE_VIRTUAL;
555
556
568 virtual int32_t PerformanceTimerCountGet() PURE_VIRTUAL;
569
581 virtual int32_t PerformanceTimerFrequencyGet() PURE_VIRTUAL;
582
584};
585
587
590class RSI_API RapidCodeInterrupt : public virtual RapidCodeObject {
591public:
595
597 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
598
599
621 virtual RSIEventType InterruptWait(int32_t milliseconds) PURE_VIRTUAL;
622
642 virtual const char* const InterruptNameGet() PURE_VIRTUAL;
643
664 virtual int32_t InterruptSampleTimeGet() PURE_VIRTUAL;
665
666
687 virtual int32_t InterruptSourceNumberGet() PURE_VIRTUAL;
688
690 virtual uint16_t InterruptMotionIdGet() PURE_VIRTUAL;
691
693 virtual void InterruptWake() PURE_VIRTUAL;
694
696 virtual void InterruptMaskClear() PURE_VIRTUAL;
697
699 virtual void InterruptMaskAllSet() PURE_VIRTUAL;
700
702 virtual void InterruptMaskOnSet(RSIEventType eventType) PURE_VIRTUAL;
703
705 virtual void InterruptMaskOffSet(RSIEventType eventType) PURE_VIRTUAL;
706
708 virtual bool InterruptMaskOnGet(RSIEventType eventType) PURE_VIRTUAL;
709
710
723 virtual uint64_t InterruptUserDataGet(uint32_t userDataIndex) PURE_VIRTUAL;
724
725
737 virtual double InterruptUserDataDoubleGet(uint32_t userDataIndex) PURE_VIRTUAL;
738
744 virtual FirmwareValue InterruptUserDataValueGet(uint32_t userDataIndex) PURE_VIRTUAL;
745
781
783 virtual void InterruptUserDataAddressSet(uint32_t userDataIndex, uint64_t hostAddress) PURE_VIRTUAL;
784
790 virtual uint64_t InterruptUserDataAddressGet(uint32_t userDataIndex) PURE_VIRTUAL;
791};
792
796class RSI_API MotionController : public virtual RapidCodeInterrupt {
797protected:
799 StaticInstanceMediator* _mediator;
800
801public:
802
803 // Static functions or attributes should be grouped together.
808
810 static inline constexpr uint32_t NetworkStartTimeoutMillisecondsDefault = 30000;
811
813 static inline constexpr uint32_t AxisCountMaximum = 64;
814
816 static inline constexpr uint32_t MotionCountMaximum = 64;
817
819 static inline constexpr uint32_t NetworkNodeCountMaximum = 64;
820
822 static inline constexpr uint32_t RecorderCountMaximum = 64;
823
825 static inline constexpr uint32_t CompensatorCountMaximum = 64;
826
828 static inline constexpr uint32_t MathBlockCountMaximum = 64;
829
831 static inline constexpr uint32_t UserBufferDataCountMaximum = 1024;
832
834 static inline constexpr double SampleRateDefault = 1000.0;
835
845 static inline constexpr int32_t AxisFrameBufferSizeDefault = 1024;
846
848
849 // Static functions or attributes should be grouped together.
854
857 {
862
867 static inline constexpr int32_t ControllerIndexDefault = 0;
868
873 static inline constexpr uint32_t PathLengthMaximum = 256;
874
880 static inline constexpr int32_t CpuAffinityDefault = -1;
881
886 static inline constexpr int32_t RmpThreadPriorityMaximumDefault = 45;
887
892 static inline constexpr int32_t RmpThreadPriorityRange = 8;
893
898 static inline constexpr int32_t RmpThreadPriorityMinimum = RmpThreadPriorityRange + 1;
899
904 static inline constexpr int32_t RmpThreadPriorityMaximum = 99;
905
910 static inline constexpr int32_t RmpThreadPriorityNoRealTime = 0;
912
913
918
924 {
925 ControllerIndex = ControllerIndexDefault;
926 std::memset(RmpPath, '\0', PathLengthMaximum);
927 std::memset(NicPrimary, '\0', PathLengthMaximum);
928 std::memset(NicSecondary, '\0', PathLengthMaximum);
929#if defined(_WIN32)
930 std::memset(NodeName, '\0', PathLengthMaximum);
931#elif defined(__linux__)
932 CpuAffinity = CpuAffinityDefault;
933 RmpThreadPriorityMax = RmpThreadPriorityMaximumDefault;
934#endif
935 }
937
942
948
953 char RmpPath[PathLengthMaximum];
954
959 char NicPrimary[PathLengthMaximum];
960
965 char NicSecondary[PathLengthMaximum];
967
968 // Control which platform specific parameters are available
969#if defined(_WIN32) && defined(__linux__)
970 static_assert(false, "_WIN32 and __linux__ defined. Double check preprocessor definitions");
971#elif !defined(_WIN32) && !defined(__linux__) && !defined(DOXYGEN)
972 static_assert(false, "Neither _WIN32 nor __linux__ are defined AND this is not a documentation build. Double check preprocessor definitions");
973#endif //defined(_WIN32) && defined(__linux__)
974#if defined(_WIN32) || defined(DOXYGEN)
975
980
985 char NodeName[PathLengthMaximum];
986
988#endif //defined(_WIN32)
989#if defined(__linux__) || defined(DOXYGEN)
990
995
1006
1018
1020# endif // defined(__linux__)
1021 };
1022
1033 static MotionController* Create(CreationParameters* creationParameters);
1034
1040
1045 static MotionController* Get(int32_t controllerIndex);
1046
1047#if defined(_WIN32)
1075
1080 static MotionController* CreateFromSoftware(const char* const RtaPath);
1081
1087 static MotionController* CreateFromSoftware(const char* const RtaPath, const char* const NodeName);
1088
1116#endif // defined(_WIN32)
1117
1122 static MotionController* CreateFromFile(const char* const fileName);
1124
1129
1148 virtual Axis* AxisGet(int32_t axisNumber) PURE_VIRTUAL;
1149
1166 virtual MultiAxis* MultiAxisGet(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1167
1181 virtual MultiAxis* LoadExistingMultiAxis(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1182
1197 virtual RapidCodeNetworkNode* NetworkNodeGet(int32_t nodeNumber) PURE_VIRTUAL;
1198
1214 virtual IO* IOGet(int32_t nodeNumber) PURE_VIRTUAL;
1215
1238 virtual void Delete(void) PURE_VIRTUAL;
1240
1245
1255 virtual void Reset() PURE_VIRTUAL;
1256
1261 virtual void Refresh() PURE_VIRTUAL;
1262
1270 virtual void Shutdown() PURE_VIRTUAL;
1271
1280 virtual void MemoryToFile(const char* const fileName) PURE_VIRTUAL;
1282
1287
1310 virtual int32_t SampleCounterGet() PURE_VIRTUAL;
1311
1326 virtual double ProcessorUsageGet() PURE_VIRTUAL;
1327
1338 virtual void ProcessorUsageClear() PURE_VIRTUAL;
1339
1343 virtual uint32_t FirmwareTimingDeltaGet() PURE_VIRTUAL;
1344
1345
1347
1352
1353
1354
1377 virtual uint32_t SerialNumberGet(void) PURE_VIRTUAL;
1378
1397 virtual void SampleWait(uint32_t samples) PURE_VIRTUAL;
1398
1399
1401 virtual RSIControllerType ControllerTypeGet() PURE_VIRTUAL;
1402
1404 virtual const char* const ServerNameGet() PURE_VIRTUAL;
1405
1407 virtual int32_t ServerPortGet() PURE_VIRTUAL;
1408
1409
1410
1411
1433 virtual RSIProcessorType ProcessorTypeGet() PURE_VIRTUAL;
1434
1439 virtual void SampleRateSet(double sampleRate) PURE_VIRTUAL;
1440
1443 virtual double SampleRateGet() PURE_VIRTUAL;
1444
1462 virtual int32_t AxisCountGet() PURE_VIRTUAL;
1463
1482 virtual void AxisCountSet(int32_t axisCount) PURE_VIRTUAL;
1483
1486 virtual void AxisCountSet(int32_t axisCount, bool setMotorFilterSupervisor) PURE_VIRTUAL;
1487
1490 virtual bool IsLicensed() PURE_VIRTUAL;
1491
1493 virtual int32_t PackageVariantGet() PURE_VIRTUAL;
1494
1496 virtual int32_t AxisLicenseCountGet() PURE_VIRTUAL;
1497
1499 virtual bool MechaWareLicenseGet() PURE_VIRTUAL;
1500
1502 virtual int32_t UnsupportedOptionSet(int32_t option) PURE_VIRTUAL;
1503
1528 virtual int32_t MotionCountGet() PURE_VIRTUAL;
1529
1546 virtual void MotionCountSet(int32_t motionCount) PURE_VIRTUAL;
1547
1573 virtual int32_t UserVersionGet() PURE_VIRTUAL;
1574
1598 virtual void UserVersionSet(int32_t version) PURE_VIRTUAL;
1599
1602 virtual int32_t ExternalMemorySizeGet() PURE_VIRTUAL;
1603
1620 virtual void AxisFrameBufferSizeSet(int32_t axisNumber, int32_t frameBufferSize) PURE_VIRTUAL;
1621
1636 virtual int32_t AxisFrameBufferSizeGet(int32_t axisNumber) PURE_VIRTUAL;
1638
1643
1661 virtual const char* const FirmwareVersionGet() PURE_VIRTUAL;
1662
1680 virtual int32_t FirmwareOptionGet() PURE_VIRTUAL;
1681
1683 virtual bool HasMechaWare() PURE_VIRTUAL;
1684
1708 virtual int32_t MemoryGet(uint64_t address) PURE_VIRTUAL;
1709
1710
1728 virtual double MemoryDoubleGet(uint64_t address) PURE_VIRTUAL;
1729
1755 virtual void MemoryBlockGet(uint64_t address, void* dataStart, int32_t size) PURE_VIRTUAL;
1756
1771 virtual void MemorySet(uint64_t address, int32_t data) PURE_VIRTUAL;
1772
1773
1774
1791 virtual void MemoryDoubleSet(uint64_t address, double dataDouble) PURE_VIRTUAL;
1792
1818 virtual void MemoryBlockSet(uint64_t address, const void* const dataStart, int32_t size) PURE_VIRTUAL;
1819
1838 virtual uint32_t FirmwareAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1839
1840
1841
1842
1865 virtual uint64_t HostAddressGet(uint32_t firmwareAddress) PURE_VIRTUAL;
1866
1867
1868
1891 virtual int32_t BackgroundCycleCounterGet() PURE_VIRTUAL;
1892
1893
1894
1895
1904 virtual uint64_t AddressFromStringGet(const char* const addressName) PURE_VIRTUAL;
1905
1906
1907
1916 virtual const char* const StringFromAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1917
1932 virtual uint64_t AddressGet(RSIControllerAddressType type) PURE_VIRTUAL;
1933
1951 virtual uint64_t AddressGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1952
1953
1966 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type) PURE_VIRTUAL;
1967
1972 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1973
1987 virtual bool MotionHoldGateGet(int32_t gateNumber) PURE_VIRTUAL;
1988
1989
1990
2006 virtual void MotionHoldGateSet(int32_t gateNumber, bool hold) PURE_VIRTUAL;
2008
2013
2015 virtual RSINetworkTechnologyType NetworkTechnologyTypeGet() PURE_VIRTUAL;
2016
2018 virtual RSINetworkType NetworkTypeGet() PURE_VIRTUAL;
2019
2022 virtual int32_t NetworkNodeCountGet() PURE_VIRTUAL;
2023
2069 virtual RSINetworkEniResult NetworkEniGenerate() PURE_VIRTUAL;
2070
2091 virtual const char* const NetworkEniGenerateOutputGet() PURE_VIRTUAL;
2092
2094 virtual void NetworkStart() PURE_VIRTUAL;
2095
2104 virtual void NetworkStart(RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2105
2109 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2110
2115 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
2116
2118 virtual void NetworkShutdown() PURE_VIRTUAL;
2119
2122 virtual RSINetworkState NetworkStateGet() PURE_VIRTUAL;
2123
2125 virtual int32_t NetworkCounterGet() PURE_VIRTUAL;
2126
2128 virtual int32_t NetworkInputCountGet() PURE_VIRTUAL;
2129
2131 virtual int32_t NetworkInputBitSizeGet(int32_t index) PURE_VIRTUAL;
2132
2136 virtual const char* const NetworkInputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2137
2140 virtual int32_t NetworkInputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2141
2144 virtual const char* const NetworkInputNameGet(int32_t index) PURE_VIRTUAL;
2145
2149 virtual uint64_t NetworkInputValueGet(int32_t index) PURE_VIRTUAL;
2150
2151
2152
2156 virtual uint64_t NetworkInputAddressGet(int32_t index) PURE_VIRTUAL;
2157
2161 virtual int32_t NetworkOutputCountGet() PURE_VIRTUAL;
2162
2165 virtual int32_t NetworkOutputBitSizeGet(int32_t index) PURE_VIRTUAL;
2166
2167
2171 virtual const char* const NetworkOutputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2172
2174 virtual int32_t NetworkOutputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2175
2177 virtual const char* const NetworkOutputNameGet(int32_t index) PURE_VIRTUAL;
2178
2194 virtual uint64_t NetworkOutputValueGet(int32_t index) PURE_VIRTUAL;
2195
2212 virtual void NetworkOutputValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2213
2232 virtual uint64_t NetworkOutputAddressGet(int32_t index) PURE_VIRTUAL;
2233
2238 virtual uint64_t NetworkOutputAddressGet(int32_t index, RSINetworkOutputAddressType type) PURE_VIRTUAL;
2239
2250 virtual uint64_t NetworkOutputIntendedValueGet(int32_t index) PURE_VIRTUAL;
2251
2263 virtual void NetworkOutputOverrideSet(int32_t index, bool outputOverride) PURE_VIRTUAL;
2264
2275 virtual bool NetworkOutputOverrideGet(int32_t index) PURE_VIRTUAL;
2276
2277
2278
2279
2296 virtual void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2297
2310 virtual uint64_t NetworkOutputOverrideValueGet(int32_t index) PURE_VIRTUAL;
2311
2326 virtual uint64_t NetworkOutputSentValueGet(int32_t index) PURE_VIRTUAL;
2327
2331 virtual int32_t NetworkLogMessageCountGet() PURE_VIRTUAL;
2332
2334 virtual RSINetworkStartError LastNetworkStartErrorGet() PURE_VIRTUAL;
2335
2340 virtual const char* const NetworkLogMessageGet(int32_t messageIndex) PURE_VIRTUAL;
2341
2343 virtual void NetworkTimingEnableSet(bool enable) PURE_VIRTUAL;
2344
2346 virtual void NetworkTimingClear() PURE_VIRTUAL;
2347
2349 virtual uint32_t NetworkTimingDeltaGet() PURE_VIRTUAL;
2350
2352 virtual uint32_t NetworkTimingMinGet() PURE_VIRTUAL;
2353
2355 virtual uint32_t NetworkTimingMaxGet() PURE_VIRTUAL;
2356
2358 virtual void NetworkTimingThresholdLowSet(uint32_t microseconds) PURE_VIRTUAL;
2359
2361 virtual void NetworkTimingThresholdHighSet(uint32_t microseconds) PURE_VIRTUAL;
2362
2364 virtual uint32_t NetworkTimingThresholdLowCountGet() PURE_VIRTUAL;
2365
2367 virtual uint32_t NetworkTimingThresholdHighCountGet() PURE_VIRTUAL;
2368
2370 virtual bool NetworkSynchronizedGet() PURE_VIRTUAL;
2372
2377
2394 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
2395
2414 virtual void InterruptWake() PURE_VIRTUAL;
2415
2443 virtual void SyncInterruptEnableSet(bool enable) PURE_VIRTUAL;
2444
2470 virtual void SyncInterruptPeriodSet(uint32_t samples) PURE_VIRTUAL;
2471
2491 virtual int32_t SyncInterruptWait() PURE_VIRTUAL;
2492
2494 virtual bool ServiceThreadStateGet() PURE_VIRTUAL;
2495
2506 virtual int32_t SyncInterruptHostProcessTimeGet() PURE_VIRTUAL;
2507
2509 virtual int32_t SyncInterruptHostProcessFlagGet() PURE_VIRTUAL;
2510
2523 virtual void SyncInterruptHostProcessFlagSet(bool hostProcessFlag) PURE_VIRTUAL;
2524
2535 virtual bool SyncInterruptHostProcessStatusBitGet() PURE_VIRTUAL;
2536
2546 virtual void SyncInterruptHostProcessStatusClear() PURE_VIRTUAL;
2547
2573
2574 virtual void ServiceThreadEnableSet(bool enable) PURE_VIRTUAL;
2576
2581
2582
2583
2602 virtual int32_t RecorderCountGet() PURE_VIRTUAL;
2603
2621 virtual void RecorderCountSet(int32_t recorderCount) PURE_VIRTUAL;
2622
2639 virtual void RecorderPeriodSet(uint32_t samples) PURE_VIRTUAL;
2640
2642 virtual void RecorderPeriodSet(int32_t recorderNumber, uint32_t samples) PURE_VIRTUAL;
2643
2660 virtual void RecorderCircularBufferSet(bool enable) PURE_VIRTUAL;
2661
2663 virtual void RecorderCircularBufferSet(int32_t recorderNumber, bool enable) PURE_VIRTUAL;
2664
2680 virtual void RecorderDataCountSet(int32_t count) PURE_VIRTUAL;
2681
2683 virtual void RecorderDataCountSet(int32_t recorderNumber,int32_t count) PURE_VIRTUAL;
2684
2701 virtual void RecorderDataAddressSet(int32_t index, uint64_t address) PURE_VIRTUAL;
2702
2704 virtual void RecorderDataAddressSet(int32_t recorderNumber,int32_t index, uint64_t address) PURE_VIRTUAL;
2705
2706
2712 virtual void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t* const addresses, int32_t addressCount) PURE_VIRTUAL;
2713
2727
2733 virtual void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2734
2741 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2742
2748 virtual void RecorderConfigureToTriggerOnMotion(MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2749
2756 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2757
2764 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, int32_t motionNumber, bool triggerOnMotion) PURE_VIRTUAL;
2765
2774 virtual bool RecorderTriggerOnMotionGet(int32_t recorderNumber) PURE_VIRTUAL;
2775
2791 virtual bool RecorderEnabledGet() PURE_VIRTUAL;
2792
2794 virtual bool RecorderEnabledGet(int32_t recorderNumber ) PURE_VIRTUAL;
2795
2812 virtual int32_t RecorderRecordCountGet() PURE_VIRTUAL;
2813
2815 virtual int32_t RecorderRecordCountGet(int32_t recorderNumber ) PURE_VIRTUAL;
2816
2830 virtual int32_t RecorderRecordMaxCountGet() PURE_VIRTUAL;
2831
2833 virtual int32_t RecorderRecordMaxCountGet(int32_t recorderNumber) PURE_VIRTUAL;
2834
2849 virtual void RecorderStart() PURE_VIRTUAL;
2850
2852 virtual void RecorderStart(int32_t recorderNumber) PURE_VIRTUAL;
2853
2870 virtual void RecorderStop() PURE_VIRTUAL;
2871
2873 virtual void RecorderStop(int32_t recorderNumber) PURE_VIRTUAL;
2874
2875
2876
2892 virtual const int32_t* const RecorderRecordDataGet() PURE_VIRTUAL;
2893
2895 virtual const int32_t* const RecorderRecordDataGet(int32_t recorderNumber) PURE_VIRTUAL;
2896
2911 virtual void RecorderRecordDataRetrieve() PURE_VIRTUAL;
2912
2932 virtual int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount) PURE_VIRTUAL;
2933
2935 virtual void RecorderRecordDataRetrieve(int32_t recorderNumber) PURE_VIRTUAL;
2936
2953 virtual int32_t RecorderRecordDataValueGet(int32_t index) PURE_VIRTUAL;
2954
2956 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2957
2976 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
2977
2979 virtual double RecorderRecordDataDoubleGet(int32_t index) PURE_VIRTUAL;
2980
2982 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2983
3002 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
3003
3021 virtual void RecorderBufferHighCountSet(int32_t bufferHighCount) PURE_VIRTUAL;
3022
3024 virtual void RecorderBufferHighCountSet(int32_t recorderNumber, int32_t bufferHighCount) PURE_VIRTUAL;
3025
3040 virtual void RecorderReset() PURE_VIRTUAL;
3041
3043 virtual void RecorderReset(int32_t recorderNumber) PURE_VIRTUAL;
3044
3056 virtual int32_t RecorderBufferSizeGet(int32_t recorderNumber) PURE_VIRTUAL;
3057
3074 virtual void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize) PURE_VIRTUAL;
3076
3081
3082
3083
3084
3109 virtual int32_t CompensatorCountGet() PURE_VIRTUAL;
3110
3130 virtual void CompensatorCountSet(int32_t compensatorCount) PURE_VIRTUAL;
3131
3142 virtual int32_t CompensatorPointCountGet(int32_t compensatorNumber) PURE_VIRTUAL;
3143
3163 virtual void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount) PURE_VIRTUAL;
3164
3178 virtual int32_t CompensatorDimensionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3179
3205 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;
3206
3236 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;
3237
3258 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;
3259
3280 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;
3281
3293 virtual void CompensatorTableSet(int32_t compensatorNumber, const double* const table) PURE_VIRTUAL;
3294
3306 virtual void CompensatorTableGet(int32_t compensatorNumber, double* table) PURE_VIRTUAL;
3307
3327 virtual double CompensatorPositionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3328
3329
3330
3331
3332
3333
3345
3346 virtual void CompensatorTableClear(int32_t compensatorNumber) PURE_VIRTUAL;
3347
3356 virtual void CompensatorDisable(int32_t compensatorNumber) PURE_VIRTUAL;
3357
3362 virtual void CompensatorDisable(int32_t compensatorNumber, bool force) PURE_VIRTUAL;
3363
3370 virtual void CompensatorEnable(int32_t compensatorNumber) PURE_VIRTUAL;
3371
3373
3378
3398 virtual int32_t UserLimitCountGet() PURE_VIRTUAL;
3399
3419 virtual void UserLimitCountSet(int32_t userLimitCount) PURE_VIRTUAL;
3420
3440 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot) PURE_VIRTUAL;
3441
3444 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration) PURE_VIRTUAL;
3445
3447 virtual RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number) PURE_VIRTUAL;
3448
3450 virtual RSIAction UserLimitActionGet(int32_t number) PURE_VIRTUAL;
3451
3453 virtual int32_t UserLimitAxisNumberGet(int32_t number) PURE_VIRTUAL;
3454
3456 virtual double UserLimitDurationGet(int32_t number) PURE_VIRTUAL;
3457
3459 virtual bool UserLimitSingleShotGet(int32_t number) PURE_VIRTUAL;
3460
3485 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32) PURE_VIRTUAL;
3486
3508 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfDouble, double limitValueDouble) PURE_VIRTUAL;
3509
3511 virtual RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3512
3514 virtual RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3515
3517 virtual uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3518
3520 virtual uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3521
3523 virtual int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3524
3526 virtual double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3527
3554 virtual void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3555
3558 virtual void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3559
3562 virtual void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3563
3566 virtual void UserLimitOutputSet(int32_t number, double limitValueDouble, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3567
3583 virtual void UserLimitOutputSet(int32_t number, RSIDataType dataType, uint64_t inputPtr, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3584
3586 virtual bool UserLimitOutputEnableGet(int32_t number) PURE_VIRTUAL;
3587
3589 virtual RSIDataType UserLimitOutputDataTypeGet(int32_t number) PURE_VIRTUAL;
3590
3592 virtual uint64_t UserLimitOutputAddressGet(int32_t number) PURE_VIRTUAL;
3593
3595 virtual uint64_t UserLimitOutputInputAddressGet(int32_t number) PURE_VIRTUAL;
3596
3598 virtual uint32_t UserLimitOutputAndMaskGet(int32_t number) PURE_VIRTUAL;
3599
3601 virtual uint32_t UserLimitOutputOrMaskGet(int32_t number) PURE_VIRTUAL;
3602
3604 virtual int32_t UserLimitOutputValueGet(int32_t number) PURE_VIRTUAL;
3605
3607 virtual uint64_t UserLimitOutputAndMask64Get(int32_t number) PURE_VIRTUAL;
3608
3610 virtual uint64_t UserLimitOutputOrMask64Get(int32_t number) PURE_VIRTUAL;
3611
3612
3614 virtual double UserLimitOutputDoubleGet(int32_t number) PURE_VIRTUAL;
3615
3636 virtual bool UserLimitStateGet(int32_t number) PURE_VIRTUAL;
3637
3658 virtual bool UserLimitEnableGet(int32_t number) PURE_VIRTUAL;
3659
3661 virtual void UserLimitEnableSet(int32_t number, bool enable) PURE_VIRTUAL;
3662
3677 virtual void UserLimitDisable(int32_t number) PURE_VIRTUAL;
3678
3690 virtual void UserLimitReset(int32_t number) PURE_VIRTUAL;
3691
3700
3701 virtual int32_t UserLimitCountMax() PURE_VIRTUAL;
3702
3720 virtual void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address) PURE_VIRTUAL;
3721
3723 virtual uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex) PURE_VIRTUAL;
3725
3726
3731
3741 virtual int32_t MathBlockCountGet() PURE_VIRTUAL;
3742
3753 virtual void MathBlockCountSet(int32_t mathBlockCount) PURE_VIRTUAL;
3754
3773
3775 virtual MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3776
3778 virtual void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig& config) PURE_VIRTUAL;
3779
3781 virtual FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3782
3784
3785
3790
3793
3795};
3796
3800class RSI_API RapidCodeNetworkNode : public virtual RapidCodeObject {
3801public:
3802
3807
3809 static inline constexpr uint32_t SDOTimeoutMillisecondsDefault = 100;
3810
3812
3813
3818
3820 virtual bool Exists() PURE_VIRTUAL;
3821
3823 virtual RSINodeType TypeGet() PURE_VIRTUAL;
3824
3826 virtual bool IsEtherCAT() PURE_VIRTUAL;
3827
3829 virtual bool IsSynqNet() PURE_VIRTUAL;
3830
3832
3837
3839 virtual bool HasIO() PURE_VIRTUAL;
3840
3842 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
3843
3845 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
3846
3848 virtual void DigitalOutSet(int32_t digitalOutNumber, bool state) PURE_VIRTUAL;
3849
3851 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
3852
3854 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
3855
3857 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
3858
3860
3864
3866 virtual int32_t DigitalInCountGet() PURE_VIRTUAL;
3867
3869 virtual int32_t DigitalOutCountGet() PURE_VIRTUAL;
3870
3872 virtual int32_t AnalogInCountGet() PURE_VIRTUAL;
3873
3875 virtual int32_t AnalogOutCountGet() PURE_VIRTUAL;
3876
3877
3879 virtual int32_t SegmentCountGet() PURE_VIRTUAL;
3880
3882 virtual int32_t SegmentDigitalInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3883
3885 virtual int32_t SegmentDigitalOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3886
3888 virtual int32_t SegmentAnalogInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3889
3891 virtual int32_t SegmentAnalogOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3892
3894 virtual int32_t SegmentIDGet(int32_t segmentNumber) PURE_VIRTUAL;
3895
3908 virtual uint64_t DigitalInAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3909
3922 virtual int32_t DigitalInMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3923
3936 virtual uint64_t DigitalOutAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3937
3950 virtual int32_t DigitalOutMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3951
3963 virtual uint64_t AnalogInAddressGet(int32_t channel) PURE_VIRTUAL;
3964
3976 virtual int32_t AnalogInMaskGet(int32_t channel) PURE_VIRTUAL;
3977
3989 virtual uint64_t AnalogOutAddressGet(int32_t channel) PURE_VIRTUAL;
3990
4002 virtual int32_t AnalogOutMaskGet(int32_t channel) PURE_VIRTUAL;
4003
4017 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4018
4022 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4023
4036 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4037
4041 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4042
4058 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue) PURE_VIRTUAL;
4059
4060
4065 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4066
4079 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue) PURE_VIRTUAL;
4080
4088 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4089
4095 virtual char* AKDASCIICommand(const char* const command) PURE_VIRTUAL;
4096
4098 virtual void ClearFaults(int32_t axisNumber) PURE_VIRTUAL;
4099
4101 virtual uint32_t VendorIdGet() PURE_VIRTUAL;
4102
4115 virtual const char* const NameGet() PURE_VIRTUAL;
4116
4129 virtual const char* const ProductNameGet() PURE_VIRTUAL;
4130
4143 virtual const char* const VendorNameGet() PURE_VIRTUAL;
4144
4146 virtual uint32_t ProductCodeGet() PURE_VIRTUAL;
4147
4149 virtual uint32_t RevisionGet() PURE_VIRTUAL;
4150
4152 virtual uint32_t StationAliasGet() PURE_VIRTUAL;
4153
4155 virtual const char* const SerialNumberGet() PURE_VIRTUAL;
4156
4158 virtual uint32_t AxisCountGet() PURE_VIRTUAL;
4159
4161 virtual uint16_t StatusWordGet(int32_t axisIndex) PURE_VIRTUAL;
4162};
4163
4165
4168class RSI_API RapidCodeMotion : public virtual RapidCodeInterrupt{
4169public:
4170
4176
4179
4181
4182
4186
4204 virtual int32_t NumberGet() PURE_VIRTUAL;
4205
4222 virtual int32_t AxisCountGet() PURE_VIRTUAL;
4223
4227
4252 virtual void TriggeredModify() PURE_VIRTUAL;
4253
4280 virtual void Stop() PURE_VIRTUAL;
4281
4306 virtual void Resume() PURE_VIRTUAL;
4307
4332 virtual void EStop() PURE_VIRTUAL;
4333
4354 virtual void EStopAbort() PURE_VIRTUAL;
4355
4372 virtual void EStopModify() PURE_VIRTUAL;
4373
4376 virtual void EStopModifyAbort() PURE_VIRTUAL;
4377
4399 virtual void Abort() PURE_VIRTUAL;
4400
4427 virtual void ClearFaults() PURE_VIRTUAL;
4428
4455 virtual void AmpEnableSet(bool enable) PURE_VIRTUAL;
4456
4486 virtual int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds) PURE_VIRTUAL;
4487
4507
4508 virtual void Map() PURE_VIRTUAL;
4509
4527 virtual void Unmap() PURE_VIRTUAL;
4528
4533 virtual bool IsMapped() PURE_VIRTUAL;
4534
4551 virtual void FeedRateSet(double rate) PURE_VIRTUAL;
4552
4571 virtual double FeedRateGet() PURE_VIRTUAL;
4572
4576
4577
4578
4579
4599 virtual RSIState StateGet() PURE_VIRTUAL;
4600
4628 virtual RSISource SourceGet() PURE_VIRTUAL;
4629
4654 virtual const char* const SourceNameGet(RSISource source) PURE_VIRTUAL;
4655
4678 virtual int32_t MotionDoneWait() PURE_VIRTUAL;
4679
4706 virtual int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds) PURE_VIRTUAL;
4707
4728 virtual bool MotionDoneGet() PURE_VIRTUAL;
4729
4752 virtual bool StatusBitGet(RSIEventType bitMask) PURE_VIRTUAL;
4753
4768 virtual uint64_t StatusBitsGet() PURE_VIRTUAL;
4769
4773
4802 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
4803
4817 virtual void InterruptWake() PURE_VIRTUAL;
4818
4822
4838 virtual double StopTimeGet() PURE_VIRTUAL;
4839
4855 virtual void StopTimeSet(double seconds) PURE_VIRTUAL;
4856
4872 virtual double EStopTimeGet() PURE_VIRTUAL;
4873
4889 virtual void EStopTimeSet(double seconds) PURE_VIRTUAL;
4890
4907 virtual double MotionDelayGet() PURE_VIRTUAL;
4908
4929 virtual void MotionDelaySet(double seconds) PURE_VIRTUAL;
4930
4951 virtual uint16_t MotionIdGet() PURE_VIRTUAL;
4952
4970 virtual void MotionIdSet(uint16_t id) PURE_VIRTUAL;
4971
4973 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
4974
4976 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
4977
4992 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
4993
5001 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
5002
5022 virtual RSIMotionHoldType MotionHoldTypeGet() PURE_VIRTUAL;
5023
5056 virtual void MotionHoldTypeSet(RSIMotionHoldType type) PURE_VIRTUAL;
5057
5069 virtual int32_t MotionHoldGateNumberGet() PURE_VIRTUAL;
5070
5089
5090 virtual void MotionHoldGateNumberSet(int32_t gateNumber) PURE_VIRTUAL;
5091
5108 virtual double MotionHoldTimeoutGet() PURE_VIRTUAL;
5109
5128 virtual void MotionHoldTimeoutSet(double seconds) PURE_VIRTUAL;
5129
5153 virtual bool MotionHoldGateGet() PURE_VIRTUAL;
5154
5177 virtual void MotionHoldGateSet(bool hold) PURE_VIRTUAL;
5178
5195 virtual int32_t MotionHoldAxisNumberGet() PURE_VIRTUAL;
5196
5213 virtual void MotionHoldAxisNumberSet(int32_t number) PURE_VIRTUAL;
5214
5231
5232 virtual double MotionHoldAxisPositionGet() PURE_VIRTUAL;
5233
5250 virtual void MotionHoldAxisPositionSet(double position) PURE_VIRTUAL;
5251
5253 virtual RSIUserLimitLogic MotionHoldAxisLogicGet() PURE_VIRTUAL;
5254
5256 virtual void MotionHoldAxisLogicSet(RSIUserLimitLogic logic) PURE_VIRTUAL;
5257
5274 virtual uint64_t MotionHoldUserAddressGet() PURE_VIRTUAL;
5275
5292 virtual void MotionHoldUserAddressSet(uint64_t address) PURE_VIRTUAL;
5293
5309 virtual int32_t MotionHoldUserMaskGet() PURE_VIRTUAL;
5310
5326 virtual void MotionHoldUserMaskSet(int32_t holdMask) PURE_VIRTUAL;
5327
5343 virtual int32_t MotionHoldUserPatternGet() PURE_VIRTUAL;
5344
5360 virtual void MotionHoldUserPatternSet(int32_t pattern) PURE_VIRTUAL;
5361
5363 virtual void MotionAttributeMaskDefaultSet() PURE_VIRTUAL;
5364
5389
5390 virtual bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5391
5410 virtual void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5411
5428
5429 virtual void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff) PURE_VIRTUAL;
5430
5434
5435
5436
5472 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;
5473
5511 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;
5512
5542 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;
5543
5548 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address) PURE_VIRTUAL;
5549
5571 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
5572
5577 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on) PURE_VIRTUAL;
5578
5597 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on, int32_t ptPointIndex) PURE_VIRTUAL;
5598
5614 virtual void StreamingOutputsClear() PURE_VIRTUAL;
5615
5635 virtual void StreamingOutputsEnableSet(bool enable) PURE_VIRTUAL;
5636};
5637
5638
5643class RSI_API Axis : public virtual RapidCodeMotion{
5644public:
5645
5646 friend class MotionController;
5647 friend class MultiAxis;
5648
5649
5654
5656 static inline constexpr uint32_t NetworkIndexInvalid = 65535;
5657
5659 static inline constexpr double AmpEnableAmpFaultTimeoutSecondsDefault = 1.0;
5660
5662
5663
5668
5673 RapidCodeNetworkNode* NetworkNode;
5674
5675
5677
5682
5720 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel) PURE_VIRTUAL;
5721
5743 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel) PURE_VIRTUAL;
5744
5767 virtual void MoveTrapezoidal(double position) PURE_VIRTUAL; // use defaults Overload
5768 //virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel, bool checkLimits) PURE_VIRTUAL;
5769
5808 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5809
5814 virtual void MoveSCurve(double position) PURE_VIRTUAL;
5815
5825 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5826
5830 virtual void MoveVelocity(double velocity) PURE_VIRTUAL;
5831
5866 virtual void MoveVelocity(double velocity, double accel) PURE_VIRTUAL;
5867
5904 virtual void MoveVelocitySCurve(double velocity, double accel, double jerkPct) PURE_VIRTUAL;
5905
5944 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5945
5949 virtual void MoveRelative(double releativePosition) PURE_VIRTUAL;
5950
5954 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5956
5961
5986 virtual void PositionSet(double position) PURE_VIRTUAL;
5987
6006 virtual double ActualPositionGet() PURE_VIRTUAL;
6007
6029 virtual void ActualPositionSet(double position) PURE_VIRTUAL;
6030
6047 virtual double CompensationPositionGet() PURE_VIRTUAL;
6048
6061 virtual void CompensationPositionSet(double position) PURE_VIRTUAL;
6062
6074 virtual double TargetPositionGet() PURE_VIRTUAL;
6075
6095 virtual double CommandPositionGet() PURE_VIRTUAL;
6096
6128 virtual void CommandPositionSet(double position) PURE_VIRTUAL;
6129
6153 virtual void CommandPositionDirectSet(double position) PURE_VIRTUAL;
6154
6171 virtual double OriginPositionGet() PURE_VIRTUAL;
6172
6195 virtual void OriginPositionSet(double position) PURE_VIRTUAL;
6196
6217 virtual double PositionErrorGet() PURE_VIRTUAL;
6218
6240 virtual double CommandVelocityGet() PURE_VIRTUAL;
6241
6264 virtual double ActualVelocityGet() PURE_VIRTUAL;
6265
6286 virtual double CommandAccelGet() PURE_VIRTUAL;
6287
6289 virtual double CommandJerkGet() PURE_VIRTUAL;
6290
6311 virtual double EncoderPositionGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
6312
6334 virtual double UserUnitsGet() PURE_VIRTUAL;
6335
6358 virtual void UserUnitsSet(double countsPerUserUnit) PURE_VIRTUAL;
6359
6361 virtual double UserUnitsToCounts(double userUnits) PURE_VIRTUAL;
6362
6364 virtual double CountsToUserUnits(double counts) PURE_VIRTUAL;
6365
6385 virtual int32_t FramesToExecuteGet() PURE_VIRTUAL;
6387
6392
6413
6414 virtual void Home() PURE_VIRTUAL; // this one moves to zero by default
6415
6419 virtual void Home(bool moveToZero) PURE_VIRTUAL;
6420
6439
6440 virtual RSIHomeMethod HomeMethodGet() PURE_VIRTUAL;
6441
6460
6461 virtual void HomeMethodSet(RSIHomeMethod method) PURE_VIRTUAL;
6462
6483
6484 virtual double HomeOffsetGet() PURE_VIRTUAL;
6485
6504
6505 virtual void HomeOffsetSet(double offset) PURE_VIRTUAL;
6506
6524
6525 virtual double HomeVelocityGet() PURE_VIRTUAL;
6526
6529 virtual double HomeVelocityGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6530
6551 virtual void HomeVelocitySet(double velocity) PURE_VIRTUAL;
6552
6557 virtual void HomeVelocitySet(RSIHomeStage homeStage, double velocity) PURE_VIRTUAL;
6558
6574 virtual double HomeSlowVelocityGet() PURE_VIRTUAL;
6575
6591 virtual void HomeSlowVelocitySet(double velocity) PURE_VIRTUAL;
6592
6610
6611 virtual double HomeAccelerationGet() PURE_VIRTUAL;
6612
6615 virtual double HomeAccelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6616
6636
6637 virtual void HomeAccelerationSet(double accel) PURE_VIRTUAL;
6638
6642 virtual void HomeAccelerationSet(RSIHomeStage homeStage, double accel) PURE_VIRTUAL;
6643
6660
6661 virtual double HomeDecelerationGet() PURE_VIRTUAL;
6662
6665 virtual double HomeDecelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6666
6685
6686 virtual void HomeDecelerationSet(double decel) PURE_VIRTUAL;
6687
6691 virtual void HomeDecelerationSet(RSIHomeStage homeStage, double decel) PURE_VIRTUAL;
6692
6710
6711 virtual double HomeJerkPercentGet() PURE_VIRTUAL;
6712
6715 virtual double HomeJerkPercentGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6716
6736 virtual void HomeJerkPercentSet(double percent) PURE_VIRTUAL;
6737
6742 virtual void HomeJerkPercentSet(RSIHomeStage homeStage, double percent) PURE_VIRTUAL;
6743
6763 virtual void HomeCancelSet(bool cancel) PURE_VIRTUAL;
6764
6783 virtual bool HomeStateGet() PURE_VIRTUAL;
6784
6797 virtual void HomeStateSet(bool homed) PURE_VIRTUAL;
6798
6803 virtual void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex) PURE_VIRTUAL;
6804
6806 virtual void HomeLimitCustomConfigReset() PURE_VIRTUAL;
6807
6809 virtual uint64_t HomeLimitCustomConfigAddressGet() PURE_VIRTUAL;
6810
6813 virtual int32_t HomeLimitCustomConfigBitIndexGet() PURE_VIRTUAL;
6814
6836
6837 virtual void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel) PURE_VIRTUAL;
6838
6858 virtual RSIHomeStage HomeStageGet() PURE_VIRTUAL;
6859
6873 virtual void HomeBehaviorSet(RSIAction behavior) PURE_VIRTUAL;
6874
6886 virtual RSIAction HomeBehaviorGet() PURE_VIRTUAL;
6888
6894
6896 virtual bool FaultMaskBitGet(RSIMotorFaultMask bitMask) PURE_VIRTUAL;
6897
6899 virtual uint16_t StatusWordGet() PURE_VIRTUAL;
6901
6906 // reads active configuration to report state
6907
6931
6932 virtual bool NegativeLimitGet() PURE_VIRTUAL;
6933
6957 virtual bool PositiveLimitGet() PURE_VIRTUAL;
6958
6987 virtual bool HomeLimitGet() PURE_VIRTUAL;
6988
7016 virtual bool HomeSwitchGet() PURE_VIRTUAL;
7017
7038 virtual bool AmpFaultGet() PURE_VIRTUAL;
7039
7063 virtual bool AmpEnableGet() PURE_VIRTUAL;
7064
7089 virtual bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7090
7115 virtual bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7116
7139 virtual bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7140
7163 virtual bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7165
7170
7191 virtual bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7192
7213 virtual bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7214
7235
7236 virtual void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue) PURE_VIRTUAL;
7237
7256 virtual bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7257
7276 virtual const char* const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7277
7300 virtual RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7301
7320 virtual void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type) PURE_VIRTUAL;
7321
7338 virtual double AnalogInGet(int32_t channel) PURE_VIRTUAL;
7340
7345
7359 virtual double EStopDecelerationGet() PURE_VIRTUAL;
7360
7375 virtual void EStopDecelerationSet(double decel) PURE_VIRTUAL;
7376
7387 virtual double EStopJerkPercentGet() PURE_VIRTUAL;
7388
7406 virtual void EStopJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7407
7417 virtual double TriggeredModifyDecelerationGet() PURE_VIRTUAL;
7418
7436 virtual void TriggeredModifyDecelerationSet(double decel) PURE_VIRTUAL;
7437
7448 virtual double TriggeredModifyJerkPercentGet() PURE_VIRTUAL;
7449
7467 virtual void TriggeredModifyJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7468
7470 virtual int32_t FrameBufferSizeGet() PURE_VIRTUAL;
7471
7473 virtual void FrameBufferSizeSet(int32_t frameSize) PURE_VIRTUAL;
7474
7494 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
7495
7516 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
7518
7523
7525 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
7526
7528 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
7529
7531 virtual double DefaultVelocityGet() PURE_VIRTUAL;
7532
7534 virtual void DefaultVelocitySet(double velocity) PURE_VIRTUAL;
7535
7537 virtual double DefaultAccelerationGet() PURE_VIRTUAL;
7538
7540 virtual void DefaultAccelerationSet(double acceleration) PURE_VIRTUAL;
7541
7543 virtual double DefaultDecelerationGet() PURE_VIRTUAL;
7544
7546 virtual void DefaultDecelerationSet(double deceleration) PURE_VIRTUAL;
7547
7549 virtual double DefaultJerkPercentGet() PURE_VIRTUAL;
7550
7552 virtual void DefaultJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
7553
7555 virtual double DefaultPosition1Get() PURE_VIRTUAL;
7556
7558 virtual void DefaultPosition1Set(double position1) PURE_VIRTUAL;
7559
7561 virtual double DefaultPosition2Get() PURE_VIRTUAL;
7562
7564 virtual void DefaultPosition2Set(double position2) PURE_VIRTUAL;
7565
7567 virtual double DefaultRelativeIncrementGet() PURE_VIRTUAL;
7568
7570 virtual void DefaultRelativeIncrementSet(double relativeIncrement) PURE_VIRTUAL;
7572
7576 // /@{
7577
7600 virtual RSIAction AmpFaultActionGet() PURE_VIRTUAL;
7601
7624 virtual void AmpFaultActionSet(RSIAction action) PURE_VIRTUAL;
7625
7647 virtual bool AmpFaultTriggerStateGet() PURE_VIRTUAL;
7648
7670 virtual void AmpFaultTriggerStateSet(bool state) PURE_VIRTUAL;
7671
7692 virtual double AmpFaultDurationGet() PURE_VIRTUAL;
7693
7714 virtual void AmpFaultDurationSet(double seconds) PURE_VIRTUAL;
7715
7740 virtual RSIAction HomeActionGet() PURE_VIRTUAL;
7741
7765 virtual void HomeActionSet(RSIAction action) PURE_VIRTUAL;
7766
7792 virtual bool HomeTriggerStateGet() PURE_VIRTUAL;
7793
7814 virtual void HomeTriggerStateSet(bool state) PURE_VIRTUAL;
7815
7837 virtual double HomeDurationGet() PURE_VIRTUAL;
7838
7861 virtual void HomeDurationSet(double seconds) PURE_VIRTUAL;
7862
7891 virtual RSIAction ErrorLimitActionGet() PURE_VIRTUAL;
7892
7919 virtual void ErrorLimitActionSet(RSIAction action) PURE_VIRTUAL;
7920
7943 virtual double ErrorLimitTriggerValueGet() PURE_VIRTUAL;
7944
7966 virtual void ErrorLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
7967
7989 virtual double ErrorLimitDurationGet() PURE_VIRTUAL;
7990
8013 virtual void ErrorLimitDurationSet(double seconds) PURE_VIRTUAL;
8014
8039 virtual RSIAction HardwareNegLimitActionGet() PURE_VIRTUAL;
8040
8065 virtual void HardwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8066
8090 virtual bool HardwareNegLimitTriggerStateGet() PURE_VIRTUAL;
8091
8115 virtual void HardwareNegLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8116
8139 virtual double HardwareNegLimitDurationGet() PURE_VIRTUAL;
8140
8164 virtual void HardwareNegLimitDurationSet(double seconds) PURE_VIRTUAL;
8165
8190 virtual RSIAction HardwarePosLimitActionGet() PURE_VIRTUAL;
8191
8216 virtual void HardwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8217
8238 virtual bool HardwarePosLimitTriggerStateGet() PURE_VIRTUAL;
8239
8263 virtual void HardwarePosLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8264
8287 virtual double HardwarePosLimitDurationGet() PURE_VIRTUAL;
8288
8311 virtual void HardwarePosLimitDurationSet(double seconds) PURE_VIRTUAL;
8312
8338 virtual RSIAction SoftwareNegLimitActionGet() PURE_VIRTUAL;
8339
8363 virtual void SoftwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8364
8387 virtual double SoftwareNegLimitTriggerValueGet() PURE_VIRTUAL;
8388
8411 virtual void SoftwareNegLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8412
8436 virtual RSIAction SoftwarePosLimitActionGet() PURE_VIRTUAL;
8437
8461 virtual void SoftwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8462
8485 virtual double SoftwarePosLimitTriggerValueGet() PURE_VIRTUAL;
8486
8509 virtual void SoftwarePosLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8510
8536 virtual RSIAction EncoderFaultActionGet() PURE_VIRTUAL;
8537
8562 virtual void EncoderFaultActionSet(RSIAction action) PURE_VIRTUAL;
8563
8587 virtual RSIMotorFeedbackFault EncoderFaultTriggerGet() PURE_VIRTUAL;
8588
8610 virtual void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder) PURE_VIRTUAL;
8611
8633 virtual double EncoderFaultDurationGet() PURE_VIRTUAL;
8634
8656 virtual void EncoderFaultDurationSet(double seconds) PURE_VIRTUAL;
8657
8659 virtual RSIAction NodeFailureActionGet() PURE_VIRTUAL;
8660
8662 virtual void NodeFailureActionSet(RSIAction action) PURE_VIRTUAL;
8663
8679 virtual uint64_t AddressGet( RSIAxisAddressType addressType) PURE_VIRTUAL;
8680
8694 virtual RSIDataType AddressDataTypeGet(RSIAxisAddressType type) PURE_VIRTUAL;
8695
8696 // common limit methods
8697
8699 virtual RSIAction LimitActionGet(RSIEventType limit) PURE_VIRTUAL;
8700
8702 virtual void LimitActionSet(RSIEventType limit, RSIAction action) PURE_VIRTUAL;
8703
8705 virtual bool LimitTriggerStateGet(RSIEventType limit) PURE_VIRTUAL;
8706
8708 virtual void LimitTriggerStateSet(RSIEventType limit, bool triggerState) PURE_VIRTUAL;
8709
8711 virtual double LimitTriggerValueGet(RSIEventType limit) PURE_VIRTUAL;
8712
8714 virtual void LimitTriggerValueSet(RSIEventType limit, double triggerValue) PURE_VIRTUAL;
8715
8717 virtual double LimitDurationGet(RSIEventType limit) PURE_VIRTUAL;
8718
8720 virtual void LimitDurationSet(RSIEventType limit, double seconds) PURE_VIRTUAL;
8722
8727
8741 virtual double PositionToleranceFineGet() PURE_VIRTUAL;
8742
8756 virtual void PositionToleranceFineSet(double tolerance) PURE_VIRTUAL;
8757
8771 virtual double PositionToleranceCoarseGet() PURE_VIRTUAL;
8772
8789 virtual void PositionToleranceCoarseSet(double tolerance) PURE_VIRTUAL;
8790
8804 virtual double VelocityToleranceGet() PURE_VIRTUAL;
8805
8819 virtual void VelocityToleranceSet(double tolerance) PURE_VIRTUAL;
8820
8835 virtual double SettlingTimeGet() PURE_VIRTUAL;
8836
8851 virtual void SettlingTimeSet(double time) PURE_VIRTUAL;
8852
8869 virtual bool SettleOnStopGet() PURE_VIRTUAL;
8870
8887
8888 virtual void SettleOnStopSet(bool state) PURE_VIRTUAL;
8889
8906 virtual bool SettleOnEStopGet() PURE_VIRTUAL;
8907
8923 virtual void SettleOnEStopSet(bool state) PURE_VIRTUAL;
8924
8941 virtual bool SettleOnEStopCmdEqActGet() PURE_VIRTUAL;
8942
8958 virtual void SettleOnEStopCmdEqActSet(bool state) PURE_VIRTUAL;
8960
8965
8982 virtual RSIMotorType MotorTypeGet() PURE_VIRTUAL;
8983
8999 virtual void MotorTypeSet(RSIMotorType type) PURE_VIRTUAL;
9000
9017 virtual RSIMotorDisableAction AmpDisableActionGet() PURE_VIRTUAL;
9018
9034 virtual void AmpDisableActionSet(RSIMotorDisableAction action) PURE_VIRTUAL;
9035
9053
9054 virtual RSIMotorBrakeMode BrakeModeGet() PURE_VIRTUAL;
9055
9071 virtual void BrakeModeSet(RSIMotorBrakeMode mode) PURE_VIRTUAL;
9072
9088 virtual double BrakeApplyDelayGet() PURE_VIRTUAL;
9089
9090
9107 virtual void BrakeApplyDelaySet(double seconds) PURE_VIRTUAL;
9108
9124 virtual double BrakeReleaseDelayGet() PURE_VIRTUAL;
9125
9143 virtual void BrakeReleaseDelaySet(double seconds) PURE_VIRTUAL;
9144
9146 virtual void ClosedLoopStepperSet(bool enable) PURE_VIRTUAL;
9147
9149 virtual int32_t ClosedLoopStepperVersionGet() PURE_VIRTUAL;
9150
9152 virtual uint64_t EncoderPointerGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9153
9155 virtual void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address) PURE_VIRTUAL;
9156
9158 virtual uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9159
9160
9162 virtual void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9163
9165 virtual uint64_t FeedbackPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9166
9184 virtual void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9185
9187 virtual int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9188
9190 virtual int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9191
9213 virtual void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9214
9216 virtual const char* const EncoderRatioPrimaryGet() PURE_VIRTUAL;
9217
9219 virtual void EncoderRatioPrimarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9220
9222 virtual const char* const EncoderRatioSecondaryGet() PURE_VIRTUAL;
9223
9225 virtual void EncoderRatioSecondarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9226
9228 virtual int32_t EncoderCountGet() PURE_VIRTUAL;
9229
9232 virtual void EncoderCountSet(int32_t count) PURE_VIRTUAL;
9233
9235 virtual RSIAxisGantryType GantryTypeGet() PURE_VIRTUAL;
9236
9238 virtual void GantryTypeSet(RSIAxisGantryType type) PURE_VIRTUAL;
9239
9253 virtual RSIOperationMode OperationModeGet() PURE_VIRTUAL;
9254
9268 virtual void OperationModeSet(RSIOperationMode mode) PURE_VIRTUAL;
9269
9289 virtual int32_t MotorFaultMaskGet() PURE_VIRTUAL;
9290
9316 virtual void MotorFaultMaskSet(int32_t faultMask) PURE_VIRTUAL;
9318
9323
9345 virtual void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9350 virtual void GearingEnable(Axis* masterAxis, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9351
9370 virtual void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9371
9388 virtual void GearingDisable() PURE_VIRTUAL;
9389
9391 virtual int32_t GearingNumeratorGet() PURE_VIRTUAL;
9392
9394 virtual int32_t GearingDenominatorGet() PURE_VIRTUAL;
9395
9397 virtual bool GearingEnableGet() PURE_VIRTUAL;
9398
9416 virtual int32_t GearingMasterAxisNumberGet() PURE_VIRTUAL;
9417
9430 virtual RSIAxisMasterType GearingSourceGet() PURE_VIRTUAL;
9432
9437
9454 virtual double MotionCamMasterStartGet(Axis* master) PURE_VIRTUAL;
9455
9470 virtual void MotionCamMasterStartSet(Axis* master, double startPosition) PURE_VIRTUAL;
9471
9488 virtual int32_t MotionCamRepeatFromGet() PURE_VIRTUAL;
9489
9507 virtual void MotionCamRepeatFromSet(int32_t repeatFrom) PURE_VIRTUAL;
9508
9526 virtual void MotionCamRepeatStop() PURE_VIRTUAL;
9527
9550 virtual void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
9551
9581 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;
9582
9599
9600 virtual int32_t DriveIndexGet() PURE_VIRTUAL;
9602
9607
9620 virtual double BacklashWidthGet() PURE_VIRTUAL;
9621
9634 virtual void BacklashWidthSet(double width) PURE_VIRTUAL;
9635
9648 virtual double BacklashRateGet() PURE_VIRTUAL;
9649
9662 virtual void BacklashRateSet(double rate) PURE_VIRTUAL;
9663
9664
9675 virtual double BacklashValueGet() PURE_VIRTUAL;
9677
9682
9710 virtual RSIFilterAlgorithm FilterAlgorithmGet() PURE_VIRTUAL;
9711
9736 virtual void FilterAlgorithmSet(RSIFilterAlgorithm algorithm) PURE_VIRTUAL;
9737
9763 virtual double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9764
9787 virtual void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9788
9791 virtual double FilterCoeffGet(RSIFilterGainPIVCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9796 virtual void FilterCoeffSet(RSIFilterGainPIVCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9797
9832 virtual int32_t FilterGainTableGet() PURE_VIRTUAL;
9833
9862 virtual void FilterGainTableSet(int32_t gainTable) PURE_VIRTUAL;
9863
9880 virtual int32_t FilterGainTableSizeGet() PURE_VIRTUAL;
9881
9883 virtual double FilterOutputGet(void) PURE_VIRTUAL;
9884
9897 virtual double FilterLowPassGet() PURE_VIRTUAL;
9898
9914 virtual void FilterLowPassSet(double frequency) PURE_VIRTUAL;
9915
9934 virtual void FilterDualLoopSet(Axis* velocityAxis, RSIMotorFeedback velocityEncoder, bool enable) PURE_VIRTUAL;
9935
9936
9938 virtual bool FilterGainSchedulingGet() PURE_VIRTUAL;
9939
9940
9942 virtual void FilterGainSchedulingSet(bool enable) PURE_VIRTUAL;
9943
9945 virtual bool IsTuneable() PURE_VIRTUAL;
9946
9963 virtual void PostFilterLowPassSet(int32_t sectionNumber, double frequency) PURE_VIRTUAL;
9964
9980 virtual void PostFilterUnityGainSet(int32_t sectionNumber) PURE_VIRTUAL;
9981
10000 virtual void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne) PURE_VIRTUAL;
10001
10017 virtual void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq) PURE_VIRTUAL;
10018
10036 virtual void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth) PURE_VIRTUAL;
10037
10056 virtual void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain) PURE_VIRTUAL;
10057
10076 virtual void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq) PURE_VIRTUAL;
10077
10093 virtual void PostFilterClear(int32_t sectionNumber) PURE_VIRTUAL;
10094
10115 virtual void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo) PURE_VIRTUAL;
10116
10118 virtual const char* const PostFilterInfoGet() PURE_VIRTUAL;
10119 //virtual RSIFilterPostFilterSection PostFilterSection;
10121
10126
10146 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10147
10168 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10170
10175
10177 virtual void PostTrajectoryGearingEnableSet(bool enable) PURE_VIRTUAL;
10178
10180 virtual bool PostTrajectoryGearingEnableGet() PURE_VIRTUAL;
10181
10183 virtual void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber) PURE_VIRTUAL;
10184
10186 virtual int32_t PostTrajectoryGearingMasterAxisGet() PURE_VIRTUAL;
10187
10189 virtual void PostTrajectoryGearingMultiplierSet(double multiplier) PURE_VIRTUAL;
10190
10192 virtual double PostTrajectoryGearingMultiplierGet() PURE_VIRTUAL;
10193
10211 virtual uint32_t NetworkIndexGet(RSINetworkIndexType indexType) PURE_VIRTUAL;
10212
10231 virtual void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex) PURE_VIRTUAL;
10233
10235
10243 virtual double BacklashHysteresisLimitGet() PURE_VIRTUAL;
10244
10251 virtual void BacklashHysteresisLimitSet(double hysteresisLimit) PURE_VIRTUAL;
10252
10276 virtual bool StepperMotorLoopbackGet() PURE_VIRTUAL;
10277
10301 virtual void StepperMotorLoopbackSet(bool loopback) PURE_VIRTUAL;
10302
10311 virtual RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse) PURE_VIRTUAL;
10312
10322 virtual void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type) PURE_VIRTUAL;
10323
10330 virtual uint64_t GearingMasterAddressGet() PURE_VIRTUAL;
10331
10333};
10334
10338class RSI_API MultiAxis : public virtual RapidCodeMotion {
10339public:
10340
10344
10358 virtual void AxisAdd(Axis *axis) PURE_VIRTUAL;
10359
10362 virtual void AxesAdd(Axis* *axes, int32_t axisCount) PURE_VIRTUAL;
10363
10376 virtual void AxisRemoveAll() PURE_VIRTUAL;
10377
10381
10397 virtual Axis* AxisGet(int32_t index) PURE_VIRTUAL;
10398
10418 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10419
10440 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10441
10445
10460 virtual double VectorVelocityGet() PURE_VIRTUAL;
10461
10477 virtual void VectorVelocitySet(double velocity) PURE_VIRTUAL;
10478
10493 virtual double VectorAccelerationGet() PURE_VIRTUAL;
10494
10517 virtual void VectorAccelerationSet(double acceleration) PURE_VIRTUAL;
10518
10533 virtual double VectorDecelerationGet() PURE_VIRTUAL;
10534
10557 virtual void VectorDecelerationSet(double deceleration) PURE_VIRTUAL;
10558
10573 virtual double VectorJerkPercentGet() PURE_VIRTUAL;
10574
10597 virtual void VectorJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
10598
10622 virtual void MoveVector(const double* const position) PURE_VIRTUAL;
10623
10626 virtual void MoveVectorRelative(const double* const relativePosition) PURE_VIRTUAL;
10627
10631
10651
10652 virtual double PathTimeSliceGet() PURE_VIRTUAL;
10653
10674
10675 virtual void PathTimeSliceSet(double seconds) PURE_VIRTUAL;
10676
10701 virtual void PathRatioSet(const double* const ratio) PURE_VIRTUAL;
10702
10705 virtual double PathRatioGet(int32_t index) PURE_VIRTUAL;
10706
10723 virtual void PathBlendSet(bool blend) PURE_VIRTUAL;
10724
10733
10734 virtual void PathPlanTypeSet(RSIPathPlanType type) PURE_VIRTUAL;
10735
10744
10745 virtual RSIPathPlanType PathPlanTypeGet() PURE_VIRTUAL;
10746
10765 virtual void PathListStart(const double* const startPosition) PURE_VIRTUAL;
10766
10787 virtual void PathLineAdd(const double* const position) PURE_VIRTUAL;
10788
10808 virtual void PathArcAdd(const double* const center, double angle) PURE_VIRTUAL;
10809
10828 virtual void PathListEnd() PURE_VIRTUAL;
10829
10846 virtual void PathMotionStart() PURE_VIRTUAL;
10847
10851
10869 virtual void MoveTrapezoidal(const double* const position, const double* const vel, const double* const accel, const double* const decel) PURE_VIRTUAL;
10870
10873 virtual void MoveTrapezoidal(const double* const position) PURE_VIRTUAL;
10874
10901 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;
10902
10905 virtual void MoveSCurve(const double* const position) PURE_VIRTUAL;
10906
10921 virtual void MoveVelocity(const double* const velocity, const double* const accel) PURE_VIRTUAL;
10922
10926 virtual void MoveVelocity(const double* const velocity) PURE_VIRTUAL;
10927
10946 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;
10947
10950 virtual void MoveRelative(const double* const relativePosition) PURE_VIRTUAL;
10951
10967 virtual void MoveVelocitySCurve(const double* const velocity, const double* const accel, const double* const jerkPct) PURE_VIRTUAL;
10968
10985 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
10986
11004 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
11005
11007 virtual int32_t AxisMapCountGet() PURE_VIRTUAL;
11008
11022 virtual uint64_t AddressGet(RSIMultiAxisAddressType addressType) PURE_VIRTUAL;
11023
11037 virtual RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type) PURE_VIRTUAL;
11038
11048 virtual bool AmpEnableGet() PURE_VIRTUAL;
11049
11050
11051};
11052
11058class RSI_API IOPoint : public virtual RapidCodeObject {
11059public:
11064
11081 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorDedicatedIn motorDedicatedInNumber);
11082
11099 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11100
11116 static IOPoint* CreateDigitalInput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11117 // use NetworkNode*
11118 static IOPoint* CreateDigitalInput(IO* io, int32_t bitNumber);
11119
11130 static IOPoint* CreateDigitalInput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11131
11145 static IOPoint* CreateDigitalInput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11146
11164 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorDedicatedOut motorDedicatedOutNumber);
11165
11182 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11183
11199 static IOPoint* CreateDigitalOutput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11200 // use NetworkNode*
11201 static IOPoint* CreateDigitalOutput(IO* io, int32_t bitNumber);
11202
11203
11216 static IOPoint* CreateDigitalOutput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11217
11231 static IOPoint* CreateDigitalOutput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11232
11247 static IOPoint* CreateAnalogInput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11248 // use RapidCodeNetworkNode*
11249 static IOPoint* CreateAnalogInput(IO* io, int32_t analogChannel);
11250
11265 static IOPoint* CreateAnalogOutput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11266 // use RapidCodeNetworkNode*
11267 static IOPoint* CreateAnalogOutput(IO* io, int32_t analogChannel);
11268
11270
11274
11277 virtual uint64_t AddressGet() PURE_VIRTUAL;
11278
11281 virtual int32_t MaskGet() PURE_VIRTUAL;
11282
11285 virtual bool IsDigital() PURE_VIRTUAL;
11286
11287
11290 virtual bool IsOutput() PURE_VIRTUAL;
11291
11295
11299 virtual bool Get() PURE_VIRTUAL;
11300
11307 virtual void Set(bool state) PURE_VIRTUAL;
11308
11312
11316 virtual double ValueGet() PURE_VIRTUAL;
11317
11321 virtual void ValueSet(double valueDouble) PURE_VIRTUAL;
11322};
11323
11327class RSI_API RTOS {
11328
11329public:
11330#if defined(_WIN32)
11335
11339
11344 static INtimeStatus INtimeStatusGet(const char* const nodeName);
11345
11349
11354 static INtimeStatus INtimeStart(const char* const nodeName);
11355
11359
11364 static INtimeStatus INtimeStop(const char* const nodeName);
11365
11369
11374 static INtimeStatus INtimeRestart(const char* const nodeName);
11375
11378 static const char* const INtimeCatalogRMPGet();
11379
11382 static const char* const INtimeCatalogRMPNetworkGet();
11383
11386 static uint32_t INtimeNodeCountGet();
11387
11391 static const char* const INtimeNodeNameGet(uint32_t nodeNumber);
11392
11396 static bool INtimeNodeIsLocal(uint32_t nodeNumber);
11398#endif // _WIN32
11399};
11400
11402class RSI_API Trace
11403{
11404public:
11409
11422 static void MaskSet(RSITrace mask);
11423
11439 static void MaskOnSet(RSITrace maskOn);
11440
11441
11461 static bool MaskOnGet(RSITrace maskOn);
11462
11478 static void MaskOffSet(RSITrace maskOff);
11479
11492 static void MaskClear();
11493
11508 static int32_t FileSet(const char* const fileName);
11509
11522 static void FileClose();
11523
11538 static void InjectMessage(RSITrace traceLevel, const char* const message);
11539
11541};
11542
11544
11546
11550class RSI_API IO : public virtual RapidCodeObject {
11551public:
11552
11553 friend class MotionController;
11554
11559
11561 RapidCodeNetworkNode* NetworkNode;
11564
11566
11571
11572
11605 virtual bool IOExists() PURE_VIRTUAL;
11606
11623 virtual int32_t NumberGet() PURE_VIRTUAL;
11625
11630
11631
11632
11662 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
11663
11696 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
11697
11728 virtual void DigitalOutSet(int32_t digitalOutNumber, bool outValue) PURE_VIRTUAL;
11729
11752 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
11753
11785 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
11786
11818 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
11820
11830 virtual const char* const UserLabelGet() PURE_VIRTUAL;
11831
11838 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
11839};
11840
11841#if defined(__cplusplus)
11842}
11843#endif
11844
11845template<typename ContainerClass>
11846class RSI_API RapidVectorIterator
11847{
11848public:
11850 typedef typename ContainerClass::ValueType ValueType;
11851
11853 typedef typename ContainerClass::PointerType PointerType;
11854
11857 ValueType& operator*();
11858
11861 const ValueType& operator*() const;
11862
11865 RapidVectorIterator& operator++();
11866
11869 RapidVectorIterator operator++(int);
11870
11873 bool operator==(const RapidVectorIterator&) const;
11874
11877 bool operator!=(const RapidVectorIterator&) const;
11878
11880 RapidVectorIterator(PointerType pointerArgument, PointerType startArgument, const size_t containerSize);
11881
11883 RapidVectorIterator(const RapidVectorIterator&) = default;
11884
11886 RapidVectorIterator& operator=(const RapidVectorIterator&) = default;
11887
11889 RapidVectorIterator(RapidVectorIterator&&) noexcept = default;
11890
11892 RapidVectorIterator& operator=(RapidVectorIterator&&) noexcept = default;
11893private:
11894 PointerType pointer;
11895 PointerType start, end;
11896 void VerifyPointer() const;
11897};
11898
11900template<typename Type>
11902
11905
11914template<typename Type>
11915class RSI_API RapidVector
11916{
11917private:
11918 // The pointer to the implementation.
11920public:
11924 Type& operator[](const size_t index);
11925
11929 const Type& operator[](const size_t index) const;
11930
11934 Type& At(const size_t index);
11935
11939 const Type& At(const size_t index) const;
11940
11943 void PushBack(const Type& element);
11944
11947 const size_t Size() const;
11948
11950 void Clear();
11951
11953 void PopBack();
11954
11957 Type& Front();
11958
11961 const Type& Front() const;
11962
11965 Type& Back();
11966
11969 const Type& Back() const;
11970
11973
11975 RapidVector(const size_t size);
11976
11979
11982
11985
11988
11990 RapidVector(RapidVector&& other) noexcept;
11991
11994
11995 typedef Type* PointerType;
11996 typedef Type ValueType;
11997
11999 typedef RapidVectorIterator<RapidVector> Iterator;
12000
12003 Iterator begin() noexcept;
12004
12007 Iterator begin() const noexcept;
12008
12012 Iterator end() const noexcept;
12013};
12014
12016
12017} // namespace RapidCode
12018
12019} // namespace RSI
12020
12021#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:5673
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:5643
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:11550
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition rsi.h:11561
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:11563
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:11058
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:796
MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber)
Get a MathBlock configuration.
RapidCodeOS * OS
Provides access to operating system (Windows) features.
Definition rsi.h:3792
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:10338
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:11327
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:590
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:4168
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:4178
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:493
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:180
const size_t Size() const
Returns the number of elements in the vector.
const Type & operator[](const size_t index) const
Returns a const reference to the element at the location specified by the index.
const Type & Back() const
Returns a const reference to the last element in the vector.
Iterator begin() noexcept
Returns a RapidVectorIterator to the first element of the vector. The naming convention follows STL c...
Type & Front()
Returns a reference to the first element in the vector.
const Type & Front() const
Returns a const reference to the first element in the vector.
const Type & At(const size_t index) const
Returns a const reference to the element at the location specified by the index.
void PushBack(const Type &element)
Appends the given element to the end of the vector.
Type & Back()
Returns a reference to the last element in the vector.
Type & operator[](const size_t index)
Returns a reference to the element at the location specified by the index.
Type & At(const size_t index)
Returns a reference to the element at the location specified by the index.
A wrapper class for the C++ STL vector class that aims to maintain application binary interface....
Definition rsi.h:11916
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:11999
~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:11901
RsiError(const RsiError &copyFrom)
Copy constructor for RsiError.
Definition rsi.h:146
Represents the error details thrown as an exception by all RapidCode classes. This class contains an ...
Definition rsi.h:107
char fileName[RSI_ERROR_TEXT_SIZE]
source file name
Definition rsi.h:125
bool isWarning
Whether the error is or is not a warning.
Definition rsi.h:116
static constexpr uint32_t RSI_ERROR_TEXT_SIZE
Error message text.
Definition rsi.h:118
const char * what() const noexcept
Returns a null terminated character sequence that may be used to identify the exception.
Definition rsi.h:169
char shortText[RSI_ERROR_TEXT_SIZE]
Error short text.
Definition rsi.h:123
int32_t lineNumber
Source code line number.
Definition rsi.h:112
char functionName[RSI_ERROR_TEXT_SIZE]
Function name of the raised the error.
Definition rsi.h:121
RSIErrorMessage number
Error number.
Definition rsi.h:110
int32_t objectIndex
Object index (0-based index of the object that has the error).
Definition rsi.h:114
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:11403
RSIFilterAlgorithm
Filter algorithms.
Definition rsienums.h:1117
RSINetworkEniResult
NetworkEniGenerate return values.
Definition rsienums.h:1382
RSIPDOType
Compensator output types.
Definition rsienums.h:1356
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1362
RSICompensatorOutputType
Compensator output types.
Definition rsienums.h:1350
RSINetworkStartMode
Network start modes.
Definition rsienums.h:587
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
Definition rsienums.h:1104
RSITrace
Trace masks.
Definition rsienums.h:539
RSIMotorStepperPulse
Pulse A or B.
Definition rsienums.h:1207
RSIAxisGantryType
How to combine Axis Feedback Positions.
Definition rsienums.h:1097
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:1277
RSIEventType
Event Types or Status Bits.
Definition rsienums.h:926
RSIMotionType
PT and PVT streaming motion types.
Definition rsienums.h:998
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:1223
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1073
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:1213
RSIMotorType
Motor Type.
Definition rsienums.h:1269
RSINetworkStartError
Network start errors.
Definition rsienums.h:593
RSIMotorGeneralIo
Motor I/O bit numbers.
Definition rsienums.h:877
RSIMotionAttrMask
Attribute masks for motion. You cannot mix RSIMotionAttrMaskDELAY and RSIMotionAttrMaskAPPEND.
Definition rsienums.h:1018
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:496
RSIFilterGainPIDCoeff
PID gain coefficients.
Definition rsienums.h:1126
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:628
RSINetworkOutputAddressType
Network output address types.
Definition rsienums.h:1343
INtimeStatus
INtime status values.
Definition rsienums.h:1315
RSIMotionHoldType
Types for MotionHold attribute.
Definition rsienums.h:1053
RSIControllerType
Controller type.
Definition rsienums.h:283
RSIMotorFaultMask
Mask values for several motor faults.
Definition rsienums.h:1257
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:396
RSIMotorBrakeMode
Brake modes.
Definition rsienums.h:1283
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:1186
RSIAxisPositionInput
Feedback Positions for each Axis.
Definition rsienums.h:1091
RSINodeType
Valid Node types.
Definition rsienums.h:671
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:974
RSIMotorDedicatedIn
Dedicated Input bits per motor.
Definition rsienums.h:849
RSIMotorFeedback
Encoders per motor.
Definition rsienums.h:1111
RSIMotorDedicatedOut
Dedicated Output bits per motor.
Definition rsienums.h:871
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1289
RSIPathPlanType
Path motion planning types.
Definition rsienums.h:1012
RSINetworkTechnologyType
Network technology type.
Definition rsienums.h:1310
RSINetworkIndexType
Network index types for Axis.
Definition rsienums.h:1323
RSINetworkStartupMethod
Network startup methods.
Definition rsienums.h:579
RSIFilterGainPIVCoeff
PIV gain coefficients.
Definition rsienums.h:1147
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1176
int32_t ControllerIndex
The index of the controller to create.
Definition rsi.h:947
int32_t CpuAffinity
[Linux] Indicate the CPU core on which the RMP and RMPNetwork processes run.
Definition rsi.h:1005
int32_t RmpThreadPriorityMax
[Linux] The maximum thread priority. All threads of the RMP and RMPNetwork will be based off of this....
Definition rsi.h:1017
CreationParameters()
Instantiate with default values and all memory zeroed out.
Definition rsi.h:923
CreationParameters for MotionController::Create.
Definition rsi.h:857
RSIDataType ProcessDataType
Data type for processing.
Definition rsi.h:3770
MathBlock configuration structure.
Definition rsi.h:3763
RSIDataType OutputDataType
Data type for Output. (optional)
Definition rsi.h:3768
uint64_t OutputAddress
Host memory address for Output. The MathBlock will write its result to this address....
Definition rsi.h:3769
uint64_t InputAddress0
Host memory address for Input0. Represents the left-hand side operand in math operations.
Definition rsi.h:3764
RSIDataType InputDataType0
Data type for Input0. This is the data type of the left-hand side operand in math operations.
Definition rsi.h:3765
uint64_t InputAddress1
Host memory address for Input1. Represents the right-hand side operand in math operations.
Definition rsi.h:3766
RSIDataType InputDataType1
Data type for Input1. This is the data type of the right-hand side operand in math operations.
Definition rsi.h:3767
RSIMathBlockOperation Operation
Math operation to be performed. (+, -, *, /, etc) use RSIMathBlockOperationNONE to disable a MathBloc...
Definition rsi.h:3771
Union representing a generic RMP firmware value with multiple data types, stored in 64-bits.
Definition rsi.h:464
float Float
Single precision (32-bit) floating-point.
Definition rsi.h:472
int64_t Int64
64-bit signed integer.
Definition rsi.h:474
uint8_t UInt8
8-bit unsigned integer.
Definition rsi.h:467
int8_t Int8
8-bit signed integer.
Definition rsi.h:466
double Double
Double precision (64-bit) floating-point.
Definition rsi.h:473
int32_t Int32
32-bit signed integer.
Definition rsi.h:470
uint16_t UInt16
16-bit unsigned integer.
Definition rsi.h:469
int16_t Int16
16-bit signed integer.
Definition rsi.h:468
bool Bool
Boolean value.
Definition rsi.h:465
uint32_t UInt32
32-bit unsigned integer.
Definition rsi.h:471
uint64_t UInt64
64-bit unsigned integer.
Definition rsi.h:475