29#ifndef INC_CINOSBASEAXIS_H
30#define INC_CINOSBASEAXIS_H
36#define DF_INOS_BASE_AXIS_DBT "INOS-BASE-AXIS"
39#define DF_INOS_MAX_AXIS 512
41#define DF_INOS_MAX_AXIS 256
46#define DF_INOS_AXIS_STATE_DISABLED -1
47#define DF_INOS_AXIS_STATE_UNDEFINED 0
48#define DF_INOS_AXIS_STATE_OFF 0
49#define DF_INOS_AXIS_STATE_ACTIVE 1
50#define DF_INOS_AXIS_STATE_READY 2
51#define DF_INOS_AXIS_STATE_PEACE 2
52#define DF_INOS_AXIS_STATE_PULL 3
53#define DF_INOS_AXIS_STATE_BREAK 4
54#define DF_INOS_AXIS_STATE_COUPLED 5
55#define DF_INOS_AXIS_STATE_FORCE 6
56#define DF_INOS_AXIS_STATE_ACTIVATING 8
57#define DF_INOS_AXIS_STATE_INACTIVATING 9
58#define DF_INOS_AXIS_STATE_SYNCING 10
59#define DF_INOS_AXIS_STATE_MOVING 11
60#define DF_INOS_AXIS_STATE_ENDLESS 12
61#define DF_INOS_AXIS_STATE_TOGGLE 13
62#define DF_INOS_AXIS_STATE_STOPPING 14
63#define DF_INOS_AXIS_STATE_BREAKING 15
64#define DF_INOS_AXIS_STATE_EMSTOPPING 16
65#define DF_INOS_AXIS_STATE_MOVINGEX 17
66#define DF_INOS_AXIS_STATE_CURSOR 18
67#define DF_INOS_AXIS_STATE_TRACK 19
68#define DF_INOS_AXIS_STATE_MOVINGAPP 20
69#define DF_INOS_AXIS_STATE_MOVINGDEP 21
70#define DF_INOS_AXIS_STATE_RELAXING 22
71#define DF_INOS_AXIS_STATE_UMOVE 23
72#define DF_INOS_AXIS_STATE_SEARCHING 24
73#define DF_INOS_AXIS_STATE_DEPARTING 25
74#define DF_INOS_AXIS_STATES 27
78#define DF_INOS_AXIS_SUBSTATE_TRACK_FOLLOW 0
79#define DF_INOS_AXIS_SUBSTATE_TRACK_KEEP 1
83#define DF_INOS_AXIS_CMD_ACTIVATE 0x00000001
84#define DF_INOS_AXIS_CMD_INACTIVATE 0x00000002
85#define DF_INOS_AXIS_CMD_SYNC 0x00000004
86#define DF_INOS_AXIS_CMD_MOVE 0x00000008
87#define DF_INOS_AXIS_CMD_ENDLESS 0x00000010
88#define DF_INOS_AXIS_CMD_STOP 0x00000020
89#define DF_INOS_AXIS_CMD_BREAK 0x00000040
90#define DF_INOS_AXIS_CMD_CONTINUE 0x00000080
91#define DF_INOS_AXIS_CMD_EMSTOP 0x00000100
92#define DF_INOS_AXIS_CMD_UPDATE 0x00000200
93#define DF_INOS_AXIS_CMD_TOGGLE 0x00000400
94#define DF_INOS_AXIS_CMD_MOVEEX 0x00002000
95#define DF_INOS_AXIS_CMD_HANDLE_CACHE 0x00004000
96#define DF_INOS_AXIS_CMD_CURSOR 0x00008000
97#define DF_INOS_AXIS_CMD_TRACK 0x00010000
98#define DF_INOS_AXIS_CMD_MOVESEG 0x00020000
99#define DF_INOS_AXIS_CMD_COUPLING 0x00040000
100#define DF_INOS_AXIS_CMD_PULL 0x00080000
101#define DF_INOS_AXIS_CMD_MOVEAPP 0x00100000
102#define DF_INOS_AXIS_CMD_MOVEDEP 0x00200000
103#define DF_INOS_AXIS_CMD_ENABLE 0x00400000
104#define DF_INOS_AXIS_CMD_DISABLE 0x00800000
105#define DF_INOS_AXIS_CMD_COMMUTATE 0x01000000
106#define DF_INOS_AXIS_CMD_MOVETIME 0x02000000
107#define DF_INOS_AXIS_CMD_RELAX 0x04000000
111#define ER_INOS_AXIS_REJECTED 0x00000001
112#define ER_INOS_AXIS_FAILED 0x00000002
113#define ER_INOS_AXIS_POS_WINDOW 0x00000004
114#define ER_INOS_AXIS_CPD_ERROR 0x00000008
115#define ER_INOS_AXIS_CPD_DELTA 0x00000010
116#define ER_INOS_AXIS_CPD_CORR 0x00000020
117#define ER_INOS_AXIS_COM_FAILED 0x00000040
118#define ER_INOS_AXIS_RAMP_LIMIT 0x00000080
119#define ER_INOS_AXIS_REJECTED_SOS 0x00000100
120#define ER_INOS_AXIS_PULL_UNDERRUN 0x00000200
121#define ER_INOS_AXIS_SLS_VIOLATION 0x00000400
122#define ER_INOS_AXIS_SOS_VIOLATION 0x00000800
123#define ER_INOS_AXIS_CORE_MISMATCH 0x00001000
124#define ER_INOS_AXIS_FORCE_CONTROL 0x00002000
125#define ER_INOS_AXIS_CONTROL 0x00004000
126#define ER_INOS_AXIS_RAMP 0x00008000
127#define ER_INOS_AXIS_HOOK 0x00010000
131#define WR_INOS_AXIS_RAMP 0x00008000
132#define WR_INOS_AXIS_CONTROL 0x00004000
133#define WR_INOS_AXIS_IGNORED 0x00000001
134#define WR_INOS_AXIS_CPD_CORR_IGNORED 0x00000002
135#define WR_INOS_AXIS_COUPLED 0x00000008
136#define WR_INOS_AXIS_EME_STOPPED 0x00000010
140#define DF_INOS_AXIS_FLAG_ZERO 0x00000001
141#define DF_INOS_AXIS_FLAG_NORM 0x00000002
142#define DF_INOS_AXIS_FLAG_INCR 0x00000004
143#define DF_INOS_AXIS_FLAG_SYNC 0x00000008
144#define DF_INOS_AXIS_FLAG_EDONE 0x00000010
145#define DF_INOS_AXIS_FLAG_AACC 0x00000020
146#define DF_INOS_AXIS_FLAG_CURL 0x00000040
147#define DF_INOS_AXIS_FLAG_LSNCD 0x00000080
148#define DF_INOS_AXIS_FLAG_DISMP 0x00000100
149#define DF_INOS_AXIS_FLAG_RNDNR 0x00000200
150#define DF_INOS_AXIS_FLAG_PWCL 0x00000400
151#define DF_INOS_AXIS_FLAG_DSAP 0x00000800
152#define DF_INOS_AXIS_FLAG_SAFETY 0x00001000
153#define DF_INOS_AXIS_FLAG_ESPULL 0x00002000
154#define DF_INOS_AXIS_FLAG_IGNORE_CORE 0x00004000
155#define DF_INOS_AXIS_FLAG_INPUT_SHAPING_ACTIVE 0x20000000
156#define DF_INOS_AXIS_FLAG_WINDOW 0x40000000
157#define DF_INOS_AXIS_FLAG_SNCD 0x80000000
161#define DF_INOS_AXIS_SYNC_NOADJ 0x00
162#define DF_INOS_AXIS_SYNC_ADJUST 0x01
163#define DF_INOS_AXIS_SYNC_STOP 0x02
171#define DF_INOS_AXIS_NORM_AFTER 0x00
174#define DF_INOS_AXIS_NORM_LIVE 0x01
177#define DF_INOS_AXIS_NORM_POSITIVE 0x40
182#define DF_INOS_AXIS_NORM_ROUND 0x80
188#define DF_INOS_AXIS_NORM_MOVE_DIR_NO 0x00
193#define DF_INOS_AXIS_NORM_MOVE_DIR_POS 0x01
198#define DF_INOS_AXIS_NORM_MOVE_DIR_NEG 0x02
203#define DF_INOS_AXIS_NORM_MOVE_DIR_SHORT 0x03
209#define DF_INOS_AXIS_NORM_MOVE_DIR_SHORT_EX 0x04
216#define DF_INOS_AXIS_SAFETY_EMGSTOP 0x00
221#define DF_INOS_AXIS_SAFETY_AUTO 0x01
224#define DF_INOS_AXIS_SAFETY_NONE 0x02
232#define DF_INOS_AXIS_EMGT_STOP 0x00
238#define DF_INOS_AXIS_EMGT_STOP_INACTIVATE 0x01
241#define DF_INOS_AXIS_EMGT_INACTIVATE 0x02
245#define DF_INOS_AXIS_EMGT_NONE 0x03
251#define DF_INOS_AXIS_EMGT_STOP_POSITION 0x04
257#define DF_INOS_AXIS_EMGT_STOP_POSITION_INACTIVATE 0x05
261#define DF_PRECONFIGURED_EME_STOP_TYPE 0xffff
265#define DF_PRECONFIGURED_EME_STOP_POS_OR_STOP 0xfffe
266#define DF_PRECONFIGURED_EME_STOP_DELAY 0xffff
272#define DF_INOS_AXIS_PST_STANDARD 0x00000000
277#define DF_INOS_AXIS_PST_WINDOW 0x00000001
283#define DF_INOS_AXIS_PST_WINDOW_OPT 0x00000002
291#define DF_INOS_BASE_AXIS_OPT_EARLY_DONE 0x00000001
298#define DF_INOS_BASE_AXIS_OPT_AUTO_ACCEPT 0x00000002
302#define DF_INOS_BASE_AXIS_OPT_LIMITS_IF_SNCD 0x00000004
307#define DF_INOS_BASE_AXIS_OPT_MAPPING_DISABLED 0x00000008
312#define DF_INOS_BASE_AXIS_OPT_NORM_ENABLED 0x00000010
317#define DF_INOS_BASE_AXIS_OPT_CHECK_LIMITS 0x00000020
322#define DF_INOS_BASE_AXIS_OPT_LIFETIME 0x00000040
327#define DF_INOS_BASE_AXIS_OPT_SETPOS_DISABLED 0x00000080
332#define DF_INOS_BASE_AXIS_OPT_EMGSTOP_PULL 0x00000100
335#define DF_INOS_BASE_AXIS_OPT_FORCE_CONTROL 0x00000200
339#define DF_INOS_BASE_AXIS_OPT_IGNORE_CORE 0x00000400
341#if defined(INOS_MOTORCONFIG_LOAD_SUPPORT)
348#define DF_INOS_BASE_AXIS_OPT_CPF_UNIQUE 0x00000800
353#define DF_INOS_BASE_AXIS_LIMIT_S 0x00000001
354#define DF_INOS_BASE_AXIS_LIMIT_V_OF_S 0x00000002
355#define DF_INOS_BASE_AXIS_LIMIT_A_OF_S 0x00000004
356#define DF_INOS_BASE_AXIS_LIMIT_B_OF_S 0x00000008
357#define DF_INOS_BASE_AXIS_LIMIT_S_V_CONS 0x00000010
358#define DF_INOS_BASE_AXIS_LIMIT_V 0x00000020
359#define DF_INOS_BASE_AXIS_LIMIT_A_OF_V 0x00000040
360#define DF_INOS_BASE_AXIS_LIMIT_B_OF_V 0x00000080
361#define DF_INOS_BASE_AXIS_LIMIT_A 0x00000100
362#define DF_INOS_BASE_AXIS_LIMIT_B 0x00000200
363#define DF_INOS_BASE_AXIS_LIMIT_BRAKE 0x00000400
364#define DF_INOS_BASE_AXIS_LIMIT_J_OF_S 0x00000800
365#define DF_INOS_BASE_AXIS_LIMIT_J_OF_V 0x00001000
366#define DF_INOS_BASE_AXIS_LIMIT_J_OF_A 0x00002000
367#define DF_INOS_BASE_AXIS_LIMIT_J 0x00004000
377#if defined(INOS_AXIS_EXTENSION_SUPPORT)
378#include <cinosbaseaxisextension.h>
584class CINOSLimitChecker;
591class CINOSBaseAxisParamSet
597 virtual uint32 SetParam(
const char* apName, real64 arValue);
601 virtual uint32 GetParam(
const char* apName, real64& arResult);
608 virtual CINCOObject* GetRegister()
const;
613 {
return &m_pRamp->m_Param;};
615 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
617 void AddExtension(SINOSParamSetExtension* apExtension);
619 void RemoveExtension(
const char* apName);
627 friend class CINOSShape;
634 CINOSBaseAxisParamSet& operator=(
const CINOSBaseAxisParamSet& aOther);
635 int operator < (CINOSBaseAxisParamSet& aSet)
const
636 {
return (strcmp(m_cName, aSet.m_cName)<0);}
637 int operator == (CINOSBaseAxisParamSet& aSet)
const
638 {
return (strcmp(m_cName, aSet.m_cName)==0);}
639 int operator < (
const char* apName)
const
640 {
return (strcmp(m_cName, apName)<0);}
641 int operator == (
const char* apName)
const
642 {
return (strcmp(m_cName, apName)==0);}
643 friend int operator == (CINOSBaseAxisParamSet& aSet1, CINOSBaseAxisParamSet& aSet2)
644 {
return (strcmp(aSet1.m_cName, aSet2.m_cName)==0);}
648 explicit CINOSBaseAxisParamSet(
const char* apName);
650 CINOSBaseAxisParamSet(
const CINOSBaseAxisParamSet& aOther);
655 virtual ~CINOSBaseAxisParamSet();
662 CINCOObject* m_pRegister;
670 uint32 m_uPosTimeout;
672 real64 m_rPosTolerance;
684typedef real64 (*tpGetter)(
void* apVal);
686struct SINOSBaseAxisHook;
725 if (auNumber < DF_INOS_MAX_AXIS)
726 return m_pAxis[auNumber];
780 virtual uint32
Activate(
bool abCheckPos =
true,
bool abSimulatePos =
false,
781 bool abSimulateOut =
false,
bool abSimulateAct =
false,
823 virtual uint32
Sync(real64 arPosition,
const char* apParam,
833 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
845 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
856 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
866 virtual uint32
Sync(real64 arSyncPos,
const char* apParam, CINCOObject* apObject,
875 virtual uint32
Move(real64 arPosition,
894 virtual uint32
Move(real64 arPosition,
const char* apParam,
907 virtual uint32
MoveTime(real64 arPosition, real64 arTime,
bool abUseP5 =
true,
922 virtual uint32
MoveTime(real64 arPosition, real64 arTime,
bool abUseP5,
936 virtual uint32
MoveTime(real64 arPosition, real64 arTime,
bool abUseP5,
953 virtual uint32
Move(real64 arPosition, real64 arSafe1, real64 arSafe2,
970 virtual uint32
Move(real64 arPosition, real64 arSave1, real64 arSave2,
971 const char* apParam1,
const char* apParam2, real64 arPartner,
const char* apPartner,
984 virtual uint32
MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1001 virtual uint32
MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1018 virtual uint32
MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1034 virtual uint32
MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1051 virtual uint32
MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1068 virtual uint32
MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1077 virtual uint32
Toggle(real64 arPosition1, real64 arPosition2);
1090 real64 arPos2Min, real64 arPos2Max, uint32 auDelayMin, uint32 auDelayMax);
1100 virtual uint32
Track(
const char* apVarName, real64 arFactor,
1101 uint32 auFilterLength, uint32 auDirection = 0);
1112 virtual uint32
Track(
const char* apVarName, real64 arFactor,
1113 uint32 auFilterLength, uint32 auDirection,
const char* apParam);
1124 virtual uint32
Track(
const char* apVarName, real64 arCmdValue,
1125 real64 arFactor, uint32 auFilterLength);
1156 virtual uint32
Endless(
bool abPositive,
const char* apParam,
1165 virtual uint32
Cursor(
bool abPositive =
true);
1182 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime);
1190 virtual uint32
Cursor(real64 arPosition, uint32 auWaitTime);
1200 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime,
1211 virtual uint32
Cursor(real64 arPosition, uint32 auWaitTime,
1223 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime,
1235 virtual uint32
Cursor(real64 arPosition, uint32 auWaitTime,
1247 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime,
1248 real64 arStep,
const char* apParam);
1259 virtual uint32
Cursor(real64 arbPosition, uint32 auWaitTime,
1260 real64 arStep,
const char* apParam);
1335 real64 arDelta,
const char* apParam);
1483 virtual real64
GetMoveTime(real64 arPosition, real64 arDelta,
const char* apParam);
1499 virtual real64
GetConstTime(real64 arPosition, real64 arDelta,
const char* apParam);
1516 virtual real64
GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1557 virtual real64
GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1601 virtual real64
GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1602 real64 arDelta,
const char* apParam);
1613 real64 arDelta,
const char* apParam);
1624 real64 arDelta,
const char* apParam);
1635 real64 arDelta,
const char* apParam);
1667 real64 arVelocity,
const char* apParam);
1678 real64 arVelocity, real64 arDelta);
1702 real64 arVelocity, real64 arDelta,
const char* apParam);
1714 real64 arPositionVel, real64 arVelocity, real64 arDelta);
1727 real64 arPositionVel, real64 arVelocity, real64 arDelta,
SINOSRampParam* apParam);
1740 real64 arPositionVel, real64 arVelocity, real64 arDelta,
const char* apParam);
1772 real64 arVelocity,
const char* apParam);
1783 real64 arVelocity, real64 arDelta);
1807 real64 arVelocity, real64 arDelta,
const char* apParam);
1819 real64 arPositionVel, real64 arVelocity, real64 arDelta);
1832 real64 arPositionVel, real64 arVelocity, real64 arDelta,
SINOSRampParam* apParam);
1845 real64 arPositionVel, real64 arVelocity, real64 arDelta,
const char* apParam);
1993 virtual int32
GetMoveTicks(real64 arPosition, real64 arDelta,
const char* apParam);
2009 virtual int32
GetConstTicks(real64 arPosition, real64 arDelta,
const char* apParam);
2112 real64 arDelta,
const char* apParam);
2123 real64 arDelta,
const char* apParam);
2134 real64 arDelta,
const char* apParam);
2145 real64 arDelta,
const char* apParam);
2195 const char* apParam);
2220 const char* apParam);
2229 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2240 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2251 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2252 real64 arTime,
const char* apParam);
2261 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2272 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2283 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2284 uint32 auTicks,
const char* apParam);
2306 virtual uint32
SegBegin(real64 arSlowMotion = REAL64(1.0), real64 arStartVelocity = REAL64(0.0));
2314 virtual uint32
SegBegin(real64 arSlowMotion, real64 arStartPosition, real64 arStartVelocity);
2337 virtual uint32
SegMove(real64 arPosition,
const char* apParam);
2345 virtual uint32
SegMove(real64 arPosition, real64 arVelocity);
2354 virtual uint32
SegMove(real64 arPosition, real64 arVelocity,
2364 virtual uint32
SegMove(real64 arPosition, real64 arVelocity,
2365 const char* apParam);
2433 virtual uint32
Pull(real64 arS, real64 arV, real64 arA, real64 arJ);
2519 virtual uint32
Stop(real64 arPosition,
const char* apParam,
2605 virtual uint32
Break(real64 arPosition,
const char* apParam,
2643 virtual uint32
EmergencyStop(uint16 auType = DF_PRECONFIGURED_EME_STOP_TYPE, uint16 auDelay = DF_PRECONFIGURED_EME_STOP_DELAY,
2679 virtual const char* GetType();
2681 virtual const char* GetUnit();
2683 virtual uint32 GetCharacteristics();
2688 virtual uint32 GetOptions()
2691 virtual char GetShort()
2693 {
return m_cShort[0];};
2694 virtual void SetShort(
char acShort)
2696 { m_cShort[0] = acShort;};
2697 virtual void SetPartner(
const char* apPartner);
2701 virtual void SetCmdPosition(real64 arPosition);
2703 virtual void SetPathPosition(real64 arPosition){};
2705 virtual void GetCmdPosition(real64& arPosition);
2707 virtual void SetCmdVelocity(real64 arVelocity);
2709 virtual void GetCmdVelocity(real64& arVelocity, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2711 virtual void SetCmdAcceleration(real64 arAcceleration);
2713 virtual void GetCmdAcceleration(real64& arAcceleration, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2715 virtual void SetCmdDeceleration(real64 arDeceleration);
2717 virtual void GetCmdDeceleration(real64& arDeceleration, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2719 virtual void SetCmdCruiseleration(real64 arCruiseleration);
2721 virtual void GetCmdCruiseleration(real64& arCruiseleration);
2723 virtual void SetCmdJerk(real64 arJerk, uint32 auNumber = DF_INOS_RAMP_JERK_ALL);
2725 virtual void GetCmdJerk(real64& arJerk, uint32 auNumber = 0);
2727 virtual void SetCmdCruiseJerk(real64 arCruiseJerk);
2729 virtual void GetCmdCruiseJerk(real64& arCruiseJerk);
2731 virtual void GetCmdRealJerk(real64& arJerk, uint32 auNumber = 0);
2733 virtual void SetCmdSlowMotion(real64 arSlowMotion,
bool abUpdate =
false);
2735 virtual void GetCmdSlowMotion(real64& arSlowMotion,
const char* apParam = 0);
2737 virtual void GetActSlowMotion(real64& arSlowMotion,
const char* apParam = 0);
2739 virtual void SetCmdRelaxTime(real64 arRelaxTime);
2741 virtual void GetCmdRelaxTime(real64& arRelaxTime);
2743 virtual void SetEmgDeceleration(real64 arDeceleration);
2745 virtual void GetEmgDeceleration(real64& arDeceleration);
2748 virtual void SetEmgPosition(real64 arPosition);
2750 virtual void GetEmgPosition(real64& arPosition);
2790 if (m_uFlag & DF_INOS_AXIS_FLAG_NORM){
2802 virtual uint32 NrmActPosition(real64 arRange = REAL64(0.0),
bool abRound =
false);
2804 virtual void GetActVelocity(real64& arVelocity,
bool abMapped =
true);
2806 virtual void GetActAcceleration(real64& arAcceleration,
bool abRamp =
true);
2808 virtual void GetActJerk(real64& arJerk,
bool abRamp =
true);
2810 virtual uint32 AdjActTime(real64 arDelta);
2843 virtual void GetRealVelocity(real64& arVelocity);
2845 virtual void GetRealAcceleration(real64& arAcceleration);
2847 virtual void GetRealJerk(real64& arJerk);
2849 virtual void GetActPosError(real64& arPosError)
2850 { arPosError = REAL64(0.0);};
2852 virtual void GetActVelocityError(real64& arVelocityError,
bool abFiltered =
false)
2853 { arVelocityError = REAL64(0.0);};
2855 virtual void GetUnitsPerInc(
double& adUnits);
2857 virtual void GetIncsPerUnit(
double& adIncs);
2859 virtual void SetMinPosition(real64 arPosition);
2861 virtual void GetMinPosition(real64& apPosition)
const;
2863 virtual void SetMaxPosition(real64 arPosition);
2865 virtual void GetMaxPosition(real64& arPosition)
const;
2867 virtual bool CheckPosition(real64& arPosition,
bool abIgnoreMapping =
false,
SINOSRampParam* apParam =
nullptr);
2869 virtual void SetMinVelocity(real64 arVelocity);
2871 virtual void SetMaxVelocity(real64 arVelocity);
2873 virtual void SetMaxSetupVelocity(real64 arVelocity);
2875 virtual void SetMaxInitVelocity(real64 arVelocity);
2877 virtual void GetMinVelocity(real64& arVelocity);
2879 virtual void GetMaxVelocity(real64& arVelocity, uint32 auFlags = eMaxVelocityNone);
2881 virtual void GetTrqVelocity(real64& arVelocity);
2883 virtual void GetMaxSetupVelocity(real64& arVelocity);
2885 virtual void GetMaxInitVelocity(real64& arVelocity);
2887 virtual void SetMinAcceleration(real64 arAcceleration);
2889 virtual void SetMaxAcceleration(real64 arAcceleration);
2891 virtual void SetMaxAccelerationPull(real64 arAcceleration);
2893 virtual void GetMinAcceleration(real64& arAcceleration);
2895 virtual void GetMaxAcceleration(real64& arAcceleration);
2897 virtual void GetMaxAccelerationPull(real64& arAcceleration);
2899 virtual void GetTrqAcceleration(real64& arAcceleration);
2901 virtual void SetMinDeceleration(real64 arDeceleration);
2903 virtual void SetMaxDeceleration(real64 arDeceleration);
2905 virtual void GetMinDeceleration(real64& arDeceleration);
2907 virtual void GetMaxDeceleration(real64& arDeceleration);
2909 virtual void GetTrqDeceleration(real64& arDeceleration);
2911 virtual void SetMinCruiseleration(real64 arCruiseleration);
2913 virtual void SetMaxCruiseleration(real64 arCruiseleration);
2915 virtual void GetMinCruiseleration(real64& arCruiseleration);
2917 virtual void GetMaxCruiseleration(real64& arCruiseleration);
2919 virtual void SetMinJerk(real64 arJerk);
2921 virtual void SetMaxJerk(real64 arJerk);
2923 virtual void GetMinJerk(real64& arJerk);
2925 virtual void GetMaxJerk(real64& arJerk);
2927 virtual void GetEpsilon(real64& arEpsilon);
2929 virtual void GetCycleTime(real64& arCycleTime,
bool abOversampled=
false);
2931 virtual void GetCycleTimeUs(uint32& auCycleTime);
2933 virtual void GetCycleTimeNs(uint32& auCycleTime);
2935 virtual uint8 GetOversampling();
2937 virtual uint16 GetCycleNumber();
2939 virtual uint16 GetCycleId();
2941 virtual void UpdateCycleId(uint16 auCycleId);
2943 virtual uint8 GetBusId();
2945 virtual uint32 SetParam(
const char* apName, real64 arValue);
2947 virtual uint32 SetParam(
const char* apName, uint64 auValue)
2949 {
return defVarNotFound;};
2950 virtual uint32 GetParam(
const char* apName, real64& arResult);
2952 virtual uint32 GetParam(
const char* apName, uint64& auResult)
2954 {
return defVarNotFound;};
2955 virtual volatile real64* GetParamAdr(
const char* apName);
2957 void SetFlag(uint32 auFlag)
2960 void ClrFlag(uint32 auFlag)
2964 {
return m_uFlag & m_uFlagEnb;};
2967 { ClrFlag(DF_INOS_AXIS_FLAG_INCR);};
2970 { SetFlag(DF_INOS_AXIS_FLAG_INCR);};
2972 virtual uint32 SetState(uint32 auState);
2974 virtual int32 GetState();
2976 virtual int32 GetState(uint32& auRampState);
2978 const char* GetStateText()
const;
2980 virtual bool IsBusy()
const;
2991 virtual uint32 GetError(
bool abResolveExternal =
false);
2993 virtual uint64 GetErrorEx(
bool abResolveExternal =
false);
2995 virtual uint32 GetError(uint32& auRampError,
bool abResolveExternal =
false);
2997 virtual uint64 GetErrorEx(uint64& auRampError,
bool abResolveExternal =
false);
2999 virtual uint32 GetErrorHook() {
return m_uErrorHook; };
3001 virtual bool IsErrorFatal()
3004 virtual uint32 GetWarning(
bool abResolveExternal =
false);
3006 virtual uint64 GetWarningEx(
bool abResolveExternal =
false);
3008 virtual uint32 GetWarning(uint32& auRampWarning,
bool abResolveExternal =
false);
3010 virtual uint64 GetWarningEx(uint64& auRampWarning,
bool abResolveExternal =
false);
3012 virtual uint32 GetLimitViolation() {
return m_uLimitViolation;};
3014 virtual void SetErrorMask(uint32 auMask) { m_uErrorMask = auMask;};
3016 virtual void SetWarningMask(uint32 auMask) { m_uWarningMask = auMask;};
3018 virtual void SetLimitViolation(uint32 auLimitViolation)
3019 { INOSOr(&m_uLimitViolation, auLimitViolation);};
3021 virtual uint32 GetErrorMask() {
return m_uErrorMask;};
3023 virtual uint32 GetWarningMask() {
return m_uWarningMask;};
3025 virtual uint32 AcceptError();
3027 virtual uint32 AcceptError(uint32 auError);
3029 virtual uint32 AcceptError(uint32 auError, uint32 auRampError);
3031 virtual uint32 AcceptWarning();
3033 virtual uint32 AcceptWarning(uint32 auWarning);
3035 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning);
3037 virtual uint32 AcceptLimitViolation() { m_uLimitViolation = 0;
return 0;};
3041 virtual void eCreateParamSet(
const char* apSetName);
3044 virtual CINOSBaseAxisParamSet* CreateParamSet(
const char* apSetName);
3046 virtual void DestroyParamSet(
const char* apSetName);
3048 virtual bool SelectParamSet(
const char* apSetName);
3052 eFlgParamSetNone = 0x00000000,
3053 eFlgParamSetSearchGlobal = 0x00000001,
3054 eFlgParamSetIgnoreOverwrite = 0x00000002
3057 virtual CINOSBaseAxisParamSet* GetParamSet(
const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3059 virtual SINOSRampParam* GetRampParam(
const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3061 virtual bool GetRampParam(
const char* apSetName,
char* apResult, uint32 auSize,
3062 SINOSRampParam& aResult, uint32 auFlags = eFlgParamSetSearchGlobal);
3069 static void eCreateGlobalParamSet(
const char* apSetName);
3072 static CINOSBaseAxisParamSet* CreateGlobalParamSet(
const char* apSetName);
3074 static void DestroyGlobalParamSet(
const char* apSetName);
3076 static CINOSBaseAxisParamSet* GetGlobalParamSet(
const char* apSetName);
3078 static SINOSRampParam* GetGlobalRampParam(
const char* apSetName);
3082 virtual void SetPosType(uint32 auPosType)
3084 { m_uPosType = auPosType; };
3085 virtual void SetPosTime(uint32 auPosTime)
3087 { m_uPosTime = auPosTime; };
3088 virtual void SetPosTimeout(uint32 auPosTimeout)
3090 { m_uPosTimeout = auPosTimeout; };
3091 virtual void SetPosTolerance(real64 arPosTolerance)
3093 { m_rPosTolerance = arPosTolerance; };
3097 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3099 SINOSParamSetExtension* GetParamSetExtension(uint32 auExtensionId)
3102 return m_pRamp->GetParamSetExtension(auExtensionId);
3110 void EnableCache(uint32 auSize = 32);
3112 CINOSRampCache* EnableCache(CINOSRampCache* apCache);
3114 CINOSRampCache* DisableCache();
3116 void ReEnableCache();
3124 void SetCacheEpsilon(real64 arEpsilon);
3126 #ifdef INOS_MOVE_CACHE_SUPPORT
3127 void FlushMoveCache();
3133 #ifdef INOS_SAFETY_SUPPORT
3135 virtual void EnableSafetySupervision();
3137 virtual bool DisableSafetySupervision();
3139 virtual void ToggleSafetySupervision();
3144 virtual CINCOObject* GetRegister();
3151 virtual CINOSMapping* GetMapping()
3152 {
return m_pMapping;};
3154 uint32 GetMappingIndex()
3155 {
return m_uMappingIndex;};
3160 virtual uint32 RegisterHook(uintid& auHookId,
void* apHandler,
void* apObject,
3161 int32 aiOrder,
bool abEnabled=
true);
3164 virtual uint32 UnRegisterHook(uintid auHookId);
3166 virtual uint32 EnableHook(uintid auHookId);
3168 virtual uint32 DisableHook(uintid auHookId);
3170 virtual uint32 RegisterPostHook(uintid& auHookId,
void* apHandler,
void* apObject,
3171 int32 aiOrder,
bool abEnabled=
true);
3174 virtual uint32 UnRegisterPostHook(uintid auHookId);
3176 virtual uintid RegisterErrorHook(
void* apHandler,
void* apObject = 0);
3178 virtual void UnRegisterErrorHook(uintid auHookId);
3180 virtual uintid RegisterWarningHook(
void* apHandler,
void* apObject = 0);
3182 virtual void UnRegisterWarningHook(uintid auHookId);
3184 #ifdef INOS_SAFETY_SUPPORT
3185 virtual uintid RegisterSOSHook(
void* apHandler,
void* apObject = 0);
3187 virtual void UnRegisterSOSHook(uintid auHookId);
3191 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3193 virtual void RegisterExtension(IINOSBaseAxisExtension* apExtension);
3195 virtual void UnRegisterExtension(IINOSBaseAxisExtension* apExtension);
3200 virtual void EnableSync(real64 arPosition = REAL64(0.0),
3201 uint8 auMode = DF_INOS_AXIS_SYNC_NOADJ){};
3203 virtual void DisableSync(){};
3205 virtual void GetSyncCount(uint32& auSyncCount)
3206 { auSyncCount = 0;};
3208 virtual void SetSyncCount(uint32 auSyncCount){};
3235 real64 arNormPos = REAL64(0.0));
3241 {
return m_uNormMoveDir; };
3245 { m_uNormMoveDir = auNormMoveDir; };
3249 {
return m_uNormMode; };
3253 { m_uNormMode = auNormMode; };
3257 virtual void EnableCurLimit(){};
3259 virtual void DisableCurLimit(){};
3261 virtual bool GetCurLimit()
3263 {
return (m_uFlag & DF_INOS_AXIS_FLAG_CURL) != 0;};
3274 if (aeType == eActInput) {
3278 else if (aeType == eActActual) {
3302 {
return GetActual(eActOutput,
false);};
3306 virtual void SetMoveSafeMin(real64 arMin, real64 arFact1=REAL64(0.0),
3307 real64 arFact2=REAL64(0.0));
3310 virtual void ResetMoveSafeMin();
3315 void EnableSetupMode();
3317 void DisableSetupMode();
3319 virtual bool CheckSetupMode();
3322 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3323 void* GetCustomerSpecificData()
const {
return m_pCustomerSpecificData; }
3326 void SetCustomerSpecificData(
void* apData) { m_pCustomerSpecificData = apData; }
3337 {
return m_uToggleCnt; };
3340 { m_uToggleCnt=auSetVal; };
3342 #ifdef INOS_MOVEPATH_SUPPORT
3361 #ifdef INOS_SAFETY_SUPPORT
3363 uint32 GetSafetyUid()
3364 {
return m_uSafetyUid; };
3366 uint32 GetSafetyType()
3367 {
return m_uSafetyType; };
3369 ESafetyFunction GetSafetyFunction()
const {
3370 return m_eSafetyFunction;
3377 friend void _INI_0000_CINOSBaseAxis();
3378 friend void _INI_0400_CINOSBaseAxis();
3379 friend class CINOSRegisterBaseAxis;
3380 friend class CINOSMapping;
3382 friend void _INI_0400_INFO_DCM();
3383 friend class CINOSBaseAxisTest;
3384 friend class CINOSMovePathResourcePosAxis;
3385 friend class CINOSMcRobotCmdMove;
3386 friend class CINOSMcRobotCmdInit;
3387 friend class CINOSMcRobotCmdCalib;
3388 friend class CINOSMcTargetAxis;
3394 real64 iNormPosition(real64 arPosition, real64 arRange = REAL64(0.0),
bool abRound =
false)
const;
3398 virtual void SignalSync(
CINOSSync& apSync);
3400 virtual void SetError(uint32 auErrors);
3402 virtual void SetWarning(uint32 auWarnings);
3404#ifdef INOS_SAFETY_SUPPORT
3405 virtual void CallSOSHooks();
3408 bool Enter(uint32 auCommand,
CINOSSync* apSync = 0);
3415 {
return m_CmdLock.
GetOwner() != 0;};
3417 virtual void iInActivate();
3421 virtual void iEmergencyStop(
bool abLive =
false);
3423 virtual void iPowerEmergencyStop();
3425 virtual uint32 iCursor(
bool abPositive, uint32 auWaitTime,
3428 virtual uint32 iCursor(real64 arPosition, uint32 auWaitTime,
3431 real64 iGetAbsPosition(real64 arRelPosition);
3433 real64 iGetNrmAbsPosition(real64 arRelPosition,
SINOSRampParam* apParam =
nullptr,
bool abConsiderStop =
false);
3435 virtual void iSetCycleTime(real64 arCycleTime);
3437 virtual void iRegisterAxis();
3439 ICACHE
virtual void iPreMap();
3441 ICACHE
virtual void iPostMap();
3443 ICACHE
inline void iCheckRampLimits() {
3444 if (m_pRamp->GetError() & ER_INOS_RAMP_VMAX_REACHED) {
3445 SetError(ER_INOS_AXIS_RAMP_LIMIT);
3450 ICACHE
virtual void iPostWrite();
3452 void SetMapping(CINOSMapping* apMapping, uint32 auIndex)
3453 { m_pMapping = apMapping; m_uMappingIndex = auIndex;
3454 m_pRamp->SetMapping(apMapping, auIndex);};
3457 { m_pMapping = 0; m_uMappingIndex = 0;
3458 m_pRamp->ResetMapping();};
3460 virtual bool iInPosition(
bool abEarlyDone);
3462 virtual bool iInPosition();
3469 virtual void iAdjPreviousPositions(real64 arDifference);
3471 virtual void iSetActRampPosition(real64 arPosition);
3473 virtual bool IsCheckPositionRequired();
3475 void SetDefaultParamIfRequired();
3482 virtual void iResetTrajectory();
3485 void iCoreMismatchError();
3490 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3501 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3503 return pBus->AtomicGatherExit(auToken);
3517 uint32 eActivate(
bool abCheckPos,
bool abSimulatePos,
bool abSimulateOut,
3518 bool abSimulateAct);
3520 uint32 eInActivate();
3522 uint32 eRelax(uint32 auTimeMs);
3524 uint32 eMove(real64 arPosition);
3526 uint32 eMove(real64 arPosition,
char* apParam);
3528 uint32 eMoveTime(real64 arPosition, real64 arTime);
3530 uint32 eMoveTime(real64 arPosition, real64 arTime,
char* apParam);
3532 uint32 eMoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3534 uint32 eMoveApp(real64 arPosition, real64 aPositionVel, real64 arVelocity,
char* apParam);
3536 uint32 eMoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3538 uint32 eMoveDep(real64 arPosition, real64 aPositionVel, real64 arVelocity,
char* apParam);
3540 uint32 eSync(real64 arPosition);
3542 uint32 eSync(real64 arPosition,
char* apParam);
3544 uint32 eSync(real64 arPosition, real64 arSyncPosition);
3546 uint32 eSync(real64 arPosition, real64 arSyncPosition,
char* apParam);
3552 uint32 eUpdate(
const char* apParam);
3554 uint32 eEndless(
bool abPositive);
3556 uint32 eEndless(
bool abPositive,
const char* aparam);
3560 uint32 eStop(
const char* apParam);
3562 uint32 eStop(real64 arPosition);
3564 uint32 eStop(real64 arPosition,
const char* apParam);
3568 uint32 eBreak(
const char* apParam);
3570 uint32 eBreak(real64 arPosition);
3572 uint32 eBreak(real64 arPosition,
const char* apParam);
3574 uint32 eEmergencyStop();
3576 uint32 eEmergencyStop(uint32 auType, uint32 auDelay);
3580 uint32 eContinue(
const char* apParam);
3582 void eSetSlowMotion(real64 arSlowMotion);
3592 uint32 eAcceptError();
3594 uint32 eAcceptWarning();
3600 bool iTrack(
const char* apVarName, real64 arFactor, uint32 auFilterLength);
3602 uint32 _Track(
const char* apVarName, real64 arFactor, uint32 auFilter,
3604 void iTrackFollow();
3625 uint32 m_uErrorMask;
3627 uint32 m_uErrorHook;
3631 uint32 m_uWarningMask;
3633 uint32 m_uLimitViolation;
3640 const char* m_pName;
3642 const char* m_pType;
3648 CINCOObject* m_pRegister;
3650 CINCOObject* m_pCommand;
3652 CINCOObject* m_pTest;
3654 CINCOObject* m_pError;
3656 CINCOObject* m_pWarning;
3658 CINCOObject* m_pLimitViolation;
3660 CINCOObject* m_pFlag;
3662 CINCOObject* m_pState;
3666 CINOSLimitChecker* m_pLimitChecker;
3668 CINOSMapping* m_pMapping;
3670 uint32 m_uMappingIndex;
3700 uint32 m_uWaitTicks;
3702 uintid m_uPreMapHookId;
3704 uintid m_uPostMapHookId;
3706 uintid m_uPostWriteHookId;
3708 uintid m_uPreHookId;
3710 #ifdef INOS_SAFETY_SUPPORT
3711 bool m_bPreHookSafetyEnabled;
3714 uintid m_uPostHookId;
3716 SINOSBaseAxisHook* m_pErrorHooks;
3718 SINOSBaseAxisHook* m_pWarningHooks;
3720 TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pParamSets;
3724 static TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pGlobalParamSets;
3726 #ifdef INOS_MOVE_CACHE_SUPPORT
3727 CINOSMoveCache* m_pMoveCache;
3763 uint32 m_uToggleCnt;
3767 real64 m_rFeedPerTurn;
3769 real64 m_rFeedPerTurn_1;
3774 inosName32 m_cSelectedParamName;
3779 uint32 m_uEmergencyType;
3782 uint32 m_uEmergencyDelay;
3784 real64 m_rEmergencyPosition;
3786 uint16 m_uIntEmergencyType;
3788 uint16 m_uIntEmergencyDelay;
3796 uint32 m_uCurWaitTime;
3798 real64 m_rCurPosition;
3807 bool m_bSyncAvailable =
true;
3812 uint8 m_uNormMoveDir;
3823 uint16 m_uTrackValType;
3849 real64* m_pTrackBuf;
3851 tpGetter m_pTrackGet;
3853 real64 m_rTrackVmax;
3854 real64 m_rTrackAmax;
3855 real64 m_rTrackBmax;
3863 uint32 m_uPosTimeout;
3867 int32 m_iPosTimeout;
3869 real64 m_rPosTolerance;
3877 bool m_bPartnerMoving;
3887 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3893 void* m_pCustomerSpecificData;
3898 #ifdef INOS_SAFETY_SUPPORT
3902 uint8 m_uSafetyLevel;
3904 uint8 m_uSafetyType;
3906 ESafetyFunction m_eSafetyFunction;
3908 real64 m_rSafetyLimit;
3910 uint32 m_uSafetyDelay;
3912 int32 m_iSafetySupervisionStart;
3914 real64 m_rSafetySupervisionLimit;
3916 SINOSBaseAxisHook* m_pSOSHooks;
3919 friend class CINOSMcTargetSafety;
3921 void iSetupSafety();
3923 virtual bool iSetupSafetyRegistration();
3928 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3930 TINOSDoubleLinkedList<IINOSBaseAxisExtension>* m_pExtensions = 0;
3935 uint32 m_ueActivateCheckPos;
3937 uint32 m_ueActivateSimulatePos;
3939 uint32 m_ueActivateSimulateOut;
3941 uint32 m_ueActivateSimulateAct;
3943 real64 m_rePosition;
3945 real64 m_rePositionVel{};
3947 real64 m_reVelocity{};
3949 real64 m_reSyncPosition;
3951 inosName32 m_ceParam;
3953 char m_ceVariable[64];
3961 uint32 m_ueTrackDir;
3963 uint32 m_ueDirection;
3983 real64 m_reSlowMotion;
3986 #ifdef INOS_MOVEPATH_SUPPORT
3987 class CINCOMovePathActuals* m_pMovePathActuals;
3992 static uint32 m_uCount;
3994 static uint8 m_uCountCoreId;
4002 static char m_cStateCombo[494];
4015typedef CINOSBaseAxis *(*TCreateAxis)(
const char* apAxisName);
4016class CINOSRegisterBaseAxis
4019 friend void _INI_0000_CINOSRegisterBaseAxis();
4025 static CINOSRegisterBaseAxis* m_pFirst;
4027 CINOSRegisterBaseAxis* m_pNext;
4029 TCreateAxis m_pCreate;
4031 const char* m_pAxisType;
4033 const char* m_pDatabaseTable;
4039 CINOSRegisterBaseAxis(TCreateAxis apFunction,
const char* apAxisType,
4040 const char* apDatabaseTable);
4043 static CINOSBaseAxis* GetAxis(
const char* apAxisName,
const char* apAxisType);
4045 static void CreateAll();
4054#if defined(INOS_MULTICORE)
4055#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret) \
4056if ((m_uCoreId != DF_INOS_CORE_DEFAULT) && (::GetCoreId() != m_uCoreId)) { \
4057 if (!(GetFlag() & DF_INOS_AXIS_FLAG_IGNORE_CORE)) { \
4058 iCoreMismatchError(); \
4063#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret)
4072#ifdef INOS_SAFETY_SUPPORT
4073#define SAFETY_CHECK_SOS() \
4074 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4075 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4076 real64 rSlowMotion; GetActSlowMotion(rSlowMotion); \
4077 if (rSlowMotion != REAL64(0.0)) { \
4078 m_uError |= ER_INOS_AXIS_REJECTED_SOS; \
4079 INOS_ERROR("AXIS[%s]: Command rejected, axis in SOS (safe operating stop)", GetName());\
4085#define SAFETY_CHECK_SOS_SYNC(apSync) \
4086 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4087 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4088 real64 rSlowMotion; GetActSlowMotion(rSlowMotion); \
4089 if (rSlowMotion != REAL64(0.0)) { \
4090 m_uError |= ER_INOS_AXIS_REJECTED_SOS; \
4091 INOS_ERROR("AXIS[%s]: Command rejected, axis in SOS (safe operating stop)", GetName());\
4098#define SAFETY_IGNORE_IF_SOS() \
4099 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4100 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4105#define SAFETY_CHECK_SOS()
4106#define SAFETY_CHECK_SOS_SYNC(apSync)
4107#define SAFETY_IGNORE_IF_SOS()
#define DF_INOS_AXIS_NORM_MOVE_DIR_NO
Definition cinosbaseaxis.h:188
#define DF_INOS_AXIS_NORM_AFTER
Definition cinosbaseaxis.h:171
#define DF_INOS_AXIS_NORM_ROUND
Definition cinosbaseaxis.h:182
#define DECLARE_DYNAMIC(aClass)
Definition cinospartitionmemory.h:328
Provides axis functionality.
Definition cinosbaseaxis.h:689
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:3271
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:750
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:2469
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:3738
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:3252
virtual void SetNormMoveDir(uint8 auNormMoveDir)
Definition cinosbaseaxis.h:3244
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:3734
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:3295
SINOSRampDataEx * m_pActRamp
actual commanded values from ramp geni
Definition cinosbaseaxis.h:3736
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:2788
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:3349
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:3301
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:3820
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:3882
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:3339
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:723
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:3298
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:3248
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:3352
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:2459
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:3336
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:3240
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:3740
virtual void GetRealPosition(real64 &arPosition, bool abMapped=true)
Gets the real axis position.
uint16 m_uCycleId
cycle id
Definition cinosbaseaxis.h:3885
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:3358
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:565
INOS_INLINE void AtomicGatherEnter(uint32 &ouToken)
Definition cinosbus.h:952
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:289
#define INOS_INLINE
Definition inosdefine.h:60
#define DF_INOS_CORE_DEFAULT
Definition inosdefine.h:175
#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:394
real64 m_rPosTolerance
Default positioning tolerance [unit] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OP...
Definition cinosbaseaxis.h:515
inosName32 m_cEmergencyParam
Name of the speed set to be used for emergency stops.
Definition cinosbaseaxis.h:559
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:415
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:520
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:439
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:534
uint32 m_uTrackFilterLength
Defines the default tracking filter length.
Definition cinosbaseaxis.h:491
real64 m_rTrackFactor
Defines the default tracking factor.
Definition cinosbaseaxis.h:487
real64 m_rEmergencyPosition
Emergency stop position (used in emergency types DF_INOS_AXIS_EMGT_STOP_POSITION and DF_INOS_AXIS_EMG...
Definition cinosbaseaxis.h:483
real64 m_rTestPos2
Test mode position 2, see also m_rTestPos1 and m_uTestDelay.
Definition cinosbaseaxis.h:474
inosName64 m_cName
Axis name.
Definition cinosbaseaxis.h:397
real64 m_rTestPos1Max
Test mode position 1 maximum, see also m_rTestPos1.
Definition cinosbaseaxis.h:470
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:410
uint16 m_cShort
Gives the user the possibility to define a short one character based axis alias. This option is depre...
Definition cinosbaseaxis.h:525
uint8 m_uNormMoveDir
Used to define the default axis norm moving direction, e.g. move always in positive direction,...
Definition cinosbaseaxis.h:544
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:451
inosName64 m_cDescription
Axis description.
Definition cinosbaseaxis.h:572
uint32 m_uPosTime
Default positioning time [ms] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OPT.
Definition cinosbaseaxis.h:505
real64 m_rPowerPosition
Power failure position. The system tries to move to this position in case of a power failure.
Definition cinosbaseaxis.h:564
inosName32 m_cRampType
Trajectory generator name. Valid types are INOSJerkRamp, INOSJerkTrqRamp, INOSTrapezeRamp or a custom...
Definition cinosbaseaxis.h:403
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:555
uint8 m_uReserved
Reserved for future use.
Definition cinosbaseaxis.h:419
real64 m_rTestPos1
Test mode position 1, see also m_rTestPos2 and m_uTestDelay.
Definition cinosbaseaxis.h:466
uint32 m_uOptions
Axis options, see DF_INOS_BASE_AXIS_OPT_EARLY_DONE, DF_INOS_BASE_AXIS_OPT_AUTO_ACCEPT,...
Definition cinosbaseaxis.h:432
uint16 m_uEmergencyDelay
The required default delay [ms] if working with emergency type DF_INOS_AXIS_EMGT_STOP_INACTIVATE.
Definition cinosbaseaxis.h:456
uint32 m_uPosTimeout
Default positioning timeout [ms] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OPT.
Definition cinosbaseaxis.h:510
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:462
real64 m_rNormPos
Defines the default norming position, e.g. 360.0 for a turning axis.
Definition cinosbaseaxis.h:548
uint32 m_uPosType
Tells the system how an end of a move is defined. There are three different type available,...
Definition cinosbaseaxis.h:500
real64 m_rTestPos2Max
Test mode position 2 maximum, see also m_rTestPos2.
Definition cinosbaseaxis.h:478
inosName32 m_cPowerParam
Name of the speed set to be used for a power failure move.
Definition cinosbaseaxis.h:568
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