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 uint32_t PathLengthMaximum = 256;
868
874 static inline constexpr int32_t CpuAffinityDefault = -1;
875
880 static inline constexpr int32_t RmpThreadPriorityMaximumDefault = 45;
881
886 static inline constexpr int32_t RmpThreadPriorityRange = 8;
887
892 static inline constexpr int32_t RmpThreadPriorityMinimum = RmpThreadPriorityRange + 1;
893
898 static inline constexpr int32_t RmpThreadPriorityMaximum = 99;
899
904 static inline constexpr int32_t RmpThreadPriorityNoRealTime = 0;
906
907
912
918 {
919 std::memset(RmpPath, '\0', PathLengthMaximum);
920 std::memset(NicPrimary, '\0', PathLengthMaximum);
921 std::memset(NicSecondary, '\0', PathLengthMaximum);
922#if defined(_WIN32)
923 std::memset(NodeName, '\0', PathLengthMaximum);
924#elif defined(__linux__)
925 CpuAffinity = CpuAffinityDefault;
926 RmpThreadPriorityMax = RmpThreadPriorityMaximumDefault;
927#endif
928 }
930
935
940 char RmpPath[PathLengthMaximum];
941
946 char NicPrimary[PathLengthMaximum];
947
952 char NicSecondary[PathLengthMaximum];
954
955 // Control which platform specific parameters are available
956#if defined(_WIN32) && defined(__linux__)
957 static_assert(false, "_WIN32 and __linux__ defined. Double check preprocessor definitions");
958#elif !defined(_WIN32) && !defined(__linux__) && !defined(DOXYGEN)
959 static_assert(false, "Neither _WIN32 nor __linux__ are defined AND this is not a documentation build. Double check preprocessor definitions");
960#endif //defined(_WIN32) && defined(__linux__)
961#if defined(_WIN32) || defined(DOXYGEN)
962
967
972 char NodeName[PathLengthMaximum];
973
975#endif //defined(_WIN32)
976#if defined(__linux__) || defined(DOXYGEN)
977
982
992 int32_t CpuAffinity;
993
1005
1007# endif // defined(__linux__)
1008 };
1009
1020 static MotionController* Create(CreationParameters* creationParameters);
1021
1022#if defined(_WIN32)
1050
1055 static MotionController* CreateFromSoftware(const char* const RtaPath);
1056
1062 static MotionController* CreateFromSoftware(const char* const RtaPath, const char* const NodeName);
1063
1091#endif // defined(_WIN32)
1092
1097 static MotionController* CreateFromFile(const char* const fileName);
1099
1104
1123 virtual Axis* AxisGet(int32_t axisNumber) PURE_VIRTUAL;
1124
1141 virtual MultiAxis* MultiAxisGet(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1142
1156 virtual MultiAxis* LoadExistingMultiAxis(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1157
1172 virtual RapidCodeNetworkNode* NetworkNodeGet(int32_t nodeNumber) PURE_VIRTUAL;
1173
1189 virtual IO* IOGet(int32_t nodeNumber) PURE_VIRTUAL;
1190
1213 virtual void Delete(void) PURE_VIRTUAL;
1215
1220
1230 virtual void Reset() PURE_VIRTUAL;
1231
1236 virtual void Refresh() PURE_VIRTUAL;
1237
1245 virtual void Shutdown() PURE_VIRTUAL;
1246
1255 virtual void MemoryToFile(const char* const fileName) PURE_VIRTUAL;
1257
1262
1285 virtual int32_t SampleCounterGet() PURE_VIRTUAL;
1286
1301 virtual double ProcessorUsageGet() PURE_VIRTUAL;
1302
1313 virtual void ProcessorUsageClear() PURE_VIRTUAL;
1314
1318 virtual uint32_t FirmwareTimingDeltaGet() PURE_VIRTUAL;
1319
1320
1322
1327
1328
1329
1352 virtual uint32_t SerialNumberGet(void) PURE_VIRTUAL;
1353
1372 virtual void SampleWait(uint32_t samples) PURE_VIRTUAL;
1373
1374
1376 virtual RSIControllerType ControllerTypeGet() PURE_VIRTUAL;
1377
1379 virtual const char* const ServerNameGet() PURE_VIRTUAL;
1380
1382 virtual int32_t ServerPortGet() PURE_VIRTUAL;
1383
1384
1385
1386
1408 virtual RSIProcessorType ProcessorTypeGet() PURE_VIRTUAL;
1409
1414 virtual void SampleRateSet(double sampleRate) PURE_VIRTUAL;
1415
1418 virtual double SampleRateGet() PURE_VIRTUAL;
1419
1437 virtual int32_t AxisCountGet() PURE_VIRTUAL;
1438
1457 virtual void AxisCountSet(int32_t axisCount) PURE_VIRTUAL;
1458
1461 virtual void AxisCountSet(int32_t axisCount, bool setMotorFilterSupervisor) PURE_VIRTUAL;
1462
1465 virtual bool IsLicensed() PURE_VIRTUAL;
1466
1468 virtual int32_t PackageVariantGet() PURE_VIRTUAL;
1469
1471 virtual int32_t AxisLicenseCountGet() PURE_VIRTUAL;
1472
1474 virtual bool MechaWareLicenseGet() PURE_VIRTUAL;
1475
1477 virtual int32_t UnsupportedOptionSet(int32_t option) PURE_VIRTUAL;
1478
1503 virtual int32_t MotionCountGet() PURE_VIRTUAL;
1504
1521 virtual void MotionCountSet(int32_t motionCount) PURE_VIRTUAL;
1522
1548 virtual int32_t UserVersionGet() PURE_VIRTUAL;
1549
1573 virtual void UserVersionSet(int32_t version) PURE_VIRTUAL;
1574
1577 virtual int32_t ExternalMemorySizeGet() PURE_VIRTUAL;
1578
1595 virtual void AxisFrameBufferSizeSet(int32_t axisNumber, int32_t frameBufferSize) PURE_VIRTUAL;
1596
1611 virtual int32_t AxisFrameBufferSizeGet(int32_t axisNumber) PURE_VIRTUAL;
1613
1618
1636 virtual const char* const FirmwareVersionGet() PURE_VIRTUAL;
1637
1655 virtual int32_t FirmwareOptionGet() PURE_VIRTUAL;
1656
1658 virtual bool HasMechaWare() PURE_VIRTUAL;
1659
1683 virtual int32_t MemoryGet(uint64_t address) PURE_VIRTUAL;
1684
1685
1703 virtual double MemoryDoubleGet(uint64_t address) PURE_VIRTUAL;
1704
1730 virtual void MemoryBlockGet(uint64_t address, void* dataStart, int32_t size) PURE_VIRTUAL;
1731
1746 virtual void MemorySet(uint64_t address, int32_t data) PURE_VIRTUAL;
1747
1748
1749
1766 virtual void MemoryDoubleSet(uint64_t address, double dataDouble) PURE_VIRTUAL;
1767
1793 virtual void MemoryBlockSet(uint64_t address, const void* const dataStart, int32_t size) PURE_VIRTUAL;
1794
1813 virtual uint32_t FirmwareAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1814
1815
1816
1817
1840 virtual uint64_t HostAddressGet(uint32_t firmwareAddress) PURE_VIRTUAL;
1841
1842
1843
1866 virtual int32_t BackgroundCycleCounterGet() PURE_VIRTUAL;
1867
1868
1869
1870
1879 virtual uint64_t AddressFromStringGet(const char* const addressName) PURE_VIRTUAL;
1880
1881
1882
1891 virtual const char* const StringFromAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1892
1907 virtual uint64_t AddressGet(RSIControllerAddressType type) PURE_VIRTUAL;
1908
1926 virtual uint64_t AddressGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1927
1928
1941 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type) PURE_VIRTUAL;
1942
1947 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1948
1962 virtual bool MotionHoldGateGet(int32_t gateNumber) PURE_VIRTUAL;
1963
1964
1965
1981 virtual void MotionHoldGateSet(int32_t gateNumber, bool hold) PURE_VIRTUAL;
1983
1988
1990 virtual RSINetworkTechnologyType NetworkTechnologyTypeGet() PURE_VIRTUAL;
1991
1993 virtual RSINetworkType NetworkTypeGet() PURE_VIRTUAL;
1994
1997 virtual int32_t NetworkNodeCountGet() PURE_VIRTUAL;
1998
2000 virtual void NetworkStart() PURE_VIRTUAL;
2001
2010 virtual void NetworkStart(RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2011
2015 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2016
2021 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
2022
2024 virtual void NetworkShutdown() PURE_VIRTUAL;
2025
2028 virtual RSINetworkState NetworkStateGet() PURE_VIRTUAL;
2029
2031 virtual int32_t NetworkCounterGet() PURE_VIRTUAL;
2032
2034 virtual int32_t NetworkInputCountGet() PURE_VIRTUAL;
2035
2037 virtual int32_t NetworkInputBitSizeGet(int32_t index) PURE_VIRTUAL;
2038
2042 virtual const char* const NetworkInputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2043
2046 virtual int32_t NetworkInputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2047
2050 virtual const char* const NetworkInputNameGet(int32_t index) PURE_VIRTUAL;
2051
2055 virtual uint64_t NetworkInputValueGet(int32_t index) PURE_VIRTUAL;
2056
2057
2058
2062 virtual uint64_t NetworkInputAddressGet(int32_t index) PURE_VIRTUAL;
2063
2067 virtual int32_t NetworkOutputCountGet() PURE_VIRTUAL;
2068
2071 virtual int32_t NetworkOutputBitSizeGet(int32_t index) PURE_VIRTUAL;
2072
2073
2077 virtual const char* const NetworkOutputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2078
2080 virtual int32_t NetworkOutputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2081
2083 virtual const char* const NetworkOutputNameGet(int32_t index) PURE_VIRTUAL;
2084
2100 virtual uint64_t NetworkOutputValueGet(int32_t index) PURE_VIRTUAL;
2101
2118 virtual void NetworkOutputValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2119
2138 virtual uint64_t NetworkOutputAddressGet(int32_t index) PURE_VIRTUAL;
2139
2144 virtual uint64_t NetworkOutputAddressGet(int32_t index, RSINetworkOutputAddressType type) PURE_VIRTUAL;
2145
2156 virtual uint64_t NetworkOutputIntendedValueGet(int32_t index) PURE_VIRTUAL;
2157
2169 virtual void NetworkOutputOverrideSet(int32_t index, bool outputOverride) PURE_VIRTUAL;
2170
2181 virtual bool NetworkOutputOverrideGet(int32_t index) PURE_VIRTUAL;
2182
2183
2184
2185
2202 virtual void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2203
2216 virtual uint64_t NetworkOutputOverrideValueGet(int32_t index) PURE_VIRTUAL;
2217
2232 virtual uint64_t NetworkOutputSentValueGet(int32_t index) PURE_VIRTUAL;
2233
2237 virtual int32_t NetworkLogMessageCountGet() PURE_VIRTUAL;
2238
2240 virtual RSINetworkStartError LastNetworkStartErrorGet() PURE_VIRTUAL;
2241
2246 virtual const char* const NetworkLogMessageGet(int32_t messageIndex) PURE_VIRTUAL;
2247
2249 virtual void NetworkTimingEnableSet(bool enable) PURE_VIRTUAL;
2250
2252 virtual void NetworkTimingClear() PURE_VIRTUAL;
2253
2255 virtual uint32_t NetworkTimingDeltaGet() PURE_VIRTUAL;
2256
2258 virtual uint32_t NetworkTimingMinGet() PURE_VIRTUAL;
2259
2261 virtual uint32_t NetworkTimingMaxGet() PURE_VIRTUAL;
2262
2264 virtual void NetworkTimingThresholdLowSet(uint32_t microseconds) PURE_VIRTUAL;
2265
2267 virtual void NetworkTimingThresholdHighSet(uint32_t microseconds) PURE_VIRTUAL;
2268
2270 virtual uint32_t NetworkTimingThresholdLowCountGet() PURE_VIRTUAL;
2271
2273 virtual uint32_t NetworkTimingThresholdHighCountGet() PURE_VIRTUAL;
2274
2276 virtual bool NetworkSynchronizedGet() PURE_VIRTUAL;
2278
2283
2300 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
2301
2320 virtual void InterruptWake() PURE_VIRTUAL;
2321
2349 virtual void SyncInterruptEnableSet(bool enable) PURE_VIRTUAL;
2350
2376 virtual void SyncInterruptPeriodSet(uint32_t samples) PURE_VIRTUAL;
2377
2397 virtual int32_t SyncInterruptWait() PURE_VIRTUAL;
2398
2400 virtual bool ServiceThreadStateGet() PURE_VIRTUAL;
2401
2412 virtual int32_t SyncInterruptHostProcessTimeGet() PURE_VIRTUAL;
2413
2415 virtual int32_t SyncInterruptHostProcessFlagGet() PURE_VIRTUAL;
2416
2429 virtual void SyncInterruptHostProcessFlagSet(bool hostProcessFlag) PURE_VIRTUAL;
2430
2441 virtual bool SyncInterruptHostProcessStatusBitGet() PURE_VIRTUAL;
2442
2452 virtual void SyncInterruptHostProcessStatusClear() PURE_VIRTUAL;
2453
2479
2480 virtual void ServiceThreadEnableSet(bool enable) PURE_VIRTUAL;
2482
2487
2488
2489
2508 virtual int32_t RecorderCountGet() PURE_VIRTUAL;
2509
2527 virtual void RecorderCountSet(int32_t recorderCount) PURE_VIRTUAL;
2528
2545 virtual void RecorderPeriodSet(uint32_t samples) PURE_VIRTUAL;
2546
2548 virtual void RecorderPeriodSet(int32_t recorderNumber, uint32_t samples) PURE_VIRTUAL;
2549
2566 virtual void RecorderCircularBufferSet(bool enable) PURE_VIRTUAL;
2567
2569 virtual void RecorderCircularBufferSet(int32_t recorderNumber, bool enable) PURE_VIRTUAL;
2570
2586 virtual void RecorderDataCountSet(int32_t count) PURE_VIRTUAL;
2587
2589 virtual void RecorderDataCountSet(int32_t recorderNumber,int32_t count) PURE_VIRTUAL;
2590
2607 virtual void RecorderDataAddressSet(int32_t index, uint64_t address) PURE_VIRTUAL;
2608
2610 virtual void RecorderDataAddressSet(int32_t recorderNumber,int32_t index, uint64_t address) PURE_VIRTUAL;
2611
2612
2618 virtual void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t* const addresses, int32_t addressCount) PURE_VIRTUAL;
2619
2633
2639 virtual void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2640
2647 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2648
2654 virtual void RecorderConfigureToTriggerOnMotion(MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2655
2662 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2663
2670 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, int32_t motionNumber, bool triggerOnMotion) PURE_VIRTUAL;
2671
2680 virtual bool RecorderTriggerOnMotionGet(int32_t recorderNumber) PURE_VIRTUAL;
2681
2697 virtual bool RecorderEnabledGet() PURE_VIRTUAL;
2698
2700 virtual bool RecorderEnabledGet(int32_t recorderNumber ) PURE_VIRTUAL;
2701
2718 virtual int32_t RecorderRecordCountGet() PURE_VIRTUAL;
2719
2721 virtual int32_t RecorderRecordCountGet(int32_t recorderNumber ) PURE_VIRTUAL;
2722
2736 virtual int32_t RecorderRecordMaxCountGet() PURE_VIRTUAL;
2737
2739 virtual int32_t RecorderRecordMaxCountGet(int32_t recorderNumber) PURE_VIRTUAL;
2740
2755 virtual void RecorderStart() PURE_VIRTUAL;
2756
2758 virtual void RecorderStart(int32_t recorderNumber) PURE_VIRTUAL;
2759
2776 virtual void RecorderStop() PURE_VIRTUAL;
2777
2779 virtual void RecorderStop(int32_t recorderNumber) PURE_VIRTUAL;
2780
2781
2782
2798 virtual const int32_t* const RecorderRecordDataGet() PURE_VIRTUAL;
2799
2801 virtual const int32_t* const RecorderRecordDataGet(int32_t recorderNumber) PURE_VIRTUAL;
2802
2817 virtual void RecorderRecordDataRetrieve() PURE_VIRTUAL;
2818
2838 virtual int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount) PURE_VIRTUAL;
2839
2841 virtual void RecorderRecordDataRetrieve(int32_t recorderNumber) PURE_VIRTUAL;
2842
2859 virtual int32_t RecorderRecordDataValueGet(int32_t index) PURE_VIRTUAL;
2860
2862 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2863
2882 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
2883
2885 virtual double RecorderRecordDataDoubleGet(int32_t index) PURE_VIRTUAL;
2886
2888 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2889
2908 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
2909
2927 virtual void RecorderBufferHighCountSet(int32_t bufferHighCount) PURE_VIRTUAL;
2928
2930 virtual void RecorderBufferHighCountSet(int32_t recorderNumber, int32_t bufferHighCount) PURE_VIRTUAL;
2931
2946 virtual void RecorderReset() PURE_VIRTUAL;
2947
2949 virtual void RecorderReset(int32_t recorderNumber) PURE_VIRTUAL;
2950
2962 virtual int32_t RecorderBufferSizeGet(int32_t recorderNumber) PURE_VIRTUAL;
2963
2980 virtual void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize) PURE_VIRTUAL;
2982
2987
2988
2989
2990
3015 virtual int32_t CompensatorCountGet() PURE_VIRTUAL;
3016
3036 virtual void CompensatorCountSet(int32_t compensatorCount) PURE_VIRTUAL;
3037
3048 virtual int32_t CompensatorPointCountGet(int32_t compensatorNumber) PURE_VIRTUAL;
3049
3069 virtual void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount) PURE_VIRTUAL;
3070
3084 virtual int32_t CompensatorDimensionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3085
3111 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;
3112
3142 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;
3143
3164 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;
3165
3186 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;
3187
3199 virtual void CompensatorTableSet(int32_t compensatorNumber, const double* const table) PURE_VIRTUAL;
3200
3212 virtual void CompensatorTableGet(int32_t compensatorNumber, double* table) PURE_VIRTUAL;
3213
3233 virtual double CompensatorPositionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3234
3235
3236
3237
3238
3239
3251
3252 virtual void CompensatorTableClear(int32_t compensatorNumber) PURE_VIRTUAL;
3253
3262 virtual void CompensatorDisable(int32_t compensatorNumber) PURE_VIRTUAL;
3263
3268 virtual void CompensatorDisable(int32_t compensatorNumber, bool force) PURE_VIRTUAL;
3269
3276 virtual void CompensatorEnable(int32_t compensatorNumber) PURE_VIRTUAL;
3277
3279
3284
3304 virtual int32_t UserLimitCountGet() PURE_VIRTUAL;
3305
3325 virtual void UserLimitCountSet(int32_t userLimitCount) PURE_VIRTUAL;
3326
3346 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot) PURE_VIRTUAL;
3347
3350 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration) PURE_VIRTUAL;
3351
3353 virtual RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number) PURE_VIRTUAL;
3354
3356 virtual RSIAction UserLimitActionGet(int32_t number) PURE_VIRTUAL;
3357
3359 virtual int32_t UserLimitAxisNumberGet(int32_t number) PURE_VIRTUAL;
3360
3362 virtual double UserLimitDurationGet(int32_t number) PURE_VIRTUAL;
3363
3365 virtual bool UserLimitSingleShotGet(int32_t number) PURE_VIRTUAL;
3366
3391 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32) PURE_VIRTUAL;
3392
3414 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfDouble, double limitValueDouble) PURE_VIRTUAL;
3415
3417 virtual RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3418
3420 virtual RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3421
3423 virtual uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3424
3426 virtual uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3427
3429 virtual int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3430
3432 virtual double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3433
3460 virtual void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3461
3464 virtual void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3465
3468 virtual void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3469
3472 virtual void UserLimitOutputSet(int32_t number, double limitValueDouble, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3473
3489 virtual void UserLimitOutputSet(int32_t number, RSIDataType dataType, uint64_t inputPtr, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3490
3492 virtual bool UserLimitOutputEnableGet(int32_t number) PURE_VIRTUAL;
3493
3495 virtual RSIDataType UserLimitOutputDataTypeGet(int32_t number) PURE_VIRTUAL;
3496
3498 virtual uint64_t UserLimitOutputAddressGet(int32_t number) PURE_VIRTUAL;
3499
3501 virtual uint64_t UserLimitOutputInputAddressGet(int32_t number) PURE_VIRTUAL;
3502
3504 virtual uint32_t UserLimitOutputAndMaskGet(int32_t number) PURE_VIRTUAL;
3505
3507 virtual uint32_t UserLimitOutputOrMaskGet(int32_t number) PURE_VIRTUAL;
3508
3510 virtual int32_t UserLimitOutputValueGet(int32_t number) PURE_VIRTUAL;
3511
3513 virtual uint64_t UserLimitOutputAndMask64Get(int32_t number) PURE_VIRTUAL;
3514
3516 virtual uint64_t UserLimitOutputOrMask64Get(int32_t number) PURE_VIRTUAL;
3517
3518
3520 virtual double UserLimitOutputDoubleGet(int32_t number) PURE_VIRTUAL;
3521
3542 virtual bool UserLimitStateGet(int32_t number) PURE_VIRTUAL;
3543
3564 virtual bool UserLimitEnableGet(int32_t number) PURE_VIRTUAL;
3565
3567 virtual void UserLimitEnableSet(int32_t number, bool enable) PURE_VIRTUAL;
3568
3583 virtual void UserLimitDisable(int32_t number) PURE_VIRTUAL;
3584
3596 virtual void UserLimitReset(int32_t number) PURE_VIRTUAL;
3597
3606
3607 virtual int32_t UserLimitCountMax() PURE_VIRTUAL;
3608
3626 virtual void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address) PURE_VIRTUAL;
3627
3629 virtual uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex) PURE_VIRTUAL;
3631
3632
3637
3647 virtual int32_t MathBlockCountGet() PURE_VIRTUAL;
3648
3659 virtual void MathBlockCountSet(int32_t mathBlockCount) PURE_VIRTUAL;
3660
3679
3681 virtual MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3682
3684 virtual void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig& config) PURE_VIRTUAL;
3685
3687 virtual FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3688
3690
3691
3696
3699
3701};
3702
3706class RSI_API RapidCodeNetworkNode : public virtual RapidCodeObject {
3707public:
3708
3713
3715 static inline constexpr uint32_t SDOTimeoutMillisecondsDefault = 100;
3716
3718
3719
3724
3726 virtual bool Exists() PURE_VIRTUAL;
3727
3729 virtual RSINodeType TypeGet() PURE_VIRTUAL;
3730
3732 virtual bool IsEtherCAT() PURE_VIRTUAL;
3733
3735 virtual bool IsSynqNet() PURE_VIRTUAL;
3736
3738
3743
3745 virtual bool HasIO() PURE_VIRTUAL;
3746
3748 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
3749
3751 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
3752
3754 virtual void DigitalOutSet(int32_t digitalOutNumber, bool state) PURE_VIRTUAL;
3755
3757 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
3758
3760 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
3761
3763 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
3764
3766
3770
3772 virtual int32_t DigitalInCountGet() PURE_VIRTUAL;
3773
3775 virtual int32_t DigitalOutCountGet() PURE_VIRTUAL;
3776
3778 virtual int32_t AnalogInCountGet() PURE_VIRTUAL;
3779
3781 virtual int32_t AnalogOutCountGet() PURE_VIRTUAL;
3782
3783
3785 virtual int32_t SegmentCountGet() PURE_VIRTUAL;
3786
3788 virtual int32_t SegmentDigitalInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3789
3791 virtual int32_t SegmentDigitalOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3792
3794 virtual int32_t SegmentAnalogInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3795
3797 virtual int32_t SegmentAnalogOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3798
3800 virtual int32_t SegmentIDGet(int32_t segmentNumber) PURE_VIRTUAL;
3801
3814 virtual uint64_t DigitalInAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3815
3828 virtual int32_t DigitalInMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3829
3842 virtual uint64_t DigitalOutAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3843
3856 virtual int32_t DigitalOutMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3857
3869 virtual uint64_t AnalogInAddressGet(int32_t channel) PURE_VIRTUAL;
3870
3882 virtual int32_t AnalogInMaskGet(int32_t channel) PURE_VIRTUAL;
3883
3895 virtual uint64_t AnalogOutAddressGet(int32_t channel) PURE_VIRTUAL;
3896
3908 virtual int32_t AnalogOutMaskGet(int32_t channel) PURE_VIRTUAL;
3909
3923 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
3924
3928 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
3929
3942 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
3943
3947 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
3948
3964 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue) PURE_VIRTUAL;
3965
3966
3971 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
3972
3985 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue) PURE_VIRTUAL;
3986
3994 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
3995
4001 virtual char* AKDASCIICommand(const char* const command) PURE_VIRTUAL;
4002
4004 virtual void ClearFaults(int32_t axisNumber) PURE_VIRTUAL;
4005
4007 virtual uint32_t VendorIdGet() PURE_VIRTUAL;
4008
4021 virtual const char* const NameGet() PURE_VIRTUAL;
4022
4035 virtual const char* const ProductNameGet() PURE_VIRTUAL;
4036
4049 virtual const char* const VendorNameGet() PURE_VIRTUAL;
4050
4052 virtual uint32_t ProductCodeGet() PURE_VIRTUAL;
4053
4055 virtual uint32_t RevisionGet() PURE_VIRTUAL;
4056
4058 virtual uint32_t StationAliasGet() PURE_VIRTUAL;
4059
4061 virtual const char* const SerialNumberGet() PURE_VIRTUAL;
4062
4064 virtual uint32_t AxisCountGet() PURE_VIRTUAL;
4065
4067 virtual uint16_t StatusWordGet(int32_t axisIndex) PURE_VIRTUAL;
4068};
4069
4071
4074class RSI_API RapidCodeMotion : public virtual RapidCodeInterrupt{
4075public:
4076
4082
4085
4087
4088
4092
4110 virtual int32_t NumberGet() PURE_VIRTUAL;
4111
4128 virtual int32_t AxisCountGet() PURE_VIRTUAL;
4129
4133
4158 virtual void TriggeredModify() PURE_VIRTUAL;
4159
4186 virtual void Stop() PURE_VIRTUAL;
4187
4212 virtual void Resume() PURE_VIRTUAL;
4213
4238 virtual void EStop() PURE_VIRTUAL;
4239
4260 virtual void EStopAbort() PURE_VIRTUAL;
4261
4278 virtual void EStopModify() PURE_VIRTUAL;
4279
4282 virtual void EStopModifyAbort() PURE_VIRTUAL;
4283
4305 virtual void Abort() PURE_VIRTUAL;
4306
4333 virtual void ClearFaults() PURE_VIRTUAL;
4334
4361 virtual void AmpEnableSet(bool enable) PURE_VIRTUAL;
4362
4392 virtual int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds) PURE_VIRTUAL;
4393
4413
4414 virtual void Map() PURE_VIRTUAL;
4415
4433 virtual void Unmap() PURE_VIRTUAL;
4434
4439 virtual bool IsMapped() PURE_VIRTUAL;
4440
4457 virtual void FeedRateSet(double rate) PURE_VIRTUAL;
4458
4477 virtual double FeedRateGet() PURE_VIRTUAL;
4478
4482
4483
4484
4485
4505 virtual RSIState StateGet() PURE_VIRTUAL;
4506
4534 virtual RSISource SourceGet() PURE_VIRTUAL;
4535
4560 virtual const char* const SourceNameGet(RSISource source) PURE_VIRTUAL;
4561
4584 virtual int32_t MotionDoneWait() PURE_VIRTUAL;
4585
4612 virtual int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds) PURE_VIRTUAL;
4613
4634 virtual bool MotionDoneGet() PURE_VIRTUAL;
4635
4658 virtual bool StatusBitGet(RSIEventType bitMask) PURE_VIRTUAL;
4659
4674 virtual uint64_t StatusBitsGet() PURE_VIRTUAL;
4675
4679
4708 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
4709
4723 virtual void InterruptWake() PURE_VIRTUAL;
4724
4728
4744 virtual double StopTimeGet() PURE_VIRTUAL;
4745
4761 virtual void StopTimeSet(double seconds) PURE_VIRTUAL;
4762
4778 virtual double EStopTimeGet() PURE_VIRTUAL;
4779
4795 virtual void EStopTimeSet(double seconds) PURE_VIRTUAL;
4796
4813 virtual double MotionDelayGet() PURE_VIRTUAL;
4814
4835 virtual void MotionDelaySet(double seconds) PURE_VIRTUAL;
4836
4857 virtual uint16_t MotionIdGet() PURE_VIRTUAL;
4858
4876 virtual void MotionIdSet(uint16_t id) PURE_VIRTUAL;
4877
4879 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
4880
4882 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
4883
4898 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
4899
4907 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
4908
4928 virtual RSIMotionHoldType MotionHoldTypeGet() PURE_VIRTUAL;
4929
4962 virtual void MotionHoldTypeSet(RSIMotionHoldType type) PURE_VIRTUAL;
4963
4975 virtual int32_t MotionHoldGateNumberGet() PURE_VIRTUAL;
4976
4995
4996 virtual void MotionHoldGateNumberSet(int32_t gateNumber) PURE_VIRTUAL;
4997
5014 virtual double MotionHoldTimeoutGet() PURE_VIRTUAL;
5015
5034 virtual void MotionHoldTimeoutSet(double seconds) PURE_VIRTUAL;
5035
5059 virtual bool MotionHoldGateGet() PURE_VIRTUAL;
5060
5083 virtual void MotionHoldGateSet(bool hold) PURE_VIRTUAL;
5084
5101 virtual int32_t MotionHoldAxisNumberGet() PURE_VIRTUAL;
5102
5119 virtual void MotionHoldAxisNumberSet(int32_t number) PURE_VIRTUAL;
5120
5137
5138 virtual double MotionHoldAxisPositionGet() PURE_VIRTUAL;
5139
5156 virtual void MotionHoldAxisPositionSet(double position) PURE_VIRTUAL;
5157
5159 virtual RSIUserLimitLogic MotionHoldAxisLogicGet() PURE_VIRTUAL;
5160
5162 virtual void MotionHoldAxisLogicSet(RSIUserLimitLogic logic) PURE_VIRTUAL;
5163
5180 virtual uint64_t MotionHoldUserAddressGet() PURE_VIRTUAL;
5181
5198 virtual void MotionHoldUserAddressSet(uint64_t address) PURE_VIRTUAL;
5199
5215 virtual int32_t MotionHoldUserMaskGet() PURE_VIRTUAL;
5216
5232 virtual void MotionHoldUserMaskSet(int32_t holdMask) PURE_VIRTUAL;
5233
5249 virtual int32_t MotionHoldUserPatternGet() PURE_VIRTUAL;
5250
5266 virtual void MotionHoldUserPatternSet(int32_t pattern) PURE_VIRTUAL;
5267
5269 virtual void MotionAttributeMaskDefaultSet() PURE_VIRTUAL;
5270
5295
5296 virtual bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5297
5316 virtual void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5317
5334
5335 virtual void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff) PURE_VIRTUAL;
5336
5340
5341
5342
5378 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;
5379
5417 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;
5418
5448 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;
5449
5454 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address) PURE_VIRTUAL;
5455
5477 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
5478
5483 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on) PURE_VIRTUAL;
5484
5503 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on, int32_t ptPointIndex) PURE_VIRTUAL;
5504
5520 virtual void StreamingOutputsClear() PURE_VIRTUAL;
5521
5541 virtual void StreamingOutputsEnableSet(bool enable) PURE_VIRTUAL;
5542};
5543
5544
5549class RSI_API Axis : public virtual RapidCodeMotion{
5550public:
5551
5552 friend class MotionController;
5553 friend class MultiAxis;
5554
5555
5560
5562 static inline constexpr uint32_t NetworkIndexInvalid = 65535;
5563
5565 static inline constexpr double AmpEnableAmpFaultTimeoutSecondsDefault = 1.0;
5566
5568
5569
5574
5579 RapidCodeNetworkNode* NetworkNode;
5580
5581
5583
5588
5626 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel) PURE_VIRTUAL;
5627
5649 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel) PURE_VIRTUAL;
5650
5673 virtual void MoveTrapezoidal(double position) PURE_VIRTUAL; // use defaults Overload
5674 //virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel, bool checkLimits) PURE_VIRTUAL;
5675
5714 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5715
5720 virtual void MoveSCurve(double position) PURE_VIRTUAL;
5721
5731 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5732
5736 virtual void MoveVelocity(double velocity) PURE_VIRTUAL;
5737
5772 virtual void MoveVelocity(double velocity, double accel) PURE_VIRTUAL;
5773
5810 virtual void MoveVelocitySCurve(double velocity, double accel, double jerkPct) PURE_VIRTUAL;
5811
5850 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5851
5855 virtual void MoveRelative(double releativePosition) PURE_VIRTUAL;
5856
5860 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5862
5867
5892 virtual void PositionSet(double position) PURE_VIRTUAL;
5893
5912 virtual double ActualPositionGet() PURE_VIRTUAL;
5913
5935 virtual void ActualPositionSet(double position) PURE_VIRTUAL;
5936
5953 virtual double CompensationPositionGet() PURE_VIRTUAL;
5954
5967 virtual void CompensationPositionSet(double position) PURE_VIRTUAL;
5968
5980 virtual double TargetPositionGet() PURE_VIRTUAL;
5981
6001 virtual double CommandPositionGet() PURE_VIRTUAL;
6002
6034 virtual void CommandPositionSet(double position) PURE_VIRTUAL;
6035
6059 virtual void CommandPositionDirectSet(double position) PURE_VIRTUAL;
6060
6077 virtual double OriginPositionGet() PURE_VIRTUAL;
6078
6101 virtual void OriginPositionSet(double position) PURE_VIRTUAL;
6102
6123 virtual double PositionErrorGet() PURE_VIRTUAL;
6124
6146 virtual double CommandVelocityGet() PURE_VIRTUAL;
6147
6170 virtual double ActualVelocityGet() PURE_VIRTUAL;
6171
6192 virtual double CommandAccelGet() PURE_VIRTUAL;
6193
6195 virtual double CommandJerkGet() PURE_VIRTUAL;
6196
6217 virtual double EncoderPositionGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
6218
6240 virtual double UserUnitsGet() PURE_VIRTUAL;
6241
6264 virtual void UserUnitsSet(double countsPerUserUnit) PURE_VIRTUAL;
6265
6267 virtual double UserUnitsToCounts(double userUnits) PURE_VIRTUAL;
6268
6270 virtual double CountsToUserUnits(double counts) PURE_VIRTUAL;
6271
6291 virtual int32_t FramesToExecuteGet() PURE_VIRTUAL;
6293
6298
6319
6320 virtual void Home() PURE_VIRTUAL; // this one moves to zero by default
6321
6325 virtual void Home(bool moveToZero) PURE_VIRTUAL;
6326
6345
6346 virtual RSIHomeMethod HomeMethodGet() PURE_VIRTUAL;
6347
6366
6367 virtual void HomeMethodSet(RSIHomeMethod method) PURE_VIRTUAL;
6368
6389
6390 virtual double HomeOffsetGet() PURE_VIRTUAL;
6391
6410
6411 virtual void HomeOffsetSet(double offset) PURE_VIRTUAL;
6412
6430
6431 virtual double HomeVelocityGet() PURE_VIRTUAL;
6432
6435 virtual double HomeVelocityGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6436
6457 virtual void HomeVelocitySet(double velocity) PURE_VIRTUAL;
6458
6463 virtual void HomeVelocitySet(RSIHomeStage homeStage, double velocity) PURE_VIRTUAL;
6464
6480 virtual double HomeSlowVelocityGet() PURE_VIRTUAL;
6481
6497 virtual void HomeSlowVelocitySet(double velocity) PURE_VIRTUAL;
6498
6516
6517 virtual double HomeAccelerationGet() PURE_VIRTUAL;
6518
6521 virtual double HomeAccelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6522
6542
6543 virtual void HomeAccelerationSet(double accel) PURE_VIRTUAL;
6544
6548 virtual void HomeAccelerationSet(RSIHomeStage homeStage, double accel) PURE_VIRTUAL;
6549
6566
6567 virtual double HomeDecelerationGet() PURE_VIRTUAL;
6568
6571 virtual double HomeDecelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6572
6591
6592 virtual void HomeDecelerationSet(double decel) PURE_VIRTUAL;
6593
6597 virtual void HomeDecelerationSet(RSIHomeStage homeStage, double decel) PURE_VIRTUAL;
6598
6616
6617 virtual double HomeJerkPercentGet() PURE_VIRTUAL;
6618
6621 virtual double HomeJerkPercentGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6622
6642 virtual void HomeJerkPercentSet(double percent) PURE_VIRTUAL;
6643
6648 virtual void HomeJerkPercentSet(RSIHomeStage homeStage, double percent) PURE_VIRTUAL;
6649
6669 virtual void HomeCancelSet(bool cancel) PURE_VIRTUAL;
6670
6689 virtual bool HomeStateGet() PURE_VIRTUAL;
6690
6703 virtual void HomeStateSet(bool homed) PURE_VIRTUAL;
6704
6709 virtual void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex) PURE_VIRTUAL;
6710
6712 virtual void HomeLimitCustomConfigReset() PURE_VIRTUAL;
6713
6715 virtual uint64_t HomeLimitCustomConfigAddressGet() PURE_VIRTUAL;
6716
6719 virtual int32_t HomeLimitCustomConfigBitIndexGet() PURE_VIRTUAL;
6720
6742
6743 virtual void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel) PURE_VIRTUAL;
6744
6764 virtual RSIHomeStage HomeStageGet() PURE_VIRTUAL;
6765
6779 virtual void HomeBehaviorSet(RSIAction behavior) PURE_VIRTUAL;
6780
6792 virtual RSIAction HomeBehaviorGet() PURE_VIRTUAL;
6794
6800
6802 virtual bool FaultMaskBitGet(RSIMotorFaultMask bitMask) PURE_VIRTUAL;
6803
6805 virtual uint16_t StatusWordGet() PURE_VIRTUAL;
6807
6812 // reads active configuration to report state
6813
6837
6838 virtual bool NegativeLimitGet() PURE_VIRTUAL;
6839
6863 virtual bool PositiveLimitGet() PURE_VIRTUAL;
6864
6893 virtual bool HomeLimitGet() PURE_VIRTUAL;
6894
6922 virtual bool HomeSwitchGet() PURE_VIRTUAL;
6923
6944 virtual bool AmpFaultGet() PURE_VIRTUAL;
6945
6969 virtual bool AmpEnableGet() PURE_VIRTUAL;
6970
6995 virtual bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
6996
7021 virtual bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7022
7045 virtual bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7046
7069 virtual bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7071
7076
7097 virtual bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7098
7119 virtual bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7120
7141
7142 virtual void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue) PURE_VIRTUAL;
7143
7162 virtual bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7163
7182 virtual const char* const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7183
7206 virtual RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7207
7226 virtual void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type) PURE_VIRTUAL;
7227
7244 virtual double AnalogInGet(int32_t channel) PURE_VIRTUAL;
7246
7251
7265 virtual double EStopDecelerationGet() PURE_VIRTUAL;
7266
7281 virtual void EStopDecelerationSet(double decel) PURE_VIRTUAL;
7282
7293 virtual double EStopJerkPercentGet() PURE_VIRTUAL;
7294
7312 virtual void EStopJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7313
7323 virtual double TriggeredModifyDecelerationGet() PURE_VIRTUAL;
7324
7342 virtual void TriggeredModifyDecelerationSet(double decel) PURE_VIRTUAL;
7343
7354 virtual double TriggeredModifyJerkPercentGet() PURE_VIRTUAL;
7355
7373 virtual void TriggeredModifyJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7374
7376 virtual int32_t FrameBufferSizeGet() PURE_VIRTUAL;
7377
7379 virtual void FrameBufferSizeSet(int32_t frameSize) PURE_VIRTUAL;
7380
7400 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
7401
7422 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
7424
7429
7431 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
7432
7434 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
7435
7437 virtual double DefaultVelocityGet() PURE_VIRTUAL;
7438
7440 virtual void DefaultVelocitySet(double velocity) PURE_VIRTUAL;
7441
7443 virtual double DefaultAccelerationGet() PURE_VIRTUAL;
7444
7446 virtual void DefaultAccelerationSet(double acceleration) PURE_VIRTUAL;
7447
7449 virtual double DefaultDecelerationGet() PURE_VIRTUAL;
7450
7452 virtual void DefaultDecelerationSet(double deceleration) PURE_VIRTUAL;
7453
7455 virtual double DefaultJerkPercentGet() PURE_VIRTUAL;
7456
7458 virtual void DefaultJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
7459
7461 virtual double DefaultPosition1Get() PURE_VIRTUAL;
7462
7464 virtual void DefaultPosition1Set(double position1) PURE_VIRTUAL;
7465
7467 virtual double DefaultPosition2Get() PURE_VIRTUAL;
7468
7470 virtual void DefaultPosition2Set(double position2) PURE_VIRTUAL;
7471
7473 virtual double DefaultRelativeIncrementGet() PURE_VIRTUAL;
7474
7476 virtual void DefaultRelativeIncrementSet(double relativeIncrement) PURE_VIRTUAL;
7478
7482 // /@{
7483
7506 virtual RSIAction AmpFaultActionGet() PURE_VIRTUAL;
7507
7530 virtual void AmpFaultActionSet(RSIAction action) PURE_VIRTUAL;
7531
7553 virtual bool AmpFaultTriggerStateGet() PURE_VIRTUAL;
7554
7576 virtual void AmpFaultTriggerStateSet(bool state) PURE_VIRTUAL;
7577
7598 virtual double AmpFaultDurationGet() PURE_VIRTUAL;
7599
7620 virtual void AmpFaultDurationSet(double seconds) PURE_VIRTUAL;
7621
7646 virtual RSIAction HomeActionGet() PURE_VIRTUAL;
7647
7671 virtual void HomeActionSet(RSIAction action) PURE_VIRTUAL;
7672
7698 virtual bool HomeTriggerStateGet() PURE_VIRTUAL;
7699
7720 virtual void HomeTriggerStateSet(bool state) PURE_VIRTUAL;
7721
7743 virtual double HomeDurationGet() PURE_VIRTUAL;
7744
7767 virtual void HomeDurationSet(double seconds) PURE_VIRTUAL;
7768
7797 virtual RSIAction ErrorLimitActionGet() PURE_VIRTUAL;
7798
7825 virtual void ErrorLimitActionSet(RSIAction action) PURE_VIRTUAL;
7826
7849 virtual double ErrorLimitTriggerValueGet() PURE_VIRTUAL;
7850
7872 virtual void ErrorLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
7873
7895 virtual double ErrorLimitDurationGet() PURE_VIRTUAL;
7896
7919 virtual void ErrorLimitDurationSet(double seconds) PURE_VIRTUAL;
7920
7945 virtual RSIAction HardwareNegLimitActionGet() PURE_VIRTUAL;
7946
7971 virtual void HardwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
7972
7996 virtual bool HardwareNegLimitTriggerStateGet() PURE_VIRTUAL;
7997
8021 virtual void HardwareNegLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8022
8045 virtual double HardwareNegLimitDurationGet() PURE_VIRTUAL;
8046
8070 virtual void HardwareNegLimitDurationSet(double seconds) PURE_VIRTUAL;
8071
8096 virtual RSIAction HardwarePosLimitActionGet() PURE_VIRTUAL;
8097
8122 virtual void HardwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8123
8144 virtual bool HardwarePosLimitTriggerStateGet() PURE_VIRTUAL;
8145
8169 virtual void HardwarePosLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8170
8193 virtual double HardwarePosLimitDurationGet() PURE_VIRTUAL;
8194
8217 virtual void HardwarePosLimitDurationSet(double seconds) PURE_VIRTUAL;
8218
8244 virtual RSIAction SoftwareNegLimitActionGet() PURE_VIRTUAL;
8245
8269 virtual void SoftwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8270
8293 virtual double SoftwareNegLimitTriggerValueGet() PURE_VIRTUAL;
8294
8317 virtual void SoftwareNegLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8318
8342 virtual RSIAction SoftwarePosLimitActionGet() PURE_VIRTUAL;
8343
8367 virtual void SoftwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8368
8391 virtual double SoftwarePosLimitTriggerValueGet() PURE_VIRTUAL;
8392
8415 virtual void SoftwarePosLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8416
8442 virtual RSIAction EncoderFaultActionGet() PURE_VIRTUAL;
8443
8468 virtual void EncoderFaultActionSet(RSIAction action) PURE_VIRTUAL;
8469
8493 virtual RSIMotorFeedbackFault EncoderFaultTriggerGet() PURE_VIRTUAL;
8494
8516 virtual void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder) PURE_VIRTUAL;
8517
8539 virtual double EncoderFaultDurationGet() PURE_VIRTUAL;
8540
8562 virtual void EncoderFaultDurationSet(double seconds) PURE_VIRTUAL;
8563
8565 virtual RSIAction NodeFailureActionGet() PURE_VIRTUAL;
8566
8568 virtual void NodeFailureActionSet(RSIAction action) PURE_VIRTUAL;
8569
8585 virtual uint64_t AddressGet( RSIAxisAddressType addressType) PURE_VIRTUAL;
8586
8600 virtual RSIDataType AddressDataTypeGet(RSIAxisAddressType type) PURE_VIRTUAL;
8601
8602 // common limit methods
8603
8605 virtual RSIAction LimitActionGet(RSIEventType limit) PURE_VIRTUAL;
8606
8608 virtual void LimitActionSet(RSIEventType limit, RSIAction action) PURE_VIRTUAL;
8609
8611 virtual bool LimitTriggerStateGet(RSIEventType limit) PURE_VIRTUAL;
8612
8614 virtual void LimitTriggerStateSet(RSIEventType limit, bool triggerState) PURE_VIRTUAL;
8615
8617 virtual double LimitTriggerValueGet(RSIEventType limit) PURE_VIRTUAL;
8618
8620 virtual void LimitTriggerValueSet(RSIEventType limit, double triggerValue) PURE_VIRTUAL;
8621
8623 virtual double LimitDurationGet(RSIEventType limit) PURE_VIRTUAL;
8624
8626 virtual void LimitDurationSet(RSIEventType limit, double seconds) PURE_VIRTUAL;
8628
8633
8647 virtual double PositionToleranceFineGet() PURE_VIRTUAL;
8648
8662 virtual void PositionToleranceFineSet(double tolerance) PURE_VIRTUAL;
8663
8677 virtual double PositionToleranceCoarseGet() PURE_VIRTUAL;
8678
8695 virtual void PositionToleranceCoarseSet(double tolerance) PURE_VIRTUAL;
8696
8710 virtual double VelocityToleranceGet() PURE_VIRTUAL;
8711
8725 virtual void VelocityToleranceSet(double tolerance) PURE_VIRTUAL;
8726
8741 virtual double SettlingTimeGet() PURE_VIRTUAL;
8742
8757 virtual void SettlingTimeSet(double time) PURE_VIRTUAL;
8758
8775 virtual bool SettleOnStopGet() PURE_VIRTUAL;
8776
8793
8794 virtual void SettleOnStopSet(bool state) PURE_VIRTUAL;
8795
8812 virtual bool SettleOnEStopGet() PURE_VIRTUAL;
8813
8829 virtual void SettleOnEStopSet(bool state) PURE_VIRTUAL;
8830
8847 virtual bool SettleOnEStopCmdEqActGet() PURE_VIRTUAL;
8848
8864 virtual void SettleOnEStopCmdEqActSet(bool state) PURE_VIRTUAL;
8866
8871
8888 virtual RSIMotorType MotorTypeGet() PURE_VIRTUAL;
8889
8905 virtual void MotorTypeSet(RSIMotorType type) PURE_VIRTUAL;
8906
8923 virtual RSIMotorDisableAction AmpDisableActionGet() PURE_VIRTUAL;
8924
8940 virtual void AmpDisableActionSet(RSIMotorDisableAction action) PURE_VIRTUAL;
8941
8959
8960 virtual RSIMotorBrakeMode BrakeModeGet() PURE_VIRTUAL;
8961
8977 virtual void BrakeModeSet(RSIMotorBrakeMode mode) PURE_VIRTUAL;
8978
8994 virtual double BrakeApplyDelayGet() PURE_VIRTUAL;
8995
8996
9013 virtual void BrakeApplyDelaySet(double seconds) PURE_VIRTUAL;
9014
9030 virtual double BrakeReleaseDelayGet() PURE_VIRTUAL;
9031
9049 virtual void BrakeReleaseDelaySet(double seconds) PURE_VIRTUAL;
9050
9052 virtual void ClosedLoopStepperSet(bool enable) PURE_VIRTUAL;
9053
9055 virtual int32_t ClosedLoopStepperVersionGet() PURE_VIRTUAL;
9056
9058 virtual uint64_t EncoderPointerGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9059
9061 virtual void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address) PURE_VIRTUAL;
9062
9064 virtual uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9065
9066
9068 virtual void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9069
9071 virtual uint64_t FeedbackPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9072
9090 virtual void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9091
9093 virtual int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9094
9096 virtual int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9097
9119 virtual void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9120
9122 virtual const char* const EncoderRatioPrimaryGet() PURE_VIRTUAL;
9123
9125 virtual void EncoderRatioPrimarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9126
9128 virtual const char* const EncoderRatioSecondaryGet() PURE_VIRTUAL;
9129
9131 virtual void EncoderRatioSecondarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9132
9134 virtual int32_t EncoderCountGet() PURE_VIRTUAL;
9135
9138 virtual void EncoderCountSet(int32_t count) PURE_VIRTUAL;
9139
9141 virtual RSIAxisGantryType GantryTypeGet() PURE_VIRTUAL;
9142
9144 virtual void GantryTypeSet(RSIAxisGantryType type) PURE_VIRTUAL;
9145
9159 virtual RSIOperationMode OperationModeGet() PURE_VIRTUAL;
9160
9174 virtual void OperationModeSet(RSIOperationMode mode) PURE_VIRTUAL;
9175
9195 virtual int32_t MotorFaultMaskGet() PURE_VIRTUAL;
9196
9222 virtual void MotorFaultMaskSet(int32_t faultMask) PURE_VIRTUAL;
9224
9229
9251 virtual void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9256 virtual void GearingEnable(Axis* masterAxis, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9257
9276 virtual void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9277
9294 virtual void GearingDisable() PURE_VIRTUAL;
9295
9297 virtual int32_t GearingNumeratorGet() PURE_VIRTUAL;
9298
9300 virtual int32_t GearingDenominatorGet() PURE_VIRTUAL;
9301
9303 virtual bool GearingEnableGet() PURE_VIRTUAL;
9304
9322 virtual int32_t GearingMasterAxisNumberGet() PURE_VIRTUAL;
9323
9336 virtual RSIAxisMasterType GearingSourceGet() PURE_VIRTUAL;
9338
9343
9360 virtual double MotionCamMasterStartGet(Axis* master) PURE_VIRTUAL;
9361
9376 virtual void MotionCamMasterStartSet(Axis* master, double startPosition) PURE_VIRTUAL;
9377
9394 virtual int32_t MotionCamRepeatFromGet() PURE_VIRTUAL;
9395
9413 virtual void MotionCamRepeatFromSet(int32_t repeatFrom) PURE_VIRTUAL;
9414
9432 virtual void MotionCamRepeatStop() PURE_VIRTUAL;
9433
9456 virtual void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
9457
9487 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;
9488
9505
9506 virtual int32_t DriveIndexGet() PURE_VIRTUAL;
9508
9513
9526 virtual double BacklashWidthGet() PURE_VIRTUAL;
9527
9540 virtual void BacklashWidthSet(double width) PURE_VIRTUAL;
9541
9554 virtual double BacklashRateGet() PURE_VIRTUAL;
9555
9568 virtual void BacklashRateSet(double rate) PURE_VIRTUAL;
9569
9570
9581 virtual double BacklashValueGet() PURE_VIRTUAL;
9583
9588
9616 virtual RSIFilterAlgorithm FilterAlgorithmGet() PURE_VIRTUAL;
9617
9642 virtual void FilterAlgorithmSet(RSIFilterAlgorithm algorithm) PURE_VIRTUAL;
9643
9669 virtual double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9670
9693 virtual void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9694
9697 virtual double FilterCoeffGet(RSIFilterGainPIVCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9702 virtual void FilterCoeffSet(RSIFilterGainPIVCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9703
9738 virtual int32_t FilterGainTableGet() PURE_VIRTUAL;
9739
9768 virtual void FilterGainTableSet(int32_t gainTable) PURE_VIRTUAL;
9769
9786 virtual int32_t FilterGainTableSizeGet() PURE_VIRTUAL;
9787
9789 virtual double FilterOutputGet(void) PURE_VIRTUAL;
9790
9803 virtual double FilterLowPassGet() PURE_VIRTUAL;
9804
9820 virtual void FilterLowPassSet(double frequency) PURE_VIRTUAL;
9821
9840 virtual void FilterDualLoopSet(Axis* velocityAxis, RSIMotorFeedback velocityEncoder, bool enable) PURE_VIRTUAL;
9841
9842
9844 virtual bool FilterGainSchedulingGet() PURE_VIRTUAL;
9845
9846
9848 virtual void FilterGainSchedulingSet(bool enable) PURE_VIRTUAL;
9849
9851 virtual bool IsTuneable() PURE_VIRTUAL;
9852
9869 virtual void PostFilterLowPassSet(int32_t sectionNumber, double frequency) PURE_VIRTUAL;
9870
9886 virtual void PostFilterUnityGainSet(int32_t sectionNumber) PURE_VIRTUAL;
9887
9906 virtual void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne) PURE_VIRTUAL;
9907
9923 virtual void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq) PURE_VIRTUAL;
9924
9942 virtual void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth) PURE_VIRTUAL;
9943
9962 virtual void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain) PURE_VIRTUAL;
9963
9982 virtual void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq) PURE_VIRTUAL;
9983
9999 virtual void PostFilterClear(int32_t sectionNumber) PURE_VIRTUAL;
10000
10021 virtual void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo) PURE_VIRTUAL;
10022
10024 virtual const char* const PostFilterInfoGet() PURE_VIRTUAL;
10025 //virtual RSIFilterPostFilterSection PostFilterSection;
10027
10032
10052 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10053
10074 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10076
10081
10083 virtual void PostTrajectoryGearingEnableSet(bool enable) PURE_VIRTUAL;
10084
10086 virtual bool PostTrajectoryGearingEnableGet() PURE_VIRTUAL;
10087
10089 virtual void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber) PURE_VIRTUAL;
10090
10092 virtual int32_t PostTrajectoryGearingMasterAxisGet() PURE_VIRTUAL;
10093
10095 virtual void PostTrajectoryGearingMultiplierSet(double multiplier) PURE_VIRTUAL;
10096
10098 virtual double PostTrajectoryGearingMultiplierGet() PURE_VIRTUAL;
10099
10117 virtual uint32_t NetworkIndexGet(RSINetworkIndexType indexType) PURE_VIRTUAL;
10118
10137 virtual void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex) PURE_VIRTUAL;
10139
10141
10149 virtual double BacklashHysteresisLimitGet() PURE_VIRTUAL;
10150
10157 virtual void BacklashHysteresisLimitSet(double hysteresisLimit) PURE_VIRTUAL;
10158
10182 virtual bool StepperMotorLoopbackGet() PURE_VIRTUAL;
10183
10207 virtual void StepperMotorLoopbackSet(bool loopback) PURE_VIRTUAL;
10208
10217 virtual RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse) PURE_VIRTUAL;
10218
10228 virtual void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type) PURE_VIRTUAL;
10229
10236 virtual uint64_t GearingMasterAddressGet() PURE_VIRTUAL;
10237
10239};
10240
10244class RSI_API MultiAxis : public virtual RapidCodeMotion {
10245public:
10246
10250
10264 virtual void AxisAdd(Axis *axis) PURE_VIRTUAL;
10265
10268 virtual void AxesAdd(Axis* *axes, int32_t axisCount) PURE_VIRTUAL;
10269
10282 virtual void AxisRemoveAll() PURE_VIRTUAL;
10283
10287
10303 virtual Axis* AxisGet(int32_t index) PURE_VIRTUAL;
10304
10324 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10325
10346 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10347
10351
10366 virtual double VectorVelocityGet() PURE_VIRTUAL;
10367
10383 virtual void VectorVelocitySet(double velocity) PURE_VIRTUAL;
10384
10399 virtual double VectorAccelerationGet() PURE_VIRTUAL;
10400
10423 virtual void VectorAccelerationSet(double acceleration) PURE_VIRTUAL;
10424
10439 virtual double VectorDecelerationGet() PURE_VIRTUAL;
10440
10463 virtual void VectorDecelerationSet(double deceleration) PURE_VIRTUAL;
10464
10479 virtual double VectorJerkPercentGet() PURE_VIRTUAL;
10480
10503 virtual void VectorJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
10504
10528 virtual void MoveVector(const double* const position) PURE_VIRTUAL;
10529
10532 virtual void MoveVectorRelative(const double* const relativePosition) PURE_VIRTUAL;
10533
10537
10557
10558 virtual double PathTimeSliceGet() PURE_VIRTUAL;
10559
10580
10581 virtual void PathTimeSliceSet(double seconds) PURE_VIRTUAL;
10582
10607 virtual void PathRatioSet(const double* const ratio) PURE_VIRTUAL;
10608
10611 virtual double PathRatioGet(int32_t index) PURE_VIRTUAL;
10612
10629 virtual void PathBlendSet(bool blend) PURE_VIRTUAL;
10630
10639
10640 virtual void PathPlanTypeSet(RSIPathPlanType type) PURE_VIRTUAL;
10641
10650
10651 virtual RSIPathPlanType PathPlanTypeGet() PURE_VIRTUAL;
10652
10671 virtual void PathListStart(const double* const startPosition) PURE_VIRTUAL;
10672
10693 virtual void PathLineAdd(const double* const position) PURE_VIRTUAL;
10694
10714 virtual void PathArcAdd(const double* const center, double angle) PURE_VIRTUAL;
10715
10734 virtual void PathListEnd() PURE_VIRTUAL;
10735
10752 virtual void PathMotionStart() PURE_VIRTUAL;
10753
10757
10775 virtual void MoveTrapezoidal(const double* const position, const double* const vel, const double* const accel, const double* const decel) PURE_VIRTUAL;
10776
10779 virtual void MoveTrapezoidal(const double* const position) PURE_VIRTUAL;
10780
10807 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;
10808
10811 virtual void MoveSCurve(const double* const position) PURE_VIRTUAL;
10812
10827 virtual void MoveVelocity(const double* const velocity, const double* const accel) PURE_VIRTUAL;
10828
10832 virtual void MoveVelocity(const double* const velocity) PURE_VIRTUAL;
10833
10852 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;
10853
10856 virtual void MoveRelative(const double* const relativePosition) PURE_VIRTUAL;
10857
10873 virtual void MoveVelocitySCurve(const double* const velocity, const double* const accel, const double* const jerkPct) PURE_VIRTUAL;
10874
10891 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
10892
10910 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
10911
10913 virtual int32_t AxisMapCountGet() PURE_VIRTUAL;
10914
10928 virtual uint64_t AddressGet(RSIMultiAxisAddressType addressType) PURE_VIRTUAL;
10929
10943 virtual RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type) PURE_VIRTUAL;
10944
10954 virtual bool AmpEnableGet() PURE_VIRTUAL;
10955
10956
10957};
10958
10964class RSI_API IOPoint : public virtual RapidCodeObject {
10965public:
10970
10987 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorDedicatedIn motorDedicatedInNumber);
10988
11005 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11006
11022 static IOPoint* CreateDigitalInput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11023 // use NetworkNode*
11024 static IOPoint* CreateDigitalInput(IO* io, int32_t bitNumber);
11025
11036 static IOPoint* CreateDigitalInput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11037
11051 static IOPoint* CreateDigitalInput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11052
11070 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorDedicatedOut motorDedicatedOutNumber);
11071
11088 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11089
11105 static IOPoint* CreateDigitalOutput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11106 // use NetworkNode*
11107 static IOPoint* CreateDigitalOutput(IO* io, int32_t bitNumber);
11108
11109
11122 static IOPoint* CreateDigitalOutput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11123
11137 static IOPoint* CreateDigitalOutput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11138
11153 static IOPoint* CreateAnalogInput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11154 // use RapidCodeNetworkNode*
11155 static IOPoint* CreateAnalogInput(IO* io, int32_t analogChannel);
11156
11171 static IOPoint* CreateAnalogOutput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11172 // use RapidCodeNetworkNode*
11173 static IOPoint* CreateAnalogOutput(IO* io, int32_t analogChannel);
11174
11176
11180
11183 virtual uint64_t AddressGet() PURE_VIRTUAL;
11184
11187 virtual int32_t MaskGet() PURE_VIRTUAL;
11188
11191 virtual bool IsDigital() PURE_VIRTUAL;
11192
11193
11196 virtual bool IsOutput() PURE_VIRTUAL;
11197
11201
11205 virtual bool Get() PURE_VIRTUAL;
11206
11213 virtual void Set(bool state) PURE_VIRTUAL;
11214
11218
11222 virtual double ValueGet() PURE_VIRTUAL;
11223
11227 virtual void ValueSet(double valueDouble) PURE_VIRTUAL;
11228};
11229
11233class RSI_API RTOS {
11234
11235public:
11236#if defined(_WIN32)
11241
11245
11250 static INtimeStatus INtimeStatusGet(const char* const nodeName);
11251
11255
11260 static INtimeStatus INtimeStart(const char* const nodeName);
11261
11265
11270 static INtimeStatus INtimeStop(const char* const nodeName);
11271
11275
11280 static INtimeStatus INtimeRestart(const char* const nodeName);
11281
11284 static const char* const INtimeCatalogRMPGet();
11285
11288 static const char* const INtimeCatalogRMPNetworkGet();
11289
11292 static uint32_t INtimeNodeCountGet();
11293
11297 static const char* const INtimeNodeNameGet(uint32_t nodeNumber);
11298
11302 static bool INtimeNodeIsLocal(uint32_t nodeNumber);
11304#endif // _WIN32
11305};
11306
11308class RSI_API Trace
11309{
11310public:
11315
11328 static void MaskSet(RSITrace mask);
11329
11345 static void MaskOnSet(RSITrace maskOn);
11346
11347
11367 static bool MaskOnGet(RSITrace maskOn);
11368
11384 static void MaskOffSet(RSITrace maskOff);
11385
11398 static void MaskClear();
11399
11414 static int32_t FileSet(const char* const fileName);
11415
11428 static void FileClose();
11429
11444 static void InjectMessage(RSITrace traceLevel, const char* const message);
11445
11447};
11448
11450
11452
11456class RSI_API IO : public virtual RapidCodeObject {
11457public:
11458
11459 friend class MotionController;
11460
11465
11467 RapidCodeNetworkNode* NetworkNode;
11470
11472
11477
11478
11511 virtual bool IOExists() PURE_VIRTUAL;
11512
11529 virtual int32_t NumberGet() PURE_VIRTUAL;
11531
11536
11537
11538
11568 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
11569
11602 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
11603
11634 virtual void DigitalOutSet(int32_t digitalOutNumber, bool outValue) PURE_VIRTUAL;
11635
11658 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
11659
11691 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
11692
11724 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
11726
11736 virtual const char* const UserLabelGet() PURE_VIRTUAL;
11737
11744 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
11745};
11746
11747#if defined(__cplusplus)
11748}
11749#endif
11750
11751template<typename ContainerClass>
11752class RSI_API RapidVectorIterator
11753{
11754public:
11756 typedef typename ContainerClass::ValueType ValueType;
11757
11759 typedef typename ContainerClass::PointerType PointerType;
11760
11763 ValueType& operator*();
11764
11767 const ValueType& operator*() const;
11768
11771 RapidVectorIterator& operator++();
11772
11775 RapidVectorIterator operator++(int);
11776
11779 bool operator==(const RapidVectorIterator&) const;
11780
11783 bool operator!=(const RapidVectorIterator&) const;
11784
11786 RapidVectorIterator(PointerType pointerArgument, PointerType startArgument, const size_t containerSize);
11787
11789 RapidVectorIterator(const RapidVectorIterator&) = default;
11790
11792 RapidVectorIterator& operator=(const RapidVectorIterator&) = default;
11793
11795 RapidVectorIterator(RapidVectorIterator&&) noexcept = default;
11796
11798 RapidVectorIterator& operator=(RapidVectorIterator&&) noexcept = default;
11799private:
11800 PointerType pointer;
11801 PointerType start, end;
11802 void VerifyPointer() const;
11803};
11804
11806template<typename Type>
11808
11811
11820template<typename Type>
11821class RSI_API RapidVector
11822{
11823private:
11824 // The pointer to the implementation.
11826public:
11830 Type& operator[](const size_t index);
11831
11835 const Type& operator[](const size_t index) const;
11836
11840 Type& At(const size_t index);
11841
11845 const Type& At(const size_t index) const;
11846
11849 void PushBack(const Type& element);
11850
11853 const size_t Size() const;
11854
11856 void Clear();
11857
11859 void PopBack();
11860
11863 Type& Front();
11864
11867 const Type& Front() const;
11868
11871 Type& Back();
11872
11875 const Type& Back() const;
11876
11879
11881 RapidVector(const size_t size);
11882
11885
11888
11891
11894
11896 RapidVector(RapidVector&& other) noexcept;
11897
11900
11901 typedef Type* PointerType;
11902 typedef Type ValueType;
11903
11905 typedef RapidVectorIterator<RapidVector> Iterator;
11906
11909 Iterator begin() noexcept;
11910
11913 Iterator begin() const noexcept;
11914
11918 Iterator end() const noexcept;
11919};
11920
11922
11923} // namespace RapidCode
11924
11925} // namespace RSI
11926
11927#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:5579
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:5549
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:11456
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition rsi.h:11467
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:11469
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:10964
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 * 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.
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:3698
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:10244
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:11233
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:4074
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:4084
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:11822
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:11905
~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:11807
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:11309
RSIFilterAlgorithm
Filter algorithms.
Definition rsienums.h:1116
RSIPDOType
Compensator output types.
Definition rsienums.h:1355
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1361
RSICompensatorOutputType
Compensator output types.
Definition rsienums.h:1349
RSINetworkStartMode
Network start modes.
Definition rsienums.h:587
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
Definition rsienums.h:1103
RSITrace
Trace masks.
Definition rsienums.h:539
RSIMotorStepperPulse
Pulse A or B.
Definition rsienums.h:1206
RSIAxisGantryType
How to combine Axis Feedback Positions.
Definition rsienums.h:1096
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:1276
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:1222
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1072
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:1212
RSIMotorType
Motor Type.
Definition rsienums.h:1268
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:1017
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:496
RSIFilterGainPIDCoeff
PID gain coefficients.
Definition rsienums.h:1125
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:628
RSINetworkOutputAddressType
Network output address types.
Definition rsienums.h:1342
INtimeStatus
INtime status values.
Definition rsienums.h:1314
RSIMotionHoldType
Types for MotionHold attribute.
Definition rsienums.h:1052
RSIControllerType
Controller type.
Definition rsienums.h:283
RSIMotorFaultMask
Mask values for several motor faults.
Definition rsienums.h:1256
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:396
RSIMotorBrakeMode
Brake modes.
Definition rsienums.h:1282
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:1185
RSIAxisPositionInput
Feedback Positions for each Axis.
Definition rsienums.h:1090
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:1110
RSIMotorDedicatedOut
Dedicated Output bits per motor.
Definition rsienums.h:871
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1288
RSIPathPlanType
Path motion planning types.
Definition rsienums.h:1011
RSINetworkTechnologyType
Network technology type.
Definition rsienums.h:1309
RSINetworkIndexType
Network index types for Axis.
Definition rsienums.h:1322
RSINetworkStartupMethod
Network startup methods.
Definition rsienums.h:579
RSIFilterGainPIVCoeff
PIV gain coefficients.
Definition rsienums.h:1146
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1175
int32_t CpuAffinity
[Linux] Indicate the CPU core on which the RMP and RMPNetwork processes run.
Definition rsi.h:992
int32_t RmpThreadPriorityMax
[Linux] The maximum thread priority. All threads of the RMP and RMPNetwork will be based off of this....
Definition rsi.h:1004
CreationParameters()
Instantiate with default values and all memory zeroed out.
Definition rsi.h:917
CreationParameters for MotionController::Create.
Definition rsi.h:857
RSIDataType ProcessDataType
Data type for processing.
Definition rsi.h:3676
MathBlock configuration structure.
Definition rsi.h:3669
RSIDataType OutputDataType
Data type for Output. (optional)
Definition rsi.h:3674
uint64_t OutputAddress
Host memory address for Output. The MathBlock will write its result to this address....
Definition rsi.h:3675
uint64_t InputAddress0
Host memory address for Input0. Represents the left-hand side operand in math operations.
Definition rsi.h:3670
RSIDataType InputDataType0
Data type for Input0. This is the data type of the left-hand side operand in math operations.
Definition rsi.h:3671
uint64_t InputAddress1
Host memory address for Input1. Represents the right-hand side operand in math operations.
Definition rsi.h:3672
RSIDataType InputDataType1
Data type for Input1. This is the data type of the right-hand side operand in math operations.
Definition rsi.h:3673
RSIMathBlockOperation Operation
Math operation to be performed. (+, -, *, /, etc) use RSIMathBlockOperationNONE to disable a MathBloc...
Definition rsi.h:3677
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