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 
16 #if defined(_WIN32)
17 # if !defined(__INTIME__)
18 # define HAS_CARTESIAN_ROBOT 1
19 # endif
20 # if !defined(RSI_API)
21 # if defined(RSIDLL)
22 # define RSI_API __declspec(dllexport)
23 # else
24 # define RSI_API __declspec(dllimport)
25 # endif
26 # endif
27 #elif defined(__linux__)
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 
36 
37 
38 #if defined(__cplusplus)
39 extern "C"
40 {
41 #endif
42 
44 namespace RSI
45 {
46 
48 namespace RapidCode
49 {
50 
51 class MotionController;
52 class Axis;
53 class MultiAxis;
54 class IO;
55 class RapidCodeNetworkNode;
56 class IOPoint;
57 class RTOS;
58 
59 
62 
64 class StaticInstanceMediator
65 {
66 private:
67  bool isValid;
68 public:
69  bool IsValid() { return isValid; }
70  void OnDelete() { isValid = false; }
71  void OnCreate() { isValid = true; }
72 };
73 
75 
104 class RsiError : public std::exception
105 {
106 public:
110  int32_t lineNumber;
112  int32_t objectIndex;
114  bool isWarning;
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';
131  number = RSIErrorMessage::RSIMessageOK;
132  lineNumber = -1;
133  isWarning = false;
134  objectIndex = -1;
135  }
136  RsiError(const RsiError& copyFrom)
137  {
138 #if defined(_WIN32)
139  strncpy_s(text, RSI_ERROR_TEXT_SIZE, copyFrom.text, RSI_ERROR_TEXT_SIZE);
143 #elif defined(__linux__)
144  strncpy(text, copyFrom.text, RSI_ERROR_TEXT_SIZE);
145  strncpy(functionName, copyFrom.functionName, RSI_ERROR_TEXT_SIZE);
146  strncpy(shortText, copyFrom.shortText, RSI_ERROR_TEXT_SIZE);
147  strncpy(fileName, copyFrom.fileName, RSI_ERROR_TEXT_SIZE);
148 #endif
149  number = copyFrom.number;
150  lineNumber = copyFrom.lineNumber;
151  isWarning = copyFrom.isWarning;
152  objectIndex = copyFrom.objectIndex;
153  }
154  ~RsiError()
155  {
156  }
157 
159  virtual const char* what() const noexcept { return text; }
160 };
161 
162 
163 
165 
173 class RSI_API RapidCodeObject {
174 public:
179 
180 
181 
195  virtual const char* const VersionGet() PURE_VIRTUAL;
196 
198  virtual int32_t MpiVersionMajor() PURE_VIRTUAL;
200  virtual int32_t MpiVersionMinor() PURE_VIRTUAL;
202  virtual int32_t MpiVersionRelease() PURE_VIRTUAL;
204  virtual int32_t RSIVersionMajor() PURE_VIRTUAL;
206  virtual int32_t RSIVersionMinor() PURE_VIRTUAL;
208  virtual int32_t RSIVersionMicro() PURE_VIRTUAL;
210  virtual int32_t RSIVersionPatch() PURE_VIRTUAL;
211 
215  virtual int32_t NumberGet() PURE_VIRTUAL;
217 
222 
223 
224 
225 
253  virtual int32_t ErrorLogCountGet() PURE_VIRTUAL;
254 
270  virtual const RsiError* const ErrorLogGet() PURE_VIRTUAL;
271 
287  virtual void ErrorLogClear() PURE_VIRTUAL;
288 
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 
343  virtual void Trace(bool state) PURE_VIRTUAL;
344 
361  virtual void TraceMaskOnSet(RSITrace maskOn) PURE_VIRTUAL;
362 
363 
386  virtual bool TraceMaskOnGet(RSITrace maskOn) PURE_VIRTUAL;
387 
405  virtual void TraceMaskOffSet(RSITrace maskOff) PURE_VIRTUAL;
406 
422  virtual void TraceMaskClear() PURE_VIRTUAL;
423 
440  virtual void TraceFileSet(const char* const fileName) PURE_VIRTUAL;
441 
456  virtual void TraceFileClose() PURE_VIRTUAL;
457 
474  virtual void TraceInjectMessage(RSITrace traceLevel, const char* const message) PURE_VIRTUAL;
475 
476 
477 
478 
480 };
481 
483 
497 class RSI_API RapidCodeOS {
498 public:
499 
504 
518  virtual void Sleep(int32_t milliseconds) PURE_VIRTUAL;
519 
539  virtual int32_t KeyGet(int32_t milliseconds) PURE_VIRTUAL;
540 
551  virtual int32_t TimerCountGet() PURE_VIRTUAL;
552 
562  virtual int32_t TimerFrequencyGet() PURE_VIRTUAL;
563 
564 
577  virtual int32_t PerformanceTimerCountGet() PURE_VIRTUAL;
578 
591  virtual int32_t PerformanceTimerFrequencyGet() PURE_VIRTUAL;
592 
594 };
595 
597 
600 class RSI_API RapidCodeInterrupt : public virtual RapidCodeObject {
601 public:
605 
607  virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
608 
609 
633  virtual RSIEventType InterruptWait(int32_t milliseconds) PURE_VIRTUAL;
634 
655  virtual const char* const InterruptNameGet() PURE_VIRTUAL;
656 
679  virtual int32_t InterruptSampleTimeGet() PURE_VIRTUAL;
680 
681 
704  virtual int32_t InterruptSourceNumberGet() PURE_VIRTUAL;
705 
707  virtual uint16_t InterruptMotionIdGet() PURE_VIRTUAL;
708 
710  virtual void InterruptWake() PURE_VIRTUAL;
711 
713  virtual void InterruptMaskClear() PURE_VIRTUAL;
714 
716  virtual void InterruptMaskAllSet() PURE_VIRTUAL;
717 
719  virtual void InterruptMaskOnSet(RSIEventType eventType) PURE_VIRTUAL;
720 
722  virtual void InterruptMaskOffSet(RSIEventType eventType) PURE_VIRTUAL;
723 
725  virtual bool InterruptMaskOnGet(RSIEventType eventType) PURE_VIRTUAL;
726 
727 
742  virtual uint64_t InterruptUserDataGet(uint32_t userDataIndex) PURE_VIRTUAL;
743 
744 
758  virtual double InterruptUserDataDoubleGet(uint32_t userDataIndex) PURE_VIRTUAL;
759 };
760 
762 
770 class RSI_API MotionController : public virtual RapidCodeInterrupt {
771 protected:
773  StaticInstanceMediator* _mediator;
774 
775 public:
776 
777  // Static functions or attributes should be grouped together.
782 
784  static inline constexpr uint32_t NetworkStartTimeoutMillisecondsDefault = 30000;
785 
787  static inline constexpr uint32_t AxisCountMaximum = 64;
788 
790  static inline constexpr uint32_t MotionCountMaximum = 64;
791 
793  static inline constexpr uint32_t NetworkNodeCountMaximum = 64;
794 
796  static inline constexpr uint32_t RecorderCountMaximum = 64;
797 
799  static inline constexpr uint32_t CompensatorCountMaximum = 64;
800 
802  static inline constexpr uint32_t UserBufferDataCountMaximum = 1024;
803 
805  static inline constexpr uint32_t SequencerGlobalCountMaximum = 191;
806 
808  static inline constexpr double SampleRateDefault = 1000.0;
809 
811 
812  // Static functions or attributes should be grouped together.
817 
820  {
825 
830  static inline constexpr uint32_t PathLengthMaximum = 256;
831 
837  static inline constexpr int32_t CpuAffinityDefault = -1;
838 
843  static inline constexpr int32_t RmpThreadPriorityMaximumDefault = 45;
844 
849  static inline constexpr int32_t RmpThreadPriorityRange = 8;
850 
855  static inline constexpr int32_t RmpThreadPriorityMinimum = RmpThreadPriorityRange + 1;
856 
861  static inline constexpr int32_t RmpThreadPriorityMaximum = 99;
862 
867  static inline constexpr int32_t RmpThreadPriorityNoRealTime = 0;
869 
870 
875 
881  {
882  std::memset(rmpPath, '\0', PathLengthMaximum);
883  std::memset(primaryNetworkInterfaceName, '\0', PathLengthMaximum);
884  std::memset(secondaryNetworkInterfaceName, '\0', PathLengthMaximum);
885 #if defined(_WIN32)
886  std::memset(nodeName, '\0', PathLengthMaximum);
887 #elif defined(__linux__)
888  cpuAffinity = CpuAffinityDefault;
889  rmpThreadPriorityMax = RmpThreadPriorityMaximumDefault;
890 #endif
891  }
893 
898 
903  char rmpPath[PathLengthMaximum];
904 
909  char primaryNetworkInterfaceName[PathLengthMaximum];
910 
915  char secondaryNetworkInterfaceName[PathLengthMaximum];
917 
918  // Control which platform specific parameters are available
919 #if defined(_WIN32) && defined(__linux__)
920  static_assert(false, "_WIN32 and __linux__ defined. Double check preprocessor definitions");
921 #elif !defined(_WIN32) && !defined(__linux__) && !defined(DOXYGEN)
922  static_assert(false, "Neither _WIN32 nor __linux__ are defined AND this is not a documentation build. Double check preprocessor definitions");
923 #endif //defined(_WIN32) && defined(__linux__)
924 #if defined(_WIN32) || defined(DOXYGEN)
925 
930 
935  char nodeName[PathLengthMaximum];
936 
938 #endif //defined(_WIN32)
939 #if defined(__linux__) || defined(DOXYGEN)
940 
945 
955  int32_t cpuAffinity;
956 
968 
970 # endif // defined(__linux__)
971  };
972 
983  static MotionController* Create(CreationParameters* creationParameters);
984 
985 #if defined(_WIN32)
986  static MotionController* CreateFromSoftware();
1013 
1018  static MotionController* CreateFromSoftware(const char* const RtaPath);
1019 
1025  static MotionController* CreateFromSoftware(const char* const RtaPath, const char* const NodeName);
1026 
1055 #endif // defined(_WIN32)
1056 
1058 
1059 
1060 
1065 
1084  virtual Axis* AxisGet(int32_t axisNumber) PURE_VIRTUAL;
1085 
1102  virtual MultiAxis* MultiAxisGet(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1103 
1117  virtual MultiAxis* LoadExistingMultiAxis(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1118 
1133  virtual RapidCodeNetworkNode* NetworkNodeGet(int32_t nodeNumber) PURE_VIRTUAL;
1134 
1150  virtual IO* IOGet(int32_t nodeNumber) PURE_VIRTUAL;
1151 
1174  virtual void Delete(void) PURE_VIRTUAL;
1176 
1181 
1192  virtual void Reset() PURE_VIRTUAL;
1193 
1196  virtual void Refresh() PURE_VIRTUAL;
1197 
1203  virtual void Shutdown() PURE_VIRTUAL;
1205 
1210 
1235  virtual int32_t SampleCounterGet() PURE_VIRTUAL;
1236 
1253  virtual double ProcessorUsageGet() PURE_VIRTUAL;
1254 
1267  virtual void ProcessorUsageClear() PURE_VIRTUAL;
1268 
1272  virtual uint32_t FirmwareTimingDeltaGet() PURE_VIRTUAL;
1273 
1274 
1276 
1281 
1282 
1283 
1308  virtual uint32_t SerialNumberGet(void) PURE_VIRTUAL;
1309 
1330  virtual void SampleWait(uint32_t samples) PURE_VIRTUAL;
1331 
1332 
1334  virtual RSIControllerType ControllerTypeGet() PURE_VIRTUAL;
1335 
1337  virtual const char* const ServerNameGet() PURE_VIRTUAL;
1338 
1340  virtual int32_t ServerPortGet() PURE_VIRTUAL;
1341 
1342 
1343 
1344 
1369  virtual RSIProcessorType ProcessorTypeGet() PURE_VIRTUAL;
1370 
1375  virtual void SampleRateSet(double sampleRate) PURE_VIRTUAL;
1376 
1379  virtual double SampleRateGet() PURE_VIRTUAL;
1380 
1400  virtual int32_t AxisCountGet() PURE_VIRTUAL;
1401 
1423  virtual void AxisCountSet(int32_t axisCount) PURE_VIRTUAL;
1424 
1427  virtual void AxisCountSet(int32_t axisCount, bool setMotorFilterSupervisor) PURE_VIRTUAL;
1428 
1431  virtual bool IsLicensed() PURE_VIRTUAL;
1432 
1434  virtual int32_t PackageVariantGet() PURE_VIRTUAL;
1435 
1437  virtual int32_t AxisLicenseCountGet() PURE_VIRTUAL;
1438 
1440  virtual bool MechaWareLicenseGet() PURE_VIRTUAL;
1441 
1443  virtual int32_t UnsupportedOptionSet(int32_t option) PURE_VIRTUAL;
1444 
1471  virtual int32_t MotionCountGet() PURE_VIRTUAL;
1472 
1492  virtual void MotionCountSet(int32_t motionCount) PURE_VIRTUAL;
1493 
1521  virtual int32_t UserVersionGet() PURE_VIRTUAL;
1522 
1550  virtual void UserVersionSet(int32_t version) PURE_VIRTUAL;
1551 
1554  virtual int32_t ExternalMemorySizeGet() PURE_VIRTUAL;
1555 
1575  virtual void AxisFrameBufferSizeSet(int32_t axisNumber, int32_t frameBufferSize) PURE_VIRTUAL;
1576 
1593  virtual int32_t AxisFrameBufferSizeGet(int32_t axisNumber) PURE_VIRTUAL;
1595 
1600 
1601 
1602 
1623  virtual const char* const FirmwareVersionGet() PURE_VIRTUAL;
1624 
1645  virtual int32_t FirmwareOptionGet() PURE_VIRTUAL;
1646 
1648  virtual bool HasMechaWare() PURE_VIRTUAL;
1649 
1676  virtual int32_t MemoryGet(uint64_t address) PURE_VIRTUAL;
1677 
1678 
1699  virtual double MemoryDoubleGet(uint64_t address) PURE_VIRTUAL;
1700 
1729  virtual void MemoryBlockGet(uint64_t address, void* dataStart, int32_t size) PURE_VIRTUAL;
1730 
1748  virtual void MemorySet(uint64_t address, int32_t data) PURE_VIRTUAL;
1749 
1750 
1751 
1771  virtual void MemoryDoubleSet(uint64_t address, double dataDouble) PURE_VIRTUAL;
1772 
1801  virtual void MemoryBlockSet(uint64_t address, const void* const dataStart, int32_t size) PURE_VIRTUAL;
1802 
1824  virtual uint32_t FirmwareAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1825 
1826 
1827 
1828 
1854  virtual uint64_t HostAddressGet(uint32_t firmwareAddress) PURE_VIRTUAL;
1855 
1856 
1857 
1883  virtual int32_t BackgroundCycleCounterGet() PURE_VIRTUAL;
1884 
1885 
1886 
1887 
1899  virtual uint64_t AddressFromStringGet(const char* const addressName) PURE_VIRTUAL;
1900 
1901 
1902 
1913  virtual const char* const StringFromAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1914 
1932  virtual uint64_t AddressGet(RSIControllerAddressType type) PURE_VIRTUAL;
1933 
1954  virtual uint64_t AddressGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1955 
1956 
1972  virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type) PURE_VIRTUAL;
1973 
1990  virtual bool MotionHoldGateGet(int32_t gateNumber) PURE_VIRTUAL;
1991 
1992 
1993 
2012  virtual void MotionHoldGateSet(int32_t gateNumber, bool hold) PURE_VIRTUAL;
2014 
2019 
2021  virtual RSINetworkTechnologyType NetworkTechnologyTypeGet() PURE_VIRTUAL;
2022 
2024  virtual RSINetworkType NetworkTypeGet() PURE_VIRTUAL;
2025 
2028  virtual int32_t NetworkNodeCountGet() PURE_VIRTUAL;
2029 
2031  virtual void NetworkStart() PURE_VIRTUAL;
2032 
2041  virtual void NetworkStart(RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2042 
2045  virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2046 
2049  virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
2050 
2052  virtual void NetworkShutdown() PURE_VIRTUAL;
2053 
2056  virtual RSINetworkState NetworkStateGet() PURE_VIRTUAL;
2057 
2059  virtual int32_t NetworkCounterGet() PURE_VIRTUAL;
2060 
2062  virtual int32_t NetworkInputCountGet() PURE_VIRTUAL;
2063 
2065  virtual int32_t NetworkInputBitSizeGet(int32_t index) PURE_VIRTUAL;
2066 
2070  virtual const char* const NetworkInputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2071 
2074  virtual int32_t NetworkInputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2075 
2078  virtual const char* const NetworkInputNameGet(int32_t index) PURE_VIRTUAL;
2079 
2083  virtual uint64_t NetworkInputValueGet(int32_t index) PURE_VIRTUAL;
2084 
2085 
2086 
2090  virtual uint64_t NetworkInputAddressGet(int32_t index) PURE_VIRTUAL;
2091 
2095  virtual int32_t NetworkOutputCountGet() PURE_VIRTUAL;
2096 
2099  virtual int32_t NetworkOutputBitSizeGet(int32_t index) PURE_VIRTUAL;
2100 
2101 
2105  virtual const char* const NetworkOutputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2106 
2108  virtual int32_t NetworkOutputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2109 
2111  virtual const char* const NetworkOutputNameGet(int32_t index) PURE_VIRTUAL;
2112 
2129  virtual uint64_t NetworkOutputValueGet(int32_t index) PURE_VIRTUAL;
2130 
2148  virtual void NetworkOutputValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2149 
2170  virtual uint64_t NetworkOutputAddressGet(int32_t index) PURE_VIRTUAL;
2171 
2174  virtual uint64_t NetworkOutputAddressGet(int32_t index, RSINetworkOutputAddressType type) PURE_VIRTUAL;
2175 
2187  virtual uint64_t NetworkOutputIntendedValueGet(int32_t index) PURE_VIRTUAL;
2188 
2201  virtual void NetworkOutputOverrideSet(int32_t index, bool outputOverride) PURE_VIRTUAL;
2202 
2214  virtual bool NetworkOutputOverrideGet(int32_t index) PURE_VIRTUAL;
2215 
2216 
2217 
2218 
2236  virtual void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2237 
2251  virtual uint64_t NetworkOutputOverrideValueGet(int32_t index) PURE_VIRTUAL;
2252 
2268  virtual uint64_t NetworkOutputSentValueGet(int32_t index) PURE_VIRTUAL;
2269 
2273  virtual int32_t NetworkLogMessageCountGet() PURE_VIRTUAL;
2274 
2276  virtual RSINetworkStartError LastNetworkStartErrorGet() PURE_VIRTUAL;
2277 
2282  virtual const char* const NetworkLogMessageGet(int32_t messageIndex) PURE_VIRTUAL;
2283 
2285  virtual void NetworkTimingEnableSet(bool enable) PURE_VIRTUAL;
2286 
2288  virtual void NetworkTimingClear() PURE_VIRTUAL;
2289 
2291  virtual uint32_t NetworkTimingDeltaGet() PURE_VIRTUAL;
2292 
2294  virtual uint32_t NetworkTimingMinGet() PURE_VIRTUAL;
2295 
2297  virtual uint32_t NetworkTimingMaxGet() PURE_VIRTUAL;
2298 
2300  virtual void NetworkTimingThresholdLowSet(uint32_t microseconds) PURE_VIRTUAL;
2301 
2303  virtual void NetworkTimingThresholdHighSet(uint32_t microseconds) PURE_VIRTUAL;
2304 
2306  virtual uint32_t NetworkTimingThresholdLowCountGet() PURE_VIRTUAL;
2307 
2309  virtual uint32_t NetworkTimingThresholdHighCountGet() PURE_VIRTUAL;
2310 
2312  virtual bool NetworkSynchronizedGet() PURE_VIRTUAL;
2314 
2319 
2320 
2321 
2341  virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
2342 
2343 
2344 
2345 
2367  virtual void InterruptWake() PURE_VIRTUAL;
2368 
2399  virtual void SyncInterruptEnableSet(bool enable) PURE_VIRTUAL;
2400 
2429  virtual void SyncInterruptPeriodSet(uint32_t samples) PURE_VIRTUAL;
2430 
2453  virtual int32_t SyncInterruptWait() PURE_VIRTUAL;
2454 
2456  virtual bool ServiceThreadStateGet() PURE_VIRTUAL;
2457 
2471  virtual int32_t SyncInterruptHostProcessTimeGet() PURE_VIRTUAL;
2472 
2473 
2474 
2476  virtual int32_t SyncInterruptHostProcessFlagGet() PURE_VIRTUAL;
2477 
2493  virtual void SyncInterruptHostProcessFlagSet(bool hostProcessFlag) PURE_VIRTUAL;
2494 
2508  virtual bool SyncInterruptHostProcessStatusBitGet() PURE_VIRTUAL;
2509 
2522  virtual void SyncInterruptHostProcessStatusClear() PURE_VIRTUAL;
2523 
2552 
2553  virtual void ServiceThreadEnableSet(bool enable) PURE_VIRTUAL;
2555 
2560 
2561 
2562 
2583  virtual int32_t RecorderCountGet() PURE_VIRTUAL;
2584 
2605  virtual void RecorderCountSet(int32_t recorderCount) PURE_VIRTUAL;
2606 
2625  virtual void RecorderPeriodSet(uint32_t samples) PURE_VIRTUAL;
2626 
2628  virtual void RecorderPeriodSet(int32_t recorderNumber, uint32_t samples) PURE_VIRTUAL;
2629 
2648  virtual void RecorderCircularBufferSet(bool enable) PURE_VIRTUAL;
2649 
2651  virtual void RecorderCircularBufferSet(int32_t recorderNumber, bool enable) PURE_VIRTUAL;
2652 
2670  virtual void RecorderDataCountSet(int32_t count) PURE_VIRTUAL;
2671 
2673  virtual void RecorderDataCountSet(int32_t recorderNumber,int32_t count) PURE_VIRTUAL;
2674 
2693  virtual void RecorderDataAddressSet(int32_t index, uint64_t address) PURE_VIRTUAL;
2694 
2696  virtual void RecorderDataAddressSet(int32_t recorderNumber,int32_t index, uint64_t address) PURE_VIRTUAL;
2697 
2698 
2704  virtual void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t* const addresses, int32_t addressCount) PURE_VIRTUAL;
2705 
2726  virtual void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2727 
2729  virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2730 
2731 
2733  virtual void RecorderConfigureToTriggerOnMotion(MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2734 
2736  virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2737 
2755  virtual bool RecorderEnabledGet() PURE_VIRTUAL;
2756 
2758  virtual bool RecorderEnabledGet(int32_t recorderNumber ) PURE_VIRTUAL;
2759 
2778  virtual int32_t RecorderRecordCountGet() PURE_VIRTUAL;
2779 
2781  virtual int32_t RecorderRecordCountGet(int32_t recorderNumber ) PURE_VIRTUAL;
2782 
2798  virtual int32_t RecorderRecordMaxCountGet() PURE_VIRTUAL;
2799 
2801  virtual int32_t RecorderRecordMaxCountGet(int32_t recorderNumber) PURE_VIRTUAL;
2802 
2819  virtual void RecorderStart() PURE_VIRTUAL;
2820 
2822  virtual void RecorderStart(int32_t recorderNumber) PURE_VIRTUAL;
2823 
2842  virtual void RecorderStop() PURE_VIRTUAL;
2843 
2845  virtual void RecorderStop(int32_t recorderNumber) PURE_VIRTUAL;
2846 
2847 
2848 
2866  virtual const int32_t* const RecorderRecordDataGet() PURE_VIRTUAL;
2867 
2869  virtual const int32_t* const RecorderRecordDataGet(int32_t recorderNumber) PURE_VIRTUAL;
2870 
2887  virtual void RecorderRecordDataRetrieve() PURE_VIRTUAL;
2888 
2910  virtual int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount) PURE_VIRTUAL;
2911 
2913  virtual void RecorderRecordDataRetrieve(int32_t recorderNumber) PURE_VIRTUAL;
2914 
2933  virtual int32_t RecorderRecordDataValueGet(int32_t index) PURE_VIRTUAL;
2934 
2936  virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2937 
2958  virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
2959 
2961  virtual double RecorderRecordDataDoubleGet(int32_t index) PURE_VIRTUAL;
2962 
2964  virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2965 
2986  virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
2987 
3007  virtual void RecorderBufferHighCountSet(int32_t bufferHighCount) PURE_VIRTUAL;
3008 
3010  virtual void RecorderBufferHighCountSet(int32_t recorderNumber, int32_t bufferHighCount) PURE_VIRTUAL;
3011 
3028  virtual void RecorderReset() PURE_VIRTUAL;
3029 
3031  virtual void RecorderReset(int32_t recorderNumber) PURE_VIRTUAL;
3032 
3046  virtual int32_t RecorderBufferSizeGet(int32_t recorderNumber) PURE_VIRTUAL;
3047 
3067  virtual void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize) PURE_VIRTUAL;
3069 
3074 
3075 
3076 
3077 
3104  virtual int32_t CompensatorCountGet() PURE_VIRTUAL;
3105 
3127  virtual void CompensatorCountSet(int32_t compensatorCount) PURE_VIRTUAL;
3128 
3141  virtual int32_t CompensatorPointCountGet(int32_t compensatorNumber) PURE_VIRTUAL;
3142 
3165  virtual void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount) PURE_VIRTUAL;
3166 
3182  virtual int32_t CompensatorDimensionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3183 
3208  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;
3209 
3210 
3211 
3241 
3242  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;
3243 
3244 
3265  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;
3266 
3267 
3268 
3289  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;
3290 
3304  virtual void CompensatorTableSet(int32_t compensatorNumber, const double* const table) PURE_VIRTUAL;
3305 
3319  virtual void CompensatorTableGet(int32_t compensatorNumber, double* table) PURE_VIRTUAL;
3320 
3341  virtual double CompensatorPositionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3342 
3343 
3344 
3345 
3346 
3347 
3361 
3362  virtual void CompensatorTableClear(int32_t compensatorNumber) PURE_VIRTUAL;
3363 
3375  virtual void CompensatorDisable(int32_t compensatorNumber) PURE_VIRTUAL;
3376 
3379  virtual void CompensatorDisable(int32_t compensatorNumber, bool force) PURE_VIRTUAL;
3380 
3389  virtual void CompensatorEnable(int32_t compensatorNumber) PURE_VIRTUAL;
3390 
3392 
3397 
3398 
3399 
3421  virtual int32_t UserLimitCountGet() PURE_VIRTUAL;
3422 
3444  virtual void UserLimitCountSet(int32_t userLimitCount) PURE_VIRTUAL;
3445 
3467  virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot) PURE_VIRTUAL;
3468 
3471  virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration) PURE_VIRTUAL;
3472 
3474  virtual RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number) PURE_VIRTUAL;
3475 
3477  virtual RSIAction UserLimitActionGet(int32_t number) PURE_VIRTUAL;
3478 
3480  virtual int32_t UserLimitAxisNumberGet(int32_t number) PURE_VIRTUAL;
3481 
3483  virtual double UserLimitDurationGet(int32_t number) PURE_VIRTUAL;
3484 
3486  virtual bool UserLimitSingleShotGet(int32_t number) PURE_VIRTUAL;
3487 
3514  virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32) PURE_VIRTUAL;
3515 
3539  virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfDouble, double limitValueDouble) PURE_VIRTUAL;
3540 
3542  virtual RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3543 
3545  virtual RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3546 
3548  virtual uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3549 
3551  virtual uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3552 
3554  virtual int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3555 
3557  virtual double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3558 
3587  virtual void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3588 
3591  virtual void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3592 
3595  virtual void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3596 
3599  virtual void UserLimitOutputSet(int32_t number, double limitValueDouble, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3600 
3618  virtual void UserLimitOutputSet(int32_t number, RSIDataType dataType, uint64_t inputPtr, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3619 
3620 
3621 
3623  virtual bool UserLimitOutputEnableGet(int32_t number) PURE_VIRTUAL;
3624 
3626  virtual RSIDataType UserLimitOutputDataTypeGet(int32_t number) PURE_VIRTUAL;
3627 
3629  virtual uint64_t UserLimitOutputAddressGet(int32_t number) PURE_VIRTUAL;
3630 
3632  virtual uint64_t UserLimitOutputInputAddressGet(int32_t number) PURE_VIRTUAL;
3633 
3635  virtual uint32_t UserLimitOutputAndMaskGet(int32_t number) PURE_VIRTUAL;
3636 
3638  virtual uint32_t UserLimitOutputOrMaskGet(int32_t number) PURE_VIRTUAL;
3639 
3641  virtual int32_t UserLimitOutputValueGet(int32_t number) PURE_VIRTUAL;
3642 
3644  virtual uint64_t UserLimitOutputAndMask64Get(int32_t number) PURE_VIRTUAL;
3645 
3647  virtual uint64_t UserLimitOutputOrMask64Get(int32_t number) PURE_VIRTUAL;
3648 
3649 
3651  virtual double UserLimitOutputDoubleGet(int32_t number) PURE_VIRTUAL;
3652 
3675  virtual bool UserLimitStateGet(int32_t number) PURE_VIRTUAL;
3676 
3699  virtual bool UserLimitEnableGet(int32_t number) PURE_VIRTUAL;
3700 
3702  virtual void UserLimitEnableSet(int32_t number, bool enable) PURE_VIRTUAL;
3703 
3720  virtual void UserLimitDisable(int32_t number) PURE_VIRTUAL;
3721 
3735  virtual void UserLimitReset(int32_t number) PURE_VIRTUAL;
3736 
3747 
3748  virtual int32_t UserLimitCountMax() PURE_VIRTUAL;
3749 
3769  virtual void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address) PURE_VIRTUAL;
3770 
3772  virtual uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex) PURE_VIRTUAL;
3774 
3779 
3782 
3784 
3786  // Internal
3787  virtual RSIIMotionControllerInitializationState InitializationStateGet() PURE_VIRTUAL;
3788 
3793  static MotionController* CreateFromFile(const char* const fileName);
3794 
3797  static MotionController* CreateTrace();
3798 
3808  virtual void MemoryToFile(const char* const fileName) PURE_VIRTUAL;
3812 };
3813 
3815 
3818 class RSI_API RapidCodeNetworkNode : public virtual RapidCodeObject {
3819 public:
3820 
3825 
3827  static inline constexpr uint32_t SDOTimeoutMillisecondsDefault = 100;
3828 
3830 
3831 
3836 
3838  virtual bool Exists() PURE_VIRTUAL;
3839 
3841  virtual RSINodeType TypeGet() PURE_VIRTUAL;
3842 
3844  virtual bool IsEtherCAT() PURE_VIRTUAL;
3845 
3847  virtual bool IsSynqNet() PURE_VIRTUAL;
3848 
3850 
3855 
3857  virtual bool HasIO() PURE_VIRTUAL;
3858 
3860  virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
3861 
3863  virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
3864 
3866  virtual void DigitalOutSet(int32_t digitalOutNumber, bool state) PURE_VIRTUAL;
3867 
3869  virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
3870 
3872  virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
3873 
3875  virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
3876 
3878 
3882 
3884  virtual int32_t DigitalInCountGet() PURE_VIRTUAL;
3885 
3887  virtual int32_t DigitalOutCountGet() PURE_VIRTUAL;
3888 
3890  virtual int32_t AnalogInCountGet() PURE_VIRTUAL;
3891 
3893  virtual int32_t AnalogOutCountGet() PURE_VIRTUAL;
3894 
3895 
3897  virtual int32_t SegmentCountGet() PURE_VIRTUAL;
3898 
3900  virtual int32_t SegmentDigitalInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3901 
3903  virtual int32_t SegmentDigitalOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3904 
3906  virtual int32_t SegmentAnalogInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3907 
3909  virtual int32_t SegmentAnalogOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3910 
3912  virtual int32_t SegmentIDGet(int32_t segmentNumber) PURE_VIRTUAL;
3913 
3929  virtual uint64_t DigitalInAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3930 
3946  virtual int32_t DigitalInMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3947 
3963  virtual uint64_t DigitalOutAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3964 
3980  virtual int32_t DigitalOutMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3981 
3997  virtual uint64_t AnalogInAddressGet(int32_t channel) PURE_VIRTUAL;
3998 
4014  virtual int32_t AnalogInMaskGet(int32_t channel) PURE_VIRTUAL;
4015 
4031  virtual uint64_t AnalogOutAddressGet(int32_t channel) PURE_VIRTUAL;
4032 
4048  virtual int32_t AnalogOutMaskGet(int32_t channel) PURE_VIRTUAL;
4049 
4062  virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4063 
4067  virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4068 
4082 // RapidCodeEtherCATNode
4083  virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
4084 
4088  virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4089 
4106  virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue) PURE_VIRTUAL;
4107 
4108 
4113  virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4114 
4128  virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue) PURE_VIRTUAL;
4129 
4137  virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4138 
4144  virtual char* AKDASCIICommand(const char* const command) PURE_VIRTUAL;
4145 
4147  virtual void ClearFaults(int32_t axisNumber) PURE_VIRTUAL;
4148 
4150  virtual uint32_t VendorIdGet() PURE_VIRTUAL;
4151 
4165  virtual const char* const NameGet() PURE_VIRTUAL;
4166 
4180  virtual const char* const ProductNameGet() PURE_VIRTUAL;
4181 
4195  virtual const char* const VendorNameGet() PURE_VIRTUAL;
4196 
4198  virtual uint32_t ProductCodeGet() PURE_VIRTUAL;
4199 
4201  virtual uint32_t RevisionGet() PURE_VIRTUAL;
4202 
4204  virtual uint32_t StationAliasGet() PURE_VIRTUAL;
4205 
4207  virtual const char* const SerialNumberGet() PURE_VIRTUAL;
4208 
4210  virtual uint32_t AxisCountGet() PURE_VIRTUAL;
4211 
4213  virtual uint16_t StatusWordGet(int32_t axisIndex) PURE_VIRTUAL;
4214 };
4215 
4217 
4221 class RSI_API IO : public virtual RapidCodeObject {
4222 public:
4223 
4224  friend class MotionController;
4225 
4230 
4232  RapidCodeNetworkNode* NetworkNode;
4235 
4237 
4242 
4243 
4244 
4280  virtual bool IOExists() PURE_VIRTUAL;
4281 
4299  virtual int32_t NumberGet() PURE_VIRTUAL;
4301 
4306 
4307 
4308 
4340  virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
4341 
4376  virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
4377 
4410  virtual void DigitalOutSet(int32_t digitalOutNumber, bool outValue) PURE_VIRTUAL;
4411 
4436  virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
4437 
4471  virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
4472 
4506  virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
4508 
4510  virtual const char* const UserLabelGet() PURE_VIRTUAL;
4511  virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
4512 };
4513 
4515 
4518 class RSI_API RapidCodeMotion : public virtual RapidCodeInterrupt{
4519 public:
4520 
4526 
4529 
4531 
4532 
4536 
4555  virtual int32_t NumberGet() PURE_VIRTUAL;
4556 
4574  virtual int32_t AxisCountGet() PURE_VIRTUAL;
4575 
4579 
4606  virtual void TriggeredModify() PURE_VIRTUAL;
4607 
4636  virtual void Stop() PURE_VIRTUAL;
4637 
4664  virtual void Resume() PURE_VIRTUAL;
4665 
4692  virtual void EStop() PURE_VIRTUAL;
4693 
4716  virtual void EStopAbort() PURE_VIRTUAL;
4717 
4736  virtual void EStopModify() PURE_VIRTUAL;
4737 
4740  virtual void EStopModifyAbort() PURE_VIRTUAL;
4741 
4765  virtual void Abort() PURE_VIRTUAL;
4766 
4795  virtual void ClearFaults() PURE_VIRTUAL;
4796 
4825  virtual void AmpEnableSet(bool enable) PURE_VIRTUAL;
4826 
4858  virtual int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds) PURE_VIRTUAL;
4859 
4882 
4883  virtual void Map() PURE_VIRTUAL;
4884 
4905  virtual void Unmap() PURE_VIRTUAL;
4906 
4912  virtual bool IsMapped() PURE_VIRTUAL;
4913 
4932  virtual void FeedRateSet(double rate) PURE_VIRTUAL;
4933 
4954  virtual double FeedRateGet() PURE_VIRTUAL;
4955 
4959 
4960 
4961 
4962 
4984  virtual RSIState StateGet() PURE_VIRTUAL;
4985 
4999 
5001 
5022  virtual RSISource SourceGet() PURE_VIRTUAL;
5023 
5055  virtual const char* const SourceNameGet(RSISource source) PURE_VIRTUAL;
5056 
5081  virtual int32_t MotionDoneWait() PURE_VIRTUAL;
5082 
5111  virtual int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds) PURE_VIRTUAL;
5112 
5135  virtual bool MotionDoneGet() PURE_VIRTUAL;
5136 
5161 
5162  virtual bool StatusBitGet(RSIEventType bitMask) PURE_VIRTUAL;
5163 
5179  virtual uint64_t StatusBitsGet() PURE_VIRTUAL;
5180 
5184 
5185 
5186 
5216  virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
5217 
5218 
5219 
5234  virtual void InterruptWake() PURE_VIRTUAL;
5235 
5239 
5240 
5241 
5259  virtual double StopTimeGet() PURE_VIRTUAL;
5260 
5278  virtual void StopTimeSet(double seconds) PURE_VIRTUAL;
5279 
5297  virtual double EStopTimeGet() PURE_VIRTUAL;
5298 
5316  virtual void EStopTimeSet(double seconds) PURE_VIRTUAL;
5317 
5336  virtual double MotionDelayGet() PURE_VIRTUAL;
5337 
5360  virtual void MotionDelaySet(double seconds) PURE_VIRTUAL;
5361 
5384  virtual uint16_t MotionIdGet() PURE_VIRTUAL;
5385 
5405  virtual void MotionIdSet(uint16_t id) PURE_VIRTUAL;
5406 
5408  virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
5409 
5411  virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
5412 
5428  virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
5429 
5438  virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
5439 
5461  virtual RSIMotionHoldType MotionHoldTypeGet() PURE_VIRTUAL;
5462 
5497  virtual void MotionHoldTypeSet(RSIMotionHoldType type) PURE_VIRTUAL;
5498 
5512  virtual int32_t MotionHoldGateNumberGet() PURE_VIRTUAL;
5513 
5534 
5535  virtual void MotionHoldGateNumberSet(int32_t gateNumber) PURE_VIRTUAL;
5536 
5555  virtual double MotionHoldTimeoutGet() PURE_VIRTUAL;
5556 
5577  virtual void MotionHoldTimeoutSet(double seconds) PURE_VIRTUAL;
5578 
5604  virtual bool MotionHoldGateGet() PURE_VIRTUAL;
5605 
5630  virtual void MotionHoldGateSet(bool hold) PURE_VIRTUAL;
5631 
5650  virtual int32_t MotionHoldAxisNumberGet() PURE_VIRTUAL;
5651 
5670  virtual void MotionHoldAxisNumberSet(int32_t number) PURE_VIRTUAL;
5671 
5690 
5691  virtual double MotionHoldAxisPositionGet() PURE_VIRTUAL;
5692 
5711  virtual void MotionHoldAxisPositionSet(double position) PURE_VIRTUAL;
5712 
5714  virtual RSIUserLimitLogic MotionHoldAxisLogicGet() PURE_VIRTUAL;
5715 
5717  virtual void MotionHoldAxisLogicSet(RSIUserLimitLogic logic) PURE_VIRTUAL;
5718 
5737  virtual uint64_t MotionHoldUserAddressGet() PURE_VIRTUAL;
5738 
5757  virtual void MotionHoldUserAddressSet(uint64_t address) PURE_VIRTUAL;
5758 
5776  virtual int32_t MotionHoldUserMaskGet() PURE_VIRTUAL;
5777 
5795  virtual void MotionHoldUserMaskSet(int32_t holdMask) PURE_VIRTUAL;
5796 
5814  virtual int32_t MotionHoldUserPatternGet() PURE_VIRTUAL;
5815 
5833  virtual void MotionHoldUserPatternSet(int32_t pattern) PURE_VIRTUAL;
5834 
5836  virtual void MotionAttributeMaskDefaultSet() PURE_VIRTUAL;
5837 
5864 
5865  virtual bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5866 
5887  virtual void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5888 
5907 
5908  virtual void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff) PURE_VIRTUAL;
5909 
5913 
5914 
5915 
5948  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;
5949 
5983  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;
5984 
6008  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;
6009 
6014  virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address) PURE_VIRTUAL;
6015 
6039  virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
6040 
6044  // @see StreamingOutputAdd
6045  virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on) PURE_VIRTUAL;
6046 
6067  virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on, int32_t ptPointIndex) PURE_VIRTUAL;
6068 
6085  virtual void StreamingOutputsClear() PURE_VIRTUAL;
6086 
6107  virtual void StreamingOutputsEnableSet(bool enable) PURE_VIRTUAL;
6108 };
6109 
6118 class RSI_API Axis : public virtual RapidCodeMotion{
6119 public:
6120 
6121  friend class MotionController;
6122  friend class MultiAxis;
6123 
6124 
6129 
6131  static inline constexpr uint32_t NetworkIndexInvalid = 65535;
6132 
6134  static inline constexpr double AmpEnableAmpFaultTimeoutSecondsDefault = 1.0;
6135 
6137 
6138 
6143 
6145  RapidCodeNetworkNode* NetworkNode;
6146 
6148 
6153 
6192  virtual void MoveTrapezoidal(double position, double vel, double accel, double decel) PURE_VIRTUAL;
6193 
6216  virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel) PURE_VIRTUAL;
6217 
6241  virtual void MoveTrapezoidal(double position) PURE_VIRTUAL; // use defaults Overload
6242  //virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel, bool checkLimits) PURE_VIRTUAL;
6243 
6283  virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
6284 
6289  virtual void MoveSCurve(double position) PURE_VIRTUAL;
6290 
6300  virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
6301 
6305  virtual void MoveVelocity(double velocity) PURE_VIRTUAL;
6306 
6342  virtual void MoveVelocity(double velocity, double accel) PURE_VIRTUAL;
6343 
6381  virtual void MoveVelocitySCurve(double velocity, double accel, double jerkPct) PURE_VIRTUAL;
6382 
6422  virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
6423 
6427  virtual void MoveRelative(double releativePosition) PURE_VIRTUAL;
6428 
6432  virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
6434 
6439 
6467  virtual void PositionSet(double position) PURE_VIRTUAL;
6468 
6492  virtual double ActualPositionGet() PURE_VIRTUAL;
6493 
6518  virtual void ActualPositionSet(double position) PURE_VIRTUAL;
6519 
6539  virtual double CompensationPositionGet() PURE_VIRTUAL;
6540 
6556  virtual void CompensationPositionSet(double position) PURE_VIRTUAL;
6557 
6572  virtual double TargetPositionGet() PURE_VIRTUAL;
6573 
6599 
6600  virtual double CommandPositionGet() PURE_VIRTUAL;
6601 
6638  virtual void CommandPositionSet(double position) PURE_VIRTUAL;
6639 
6666  virtual void CommandPositionDirectSet(double position) PURE_VIRTUAL;
6667 
6689  virtual double OriginPositionGet() PURE_VIRTUAL;
6690 
6716  virtual void OriginPositionSet(double position) PURE_VIRTUAL;
6717 
6741  virtual double PositionErrorGet() PURE_VIRTUAL;
6742 
6767  virtual double CommandVelocityGet() PURE_VIRTUAL;
6768 
6794  virtual double ActualVelocityGet() PURE_VIRTUAL;
6795 
6819  virtual double CommandAccelGet() PURE_VIRTUAL;
6820 
6822  virtual double CommandJerkGet() PURE_VIRTUAL;
6823 
6847  virtual double EncoderPositionGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
6848 
6873  virtual double UserUnitsGet() PURE_VIRTUAL;
6874 
6900  virtual void UserUnitsSet(double countsPerUserUnit) PURE_VIRTUAL;
6901 
6903  virtual double UserUnitsToCounts(double userUnits) PURE_VIRTUAL;
6904 
6906  virtual double CountsToUserUnits(double counts) PURE_VIRTUAL;
6907 
6929  virtual int32_t FramesToExecuteGet() PURE_VIRTUAL;
6931 
6936 
6959 
6960  virtual void Home() PURE_VIRTUAL; // this one moves to zero by default
6961 
6965  virtual void Home(bool moveToZero) PURE_VIRTUAL;
6966 
6987 
6988  virtual RSIHomeMethod HomeMethodGet() PURE_VIRTUAL;
6989 
7010 
7011  virtual void HomeMethodSet(RSIHomeMethod method) PURE_VIRTUAL;
7012 
7035 
7036  virtual double HomeOffsetGet() PURE_VIRTUAL;
7037 
7058 
7059  virtual void HomeOffsetSet(double offset) PURE_VIRTUAL;
7060 
7081 
7082  virtual double HomeVelocityGet() PURE_VIRTUAL;
7083 
7086  virtual double HomeVelocityGet(RSIHomeStage homeStage) PURE_VIRTUAL;
7087 
7111 
7112  virtual void HomeVelocitySet(double velocity) PURE_VIRTUAL;
7113 
7116  virtual void HomeVelocitySet(RSIHomeStage homeStage, double velocity) PURE_VIRTUAL;
7117 
7136  virtual double HomeSlowVelocityGet() PURE_VIRTUAL;
7137 
7155  virtual void HomeSlowVelocitySet(double velocity) PURE_VIRTUAL;
7156 
7177 
7178  virtual double HomeAccelerationGet() PURE_VIRTUAL;
7179 
7181  virtual double HomeAccelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
7182 
7205 
7206  virtual void HomeAccelerationSet(double accel) PURE_VIRTUAL;
7207 
7209  virtual void HomeAccelerationSet(RSIHomeStage homeStage, double accel) PURE_VIRTUAL;
7210 
7230 
7231  virtual double HomeDecelerationGet() PURE_VIRTUAL;
7232 
7234  virtual double HomeDecelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
7235 
7257 
7258  virtual void HomeDecelerationSet(double decel) PURE_VIRTUAL;
7259 
7261  virtual void HomeDecelerationSet(RSIHomeStage homeStage, double decel) PURE_VIRTUAL;
7262 
7283 
7284  virtual double HomeJerkPercentGet() PURE_VIRTUAL;
7285 
7287  virtual double HomeJerkPercentGet(RSIHomeStage homeStage) PURE_VIRTUAL;
7288 
7311 
7312  virtual void HomeJerkPercentSet(double percent) PURE_VIRTUAL;
7313 
7316  virtual void HomeJerkPercentSet(RSIHomeStage homeStage, double percent) PURE_VIRTUAL;
7317 
7339  virtual void HomeCancelSet(bool cancel) PURE_VIRTUAL;
7340 
7361  virtual bool HomeStateGet() PURE_VIRTUAL;
7362 
7376  virtual void HomeStateSet(bool homed) PURE_VIRTUAL;
7377 
7382  virtual void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex) PURE_VIRTUAL;
7383 
7385  virtual void HomeLimitCustomConfigReset() PURE_VIRTUAL;
7386 
7388  virtual uint64_t HomeLimitCustomConfigAddressGet() PURE_VIRTUAL;
7389 
7392  virtual int32_t HomeLimitCustomConfigBitIndexGet() PURE_VIRTUAL;
7393 
7417 
7418  virtual void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel) PURE_VIRTUAL;
7419 
7441 
7442  virtual RSIHomeStage HomeStageGet() PURE_VIRTUAL;
7443 
7459  virtual void HomeBehaviorSet(RSIAction behavior) PURE_VIRTUAL;
7460 
7474  virtual RSIAction HomeBehaviorGet() PURE_VIRTUAL;
7476 
7482 
7484  virtual bool FaultMaskBitGet(RSIMotorFaultMask bitMask) PURE_VIRTUAL;
7485 
7487  virtual uint16_t StatusWordGet() PURE_VIRTUAL;
7489 
7494  // reads active configuration to report state
7495 
7521 
7522  virtual bool NegativeLimitGet() PURE_VIRTUAL;
7523 
7549  virtual bool PositiveLimitGet() PURE_VIRTUAL;
7550 
7581  virtual bool HomeLimitGet() PURE_VIRTUAL;
7582 
7612  virtual bool HomeSwitchGet() PURE_VIRTUAL;
7613 
7636  virtual bool AmpFaultGet() PURE_VIRTUAL;
7637 
7663  virtual bool AmpEnableGet() PURE_VIRTUAL;
7664 
7691  virtual bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7692 
7719  virtual bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7720 
7745  virtual bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7746 
7771  virtual bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7773 
7778 
7801  virtual bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7802 
7825  virtual bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7826 
7849 
7850  virtual void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue) PURE_VIRTUAL;
7851 
7872  virtual bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7873 
7894  virtual const char* const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7895 
7920  virtual RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7921 
7942  virtual void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type) PURE_VIRTUAL;
7943 
7962  virtual double AnalogInGet(int32_t channel) PURE_VIRTUAL;
7964 
7969 
7986  virtual double EStopDecelerationGet() PURE_VIRTUAL;
7987 
8005  virtual void EStopDecelerationSet(double decel) PURE_VIRTUAL;
8006 
8020  virtual double EStopJerkPercentGet() PURE_VIRTUAL;
8021 
8042  virtual void EStopJerkPercentSet(double jerkPct) PURE_VIRTUAL;
8043 
8056  virtual double TriggeredModifyDecelerationGet() PURE_VIRTUAL;
8057 
8078  virtual void TriggeredModifyDecelerationSet(double decel) PURE_VIRTUAL;
8079 
8093  virtual double TriggeredModifyJerkPercentGet() PURE_VIRTUAL;
8094 
8115  virtual void TriggeredModifyJerkPercentSet(double jerkPct) PURE_VIRTUAL;
8116 
8135  virtual int32_t FrameBufferSizeGet() PURE_VIRTUAL;
8136 
8153  virtual void FrameBufferSizeSet(int32_t frameSize) PURE_VIRTUAL;
8154 
8176  virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
8177 
8200  virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
8202 
8207 
8209  virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
8210 
8212  virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
8213 
8215  virtual double DefaultVelocityGet() PURE_VIRTUAL;
8216 
8218  virtual void DefaultVelocitySet(double velocity) PURE_VIRTUAL;
8219 
8221  virtual double DefaultAccelerationGet() PURE_VIRTUAL;
8222 
8224  virtual void DefaultAccelerationSet(double acceleration) PURE_VIRTUAL;
8225 
8227  virtual double DefaultDecelerationGet() PURE_VIRTUAL;
8228 
8230  virtual void DefaultDecelerationSet(double deceleration) PURE_VIRTUAL;
8231 
8233  virtual double DefaultJerkPercentGet() PURE_VIRTUAL;
8234 
8236  virtual void DefaultJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
8237 
8239  virtual double DefaultPosition1Get() PURE_VIRTUAL;
8240 
8242  virtual void DefaultPosition1Set(double position1) PURE_VIRTUAL;
8243 
8245  virtual double DefaultPosition2Get() PURE_VIRTUAL;
8246 
8248  virtual void DefaultPosition2Set(double position2) PURE_VIRTUAL;
8249 
8251  virtual double DefaultRelativeIncrementGet() PURE_VIRTUAL;
8252 
8254  virtual void DefaultRelativeIncrementSet(double relativeIncrement) PURE_VIRTUAL;
8256 
8260  // /@{
8261 
8286  virtual RSIAction AmpFaultActionGet() PURE_VIRTUAL;
8287 
8312  virtual void AmpFaultActionSet(RSIAction action) PURE_VIRTUAL;
8313 
8337  virtual bool AmpFaultTriggerStateGet() PURE_VIRTUAL;
8338 
8362  virtual void AmpFaultTriggerStateSet(bool state) PURE_VIRTUAL;
8363 
8386  virtual double AmpFaultDurationGet() PURE_VIRTUAL;
8387 
8410  virtual void AmpFaultDurationSet(double seconds) PURE_VIRTUAL;
8411 
8438  virtual RSIAction HomeActionGet() PURE_VIRTUAL;
8439 
8465  virtual void HomeActionSet(RSIAction action) PURE_VIRTUAL;
8466 
8494  virtual bool HomeTriggerStateGet() PURE_VIRTUAL;
8495 
8518  virtual void HomeTriggerStateSet(bool state) PURE_VIRTUAL;
8519 
8543  virtual double HomeDurationGet() PURE_VIRTUAL;
8544 
8569  virtual void HomeDurationSet(double seconds) PURE_VIRTUAL;
8570 
8601  virtual RSIAction ErrorLimitActionGet() PURE_VIRTUAL;
8602 
8631  virtual void ErrorLimitActionSet(RSIAction action) PURE_VIRTUAL;
8632 
8657  virtual double ErrorLimitTriggerValueGet() PURE_VIRTUAL;
8658 
8682  virtual void ErrorLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8683 
8707  virtual double ErrorLimitDurationGet() PURE_VIRTUAL;
8708 
8733  virtual void ErrorLimitDurationSet(double seconds) PURE_VIRTUAL;
8734 
8761  virtual RSIAction HardwareNegLimitActionGet() PURE_VIRTUAL;
8762 
8789  virtual void HardwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8790 
8816  virtual bool HardwareNegLimitTriggerStateGet() PURE_VIRTUAL;
8817 
8843  virtual void HardwareNegLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8844 
8869  virtual double HardwareNegLimitDurationGet() PURE_VIRTUAL;
8870 
8895 
8896  virtual void HardwareNegLimitDurationSet(double seconds) PURE_VIRTUAL;
8897 
8924  virtual RSIAction HardwarePosLimitActionGet() PURE_VIRTUAL;
8925 
8952  virtual void HardwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8953 
8974  virtual bool HardwarePosLimitTriggerStateGet() PURE_VIRTUAL;
8975 
9001  virtual void HardwarePosLimitTriggerStateSet(bool state) PURE_VIRTUAL;
9002 
9027  virtual double HardwarePosLimitDurationGet() PURE_VIRTUAL;
9028 
9053  virtual void HardwarePosLimitDurationSet(double seconds) PURE_VIRTUAL;
9054 
9082  virtual RSIAction SoftwareNegLimitActionGet() PURE_VIRTUAL;
9083 
9109  virtual void SoftwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
9110 
9135  virtual double SoftwareNegLimitTriggerValueGet() PURE_VIRTUAL;
9136 
9161  virtual void SoftwareNegLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
9162 
9188  virtual RSIAction SoftwarePosLimitActionGet() PURE_VIRTUAL;
9189 
9215  virtual void SoftwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
9216 
9241  virtual double SoftwarePosLimitTriggerValueGet() PURE_VIRTUAL;
9242 
9267  virtual void SoftwarePosLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
9268 
9296  virtual RSIAction EncoderFaultActionGet() PURE_VIRTUAL;
9297 
9324  virtual void EncoderFaultActionSet(RSIAction action) PURE_VIRTUAL;
9325 
9351  virtual RSIMotorFeedbackFault EncoderFaultTriggerGet() PURE_VIRTUAL;
9352 
9376  virtual void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder) PURE_VIRTUAL;
9377 
9401  virtual double EncoderFaultDurationGet() PURE_VIRTUAL;
9402 
9426  virtual void EncoderFaultDurationSet(double seconds) PURE_VIRTUAL;
9427 
9429  virtual RSIAction NodeFailureActionGet() PURE_VIRTUAL;
9430 
9432  virtual void NodeFailureActionSet(RSIAction action) PURE_VIRTUAL;
9433 
9451  virtual uint64_t AddressGet( RSIAxisAddressType addressType) PURE_VIRTUAL;
9452 
9467  virtual RSIDataType AddressDataTypeGet(RSIAxisAddressType type) PURE_VIRTUAL;
9468 
9469  // common limit methods
9470 
9472  virtual RSIAction LimitActionGet(RSIEventType limit) PURE_VIRTUAL;
9473 
9475  virtual void LimitActionSet(RSIEventType limit, RSIAction action) PURE_VIRTUAL;
9476 
9478  virtual bool LimitTriggerStateGet(RSIEventType limit) PURE_VIRTUAL;
9479 
9481  virtual void LimitTriggerStateSet(RSIEventType limit, bool triggerState) PURE_VIRTUAL;
9482 
9484  virtual double LimitTriggerValueGet(RSIEventType limit) PURE_VIRTUAL;
9485 
9487  virtual void LimitTriggerValueSet(RSIEventType limit, double triggerValue) PURE_VIRTUAL;
9488 
9490  virtual double LimitDurationGet(RSIEventType limit) PURE_VIRTUAL;
9491 
9493  virtual void LimitDurationSet(RSIEventType limit, double seconds) PURE_VIRTUAL;
9495 
9500 
9517  virtual double PositionToleranceFineGet() PURE_VIRTUAL;
9518 
9535  virtual void PositionToleranceFineSet(double tolerance) PURE_VIRTUAL;
9536 
9553  virtual double PositionToleranceCoarseGet() PURE_VIRTUAL;
9554 
9573 
9574  virtual void PositionToleranceCoarseSet(double tolerance) PURE_VIRTUAL;
9575 
9592  virtual double VelocityToleranceGet() PURE_VIRTUAL;
9593 
9610  virtual void VelocityToleranceSet(double tolerance) PURE_VIRTUAL;
9611 
9629  virtual double SettlingTimeGet() PURE_VIRTUAL;
9630 
9648  virtual void SettlingTimeSet(double time) PURE_VIRTUAL;
9649 
9669  virtual bool SettleOnStopGet() PURE_VIRTUAL;
9670 
9690 
9691  virtual void SettleOnStopSet(bool state) PURE_VIRTUAL;
9692 
9712  virtual bool SettleOnEStopGet() PURE_VIRTUAL;
9713 
9732  virtual void SettleOnEStopSet(bool state) PURE_VIRTUAL;
9733 
9753  virtual bool SettleOnEStopCmdEqActGet() PURE_VIRTUAL;
9754 
9773  virtual void SettleOnEStopCmdEqActSet(bool state) PURE_VIRTUAL;
9775 
9780 
9800  virtual RSIMotorType MotorTypeGet() PURE_VIRTUAL;
9801 
9820  virtual void MotorTypeSet(RSIMotorType type) PURE_VIRTUAL;
9821 
9841  virtual RSIMotorDisableAction AmpDisableActionGet() PURE_VIRTUAL;
9842 
9861  virtual void AmpDisableActionSet(RSIMotorDisableAction action) PURE_VIRTUAL;
9862 
9883 
9884  virtual RSIMotorBrakeMode BrakeModeGet() PURE_VIRTUAL;
9885 
9904  virtual void BrakeModeSet(RSIMotorBrakeMode mode) PURE_VIRTUAL;
9905 
9924  virtual double BrakeApplyDelayGet() PURE_VIRTUAL;
9925 
9926 
9946  virtual void BrakeApplyDelaySet(double seconds) PURE_VIRTUAL;
9947 
9966  virtual double BrakeReleaseDelayGet() PURE_VIRTUAL;
9967 
9988  virtual void BrakeReleaseDelaySet(double seconds) PURE_VIRTUAL;
9989 
9991  virtual void ClosedLoopStepperSet(bool enable) PURE_VIRTUAL;
9992 
9994  virtual int32_t ClosedLoopStepperVersionGet() PURE_VIRTUAL;
9995 
9997  virtual uint64_t EncoderPointerGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9998 
10000  virtual void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address) PURE_VIRTUAL;
10001 
10003  virtual uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
10004 
10005 
10007  virtual void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
10008 
10010  virtual uint64_t FeedbackPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
10011 
10032  virtual void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
10033 
10035  virtual int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
10036 
10038  virtual int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
10039 
10064  virtual void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
10065 
10067  virtual const char* const EncoderRatioPrimaryGet() PURE_VIRTUAL;
10068 
10070  virtual void EncoderRatioPrimarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
10071 
10073  virtual const char* const EncoderRatioSecondaryGet() PURE_VIRTUAL;
10074 
10076  virtual void EncoderRatioSecondarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
10077 
10079  virtual int32_t EncoderCountGet() PURE_VIRTUAL;
10080 
10083  virtual void EncoderCountSet(int32_t count) PURE_VIRTUAL;
10084 
10086  virtual RSIAxisGantryType GantryTypeGet() PURE_VIRTUAL;
10087 
10089  virtual void GantryTypeSet(RSIAxisGantryType type) PURE_VIRTUAL;
10090 
10107  virtual RSIOperationMode OperationModeGet() PURE_VIRTUAL;
10108 
10125  virtual void OperationModeSet(RSIOperationMode mode) PURE_VIRTUAL;
10126 
10149  virtual int32_t MotorFaultMaskGet() PURE_VIRTUAL;
10150 
10179  virtual void MotorFaultMaskSet(int32_t faultMask) PURE_VIRTUAL;
10181 
10186 
10209  virtual void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
10210 
10214  virtual void GearingEnable(Axis* masterAxis, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
10215 
10236  virtual void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
10237 
10256  virtual void GearingDisable() PURE_VIRTUAL;
10257 
10259  virtual int32_t GearingNumeratorGet() PURE_VIRTUAL;
10260 
10262  virtual int32_t GearingDenominatorGet() PURE_VIRTUAL;
10263 
10265  virtual bool GearingEnableGet() PURE_VIRTUAL;
10266 
10286  virtual int32_t GearingMasterAxisNumberGet() PURE_VIRTUAL;
10287 
10302  virtual RSIAxisMasterType GearingSourceGet() PURE_VIRTUAL;
10304 
10309 
10328  virtual double MotionCamMasterStartGet(Axis* master) PURE_VIRTUAL;
10329 
10346  virtual void MotionCamMasterStartSet(Axis* master, double startPosition) PURE_VIRTUAL;
10347 
10366  virtual int32_t MotionCamRepeatFromGet() PURE_VIRTUAL;
10367 
10387  virtual void MotionCamRepeatFromSet(int32_t repeatFrom) PURE_VIRTUAL;
10388 
10408  virtual void MotionCamRepeatStop() PURE_VIRTUAL;
10409 
10434  virtual void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
10435 
10467  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;
10468 
10488 
10489  virtual int32_t DriveIndexGet() PURE_VIRTUAL;
10491 
10496 
10512  virtual double BacklashWidthGet() PURE_VIRTUAL;
10513 
10529  virtual void BacklashWidthSet(double width) PURE_VIRTUAL;
10530 
10546  virtual double BacklashRateGet() PURE_VIRTUAL;
10547 
10563  virtual void BacklashRateSet(double rate) PURE_VIRTUAL;
10564 
10565 
10579  virtual double BacklashValueGet() PURE_VIRTUAL;
10580 
10582 
10587 
10618  virtual RSIFilterAlgorithm FilterAlgorithmGet() PURE_VIRTUAL;
10619 
10649  virtual void FilterAlgorithmSet(RSIFilterAlgorithm algorithm) PURE_VIRTUAL;
10650 
10679  virtual double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
10680 
10706  virtual void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
10707 
10710  virtual double FilterCoeffGet(RSIFilterGainPIVCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
10711 
10715  virtual void FilterCoeffSet(RSIFilterGainPIVCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
10716 
10754  virtual int32_t FilterGainTableGet() PURE_VIRTUAL;
10755 
10787  virtual void FilterGainTableSet(int32_t gainTable) PURE_VIRTUAL;
10788 
10808  virtual int32_t FilterGainTableSizeGet() PURE_VIRTUAL;
10809 
10811  virtual double FilterOutputGet(void) PURE_VIRTUAL;
10812 
10828  virtual double FilterLowPassGet() PURE_VIRTUAL;
10829 
10848  virtual void FilterLowPassSet(double frequency) PURE_VIRTUAL;
10849 
10871  virtual void FilterDualLoopSet(Axis* velocityAxis, RSIMotorFeedback velocityEncoder, bool enable) PURE_VIRTUAL;
10872 
10873 
10875  virtual bool FilterGainSchedulingGet() PURE_VIRTUAL;
10876 
10877 
10879  virtual void FilterGainSchedulingSet(bool enable) PURE_VIRTUAL;
10880 
10882  virtual bool IsTuneable() PURE_VIRTUAL;
10883 
10903  virtual void PostFilterLowPassSet(int32_t sectionNumber, double frequency) PURE_VIRTUAL;
10904 
10923  virtual void PostFilterUnityGainSet(int32_t sectionNumber) PURE_VIRTUAL;
10924 
10946  virtual void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne) PURE_VIRTUAL;
10947 
10963  virtual void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq) PURE_VIRTUAL;
10964 
10985  virtual void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth) PURE_VIRTUAL;
10986 
11008  virtual void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain) PURE_VIRTUAL;
11009 
11031  virtual void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq) PURE_VIRTUAL;
11032 
11051  virtual void PostFilterClear(int32_t sectionNumber) PURE_VIRTUAL;
11052 
11076  virtual void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo) PURE_VIRTUAL;
11077 
11079  virtual const char* const PostFilterInfoGet() PURE_VIRTUAL;
11080  //virtual RSIFilterPostFilterSection PostFilterSection;
11082 
11087 
11108  virtual const char* const UserLabelGet() PURE_VIRTUAL;
11109 
11131  virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
11133 
11138 
11140  virtual void PostTrajectoryGearingEnableSet(bool enable) PURE_VIRTUAL;
11141 
11143  virtual bool PostTrajectoryGearingEnableGet() PURE_VIRTUAL;
11144 
11146  virtual void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber) PURE_VIRTUAL;
11147 
11149  virtual int32_t PostTrajectoryGearingMasterAxisGet() PURE_VIRTUAL;
11150 
11152  virtual void PostTrajectoryGearingMultiplierSet(double multiplier) PURE_VIRTUAL;
11153 
11155  virtual double PostTrajectoryGearingMultiplierGet() PURE_VIRTUAL;
11156 
11175  virtual uint32_t NetworkIndexGet(RSINetworkIndexType indexType) PURE_VIRTUAL;
11176 
11196  virtual void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex) PURE_VIRTUAL;
11198 
11201  virtual double BacklashHysteresisLimitGet() PURE_VIRTUAL;
11202  virtual void BacklashHysteresisLimitSet(double hysteresisLimit) PURE_VIRTUAL;
11203 
11230  virtual bool StepperMotorLoopbackGet() PURE_VIRTUAL;
11231 
11258  virtual void StepperMotorLoopbackSet(bool loopback) PURE_VIRTUAL;
11259  virtual RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse) PURE_VIRTUAL;
11260  virtual void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type) PURE_VIRTUAL;
11261  virtual uint64_t GearingMasterAddressGet() PURE_VIRTUAL;
11263 };
11264 
11266 
11271 class RSI_API MultiAxis : public virtual RapidCodeMotion {
11272 public:
11273 
11277 
11294  virtual void AxisAdd(Axis *axis) PURE_VIRTUAL;
11295 
11298  virtual void AxesAdd(Axis* *axes, int32_t axisCount) PURE_VIRTUAL;
11299 
11315  virtual void AxisRemoveAll() PURE_VIRTUAL;
11316 
11320 
11339  virtual Axis* AxisGet(int32_t index) PURE_VIRTUAL;
11340 
11361  virtual const char* const UserLabelGet() PURE_VIRTUAL;
11362 
11384  virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
11385 
11389 
11407  virtual double VectorVelocityGet() PURE_VIRTUAL;
11408 
11427  virtual void VectorVelocitySet(double velocity) PURE_VIRTUAL;
11428 
11446  virtual double VectorAccelerationGet() PURE_VIRTUAL;
11447 
11473  virtual void VectorAccelerationSet(double acceleration) PURE_VIRTUAL;
11474 
11492  virtual double VectorDecelerationGet() PURE_VIRTUAL;
11493 
11519  virtual void VectorDecelerationSet(double deceleration) PURE_VIRTUAL;
11520 
11538  virtual double VectorJerkPercentGet() PURE_VIRTUAL;
11539 
11565  virtual void VectorJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
11566 
11593  virtual void MoveVector(const double* const position) PURE_VIRTUAL;
11594 
11597  virtual void MoveVectorRelative(const double* const relativePosition) PURE_VIRTUAL;
11598 
11602 
11625 
11626  virtual double PathTimeSliceGet() PURE_VIRTUAL;
11627 
11651 
11652  virtual void PathTimeSliceSet(double seconds) PURE_VIRTUAL;
11653 
11681  virtual void PathRatioSet(const double* const ratio) PURE_VIRTUAL;
11682 
11685  virtual double PathRatioGet(int32_t index) PURE_VIRTUAL;
11686 
11706  virtual void PathBlendSet(bool blend) PURE_VIRTUAL;
11707 
11719 
11720  virtual void PathPlanTypeSet(RSIPathPlanType type) PURE_VIRTUAL;
11721 
11733 
11734  virtual RSIPathPlanType PathPlanTypeGet() PURE_VIRTUAL;
11735 
11757  virtual void PathListStart(const double* const startPosition) PURE_VIRTUAL;
11758 
11782  virtual void PathLineAdd(const double* const position) PURE_VIRTUAL;
11783 
11806  virtual void PathArcAdd(const double* const center, double angle) PURE_VIRTUAL;
11807 
11829  virtual void PathListEnd() PURE_VIRTUAL;
11830 
11850  virtual void PathMotionStart() PURE_VIRTUAL;
11851 
11855 
11875  virtual void MoveTrapezoidal(const double* const position, const double* const vel, const double* const accel, const double* const decel) PURE_VIRTUAL;
11876 
11879  virtual void MoveTrapezoidal(const double* const position) PURE_VIRTUAL;
11880 
11909  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;
11910 
11913  virtual void MoveSCurve(const double* const position) PURE_VIRTUAL;
11914 
11932  virtual void MoveVelocity(const double* const velocity, const double* const accel) PURE_VIRTUAL;
11933 
11937  virtual void MoveVelocity(const double* const velocity) PURE_VIRTUAL;
11938 
11959  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;
11960 
11963  virtual void MoveRelative(const double* const relativePosition) PURE_VIRTUAL;
11964 
11983  virtual void MoveVelocitySCurve(const double* const velocity, const double* const accel, const double* const jerkPct) PURE_VIRTUAL;
11984 
12004  virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
12005 
12026  virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
12027 
12029  virtual int32_t AxisMapCountGet() PURE_VIRTUAL;
12030 
12045  virtual uint64_t AddressGet(RSIMultiAxisAddressType addressType) PURE_VIRTUAL;
12046 
12061  virtual RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type) PURE_VIRTUAL;
12062 
12073  virtual bool AmpEnableGet() PURE_VIRTUAL;
12074 
12075 
12076 };
12077 
12079 
12083 class RSI_API IOPoint : public virtual RapidCodeObject {
12084 public:
12088 
12107  static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorDedicatedIn motorDedicatedInNumber);
12108 
12127  static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
12128 
12145  static IOPoint* CreateDigitalInput(IO* io, int32_t bitNumber);
12146 
12160  static IOPoint* CreateDigitalInput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
12161 
12177  static IOPoint* CreateDigitalInput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
12178 
12197  static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorDedicatedOut motorDedicatedOutNumber);
12198 
12217  static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
12218 
12235  static IOPoint* CreateDigitalOutput(IO* io, int32_t bitNumber);
12236 
12237 
12252  static IOPoint* CreateDigitalOutput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
12253 
12269  static IOPoint* CreateDigitalOutput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
12270 
12286  static IOPoint* CreateAnalogInput(IO* io, int32_t analogChannel);
12287 
12303  static IOPoint* CreateAnalogOutput(IO* io, int32_t analogChannel);
12304 
12305 
12306 
12310 
12314  virtual uint64_t AddressGet() PURE_VIRTUAL;
12315 
12319  virtual int32_t MaskGet() PURE_VIRTUAL;
12320 
12324  virtual bool IsDigital() PURE_VIRTUAL;
12325 
12326 
12330  virtual bool IsOutput() PURE_VIRTUAL;
12331 
12335 
12340  virtual bool Get() PURE_VIRTUAL;
12341 
12349  virtual void Set(bool state) PURE_VIRTUAL;
12350 
12354 
12359  virtual double ValueGet() PURE_VIRTUAL;
12360 
12365  virtual void ValueSet(double valueDouble) PURE_VIRTUAL;
12366 };
12367 
12369 
12373 class RSI_API RTOS {
12374 
12375 public:
12376 #if defined(_WIN32)
12377 
12385 
12390  static INtimeStatus INtimeStatusGet(const char* const nodeName);
12391 
12395 
12400  static INtimeStatus INtimeStart(const char* const nodeName);
12401 
12405 
12410  static INtimeStatus INtimeStop(const char* const nodeName);
12411 
12415 
12420  static INtimeStatus INtimeRestart(const char* const nodeName);
12421 
12424  static const char* const INtimeCatalogRMPGet();
12425 
12428  static const char* const INtimeCatalogRMPNetworkGet();
12429 
12432  static uint32_t INtimeNodeCountGet();
12433 
12437  static const char* const INtimeNodeNameGet(uint32_t nodeNumber);
12438 
12442  static bool INtimeNodeIsLocal(uint32_t nodeNumber);
12444 #endif // _WIN32
12445 };
12446 
12448 class RSI_API Trace
12449 {
12450 public:
12455 
12470  static void MaskSet(RSITrace mask);
12471 
12489  static void MaskOnSet(RSITrace maskOn);
12490 
12491 
12513  static bool MaskOnGet(RSITrace maskOn);
12514 
12532  static void MaskOffSet(RSITrace maskOff);
12533 
12548  static void MaskClear();
12549 
12566  static int32_t FileSet(const char* const fileName);
12567 
12582  static void FileClose();
12583 
12600  static void InjectMessage(RSITrace traceLevel, const char* const message);
12601 
12603 };
12604 
12606 
12607 } // namespace RapidCode
12608 
12609 } // namespace RSI
12610 
12611 #if defined(__cplusplus)
12612 }
12613 #endif
12614 
12615 #endif // _RSI_H
RSI::RapidCode::Axis::MoveVelocity
void MoveVelocity(double velocity, double accel)
Command a constant velocity move (jog).
RSI::RapidCode::RSIMotorFeedback
RSIMotorFeedback
Encoders per motor.
Definition: rsienums.h:1089
RSI::RapidCode::Axis::MoveTrapezoidal
void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel)
Point-to-point trapezoidal move.
RSI::RapidCode::MultiAxis::AxisAdd
void AxisAdd(Axis *axis)
Add an Axis to a MultiAxis group.
RSI::RapidCode::MultiAxis
The MultiAxis object allows you to map two or more axes together and command synchronized motion.
Definition: rsi.h:11271
RSI::RapidCode::MotionController::Create
static MotionController * Create(CreationParameters *creationParameters)
Initialize and start the RMP EtherCAT controller.
RSI::RapidCode::RSIAxisMasterType
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition: rsienums.h:1154
RSI::RapidCode::RSIHomeStage
RSIHomeStage
Predefined Homing Stage sections.
Definition: rsienums.h:404
RSI::RapidCode::RSIMotorFeedbackFault
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
Definition: rsienums.h:1082
RSI::RapidCode::IO::IOExists
bool IOExists()
IOExists validates your IO object is an IO Node.
RSI::RapidCode::RSIControllerType
RSIControllerType
Controller type.
Definition: rsienums.h:282
RSI::RapidCode::IOPoint::CreateDigitalOutput
static IOPoint * CreateDigitalOutput(MotionController *controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type)
Create a Digital Output from a network PDO.
RSI::RapidCode::RapidCodeOS::TimerCountGet
int32_t TimerCountGet()
Gets the time since startup.
RSI::RapidCode::IOPoint::CreateDigitalOutput
static IOPoint * CreateDigitalOutput(Axis *axis, RSIMotorGeneralIo motorGeneralIoNumber)
Create a Digital Output from an Axis' general purpose inputs.
RSI::RapidCode::RapidCodeMotion::NumberGet
int32_t NumberGet()
Get the axis number.
RSI::RapidCode::RSIMotionType
RSIMotionType
Streaming motion types.
Definition: rsienums.h:979
RSI::RapidCode::Trace::MaskSet
static void MaskSet(RSITrace mask)
Sets the specified trace mask.
RSI::RapidCode::RTOS::INtimeCatalogRMPNetworkGet
static const char *const INtimeCatalogRMPNetworkGet()
Get the RMPNetwork catalog.
RSI::RapidCode::RsiError::number
RSIErrorMessage number
Error number.
Definition: rsi.h:108
RSI::RapidCode::Trace::MaskOnSet
static void MaskOnSet(RSITrace maskOn)
Turn on a particular trace output mask.
RSI::RapidCode::RSICompensatorOutputType
RSICompensatorOutputType
Compensator output types.
Definition: rsienums.h:1328
RSI::RapidCode::RsiError::isWarning
bool isWarning
Whether the error is or is not a warning.
Definition: rsi.h:114
RSI::RapidCode::RapidCodeOS::Sleep
void Sleep(int32_t milliseconds)
Put the current thread to sleep.
RSI::RapidCode::Trace::InjectMessage
static void InjectMessage(RSITrace traceLevel, const char *const message)
Add a message to the Trace Log.
RSI::RapidCode::RTOS::INtimeNodeCountGet
static uint32_t INtimeNodeCountGet()
Get the number of INtime nodes on this PC.
RSI::RapidCode::RapidCodeInterrupt::InterruptNameGet
const char *const InterruptNameGet()
Get the text name of an interrupt type.
RSI::RapidCode::MotionController::Reset
void Reset()
Reset (power cycle) the controller.
RSI::RapidCode::RSINetworkType
RSINetworkType
Type of Network topology.
Definition: rsienums.h:615
RSI::RapidCode::RsiError
The RsiError object contains information about any RapidCode API object's error/exception.
Definition: rsi.h:105
RSI::RapidCode::IO
The IO object provides an interface to the inputs and outputs of a network node.
Definition: rsi.h:4221
RSI::RapidCode::INtimeStatus
INtimeStatus
INtime status values.
Definition: rsienums.h:1293
RSI::RapidCode::MotionController::Delete
void Delete(void)
Delete the MotionController and all its objects.
RSI::RapidCode::RapidCodeOS::KeyGet
int32_t KeyGet(int32_t milliseconds)
Wait for a key to be pressed and return its value.
RSI::RapidCode::RsiError::objectIndex
int32_t objectIndex
Object index (0-based index of the object that has the error).
Definition: rsi.h:112
RSI::RapidCode::RsiError::functionName
char functionName[RSI_ERROR_TEXT_SIZE]
Function name of the raised the error.
Definition: rsi.h:119
RSI::RapidCode::RSIEventType
RSIEventType
Event Types or Status Bits.
Definition: rsienums.h:911
RSI::RapidCode::Axis::MoveRelative
void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct)
Command a relative point-to-point S-Curve motion.
RSI::RapidCode::IOPoint::CreateAnalogInput
static IOPoint * CreateAnalogInput(IO *io, int32_t analogChannel)
Create an Analog Input from an I/O Node.
RSI::RapidCode::RSINetworkTechnologyType
RSINetworkTechnologyType
Network technology type.
Definition: rsienums.h:1288
RSI::RapidCode::RsiError::shortText
char shortText[RSI_ERROR_TEXT_SIZE]
Error short text.
Definition: rsi.h:121
RSI::RapidCode::RSIAxisPositionInput
RSIAxisPositionInput
Feedback Positions for each Axis.
Definition: rsienums.h:1069
RSI::RapidCode::Axis::MoveRelative
void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel)
RSI::RapidCode::RSIMultiAxisAddressType
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition: rsienums.h:492
RSI::RapidCode::IOPoint::AddressGet
uint64_t AddressGet()
Get the Host Address for the I/O point.
RSI::RapidCode::RSIMotorBrakeMode
RSIMotorBrakeMode
Brake modes.
Definition: rsienums.h:1261
RSI::RapidCode::RSINodeType
RSINodeType
Valid Node types.
Definition: rsienums.h:662
RSI::RapidCode::NetworkNode::Exists
bool Exists()
Returns true if this NetworkNode exists on a physical network.
RSI::RapidCode::RapidCodeObject::VersionGet
const char *const VersionGet()
Get the RSI RapidCode version.
RSI::RapidCode::RSIMotorDisableAction
RSIMotorDisableAction
Action for when a motor is disabled.
Definition: rsienums.h:1255
RSI::RapidCode::Axis::MoveTrapezoidal
void MoveTrapezoidal(double position, double vel, double accel, double decel)
Point-to-point trapezoidal move.
RSI::RapidCode::RTOS::INtimeCatalogRMPGet
static const char *const INtimeCatalogRMPGet()
Get the RMP catalog.
RSI::RapidCode::MotionController::CreationParameters::CreationParameters
CreationParameters()
Instantiate with all memory zeroed out.
Definition: rsi.h:880
RSI::RapidCode::RSIMotionHoldType
RSIMotionHoldType
Types for MotionHold attribute.
Definition: rsienums.h:1031
RSI::RapidCode::RTOS::INtimeStop
static INtimeStatus INtimeStop(const char *const nodeName)
Stop INtime.
RSI::RapidCode::MotionController::Create
static MotionController * Create()
Initialize and start the RMP EtherCAT controller.
RSI::RapidCode::RapidCodeObject
The RapidCode base class. All non-error objects are derived from this class.
Definition: rsi.h:173
RSI::RapidCode::RSIUserLimitLogic
RSIUserLimitLogic
Logic options for User Limits.
Definition: rsienums.h:635
RSI::RapidCode::IOPoint::CreateAnalogOutput
static IOPoint * CreateAnalogOutput(IO *io, int32_t analogChannel)
Create an Analog Output from an I/O Node.
RSI::RapidCode::RTOS::INtimeStatusGet
static INtimeStatus INtimeStatusGet(const char *const nodeName)
Get the status of INtime.
RSI::RapidCode::IO::NetworkNode
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition: rsi.h:4232
RSI::RapidCode::RSIMotorStepperPulse
RSIMotorStepperPulse
Pulse A or B.
Definition: rsienums.h:1185
RSI::RapidCode::IOPoint::CreateDigitalInput
static IOPoint * CreateDigitalInput(Axis *axis, RSIMotorGeneralIo motorGeneralIoNumber)
Create a Digital Input from an Axis' general purpose inputs.
RSI::RapidCode::RSIMotionAttrMask
RSIMotionAttrMask
Attribute masks for motion. You cannot mix RSIMotionAttrMaskDELAY and RSIMotionAttrMaskAPPEND.
Definition: rsienums.h:995
RSI::RapidCode::IOPoint::CreateDigitalInput
static IOPoint * CreateDigitalInput(MotionController *controller, uint64_t memoryAddress, int32_t bitNumber)
Create a Digital Output from a network PDO.
RSI::RapidCode::MotionController::CreationParameters::cpuAffinity
int32_t cpuAffinity
[Linux] Indicate the cpu core on which the RMP and RMPNetwork processes run.
Definition: rsi.h:955
RSI::RapidCode::MotionController::AxisGet
Axis * AxisGet(int32_t axisNumber)
AxisGet returns a pointer to an Axis object and initializes its internals.
RSI::RapidCode::RTOS::INtimeNodeIsLocal
static bool INtimeNodeIsLocal(uint32_t nodeNumber)
Determine if an INtime node is local (on this PC) or distributed (on another PC).
RSI::RapidCode::MotionController::IOGet
IO * IOGet(int32_t nodeNumber)
IOGet returns a pointer to an IO object using its node number and initializes its internals.
RSI::RapidCode::RapidCodeMotion::rsiControl
MotionController * rsiControl
Gets the parent MotionController object.
Definition: rsi.h:4528
RSI::RapidCode::RSIMotorType
RSIMotorType
Motor Type.
Definition: rsienums.h:1247
RSI::RapidCode::Axis::PositionSet
void PositionSet(double position)
Set the Command and Actual positions.
RSI::RapidCode::RSINetworkStartError
RSINetworkStartError
Network start errors.
Definition: rsienums.h:587
RSI::RapidCode::Trace::MaskOffSet
static void MaskOffSet(RSITrace maskOff)
Turn off a particular trace output mask.
RSI::RapidCode::RSIFilterGainPIDCoeff
RSIFilterGainPIDCoeff
PID gain coefficients.
Definition: rsienums.h:1104
RSI::RapidCode::RSIMotorDedicatedIn
RSIMotorDedicatedIn
Dedicated Input bits per motor.
Definition: rsienums.h:834
RSI::RapidCode::Trace::MaskClear
static void MaskClear()
Clear the trace output mask.
RSI::RapidCode::RapidCodeInterrupt::InterruptWait
RSIEventType InterruptWait(int32_t milliseconds)
Suspend the current thread until an interrupt arrives from the controller.
RSI::RapidCode::Trace::FileClose
static void FileClose()
Stops Logging to the file.
RSI::RapidCode::Axis::MoveTrapezoidal
void MoveTrapezoidal(double position)
Point-to-point trapezoidal move.
RSI::RapidCode::RSIPDOType
RSIPDOType
Compensator output types.
Definition: rsienums.h:1334
RSI::RapidCode::RTOS::INtimeRestart
static INtimeStatus INtimeRestart(const char *const nodeName)
Restart INtime (reboot INtime).
RSI::RapidCode::RSINetworkOutputAddressType
RSINetworkOutputAddressType
Network output address types.
Definition: rsienums.h:1321
RSI::RapidCode::MultiAxis::AxisRemoveAll
void AxisRemoveAll()
Remove all axes from a MultiAxis group.s.
RSI::RapidCode::IOPoint::CreateDigitalOutput
static IOPoint * CreateDigitalOutput(MotionController *controller, uint64_t memoryAddress, int32_t bitNumber)
Create a Digital Output from a network PDO.
RSI::RapidCode::RTOS::INtimeStop
static INtimeStatus INtimeStop()
Stop INtime.
RSI::RapidCode::RSIMotorIoTypeMask
RSIMotorIoTypeMask
Possible mask bits for Motor I/O types.
Definition: rsienums.h:1201
RSI::RapidCode::Axis::ActualPositionGet
double ActualPositionGet()
Get the current actual position.
RSI::RapidCode::Axis::MoveVelocitySCurve
void MoveVelocitySCurve(double velocity, double accel, double jerkPct)
Command a constant velocity move (jog) with non-constant acceleration.
RSI::RapidCode::RSIIMotionControllerInitializationState
RSIIMotionControllerInitializationState
MotionController's initialization state.
Definition: rsienums.h:293
RSI::RapidCode::RsiError::lineNumber
int32_t lineNumber
Source code line number.
Definition: rsi.h:110
RSI::RapidCode::RSIHomeMethod
RSIHomeMethod
Definition: rsienums.h:308
RSI::RapidCode::Axis::MoveSCurve
void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct)
Command a point-to-point S-Curve motion.
RSI::RapidCode::RTOS::INtimeStatusGet
static INtimeStatus INtimeStatusGet()
Get the status of INtime.
RSI::RapidCode::MotionController
The MotionController object represents the RMP INtime soft motion controller.
Definition: rsi.h:770
RSI::RapidCode::RSISource
RSISource
Possible sources that have caused an Error state.
Definition: rsienums.h:958
RSI::RapidCode::RsiError::RSI_ERROR_TEXT_SIZE
static constexpr uint32_t RSI_ERROR_TEXT_SIZE
Error message text.
Definition: rsi.h:116
RSI::RapidCode::RSIAxisGantryType
RSIAxisGantryType
How to combine Axis Feedback Positions.
Definition: rsienums.h:1075
RSI::RapidCode::RSINetworkState
RSINetworkState
State of network.
Definition: rsienums.h:562
RSI::RapidCode::MotionController::CreateFromSoftware
static MotionController * CreateFromSoftware(const char *const RtaPath, const char *const NodeName)
Initialize and start the RMP EtherCAT controller.
RSI::RapidCode::RSITrace
RSITrace
Trace masks.
Definition: rsienums.h:534
RSI::RapidCode::RapidCodeInterrupt
Interface for objects which can use interrupts.
Definition: rsi.h:600
RSI
RSI::RapidCode::Trace::MaskOnGet
static bool MaskOnGet(RSITrace maskOn)
Check to see if a particular trace output mask is turned on.
RSI::RapidCode::IOPoint
The IOPoint object represents one specific point class such as: Digital Output, Digital Input,...
Definition: rsi.h:12083
RSI::RapidCode::Axis::MoveSCurve
void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel)
RSI::RapidCode::RSINetworkStartupMethod
RSINetworkStartupMethod
Network startup methods.
Definition: rsienums.h:574
RSI::RapidCode::RSIUserLimitTriggerType
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition: rsienums.h:622
RSI::RapidCode::RSIMotorFaultMask
RSIMotorFaultMask
Mask values for several motor faults.
Definition: rsienums.h:1235
RSI::RapidCode::RapidCodeOS
The RapidCodeOS object provides access to operating system (Windows) features. Accessible via MotionC...
Definition: rsi.h:497
RSI::RapidCode::Axis
The Axis object manages a single physical axis on a motion controller.
Definition: rsi.h:6118
RSI::RapidCode::Axis::MoveSCurve
void MoveSCurve(double position)
RSI::RapidCode::RSIControllerAddressType
RSIControllerAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition: rsienums.h:412
RSI::RapidCode::RSIAction
RSIAction
Action to perform on an Axis.
Definition: rsienums.h:1051
RSI::RapidCode::RsiError::fileName
char fileName[RSI_ERROR_TEXT_SIZE]
source file name
Definition: rsi.h:123
RSI::RapidCode::IOPoint::CreateDigitalInput
static IOPoint * CreateDigitalInput(Axis *axis, RSIMotorDedicatedIn motorDedicatedInNumber)
Create a Digital Input from an Axis' Dedicated Input bits.
RSI::RapidCode::RSINetworkIndexType
RSINetworkIndexType
Network index types for Axis.
Definition: rsienums.h:1301
RSI::RapidCode::RapidCodeMotion
The RapidCodeMotion interface is implemented by Axis and MultiAxis .
Definition: rsi.h:4518
RSI::RapidCode::RSIProcessorType
RSIProcessorType
Controller's processor type.
Definition: rsienums.h:302
RSI::RapidCode::Trace
Tracing allows for low level logs to be generated.
Definition: rsi.h:12449
RSI::RapidCode::MotionController::LoadExistingMultiAxis
MultiAxis * LoadExistingMultiAxis(int32_t motionSupervisorNumber)
Get/Create a MultiAxis object from one that already exists (previously setup) on the RMP motion contr...
RSI::RapidCode::RTOS::INtimeRestart
static INtimeStatus INtimeRestart()
Restart INtime (reboot INtime).
RSI::RapidCode::RapidCodeInterrupt::InterruptEnableSet
void InterruptEnableSet(bool enable)
Enable or disable interrupts.
RSI::RapidCode::RSIFilterAlgorithm
RSIFilterAlgorithm
Filter algorithms.
Definition: rsienums.h:1095
RSI::RapidCode::Trace::FileSet
static int32_t FileSet(const char *const fileName)
Channels Tracing messages to specified file.
RSI::RapidCode::RSIFilterGainPIVCoeff
RSIFilterGainPIVCoeff
PIV gain coefficients.
Definition: rsienums.h:1125
RSI::RapidCode::Axis::MoveVelocity
void MoveVelocity(double velocity)
RSI::RapidCode::RsiError::what
const char * what() const noexcept
Returns a null terminated character sequence that may be used to identify the exception.
Definition: rsi.h:159
RSI::RapidCode::IO::rsiControl
MotionController * rsiControl
Gets the parent MotionController object.
Definition: rsi.h:4234
RSI::RapidCode::MotionController::CreationParameters::rmpThreadPriorityMax
int32_t rmpThreadPriorityMax
The maximum thread priority. All threads of the RMP and RMPNetwork will be based off of this....
Definition: rsi.h:967
RSI::RapidCode::MotionController::CreationParameters
CreationParameters for MotionController::Create.
Definition: rsi.h:820
RSI::RapidCode::Axis::NetworkNode
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition: rsi.h:6145
RSI::RapidCode::MotionController::MultiAxisGet
MultiAxis * MultiAxisGet(int32_t motionSupervisorNumber)
MultiAxisGet returns a pointer to a MultiAxis object and initializes its internals.
RSI::RapidCode::IOPoint::CreateDigitalOutput
static IOPoint * CreateDigitalOutput(IO *io, int32_t bitNumber)
Create a Digital Output from an I/O Node.
RSI::RapidCode::Axis::MoveRelative
void MoveRelative(double releativePosition)
RSI::RapidCode::RSIMotorIoType
RSIMotorIoType
Possible configurations for Motor I/O.
Definition: rsienums.h:1164
RSI::RapidCode::RSIDataType
RSIDataType
Data types for User Limits and other triggers.
Definition: rsienums.h:648
RSI::RapidCode::MultiAxis::AxesAdd
void AxesAdd(Axis **axes, int32_t axisCount)
RSI::RapidCode::RSIMotorStepperPulseType
RSIMotorStepperPulseType
Stepper pulse type.
Definition: rsienums.h:1191
RSI::RapidCode::RSIAxisAddressType
RSIAxisAddressType
Used to get firmware address used in User Limits, Sequencers, etc.
Definition: rsienums.h:430
RSI::RapidCode::RSIPathPlanType
RSIPathPlanType
Path motion planning types.
Definition: rsienums.h:989
RSI::RapidCode::IOPoint::CreateDigitalInput
static IOPoint * CreateDigitalInput(MotionController *controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type)
Create a Digital Output from a network PDO.
RSI::RapidCode::RTOS
The RTOS object represents the real-time operating system (INtime).
Definition: rsi.h:12373
RSI::RapidCode::RSIMotorGeneralIo
RSIMotorGeneralIo
Motor I/O bit numbers.
Definition: rsienums.h:862
RSI::RapidCode::RSINetworkStartMode
RSINetworkStartMode
Network start modes.
Definition: rsienums.h:581
RSI::RapidCode::RSIOperationMode
RSIOperationMode
DS402 modes of operation.
Definition: rsienums.h:1267
RSI::RapidCode::RTOS::INtimeStart
static INtimeStatus INtimeStart(const char *const nodeName)
Start INtime.
RSI::RapidCode::RTOS::INtimeStart
static INtimeStatus INtimeStart()
Start INtime.
RSI::RapidCode::RTOS::INtimeNodeNameGet
static const char *const INtimeNodeNameGet(uint32_t nodeNumber)
Get the name of an INtime node.
RSI::RapidCode::MotionController::NetworkNodeGet
NetworkNode * NetworkNodeGet(int32_t nodeNumber)
NetworkNodeGet returns a pointer to a RapidCodeNetworkNode object using its node number and initializ...
RSI::RapidCode::RSIState
RSIState
State of an Axis or MultiAxis.
Definition: rsienums.h:824
RSI::RapidCode::RSIMotorDedicatedOut
RSIMotorDedicatedOut
Dedicated Output bits per motor.
Definition: rsienums.h:856
RSI::RapidCode::IOPoint::CreateDigitalOutput
static IOPoint * CreateDigitalOutput(Axis *axis, RSIMotorDedicatedOut motorDedicatedOutNumber)
Create a Digital Output from an Axis' Dedicated Output bits.
RSI::RapidCode::IOPoint::CreateDigitalInput
static IOPoint * CreateDigitalInput(IO *io, int32_t bitNumber)
Create a Digital Input from an I/O Node.
RSI::RapidCode::MotionController::CreateFromSoftware
static MotionController * CreateFromSoftware(const char *const RtaPath)
Initialize and start the RMP EtherCAT controller.
RSI::RapidCode::RSIErrorMessage
RSIErrorMessage
All possible RSI Error Messages.
Definition: rsienums.h:17