29#ifndef INC_CINOSBASEAXIS_H
30#define INC_CINOSBASEAXIS_H
36#define DF_INOS_BASE_AXIS_DBT "INOS-BASE-AXIS"
38#define DF_INOS_MAX_AXIS 256
42#define DF_INOS_AXIS_STATE_DISABLED -1
43#define DF_INOS_AXIS_STATE_UNDEFINED 0
44#define DF_INOS_AXIS_STATE_OFF 0
45#define DF_INOS_AXIS_STATE_ACTIVE 1
46#define DF_INOS_AXIS_STATE_READY 2
47#define DF_INOS_AXIS_STATE_PEACE 2
48#define DF_INOS_AXIS_STATE_PULL 3
49#define DF_INOS_AXIS_STATE_BREAK 4
50#define DF_INOS_AXIS_STATE_COUPLED 5
51#define DF_INOS_AXIS_STATE_FORCE 6
52#define DF_INOS_AXIS_STATE_ACTIVATING 8
53#define DF_INOS_AXIS_STATE_INACTIVATING 9
54#define DF_INOS_AXIS_STATE_SYNCING 10
55#define DF_INOS_AXIS_STATE_MOVING 11
56#define DF_INOS_AXIS_STATE_ENDLESS 12
57#define DF_INOS_AXIS_STATE_TOGGLE 13
58#define DF_INOS_AXIS_STATE_STOPPING 14
59#define DF_INOS_AXIS_STATE_BREAKING 15
60#define DF_INOS_AXIS_STATE_EMSTOPPING 16
61#define DF_INOS_AXIS_STATE_MOVINGEX 17
62#define DF_INOS_AXIS_STATE_CURSOR 18
63#define DF_INOS_AXIS_STATE_TRACK 19
64#define DF_INOS_AXIS_STATE_MOVINGAPP 20
65#define DF_INOS_AXIS_STATE_MOVINGDEP 21
66#define DF_INOS_AXIS_STATE_RELAXING 22
67#define DF_INOS_AXIS_STATE_UMOVE 23
68#define DF_INOS_AXIS_STATE_SEARCHING 24
69#define DF_INOS_AXIS_STATE_DEPARTING 25
70#define DF_INOS_AXIS_STATES 27
74#define DF_INOS_AXIS_SUBSTATE_TRACK_FOLLOW 0
75#define DF_INOS_AXIS_SUBSTATE_TRACK_KEEP 1
79#define DF_INOS_AXIS_CMD_ACTIVATE 0x00000001
80#define DF_INOS_AXIS_CMD_INACTIVATE 0x00000002
81#define DF_INOS_AXIS_CMD_SYNC 0x00000004
82#define DF_INOS_AXIS_CMD_MOVE 0x00000008
83#define DF_INOS_AXIS_CMD_ENDLESS 0x00000010
84#define DF_INOS_AXIS_CMD_STOP 0x00000020
85#define DF_INOS_AXIS_CMD_BREAK 0x00000040
86#define DF_INOS_AXIS_CMD_CONTINUE 0x00000080
87#define DF_INOS_AXIS_CMD_EMSTOP 0x00000100
88#define DF_INOS_AXIS_CMD_UPDATE 0x00000200
89#define DF_INOS_AXIS_CMD_TOGGLE 0x00000400
90#define DF_INOS_AXIS_CMD_MOVEEX 0x00002000
91#define DF_INOS_AXIS_CMD_HANDLE_CACHE 0x00004000
92#define DF_INOS_AXIS_CMD_CURSOR 0x00008000
93#define DF_INOS_AXIS_CMD_TRACK 0x00010000
94#define DF_INOS_AXIS_CMD_MOVESEG 0x00020000
95#define DF_INOS_AXIS_CMD_COUPLING 0x00040000
96#define DF_INOS_AXIS_CMD_PULL 0x00080000
97#define DF_INOS_AXIS_CMD_MOVEAPP 0x00100000
98#define DF_INOS_AXIS_CMD_MOVEDEP 0x00200000
99#define DF_INOS_AXIS_CMD_ENABLE 0x00400000
100#define DF_INOS_AXIS_CMD_DISABLE 0x00800000
101#define DF_INOS_AXIS_CMD_COMMUTATE 0x01000000
102#define DF_INOS_AXIS_CMD_MOVETIME 0x02000000
103#define DF_INOS_AXIS_CMD_RELAX 0x04000000
107#define ER_INOS_AXIS_REJECTED 0x00000001
108#define ER_INOS_AXIS_FAILED 0x00000002
109#define ER_INOS_AXIS_POS_WINDOW 0x00000004
110#define ER_INOS_AXIS_CPD_ERROR 0x00000008
111#define ER_INOS_AXIS_CPD_DELTA 0x00000010
112#define ER_INOS_AXIS_CPD_CORR 0x00000020
113#define ER_INOS_AXIS_COM_FAILED 0x00000040
114#define ER_INOS_AXIS_RAMP_LIMIT 0x00000080
115#define ER_INOS_AXIS_REJECTED_SOS 0x00000100
116#define ER_INOS_AXIS_PULL_UNDERRUN 0x00000200
117#define ER_INOS_AXIS_SLS_VIOLATION 0x00000400
118#define ER_INOS_AXIS_SOS_VIOLATION 0x00000800
119#define ER_INOS_AXIS_CORE_MISMATCH 0x00001000
120#define ER_INOS_AXIS_FORCE_CONTROL 0x00002000
121#define ER_INOS_AXIS_CONTROL 0x00004000
122#define ER_INOS_AXIS_RAMP 0x00008000
123#define ER_INOS_AXIS_HOOK 0x00010000
127#define WR_INOS_AXIS_RAMP 0x00008000
128#define WR_INOS_AXIS_CONTROL 0x00004000
129#define WR_INOS_AXIS_IGNORED 0x00000001
130#define WR_INOS_AXIS_CPD_CORR_IGNORED 0x00000002
131#define WR_INOS_AXIS_COUPLED 0x00000008
132#define WR_INOS_AXIS_EME_STOPPED 0x00000010
136#define DF_INOS_AXIS_FLAG_ZERO 0x00000001
137#define DF_INOS_AXIS_FLAG_NORM 0x00000002
138#define DF_INOS_AXIS_FLAG_INCR 0x00000004
139#define DF_INOS_AXIS_FLAG_SYNC 0x00000008
140#define DF_INOS_AXIS_FLAG_EDONE 0x00000010
141#define DF_INOS_AXIS_FLAG_AACC 0x00000020
142#define DF_INOS_AXIS_FLAG_CURL 0x00000040
143#define DF_INOS_AXIS_FLAG_LSNCD 0x00000080
144#define DF_INOS_AXIS_FLAG_DISMP 0x00000100
145#define DF_INOS_AXIS_FLAG_RNDNR 0x00000200
146#define DF_INOS_AXIS_FLAG_PWCL 0x00000400
147#define DF_INOS_AXIS_FLAG_DSAP 0x00000800
148#define DF_INOS_AXIS_FLAG_SAFETY 0x00001000
149#define DF_INOS_AXIS_FLAG_ESPULL 0x00002000
150#define DF_INOS_AXIS_FLAG_IGNORE_CORE 0x00004000
151#define DF_INOS_AXIS_FLAG_INPUT_SHAPING_ACTIVE 0x20000000
152#define DF_INOS_AXIS_FLAG_WINDOW 0x40000000
153#define DF_INOS_AXIS_FLAG_SNCD 0x80000000
157#define DF_INOS_AXIS_SYNC_NOADJ 0x00
158#define DF_INOS_AXIS_SYNC_ADJUST 0x01
159#define DF_INOS_AXIS_SYNC_STOP 0x02
167#define DF_INOS_AXIS_NORM_AFTER 0x00
170#define DF_INOS_AXIS_NORM_LIVE 0x01
173#define DF_INOS_AXIS_NORM_POSITIVE 0x40
178#define DF_INOS_AXIS_NORM_ROUND 0x80
184#define DF_INOS_AXIS_NORM_MOVE_DIR_NO 0x00
189#define DF_INOS_AXIS_NORM_MOVE_DIR_POS 0x01
194#define DF_INOS_AXIS_NORM_MOVE_DIR_NEG 0x02
199#define DF_INOS_AXIS_NORM_MOVE_DIR_SHORT 0x03
205#define DF_INOS_AXIS_NORM_MOVE_DIR_SHORT_EX 0x04
212#define DF_INOS_AXIS_SAFETY_EMGSTOP 0x00
217#define DF_INOS_AXIS_SAFETY_AUTO 0x01
220#define DF_INOS_AXIS_SAFETY_NONE 0x02
228#define DF_INOS_AXIS_EMGT_STOP 0x00
234#define DF_INOS_AXIS_EMGT_STOP_INACTIVATE 0x01
237#define DF_INOS_AXIS_EMGT_INACTIVATE 0x02
241#define DF_INOS_AXIS_EMGT_NONE 0x03
247#define DF_INOS_AXIS_EMGT_STOP_POSITION 0x04
253#define DF_INOS_AXIS_EMGT_STOP_POSITION_INACTIVATE 0x05
257#define DF_PRECONFIGURED_EME_STOP_TYPE 0xffff
261#define DF_PRECONFIGURED_EME_STOP_POS_OR_STOP 0xfffe
262#define DF_PRECONFIGURED_EME_STOP_DELAY 0xffff
268#define DF_INOS_AXIS_PST_STANDARD 0x00000000
273#define DF_INOS_AXIS_PST_WINDOW 0x00000001
279#define DF_INOS_AXIS_PST_WINDOW_OPT 0x00000002
287#define DF_INOS_BASE_AXIS_OPT_EARLY_DONE 0x00000001
294#define DF_INOS_BASE_AXIS_OPT_AUTO_ACCEPT 0x00000002
298#define DF_INOS_BASE_AXIS_OPT_LIMITS_IF_SNCD 0x00000004
303#define DF_INOS_BASE_AXIS_OPT_MAPPING_DISABLED 0x00000008
308#define DF_INOS_BASE_AXIS_OPT_NORM_ENABLED 0x00000010
313#define DF_INOS_BASE_AXIS_OPT_CHECK_LIMITS 0x00000020
318#define DF_INOS_BASE_AXIS_OPT_LIFETIME 0x00000040
323#define DF_INOS_BASE_AXIS_OPT_SETPOS_DISABLED 0x00000080
328#define DF_INOS_BASE_AXIS_OPT_EMGSTOP_PULL 0x00000100
331#define DF_INOS_BASE_AXIS_OPT_FORCE_CONTROL 0x00000200
335#define DF_INOS_BASE_AXIS_OPT_IGNORE_CORE 0x00000400
337#if defined(INOS_MOTORCONFIG_LOAD_SUPPORT)
344#define DF_INOS_BASE_AXIS_OPT_CPF_UNIQUE 0x00000800
349#define DF_INOS_BASE_AXIS_LIMIT_S 0x00000001
350#define DF_INOS_BASE_AXIS_LIMIT_V_OF_S 0x00000002
351#define DF_INOS_BASE_AXIS_LIMIT_A_OF_S 0x00000004
352#define DF_INOS_BASE_AXIS_LIMIT_B_OF_S 0x00000008
353#define DF_INOS_BASE_AXIS_LIMIT_S_V_CONS 0x00000010
354#define DF_INOS_BASE_AXIS_LIMIT_V 0x00000020
355#define DF_INOS_BASE_AXIS_LIMIT_A_OF_V 0x00000040
356#define DF_INOS_BASE_AXIS_LIMIT_B_OF_V 0x00000080
357#define DF_INOS_BASE_AXIS_LIMIT_A 0x00000100
358#define DF_INOS_BASE_AXIS_LIMIT_B 0x00000200
359#define DF_INOS_BASE_AXIS_LIMIT_BRAKE 0x00000400
360#define DF_INOS_BASE_AXIS_LIMIT_J_OF_S 0x00000800
361#define DF_INOS_BASE_AXIS_LIMIT_J_OF_V 0x00001000
362#define DF_INOS_BASE_AXIS_LIMIT_J_OF_A 0x00002000
363#define DF_INOS_BASE_AXIS_LIMIT_J 0x00004000
373#if defined(INOS_AXIS_EXTENSION_SUPPORT)
374#include <cinosbaseaxisextension.h>
571class CINOSLimitChecker;
578class CINOSBaseAxisParamSet
584 virtual uint32 SetParam(
const char* apName, real64 arValue);
588 virtual uint32 GetParam(
const char* apName, real64& arResult);
595 virtual CINCOObject* GetRegister()
const;
600 {
return &m_pRamp->m_Param;};
602 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
604 void AddExtension(SINOSParamSetExtension* apExtension);
606 void RemoveExtension(
const char* apName);
614 friend class CINOSShape;
621 CINOSBaseAxisParamSet& operator=(
const CINOSBaseAxisParamSet& aOther);
622 int operator < (CINOSBaseAxisParamSet& aSet)
const
623 {
return (strcmp(m_cName, aSet.m_cName)<0);}
624 int operator == (CINOSBaseAxisParamSet& aSet)
const
625 {
return (strcmp(m_cName, aSet.m_cName)==0);}
626 int operator < (
const char* apName)
const
627 {
return (strcmp(m_cName, apName)<0);}
628 int operator == (
const char* apName)
const
629 {
return (strcmp(m_cName, apName)==0);}
630 friend int operator == (CINOSBaseAxisParamSet& aSet1, CINOSBaseAxisParamSet& aSet2)
631 {
return (strcmp(aSet1.m_cName, aSet2.m_cName)==0);}
635 explicit CINOSBaseAxisParamSet(
const char* apName);
637 CINOSBaseAxisParamSet(
const CINOSBaseAxisParamSet& aOther);
642 virtual ~CINOSBaseAxisParamSet();
649 CINCOObject* m_pRegister;
657 uint32 m_uPosTimeout;
659 real64 m_rPosTolerance;
671typedef real64 (*tpGetter)(
void* apVal);
673struct SINOSBaseAxisHook;
712 if (auNumber < DF_INOS_MAX_AXIS)
713 return m_pAxis[auNumber];
767 virtual uint32
Activate(
bool abCheckPos =
true,
bool abSimulatePos =
false,
768 bool abSimulateOut =
false,
bool abSimulateAct =
false,
810 virtual uint32
Sync(real64 arPosition,
const char* apParam,
820 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
832 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
843 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
853 virtual uint32
Sync(real64 arSyncPos,
const char* apParam, CINCOObject* apObject,
862 virtual uint32
Move(real64 arPosition,
881 virtual uint32
Move(real64 arPosition,
const char* apParam,
894 virtual uint32
MoveTime(real64 arPosition, real64 arTime,
bool abUseP5 =
true,
909 virtual uint32
MoveTime(real64 arPosition, real64 arTime,
bool abUseP5,
923 virtual uint32
MoveTime(real64 arPosition, real64 arTime,
bool abUseP5,
940 virtual uint32
Move(real64 arPosition, real64 arSafe1, real64 arSafe2,
957 virtual uint32
Move(real64 arPosition, real64 arSave1, real64 arSave2,
958 const char* apParam1,
const char* apParam2, real64 arPartner,
const char* apPartner,
971 virtual uint32
MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
988 virtual uint32
MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1005 virtual uint32
MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1021 virtual uint32
MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1038 virtual uint32
MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1055 virtual uint32
MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1064 virtual uint32
Toggle(real64 arPosition1, real64 arPosition2);
1077 real64 arPos2Min, real64 arPos2Max, uint32 auDelayMin, uint32 auDelayMax);
1087 virtual uint32
Track(
const char* apVarName, real64 arFactor,
1088 uint32 auFilterLength, uint32 auDirection = 0);
1099 virtual uint32
Track(
const char* apVarName, real64 arFactor,
1100 uint32 auFilterLength, uint32 auDirection,
const char* apParam);
1111 virtual uint32
Track(
const char* apVarName, real64 arCmdValue,
1112 real64 arFactor, uint32 auFilterLength);
1143 virtual uint32
Endless(
bool abPositive,
const char* apParam,
1152 virtual uint32
Cursor(
bool abPositive =
true);
1169 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime);
1177 virtual uint32
Cursor(real64 arPosition, uint32 auWaitTime);
1187 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime,
1198 virtual uint32
Cursor(real64 arPosition, uint32 auWaitTime,
1210 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime,
1222 virtual uint32
Cursor(real64 arPosition, uint32 auWaitTime,
1234 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime,
1235 real64 arStep,
const char* apParam);
1246 virtual uint32
Cursor(real64 arbPosition, uint32 auWaitTime,
1247 real64 arStep,
const char* apParam);
1322 real64 arDelta,
const char* apParam);
1470 virtual real64
GetMoveTime(real64 arPosition, real64 arDelta,
const char* apParam);
1486 virtual real64
GetConstTime(real64 arPosition, real64 arDelta,
const char* apParam);
1503 virtual real64
GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1544 virtual real64
GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1588 virtual real64
GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1589 real64 arDelta,
const char* apParam);
1600 real64 arDelta,
const char* apParam);
1611 real64 arDelta,
const char* apParam);
1622 real64 arDelta,
const char* apParam);
1654 real64 arVelocity,
const char* apParam);
1665 real64 arVelocity, real64 arDelta);
1689 real64 arVelocity, real64 arDelta,
const char* apParam);
1701 real64 arPositionVel, real64 arVelocity, real64 arDelta);
1714 real64 arPositionVel, real64 arVelocity, real64 arDelta,
SINOSRampParam* apParam);
1727 real64 arPositionVel, real64 arVelocity, real64 arDelta,
const char* apParam);
1759 real64 arVelocity,
const char* apParam);
1770 real64 arVelocity, real64 arDelta);
1794 real64 arVelocity, real64 arDelta,
const char* apParam);
1806 real64 arPositionVel, real64 arVelocity, real64 arDelta);
1819 real64 arPositionVel, real64 arVelocity, real64 arDelta,
SINOSRampParam* apParam);
1832 real64 arPositionVel, real64 arVelocity, real64 arDelta,
const char* apParam);
1980 virtual int32
GetMoveTicks(real64 arPosition, real64 arDelta,
const char* apParam);
1996 virtual int32
GetConstTicks(real64 arPosition, real64 arDelta,
const char* apParam);
2099 real64 arDelta,
const char* apParam);
2110 real64 arDelta,
const char* apParam);
2121 real64 arDelta,
const char* apParam);
2132 real64 arDelta,
const char* apParam);
2182 const char* apParam);
2207 const char* apParam);
2216 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2227 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2238 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2239 real64 arTime,
const char* apParam);
2248 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2259 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2270 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2271 uint32 auTicks,
const char* apParam);
2293 virtual uint32
SegBegin(real64 arSlowMotion = REAL64(1.0), real64 arStartVelocity = REAL64(0.0));
2301 virtual uint32
SegBegin(real64 arSlowMotion, real64 arStartPosition, real64 arStartVelocity);
2324 virtual uint32
SegMove(real64 arPosition,
const char* apParam);
2332 virtual uint32
SegMove(real64 arPosition, real64 arVelocity);
2341 virtual uint32
SegMove(real64 arPosition, real64 arVelocity,
2351 virtual uint32
SegMove(real64 arPosition, real64 arVelocity,
2352 const char* apParam);
2420 virtual uint32
Pull(real64 arS, real64 arV, real64 arA, real64 arJ);
2506 virtual uint32
Stop(real64 arPosition,
const char* apParam,
2592 virtual uint32
Break(real64 arPosition,
const char* apParam,
2630 virtual uint32
EmergencyStop(uint16 auType = DF_PRECONFIGURED_EME_STOP_TYPE, uint16 auDelay = DF_PRECONFIGURED_EME_STOP_DELAY,
2666 virtual const char* GetType();
2668 virtual const char* GetUnit();
2670 virtual uint32 GetCharacteristics();
2675 virtual uint32 GetOptions()
2678 virtual char GetShort()
2680 {
return m_cShort[0];};
2681 virtual void SetShort(
char acShort)
2683 { m_cShort[0] = acShort;};
2684 virtual void SetPartner(
const char* apPartner);
2688 virtual void SetCmdPosition(real64 arPosition);
2690 virtual void SetPathPosition(real64 arPosition){};
2692 virtual void GetCmdPosition(real64& arPosition);
2694 virtual void SetCmdVelocity(real64 arVelocity);
2696 virtual void GetCmdVelocity(real64& arVelocity, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2698 virtual void SetCmdAcceleration(real64 arAcceleration);
2700 virtual void GetCmdAcceleration(real64& arAcceleration, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2702 virtual void SetCmdDeceleration(real64 arDeceleration);
2704 virtual void GetCmdDeceleration(real64& arDeceleration, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2706 virtual void SetCmdCruiseleration(real64 arCruiseleration);
2708 virtual void GetCmdCruiseleration(real64& arCruiseleration);
2710 virtual void SetCmdJerk(real64 arJerk, uint32 auNumber = DF_INOS_RAMP_JERK_ALL);
2712 virtual void GetCmdJerk(real64& arJerk, uint32 auNumber = 0);
2714 virtual void SetCmdCruiseJerk(real64 arCruiseJerk);
2716 virtual void GetCmdCruiseJerk(real64& arCruiseJerk);
2718 virtual void GetCmdRealJerk(real64& arJerk, uint32 auNumber = 0);
2720 virtual void SetCmdSlowMotion(real64 arSlowMotion,
bool abUpdate =
false);
2722 virtual void GetCmdSlowMotion(real64& arSlowMotion,
const char* apParam = 0);
2724 virtual void GetActSlowMotion(real64& arSlowMotion,
const char* apParam = 0);
2726 virtual void SetCmdRelaxTime(real64 arRelaxTime);
2728 virtual void GetCmdRelaxTime(real64& arRelaxTime);
2730 virtual void SetEmgDeceleration(real64 arDeceleration);
2732 virtual void GetEmgDeceleration(real64& arDeceleration);
2735 virtual void SetEmgPosition(real64 arPosition);
2737 virtual void GetEmgPosition(real64& arPosition);
2777 if (m_uFlag & DF_INOS_AXIS_FLAG_NORM){
2789 virtual uint32 NrmActPosition(real64 arRange = REAL64(0.0),
bool abRound =
false);
2791 virtual void GetActVelocity(real64& arVelocity,
bool abMapped =
true);
2793 virtual void GetActAcceleration(real64& arAcceleration,
bool abRamp =
true);
2795 virtual void GetActJerk(real64& arJerk,
bool abRamp =
true);
2797 virtual uint32 AdjActTime(real64 arDelta);
2830 virtual void GetRealVelocity(real64& arVelocity);
2832 virtual void GetRealAcceleration(real64& arAcceleration);
2834 virtual void GetRealJerk(real64& arJerk);
2836 virtual void GetActPosError(real64& arPosError)
2837 { arPosError = REAL64(0.0);};
2839 virtual void GetActVelocityError(real64& arVelocityError,
bool abFiltered =
false)
2840 { arVelocityError = REAL64(0.0);};
2842 virtual void GetUnitsPerInc(
double& adUnits);
2844 virtual void GetIncsPerUnit(
double& adIncs);
2846 virtual void SetMinPosition(real64 arPosition);
2848 virtual void GetMinPosition(real64& apPosition)
const;
2850 virtual void SetMaxPosition(real64 arPosition);
2852 virtual void GetMaxPosition(real64& arPosition)
const;
2854 virtual bool CheckPosition(real64& arPosition,
bool abIgnoreMapping =
false,
SINOSRampParam* apParam =
nullptr);
2856 virtual void SetMinVelocity(real64 arVelocity);
2858 virtual void SetMaxVelocity(real64 arVelocity);
2860 virtual void SetMaxSetupVelocity(real64 arVelocity);
2862 virtual void SetMaxInitVelocity(real64 arVelocity);
2864 virtual void GetMinVelocity(real64& arVelocity);
2866 virtual void GetMaxVelocity(real64& arVelocity, uint32 auFlags = eMaxVelocityNone);
2868 virtual void GetTrqVelocity(real64& arVelocity);
2870 virtual void GetMaxSetupVelocity(real64& arVelocity);
2872 virtual void GetMaxInitVelocity(real64& arVelocity);
2874 virtual void SetMinAcceleration(real64 arAcceleration);
2876 virtual void SetMaxAcceleration(real64 arAcceleration);
2878 virtual void SetMaxAccelerationPull(real64 arAcceleration);
2880 virtual void GetMinAcceleration(real64& arAcceleration);
2882 virtual void GetMaxAcceleration(real64& arAcceleration);
2884 virtual void GetMaxAccelerationPull(real64& arAcceleration);
2886 virtual void GetTrqAcceleration(real64& arAcceleration);
2888 virtual void SetMinDeceleration(real64 arDeceleration);
2890 virtual void SetMaxDeceleration(real64 arDeceleration);
2892 virtual void GetMinDeceleration(real64& arDeceleration);
2894 virtual void GetMaxDeceleration(real64& arDeceleration);
2896 virtual void GetTrqDeceleration(real64& arDeceleration);
2898 virtual void SetMinCruiseleration(real64 arCruiseleration);
2900 virtual void SetMaxCruiseleration(real64 arCruiseleration);
2902 virtual void GetMinCruiseleration(real64& arCruiseleration);
2904 virtual void GetMaxCruiseleration(real64& arCruiseleration);
2906 virtual void SetMinJerk(real64 arJerk);
2908 virtual void SetMaxJerk(real64 arJerk);
2910 virtual void GetMinJerk(real64& arJerk);
2912 virtual void GetMaxJerk(real64& arJerk);
2914 virtual void GetEpsilon(real64& arEpsilon);
2916 virtual void GetCycleTime(real64& arCycleTime,
bool abOversampled=
false);
2918 virtual void GetCycleTimeUs(uint32& auCycleTime);
2920 virtual void GetCycleTimeNs(uint32& auCycleTime);
2922 virtual uint8 GetOversampling();
2924 virtual uint16 GetCycleNumber();
2926 virtual uint16 GetCycleId();
2928 virtual void UpdateCycleId(uint16 auCycleId);
2930 virtual uint8 GetBusId();
2932 virtual uint32 SetParam(
const char* apName, real64 arValue);
2934 virtual uint32 SetParam(
const char* apName, uint64 auValue)
2936 {
return defVarNotFound;};
2937 virtual uint32 GetParam(
const char* apName, real64& arResult);
2939 virtual uint32 GetParam(
const char* apName, uint64& auResult)
2941 {
return defVarNotFound;};
2942 virtual volatile real64* GetParamAdr(
const char* apName);
2944 void SetFlag(uint32 auFlag)
2947 void ClrFlag(uint32 auFlag)
2951 {
return m_uFlag & m_uFlagEnb;};
2954 { ClrFlag(DF_INOS_AXIS_FLAG_INCR);};
2957 { SetFlag(DF_INOS_AXIS_FLAG_INCR);};
2959 virtual uint32 SetState(uint32 auState);
2961 virtual int32 GetState();
2963 virtual int32 GetState(uint32& auRampState);
2965 const char* GetStateText()
const;
2967 virtual bool IsBusy()
const;
2978 virtual uint32 GetError(
bool abResolveExternal =
false);
2980 virtual uint64 GetErrorEx(
bool abResolveExternal =
false);
2982 virtual uint32 GetError(uint32& auRampError,
bool abResolveExternal =
false);
2984 virtual uint64 GetErrorEx(uint64& auRampError,
bool abResolveExternal =
false);
2986 virtual uint32 GetErrorHook() {
return m_uErrorHook; };
2988 virtual bool IsErrorFatal()
2991 virtual uint32 GetWarning(
bool abResolveExternal =
false);
2993 virtual uint64 GetWarningEx(
bool abResolveExternal =
false);
2995 virtual uint32 GetWarning(uint32& auRampWarning,
bool abResolveExternal =
false);
2997 virtual uint64 GetWarningEx(uint64& auRampWarning,
bool abResolveExternal =
false);
2999 virtual uint32 GetLimitViolation() {
return m_uLimitViolation;};
3001 virtual void SetErrorMask(uint32 auMask) { m_uErrorMask = auMask;};
3003 virtual void SetWarningMask(uint32 auMask) { m_uWarningMask = auMask;};
3005 virtual void SetLimitViolation(uint32 auLimitViolation)
3006 { INOSOr(&m_uLimitViolation, auLimitViolation);};
3008 virtual uint32 GetErrorMask() {
return m_uErrorMask;};
3010 virtual uint32 GetWarningMask() {
return m_uWarningMask;};
3012 virtual uint32 AcceptError();
3014 virtual uint32 AcceptError(uint32 auError);
3016 virtual uint32 AcceptError(uint32 auError, uint32 auRampError);
3018 virtual uint32 AcceptWarning();
3020 virtual uint32 AcceptWarning(uint32 auWarning);
3022 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning);
3024 virtual uint32 AcceptLimitViolation() { m_uLimitViolation = 0;
return 0;};
3028 virtual void eCreateParamSet(
const char* apSetName);
3031 virtual CINOSBaseAxisParamSet* CreateParamSet(
const char* apSetName);
3033 virtual void DestroyParamSet(
const char* apSetName);
3035 virtual bool SelectParamSet(
const char* apSetName);
3039 eFlgParamSetNone = 0x00000000,
3040 eFlgParamSetSearchGlobal = 0x00000001,
3041 eFlgParamSetIgnoreOverwrite = 0x00000002
3044 virtual CINOSBaseAxisParamSet* GetParamSet(
const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3046 virtual SINOSRampParam* GetRampParam(
const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3048 virtual bool GetRampParam(
const char* apSetName,
char* apResult, uint32 auSize,
3049 SINOSRampParam& aResult, uint32 auFlags = eFlgParamSetSearchGlobal);
3056 static void eCreateGlobalParamSet(
const char* apSetName);
3059 static CINOSBaseAxisParamSet* CreateGlobalParamSet(
const char* apSetName);
3061 static void DestroyGlobalParamSet(
const char* apSetName);
3063 static CINOSBaseAxisParamSet* GetGlobalParamSet(
const char* apSetName);
3065 static SINOSRampParam* GetGlobalRampParam(
const char* apSetName);
3069 virtual void SetPosType(uint32 auPosType)
3071 { m_uPosType = auPosType; };
3072 virtual void SetPosTime(uint32 auPosTime)
3074 { m_uPosTime = auPosTime; };
3075 virtual void SetPosTimeout(uint32 auPosTimeout)
3077 { m_uPosTimeout = auPosTimeout; };
3078 virtual void SetPosTolerance(real64 arPosTolerance)
3080 { m_rPosTolerance = arPosTolerance; };
3084 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3086 SINOSParamSetExtension* GetParamSetExtension(uint32 auExtensionId)
3089 return m_pRamp->GetParamSetExtension(auExtensionId);
3097 void EnableCache(uint32 auSize = 32);
3099 CINOSRampCache* EnableCache(CINOSRampCache* apCache);
3101 CINOSRampCache* DisableCache();
3103 void ReEnableCache();
3111 void SetCacheEpsilon(real64 arEpsilon);
3113 #ifdef INOS_MOVE_CACHE_SUPPORT
3114 void FlushMoveCache();
3120 #ifdef INOS_SAFETY_SUPPORT
3122 virtual void EnableSafetySupervision();
3124 virtual bool DisableSafetySupervision();
3126 virtual void ToggleSafetySupervision();
3131 virtual CINCOObject* GetRegister();
3138 virtual CINOSMapping* GetMapping()
3139 {
return m_pMapping;};
3141 uint32 GetMappingIndex()
3142 {
return m_uMappingIndex;};
3147 virtual uint32 RegisterHook(uintid& auHookId,
void* apHandler,
void* apObject,
3148 int32 aiOrder,
bool abEnabled=
true);
3151 virtual uint32 UnRegisterHook(uintid auHookId);
3153 virtual uint32 EnableHook(uintid auHookId);
3155 virtual uint32 DisableHook(uintid auHookId);
3157 virtual uint32 RegisterPostHook(uintid& auHookId,
void* apHandler,
void* apObject,
3158 int32 aiOrder,
bool abEnabled=
true);
3161 virtual uint32 UnRegisterPostHook(uintid auHookId);
3163 virtual uintid RegisterErrorHook(
void* apHandler,
void* apObject = 0);
3165 virtual void UnRegisterErrorHook(uintid auHookId);
3167 virtual uintid RegisterWarningHook(
void* apHandler,
void* apObject = 0);
3169 virtual void UnRegisterWarningHook(uintid auHookId);
3171 #ifdef INOS_SAFETY_SUPPORT
3172 virtual uintid RegisterSOSHook(
void* apHandler,
void* apObject = 0);
3174 virtual void UnRegisterSOSHook(uintid auHookId);
3178 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3180 virtual void RegisterExtension(IINOSBaseAxisExtension* apExtension);
3182 virtual void UnRegisterExtension(IINOSBaseAxisExtension* apExtension);
3187 virtual void EnableSync(real64 arPosition = REAL64(0.0),
3188 uint8 auMode = DF_INOS_AXIS_SYNC_NOADJ){};
3190 virtual void DisableSync(){};
3192 virtual void GetSyncCount(uint32& auSyncCount)
3193 { auSyncCount = 0;};
3195 virtual void SetSyncCount(uint32 auSyncCount){};
3222 real64 arNormPos = REAL64(0.0));
3228 {
return m_uNormMoveDir; };
3232 { m_uNormMoveDir = auNormMoveDir; };
3236 {
return m_uNormMode; };
3240 { m_uNormMode = auNormMode; };
3244 virtual void EnableCurLimit(){};
3246 virtual void DisableCurLimit(){};
3248 virtual bool GetCurLimit()
3250 {
return (m_uFlag & DF_INOS_AXIS_FLAG_CURL) != 0;};
3261 if (aeType == eActInput) {
3265 else if (aeType == eActActual) {
3289 {
return GetActual(eActOutput,
false);};
3293 virtual void SetMoveSafeMin(real64 arMin, real64 arFact1=REAL64(0.0),
3294 real64 arFact2=REAL64(0.0));
3297 virtual void ResetMoveSafeMin();
3302 void EnableSetupMode();
3304 void DisableSetupMode();
3306 virtual bool CheckSetupMode();
3309 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3310 void* GetCustomerSpecificData()
const {
return m_pCustomerSpecificData; }
3313 void SetCustomerSpecificData(
void* apData) { m_pCustomerSpecificData = apData; }
3324 {
return m_uToggleCnt; };
3327 { m_uToggleCnt=auSetVal; };
3329 #ifdef INOS_MOVEPATH_SUPPORT
3348 #ifdef INOS_SAFETY_SUPPORT
3350 uint32 GetSafetyUid()
3351 {
return m_uSafetyUid; };
3353 uint32 GetSafetyType()
3354 {
return m_uSafetyType; };
3356 ESafetyFunction GetSafetyFunction()
const {
3357 return m_eSafetyFunction;
3364 friend void _INI_0000_CINOSBaseAxis();
3365 friend void _INI_0400_CINOSBaseAxis();
3366 friend class CINOSRegisterBaseAxis;
3367 friend class CINOSMapping;
3369 friend void _INI_0400_INFO_DCM();
3370 friend class CINOSBaseAxisTest;
3371 friend class CINOSMovePathResourcePosAxis;
3372 friend class CINOSMcRobotCmdMove;
3373 friend class CINOSMcRobotCmdInit;
3374 friend class CINOSMcRobotCmdCalib;
3375 friend class CINOSMcTargetAxis;
3381 real64 iNormPosition(real64 arPosition, real64 arRange = REAL64(0.0),
bool abRound =
false)
const;
3385 virtual void SignalSync(
CINOSSync& apSync);
3387 virtual void SetError(uint32 auErrors);
3389 virtual void SetWarning(uint32 auWarnings);
3391#ifdef INOS_SAFETY_SUPPORT
3392 virtual void CallSOSHooks();
3395 bool Enter(uint32 auCommand,
CINOSSync* apSync = 0);
3402 {
return m_CmdLock.
GetOwner() != 0;};
3404 virtual void iInActivate();
3408 virtual void iEmergencyStop(
bool abLive =
false);
3410 virtual uint32 iCursor(
bool abPositive, uint32 auWaitTime,
3413 virtual uint32 iCursor(real64 arPosition, uint32 auWaitTime,
3416 real64 iGetAbsPosition(real64 arRelPosition);
3418 real64 iGetNrmAbsPosition(real64 arRelPosition,
SINOSRampParam* apParam =
nullptr,
bool abConsiderStop =
false);
3420 virtual void iSetCycleTime(real64 arCycleTime);
3422 virtual void iRegisterAxis();
3424 ICACHE
virtual void iPreMap();
3426 ICACHE
virtual void iPostMap();
3428 ICACHE
inline void iCheckRampLimits() {
3429 if (m_pRamp->GetError() & ER_INOS_RAMP_VMAX_REACHED) {
3430 SetError(ER_INOS_AXIS_RAMP_LIMIT);
3435 ICACHE
virtual void iPostWrite();
3437 void SetMapping(CINOSMapping* apMapping, uint32 auIndex)
3438 { m_pMapping = apMapping; m_uMappingIndex = auIndex;
3439 m_pRamp->SetMapping(apMapping, auIndex);};
3442 { m_pMapping = 0; m_uMappingIndex = 0;
3443 m_pRamp->ResetMapping();};
3445 virtual bool iInPosition(
bool abEarlyDone);
3447 virtual bool iInPosition();
3454 virtual void iAdjPreviousPositions(real64 arDifference);
3456 virtual void iSetActRampPosition(real64 arPosition);
3458 virtual bool IsCheckPositionRequired();
3460 void SetDefaultParamIfRequired();
3467 virtual void iResetTrajectory();
3470 void iCoreMismatchError();
3475 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3486 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3488 return pBus->AtomicGatherExit(auToken);
3502 uint32 eActivate(
bool abCheckPos,
bool abSimulatePos,
bool abSimulateOut,
3503 bool abSimulateAct);
3505 uint32 eInActivate();
3507 uint32 eRelax(uint32 auTimeMs);
3509 uint32 eMove(real64 arPosition);
3511 uint32 eMove(real64 arPosition,
char* apParam);
3513 uint32 eMoveTime(real64 arPosition, real64 arTime);
3515 uint32 eMoveTime(real64 arPosition, real64 arTime,
char* apParam);
3517 uint32 eMoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3519 uint32 eMoveApp(real64 arPosition, real64 aPositionVel, real64 arVelocity,
char* apParam);
3521 uint32 eMoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3523 uint32 eMoveDep(real64 arPosition, real64 aPositionVel, real64 arVelocity,
char* apParam);
3525 uint32 eSync(real64 arPosition);
3527 uint32 eSync(real64 arPosition,
char* apParam);
3529 uint32 eSync(real64 arPosition, real64 arSyncPosition);
3531 uint32 eSync(real64 arPosition, real64 arSyncPosition,
char* apParam);
3537 uint32 eUpdate(
const char* apParam);
3539 uint32 eEndless(
bool abPositive);
3541 uint32 eEndless(
bool abPositive,
const char* aparam);
3545 uint32 eStop(
const char* apParam);
3547 uint32 eStop(real64 arPosition);
3549 uint32 eStop(real64 arPosition,
const char* apParam);
3553 uint32 eBreak(
const char* apParam);
3555 uint32 eBreak(real64 arPosition);
3557 uint32 eBreak(real64 arPosition,
const char* apParam);
3559 uint32 eEmergencyStop();
3561 uint32 eEmergencyStop(uint32 auType, uint32 auDelay);
3565 uint32 eContinue(
const char* apParam);
3567 void eSetSlowMotion(real64 arSlowMotion);
3577 uint32 eAcceptError();
3579 uint32 eAcceptWarning();
3585 bool iTrack(
const char* apVarName, real64 arFactor, uint32 auFilterLength);
3587 uint32 _Track(
const char* apVarName, real64 arFactor, uint32 auFilter,
3589 void iTrackFollow();
3610 uint32 m_uErrorMask;
3612 uint32 m_uErrorHook;
3616 uint32 m_uWarningMask;
3618 uint32 m_uLimitViolation;
3625 const char* m_pName;
3627 const char* m_pType;
3633 CINCOObject* m_pRegister;
3635 CINCOObject* m_pCommand;
3637 CINCOObject* m_pTest;
3639 CINCOObject* m_pError;
3641 CINCOObject* m_pWarning;
3643 CINCOObject* m_pLimitViolation;
3645 CINCOObject* m_pFlag;
3647 CINCOObject* m_pState;
3651 CINOSLimitChecker* m_pLimitChecker;
3653 CINOSMapping* m_pMapping;
3655 uint32 m_uMappingIndex;
3685 uint32 m_uWaitTicks;
3687 uintid m_uPreMapHookId;
3689 uintid m_uPostMapHookId;
3691 uintid m_uPostWriteHookId;
3693 uintid m_uPreHookId;
3695 #ifdef INOS_SAFETY_SUPPORT
3696 bool m_bPreHookSafetyEnabled;
3699 uintid m_uPostHookId;
3701 SINOSBaseAxisHook* m_pErrorHooks;
3703 SINOSBaseAxisHook* m_pWarningHooks;
3705 TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pParamSets;
3709 static TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pGlobalParamSets;
3711 #ifdef INOS_MOVE_CACHE_SUPPORT
3712 CINOSMoveCache* m_pMoveCache;
3748 uint32 m_uToggleCnt;
3752 real64 m_rFeedPerTurn;
3754 real64 m_rFeedPerTurn_1;
3759 inosName32 m_cSelectedParamName;
3764 uint32 m_uEmergencyType;
3767 uint32 m_uEmergencyDelay;
3769 real64 m_rEmergencyPosition;
3771 uint16 m_uIntEmergencyType;
3773 uint16 m_uIntEmergencyDelay;
3779 uint32 m_uCurWaitTime;
3781 real64 m_rCurPosition;
3790 bool m_bSyncAvailable =
true;
3795 uint8 m_uNormMoveDir;
3806 uint16 m_uTrackValType;
3832 real64* m_pTrackBuf;
3834 tpGetter m_pTrackGet;
3836 real64 m_rTrackVmax;
3837 real64 m_rTrackAmax;
3838 real64 m_rTrackBmax;
3846 uint32 m_uPosTimeout;
3850 int32 m_iPosTimeout;
3852 real64 m_rPosTolerance;
3860 bool m_bPartnerMoving;
3870 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3876 void* m_pCustomerSpecificData;
3881 #ifdef INOS_SAFETY_SUPPORT
3885 uint8 m_uSafetyLevel;
3887 uint8 m_uSafetyType;
3889 ESafetyFunction m_eSafetyFunction;
3891 real64 m_rSafetyLimit;
3893 uint32 m_uSafetyDelay;
3895 int32 m_iSafetySupervisionStart;
3897 real64 m_rSafetySupervisionLimit;
3899 SINOSBaseAxisHook* m_pSOSHooks;
3902 friend class CINOSMcTargetSafety;
3904 void iSetupSafety();
3906 virtual bool iSetupSafetyRegistration();
3911 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3913 TINOSDoubleLinkedList<IINOSBaseAxisExtension>* m_pExtensions = 0;
3918 uint32 m_ueActivateCheckPos;
3920 uint32 m_ueActivateSimulatePos;
3922 uint32 m_ueActivateSimulateOut;
3924 uint32 m_ueActivateSimulateAct;
3926 real64 m_rePosition;
3928 real64 m_rePositionVel{};
3930 real64 m_reVelocity{};
3932 real64 m_reSyncPosition;
3934 inosName32 m_ceParam;
3936 char m_ceVariable[64];
3944 uint32 m_ueTrackDir;
3946 uint32 m_ueDirection;
3966 real64 m_reSlowMotion;
3969 #ifdef INOS_MOVEPATH_SUPPORT
3970 class CINCOMovePathActuals* m_pMovePathActuals;
3975 static uint32 m_uCount;
3977 static uint8 m_uCountCoreId;
3985 static char m_cStateCombo[494];
3998typedef CINOSBaseAxis *(*TCreateAxis)(
const char* apAxisName);
3999class CINOSRegisterBaseAxis
4002 friend void _INI_0000_CINOSRegisterBaseAxis();
4008 static CINOSRegisterBaseAxis* m_pFirst;
4010 CINOSRegisterBaseAxis* m_pNext;
4012 TCreateAxis m_pCreate;
4014 const char* m_pAxisType;
4016 const char* m_pDatabaseTable;
4022 CINOSRegisterBaseAxis(TCreateAxis apFunction,
const char* apAxisType,
4023 const char* apDatabaseTable);
4026 static CINOSBaseAxis* GetAxis(
const char* apAxisName,
const char* apAxisType);
4028 static void CreateAll();
4037#if defined(INOS_MULTICORE)
4038#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret) \
4039if ((m_uCoreId != DF_INOS_CORE_DEFAULT) && (::GetCoreId() != m_uCoreId)) { \
4040 if (!(GetFlag() & DF_INOS_AXIS_FLAG_IGNORE_CORE)) { \
4041 iCoreMismatchError(); \
4046#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret)
4055#ifdef INOS_SAFETY_SUPPORT
4056#define SAFETY_CHECK_SOS() \
4057 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4058 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4059 real64 rSlowMotion; GetActSlowMotion(rSlowMotion); \
4060 if (rSlowMotion != REAL64(0.0)) { \
4061 m_uError |= ER_INOS_AXIS_REJECTED_SOS; \
4062 INOS_ERROR("AXIS[%s]: Command rejected, axis in SOS (safe operating stop)", GetName());\
4068#define SAFETY_CHECK_SOS_SYNC(apSync) \
4069 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4070 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4071 real64 rSlowMotion; GetActSlowMotion(rSlowMotion); \
4072 if (rSlowMotion != REAL64(0.0)) { \
4073 m_uError |= ER_INOS_AXIS_REJECTED_SOS; \
4074 INOS_ERROR("AXIS[%s]: Command rejected, axis in SOS (safe operating stop)", GetName());\
4081#define SAFETY_IGNORE_IF_SOS() \
4082 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4083 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4088#define SAFETY_CHECK_SOS()
4089#define SAFETY_CHECK_SOS_SYNC(apSync)
4090#define SAFETY_IGNORE_IF_SOS()
#define DF_INOS_AXIS_NORM_MOVE_DIR_NO
Definition cinosbaseaxis.h:184
#define DF_INOS_AXIS_NORM_AFTER
Definition cinosbaseaxis.h:167
#define DF_INOS_AXIS_NORM_ROUND
Definition cinosbaseaxis.h:178
#define DECLARE_DYNAMIC(aClass)
Definition cinospartitionmemory.h:328
Provides axis functionality.
Definition cinosbaseaxis.h:676
virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
virtual uint32 Update(CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
Update a running Move to actual commanded values (acc,dec,vel,jerk) Signal apSync if constant velocit...
virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition within the given time arTime and the speedset apParam. The speed set values are tr...
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, real64 arTime, const char *apParam)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in arTime [sec].
virtual uint32 Sync(real64 arPosition, real64 arSyncPos, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to arSyncPos at mark.
virtual uint64 GetStartTicks(real64 arDelta)
Get absolut bus ticks the actual move reaches the start position + arDelta.
virtual uint32 Endless(bool abPositive, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
Start and endless move in the requested direction with speed set apParam.
virtual int32 GetMoveTicks(real64 arPosition, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs until arPosition.
virtual uint32 Pull(SINOSRampDataEx *apData)
Add a path point to the actual pull list and start pull mode if not et done. If one is running an axi...
virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, const char *apParam)
Calc time [sec] an according MoveApp needs until arEndPosition-arDelta.
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, uint32 auTicks, const char *apParam)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in auTicks [bus ticks].
virtual real64 GetMoveDist(real64 arTime, const char *apParam)
Calc distance [unit] a Move progresses in arTime [sec].
virtual real64 GetMoveTime(real64 arPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move(adPosition) needs until arPosition-arDelta.
virtual uint32 SegVelocity(real64 arVelocity, const char *apParam)
Directly change velocity to the new value.
virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, const char *apParam)
Calc time [sec] an according MoveDep needs until arEndPosition-arDelta.
virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the const part.
virtual uint32 SegPosSetTime(real64 arTime)
Sets the time of the last added segpos segment [sec]. Can be used to adjust a previous added pos segm...
virtual uint32 SegRun(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Run actual segments.
virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity)
Calc time [sec] an according MoveDep needs.
virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move needs from arStartPosition until arEndPosition-arDelta.
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, SINOSRampParam *apParam)
Calculate time characteristics of a move.
virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc bus ticks a Move needs from arStartPosition until arEndPosition-arDelta.
virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual uint32 SegMove(real64 arPosition, const char *apParam)
Add a move to arPosition. Velocity and acceleration in arPosition have to be 0.0.
virtual real64 GetConstTime(real64 arPosition, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the constant part.
virtual uint32 Move(real64 arPosition, real64 arSave1, real64 arSave2, const char *apParam1, const char *apParam2, real64 arPartner, const char *apPartner, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. The move is done in a so called safe way (backward -> part...
virtual int32 GetConstTicks(real64 arPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the constant part.
virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks, const char *apParam)
Calc distance [unit] a Move(arPosition) progresses in auTicks [bus ticks].
SINOSRampData * GetActual(EActualType aeType=eActOutput, bool abCopy=true)
get pointer to actual control values
Definition cinosbaseaxis.h:3258
virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move(adPosition) needs until arPosition-arDelta.
virtual uint32 SegBegin(real64 arSlowMotion=REAL64(1.0), real64 arStartVelocity=REAL64(0.0))
Create a new segmentation move.
virtual int32 GetConstTicks(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the constant part.
void InitializeLimitChecker()
Initializes the limit checker if requested.
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, const char *apParam)
Calculate time characteristics of a move.
virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. Ensure befor arPositionVel a velocity that is smaller than...
virtual int32 GetDecelerationTicks(real64 arPosition, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual uint32 WaitInPosition()
Wait for any move to finish.
virtual int32 GetAccelerationTicks(real64 arPosition, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual uint32 EmergencyStop(CINOSSync *apSync)
Stop a running move with the defined emergency deceleration/jerk.
virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] an according MoveApp needs until arEndPosition-arDelta.
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, const char *apParam)
Calc time [sec] an according MoveApp needs until arPosition-arDelta.
virtual real64 GetMoveDist(real64 arPosition, real64 arTime, SINOSRampParam *apParam)
Calc distance [unit] a Move(arPosition) progresses in arTime [sec].
virtual real64 GetDecelerationTime(real64 arPosition)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual uint32 Track(const char *apVarName, real64 arFactor, uint32 auFilterLength, uint32 auDirection, const char *apParam)
Track the variable with name apVarName.
virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calculate time characteristics of a move.
virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual uint32 SegVelocity(real64 arVelocity, SINOSRampParam *apParam)
Directly change velocity to the new value.
virtual int32 GetMoveTicks(real64 arPosition, const char *apParam)
Calc bus ticks a Move(adPosition) needs until arPosition.
virtual uint32 Move(real64 arPosition, real64 arSafe1, real64 arSafe2, SINOSRampParam *apParam1, SINOSRampParam *apParam2, real64 arPartner, SINOSRampParam *apPartner, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. The move is done in a so called safe way (backward -> part...
virtual uint32 Enable(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Enables a previously disabled axis. Only enabled axis can be activated.
virtual uint32 Move(real64 arPosition, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam.
virtual uint32 StopLive()
Stop a running move with the currently selected speed set. The stop is calculated live and therefore ...
virtual uint32 Stop(real64 arPosition, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the given speed set at requested position.
virtual real64 GetMoveTime(real64 arPosition, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs until arPosition.
virtual int32 GetMoveTicks(real64 arPosition)
Calc bus ticks a Move(adPosition) needs until arPosition.
virtual uint32 SetActPosition(real64 arPosition)
Sets the actual axis position. This method doesn't change a current following error and it is therefo...
virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5=true, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition within the given time arTime. Actual commanded jerk, acc/deceleration and velocity...
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta)
Calculate time characteristics of a move.
virtual uint32 Update(SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
Update a running Move to speed set apParam. Signal apSync if constant velocity reached (acc = 0).
virtual int32 GetConstTicks(real64 arPosition)
Calc bus ticks a Move(adPosition) needs for the constant part.
virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual uint32 SegMove(real64 arPosition, real64 arVelocity)
Add a move to arPosition. Requested velocity in arPosition is arVelocity, the acceleration is 0....
virtual real64 GetAccelerationTime(real64 arPosition)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
virtual uint32 SegMove(real64 arPosition, real64 arVelocity, SINOSRampParam *apParam)
Add a move to arPosition. Requested velocity in arPosition is arVelocity, the acceleration is 0....
virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual uint32 EmergencyStopLive(uint16 auType, uint16 auDelay=0xffff)
Stop a running move with the defined emergency deceleration/jerk. The stop is calculated live and the...
virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs until arPosition-arDelta.
virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move needs from arStartPosition until arEndPosition-arDelta.
virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the const part.
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, SINOSRampParam *apParam)
Calc time [sec] an according MoveDep needs.
virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc time [sec] a Move needs from arStartPosition until arEndPosition-arDelta.
virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta)
Calc time [sec] an according MoveDep needs until arEndPosition-arDelta.
virtual uint32 Relax(uint32 auTimeMs, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Relax a coupled slave axis for a given time.
virtual uint32 Connect()
Connect axis to hardware.
Definition cinosbaseaxis.h:737
virtual uint32 Sync(real64 arSyncPos, const char *apParam, CINCOObject *apObject, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark and set actual position to arSyncPos at mark.
virtual uint32 Stop(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the currently selected speed set.
virtual real64 GetConstTime(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the constant part.
virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the const part.
void DisableRamp()
Disable the axis trajectory generator. Can be used to fill up a pull list without staring immediately...
Definition cinosbaseaxis.h:2456
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, const char *apParam)
Calc time [sec] an according MoveApp needs.
virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the const part.
virtual uint32 Track(const char *apVarName, real64 arCmdValue, real64 arFactor, uint32 auFilterLength)
Track the variable with name apVarName to the commanded value arCmdValue.
virtual real64 GetDecelerationTime(real64 arPosition, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual uint32 GetBusTicksPerAxisTick()
Get number of bus ticks an axis tick takes.
virtual real64 GetMoveTime(real64 arPosition, real64 arDelta)
Calc time [sec] a Move(adPosition) needs until arPosition-arDelta.
SINOSRampDataEx * m_pActControl
actual commanded values (valid if mapping active or after a SetActual)
Definition cinosbaseaxis.h:3723
virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with actual commanded jerk, acc/deceleration and velocity. Ensure after arPosition...
virtual uint32 Continue(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Continue a pause move.
virtual uint32 Cursor(real64 arPosition)
Moves one 'inc' in 'arPosition' direction, waits 500ms and then moves to arPosition....
virtual void SetNormMode(uint8 auNormMode)
Definition cinosbaseaxis.h:3239
virtual void SetNormMoveDir(uint8 auNormMoveDir)
Definition cinosbaseaxis.h:3231
virtual uint32 Pull(SINOSRampData &aData)
Add a path point to the actual pull list and start pull mode if not et done. If one is running an axi...
virtual uint32 Move(real64 arPosition, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with actual commanded jerk, acc/deceleration and velocity.
virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. Ensure after arPositionVel a velocity that is smaller than...
virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move needs from arStartPosition until arEndPosition-arDelta.
virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, uint32 auTicks, SINOSRampParam *apParam)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in auTicks [bus ticks].
SINOSRampDataEx * m_pActual
actual commanded values (handed over to control)
Definition cinosbaseaxis.h:3719
virtual uint32 Break(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the currently selected speed set. The move is still pending and can be cont...
virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime, real64 arStep)
Moves one step in 'arPosition' direction, waits auWaitTime ms and then moves to arPosition....
virtual uint32 Cursor(bool abPositive, uint32 auWaitTime, real64 arStep)
Moves one arStep in the requested direction, waits auWaitTime ms and starts an endless move to the de...
virtual real64 GetDecelerationTime(real64 arPosition, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move needs from arStartPosition until arEndPosition-arDelta.
virtual real64 GetMoveTime(real64 arPosition)
Calc time [sec] a Move(adPosition) needs until arPosition.
virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks, SINOSRampParam *apParam)
Calc distance [unit] a Move(arPosition) progresses in auTicks [bus ticks].
virtual uint64 GetTargetTicks()
Get absolut bus ticks the actual move reaches the target position.
SINOSRampData * GetRealVrt()
get pointer to real values
Definition cinosbaseaxis.h:3282
SINOSRampDataEx * m_pActRamp
actual commanded values from ramp geni
Definition cinosbaseaxis.h:3721
virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual int32 GetConstTicks(real64 arPosition, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the constant part.
virtual uint32 Cursor(bool abPositive, uint32 auWaitTime, real64 arStep, const char *apParam)
Moves one arStep in the requested direction, waits auWaitTime ms and starts an endless move to the de...
virtual int32 GetConstTicks(real64 arPosition, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the constant part.
virtual uint32 Break(SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the given speed set. The move is still pending and can be continued with Co...
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta)
Calc time [sec] an according MoveApp needs until arPosition-arDelta.
virtual real64 GetMoveDist(real64 arTime)
Calc distance [unit] a Move progresses in arTime [sec].
double NormPosition(real64 arPosition) const
Returned the 'normed' value of arPosition.
Definition cinosbaseaxis.h:2775
virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with actual commanded jerk, acc/deceleration and velocity. Ensure befor arPosition...
virtual real64 GetMoveDist(real64 arTime, SINOSRampParam *apParam)
Calc distance [unit] a Move progresses in arTime [sec].
virtual int32 GetAccelerationTicks(real64 arPosition)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual real64 GetConstTime(real64 arPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the constant part.
CINOSBaseAxis(SINOSBaseAxis *apDesc)
Create an axis based on a descriptor (usually not used because this is done by the configuration syst...
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta, const char *apParam)
Calculate time characteristics of a move.
virtual uint32 Update(const char *apParam, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
Update a running Move to speed set apParam. Signal apSync if constant velocity reached (acc = 0).
virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta)
Calc bus ticks a Move(adPosition) needs until arPosition-arDelta.
virtual uint64 GetTargetTicks(real64 arDelta)
Get absolut bus ticks the actual move reaches the target position - arDelta.
virtual real64 GetMoveDist(real64 arPosition, real64 arTime)
Calc distance [unit] a Move(arPosition) progresses in arTime [sec].
virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the const part.
virtual uint32 Stop(real64 arPosition, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the currently selected speed set at requested position.
virtual uint32 Toggle(real64 arPosition1, real64 arPosition2)
Start an endless toggle between arPosition1 and arPosition2 with actual commanded a jerk,...
virtual uint32 Sync(real64 arPosition, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to 0.0 at mark.
virtual uint32 ToggleSection(real64 arPos1Min, real64 arPos1Max, real64 arPos2Min, real64 arPos2Max, uint32 auDelayMin, uint32 auDelayMax)
Start an endless section toggle between arPosition1 and arPosition2 with actual commanded a jerk,...
virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual real64 GetAccelerationTime(real64 arPosition, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
virtual uint32 Track(const char *apVarName, real64 arFactor, uint32 auFilterLength, uint32 auDirection=0)
Track the variable with name apVarName.
virtual void DisableNorm()
virtual real64 GetConstTime(real64 arPosition, real64 arDelta)
Calc time [sec] a Move(adPosition) needs for the constant part.
virtual uint32 Break(const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the given speed set. The move is still pending and can be continued with Co...
virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual void GetActPosition(real64 &arPosition, bool abRamp=true)
Gets the actual axis position.
virtual uint32 Stop(SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the given speed set.
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, SINOSRampParam *apParam)
Calc time [sec] an according MoveApp needs.
virtual uint32 SetTrackFactor(real64 arFactor)
Allows to live change the tracking factor of an active 'Track'.
virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks)
Calc distance [unit] a Move(arPosition) progresses in auTicks [bus ticks].
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity)
Calc time [sec] an according MoveApp needs.
virtual int32 GetExitTicks()
Calc bus ticks needed till exit in a safe move.
SINOSBaseRampTrqLimit * GetTrqLimitAcceleration()
get torque limit acceleration
Definition cinosbaseaxis.h:3336
virtual uint32 Endless(bool abPositive, const char *apParam, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
Start and endless move in the requested direction with speed set apParam.
virtual uint32 SegBegin(real64 arSlowMotion, real64 arStartPosition, real64 arStartVelocity)
Create a new segmentation move at given position.
virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] an according MoveDep needs until arEndPosition-arDelta.
virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual int32 GetConstTicks(real64 arPosition, real64 arDelta)
Calc bus ticks a Move(adPosition) needs for the constant part.
SINOSRampData * GetActPhy()
deprecated
Definition cinosbaseaxis.h:3288
virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime, real64 arStep, SINOSRampParam *apParam)
Moves one step in 'arPosition' direction, waits auWaitTime ms and then moves to arPosition....
virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta)
Calc time [sec] an according MoveApp needs until arEndPosition-arDelta.
virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. Ensure after arPositionVel a velocity that is smaller than...
virtual uint32 SegConst(real64 arPosition)
Add a move to arPosition with actual velocity.
virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual real64 GetConstTime(real64 arPosition, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the constant part.
virtual uint32 WaitTicks(uint32 auTicks=1)
Wait for the given axis control cycle ticks. This method can be useful if it is necessary to synchron...
virtual uint32 InActivate(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Inactivate axis.
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition)
Calculate time characteristics of a move.
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, real64 arTime, SINOSRampParam *apParam)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in arTime [sec].
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calculate time characteristics of a move.
virtual int32 GetDecelerationTicks(real64 arPosition)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual uint32 Break(real64 arPosition, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the currently selected speed set at requested position. The move is still p...
uint8 m_uCoreId
id of core the axis is handled in
Definition cinosbaseaxis.h:3803
virtual uint32 Sync(real64 arPosition, real64 arSyncPos, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to arSyncPos at mark.
virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the const part.
virtual void EnableNorm(uint8 auMode=0x00, uint8 auMoveDir=0x00, real64 arNormPos=REAL64(0.0))
virtual uint32 Continue(const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Continue a pause move with the given speed set.
virtual int32 GetAccelerationTicks(real64 arPosition, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual uint32 EmergencyStop(uint16 auType=0xffff, uint16 auDelay=0xffff, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the defined emergency deceleration/jerk.
virtual real64 GetAccelerationTime(real64 arPosition, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
uint32 m_uBusTicksPerAxisTick
number of bus ticks an axis tick takes
Definition cinosbaseaxis.h:3865
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, uint32 auTicks)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in auTicks [bus ticks].
virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. Ensure before arPositionVel a velocity that is smaller tha...
virtual uint32 Sync(real64 arPosition, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to 0.0 at mark.
virtual uint32 Stop(const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the given speed set.
virtual void SetToggleCnt(uint32 auSetVal)
set toggle counter to given value
Definition cinosbaseaxis.h:3326
virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta)
Calc time [sec] an according MoveDep needs until arPosition-arDelta.
virtual uint32 Break(real64 arPosition, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the given speed set at requested position. The move is still pending and ca...
virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual uint32 Sync(real64 arPosition, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to 0.0 at mark.
virtual uint32 Break(real64 arPosition, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the given speed set at requested position. The move is still pending and ca...
virtual uint32 Stop(real64 arPosition, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the given speed set at requested position.
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, const char *apParam)
Calc time [sec] an according MoveDep needs until arPosition-arDelta.
static CINOSBaseAxis * GetAxis(uint32 auNumber)
Get pointer to axis with a given number.
Definition cinosbaseaxis.h:710
virtual real64 GetMoveDist(real64 arPosition, real64 arTime, const char *apParam)
Calc distance [unit] a Move(arPosition) progresses in arTime [sec].
CINOSBaseAxis(SINOSBaseAxis *apDesc, CINOSBaseRamp *apRamp)
Create an axis based on a descriptor (usually not used because this is done by the configuration syst...
virtual uint32 Cursor(bool abPositive, uint32 auWaitTime)
Moves one 'inc' in the requested direction, waits auWaitTime ms and starts an endless move to the def...
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calculate time characteristics of a move.
virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition within the given time arTime and the speedset apParam. The speed set values are tr...
virtual uint32 SegMove(real64 arPosition)
Add a move to arPosition. Velocity and acceleration in arPosition have to be 0.0.
virtual uint32 Continue(SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Continue a pause move with the given speed set.
SINOSRampData * GetActVrt()
deprecated
Definition cinosbaseaxis.h:3285
virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual uint32 Pull(real64 arS, real64 arV, real64 arA, real64 arJ)
Add a path point to the actual pull list and start pull mode if not et done. If one is running an axi...
virtual uint32 StopLive(real64 arSlowMotion, SINOSRampParam *apParam)
Stop a running move with the given speed set and required slowmotion factor. The stop is calculated l...
virtual uint8 GetNormMode()
Definition cinosbaseaxis.h:3235
virtual real64 GetMoveTime(real64 arPosition, const char *apParam)
Calc time [sec] a Move(adPosition) needs until arPosition.
virtual uint32 Cursor(real64 arbPosition, uint32 auWaitTime, real64 arStep, const char *apParam)
Moves one step in 'arPosition' direction, waits auWaitTime ms and then moves to arPosition....
virtual uint32 Move(real64 arPosition, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam.
virtual ~CINOSBaseAxis()
Destroy the axis (usually not used)
SINOSBaseRampTrqLimit * GetTrqLimitDeceleration()
get torque limit deceleration
Definition cinosbaseaxis.h:3339
virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calculate time characteristics of a move.
virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime)
Moves one 'inc' in 'arPosition' direction, waits auWaitTime ms and then moves to arPosition....
virtual uint32 Cursor(bool abPositive=true)
Moves one 'inc' in the requested direction, waits 500ms and starts an endless move to the defined sof...
virtual uint32 SegMove(real64 arPosition, SINOSRampParam *apParam)
Add a move to arPosition. Velocity and acceleration in arPosition have to be 0.0.
virtual uint32 EmergencyStopLive()
Stop a running move with the defined emergency deceleration/jerk. The stop is calculated live and the...
virtual uint32 Disable(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Disables an enabled axis. Only inactivated axis can be disabled. Use 'Enable' to reenable the axis.
virtual uint32 StopLiveDelta(real64 arDelta, real64 arSlowMotion, SINOSRampParam *apParam=nullptr)
Stop a running move with the given speed set and required slowmotion factor. The stop is calculated l...
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, const char *apParam)
Calc time [sec] an according MoveDep needs.
virtual const char * GetName()
virtual uint32 Sync(real64 arPosition, real64 arSyncPos, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to arSyncPos at mark.
virtual real64 GetMoveTime(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs until arPosition-arDelta.
void EnableRamp()
Enable a recently disabled trajectory generator.
Definition cinosbaseaxis.h:2446
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] an according MoveDep needs until arPosition-arDelta.
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] an according MoveApp needs until arPosition-arDelta.
virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
static uint8 GetNumber(const char *apAxisName)
Get number of axis apAxisName.
virtual uint32 SegPos(real64 arTime)
stay at actual position for arTime [sec].
virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual uint32 Activate(bool abCheckPos=true, bool abSimulatePos=false, bool abSimulateOut=false, bool abSimulateAct=false, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Activate axis in a given mode, e.g Activate(true,true,true,true) enables the axis in a full simulated...
virtual uint32 GetToggleCnt()
get current toggle counter
Definition cinosbaseaxis.h:3323
virtual int32 GetDecelerationTicks(real64 arPosition, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual uint32 Endless(bool abPositive=true)
Start and endless move in the requested direction with actual commanded acc/dec and velocity.
virtual uint8 GetNormMoveDir()
Definition cinosbaseaxis.h:3227
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, real64 arTime)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in arTime [sec].
static CINOSBaseAxis * GetAxis(const char *apAxisName)
Get pointer to axis with name apAxisName.
virtual uint32 SetRealPosition(real64 arPosition)
Sets the real axis position. This method ignores a current following error and should therefore NOT b...
SINOSRampDataEx * m_pRealVrt
actual real virtual values
Definition cinosbaseaxis.h:3725
virtual void GetRealPosition(real64 &arPosition, bool abMapped=true)
Gets the real axis position.
uint16 m_uCycleId
cycle id
Definition cinosbaseaxis.h:3868
virtual uint32 SegMove(real64 arPosition, real64 arVelocity, const char *apParam)
Add a move to arPosition. Requested velocity in arPosition is arVelocity, the acceleration is 0....
virtual real64 SegTime()
Returns time the actual segment move takes.
virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual uint32 Cursor(bool abPositive, uint32 auWaitTime, real64 arStep, SINOSRampParam *apParam)
Moves one arStep in the requested direction, waits auWaitTime ms and starts an endless move to the de...
uint8 GetCoreId()
get core id the axis is running on
Definition cinosbaseaxis.h:3345
virtual real64 GetConstTime(real64 arPosition)
Calc time [sec] a Move(adPosition) needs for the constant part.
Definition cinosbaseramp.h:697
Definition cinosbaseramp.h:752
SINOSBaseRampTrqLimit * GetTrqLimitAcceleration()
get torque limit acceleration
Definition cinosbaseramp.h:1343
SINOSBaseRampTrqLimit * GetTrqLimitDeceleration()
get torque limit deceleration
Definition cinosbaseramp.h:1349
Definition cinosbus.h:563
INOS_INLINE void AtomicGatherEnter(uint32 &ouToken)
Definition cinosbus.h:950
Definition cinosmutex.h:36
ICACHE class CINOSTask * GetOwner()
Return id of mutex owner.
Definition cinosmutex.h:118
Provides physical aka real axis functionality.
Definition cinosphysicalaxis.h:286
#define INOS_INLINE
Definition inosdefine.h:60
#define DF_INOS_CORE_DEFAULT
Definition inosdefine.h:170
#define INOS_OR(variable, mask)
Definition inosmacro.h:201
#define DF_INOS_ASYNCHRONOUS
Definition inosmacro.h:337
#define DF_INOS_SYNCHRONOUS
Definition inosmacro.h:332
#define INOS_AND(variable, mask)
Definition inosmacro.h:210
uint32 tUid
Definition inostype.h:190
Descriptor structure used to configure a base axis. It is usually only used in conjunction with SINOS...
Definition cinosbaseaxis.h:390
real64 m_rPosTolerance
Default positioning tolerance [unit] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OP...
Definition cinosbaseaxis.h:511
inosName32 m_cEmergencyParam
Name of the speed set to be used for emergency stops.
Definition cinosbaseaxis.h:555
uint8 m_uCoreId
Id of core the axis has to run on. In the configuration file do not define this value or set it to 0x...
Definition cinosbaseaxis.h:411
uint32 m_uCacheSize
Used to define a cache size for the special safe move commands. Currently only used on a special cust...
Definition cinosbaseaxis.h:516
uint8 m_uSafetyType
Defines the behaviour in case of an SOS request DF_INOS_AXIS_SAFETY_EMGSTOP, DF_INOS_AXIS_SAFETY_AUTO...
Definition cinosbaseaxis.h:435
uint8 m_uNormMode
Used to define the default axis norming mode, e.g. norm an turn axis to 0..360° see DF_INOS_AXIS_NORM...
Definition cinosbaseaxis.h:530
uint32 m_uTrackFilterLength
Defines the default tracking filter length.
Definition cinosbaseaxis.h:487
real64 m_rTrackFactor
Defines the default tracking factor.
Definition cinosbaseaxis.h:483
real64 m_rEmergencyPosition
Emergency stop position (used in emergency types DF_INOS_AXIS_EMGT_STOP_POSITION and DF_INOS_AXIS_EMG...
Definition cinosbaseaxis.h:479
real64 m_rTestPos2
Test mode position 2, see also m_rTestPos1 and m_uTestDelay.
Definition cinosbaseaxis.h:470
inosName64 m_cName
Axis name.
Definition cinosbaseaxis.h:393
real64 m_rTestPos1Max
Test mode position 1 maximum, see also m_rTestPos1.
Definition cinosbaseaxis.h:466
uint16 m_uNumber
Optional axis number. This value is only used on specific Indel targets like e.g. a GIN-AX4x4 to defi...
Definition cinosbaseaxis.h:406
uint16 m_cShort
Gives the user the possibility to define a short one character based axis alias. This option is depre...
Definition cinosbaseaxis.h:521
uint8 m_uNormMoveDir
Used to define the default axis norm moving direction, e.g. move always in positive direction,...
Definition cinosbaseaxis.h:540
uint8 m_uEmergencyType
Defines the default behaviour in case of an emergency stop of the axis. An emergency stop is either i...
Definition cinosbaseaxis.h:447
inosName64 m_cDescription
Axis description.
Definition cinosbaseaxis.h:559
uint32 m_uPosTime
Default positioning time [ms] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OPT.
Definition cinosbaseaxis.h:501
inosName32 m_cRampType
Trajectory generator name. Valid types are INOSJerkRamp, INOSJerkTrqRamp, INOSTrapezeRamp or a custom...
Definition cinosbaseaxis.h:399
inosName32 m_cDefaultParam
If this string is not empty and the axis ramps A,V,J are set to 0.0 (means undefined) then the speed ...
Definition cinosbaseaxis.h:551
uint8 m_uReserved
Reserved for future use.
Definition cinosbaseaxis.h:415
real64 m_rTestPos1
Test mode position 1, see also m_rTestPos2 and m_uTestDelay.
Definition cinosbaseaxis.h:462
uint32 m_uOptions
Axis options, see DF_INOS_BASE_AXIS_OPT_EARLY_DONE, DF_INOS_BASE_AXIS_OPT_AUTO_ACCEPT,...
Definition cinosbaseaxis.h:428
uint16 m_uEmergencyDelay
The required default delay [ms] if working with emergency type DF_INOS_AXIS_EMGT_STOP_INACTIVATE.
Definition cinosbaseaxis.h:452
uint32 m_uPosTimeout
Default positioning timeout [ms] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OPT.
Definition cinosbaseaxis.h:506
uint32 m_uTestDelay
For testing purposes, an axis provides a test folder in the INCO tree where one can toggle the axis b...
Definition cinosbaseaxis.h:458
real64 m_rNormPos
Defines the default norming position, e.g. 360.0 for a turning axis.
Definition cinosbaseaxis.h:544
uint32 m_uPosType
Tells the system how an end of a move is defined. There are three different type available,...
Definition cinosbaseaxis.h:496
real64 m_rTestPos2Max
Test mode position 2 maximum, see also m_rTestPos2.
Definition cinosbaseaxis.h:474
torque limitation
Definition cinosbaseramp.h:661
Definition cinosmovepathtrajectory.h:50
extended ramp data
Definition cinosbaseramp.h:617
ramp data
Definition cinosbaseramp.h:602
ramp parameters
Definition cinosbaseramp.h:503
time characteristics of a move
Definition cinosbaseramp.h:627