APIs, concepts, guides, and more
rsi.h
1#ifndef _RSI_H
2#define _RSI_H
3
4#include <stdlib.h>
5#include <vector>
6#include <stdio.h>
7#include <string.h>
8#include <math.h>
9#include <exception>
10#include <cstdint>
11#include <cstring>
12
13#include "rsienums.h"
14
15#if defined(_WIN32)
16# if !defined(__INTIME__)
17# define HAS_CARTESIAN_ROBOT 1
18# endif
19# if !defined(RSI_API)
20# if defined(RSIDLL)
21# define RSI_API __declspec(dllexport)
22# else
23# define RSI_API __declspec(dllimport)
24# endif
25# endif
26#elif defined(__linux__)
27# 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
199 virtual const char* const VersionGet() PURE_VIRTUAL;
200
202 virtual int32_t MpiVersionMajor() PURE_VIRTUAL;
204 virtual int32_t MpiVersionMinor() PURE_VIRTUAL;
206 virtual int32_t MpiVersionRelease() PURE_VIRTUAL;
208 virtual int32_t RSIVersionMajor() PURE_VIRTUAL;
210 virtual int32_t RSIVersionMinor() PURE_VIRTUAL;
212 virtual int32_t RSIVersionMicro() PURE_VIRTUAL;
214 virtual int32_t RSIVersionPatch() PURE_VIRTUAL;
215
218 virtual int32_t NumberGet() PURE_VIRTUAL;
220
225
226
227
228
254 virtual int32_t ErrorLogCountGet() PURE_VIRTUAL;
255
269 virtual const RsiError* const ErrorLogGet() PURE_VIRTUAL;
270
283 virtual void ErrorLogClear() PURE_VIRTUAL;
284
303 virtual void ThrowExceptions(bool state) PURE_VIRTUAL;
304
306 virtual const char* const RsiErrorMessageGet(RSIErrorMessage msg) PURE_VIRTUAL;
307
309 virtual const char* const ErrorMessageGet(RSIErrorMessage msg) PURE_VIRTUAL;
310
312 virtual bool WarningMsgCheck(RSIErrorMessage msg) PURE_VIRTUAL;
314
319
320
335 virtual void Trace(bool state) PURE_VIRTUAL;
336
351 virtual void TraceMaskOnSet(RSITrace maskOn) PURE_VIRTUAL;
352
353
374 virtual bool TraceMaskOnGet(RSITrace maskOn) PURE_VIRTUAL;
375
391 virtual void TraceMaskOffSet(RSITrace maskOff) PURE_VIRTUAL;
392
406 virtual void TraceMaskClear() PURE_VIRTUAL;
407
422 virtual void TraceFileSet(const char* const fileName) PURE_VIRTUAL;
423
436 virtual void TraceFileClose() PURE_VIRTUAL;
437
452 virtual void TraceInjectMessage(RSITrace traceLevel, const char* const message) PURE_VIRTUAL;
453
454
455
456
458};
459
461typedef union
462{
463 bool Bool;
464 int8_t Int8;
465 uint8_t UInt8;
466 int16_t Int16;
467 uint16_t UInt16;
468 int32_t Int32;
469 uint32_t UInt32;
470 float Float;
471 double Double;
472 int64_t Int64;
473 uint64_t UInt64;
475
477
491class RSI_API RapidCodeOS {
492public:
493
498
511 virtual void Sleep(int32_t milliseconds) PURE_VIRTUAL;
512
531 virtual int32_t KeyGet(int32_t milliseconds) PURE_VIRTUAL;
532
542 virtual int32_t TimerCountGet() PURE_VIRTUAL;
543
552 virtual int32_t TimerFrequencyGet() PURE_VIRTUAL;
553
554
566 virtual int32_t PerformanceTimerCountGet() PURE_VIRTUAL;
567
579 virtual int32_t PerformanceTimerFrequencyGet() PURE_VIRTUAL;
580
582};
583
585
588class RSI_API RapidCodeInterrupt : public virtual RapidCodeObject {
589public:
593
595 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
596
597
619 virtual RSIEventType InterruptWait(int32_t milliseconds) PURE_VIRTUAL;
620
640 virtual const char* const InterruptNameGet() PURE_VIRTUAL;
641
662 virtual int32_t InterruptSampleTimeGet() PURE_VIRTUAL;
663
664
685 virtual int32_t InterruptSourceNumberGet() PURE_VIRTUAL;
686
688 virtual uint16_t InterruptMotionIdGet() PURE_VIRTUAL;
689
691 virtual void InterruptWake() PURE_VIRTUAL;
692
694 virtual void InterruptMaskClear() PURE_VIRTUAL;
695
697 virtual void InterruptMaskAllSet() PURE_VIRTUAL;
698
700 virtual void InterruptMaskOnSet(RSIEventType eventType) PURE_VIRTUAL;
701
703 virtual void InterruptMaskOffSet(RSIEventType eventType) PURE_VIRTUAL;
704
706 virtual bool InterruptMaskOnGet(RSIEventType eventType) PURE_VIRTUAL;
707
708
721 virtual uint64_t InterruptUserDataGet(uint32_t userDataIndex) PURE_VIRTUAL;
722
723
735 virtual double InterruptUserDataDoubleGet(uint32_t userDataIndex) PURE_VIRTUAL;
736
742 virtual FirmwareValue InterruptUserDataValueGet(uint32_t userDataIndex) PURE_VIRTUAL;
743
779
781 virtual void InterruptUserDataAddressSet(uint32_t userDataIndex, uint64_t hostAddress) PURE_VIRTUAL;
782
788 virtual uint64_t InterruptUserDataAddressGet(uint32_t userDataIndex) PURE_VIRTUAL;
789};
790
794class RSI_API MotionController : public virtual RapidCodeInterrupt {
795protected:
797 StaticInstanceMediator* _mediator;
798
799public:
800
801 // Static functions or attributes should be grouped together.
806
808 static inline constexpr uint32_t NetworkStartTimeoutMillisecondsDefault = 30000;
809
811 static inline constexpr uint32_t AxisCountMaximum = 64;
812
814 static inline constexpr uint32_t MotionCountMaximum = 64;
815
817 static inline constexpr uint32_t NetworkNodeCountMaximum = 64;
818
820 static inline constexpr uint32_t RecorderCountMaximum = 64;
821
823 static inline constexpr uint32_t CompensatorCountMaximum = 64;
824
826 static inline constexpr uint32_t MathBlockCountMaximum = 64;
827
829 static inline constexpr uint32_t UserBufferDataCountMaximum = 1024;
830
832 static inline constexpr double SampleRateDefault = 1000.0;
833
843 static inline constexpr int32_t AxisFrameBufferSizeDefault = 1024;
844
846
847 // Static functions or attributes should be grouped together.
852
855 {
860
865 static inline constexpr uint32_t PathLengthMaximum = 256;
866
872 static inline constexpr int32_t CpuAffinityDefault = -1;
873
878 static inline constexpr int32_t RmpThreadPriorityMaximumDefault = 45;
879
884 static inline constexpr int32_t RmpThreadPriorityRange = 8;
885
890 static inline constexpr int32_t RmpThreadPriorityMinimum = RmpThreadPriorityRange + 1;
891
896 static inline constexpr int32_t RmpThreadPriorityMaximum = 99;
897
902 static inline constexpr int32_t RmpThreadPriorityNoRealTime = 0;
904
905
910
916 {
917 std::memset(RmpPath, '\0', PathLengthMaximum);
918 std::memset(NicPrimary, '\0', PathLengthMaximum);
919 std::memset(NicSecondary, '\0', PathLengthMaximum);
920#if defined(_WIN32)
921 std::memset(NodeName, '\0', PathLengthMaximum);
922#elif defined(__linux__)
923 CpuAffinity = CpuAffinityDefault;
924 RmpThreadPriorityMax = RmpThreadPriorityMaximumDefault;
925#endif
926 }
928
933
938 char RmpPath[PathLengthMaximum];
939
944 char NicPrimary[PathLengthMaximum];
945
950 char NicSecondary[PathLengthMaximum];
952
953 // Control which platform specific parameters are available
954#if defined(_WIN32) && defined(__linux__)
955 static_assert(false, "_WIN32 and __linux__ defined. Double check preprocessor definitions");
956#elif !defined(_WIN32) && !defined(__linux__) && !defined(DOXYGEN)
957 static_assert(false, "Neither _WIN32 nor __linux__ are defined AND this is not a documentation build. Double check preprocessor definitions");
958#endif //defined(_WIN32) && defined(__linux__)
959#if defined(_WIN32) || defined(DOXYGEN)
960
965
970 char NodeName[PathLengthMaximum];
971
973#endif //defined(_WIN32)
974#if defined(__linux__) || defined(DOXYGEN)
975
980
990 int32_t CpuAffinity;
991
1003
1005# endif // defined(__linux__)
1006 };
1007
1018 static MotionController* Create(CreationParameters* creationParameters);
1019
1020#if defined(_WIN32)
1048
1053 static MotionController* CreateFromSoftware(const char* const RtaPath);
1054
1060 static MotionController* CreateFromSoftware(const char* const RtaPath, const char* const NodeName);
1061
1089#endif // defined(_WIN32)
1090
1095 static MotionController* CreateFromFile(const char* const fileName);
1097
1102
1121 virtual Axis* AxisGet(int32_t axisNumber) PURE_VIRTUAL;
1122
1139 virtual MultiAxis* MultiAxisGet(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1140
1154 virtual MultiAxis* LoadExistingMultiAxis(int32_t motionSupervisorNumber) PURE_VIRTUAL;
1155
1170 virtual RapidCodeNetworkNode* NetworkNodeGet(int32_t nodeNumber) PURE_VIRTUAL;
1171
1187 virtual IO* IOGet(int32_t nodeNumber) PURE_VIRTUAL;
1188
1211 virtual void Delete(void) PURE_VIRTUAL;
1213
1218
1228 virtual void Reset() PURE_VIRTUAL;
1229
1234 virtual void Refresh() PURE_VIRTUAL;
1235
1243 virtual void Shutdown() PURE_VIRTUAL;
1244
1253 virtual void MemoryToFile(const char* const fileName) PURE_VIRTUAL;
1255
1260
1283 virtual int32_t SampleCounterGet() PURE_VIRTUAL;
1284
1299 virtual double ProcessorUsageGet() PURE_VIRTUAL;
1300
1311 virtual void ProcessorUsageClear() PURE_VIRTUAL;
1312
1316 virtual uint32_t FirmwareTimingDeltaGet() PURE_VIRTUAL;
1317
1318
1320
1325
1326
1327
1350 virtual uint32_t SerialNumberGet(void) PURE_VIRTUAL;
1351
1370 virtual void SampleWait(uint32_t samples) PURE_VIRTUAL;
1371
1372
1374 virtual RSIControllerType ControllerTypeGet() PURE_VIRTUAL;
1375
1377 virtual const char* const ServerNameGet() PURE_VIRTUAL;
1378
1380 virtual int32_t ServerPortGet() PURE_VIRTUAL;
1381
1382
1383
1384
1406 virtual RSIProcessorType ProcessorTypeGet() PURE_VIRTUAL;
1407
1412 virtual void SampleRateSet(double sampleRate) PURE_VIRTUAL;
1413
1416 virtual double SampleRateGet() PURE_VIRTUAL;
1417
1435 virtual int32_t AxisCountGet() PURE_VIRTUAL;
1436
1455 virtual void AxisCountSet(int32_t axisCount) PURE_VIRTUAL;
1456
1459 virtual void AxisCountSet(int32_t axisCount, bool setMotorFilterSupervisor) PURE_VIRTUAL;
1460
1463 virtual bool IsLicensed() PURE_VIRTUAL;
1464
1466 virtual int32_t PackageVariantGet() PURE_VIRTUAL;
1467
1469 virtual int32_t AxisLicenseCountGet() PURE_VIRTUAL;
1470
1472 virtual bool MechaWareLicenseGet() PURE_VIRTUAL;
1473
1475 virtual int32_t UnsupportedOptionSet(int32_t option) PURE_VIRTUAL;
1476
1501 virtual int32_t MotionCountGet() PURE_VIRTUAL;
1502
1519 virtual void MotionCountSet(int32_t motionCount) PURE_VIRTUAL;
1520
1546 virtual int32_t UserVersionGet() PURE_VIRTUAL;
1547
1571 virtual void UserVersionSet(int32_t version) PURE_VIRTUAL;
1572
1575 virtual int32_t ExternalMemorySizeGet() PURE_VIRTUAL;
1576
1593 virtual void AxisFrameBufferSizeSet(int32_t axisNumber, int32_t frameBufferSize) PURE_VIRTUAL;
1594
1609 virtual int32_t AxisFrameBufferSizeGet(int32_t axisNumber) PURE_VIRTUAL;
1611
1616
1634 virtual const char* const FirmwareVersionGet() PURE_VIRTUAL;
1635
1653 virtual int32_t FirmwareOptionGet() PURE_VIRTUAL;
1654
1656 virtual bool HasMechaWare() PURE_VIRTUAL;
1657
1681 virtual int32_t MemoryGet(uint64_t address) PURE_VIRTUAL;
1682
1683
1701 virtual double MemoryDoubleGet(uint64_t address) PURE_VIRTUAL;
1702
1728 virtual void MemoryBlockGet(uint64_t address, void* dataStart, int32_t size) PURE_VIRTUAL;
1729
1744 virtual void MemorySet(uint64_t address, int32_t data) PURE_VIRTUAL;
1745
1746
1747
1764 virtual void MemoryDoubleSet(uint64_t address, double dataDouble) PURE_VIRTUAL;
1765
1791 virtual void MemoryBlockSet(uint64_t address, const void* const dataStart, int32_t size) PURE_VIRTUAL;
1792
1811 virtual uint32_t FirmwareAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1812
1813
1814
1815
1838 virtual uint64_t HostAddressGet(uint32_t firmwareAddress) PURE_VIRTUAL;
1839
1840
1841
1864 virtual int32_t BackgroundCycleCounterGet() PURE_VIRTUAL;
1865
1866
1867
1868
1877 virtual uint64_t AddressFromStringGet(const char* const addressName) PURE_VIRTUAL;
1878
1879
1880
1889 virtual const char* const StringFromAddressGet(uint64_t hostAddress) PURE_VIRTUAL;
1890
1905 virtual uint64_t AddressGet(RSIControllerAddressType type) PURE_VIRTUAL;
1906
1924 virtual uint64_t AddressGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1925
1926
1939 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type) PURE_VIRTUAL;
1940
1945 virtual RSIDataType AddressDataTypeGet(RSIControllerAddressType type, int32_t objectIndex) PURE_VIRTUAL;
1946
1960 virtual bool MotionHoldGateGet(int32_t gateNumber) PURE_VIRTUAL;
1961
1962
1963
1979 virtual void MotionHoldGateSet(int32_t gateNumber, bool hold) PURE_VIRTUAL;
1981
1986
1988 virtual RSINetworkTechnologyType NetworkTechnologyTypeGet() PURE_VIRTUAL;
1989
1991 virtual RSINetworkType NetworkTypeGet() PURE_VIRTUAL;
1992
1995 virtual int32_t NetworkNodeCountGet() PURE_VIRTUAL;
1996
1998 virtual void NetworkStart() PURE_VIRTUAL;
1999
2008 virtual void NetworkStart(RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2009
2013 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod) PURE_VIRTUAL;
2014
2019 virtual void NetworkStart(RSINetworkStartMode startMode, RSINetworkStartupMethod startupMethod, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
2020
2022 virtual void NetworkShutdown() PURE_VIRTUAL;
2023
2026 virtual RSINetworkState NetworkStateGet() PURE_VIRTUAL;
2027
2029 virtual int32_t NetworkCounterGet() PURE_VIRTUAL;
2030
2032 virtual int32_t NetworkInputCountGet() PURE_VIRTUAL;
2033
2035 virtual int32_t NetworkInputBitSizeGet(int32_t index) PURE_VIRTUAL;
2036
2040 virtual const char* const NetworkInputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2041
2044 virtual int32_t NetworkInputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2045
2048 virtual const char* const NetworkInputNameGet(int32_t index) PURE_VIRTUAL;
2049
2053 virtual uint64_t NetworkInputValueGet(int32_t index) PURE_VIRTUAL;
2054
2055
2056
2060 virtual uint64_t NetworkInputAddressGet(int32_t index) PURE_VIRTUAL;
2061
2065 virtual int32_t NetworkOutputCountGet() PURE_VIRTUAL;
2066
2069 virtual int32_t NetworkOutputBitSizeGet(int32_t index) PURE_VIRTUAL;
2070
2071
2075 virtual const char* const NetworkOutputDataTypeNameGet(int32_t index) PURE_VIRTUAL;
2076
2078 virtual int32_t NetworkOutputBitOffsetGet(int32_t index) PURE_VIRTUAL;
2079
2081 virtual const char* const NetworkOutputNameGet(int32_t index) PURE_VIRTUAL;
2082
2098 virtual uint64_t NetworkOutputValueGet(int32_t index) PURE_VIRTUAL;
2099
2116 virtual void NetworkOutputValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2117
2136 virtual uint64_t NetworkOutputAddressGet(int32_t index) PURE_VIRTUAL;
2137
2142 virtual uint64_t NetworkOutputAddressGet(int32_t index, RSINetworkOutputAddressType type) PURE_VIRTUAL;
2143
2154 virtual uint64_t NetworkOutputIntendedValueGet(int32_t index) PURE_VIRTUAL;
2155
2167 virtual void NetworkOutputOverrideSet(int32_t index, bool outputOverride) PURE_VIRTUAL;
2168
2179 virtual bool NetworkOutputOverrideGet(int32_t index) PURE_VIRTUAL;
2180
2181
2182
2183
2200 virtual void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue) PURE_VIRTUAL;
2201
2214 virtual uint64_t NetworkOutputOverrideValueGet(int32_t index) PURE_VIRTUAL;
2215
2230 virtual uint64_t NetworkOutputSentValueGet(int32_t index) PURE_VIRTUAL;
2231
2235 virtual int32_t NetworkLogMessageCountGet() PURE_VIRTUAL;
2236
2238 virtual RSINetworkStartError LastNetworkStartErrorGet() PURE_VIRTUAL;
2239
2244 virtual const char* const NetworkLogMessageGet(int32_t messageIndex) PURE_VIRTUAL;
2245
2247 virtual void NetworkTimingEnableSet(bool enable) PURE_VIRTUAL;
2248
2250 virtual void NetworkTimingClear() PURE_VIRTUAL;
2251
2253 virtual uint32_t NetworkTimingDeltaGet() PURE_VIRTUAL;
2254
2256 virtual uint32_t NetworkTimingMinGet() PURE_VIRTUAL;
2257
2259 virtual uint32_t NetworkTimingMaxGet() PURE_VIRTUAL;
2260
2262 virtual void NetworkTimingThresholdLowSet(uint32_t microseconds) PURE_VIRTUAL;
2263
2265 virtual void NetworkTimingThresholdHighSet(uint32_t microseconds) PURE_VIRTUAL;
2266
2268 virtual uint32_t NetworkTimingThresholdLowCountGet() PURE_VIRTUAL;
2269
2271 virtual uint32_t NetworkTimingThresholdHighCountGet() PURE_VIRTUAL;
2272
2274 virtual bool NetworkSynchronizedGet() PURE_VIRTUAL;
2276
2281
2298 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
2299
2318 virtual void InterruptWake() PURE_VIRTUAL;
2319
2347 virtual void SyncInterruptEnableSet(bool enable) PURE_VIRTUAL;
2348
2374 virtual void SyncInterruptPeriodSet(uint32_t samples) PURE_VIRTUAL;
2375
2395 virtual int32_t SyncInterruptWait() PURE_VIRTUAL;
2396
2398 virtual bool ServiceThreadStateGet() PURE_VIRTUAL;
2399
2410 virtual int32_t SyncInterruptHostProcessTimeGet() PURE_VIRTUAL;
2411
2413 virtual int32_t SyncInterruptHostProcessFlagGet() PURE_VIRTUAL;
2414
2427 virtual void SyncInterruptHostProcessFlagSet(bool hostProcessFlag) PURE_VIRTUAL;
2428
2439 virtual bool SyncInterruptHostProcessStatusBitGet() PURE_VIRTUAL;
2440
2450 virtual void SyncInterruptHostProcessStatusClear() PURE_VIRTUAL;
2451
2477
2478 virtual void ServiceThreadEnableSet(bool enable) PURE_VIRTUAL;
2480
2485
2486
2487
2506 virtual int32_t RecorderCountGet() PURE_VIRTUAL;
2507
2525 virtual void RecorderCountSet(int32_t recorderCount) PURE_VIRTUAL;
2526
2543 virtual void RecorderPeriodSet(uint32_t samples) PURE_VIRTUAL;
2544
2546 virtual void RecorderPeriodSet(int32_t recorderNumber, uint32_t samples) PURE_VIRTUAL;
2547
2564 virtual void RecorderCircularBufferSet(bool enable) PURE_VIRTUAL;
2565
2567 virtual void RecorderCircularBufferSet(int32_t recorderNumber, bool enable) PURE_VIRTUAL;
2568
2584 virtual void RecorderDataCountSet(int32_t count) PURE_VIRTUAL;
2585
2587 virtual void RecorderDataCountSet(int32_t recorderNumber,int32_t count) PURE_VIRTUAL;
2588
2605 virtual void RecorderDataAddressSet(int32_t index, uint64_t address) PURE_VIRTUAL;
2606
2608 virtual void RecorderDataAddressSet(int32_t recorderNumber,int32_t index, uint64_t address) PURE_VIRTUAL;
2609
2610
2616 virtual void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t* const addresses, int32_t addressCount) PURE_VIRTUAL;
2617
2636 virtual void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2637
2639 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, Axis *axis, bool triggerOnMotion) PURE_VIRTUAL;
2640
2641
2643 virtual void RecorderConfigureToTriggerOnMotion(MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2644
2646 virtual void RecorderConfigureToTriggerOnMotion(int32_t recorderNumber, MultiAxis *multiAxis, bool triggerOnMotion) PURE_VIRTUAL;
2647
2663 virtual bool RecorderEnabledGet() PURE_VIRTUAL;
2664
2666 virtual bool RecorderEnabledGet(int32_t recorderNumber ) PURE_VIRTUAL;
2667
2684 virtual int32_t RecorderRecordCountGet() PURE_VIRTUAL;
2685
2687 virtual int32_t RecorderRecordCountGet(int32_t recorderNumber ) PURE_VIRTUAL;
2688
2702 virtual int32_t RecorderRecordMaxCountGet() PURE_VIRTUAL;
2703
2705 virtual int32_t RecorderRecordMaxCountGet(int32_t recorderNumber) PURE_VIRTUAL;
2706
2721 virtual void RecorderStart() PURE_VIRTUAL;
2722
2724 virtual void RecorderStart(int32_t recorderNumber) PURE_VIRTUAL;
2725
2742 virtual void RecorderStop() PURE_VIRTUAL;
2743
2745 virtual void RecorderStop(int32_t recorderNumber) PURE_VIRTUAL;
2746
2747
2748
2764 virtual const int32_t* const RecorderRecordDataGet() PURE_VIRTUAL;
2765
2767 virtual const int32_t* const RecorderRecordDataGet(int32_t recorderNumber) PURE_VIRTUAL;
2768
2783 virtual void RecorderRecordDataRetrieve() PURE_VIRTUAL;
2784
2804 virtual int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount) PURE_VIRTUAL;
2805
2807 virtual void RecorderRecordDataRetrieve(int32_t recorderNumber) PURE_VIRTUAL;
2808
2825 virtual int32_t RecorderRecordDataValueGet(int32_t index) PURE_VIRTUAL;
2826
2828 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2829
2848 virtual int32_t RecorderRecordDataValueGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
2849
2851 virtual double RecorderRecordDataDoubleGet(int32_t index) PURE_VIRTUAL;
2852
2854 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t index) PURE_VIRTUAL;
2855
2874 virtual double RecorderRecordDataDoubleGet(int32_t recorderNumber, int32_t recordIndex, int32_t dataIndex) PURE_VIRTUAL;
2875
2893 virtual void RecorderBufferHighCountSet(int32_t bufferHighCount) PURE_VIRTUAL;
2894
2896 virtual void RecorderBufferHighCountSet(int32_t recorderNumber, int32_t bufferHighCount) PURE_VIRTUAL;
2897
2912 virtual void RecorderReset() PURE_VIRTUAL;
2913
2915 virtual void RecorderReset(int32_t recorderNumber) PURE_VIRTUAL;
2916
2928 virtual int32_t RecorderBufferSizeGet(int32_t recorderNumber) PURE_VIRTUAL;
2929
2946 virtual void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize) PURE_VIRTUAL;
2948
2953
2954
2955
2956
2981 virtual int32_t CompensatorCountGet() PURE_VIRTUAL;
2982
3002 virtual void CompensatorCountSet(int32_t compensatorCount) PURE_VIRTUAL;
3003
3014 virtual int32_t CompensatorPointCountGet(int32_t compensatorNumber) PURE_VIRTUAL;
3015
3035 virtual void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount) PURE_VIRTUAL;
3036
3050 virtual int32_t CompensatorDimensionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3051
3077 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;
3078
3108 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;
3109
3130 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;
3131
3152 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;
3153
3165 virtual void CompensatorTableSet(int32_t compensatorNumber, const double* const table) PURE_VIRTUAL;
3166
3178 virtual void CompensatorTableGet(int32_t compensatorNumber, double* table) PURE_VIRTUAL;
3179
3199 virtual double CompensatorPositionGet(int32_t compensatorNumber) PURE_VIRTUAL;
3200
3201
3202
3203
3204
3205
3217
3218 virtual void CompensatorTableClear(int32_t compensatorNumber) PURE_VIRTUAL;
3219
3228 virtual void CompensatorDisable(int32_t compensatorNumber) PURE_VIRTUAL;
3229
3234 virtual void CompensatorDisable(int32_t compensatorNumber, bool force) PURE_VIRTUAL;
3235
3242 virtual void CompensatorEnable(int32_t compensatorNumber) PURE_VIRTUAL;
3243
3245
3250
3270 virtual int32_t UserLimitCountGet() PURE_VIRTUAL;
3271
3291 virtual void UserLimitCountSet(int32_t userLimitCount) PURE_VIRTUAL;
3292
3312 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot) PURE_VIRTUAL;
3313
3316 virtual void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration) PURE_VIRTUAL;
3317
3319 virtual RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number) PURE_VIRTUAL;
3320
3322 virtual RSIAction UserLimitActionGet(int32_t number) PURE_VIRTUAL;
3323
3325 virtual int32_t UserLimitAxisNumberGet(int32_t number) PURE_VIRTUAL;
3326
3328 virtual double UserLimitDurationGet(int32_t number) PURE_VIRTUAL;
3329
3331 virtual bool UserLimitSingleShotGet(int32_t number) PURE_VIRTUAL;
3332
3357 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32) PURE_VIRTUAL;
3358
3380 virtual void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfDouble, double limitValueDouble) PURE_VIRTUAL;
3381
3383 virtual RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3384
3386 virtual RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3387
3389 virtual uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3390
3392 virtual uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3393
3395 virtual int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3396
3398 virtual double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber) PURE_VIRTUAL;
3399
3426 virtual void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3427
3430 virtual void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3431
3434 virtual void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3435
3438 virtual void UserLimitOutputSet(int32_t number, double limitValueDouble, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3439
3455 virtual void UserLimitOutputSet(int32_t number, RSIDataType dataType, uint64_t inputPtr, uint64_t outputPtr, bool enabled) PURE_VIRTUAL;
3456
3458 virtual bool UserLimitOutputEnableGet(int32_t number) PURE_VIRTUAL;
3459
3461 virtual RSIDataType UserLimitOutputDataTypeGet(int32_t number) PURE_VIRTUAL;
3462
3464 virtual uint64_t UserLimitOutputAddressGet(int32_t number) PURE_VIRTUAL;
3465
3467 virtual uint64_t UserLimitOutputInputAddressGet(int32_t number) PURE_VIRTUAL;
3468
3470 virtual uint32_t UserLimitOutputAndMaskGet(int32_t number) PURE_VIRTUAL;
3471
3473 virtual uint32_t UserLimitOutputOrMaskGet(int32_t number) PURE_VIRTUAL;
3474
3476 virtual int32_t UserLimitOutputValueGet(int32_t number) PURE_VIRTUAL;
3477
3479 virtual uint64_t UserLimitOutputAndMask64Get(int32_t number) PURE_VIRTUAL;
3480
3482 virtual uint64_t UserLimitOutputOrMask64Get(int32_t number) PURE_VIRTUAL;
3483
3484
3486 virtual double UserLimitOutputDoubleGet(int32_t number) PURE_VIRTUAL;
3487
3508 virtual bool UserLimitStateGet(int32_t number) PURE_VIRTUAL;
3509
3530 virtual bool UserLimitEnableGet(int32_t number) PURE_VIRTUAL;
3531
3533 virtual void UserLimitEnableSet(int32_t number, bool enable) PURE_VIRTUAL;
3534
3549 virtual void UserLimitDisable(int32_t number) PURE_VIRTUAL;
3550
3562 virtual void UserLimitReset(int32_t number) PURE_VIRTUAL;
3563
3572
3573 virtual int32_t UserLimitCountMax() PURE_VIRTUAL;
3574
3592 virtual void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address) PURE_VIRTUAL;
3593
3595 virtual uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex) PURE_VIRTUAL;
3597
3598
3603
3613 virtual int32_t MathBlockCountGet() PURE_VIRTUAL;
3614
3625 virtual void MathBlockCountSet(int32_t mathBlockCount) PURE_VIRTUAL;
3626
3645
3647 virtual MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3648
3650 virtual void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig& config) PURE_VIRTUAL;
3651
3653 virtual FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber) PURE_VIRTUAL;
3654
3656
3657
3662
3665
3667};
3668
3672class RSI_API RapidCodeNetworkNode : public virtual RapidCodeObject {
3673public:
3674
3679
3681 static inline constexpr uint32_t SDOTimeoutMillisecondsDefault = 100;
3682
3684
3685
3690
3692 virtual bool Exists() PURE_VIRTUAL;
3693
3695 virtual RSINodeType TypeGet() PURE_VIRTUAL;
3696
3698 virtual bool IsEtherCAT() PURE_VIRTUAL;
3699
3701 virtual bool IsSynqNet() PURE_VIRTUAL;
3702
3704
3709
3711 virtual bool HasIO() PURE_VIRTUAL;
3712
3714 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
3715
3717 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
3718
3720 virtual void DigitalOutSet(int32_t digitalOutNumber, bool state) PURE_VIRTUAL;
3721
3723 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
3724
3726 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
3727
3729 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
3730
3732
3736
3738 virtual int32_t DigitalInCountGet() PURE_VIRTUAL;
3739
3741 virtual int32_t DigitalOutCountGet() PURE_VIRTUAL;
3742
3744 virtual int32_t AnalogInCountGet() PURE_VIRTUAL;
3745
3747 virtual int32_t AnalogOutCountGet() PURE_VIRTUAL;
3748
3749
3751 virtual int32_t SegmentCountGet() PURE_VIRTUAL;
3752
3754 virtual int32_t SegmentDigitalInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3755
3757 virtual int32_t SegmentDigitalOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3758
3760 virtual int32_t SegmentAnalogInCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3761
3763 virtual int32_t SegmentAnalogOutCountGet(int32_t segmentNumber) PURE_VIRTUAL;
3764
3766 virtual int32_t SegmentIDGet(int32_t segmentNumber) PURE_VIRTUAL;
3767
3780 virtual uint64_t DigitalInAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3781
3794 virtual int32_t DigitalInMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3795
3808 virtual uint64_t DigitalOutAddressGet(int32_t bitNumber) PURE_VIRTUAL;
3809
3822 virtual int32_t DigitalOutMaskGet(int32_t bitNumber) PURE_VIRTUAL;
3823
3835 virtual uint64_t AnalogInAddressGet(int32_t channel) PURE_VIRTUAL;
3836
3848 virtual int32_t AnalogInMaskGet(int32_t channel) PURE_VIRTUAL;
3849
3861 virtual uint64_t AnalogOutAddressGet(int32_t channel) PURE_VIRTUAL;
3862
3874 virtual int32_t AnalogOutMaskGet(int32_t channel) PURE_VIRTUAL;
3875
3887 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
3888
3892 virtual int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
3893
3906 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount) PURE_VIRTUAL;
3907
3911 virtual const char* const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
3912
3928 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue) PURE_VIRTUAL;
3929
3930
3935 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
3936
3949 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue) PURE_VIRTUAL;
3950
3958 virtual void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const char* const stringValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
3959
3965 virtual char* AKDASCIICommand(const char* const command) PURE_VIRTUAL;
3966
3968 virtual void ClearFaults(int32_t axisNumber) PURE_VIRTUAL;
3969
3971 virtual uint32_t VendorIdGet() PURE_VIRTUAL;
3972
3985 virtual const char* const NameGet() PURE_VIRTUAL;
3986
3999 virtual const char* const ProductNameGet() PURE_VIRTUAL;
4000
4013 virtual const char* const VendorNameGet() PURE_VIRTUAL;
4014
4016 virtual uint32_t ProductCodeGet() PURE_VIRTUAL;
4017
4019 virtual uint32_t RevisionGet() PURE_VIRTUAL;
4020
4022 virtual uint32_t StationAliasGet() PURE_VIRTUAL;
4023
4025 virtual const char* const SerialNumberGet() PURE_VIRTUAL;
4026
4028 virtual uint32_t AxisCountGet() PURE_VIRTUAL;
4029
4031 virtual uint16_t StatusWordGet(int32_t axisIndex) PURE_VIRTUAL;
4032};
4033
4035
4038class RSI_API RapidCodeMotion : public virtual RapidCodeInterrupt{
4039public:
4040
4046
4049
4051
4052
4056
4074 virtual int32_t NumberGet() PURE_VIRTUAL;
4075
4092 virtual int32_t AxisCountGet() PURE_VIRTUAL;
4093
4097
4122 virtual void TriggeredModify() PURE_VIRTUAL;
4123
4150 virtual void Stop() PURE_VIRTUAL;
4151
4176 virtual void Resume() PURE_VIRTUAL;
4177
4202 virtual void EStop() PURE_VIRTUAL;
4203
4224 virtual void EStopAbort() PURE_VIRTUAL;
4225
4242 virtual void EStopModify() PURE_VIRTUAL;
4243
4246 virtual void EStopModifyAbort() PURE_VIRTUAL;
4247
4269 virtual void Abort() PURE_VIRTUAL;
4270
4297 virtual void ClearFaults() PURE_VIRTUAL;
4298
4325 virtual void AmpEnableSet(bool enable) PURE_VIRTUAL;
4326
4356 virtual int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds) PURE_VIRTUAL;
4357
4377
4378 virtual void Map() PURE_VIRTUAL;
4379
4397 virtual void Unmap() PURE_VIRTUAL;
4398
4403 virtual bool IsMapped() PURE_VIRTUAL;
4404
4421 virtual void FeedRateSet(double rate) PURE_VIRTUAL;
4422
4441 virtual double FeedRateGet() PURE_VIRTUAL;
4442
4446
4447
4448
4449
4469 virtual RSIState StateGet() PURE_VIRTUAL;
4470
4482
4503 virtual RSISource SourceGet() PURE_VIRTUAL;
4504
4534 virtual const char* const SourceNameGet(RSISource source) PURE_VIRTUAL;
4535
4558 virtual int32_t MotionDoneWait() PURE_VIRTUAL;
4559
4586 virtual int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds) PURE_VIRTUAL;
4587
4608 virtual bool MotionDoneGet() PURE_VIRTUAL;
4609
4632 virtual bool StatusBitGet(RSIEventType bitMask) PURE_VIRTUAL;
4633
4648 virtual uint64_t StatusBitsGet() PURE_VIRTUAL;
4649
4653
4682 virtual void InterruptEnableSet(bool enable) PURE_VIRTUAL;
4683
4697 virtual void InterruptWake() PURE_VIRTUAL;
4698
4702
4718 virtual double StopTimeGet() PURE_VIRTUAL;
4719
4735 virtual void StopTimeSet(double seconds) PURE_VIRTUAL;
4736
4752 virtual double EStopTimeGet() PURE_VIRTUAL;
4753
4769 virtual void EStopTimeSet(double seconds) PURE_VIRTUAL;
4770
4787 virtual double MotionDelayGet() PURE_VIRTUAL;
4788
4809 virtual void MotionDelaySet(double seconds) PURE_VIRTUAL;
4810
4831 virtual uint16_t MotionIdGet() PURE_VIRTUAL;
4832
4850 virtual void MotionIdSet(uint16_t id) PURE_VIRTUAL;
4851
4853 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
4854
4856 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
4857
4872 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
4873
4881 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
4882
4902 virtual RSIMotionHoldType MotionHoldTypeGet() PURE_VIRTUAL;
4903
4936 virtual void MotionHoldTypeSet(RSIMotionHoldType type) PURE_VIRTUAL;
4937
4949 virtual int32_t MotionHoldGateNumberGet() PURE_VIRTUAL;
4950
4969
4970 virtual void MotionHoldGateNumberSet(int32_t gateNumber) PURE_VIRTUAL;
4971
4988 virtual double MotionHoldTimeoutGet() PURE_VIRTUAL;
4989
5008 virtual void MotionHoldTimeoutSet(double seconds) PURE_VIRTUAL;
5009
5033 virtual bool MotionHoldGateGet() PURE_VIRTUAL;
5034
5057 virtual void MotionHoldGateSet(bool hold) PURE_VIRTUAL;
5058
5075 virtual int32_t MotionHoldAxisNumberGet() PURE_VIRTUAL;
5076
5093 virtual void MotionHoldAxisNumberSet(int32_t number) PURE_VIRTUAL;
5094
5111
5112 virtual double MotionHoldAxisPositionGet() PURE_VIRTUAL;
5113
5130 virtual void MotionHoldAxisPositionSet(double position) PURE_VIRTUAL;
5131
5133 virtual RSIUserLimitLogic MotionHoldAxisLogicGet() PURE_VIRTUAL;
5134
5136 virtual void MotionHoldAxisLogicSet(RSIUserLimitLogic logic) PURE_VIRTUAL;
5137
5154 virtual uint64_t MotionHoldUserAddressGet() PURE_VIRTUAL;
5155
5172 virtual void MotionHoldUserAddressSet(uint64_t address) PURE_VIRTUAL;
5173
5189 virtual int32_t MotionHoldUserMaskGet() PURE_VIRTUAL;
5190
5206 virtual void MotionHoldUserMaskSet(int32_t holdMask) PURE_VIRTUAL;
5207
5223 virtual int32_t MotionHoldUserPatternGet() PURE_VIRTUAL;
5224
5240 virtual void MotionHoldUserPatternSet(int32_t pattern) PURE_VIRTUAL;
5241
5243 virtual void MotionAttributeMaskDefaultSet() PURE_VIRTUAL;
5244
5269
5270 virtual bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5271
5290 virtual void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn) PURE_VIRTUAL;
5291
5308
5309 virtual void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff) PURE_VIRTUAL;
5310
5314
5315
5316
5349 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;
5350
5384 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;
5385
5412 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;
5413
5418 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address) PURE_VIRTUAL;
5419
5441 virtual void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
5442
5447 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on) PURE_VIRTUAL;
5448
5467 virtual void StreamingOutputAdd(RapidCode::IOPoint* point, bool on, int32_t ptPointIndex) PURE_VIRTUAL;
5468
5484 virtual void StreamingOutputsClear() PURE_VIRTUAL;
5485
5505 virtual void StreamingOutputsEnableSet(bool enable) PURE_VIRTUAL;
5506};
5507
5508
5513class RSI_API Axis : public virtual RapidCodeMotion{
5514public:
5515
5516 friend class MotionController;
5517 friend class MultiAxis;
5518
5519
5524
5526 static inline constexpr uint32_t NetworkIndexInvalid = 65535;
5527
5529 static inline constexpr double AmpEnableAmpFaultTimeoutSecondsDefault = 1.0;
5530
5532
5533
5538
5543 RapidCodeNetworkNode* NetworkNode;
5544
5545
5547
5552
5590 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel) PURE_VIRTUAL;
5591
5613 virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel) PURE_VIRTUAL;
5614
5637 virtual void MoveTrapezoidal(double position) PURE_VIRTUAL; // use defaults Overload
5638 //virtual void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel, bool checkLimits) PURE_VIRTUAL;
5639
5678 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5679
5684 virtual void MoveSCurve(double position) PURE_VIRTUAL;
5685
5695 virtual void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5696
5700 virtual void MoveVelocity(double velocity) PURE_VIRTUAL;
5701
5736 virtual void MoveVelocity(double velocity, double accel) PURE_VIRTUAL;
5737
5774 virtual void MoveVelocitySCurve(double velocity, double accel, double jerkPct) PURE_VIRTUAL;
5775
5814 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct) PURE_VIRTUAL;
5815
5819 virtual void MoveRelative(double releativePosition) PURE_VIRTUAL;
5820
5824 virtual void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel) PURE_VIRTUAL;
5826
5831
5856 virtual void PositionSet(double position) PURE_VIRTUAL;
5857
5876 virtual double ActualPositionGet() PURE_VIRTUAL;
5877
5899 virtual void ActualPositionSet(double position) PURE_VIRTUAL;
5900
5917 virtual double CompensationPositionGet() PURE_VIRTUAL;
5918
5931 virtual void CompensationPositionSet(double position) PURE_VIRTUAL;
5932
5944 virtual double TargetPositionGet() PURE_VIRTUAL;
5945
5965 virtual double CommandPositionGet() PURE_VIRTUAL;
5966
5998 virtual void CommandPositionSet(double position) PURE_VIRTUAL;
5999
6023 virtual void CommandPositionDirectSet(double position) PURE_VIRTUAL;
6024
6041 virtual double OriginPositionGet() PURE_VIRTUAL;
6042
6065 virtual void OriginPositionSet(double position) PURE_VIRTUAL;
6066
6087 virtual double PositionErrorGet() PURE_VIRTUAL;
6088
6110 virtual double CommandVelocityGet() PURE_VIRTUAL;
6111
6134 virtual double ActualVelocityGet() PURE_VIRTUAL;
6135
6156 virtual double CommandAccelGet() PURE_VIRTUAL;
6157
6159 virtual double CommandJerkGet() PURE_VIRTUAL;
6160
6181 virtual double EncoderPositionGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
6182
6204 virtual double UserUnitsGet() PURE_VIRTUAL;
6205
6228 virtual void UserUnitsSet(double countsPerUserUnit) PURE_VIRTUAL;
6229
6231 virtual double UserUnitsToCounts(double userUnits) PURE_VIRTUAL;
6232
6234 virtual double CountsToUserUnits(double counts) PURE_VIRTUAL;
6235
6255 virtual int32_t FramesToExecuteGet() PURE_VIRTUAL;
6257
6262
6283
6284 virtual void Home() PURE_VIRTUAL; // this one moves to zero by default
6285
6289 virtual void Home(bool moveToZero) PURE_VIRTUAL;
6290
6309
6310 virtual RSIHomeMethod HomeMethodGet() PURE_VIRTUAL;
6311
6330
6331 virtual void HomeMethodSet(RSIHomeMethod method) PURE_VIRTUAL;
6332
6353
6354 virtual double HomeOffsetGet() PURE_VIRTUAL;
6355
6374
6375 virtual void HomeOffsetSet(double offset) PURE_VIRTUAL;
6376
6394
6395 virtual double HomeVelocityGet() PURE_VIRTUAL;
6396
6399 virtual double HomeVelocityGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6400
6421 virtual void HomeVelocitySet(double velocity) PURE_VIRTUAL;
6422
6427 virtual void HomeVelocitySet(RSIHomeStage homeStage, double velocity) PURE_VIRTUAL;
6428
6444 virtual double HomeSlowVelocityGet() PURE_VIRTUAL;
6445
6461 virtual void HomeSlowVelocitySet(double velocity) PURE_VIRTUAL;
6462
6480
6481 virtual double HomeAccelerationGet() PURE_VIRTUAL;
6482
6485 virtual double HomeAccelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6486
6506
6507 virtual void HomeAccelerationSet(double accel) PURE_VIRTUAL;
6508
6512 virtual void HomeAccelerationSet(RSIHomeStage homeStage, double accel) PURE_VIRTUAL;
6513
6530
6531 virtual double HomeDecelerationGet() PURE_VIRTUAL;
6532
6535 virtual double HomeDecelerationGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6536
6555
6556 virtual void HomeDecelerationSet(double decel) PURE_VIRTUAL;
6557
6561 virtual void HomeDecelerationSet(RSIHomeStage homeStage, double decel) PURE_VIRTUAL;
6562
6580
6581 virtual double HomeJerkPercentGet() PURE_VIRTUAL;
6582
6585 virtual double HomeJerkPercentGet(RSIHomeStage homeStage) PURE_VIRTUAL;
6586
6606 virtual void HomeJerkPercentSet(double percent) PURE_VIRTUAL;
6607
6612 virtual void HomeJerkPercentSet(RSIHomeStage homeStage, double percent) PURE_VIRTUAL;
6613
6633 virtual void HomeCancelSet(bool cancel) PURE_VIRTUAL;
6634
6653 virtual bool HomeStateGet() PURE_VIRTUAL;
6654
6667 virtual void HomeStateSet(bool homed) PURE_VIRTUAL;
6668
6673 virtual void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex) PURE_VIRTUAL;
6674
6676 virtual void HomeLimitCustomConfigReset() PURE_VIRTUAL;
6677
6679 virtual uint64_t HomeLimitCustomConfigAddressGet() PURE_VIRTUAL;
6680
6683 virtual int32_t HomeLimitCustomConfigBitIndexGet() PURE_VIRTUAL;
6684
6706
6707 virtual void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel) PURE_VIRTUAL;
6708
6728 virtual RSIHomeStage HomeStageGet() PURE_VIRTUAL;
6729
6743 virtual void HomeBehaviorSet(RSIAction behavior) PURE_VIRTUAL;
6744
6756 virtual RSIAction HomeBehaviorGet() PURE_VIRTUAL;
6758
6764
6766 virtual bool FaultMaskBitGet(RSIMotorFaultMask bitMask) PURE_VIRTUAL;
6767
6769 virtual uint16_t StatusWordGet() PURE_VIRTUAL;
6771
6776 // reads active configuration to report state
6777
6801
6802 virtual bool NegativeLimitGet() PURE_VIRTUAL;
6803
6827 virtual bool PositiveLimitGet() PURE_VIRTUAL;
6828
6857 virtual bool HomeLimitGet() PURE_VIRTUAL;
6858
6886 virtual bool HomeSwitchGet() PURE_VIRTUAL;
6887
6908 virtual bool AmpFaultGet() PURE_VIRTUAL;
6909
6933 virtual bool AmpEnableGet() PURE_VIRTUAL;
6934
6959 virtual bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
6960
6985 virtual bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
6986
7009 virtual bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber) PURE_VIRTUAL;
7010
7033 virtual bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber) PURE_VIRTUAL;
7035
7040
7061 virtual bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7062
7083 virtual bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7084
7105
7106 virtual void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue) PURE_VIRTUAL;
7107
7126 virtual bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7127
7146 virtual const char* const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7147
7170 virtual RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber) PURE_VIRTUAL;
7171
7190 virtual void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type) PURE_VIRTUAL;
7191
7208 virtual double AnalogInGet(int32_t channel) PURE_VIRTUAL;
7210
7215
7229 virtual double EStopDecelerationGet() PURE_VIRTUAL;
7230
7245 virtual void EStopDecelerationSet(double decel) PURE_VIRTUAL;
7246
7257 virtual double EStopJerkPercentGet() PURE_VIRTUAL;
7258
7276 virtual void EStopJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7277
7287 virtual double TriggeredModifyDecelerationGet() PURE_VIRTUAL;
7288
7306 virtual void TriggeredModifyDecelerationSet(double decel) PURE_VIRTUAL;
7307
7318 virtual double TriggeredModifyJerkPercentGet() PURE_VIRTUAL;
7319
7337 virtual void TriggeredModifyJerkPercentSet(double jerkPct) PURE_VIRTUAL;
7338
7340 virtual int32_t FrameBufferSizeGet() PURE_VIRTUAL;
7341
7343 virtual void FrameBufferSizeSet(int32_t frameSize) PURE_VIRTUAL;
7344
7364 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
7365
7386 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
7388
7393
7395 virtual double MotionFinalVelocityGet() PURE_VIRTUAL;
7396
7398 virtual void MotionFinalVelocitySet(double finalVelocity) PURE_VIRTUAL;
7399
7401 virtual double DefaultVelocityGet() PURE_VIRTUAL;
7402
7404 virtual void DefaultVelocitySet(double velocity) PURE_VIRTUAL;
7405
7407 virtual double DefaultAccelerationGet() PURE_VIRTUAL;
7408
7410 virtual void DefaultAccelerationSet(double acceleration) PURE_VIRTUAL;
7411
7413 virtual double DefaultDecelerationGet() PURE_VIRTUAL;
7414
7416 virtual void DefaultDecelerationSet(double deceleration) PURE_VIRTUAL;
7417
7419 virtual double DefaultJerkPercentGet() PURE_VIRTUAL;
7420
7422 virtual void DefaultJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
7423
7425 virtual double DefaultPosition1Get() PURE_VIRTUAL;
7426
7428 virtual void DefaultPosition1Set(double position1) PURE_VIRTUAL;
7429
7431 virtual double DefaultPosition2Get() PURE_VIRTUAL;
7432
7434 virtual void DefaultPosition2Set(double position2) PURE_VIRTUAL;
7435
7437 virtual double DefaultRelativeIncrementGet() PURE_VIRTUAL;
7438
7440 virtual void DefaultRelativeIncrementSet(double relativeIncrement) PURE_VIRTUAL;
7442
7446 // /@{
7447
7470 virtual RSIAction AmpFaultActionGet() PURE_VIRTUAL;
7471
7494 virtual void AmpFaultActionSet(RSIAction action) PURE_VIRTUAL;
7495
7517 virtual bool AmpFaultTriggerStateGet() PURE_VIRTUAL;
7518
7540 virtual void AmpFaultTriggerStateSet(bool state) PURE_VIRTUAL;
7541
7562 virtual double AmpFaultDurationGet() PURE_VIRTUAL;
7563
7584 virtual void AmpFaultDurationSet(double seconds) PURE_VIRTUAL;
7585
7610 virtual RSIAction HomeActionGet() PURE_VIRTUAL;
7611
7635 virtual void HomeActionSet(RSIAction action) PURE_VIRTUAL;
7636
7662 virtual bool HomeTriggerStateGet() PURE_VIRTUAL;
7663
7684 virtual void HomeTriggerStateSet(bool state) PURE_VIRTUAL;
7685
7707 virtual double HomeDurationGet() PURE_VIRTUAL;
7708
7731 virtual void HomeDurationSet(double seconds) PURE_VIRTUAL;
7732
7761 virtual RSIAction ErrorLimitActionGet() PURE_VIRTUAL;
7762
7789 virtual void ErrorLimitActionSet(RSIAction action) PURE_VIRTUAL;
7790
7813 virtual double ErrorLimitTriggerValueGet() PURE_VIRTUAL;
7814
7836 virtual void ErrorLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
7837
7859 virtual double ErrorLimitDurationGet() PURE_VIRTUAL;
7860
7883 virtual void ErrorLimitDurationSet(double seconds) PURE_VIRTUAL;
7884
7909 virtual RSIAction HardwareNegLimitActionGet() PURE_VIRTUAL;
7910
7935 virtual void HardwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
7936
7960 virtual bool HardwareNegLimitTriggerStateGet() PURE_VIRTUAL;
7961
7985 virtual void HardwareNegLimitTriggerStateSet(bool state) PURE_VIRTUAL;
7986
8009 virtual double HardwareNegLimitDurationGet() PURE_VIRTUAL;
8010
8034 virtual void HardwareNegLimitDurationSet(double seconds) PURE_VIRTUAL;
8035
8060 virtual RSIAction HardwarePosLimitActionGet() PURE_VIRTUAL;
8061
8086 virtual void HardwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8087
8108 virtual bool HardwarePosLimitTriggerStateGet() PURE_VIRTUAL;
8109
8133 virtual void HardwarePosLimitTriggerStateSet(bool state) PURE_VIRTUAL;
8134
8157 virtual double HardwarePosLimitDurationGet() PURE_VIRTUAL;
8158
8181 virtual void HardwarePosLimitDurationSet(double seconds) PURE_VIRTUAL;
8182
8208 virtual RSIAction SoftwareNegLimitActionGet() PURE_VIRTUAL;
8209
8233 virtual void SoftwareNegLimitActionSet(RSIAction action) PURE_VIRTUAL;
8234
8257 virtual double SoftwareNegLimitTriggerValueGet() PURE_VIRTUAL;
8258
8281 virtual void SoftwareNegLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8282
8306 virtual RSIAction SoftwarePosLimitActionGet() PURE_VIRTUAL;
8307
8331 virtual void SoftwarePosLimitActionSet(RSIAction action) PURE_VIRTUAL;
8332
8355 virtual double SoftwarePosLimitTriggerValueGet() PURE_VIRTUAL;
8356
8379 virtual void SoftwarePosLimitTriggerValueSet(double triggerValue) PURE_VIRTUAL;
8380
8406 virtual RSIAction EncoderFaultActionGet() PURE_VIRTUAL;
8407
8432 virtual void EncoderFaultActionSet(RSIAction action) PURE_VIRTUAL;
8433
8457 virtual RSIMotorFeedbackFault EncoderFaultTriggerGet() PURE_VIRTUAL;
8458
8480 virtual void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder) PURE_VIRTUAL;
8481
8503 virtual double EncoderFaultDurationGet() PURE_VIRTUAL;
8504
8526 virtual void EncoderFaultDurationSet(double seconds) PURE_VIRTUAL;
8527
8529 virtual RSIAction NodeFailureActionGet() PURE_VIRTUAL;
8530
8532 virtual void NodeFailureActionSet(RSIAction action) PURE_VIRTUAL;
8533
8549 virtual uint64_t AddressGet( RSIAxisAddressType addressType) PURE_VIRTUAL;
8550
8564 virtual RSIDataType AddressDataTypeGet(RSIAxisAddressType type) PURE_VIRTUAL;
8565
8566 // common limit methods
8567
8569 virtual RSIAction LimitActionGet(RSIEventType limit) PURE_VIRTUAL;
8570
8572 virtual void LimitActionSet(RSIEventType limit, RSIAction action) PURE_VIRTUAL;
8573
8575 virtual bool LimitTriggerStateGet(RSIEventType limit) PURE_VIRTUAL;
8576
8578 virtual void LimitTriggerStateSet(RSIEventType limit, bool triggerState) PURE_VIRTUAL;
8579
8581 virtual double LimitTriggerValueGet(RSIEventType limit) PURE_VIRTUAL;
8582
8584 virtual void LimitTriggerValueSet(RSIEventType limit, double triggerValue) PURE_VIRTUAL;
8585
8587 virtual double LimitDurationGet(RSIEventType limit) PURE_VIRTUAL;
8588
8590 virtual void LimitDurationSet(RSIEventType limit, double seconds) PURE_VIRTUAL;
8592
8597
8611 virtual double PositionToleranceFineGet() PURE_VIRTUAL;
8612
8626 virtual void PositionToleranceFineSet(double tolerance) PURE_VIRTUAL;
8627
8641 virtual double PositionToleranceCoarseGet() PURE_VIRTUAL;
8642
8659 virtual void PositionToleranceCoarseSet(double tolerance) PURE_VIRTUAL;
8660
8674 virtual double VelocityToleranceGet() PURE_VIRTUAL;
8675
8689 virtual void VelocityToleranceSet(double tolerance) PURE_VIRTUAL;
8690
8705 virtual double SettlingTimeGet() PURE_VIRTUAL;
8706
8721 virtual void SettlingTimeSet(double time) PURE_VIRTUAL;
8722
8739 virtual bool SettleOnStopGet() PURE_VIRTUAL;
8740
8757
8758 virtual void SettleOnStopSet(bool state) PURE_VIRTUAL;
8759
8776 virtual bool SettleOnEStopGet() PURE_VIRTUAL;
8777
8793 virtual void SettleOnEStopSet(bool state) PURE_VIRTUAL;
8794
8811 virtual bool SettleOnEStopCmdEqActGet() PURE_VIRTUAL;
8812
8828 virtual void SettleOnEStopCmdEqActSet(bool state) PURE_VIRTUAL;
8830
8835
8852 virtual RSIMotorType MotorTypeGet() PURE_VIRTUAL;
8853
8869 virtual void MotorTypeSet(RSIMotorType type) PURE_VIRTUAL;
8870
8887 virtual RSIMotorDisableAction AmpDisableActionGet() PURE_VIRTUAL;
8888
8904 virtual void AmpDisableActionSet(RSIMotorDisableAction action) PURE_VIRTUAL;
8905
8923
8924 virtual RSIMotorBrakeMode BrakeModeGet() PURE_VIRTUAL;
8925
8941 virtual void BrakeModeSet(RSIMotorBrakeMode mode) PURE_VIRTUAL;
8942
8958 virtual double BrakeApplyDelayGet() PURE_VIRTUAL;
8959
8960
8977 virtual void BrakeApplyDelaySet(double seconds) PURE_VIRTUAL;
8978
8994 virtual double BrakeReleaseDelayGet() PURE_VIRTUAL;
8995
9013 virtual void BrakeReleaseDelaySet(double seconds) PURE_VIRTUAL;
9014
9016 virtual void ClosedLoopStepperSet(bool enable) PURE_VIRTUAL;
9017
9019 virtual int32_t ClosedLoopStepperVersionGet() PURE_VIRTUAL;
9020
9022 virtual uint64_t EncoderPointerGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9023
9025 virtual void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address) PURE_VIRTUAL;
9026
9028 virtual uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9029
9030
9032 virtual void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9033
9035 virtual uint64_t FeedbackPointerGet(RSIAxisPositionInput input) PURE_VIRTUAL;
9036
9054 virtual void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address) PURE_VIRTUAL;
9055
9057 virtual int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9058
9060 virtual int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder) PURE_VIRTUAL;
9061
9083 virtual void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9084
9086 virtual const char* const EncoderRatioPrimaryGet() PURE_VIRTUAL;
9087
9089 virtual void EncoderRatioPrimarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9090
9092 virtual const char* const EncoderRatioSecondaryGet() PURE_VIRTUAL;
9093
9095 virtual void EncoderRatioSecondarySet(char* numeratorCommaDenominator) PURE_VIRTUAL;
9096
9098 virtual int32_t EncoderCountGet() PURE_VIRTUAL;
9099
9102 virtual void EncoderCountSet(int32_t count) PURE_VIRTUAL;
9103
9105 virtual RSIAxisGantryType GantryTypeGet() PURE_VIRTUAL;
9106
9108 virtual void GantryTypeSet(RSIAxisGantryType type) PURE_VIRTUAL;
9109
9123 virtual RSIOperationMode OperationModeGet() PURE_VIRTUAL;
9124
9138 virtual void OperationModeSet(RSIOperationMode mode) PURE_VIRTUAL;
9139
9159 virtual int32_t MotorFaultMaskGet() PURE_VIRTUAL;
9160
9186 virtual void MotorFaultMaskSet(int32_t faultMask) PURE_VIRTUAL;
9188
9193
9215 virtual void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9220 virtual void GearingEnable(Axis* masterAxis, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9221
9240 virtual void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9241
9258 virtual void GearingDisable() PURE_VIRTUAL;
9259
9261 virtual int32_t GearingNumeratorGet() PURE_VIRTUAL;
9262
9264 virtual int32_t GearingDenominatorGet() PURE_VIRTUAL;
9265
9267 virtual bool GearingEnableGet() PURE_VIRTUAL;
9268
9286 virtual int32_t GearingMasterAxisNumberGet() PURE_VIRTUAL;
9287
9300 virtual RSIAxisMasterType GearingSourceGet() PURE_VIRTUAL;
9302
9307
9324 virtual double MotionCamMasterStartGet(Axis* master) PURE_VIRTUAL;
9325
9340 virtual void MotionCamMasterStartSet(Axis* master, double startPosition) PURE_VIRTUAL;
9341
9358 virtual int32_t MotionCamRepeatFromGet() PURE_VIRTUAL;
9359
9377 virtual void MotionCamRepeatFromSet(int32_t repeatFrom) PURE_VIRTUAL;
9378
9396 virtual void MotionCamRepeatStop() PURE_VIRTUAL;
9397
9420 virtual void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double* const masterDistances, const double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
9421
9451 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;
9452
9469
9470 virtual int32_t DriveIndexGet() PURE_VIRTUAL;
9472
9477
9490 virtual double BacklashWidthGet() PURE_VIRTUAL;
9491
9504 virtual void BacklashWidthSet(double width) PURE_VIRTUAL;
9505
9518 virtual double BacklashRateGet() PURE_VIRTUAL;
9519
9532 virtual void BacklashRateSet(double rate) PURE_VIRTUAL;
9533
9534
9545 virtual double BacklashValueGet() PURE_VIRTUAL;
9547
9552
9580 virtual RSIFilterAlgorithm FilterAlgorithmGet() PURE_VIRTUAL;
9581
9606 virtual void FilterAlgorithmSet(RSIFilterAlgorithm algorithm) PURE_VIRTUAL;
9607
9633 virtual double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9634
9657 virtual void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9658
9661 virtual double FilterCoeffGet(RSIFilterGainPIVCoeff coeff, int32_t gainTable) PURE_VIRTUAL;
9666 virtual void FilterCoeffSet(RSIFilterGainPIVCoeff coeff, int32_t gainTable, double coeffValue) PURE_VIRTUAL;
9667
9702 virtual int32_t FilterGainTableGet() PURE_VIRTUAL;
9703
9732 virtual void FilterGainTableSet(int32_t gainTable) PURE_VIRTUAL;
9733
9750 virtual int32_t FilterGainTableSizeGet() PURE_VIRTUAL;
9751
9753 virtual double FilterOutputGet(void) PURE_VIRTUAL;
9754
9767 virtual double FilterLowPassGet() PURE_VIRTUAL;
9768
9784 virtual void FilterLowPassSet(double frequency) PURE_VIRTUAL;
9785
9804 virtual void FilterDualLoopSet(Axis* velocityAxis, RSIMotorFeedback velocityEncoder, bool enable) PURE_VIRTUAL;
9805
9806
9808 virtual bool FilterGainSchedulingGet() PURE_VIRTUAL;
9809
9810
9812 virtual void FilterGainSchedulingSet(bool enable) PURE_VIRTUAL;
9813
9815 virtual bool IsTuneable() PURE_VIRTUAL;
9816
9833 virtual void PostFilterLowPassSet(int32_t sectionNumber, double frequency) PURE_VIRTUAL;
9834
9850 virtual void PostFilterUnityGainSet(int32_t sectionNumber) PURE_VIRTUAL;
9851
9870 virtual void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne) PURE_VIRTUAL;
9871
9887 virtual void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq) PURE_VIRTUAL;
9888
9906 virtual void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth) PURE_VIRTUAL;
9907
9926 virtual void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain) PURE_VIRTUAL;
9927
9946 virtual void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq) PURE_VIRTUAL;
9947
9963 virtual void PostFilterClear(int32_t sectionNumber) PURE_VIRTUAL;
9964
9985 virtual void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo) PURE_VIRTUAL;
9986
9988 virtual const char* const PostFilterInfoGet() PURE_VIRTUAL;
9989 //virtual RSIFilterPostFilterSection PostFilterSection;
9991
9996
10016 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10017
10038 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10040
10045
10047 virtual void PostTrajectoryGearingEnableSet(bool enable) PURE_VIRTUAL;
10048
10050 virtual bool PostTrajectoryGearingEnableGet() PURE_VIRTUAL;
10051
10053 virtual void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber) PURE_VIRTUAL;
10054
10056 virtual int32_t PostTrajectoryGearingMasterAxisGet() PURE_VIRTUAL;
10057
10059 virtual void PostTrajectoryGearingMultiplierSet(double multiplier) PURE_VIRTUAL;
10060
10062 virtual double PostTrajectoryGearingMultiplierGet() PURE_VIRTUAL;
10063
10081 virtual uint32_t NetworkIndexGet(RSINetworkIndexType indexType) PURE_VIRTUAL;
10082
10101 virtual void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex) PURE_VIRTUAL;
10103
10105
10113 virtual double BacklashHysteresisLimitGet() PURE_VIRTUAL;
10114
10121 virtual void BacklashHysteresisLimitSet(double hysteresisLimit) PURE_VIRTUAL;
10122
10146 virtual bool StepperMotorLoopbackGet() PURE_VIRTUAL;
10147
10171 virtual void StepperMotorLoopbackSet(bool loopback) PURE_VIRTUAL;
10172
10181 virtual RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse) PURE_VIRTUAL;
10182
10192 virtual void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type) PURE_VIRTUAL;
10193
10200 virtual uint64_t GearingMasterAddressGet() PURE_VIRTUAL;
10201
10203};
10204
10208class RSI_API MultiAxis : public virtual RapidCodeMotion {
10209public:
10210
10214
10228 virtual void AxisAdd(Axis *axis) PURE_VIRTUAL;
10229
10232 virtual void AxesAdd(Axis* *axes, int32_t axisCount) PURE_VIRTUAL;
10233
10246 virtual void AxisRemoveAll() PURE_VIRTUAL;
10247
10251
10267 virtual Axis* AxisGet(int32_t index) PURE_VIRTUAL;
10268
10288 virtual const char* const UserLabelGet() PURE_VIRTUAL;
10289
10310 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
10311
10315
10330 virtual double VectorVelocityGet() PURE_VIRTUAL;
10331
10347 virtual void VectorVelocitySet(double velocity) PURE_VIRTUAL;
10348
10363 virtual double VectorAccelerationGet() PURE_VIRTUAL;
10364
10387 virtual void VectorAccelerationSet(double acceleration) PURE_VIRTUAL;
10388
10403 virtual double VectorDecelerationGet() PURE_VIRTUAL;
10404
10427 virtual void VectorDecelerationSet(double deceleration) PURE_VIRTUAL;
10428
10443 virtual double VectorJerkPercentGet() PURE_VIRTUAL;
10444
10467 virtual void VectorJerkPercentSet(double jerkPercent) PURE_VIRTUAL;
10468
10492 virtual void MoveVector(const double* const position) PURE_VIRTUAL;
10493
10496 virtual void MoveVectorRelative(const double* const relativePosition) PURE_VIRTUAL;
10497
10501
10521
10522 virtual double PathTimeSliceGet() PURE_VIRTUAL;
10523
10544
10545 virtual void PathTimeSliceSet(double seconds) PURE_VIRTUAL;
10546
10571 virtual void PathRatioSet(const double* const ratio) PURE_VIRTUAL;
10572
10575 virtual double PathRatioGet(int32_t index) PURE_VIRTUAL;
10576
10593 virtual void PathBlendSet(bool blend) PURE_VIRTUAL;
10594
10603
10604 virtual void PathPlanTypeSet(RSIPathPlanType type) PURE_VIRTUAL;
10605
10614
10615 virtual RSIPathPlanType PathPlanTypeGet() PURE_VIRTUAL;
10616
10635 virtual void PathListStart(const double* const startPosition) PURE_VIRTUAL;
10636
10657 virtual void PathLineAdd(const double* const position) PURE_VIRTUAL;
10658
10678 virtual void PathArcAdd(const double* const center, double angle) PURE_VIRTUAL;
10679
10698 virtual void PathListEnd() PURE_VIRTUAL;
10699
10716 virtual void PathMotionStart() PURE_VIRTUAL;
10717
10721
10739 virtual void MoveTrapezoidal(const double* const position, const double* const vel, const double* const accel, const double* const decel) PURE_VIRTUAL;
10740
10743 virtual void MoveTrapezoidal(const double* const position) PURE_VIRTUAL;
10744
10771 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;
10772
10775 virtual void MoveSCurve(const double* const position) PURE_VIRTUAL;
10776
10791 virtual void MoveVelocity(const double* const velocity, const double* const accel) PURE_VIRTUAL;
10792
10796 virtual void MoveVelocity(const double* const velocity) PURE_VIRTUAL;
10797
10816 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;
10817
10820 virtual void MoveRelative(const double* const relativePosition) PURE_VIRTUAL;
10821
10837 virtual void MoveVelocitySCurve(const double* const velocity, const double* const accel, const double* const jerkPct) PURE_VIRTUAL;
10838
10855 virtual uint16_t MotionIdExecutingGet() PURE_VIRTUAL;
10856
10874 virtual uint16_t MotionElementIdExecutingGet() PURE_VIRTUAL;
10875
10877 virtual int32_t AxisMapCountGet() PURE_VIRTUAL;
10878
10892 virtual uint64_t AddressGet(RSIMultiAxisAddressType addressType) PURE_VIRTUAL;
10893
10907 virtual RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type) PURE_VIRTUAL;
10908
10918 virtual bool AmpEnableGet() PURE_VIRTUAL;
10919
10920
10921};
10922
10928class RSI_API IOPoint : public virtual RapidCodeObject {
10929public:
10934
10951 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorDedicatedIn motorDedicatedInNumber);
10952
10969 static IOPoint* CreateDigitalInput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
10970
10986 static IOPoint* CreateDigitalInput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
10987 // use NetworkNode*
10988 static IOPoint* CreateDigitalInput(IO* io, int32_t bitNumber);
10989
11000 static IOPoint* CreateDigitalInput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11001
11015 static IOPoint* CreateDigitalInput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11016
11034 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorDedicatedOut motorDedicatedOutNumber);
11035
11052 static IOPoint* CreateDigitalOutput(Axis* axis, RSIMotorGeneralIo motorGeneralIoNumber);
11053
11069 static IOPoint* CreateDigitalOutput(RapidCodeNetworkNode* networkNode, int32_t bitNumber);
11070 // use NetworkNode*
11071 static IOPoint* CreateDigitalOutput(IO* io, int32_t bitNumber);
11072
11073
11086 static IOPoint* CreateDigitalOutput(MotionController* controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type);
11087
11101 static IOPoint* CreateDigitalOutput(MotionController* controller, uint64_t memoryAddress, int32_t bitNumber);
11102
11117 static IOPoint* CreateAnalogInput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11118 // use RapidCodeNetworkNode*
11119 static IOPoint* CreateAnalogInput(IO* io, int32_t analogChannel);
11120
11135 static IOPoint* CreateAnalogOutput(RapidCodeNetworkNode* networkNode, int32_t analogChannel);
11136 // use RapidCodeNetworkNode*
11137 static IOPoint* CreateAnalogOutput(IO* io, int32_t analogChannel);
11138
11140
11144
11147 virtual uint64_t AddressGet() PURE_VIRTUAL;
11148
11151 virtual int32_t MaskGet() PURE_VIRTUAL;
11152
11155 virtual bool IsDigital() PURE_VIRTUAL;
11156
11157
11160 virtual bool IsOutput() PURE_VIRTUAL;
11161
11165
11169 virtual bool Get() PURE_VIRTUAL;
11170
11177 virtual void Set(bool state) PURE_VIRTUAL;
11178
11182
11186 virtual double ValueGet() PURE_VIRTUAL;
11187
11191 virtual void ValueSet(double valueDouble) PURE_VIRTUAL;
11192};
11193
11197class RSI_API RTOS {
11198
11199public:
11200#if defined(_WIN32)
11205
11209
11214 static INtimeStatus INtimeStatusGet(const char* const nodeName);
11215
11219
11224 static INtimeStatus INtimeStart(const char* const nodeName);
11225
11229
11234 static INtimeStatus INtimeStop(const char* const nodeName);
11235
11239
11244 static INtimeStatus INtimeRestart(const char* const nodeName);
11245
11248 static const char* const INtimeCatalogRMPGet();
11249
11252 static const char* const INtimeCatalogRMPNetworkGet();
11253
11256 static uint32_t INtimeNodeCountGet();
11257
11261 static const char* const INtimeNodeNameGet(uint32_t nodeNumber);
11262
11266 static bool INtimeNodeIsLocal(uint32_t nodeNumber);
11268#endif // _WIN32
11269};
11270
11272class RSI_API Trace
11273{
11274public:
11279
11292 static void MaskSet(RSITrace mask);
11293
11309 static void MaskOnSet(RSITrace maskOn);
11310
11311
11331 static bool MaskOnGet(RSITrace maskOn);
11332
11348 static void MaskOffSet(RSITrace maskOff);
11349
11362 static void MaskClear();
11363
11378 static int32_t FileSet(const char* const fileName);
11379
11392 static void FileClose();
11393
11408 static void InjectMessage(RSITrace traceLevel, const char* const message);
11409
11411};
11412
11414
11416
11420class RSI_API IO : public virtual RapidCodeObject {
11421public:
11422
11423 friend class MotionController;
11424
11429
11431 RapidCodeNetworkNode* NetworkNode;
11434
11436
11441
11442
11475 virtual bool IOExists() PURE_VIRTUAL;
11476
11493 virtual int32_t NumberGet() PURE_VIRTUAL;
11495
11500
11501
11502
11532 virtual bool DigitalInGet(int32_t digitalInNumber) PURE_VIRTUAL;
11533
11566 virtual bool DigitalOutGet(int32_t digitalOutNumber) PURE_VIRTUAL;
11567
11598 virtual void DigitalOutSet(int32_t digitalOutNumber, bool outValue) PURE_VIRTUAL;
11599
11622 virtual int32_t AnalogInGet(int32_t analogChannel) PURE_VIRTUAL;
11623
11655 virtual int32_t AnalogOutGet(int32_t analogChannel) PURE_VIRTUAL;
11656
11688 virtual void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
11690
11700 virtual const char* const UserLabelGet() PURE_VIRTUAL;
11701
11708 virtual void UserLabelSet(const char* const userLabel) PURE_VIRTUAL;
11709};
11710
11711} // namespace RapidCode
11712
11713} // namespace RSI
11714
11715#if defined(__cplusplus)
11716}
11717#endif
11718
11719#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:5543
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:5513
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:11420
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
Definition rsi.h:11431
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:11433
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:10928
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:794
MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber)
Get a MathBlock configuration.
RapidCodeOS * OS
Provides access to operating system (Windows) features.
Definition rsi.h:3664
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:10208
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:11197
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:588
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:4038
MotionController * rsiControl
Gets the parent MotionController object.
Definition rsi.h:4048
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:491
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:11273
RSIFilterAlgorithm
Filter algorithms.
Definition rsienums.h:1105
RSIPDOType
Compensator output types.
Definition rsienums.h:1344
RSIMathBlockOperation
MathBlock operations.
Definition rsienums.h:1350
RSICompensatorOutputType
Compensator output types.
Definition rsienums.h:1338
RSINetworkStartMode
Network start modes.
Definition rsienums.h:585
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
Definition rsienums.h:1092
RSITrace
Trace masks.
Definition rsienums.h:537
RSIMotorStepperPulse
Pulse A or B.
Definition rsienums.h:1195
RSIAxisGantryType
How to combine Axis Feedback Positions.
Definition rsienums.h:1085
RSINetworkState
State of network.
Definition rsienums.h:565
RSIControllerAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:404
RSIMotorDisableAction
Action for when a motor is disabled.
Definition rsienums.h:1265
RSIEventType
Event Types or Status Bits.
Definition rsienums.h:920
RSIMotionType
Streaming motion types.
Definition rsienums.h:989
RSIDataType
Data types for User Limits and other triggers.
Definition rsienums.h:652
RSIUserLimitLogic
Logic options for User Limits.
Definition rsienums.h:639
RSIMotorIoTypeMask
Possible mask bits for Motor I/O types.
Definition rsienums.h:1211
RSIAction
Action to perform on an Axis.
Definition rsienums.h:1061
RSIAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:433
RSIProcessorType
Controller's processor type.
Definition rsienums.h:294
RSIMotorStepperPulseType
Stepper pulse type.
Definition rsienums.h:1201
RSIMotorType
Motor Type.
Definition rsienums.h:1257
RSINetworkStartError
Network start errors.
Definition rsienums.h:591
RSIMotorGeneralIo
Motor I/O bit numbers.
Definition rsienums.h:871
RSIMotionAttrMask
Attribute masks for motion. You cannot mix RSIMotionAttrMaskDELAY and RSIMotionAttrMaskAPPEND.
Definition rsienums.h:1005
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
Definition rsienums.h:495
RSIFilterGainPIDCoeff
PID gain coefficients.
Definition rsienums.h:1114
RSIUserLimitTriggerType
Trigger types for UserLimits.
Definition rsienums.h:626
RSINetworkOutputAddressType
Network output address types.
Definition rsienums.h:1331
INtimeStatus
INtime status values.
Definition rsienums.h:1303
RSIMotionHoldType
Types for MotionHold attribute.
Definition rsienums.h:1041
RSIControllerType
Controller type.
Definition rsienums.h:283
RSIMotorFaultMask
Mask values for several motor faults.
Definition rsienums.h:1245
RSIHomeStage
Predefined Homing Stage sections.
Definition rsienums.h:396
RSIMotorBrakeMode
Brake modes.
Definition rsienums.h:1271
RSIErrorMessage
All possible RSI Error Messages.
Definition rsienums.h:17
RSINetworkType
Type of Network topology.
Definition rsienums.h:619
RSIMotorIoType
Possible configurations for Motor I/O.
Definition rsienums.h:1174
RSIAxisPositionInput
Feedback Positions for each Axis.
Definition rsienums.h:1079
RSINodeType
Valid Node types.
Definition rsienums.h:669
RSISource
Possible sources that have caused an Error state.
Definition rsienums.h:968
RSIMotorDedicatedIn
Dedicated Input bits per motor.
Definition rsienums.h:843
RSIMotorFeedback
Encoders per motor.
Definition rsienums.h:1099
RSIMotorDedicatedOut
Dedicated Output bits per motor.
Definition rsienums.h:865
RSIOperationMode
DS402 modes of operation.
Definition rsienums.h:1277
RSIPathPlanType
Path motion planning types.
Definition rsienums.h:999
RSINetworkTechnologyType
Network technology type.
Definition rsienums.h:1298
RSINetworkIndexType
Network index types for Axis.
Definition rsienums.h:1311
RSINetworkStartupMethod
Network startup methods.
Definition rsienums.h:577
RSIFilterGainPIVCoeff
PIV gain coefficients.
Definition rsienums.h:1135
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
Definition rsienums.h:1164
int32_t CpuAffinity
[Linux] Indicate the CPU core on which the RMP and RMPNetwork processes run.
Definition rsi.h:990
int32_t RmpThreadPriorityMax
[Linux] The maximum thread priority. All threads of the RMP and RMPNetwork will be based off of this....
Definition rsi.h:1002
CreationParameters()
Instantiate with default values and all memory zeroed out.
Definition rsi.h:915
CreationParameters for MotionController::Create.
Definition rsi.h:855
RSIDataType ProcessDataType
Data type for processing.
Definition rsi.h:3642
MathBlock configuration structure.
Definition rsi.h:3635
RSIDataType OutputDataType
Data type for Output. (optional)
Definition rsi.h:3640
uint64_t OutputAddress
Host memory address for Output. The MathBlock will write its result to this address....
Definition rsi.h:3641
uint64_t InputAddress0
Host memory address for Input0. Represents the left-hand side operand in math operations.
Definition rsi.h:3636
RSIDataType InputDataType0
Data type for Input0. This is the data type of the left-hand side operand in math operations.
Definition rsi.h:3637
uint64_t InputAddress1
Host memory address for Input1. Represents the right-hand side operand in math operations.
Definition rsi.h:3638
RSIDataType InputDataType1
Data type for Input1. This is the data type of the right-hand side operand in math operations.
Definition rsi.h:3639
RSIMathBlockOperation Operation
Math operation to be performed. (+, -, *, /, etc) use RSIMathBlockOperationNONE to disable a MathBloc...
Definition rsi.h:3643
Union representing a generic RMP firmware value with multiple data types, stored in 64-bits.
Definition rsi.h:462
float Float
Single precision (32-bit) floating-point.
Definition rsi.h:470
int64_t Int64
64-bit signed integer.
Definition rsi.h:472
uint8_t UInt8
8-bit unsigned integer.
Definition rsi.h:465
int8_t Int8
8-bit signed integer.
Definition rsi.h:464
double Double
Double precision (64-bit) floating-point.
Definition rsi.h:471
int32_t Int32
32-bit signed integer.
Definition rsi.h:468
uint16_t UInt16
16-bit unsigned integer.
Definition rsi.h:467
int16_t Int16
16-bit signed integer.
Definition rsi.h:466
bool Bool
Boolean value.
Definition rsi.h:463
uint32_t UInt32
32-bit unsigned integer.
Definition rsi.h:469
uint64_t UInt64
64-bit unsigned integer.
Definition rsi.h:473