The RMP Motion Controller APIs
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# if !defined(RSI_API)
28# define RSI_API __attribute__ ((visibility ("default")))
29# endif
30#endif
31
32// Macro for pure virtual definitions
33#define PURE_VIRTUAL = 0
34
35#if defined(__cplusplus)
36extern "C"
37{
38#endif
39
41namespace RSI
42{
43
45namespace RapidCode
46{
47
48class MotionController;
49class Axis;
50class MultiAxis;
51class IO;
52class RapidCodeNetworkNode;
53class IOPoint;
54class RTOS;
55
57class StaticInstanceMediator
58{
59private:
60 bool isValid;
61public:
62
63 bool IsValid() { return isValid; }
64
65 void OnDelete() { isValid = false; }
66
67 void OnCreate() { isValid = true; }
68};
69
72
104class RsiError : public std::exception
105{
106public:
110 int32_t lineNumber;
112 int32_t objectIndex;
116 static inline constexpr uint32_t RSI_ERROR_TEXT_SIZE = 512U;
117 char text[RSI_ERROR_TEXT_SIZE];
124
125 RsiError()
126 {
127 text[0] = '\0';
128 functionName[0] = '\0';
129 shortText[0] = '\0';
130 fileName[0] = '\0';
132 lineNumber = -1;
133 isWarning = false;
134 objectIndex = -1;
135 }
144 RsiError(const RsiError& copyFrom)
145 {
146#if defined(_WIN32)
147 strncpy_s(text, RSI_ERROR_TEXT_SIZE, copyFrom.text, RSI_ERROR_TEXT_SIZE);
151#elif defined(__linux__)
152 strncpy(text, copyFrom.text, RSI_ERROR_TEXT_SIZE);
154 strncpy(shortText, copyFrom.shortText, RSI_ERROR_TEXT_SIZE);
155 strncpy(fileName, copyFrom.fileName, RSI_ERROR_TEXT_SIZE);
156#endif
157 number = copyFrom.number;
158 lineNumber = copyFrom.lineNumber;
159 isWarning = copyFrom.isWarning;
160 objectIndex = copyFrom.objectIndex;
161 }
162 ~RsiError()
163 {
164 }
165
167 virtual const char* what() const noexcept { return text; }
168};
169
178class RSI_API RapidCodeObject {
179public:
184
185
186
200 virtual const char* const VersionGet() PURE_VIRTUAL;
201
203 virtual int32_t MpiVersionMajor() PURE_VIRTUAL;
205 virtual int32_t MpiVersionMinor() PURE_VIRTUAL;
207 virtual int32_t MpiVersionRelease() PURE_VIRTUAL;
209 virtual int32_t RSIVersionMajor() PURE_VIRTUAL;
211 virtual int32_t RSIVersionMinor() PURE_VIRTUAL;
213 virtual int32_t RSIVersionMicro() PURE_VIRTUAL;
215 virtual int32_t RSIVersionPatch() PURE_VIRTUAL;
216
220 virtual int32_t NumberGet() PURE_VIRTUAL;
222
227
228
229
230
257 virtual int32_t ErrorLogCountGet() PURE_VIRTUAL;
258
273 virtual const RsiError* const ErrorLogGet() PURE_VIRTUAL;
274
288 virtual void ErrorLogClear() PURE_VIRTUAL;
289
309 virtual void ThrowExceptions(bool state) PURE_VIRTUAL;
310
312 virtual const char* const RsiErrorMessageGet(RSIErrorMessage msg) PURE_VIRTUAL;
313
315 virtual const char* const ErrorMessageGet(RSIErrorMessage msg) PURE_VIRTUAL;
316
318 virtual bool WarningMsgCheck(RSIErrorMessage msg) PURE_VIRTUAL;
320
325
326
342 virtual void Trace(bool state) PURE_VIRTUAL;
343
359 virtual void TraceMaskOnSet(RSITrace maskOn) PURE_VIRTUAL;
360
361
383 virtual bool TraceMaskOnGet(RSITrace maskOn) PURE_VIRTUAL;
384
401 virtual void TraceMaskOffSet(RSITrace maskOff) PURE_VIRTUAL;
402
417 virtual void TraceMaskClear() PURE_VIRTUAL;
418
434 virtual void TraceFileSet(const char* const fileName) PURE_VIRTUAL;
435
449 virtual void TraceFileClose() PURE_VIRTUAL;
450
466 virtual void TraceInjectMessage(RSITrace traceLevel, const char* const message) PURE_VIRTUAL;
467
468
469
470
472};
473
475typedef union
476{
477 bool Bool;
478 int8_t Int8;
479 uint8_t UInt8;
480 int16_t Int16;
481 uint16_t UInt16;
482 int32_t Int32;
483 uint32_t UInt32;
484 float Float;
485 double Double;
486 int64_t Int64;
487 uint64_t UInt64;
489
491
505class RSI_API RapidCodeOS {
506public:
507
512
526 virtual void Sleep(int32_t milliseconds) PURE_VIRTUAL;
527
547 virtual int32_t KeyGet(int32_t milliseconds) PURE_VIRTUAL;
548
559 virtual int32_t TimerCountGet() PURE_VIRTUAL;
560
570 virtual int32_t TimerFrequencyGet() PURE_VIRTUAL;
571
572
585 virtual int32_t PerformanceTimerCountGet() PURE_VIRTUAL;
586
599 virtual int32_t PerformanceTimerFrequencyGet() PURE_VIRTUAL;
600
602};
603
605
608class RSI_API RapidCodeInterrupt : public virtual RapidCodeObject {
609public:
613
615 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
616
617
640 virtual RSIEventType InterruptWait(int32_t milliseconds) PURE_VIRTUAL;
641
661 virtual const char* const InterruptNameGet() PURE_VIRTUAL;
662
683 virtual int32_t InterruptSampleTimeGet() PURE_VIRTUAL;
684
685
706 virtual int32_t InterruptSourceNumberGet() PURE_VIRTUAL;
707
709 virtual uint16_t InterruptMotionIdGet() PURE_VIRTUAL;
710
712 virtual void InterruptWake() PURE_VIRTUAL;
713
715 virtual void InterruptMaskClear() PURE_VIRTUAL;
716
718 virtual void InterruptMaskAllSet() PURE_VIRTUAL;
719
721 virtual void InterruptMaskOnSet(RSIEventType eventType) PURE_VIRTUAL;
722
724 virtual void InterruptMaskOffSet(RSIEventType eventType) PURE_VIRTUAL;
725
727 virtual bool InterruptMaskOnGet(RSIEventType eventType) PURE_VIRTUAL;
728
729
742 virtual uint64_t InterruptUserDataGet(uint32_t userDataIndex) PURE_VIRTUAL;
743
744
756 virtual double InterruptUserDataDoubleGet(uint32_t userDataIndex) PURE_VIRTUAL;
757};
758
762class RSI_API MotionController : public virtual RapidCodeInterrupt {
763protected:
765 StaticInstanceMediator* _mediator;
766
767public:
768
769 // Static functions or attributes should be grouped together.
774
776 static inline constexpr uint32_t NetworkStartTimeoutMillisecondsDefault = 30000;
777
779 static inline constexpr uint32_t AxisCountMaximum = 64;
780
782 static inline constexpr uint32_t MotionCountMaximum = 64;
783
785 static inline constexpr uint32_t NetworkNodeCountMaximum = 64;
786
788 static inline constexpr uint32_t RecorderCountMaximum = 64;
789
791 static inline constexpr uint32_t CompensatorCountMaximum = 64;
792
794 static inline constexpr uint32_t MathBlockCountMaximum = 64;
795
797 static inline constexpr uint32_t UserBufferDataCountMaximum = 1024;
798
800 static inline constexpr uint32_t SequencerGlobalCountMaximum = 191;
801
803 static inline constexpr double SampleRateDefault = 1000.0;
804
814 static inline constexpr int32_t AxisFrameBufferSizeDefault = 1024;
815
817
818 // Static functions or attributes should be grouped together.
823
826 {
831
836 static inline constexpr uint32_t PathLengthMaximum = 256;
837
843 static inline constexpr int32_t CpuAffinityDefault = -1;
844
849 static inline constexpr int32_t RmpThreadPriorityMaximumDefault = 45;
850
855 static inline constexpr int32_t RmpThreadPriorityRange = 8;
856
861 static inline constexpr int32_t RmpThreadPriorityMinimum = RmpThreadPriorityRange + 1;
862
867 static inline constexpr int32_t RmpThreadPriorityMaximum = 99;
868
873 static inline constexpr int32_t RmpThreadPriorityNoRealTime = 0;
875
876
881
887 {
888 std::memset(RmpPath, '\0', PathLengthMaximum);
889 std::memset(NicPrimary, '\0', PathLengthMaximum);
890 std::memset(NicSecondary, '\0', PathLengthMaximum);
891#if defined(_WIN32)
892 std::memset(NodeName, '\0', PathLengthMaximum);
893#elif defined(__linux__)
894 CpuAffinity = CpuAffinityDefault;
895 RmpThreadPriorityMax = RmpThreadPriorityMaximumDefault;
896#endif
897 }
899
904
909 char RmpPath[PathLengthMaximum];
910
915 char NicPrimary[PathLengthMaximum];
916
921 char NicSecondary[PathLengthMaximum];
923
924 // Control which platform specific parameters are available
925#if defined(_WIN32) && defined(__linux__)
926 static_assert(false, "_WIN32 and __linux__ defined. Double check preprocessor definitions");
927#elif !defined(_WIN32) && !defined(__linux__) && !defined(DOXYGEN)
928 static_assert(false, "Neither _WIN32 nor __linux__ are defined AND this is not a documentation build. Double check preprocessor definitions");
929#endif //defined(_WIN32) && defined(__linux__)
930#if defined(_WIN32) || defined(DOXYGEN)
931
936
941 char NodeName[PathLengthMaximum];
942
944#endif //defined(_WIN32)
945#if defined(__linux__) || defined(DOXYGEN)
946
951
961 int32_t CpuAffinity;
962
974
976# endif // defined(__linux__)
977 };
978
989 static MotionController* Create(CreationParameters* creationParameters);
990
991#if defined(_WIN32)
1019
1024 static MotionController* CreateFromSoftware(const char* const RtaPath);
1025
1031 static MotionController* CreateFromSoftware(const char* const RtaPath, const char* const NodeName);
1032
1061#endif // defined(_WIN32)
1062
1067 static MotionController* CreateFromFile(const char* const fileName);
1069
1074
1093 virtual Axis* AxisGet(int32_t axisNumber) PURE_VIRTUAL;
1094
1111 virtual MultiAxis* MultiAxisGet(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1112
1126 virtual MultiAxis* LoadExistingMultiAxis(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1127
1142 virtual RapidCodeNetworkNode* NetworkNodeGet(int32_t nodeNumber) PURE_VIRTUAL;
1143
1159 virtual IO* IOGet(int32_t nodeNumber) PURE_VIRTUAL;
1160
1183 virtual void Delete(void) PURE_VIRTUAL;
1185
1190
1200 virtual void Reset() PURE_VIRTUAL;
1201
1206 virtual void Refresh() PURE_VIRTUAL;
1207
1215 virtual void Shutdown() PURE_VIRTUAL;
1216
1226 virtual void MemoryToFile(const char* const fileName) PURE_VIRTUAL;
1228
1233
1257 virtual int32_t SampleCounterGet() PURE_VIRTUAL;
1258
1274 virtual double ProcessorUsageGet() PURE_VIRTUAL;
1275
1287 virtual void ProcessorUsageClear() PURE_VIRTUAL;
1288
1292 virtual uint32_t FirmwareTimingDeltaGet() PURE_VIRTUAL;
1293
1294
1296
1301
1302
1303
1327 virtual uint32_t SerialNumberGet(void) PURE_VIRTUAL;
1328
1348 virtual void SampleWait(uint32_t samples) PURE_VIRTUAL;
1349
1350
1352 virtual RSIControllerType ControllerTypeGet() PURE_VIRTUAL;
1353
1355 virtual const char* const ServerNameGet() PURE_VIRTUAL;
1356
1358 virtual int32_t ServerPortGet() PURE_VIRTUAL;
1359
1360
1361
1362
1385 virtual RSIProcessorType ProcessorTypeGet() PURE_VIRTUAL;
1386
1391 virtual void SampleRateSet(double sampleRate) PURE_VIRTUAL;
1392
1395 virtual double SampleRateGet() PURE_VIRTUAL;
1396
1415 virtual int32_t AxisCountGet() PURE_VIRTUAL;
1416
1436 virtual void AxisCountSet(int32_t axisCount) PURE_VIRTUAL;
1437
1440 virtual void AxisCountSet(int32_t axisCount, bool setMotorFilterSupervisor) PURE_VIRTUAL;
1441
1444 virtual bool IsLicensed() PURE_VIRTUAL;
1445
1447 virtual int32_t PackageVariantGet() PURE_VIRTUAL;
1448
1450 virtual int32_t AxisLicenseCountGet() PURE_VIRTUAL;
1451
1453 virtual bool MechaWareLicenseGet() PURE_VIRTUAL;
1454
1456 virtual int32_t UnsupportedOptionSet(int32_t option) PURE_VIRTUAL;
1457
1483 virtual int32_t MotionCountGet() PURE_VIRTUAL;
1484
1502 virtual void MotionCountSet(int32_t motionCount) PURE_VIRTUAL;
1503
1530 virtual int32_t UserVersionGet() PURE_VIRTUAL;
1531
1556 virtual void UserVersionSet(int32_t version) PURE_VIRTUAL;
1557
1560 virtual int32_t ExternalMemorySizeGet() PURE_VIRTUAL;
1561
1578 virtual void AxisFrameBufferSizeSet(int32_t axisNumber, int32_t frameBufferSize) PURE_VIRTUAL;
1579
1595 virtual int32_t AxisFrameBufferSizeGet(int32_t axisNumber) PURE_VIRTUAL;
1597
1602
1621 virtual const char* const FirmwareVersionGet() PURE_VIRTUAL;
1622
1641 virtual int32_t FirmwareOptionGet() PURE_VIRTUAL;
1642
1644 virtual bool HasMechaWare() PURE_VIRTUAL;
1645
1670 virtual int32_t MemoryGet(uint64_t address) PURE_VIRTUAL;
1671
1672
1691 virtual double MemoryDoubleGet(uint64_t address) PURE_VIRTUAL;
1692
1719 virtual void MemoryBlockGet(uint64_t address, void* dataStart, int32_t size) PURE_VIRTUAL;
1720
1736 virtual void MemorySet(uint64_t address, int32_t data) PURE_VIRTUAL;
1737
1738
1739
1757 virtual void MemoryDoubleSet(uint64_t address, double dataDouble) PURE_VIRTUAL;
1758
1785 virtual void MemoryBlockSet(uint64_t address, const void* const dataStart, int32_t size) PURE_VIRTUAL;
1786
1806 virtual uint32_t FirmwareAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1807
1808
1809
1810
1834 virtual uint64_t HostAddressGet(uint32_t firmwareAddress) PURE_VIRTUAL;
1835
1836
1837
1861 virtual int32_t BackgroundCycleCounterGet() PURE_VIRTUAL;
1862
1863
1864
1865
1875 virtual uint64_t AddressFromStringGet(const char* const addressName) PURE_VIRTUAL;
1876
1877
1878
1888 virtual const char* const StringFromAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1889
1905 virtual uint64_t AddressGet(RSIControllerAddressType type) PURE_VIRTUAL;
1906
1925 virtual uint64_t AddressGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1926
1927
1941 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type) PURE_VIRTUAL;
1942
1947 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1948
1963 virtual bool MotionHoldGateGet(int32_t gateNumber) PURE_VIRTUAL;
1964
1965
1966
1983 virtual void MotionHoldGateSet(int32_t gateNumber, bool hold) PURE_VIRTUAL;
1985
1990
1992 virtual RSINetworkTechnologyType NetworkTechnologyTypeGet() PURE_VIRTUAL;
1993
1995 virtual RSINetworkType NetworkTypeGet() PURE_VIRTUAL;
1996
1999 virtual int32_t NetworkNodeCountGet() PURE_VIRTUAL;
2000
2002 virtual void NetworkStart() PURE_VIRTUAL;
2003
2012 virtual void NetworkStart(RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2013
2017 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2018
2023 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
2024
2026 virtual void NetworkShutdown() PURE_VIRTUAL;
2027
2030 virtual RSINetworkState NetworkStateGet() PURE_VIRTUAL;
2031
2033 virtual int32_t NetworkCounterGet() PURE_VIRTUAL;
2034
2036 virtual int32_t NetworkInputCountGet() PURE_VIRTUAL;
2037
2039 virtual int32_t NetworkInputBitSizeGet(int32_t index) PURE_VIRTUAL;
2040
2044 virtual const char* const NetworkInputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2045
2048 virtual int32_t NetworkInputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2049
2052 virtual const char* const NetworkInputNameGet(int32_t index) PURE_VIRTUAL;
2053
2057 virtual uint64_t NetworkInputValueGet(int32_t index) PURE_VIRTUAL;
2058
2059
2060
2064 virtual uint64_t NetworkInputAddressGet(int32_t index) PURE_VIRTUAL;
2065
2069 virtual int32_t NetworkOutputCountGet() PURE_VIRTUAL;
2070
2073 virtual int32_t NetworkOutputBitSizeGet(int32_t index) PURE_VIRTUAL;
2074
2075
2079 virtual const char* const NetworkOutputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2080
2082 virtual int32_t NetworkOutputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2083
2085 virtual const char* const NetworkOutputNameGet(int32_t index) PURE_VIRTUAL;
2086
2103 virtual uint64_t NetworkOutputValueGet(int32_t index) PURE_VIRTUAL;
2104
2122 virtual void NetworkOutputValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2123
2143 virtual uint64_t NetworkOutputAddressGet(int32_t index) PURE_VIRTUAL;
2144
2149 virtual uint64_t NetworkOutputAddressGet(int32_t index, RSINetworkOutputAddressType type) PURE_VIRTUAL;
2150
2162 virtual uint64_t NetworkOutputIntendedValueGet(int32_t index) PURE_VIRTUAL;
2163
2176 virtual void NetworkOutputOverrideSet(int32_t index, bool outputOverride) PURE_VIRTUAL;
2177
2189 virtual bool NetworkOutputOverrideGet(int32_t index) PURE_VIRTUAL;
2190
2191
2192
2193
2211 virtual void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2212
2226 virtual uint64_t NetworkOutputOverrideValueGet(int32_t index) PURE_VIRTUAL;
2227
2243 virtual uint64_t NetworkOutputSentValueGet(int32_t index) PURE_VIRTUAL;
2244
2248 virtual int32_t NetworkLogMessageCountGet() PURE_VIRTUAL;
2249
2251 virtual RSINetworkStartError LastNetworkStartErrorGet() PURE_VIRTUAL;
2252
2257 virtual const char* const NetworkLogMessageGet(int32_t messageIndex) PURE_VIRTUAL;
2258
2260 virtual void NetworkTimingEnableSet(bool enable) PURE_VIRTUAL;
2261
2263 virtual void NetworkTimingClear() PURE_VIRTUAL;
2264
2266 virtual uint32_t NetworkTimingDeltaGet() PURE_VIRTUAL;
2267
2269 virtual uint32_t NetworkTimingMinGet() PURE_VIRTUAL;
2270
2272 virtual uint32_t NetworkTimingMaxGet() PURE_VIRTUAL;
2273
2275 virtual void NetworkTimingThresholdLowSet(uint32_t microseconds) PURE_VIRTUAL;
2276
2278 virtual void NetworkTimingThresholdHighSet(uint32_t microseconds) PURE_VIRTUAL;
2279
2281 virtual uint32_t NetworkTimingThresholdLowCountGet() PURE_VIRTUAL;
2282
2284 virtual uint32_t NetworkTimingThresholdHighCountGet() PURE_VIRTUAL;
2285
2287 virtual bool NetworkSynchronizedGet() PURE_VIRTUAL;
2289
2294
2312 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
2313
2333 virtual void InterruptWake() PURE_VIRTUAL;
2334
2363 virtual void SyncInterruptEnableSet(bool enable) PURE_VIRTUAL;
2364
2391 virtual void SyncInterruptPeriodSet(uint32_t samples) PURE_VIRTUAL;
2392
2413 virtual int32_t SyncInterruptWait() PURE_VIRTUAL;
2414
2416 virtual bool ServiceThreadStateGet() PURE_VIRTUAL;
2417
2429 virtual int32_t SyncInterruptHostProcessTimeGet() PURE_VIRTUAL;
2430
2432 virtual int32_t SyncInterruptHostProcessFlagGet() PURE_VIRTUAL;
2433
2447 virtual void SyncInterruptHostProcessFlagSet(bool hostProcessFlag) PURE_VIRTUAL;
2448
2460 virtual bool SyncInterruptHostProcessStatusBitGet() PURE_VIRTUAL;
2461
2472 virtual void SyncInterruptHostProcessStatusClear() PURE_VIRTUAL;
2473
2500
2501 virtual void ServiceThreadEnableSet(bool enable) PURE_VIRTUAL;
2503
2508
2509
2510
2530 virtual int32_t RecorderCountGet() PURE_VIRTUAL;
2531
2550 virtual void RecorderCountSet(int32_t recorderCount) PURE_VIRTUAL;
2551
2569 virtual void RecorderPeriodSet(uint32_t samples) PURE_VIRTUAL;
2570
2572 virtual void RecorderPeriodSet(int32_t recorderNumber, uint32_t samples) PURE_VIRTUAL;
2573
2591 virtual void RecorderCircularBufferSet(bool enable) PURE_VIRTUAL;
2592
2594 virtual void RecorderCircularBufferSet(int32_t recorderNumber, bool enable) PURE_VIRTUAL;
2595
2612 virtual void RecorderDataCountSet(int32_t count) PURE_VIRTUAL;
2613
2615 virtual void RecorderDataCountSet(int32_t recorderNumber,int32_t count) PURE_VIRTUAL;
2616
2634 virtual void RecorderDataAddressSet(int32_t index, uint64_t address) PURE_VIRTUAL;
2635
2637 virtual void RecorderDataAddressSet(int32_t recorderNumber,int32_t index, uint64_t address) PURE_VIRTUAL;
2638
2639
2645 virtual void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t* const addresses, int32_t addressCount) PURE_VIRTUAL;
2646
2666 virtual void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2667
2669 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2670
2671
2673 virtual void RecorderConfigureToTriggerOnMotion(MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2674
2676 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2677
2694 virtual bool RecorderEnabledGet() PURE_VIRTUAL;
2695
2697 virtual bool RecorderEnabledGet(int32_t recorderNumber ) PURE_VIRTUAL;
2698
2716 virtual int32_t RecorderRecordCountGet() PURE_VIRTUAL;
2717
2719 virtual int32_t RecorderRecordCountGet(int32_t recorderNumber ) PURE_VIRTUAL;
2720
2735 virtual int32_t RecorderRecordMaxCountGet() PURE_VIRTUAL;
2736
2738 virtual int32_t RecorderRecordMaxCountGet(int32_t recorderNumber) PURE_VIRTUAL;
2739
2755 virtual void RecorderStart() PURE_VIRTUAL;
2756
2758 virtual void RecorderStart(int32_t recorderNumber) PURE_VIRTUAL;
2759
2777 virtual void RecorderStop() PURE_VIRTUAL;
2778
2780 virtual void RecorderStop(int32_t recorderNumber) PURE_VIRTUAL;
2781
2782
2783
2800 virtual const int32_t* const RecorderRecordDataGet() PURE_VIRTUAL;
2801
2803 virtual const int32_t* const RecorderRecordDataGet(int32_t recorderNumber) PURE_VIRTUAL;
2804
2820 virtual void RecorderRecordDataRetrieve() PURE_VIRTUAL;
2821
2842 virtual int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount) PURE_VIRTUAL;
2843
2845 virtual void RecorderRecordDataRetrieve(int32_t recorderNumber) PURE_VIRTUAL;
2846
2864 virtual int32_t RecorderRecordDataValueGet(int32_t index) PURE_VIRTUAL;
2865
2867 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2868
2888 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
2889
2891 virtual double RecorderRecordDataDoubleGet(int32_t index) PURE_VIRTUAL;
2892
2894 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2895
2915 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
2916
2935 virtual void RecorderBufferHighCountSet(int32_t bufferHighCount) PURE_VIRTUAL;
2936
2938 virtual void RecorderBufferHighCountSet(int32_t recorderNumber, int32_t bufferHighCount) PURE_VIRTUAL;
2939
2955 virtual void RecorderReset() PURE_VIRTUAL;
2956
2958 virtual void RecorderReset(int32_t recorderNumber) PURE_VIRTUAL;
2959
2972 virtual int32_t RecorderBufferSizeGet(int32_t recorderNumber) PURE_VIRTUAL;
2973
2991 virtual void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize) PURE_VIRTUAL;
2993
2998
2999
3000
3001
3027 virtual int32_t CompensatorCountGet() PURE_VIRTUAL;
3028
3049 virtual void CompensatorCountSet(int32_t compensatorCount) PURE_VIRTUAL;
3050
3062 virtual int32_t CompensatorPointCountGet(int32_t compensatorNumber) PURE_VIRTUAL;
3063
3084 virtual void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount) PURE_VIRTUAL;
3085
3100 virtual int32_t CompensatorDimensionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3101
3127 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;
3128
3159 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;
3160
3181 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;
3182
3203 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;
3204
3217 virtual void CompensatorTableSet(int32_t compensatorNumber, const double* const table) PURE_VIRTUAL;
3218
3231 virtual void CompensatorTableGet(int32_t compensatorNumber, double* table) PURE_VIRTUAL;
3232
3253 virtual double CompensatorPositionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3254
3255
3256
3257
3258
3259
3272
3273 virtual void CompensatorTableClear(int32_t compensatorNumber) PURE_VIRTUAL;
3274
3284 virtual void CompensatorDisable(int32_t compensatorNumber) PURE_VIRTUAL;
3285
3290 virtual void CompensatorDisable(int32_t compensatorNumber, bool force) PURE_VIRTUAL;
3291
3299 virtual void CompensatorEnable(int32_t compensatorNumber) PURE_VIRTUAL;
3300
3302
3307
3328 virtual int32_t UserLimitCountGet() PURE_VIRTUAL;
3329
3350 virtual void UserLimitCountSet(int32_t userLimitCount) PURE_VIRTUAL;
3351
3372 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot) PURE_VIRTUAL;
3373
3376 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration) PURE_VIRTUAL;
3377
3379 virtual RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number) PURE_VIRTUAL;
3380
3382 virtual RSIAction UserLimitActionGet(int32_t number) PURE_VIRTUAL;
3383
3385 virtual int32_t UserLimitAxisNumberGet(int32_t number) PURE_VIRTUAL;
3386
3388 virtual double UserLimitDurationGet(int32_t number) PURE_VIRTUAL;
3389
3391 virtual bool UserLimitSingleShotGet(int32_t number) PURE_VIRTUAL;
3392
3418 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32) PURE_VIRTUAL;
3419
3442 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfDouble, double limitValueDouble) PURE_VIRTUAL;
3443
3445 virtual RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3446
3448 virtual RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3449
3451 virtual uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3452
3454 virtual uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3455
3457 virtual int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3458
3460 virtual double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3461
3489 virtual void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3490
3493 virtual void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3494
3497 virtual void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3498
3501 virtual void UserLimitOutputSet(int32_t number, double limitValueDouble, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3502
3519 virtual void UserLimitOutputSet(int32_t number, RSIDataType dataType, uint64_t inputPtr, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3520
3522 virtual bool UserLimitOutputEnableGet(int32_t number) PURE_VIRTUAL;
3523
3525 virtual RSIDataType UserLimitOutputDataTypeGet(int32_t number) PURE_VIRTUAL;
3526
3528 virtual uint64_t UserLimitOutputAddressGet(int32_t number) PURE_VIRTUAL;
3529
3531 virtual uint64_t UserLimitOutputInputAddressGet(int32_t number) PURE_VIRTUAL;
3532
3534 virtual uint32_t UserLimitOutputAndMaskGet(int32_t number) PURE_VIRTUAL;
3535
3537 virtual uint32_t UserLimitOutputOrMaskGet(int32_t number) PURE_VIRTUAL;
3538
3540 virtual int32_t UserLimitOutputValueGet(int32_t number) PURE_VIRTUAL;
3541
3543 virtual uint64_t UserLimitOutputAndMask64Get(int32_t number) PURE_VIRTUAL;
3544
3546 virtual uint64_t UserLimitOutputOrMask64Get(int32_t number) PURE_VIRTUAL;
3547
3548
3550 virtual double UserLimitOutputDoubleGet(int32_t number) PURE_VIRTUAL;
3551
3573 virtual bool UserLimitStateGet(int32_t number) PURE_VIRTUAL;
3574
3596 virtual bool UserLimitEnableGet(int32_t number) PURE_VIRTUAL;
3597
3599 virtual void UserLimitEnableSet(int32_t number, bool enable) PURE_VIRTUAL;
3600
3616 virtual void UserLimitDisable(int32_t number) PURE_VIRTUAL;
3617
3630 virtual void UserLimitReset(int32_t number) PURE_VIRTUAL;
3631
3641
3642 virtual int32_t UserLimitCountMax() PURE_VIRTUAL;
3643
3662 virtual void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address) PURE_VIRTUAL;
3663
3665 virtual uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex) PURE_VIRTUAL;
3667
3668
3673
3684 virtual int32_t MathBlockCountGet() PURE_VIRTUAL;
3685
3697 virtual void MathBlockCountSet(int32_t mathBlockCount) PURE_VIRTUAL;
3698
3717
3719 virtual MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3720
3722 virtual void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig& config) PURE_VIRTUAL;
3723
3725 virtual FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3726
3728
3729
3734
3737
3739};
3740
3744class RSI_API RapidCodeNetworkNode : public virtual RapidCodeObject {
3745public:
3746
3751
3753 static inline constexpr uint32_t SDOTimeoutMillisecondsDefault = 100;
3754
3756
3757
3762
3764 virtual bool Exists() PURE_VIRTUAL;
3765
3767 virtual RSINodeType TypeGet() PURE_VIRTUAL;
3768
3770 virtual bool IsEtherCAT() PURE_VIRTUAL;
3771
3773 virtual bool IsSynqNet() PURE_VIRTUAL;
3774
3776
3781
3783 virtual bool HasIO() PURE_VIRTUAL;
3784
3786 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
3787
3789 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
3790
3792 virtual void DigitalOutSet(int32_t digitalOutNumber, bool state) PURE_VIRTUAL;
3793
3795 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
3796
3798 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
3799
3801 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
3802
3804
3808
3810 virtual int32_t DigitalInCountGet() PURE_VIRTUAL;
3811
3813 virtual int32_t DigitalOutCountGet() PURE_VIRTUAL;
3814
3816 virtual int32_t AnalogInCountGet() PURE_VIRTUAL;
3817
3819 virtual int32_t AnalogOutCountGet() PURE_VIRTUAL;
3820
3821
3823 virtual int32_t SegmentCountGet() PURE_VIRTUAL;
3824
3826 virtual int32_t SegmentDigitalInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3827
3829 virtual int32_t SegmentDigitalOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3830
3832 virtual int32_t SegmentAnalogInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3833
3835 virtual int32_t SegmentAnalogOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3836
3838 virtual int32_t SegmentIDGet(int32_t segmentNumber) PURE_VIRTUAL;
3839
3853 virtual uint64_t DigitalInAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3854
3868 virtual int32_t DigitalInMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3869
3883 virtual uint64_t DigitalOutAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3884
3898 virtual int32_t DigitalOutMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3899
3912 virtual uint64_t AnalogInAddressGet(int32_t channel) PURE_VIRTUAL;
3913
3926 virtual int32_t AnalogInMaskGet(int32_t channel) PURE_VIRTUAL;
3927
3940 virtual uint64_t AnalogOutAddressGet(int32_t channel) PURE_VIRTUAL;
3941
3954 virtual int32_t AnalogOutMaskGet(int32_t channel) PURE_VIRTUAL;
3955
3968 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
3969
3973 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
3974
3988 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
3989
3993 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
3994
4011 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue) PURE_VIRTUAL;
4012
4013
4018 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4019
4033 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue) PURE_VIRTUAL;
4034
4042 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4043
4049 virtual char* AKDASCIICommand(const char* const command) PURE_VIRTUAL;
4050
4052 virtual void ClearFaults(int32_t axisNumber) PURE_VIRTUAL;
4053
4055 virtual uint32_t VendorIdGet() PURE_VIRTUAL;
4056
4070 virtual const char* const NameGet() PURE_VIRTUAL;
4071
4085 virtual const char* const ProductNameGet() PURE_VIRTUAL;
4086
4100 virtual const char* const VendorNameGet() PURE_VIRTUAL;
4101
4103 virtual uint32_t ProductCodeGet() PURE_VIRTUAL;
4104
4106 virtual uint32_t RevisionGet() PURE_VIRTUAL;
4107
4109 virtual uint32_t StationAliasGet() PURE_VIRTUAL;
4110
4112 virtual const char* const SerialNumberGet() PURE_VIRTUAL;
4113
4115 virtual uint32_t AxisCountGet() PURE_VIRTUAL;
4116
4118 virtual uint16_t StatusWordGet(int32_t axisIndex) PURE_VIRTUAL;
4119};
4120
4122
4125class RSI_API RapidCodeMotion : public virtual RapidCodeInterrupt{
4126public:
4127
4133
4136
4138
4139
4143
4162 virtual int32_t NumberGet() PURE_VIRTUAL;
4163
4181 virtual int32_t AxisCountGet() PURE_VIRTUAL;
4182
4186
4212 virtual void TriggeredModify() PURE_VIRTUAL;
4213
4241 virtual void Stop() PURE_VIRTUAL;
4242
4268 virtual void Resume() PURE_VIRTUAL;
4269
4295 virtual void EStop() PURE_VIRTUAL;
4296
4318 virtual void EStopAbort() PURE_VIRTUAL;
4319
4337 virtual void EStopModify() PURE_VIRTUAL;
4338
4341 virtual void EStopModifyAbort() PURE_VIRTUAL;
4342
4365 virtual void Abort() PURE_VIRTUAL;
4366
4394 virtual void ClearFaults() PURE_VIRTUAL;
4395
4423 virtual void AmpEnableSet(bool enable) PURE_VIRTUAL;
4424
4455 virtual int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds) PURE_VIRTUAL;
4456
4477
4478 virtual void Map() PURE_VIRTUAL;
4479
4498 virtual void Unmap() PURE_VIRTUAL;
4499
4505 virtual bool IsMapped() PURE_VIRTUAL;
4506
4524 virtual void FeedRateSet(double rate) PURE_VIRTUAL;
4525
4545 virtual double FeedRateGet() PURE_VIRTUAL;
4546
4550
4551
4552
4553
4574 virtual RSIState StateGet() PURE_VIRTUAL;
4575
4588
4609 virtual RSISource SourceGet() PURE_VIRTUAL;
4610
4641 virtual const char* const SourceNameGet(RSISource source) PURE_VIRTUAL;
4642
4666 virtual int32_t MotionDoneWait() PURE_VIRTUAL;
4667
4695 virtual int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds) PURE_VIRTUAL;
4696
4718 virtual bool MotionDoneGet() PURE_VIRTUAL;
4719
4743 virtual bool StatusBitGet(RSIEventType bitMask) PURE_VIRTUAL;
4744
4760 virtual uint64_t StatusBitsGet() PURE_VIRTUAL;
4761
4765
4795 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
4796
4811 virtual void InterruptWake() PURE_VIRTUAL;
4812
4816
4833 virtual double StopTimeGet() PURE_VIRTUAL;
4834
4851 virtual void StopTimeSet(double seconds) PURE_VIRTUAL;
4852
4869 virtual double EStopTimeGet() PURE_VIRTUAL;
4870
4887 virtual void EStopTimeSet(double seconds) PURE_VIRTUAL;
4888
4906 virtual double MotionDelayGet() PURE_VIRTUAL;
4907
4929 virtual void MotionDelaySet(double seconds) PURE_VIRTUAL;
4930
4952 virtual uint16_t MotionIdGet() PURE_VIRTUAL;
4953
4972 virtual void MotionIdSet(uint16_t id) PURE_VIRTUAL;
4973
4975 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
4976
4978 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
4979
4995 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
4996
5005 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
5006
5027 virtual RSIMotionHoldType MotionHoldTypeGet() PURE_VIRTUAL;
5028
5062 virtual void MotionHoldTypeSet(RSIMotionHoldType type) PURE_VIRTUAL;
5063
5076 virtual int32_t MotionHoldGateNumberGet() PURE_VIRTUAL;
5077
5097
5098 virtual void MotionHoldGateNumberSet(int32_t gateNumber) PURE_VIRTUAL;
5099
5117 virtual double MotionHoldTimeoutGet() PURE_VIRTUAL;
5118
5138 virtual void MotionHoldTimeoutSet(double seconds) PURE_VIRTUAL;
5139
5164 virtual bool MotionHoldGateGet() PURE_VIRTUAL;
5165
5189 virtual void MotionHoldGateSet(bool hold) PURE_VIRTUAL;
5190
5208 virtual int32_t MotionHoldAxisNumberGet() PURE_VIRTUAL;
5209
5227 virtual void MotionHoldAxisNumberSet(int32_t number) PURE_VIRTUAL;
5228
5246
5247 virtual double MotionHoldAxisPositionGet() PURE_VIRTUAL;
5248
5266 virtual void MotionHoldAxisPositionSet(double position) PURE_VIRTUAL;
5267
5269 virtual RSIUserLimitLogic MotionHoldAxisLogicGet() PURE_VIRTUAL;
5270
5272 virtual void MotionHoldAxisLogicSet(RSIUserLimitLogic logic) PURE_VIRTUAL;
5273
5291 virtual uint64_t MotionHoldUserAddressGet() PURE_VIRTUAL;
5292
5310 virtual void MotionHoldUserAddressSet(uint64_t address) PURE_VIRTUAL;
5311
5328 virtual int32_t MotionHoldUserMaskGet() PURE_VIRTUAL;
5329
5346 virtual void MotionHoldUserMaskSet(int32_t holdMask) PURE_VIRTUAL;
5347
5364 virtual int32_t MotionHoldUserPatternGet() PURE_VIRTUAL;
5365
5382 virtual void MotionHoldUserPatternSet(int32_t pattern) PURE_VIRTUAL;
5383
5385 virtual void MotionAttributeMaskDefaultSet() PURE_VIRTUAL;
5386
5412
5413 virtual bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5414
5434 virtual void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5435
5453
5454 virtual void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff) PURE_VIRTUAL;
5455
5459
5460
5461
5495 virtual void MovePT(RSIMotionType type, const double* const position, const double* const time, int32_t pointCount, int32_t emptyCount, bool retain, bool final) PURE_VIRTUAL;
5496
5531 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;
5532
5559 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;
5560
5565 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address) PURE_VIRTUAL;
5566
5589 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
5590
5595 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on) PURE_VIRTUAL;
5596
5616 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on, int32_t ptPointIndex) PURE_VIRTUAL;
5617
5634 virtual void StreamingOutputsClear() PURE_VIRTUAL;
5635
5656 virtual void StreamingOutputsEnableSet(bool enable) PURE_VIRTUAL;
5657};
5658
5659
5664class RSI_API Axis : public virtual RapidCodeMotion{
5665public:
5666
5667 friend class MotionController;
5668 friend class MultiAxis;
5669
5670
5675
5677 static inline constexpr uint32_t NetworkIndexInvalid = 65535;
5678
5680 static inline constexpr double AmpEnableAmpFaultTimeoutSecondsDefault = 1.0;
5681
5683
5684
5689
5694 RapidCodeNetworkNode* NetworkNode;
5695
5696
5698
5703
5742 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel) PURE_VIRTUAL;
5743
5765 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel) PURE_VIRTUAL;
5766
5789 virtual void MoveTrapezoidal(double position) PURE_VIRTUAL; // use defaults Overload
5790 //virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel, bool checkLimits) PURE_VIRTUAL;
5791
5831 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5832
5837 virtual void MoveSCurve(double position) PURE_VIRTUAL;
5838
5848 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5849
5853 virtual void MoveVelocity(double velocity) PURE_VIRTUAL;
5854
5890 virtual void MoveVelocity(double velocity, double accel) PURE_VIRTUAL;
5891
5929 virtual void MoveVelocitySCurve(double velocity, double accel, double jerkPct) PURE_VIRTUAL;
5930
5970 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5971
5975 virtual void MoveRelative(double releativePosition) PURE_VIRTUAL;
5976
5980 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5982
5987
6013 virtual void PositionSet(double position) PURE_VIRTUAL;
6014
6036 virtual double ActualPositionGet() PURE_VIRTUAL;
6037
6060 virtual void ActualPositionSet(double position) PURE_VIRTUAL;
6061
6079 virtual double CompensationPositionGet() PURE_VIRTUAL;
6080
6094 virtual void CompensationPositionSet(double position) PURE_VIRTUAL;
6095
6108 virtual double TargetPositionGet() PURE_VIRTUAL;
6109
6133
6134 virtual double CommandPositionGet() PURE_VIRTUAL;
6135
6170 virtual void CommandPositionSet(double position) PURE_VIRTUAL;
6171
6196 virtual void CommandPositionDirectSet(double position) PURE_VIRTUAL;
6197
6217 virtual double OriginPositionGet() PURE_VIRTUAL;
6218
6244 virtual void OriginPositionSet(double position) PURE_VIRTUAL;
6245
6267 virtual double PositionErrorGet() PURE_VIRTUAL;
6268
6291 virtual double CommandVelocityGet() PURE_VIRTUAL;
6292
6316 virtual double ActualVelocityGet() PURE_VIRTUAL;
6317
6339 virtual double CommandAccelGet() PURE_VIRTUAL;
6340
6342 virtual double CommandJerkGet() PURE_VIRTUAL;
6343
6365 virtual double EncoderPositionGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
6366
6389 virtual double UserUnitsGet() PURE_VIRTUAL;
6390
6414 virtual void UserUnitsSet(double countsPerUserUnit) PURE_VIRTUAL;
6415
6417 virtual double UserUnitsToCounts(double userUnits) PURE_VIRTUAL;
6418
6420 virtual double CountsToUserUnits(double counts) PURE_VIRTUAL;
6421
6442 virtual int32_t FramesToExecuteGet() PURE_VIRTUAL;
6444
6449
6471
6472 virtual void Home() PURE_VIRTUAL; // this one moves to zero by default
6473
6477 virtual void Home(bool moveToZero) PURE_VIRTUAL;
6478
6498
6499 virtual RSIHomeMethod HomeMethodGet() PURE_VIRTUAL;
6500
6520
6521 virtual void HomeMethodSet(RSIHomeMethod method) PURE_VIRTUAL;
6522
6544
6545 virtual double HomeOffsetGet() PURE_VIRTUAL;
6546
6566
6567 virtual void HomeOffsetSet(double offset) PURE_VIRTUAL;
6568
6587
6588 virtual double HomeVelocityGet() PURE_VIRTUAL;
6589
6592 virtual double HomeVelocityGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6593
6615 virtual void HomeVelocitySet(double velocity) PURE_VIRTUAL;
6616
6621 virtual void HomeVelocitySet(RSIHomeStage homeStage, double velocity) PURE_VIRTUAL;
6622
6639 virtual double HomeSlowVelocityGet() PURE_VIRTUAL;
6640
6657 virtual void HomeSlowVelocitySet(double velocity) PURE_VIRTUAL;
6658
6677
6678 virtual double HomeAccelerationGet() PURE_VIRTUAL;
6679
6682 virtual double HomeAccelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6683
6704
6705 virtual void HomeAccelerationSet(double accel) PURE_VIRTUAL;
6706
6710 virtual void HomeAccelerationSet(RSIHomeStage homeStage, double accel) PURE_VIRTUAL;
6711
6729
6730 virtual double HomeDecelerationGet() PURE_VIRTUAL;
6731
6734 virtual double HomeDecelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6735
6755
6756 virtual void HomeDecelerationSet(double decel) PURE_VIRTUAL;
6757
6761 virtual void HomeDecelerationSet(RSIHomeStage homeStage, double decel) PURE_VIRTUAL;
6762
6781
6782 virtual double HomeJerkPercentGet() PURE_VIRTUAL;
6783
6786 virtual double HomeJerkPercentGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6787
6808 virtual void HomeJerkPercentSet(double percent) PURE_VIRTUAL;
6809
6814 virtual void HomeJerkPercentSet(RSIHomeStage homeStage, double percent) PURE_VIRTUAL;
6815
6836 virtual void HomeCancelSet(bool cancel) PURE_VIRTUAL;
6837
6857 virtual bool HomeStateGet() PURE_VIRTUAL;
6858
6872 virtual void HomeStateSet(bool homed) PURE_VIRTUAL;
6873
6878 virtual void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex) PURE_VIRTUAL;
6879
6881 virtual void HomeLimitCustomConfigReset() PURE_VIRTUAL;
6882
6884 virtual uint64_t HomeLimitCustomConfigAddressGet() PURE_VIRTUAL;
6885
6888 virtual int32_t HomeLimitCustomConfigBitIndexGet() PURE_VIRTUAL;
6889
6912
6913 virtual void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel) PURE_VIRTUAL;
6914
6935 virtual RSIHomeStage HomeStageGet() PURE_VIRTUAL;
6936
6951 virtual void HomeBehaviorSet(RSIAction behavior) PURE_VIRTUAL;
6952
6965 virtual RSIAction HomeBehaviorGet() PURE_VIRTUAL;
6967
6973
6975 virtual bool FaultMaskBitGet(RSIMotorFaultMask bitMask) PURE_VIRTUAL;
6976
6978 virtual uint16_t StatusWordGet() PURE_VIRTUAL;
6980
6985 // reads active configuration to report state
6986
7011
7012 virtual bool NegativeLimitGet() PURE_VIRTUAL;
7013
7038 virtual bool PositiveLimitGet() PURE_VIRTUAL;
7039
7069 virtual bool HomeLimitGet() PURE_VIRTUAL;
7070
7099 virtual bool HomeSwitchGet() PURE_VIRTUAL;
7100
7122 virtual bool AmpFaultGet() PURE_VIRTUAL;
7123
7148 virtual bool AmpEnableGet() PURE_VIRTUAL;
7149
7175 virtual bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7176
7202 virtual bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7203
7227 virtual bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7228
7252 virtual bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7254
7259
7281 virtual bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7282
7304 virtual bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7305
7327
7328 virtual void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue) PURE_VIRTUAL;
7329
7349 virtual bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7350
7370 virtual const char* const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7371
7395 virtual RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7396
7416 virtual void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type) PURE_VIRTUAL;
7417
7435 virtual double AnalogInGet(int32_t channel) PURE_VIRTUAL;
7437
7442
7457 virtual double EStopDecelerationGet() PURE_VIRTUAL;
7458
7474 virtual void EStopDecelerationSet(double decel) PURE_VIRTUAL;
7475
7487 virtual double EStopJerkPercentGet() PURE_VIRTUAL;
7488
7507 virtual void EStopJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7508
7519 virtual double TriggeredModifyDecelerationGet() PURE_VIRTUAL;
7520
7539 virtual void TriggeredModifyDecelerationSet(double decel) PURE_VIRTUAL;
7540
7552 virtual double TriggeredModifyJerkPercentGet() PURE_VIRTUAL;
7553
7572 virtual void TriggeredModifyJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7573
7575 virtual int32_t FrameBufferSizeGet() PURE_VIRTUAL;
7576
7578 virtual void FrameBufferSizeSet(int32_t frameSize) PURE_VIRTUAL;
7579
7600 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
7601
7623 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
7625
7630
7632 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
7633
7635 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
7636
7638 virtual double DefaultVelocityGet() PURE_VIRTUAL;
7639
7641 virtual void DefaultVelocitySet(double velocity) PURE_VIRTUAL;
7642
7644 virtual double DefaultAccelerationGet() PURE_VIRTUAL;
7645
7647 virtual void DefaultAccelerationSet(double acceleration) PURE_VIRTUAL;
7648
7650 virtual double DefaultDecelerationGet() PURE_VIRTUAL;
7651
7653 virtual void DefaultDecelerationSet(double deceleration) PURE_VIRTUAL;
7654
7656 virtual double DefaultJerkPercentGet() PURE_VIRTUAL;
7657
7659 virtual void DefaultJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
7660
7662 virtual double DefaultPosition1Get() PURE_VIRTUAL;
7663
7665 virtual void DefaultPosition1Set(double position1) PURE_VIRTUAL;
7666
7668 virtual double DefaultPosition2Get() PURE_VIRTUAL;
7669
7671 virtual void DefaultPosition2Set(double position2) PURE_VIRTUAL;
7672
7674 virtual double DefaultRelativeIncrementGet() PURE_VIRTUAL;
7675
7677 virtual void DefaultRelativeIncrementSet(double relativeIncrement) PURE_VIRTUAL;
7679
7683 // /@{
7684
7708 virtual RSIAction AmpFaultActionGet() PURE_VIRTUAL;
7709
7733 virtual void AmpFaultActionSet(RSIAction action) PURE_VIRTUAL;
7734
7757 virtual bool AmpFaultTriggerStateGet() PURE_VIRTUAL;
7758
7781 virtual void AmpFaultTriggerStateSet(bool state) PURE_VIRTUAL;
7782
7804 virtual double AmpFaultDurationGet() PURE_VIRTUAL;
7805
7827 virtual void AmpFaultDurationSet(double seconds) PURE_VIRTUAL;
7828
7854 virtual RSIAction HomeActionGet() PURE_VIRTUAL;
7855
7880 virtual void HomeActionSet(RSIAction action) PURE_VIRTUAL;
7881
7908 virtual bool HomeTriggerStateGet() PURE_VIRTUAL;
7909
7931 virtual void HomeTriggerStateSet(bool state) PURE_VIRTUAL;
7932
7955 virtual double HomeDurationGet() PURE_VIRTUAL;
7956
7980 virtual void HomeDurationSet(double seconds) PURE_VIRTUAL;
7981
8011 virtual RSIAction ErrorLimitActionGet() PURE_VIRTUAL;
8012
8040 virtual void ErrorLimitActionSet(RSIAction action) PURE_VIRTUAL;
8041
8065 virtual double ErrorLimitTriggerValueGet() PURE_VIRTUAL;
8066
8089 virtual void ErrorLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8090
8113 virtual double ErrorLimitDurationGet() PURE_VIRTUAL;
8114
8138 virtual void ErrorLimitDurationSet(double seconds) PURE_VIRTUAL;
8139
8165 virtual RSIAction HardwareNegLimitActionGet() PURE_VIRTUAL;
8166
8192 virtual void HardwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8193
8218 virtual bool HardwareNegLimitTriggerStateGet() PURE_VIRTUAL;
8219
8244 virtual void HardwareNegLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8245
8269 virtual double HardwareNegLimitDurationGet() PURE_VIRTUAL;
8270
8295 virtual void HardwareNegLimitDurationSet(double seconds) PURE_VIRTUAL;
8296
8322 virtual RSIAction HardwarePosLimitActionGet() PURE_VIRTUAL;
8323
8349 virtual void HardwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8350
8371 virtual bool HardwarePosLimitTriggerStateGet() PURE_VIRTUAL;
8372
8397 virtual void HardwarePosLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8398
8422 virtual double HardwarePosLimitDurationGet() PURE_VIRTUAL;
8423
8447 virtual void HardwarePosLimitDurationSet(double seconds) PURE_VIRTUAL;
8448
8475 virtual RSIAction SoftwareNegLimitActionGet() PURE_VIRTUAL;
8476
8501 virtual void SoftwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8502
8526 virtual double SoftwareNegLimitTriggerValueGet() PURE_VIRTUAL;
8527
8551 virtual void SoftwareNegLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8552
8577 virtual RSIAction SoftwarePosLimitActionGet() PURE_VIRTUAL;
8578
8603 virtual void SoftwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8604
8628 virtual double SoftwarePosLimitTriggerValueGet() PURE_VIRTUAL;
8629
8653 virtual void SoftwarePosLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8654
8681 virtual RSIAction EncoderFaultActionGet() PURE_VIRTUAL;
8682
8708 virtual void EncoderFaultActionSet(RSIAction action) PURE_VIRTUAL;
8709
8734 virtual RSIMotorFeedbackFault EncoderFaultTriggerGet() PURE_VIRTUAL;
8735
8758 virtual void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder) PURE_VIRTUAL;
8759
8782 virtual double EncoderFaultDurationGet() PURE_VIRTUAL;
8783
8806 virtual void EncoderFaultDurationSet(double seconds) PURE_VIRTUAL;
8807
8809 virtual RSIAction NodeFailureActionGet() PURE_VIRTUAL;
8810
8812 virtual void NodeFailureActionSet(RSIAction action) PURE_VIRTUAL;
8813
8830 virtual uint64_t AddressGet( RSIAxisAddressType addressType) PURE_VIRTUAL;
8831
8846 virtual RSIDataType AddressDataTypeGet(RSIAxisAddressType type) PURE_VIRTUAL;
8847
8848 // common limit methods
8849
8851 virtual RSIAction LimitActionGet(RSIEventType limit) PURE_VIRTUAL;
8852
8854 virtual void LimitActionSet(RSIEventType limit, RSIAction action) PURE_VIRTUAL;
8855
8857 virtual bool LimitTriggerStateGet(RSIEventType limit) PURE_VIRTUAL;
8858
8860 virtual void LimitTriggerStateSet(RSIEventType limit, bool triggerState) PURE_VIRTUAL;
8861
8863 virtual double LimitTriggerValueGet(RSIEventType limit) PURE_VIRTUAL;
8864
8866 virtual void LimitTriggerValueSet(RSIEventType limit, double triggerValue) PURE_VIRTUAL;
8867
8869 virtual double LimitDurationGet(RSIEventType limit) PURE_VIRTUAL;
8870
8872 virtual void LimitDurationSet(RSIEventType limit, double seconds) PURE_VIRTUAL;
8874
8879
8894 virtual double PositionToleranceFineGet() PURE_VIRTUAL;
8895
8910 virtual void PositionToleranceFineSet(double tolerance) PURE_VIRTUAL;
8911
8926 virtual double PositionToleranceCoarseGet() PURE_VIRTUAL;
8927
8945 virtual void PositionToleranceCoarseSet(double tolerance) PURE_VIRTUAL;
8946
8961 virtual double VelocityToleranceGet() PURE_VIRTUAL;
8962
8977 virtual void VelocityToleranceSet(double tolerance) PURE_VIRTUAL;
8978
8994 virtual double SettlingTimeGet() PURE_VIRTUAL;
8995
9011 virtual void SettlingTimeSet(double time) PURE_VIRTUAL;
9012
9030 virtual bool SettleOnStopGet() PURE_VIRTUAL;
9031
9049
9050 virtual void SettleOnStopSet(bool state) PURE_VIRTUAL;
9051
9069 virtual bool SettleOnEStopGet() PURE_VIRTUAL;
9070
9087 virtual void SettleOnEStopSet(bool state) PURE_VIRTUAL;
9088
9106 virtual bool SettleOnEStopCmdEqActGet() PURE_VIRTUAL;
9107
9124 virtual void SettleOnEStopCmdEqActSet(bool state) PURE_VIRTUAL;
9126
9131
9149 virtual RSIMotorType MotorTypeGet() PURE_VIRTUAL;
9150
9167 virtual void MotorTypeSet(RSIMotorType type) PURE_VIRTUAL;
9168
9186 virtual RSIMotorDisableAction AmpDisableActionGet() PURE_VIRTUAL;
9187
9204 virtual void AmpDisableActionSet(RSIMotorDisableAction action) PURE_VIRTUAL;
9205
9224
9225 virtual RSIMotorBrakeMode BrakeModeGet() PURE_VIRTUAL;
9226
9243 virtual void BrakeModeSet(RSIMotorBrakeMode mode) PURE_VIRTUAL;
9244
9261 virtual double BrakeApplyDelayGet() PURE_VIRTUAL;
9262
9263
9281 virtual void BrakeApplyDelaySet(double seconds) PURE_VIRTUAL;
9282
9299 virtual double BrakeReleaseDelayGet() PURE_VIRTUAL;
9300
9319 virtual void BrakeReleaseDelaySet(double seconds) PURE_VIRTUAL;
9320
9322 virtual void ClosedLoopStepperSet(bool enable) PURE_VIRTUAL;
9323
9325 virtual int32_t ClosedLoopStepperVersionGet() PURE_VIRTUAL;
9326
9328 virtual uint64_t EncoderPointerGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9329
9331 virtual void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address) PURE_VIRTUAL;
9332
9334 virtual uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9335
9336
9338 virtual void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9339
9341 virtual uint64_t FeedbackPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9342
9361 virtual void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9362
9364 virtual int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9365
9367 virtual int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9368
9391 virtual void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9392
9394 virtual const char* const EncoderRatioPrimaryGet() PURE_VIRTUAL;
9395
9397 virtual void EncoderRatioPrimarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9398
9400 virtual const char* const EncoderRatioSecondaryGet() PURE_VIRTUAL;
9401
9403 virtual void EncoderRatioSecondarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9404
9406 virtual int32_t EncoderCountGet() PURE_VIRTUAL;
9407
9410 virtual void EncoderCountSet(int32_t count) PURE_VIRTUAL;
9411
9413 virtual RSIAxisGantryType GantryTypeGet() PURE_VIRTUAL;
9414
9416 virtual void GantryTypeSet(RSIAxisGantryType type) PURE_VIRTUAL;
9417
9432 virtual RSIOperationMode OperationModeGet() PURE_VIRTUAL;
9433
9448 virtual void OperationModeSet(RSIOperationMode mode) PURE_VIRTUAL;
9449
9470 virtual int32_t MotorFaultMaskGet() PURE_VIRTUAL;
9471
9498 virtual void MotorFaultMaskSet(int32_t faultMask) PURE_VIRTUAL;
9500
9505
9528 virtual void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9533 virtual void GearingEnable(Axis* masterAxis, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9534
9554 virtual void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9555
9573 virtual void GearingDisable() PURE_VIRTUAL;
9574
9576 virtual int32_t GearingNumeratorGet() PURE_VIRTUAL;
9577
9579 virtual int32_t GearingDenominatorGet() PURE_VIRTUAL;
9580
9582 virtual bool GearingEnableGet() PURE_VIRTUAL;
9583
9602 virtual int32_t GearingMasterAxisNumberGet() PURE_VIRTUAL;
9603
9617 virtual RSIAxisMasterType GearingSourceGet() PURE_VIRTUAL;
9619
9624
9642 virtual double MotionCamMasterStartGet(Axis* master) PURE_VIRTUAL;
9643
9659 virtual void MotionCamMasterStartSet(Axis* master, double startPosition) PURE_VIRTUAL;
9660
9678 virtual int32_t MotionCamRepeatFromGet() PURE_VIRTUAL;
9679
9698 virtual void MotionCamRepeatFromSet(int32_t repeatFrom) PURE_VIRTUAL;
9699
9718 virtual void MotionCamRepeatStop() PURE_VIRTUAL;
9719
9743 virtual void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
9744
9775 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;
9776
9794
9795 virtual int32_t DriveIndexGet() PURE_VIRTUAL;
9797
9802
9816 virtual double BacklashWidthGet() PURE_VIRTUAL;
9817
9831 virtual void BacklashWidthSet(double width) PURE_VIRTUAL;
9832
9846 virtual double BacklashRateGet() PURE_VIRTUAL;
9847
9861 virtual void BacklashRateSet(double rate) PURE_VIRTUAL;
9862
9863
9875 virtual double BacklashValueGet() PURE_VIRTUAL;
9877
9882
9911 virtual RSIFilterAlgorithm FilterAlgorithmGet() PURE_VIRTUAL;
9912
9938 virtual void FilterAlgorithmSet(RSIFilterAlgorithm algorithm) PURE_VIRTUAL;
9939
9966 virtual double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9967
9991 virtual void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9992
9995 virtual double FilterCoeffGet(RSIFilterGainPIVCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
10000 virtual void FilterCoeffSet(RSIFilterGainPIVCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
10001
10037 virtual int32_t FilterGainTableGet() PURE_VIRTUAL;
10038
10068 virtual void FilterGainTableSet(int32_t gainTable) PURE_VIRTUAL;
10069
10087 virtual int32_t FilterGainTableSizeGet() PURE_VIRTUAL;
10088
10090 virtual double FilterOutputGet(void) PURE_VIRTUAL;
10091
10105 virtual double FilterLowPassGet() PURE_VIRTUAL;
10106
10123 virtual void FilterLowPassSet(double frequency) PURE_VIRTUAL;
10124
10144 virtual void FilterDualLoopSet(Axis* velocityAxis, RSIMotorFeedback velocityEncoder, bool enable) PURE_VIRTUAL;
10145
10146
10148 virtual bool FilterGainSchedulingGet() PURE_VIRTUAL;
10149
10150
10152 virtual void FilterGainSchedulingSet(bool enable) PURE_VIRTUAL;
10153
10155 virtual bool IsTuneable() PURE_VIRTUAL;
10156
10174 virtual void PostFilterLowPassSet(int32_t sectionNumber, double frequency) PURE_VIRTUAL;
10175
10192 virtual void PostFilterUnityGainSet(int32_t sectionNumber) PURE_VIRTUAL;
10193
10213 virtual void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne) PURE_VIRTUAL;
10214
10230 virtual void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq) PURE_VIRTUAL;
10231
10250 virtual void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth) PURE_VIRTUAL;
10251
10271 virtual void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain) PURE_VIRTUAL;
10272
10292 virtual void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq) PURE_VIRTUAL;
10293
10310 virtual void PostFilterClear(int32_t sectionNumber) PURE_VIRTUAL;
10311
10333 virtual void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo) PURE_VIRTUAL;
10334
10336 virtual const char* const PostFilterInfoGet() PURE_VIRTUAL;
10337 //virtual RSIFilterPostFilterSection PostFilterSection;
10339
10344
10365 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10366
10388 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10390
10395
10397 virtual void PostTrajectoryGearingEnableSet(bool enable) PURE_VIRTUAL;
10398
10400 virtual bool PostTrajectoryGearingEnableGet() PURE_VIRTUAL;
10401
10403 virtual void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber) PURE_VIRTUAL;
10404
10406 virtual int32_t PostTrajectoryGearingMasterAxisGet() PURE_VIRTUAL;
10407
10409 virtual void PostTrajectoryGearingMultiplierSet(double multiplier) PURE_VIRTUAL;
10410
10412 virtual double PostTrajectoryGearingMultiplierGet() PURE_VIRTUAL;
10413
10432 virtual uint32_t NetworkIndexGet(RSINetworkIndexType indexType) PURE_VIRTUAL;
10433
10453 virtual void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex) PURE_VIRTUAL;
10455
10457
10466 virtual double BacklashHysteresisLimitGet() PURE_VIRTUAL;
10467
10475 virtual void BacklashHysteresisLimitSet(double hysteresisLimit) PURE_VIRTUAL;
10476
10501 virtual bool StepperMotorLoopbackGet() PURE_VIRTUAL;
10502
10527 virtual void StepperMotorLoopbackSet(bool loopback) PURE_VIRTUAL;
10528
10537 virtual RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse) PURE_VIRTUAL;
10538
10548 virtual void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type) PURE_VIRTUAL;
10549
10556 virtual uint64_t GearingMasterAddressGet() PURE_VIRTUAL;
10557
10559};
10560
10564class RSI_API MultiAxis : public virtual RapidCodeMotion {
10565public:
10566
10570
10585 virtual void AxisAdd(Axis *axis) PURE_VIRTUAL;
10586
10589 virtual void AxesAdd(Axis* *axes, int32_t axisCount) PURE_VIRTUAL;
10590
10604 virtual void AxisRemoveAll() PURE_VIRTUAL;
10605
10609
10626 virtual Axis* AxisGet(int32_t index) PURE_VIRTUAL;
10627
10648 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10649
10671 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10672
10676
10692 virtual double VectorVelocityGet() PURE_VIRTUAL;
10693
10710 virtual void VectorVelocitySet(double velocity) PURE_VIRTUAL;
10711
10727 virtual double VectorAccelerationGet() PURE_VIRTUAL;
10728
10752 virtual void VectorAccelerationSet(double acceleration) PURE_VIRTUAL;
10753
10769 virtual double VectorDecelerationGet() PURE_VIRTUAL;
10770
10794 virtual void VectorDecelerationSet(double deceleration) PURE_VIRTUAL;
10795
10811 virtual double VectorJerkPercentGet() PURE_VIRTUAL;
10812
10836 virtual void VectorJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
10837
10862 virtual void MoveVector(const double* const position) PURE_VIRTUAL;
10863
10866 virtual void MoveVectorRelative(const double* const relativePosition) PURE_VIRTUAL;
10867
10871
10892
10893 virtual double PathTimeSliceGet() PURE_VIRTUAL;
10894
10916
10917 virtual void PathTimeSliceSet(double seconds) PURE_VIRTUAL;
10918
10944 virtual void PathRatioSet(const double* const ratio) PURE_VIRTUAL;
10945
10948 virtual double PathRatioGet(int32_t index) PURE_VIRTUAL;
10949
10967 virtual void PathBlendSet(bool blend) PURE_VIRTUAL;
10968
10978
10979 virtual void PathPlanTypeSet(RSIPathPlanType type) PURE_VIRTUAL;
10980
10990
10991 virtual RSIPathPlanType PathPlanTypeGet() PURE_VIRTUAL;
10992
11012 virtual void PathListStart(const double* const startPosition) PURE_VIRTUAL;
11013
11035 virtual void PathLineAdd(const double* const position) PURE_VIRTUAL;
11036
11057 virtual void PathArcAdd(const double* const center, double angle) PURE_VIRTUAL;
11058
11078 virtual void PathListEnd() PURE_VIRTUAL;
11079
11097 virtual void PathMotionStart() PURE_VIRTUAL;
11098
11102
11121 virtual void MoveTrapezoidal(const double* const position, const double* const vel, const double* const accel, const double* const decel) PURE_VIRTUAL;
11122
11125 virtual void MoveTrapezoidal(const double* const position) PURE_VIRTUAL;
11126
11154 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;
11155
11158 virtual void MoveSCurve(const double* const position) PURE_VIRTUAL;
11159
11175 virtual void MoveVelocity(const double* const velocity, const double* const accel) PURE_VIRTUAL;
11176
11180 virtual void MoveVelocity(const double* const velocity) PURE_VIRTUAL;
11181
11201 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;
11202
11205 virtual void MoveRelative(const double* const relativePosition) PURE_VIRTUAL;
11206
11223 virtual void MoveVelocitySCurve(const double* const velocity, const double* const accel, const double* const jerkPct) PURE_VIRTUAL;
11224
11242 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
11243
11262 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
11263
11265 virtual int32_t AxisMapCountGet() PURE_VIRTUAL;
11266
11281 virtual uint64_t AddressGet(RSIMultiAxisAddressType addressType) PURE_VIRTUAL;
11282
11297 virtual RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type) PURE_VIRTUAL;
11298
11309 virtual bool AmpEnableGet() PURE_VIRTUAL;
11310
11311
11312};
11313
11319class RSI_API IOPoint : public virtual RapidCodeObject {
11320public:
11325
11342 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorDedicatedIn motorDedicatedInNumber);
11343
11360 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11361
11377 static IOPoint* CreateDigitalInput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11378 // use NetworkNode*
11379 static IOPoint* CreateDigitalInput(IO* io, int32_t bitNumber);
11380
11391 static IOPoint* CreateDigitalInput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11392
11406 static IOPoint* CreateDigitalInput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11407
11425 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorDedicatedOut motorDedicatedOutNumber);
11426
11443 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11444
11460 static IOPoint* CreateDigitalOutput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11461 // use NetworkNode*
11462 static IOPoint* CreateDigitalOutput(IO* io, int32_t bitNumber);
11463
11464
11477 static IOPoint* CreateDigitalOutput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11478
11492 static IOPoint* CreateDigitalOutput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11493
11508 static IOPoint* CreateAnalogInput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11509 // use RapidCodeNetworkNode*
11510 static IOPoint* CreateAnalogInput(IO* io, int32_t analogChannel);
11511
11526 static IOPoint* CreateAnalogOutput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11527 // use RapidCodeNetworkNode*
11528 static IOPoint* CreateAnalogOutput(IO* io, int32_t analogChannel);
11529
11531
11535
11538 virtual uint64_t AddressGet() PURE_VIRTUAL;
11539
11542 virtual int32_t MaskGet() PURE_VIRTUAL;
11543
11546 virtual bool IsDigital() PURE_VIRTUAL;
11547
11548
11551 virtual bool IsOutput() PURE_VIRTUAL;
11552
11556
11560 virtual bool Get() PURE_VIRTUAL;
11561
11568 virtual void Set(bool state) PURE_VIRTUAL;
11569
11573
11577 virtual double ValueGet() PURE_VIRTUAL;
11578
11582 virtual void ValueSet(double valueDouble) PURE_VIRTUAL;
11583};
11584
11588class RSI_API RTOS {
11589
11590public:
11591#if defined(_WIN32)
11596
11600
11605 static INtimeStatus INtimeStatusGet(const char* const nodeName);
11606
11610
11615 static INtimeStatus INtimeStart(const char* const nodeName);
11616
11620
11625 static INtimeStatus INtimeStop(const char* const nodeName);
11626
11630
11635 static INtimeStatus INtimeRestart(const char* const nodeName);
11636
11639 static const char* const INtimeCatalogRMPGet();
11640
11643 static const char* const INtimeCatalogRMPNetworkGet();
11644
11647 static uint32_t INtimeNodeCountGet();
11648
11652 static const char* const INtimeNodeNameGet(uint32_t nodeNumber);
11653
11657 static bool INtimeNodeIsLocal(uint32_t nodeNumber);
11659#endif // _WIN32
11660};
11661
11663class RSI_API Trace
11664{
11665public:
11670
11684 static void MaskSet(RSITrace mask);
11685
11702 static void MaskOnSet(RSITrace maskOn);
11703
11704
11725 static bool MaskOnGet(RSITrace maskOn);
11726
11743 static void MaskOffSet(RSITrace maskOff);
11744
11758 static void MaskClear();
11759
11775 static int32_t FileSet(const char* const fileName);
11776
11790 static void FileClose();
11791
11807 static void InjectMessage(RSITrace traceLevel, const char* const message);
11808
11810};
11811
11813
11815
11819class RSI_API IO : public virtual RapidCodeObject {
11820public:
11821
11822 friend class MotionController;
11823
11828
11830 RapidCodeNetworkNode* NetworkNode;
11833
11835
11840
11841
11875 virtual bool IOExists() PURE_VIRTUAL;
11876
11894 virtual int32_t NumberGet() PURE_VIRTUAL;
11896
11901
11902
11903
11934 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
11935
11969 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
11970
12002 virtual void DigitalOutSet(int32_t digitalOutNumber, bool outValue) PURE_VIRTUAL;
12003
12027 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
12028
12061 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
12062
12095 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
12097
12107 virtual const char* const UserLabelGet() PURE_VIRTUAL;
12108
12115 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
12116};
12117
12118} // namespace RapidCode
12119
12120} // namespace RSI
12121
12122#if defined(__cplusplus)
12123}
12124#endif
12125
12126#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:5694
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:5664
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:11819
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition rsi.h:11830
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:11832
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:11319
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:762
MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber)
Get a MathBlock configuration.
RapidCodeOS * OS
Provides access to operating system (Windows) features.
Definition rsi.h:3736
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:10564
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:11588
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:608
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:4125
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:4135
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:505
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:178
RsiError(const RsiError &copyFrom)
Copy constructor for RsiError.
Definition rsi.h:144
Represents the error details thrown as an exception by all RapidCode classes. This class contains an ...
Definition rsi.h:105
char fileName[RSI_ERROR_TEXT_SIZE]
source file name
Definition rsi.h:123
bool isWarning
Whether the error is or is not a warning.
Definition rsi.h:114
static constexpr uint32_t RSI_ERROR_TEXT_SIZE
Error message text.
Definition rsi.h:116
const char * what() const noexcept
Returns a null terminated character sequence that may be used to identify the exception.
Definition rsi.h:167
char shortText[RSI_ERROR_TEXT_SIZE]
Error short text.
Definition rsi.h:121
int32_t lineNumber
Source code line number.
Definition rsi.h:110
char functionName[RSI_ERROR_TEXT_SIZE]
Function name of the raised the error.
Definition rsi.h:119
RSIErrorMessage number
Error number.
Definition rsi.h:108
int32_t objectIndex
Object index (0-based index of the object that has the error).
Definition rsi.h:112
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:11664
RSIFilterAlgorithm
Filter algorithms.
Definition rsienums.h:1095
RSIPDOType
Compensator output types.
Definition rsienums.h:1334
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1340
RSICompensatorOutputType
Compensator output types.
Definition rsienums.h:1328
RSINetworkStartMode
Network start modes.
Definition rsienums.h:577
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
Definition rsienums.h:1082
RSITrace
Trace masks.
Definition rsienums.h:529
RSIMotorStepperPulse
Pulse A or B.
Definition rsienums.h:1185
RSIAxisGantryType
How to combine Axis Feedback Positions.
Definition rsienums.h:1075
RSINetworkState
State of network.
Definition rsienums.h:557
RSIControllerAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition rsienums.h:404
RSIMotorDisableAction
Action for when a motor is disabled.
Definition rsienums.h:1255
RSIEventType
Event Types or Status Bits.
Definition rsienums.h:911
RSIMotionType
Streaming motion types.
Definition rsienums.h:979
RSIDataType
Data types for User Limits and other triggers.
Definition rsienums.h:644
RSIUserLimitLogic
Logic options for User Limits.
Definition rsienums.h:631
RSIMotorIoTypeMask
Possible mask bits for Motor I/O types.
Definition rsienums.h:1201
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1051
RSIAxisAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition rsienums.h:425
RSIProcessorType
Controller's processor type.
Definition rsienums.h:294
RSIMotorStepperPulseType
Stepper pulse type.
Definition rsienums.h:1191
RSIMotorType
Motor Type.
Definition rsienums.h:1247
RSINetworkStartError
Network start errors.
Definition rsienums.h:583
RSIMotorGeneralIo
Motor I/O bit numbers.
Definition rsienums.h:862
RSIMotionAttrMask
Attribute masks for motion. You cannot mix RSIMotionAttrMaskDELAY and RSIMotionAttrMaskAPPEND.
Definition rsienums.h:995
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition rsienums.h:487
RSIFilterGainPIDCoeff
PID gain coefficients.
Definition rsienums.h:1104
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:618
RSINetworkOutputAddressType
Network output address types.
Definition rsienums.h:1321
INtimeStatus
INtime status values.
Definition rsienums.h:1293
RSIMotionHoldType
Types for MotionHold attribute.
Definition rsienums.h:1031
RSIControllerType
Controller type.
Definition rsienums.h:283
RSIMotorFaultMask
Mask values for several motor faults.
Definition rsienums.h:1235
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:396
RSIMotorBrakeMode
Brake modes.
Definition rsienums.h:1261
RSIErrorMessage
All possible RSI Error Messages.
Definition rsienums.h:17
RSINetworkType
Type of Network topology.
Definition rsienums.h:611
RSIMotorIoType
Possible configurations for Motor I/O.
Definition rsienums.h:1164
RSIAxisPositionInput
Feedback Positions for each Axis.
Definition rsienums.h:1069
RSINodeType
Valid Node types.
Definition rsienums.h:661
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:958
RSIMotorDedicatedIn
Dedicated Input bits per motor.
Definition rsienums.h:834
RSIMotorFeedback
Encoders per motor.
Definition rsienums.h:1089
RSIMotorDedicatedOut
Dedicated Output bits per motor.
Definition rsienums.h:856
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1267
RSIPathPlanType
Path motion planning types.
Definition rsienums.h:989
RSINetworkTechnologyType
Network technology type.
Definition rsienums.h:1288
RSINetworkIndexType
Network index types for Axis.
Definition rsienums.h:1301
RSINetworkStartupMethod
Network startup methods.
Definition rsienums.h:569
RSIFilterGainPIVCoeff
PIV gain coefficients.
Definition rsienums.h:1125
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1154
int32_t CpuAffinity
[Linux] Indicate the CPU core on which the RMP and RMPNetwork processes run.
Definition rsi.h:961
int32_t RmpThreadPriorityMax
[Linux] The maximum thread priority. All threads of the RMP and RMPNetwork will be based off of this....
Definition rsi.h:973
CreationParameters()
Instantiate with default values and all memory zeroed out.
Definition rsi.h:886
CreationParameters for MotionController::Create.
Definition rsi.h:826
RSIDataType ProcessDataType
Data type for processing.
Definition rsi.h:3714
MathBlock configuration structure.
Definition rsi.h:3707
RSIDataType OutputDataType
Data type for Output. (optional)
Definition rsi.h:3712
uint64_t OutputAddress
Host memory address for Output. The MathBlock will write its result to this address....
Definition rsi.h:3713
uint64_t InputAddress0
Host memory address for Input0. Represents the left-hand side operand in math operations.
Definition rsi.h:3708
RSIDataType InputDataType0
Data type for Input0. This is the data type of the left-hand side operand in math operations.
Definition rsi.h:3709
uint64_t InputAddress1
Host memory address for Input1. Represents the right-hand side operand in math operations.
Definition rsi.h:3710
RSIDataType InputDataType1
Data type for Input1. This is the data type of the right-hand side operand in math operations.
Definition rsi.h:3711
RSIMathBlockOperation Operation
Math operation to be performed. (+, -, *, /, etc) use RSIMathBlockOperationNONE to disable a MathBloc...
Definition rsi.h:3715
Union representing a generic RMP firmware value with multiple data types, stored in 64-bits.
Definition rsi.h:476
float Float
Single precision (32-bit) floating-point.
Definition rsi.h:484
int64_t Int64
64-bit signed integer.
Definition rsi.h:486
uint8_t UInt8
8-bit unsigned integer.
Definition rsi.h:479
int8_t Int8
8-bit signed integer.
Definition rsi.h:478
double Double
Double precision (64-bit) floating-point.
Definition rsi.h:485
int32_t Int32
32-bit signed integer.
Definition rsi.h:482
uint16_t UInt16
16-bit unsigned integer.
Definition rsi.h:481
int16_t Int16
16-bit signed integer.
Definition rsi.h:480
bool Bool
Boolean value.
Definition rsi.h:477
uint32_t UInt32
32-bit unsigned integer.
Definition rsi.h:483
uint64_t UInt64
64-bit unsigned integer.
Definition rsi.h:487