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
354#define DF_INOS_BASE_AXIS_OPT_EMERGENCY_EXTERNAL 0x00001000
358#define DF_INOS_BASE_AXIS_LIMIT_S 0x00000001
359#define DF_INOS_BASE_AXIS_LIMIT_V_OF_S 0x00000002
360#define DF_INOS_BASE_AXIS_LIMIT_A_OF_S 0x00000004
361#define DF_INOS_BASE_AXIS_LIMIT_B_OF_S 0x00000008
362#define DF_INOS_BASE_AXIS_LIMIT_S_V_CONS 0x00000010
363#define DF_INOS_BASE_AXIS_LIMIT_V 0x00000020
364#define DF_INOS_BASE_AXIS_LIMIT_A_OF_V 0x00000040
365#define DF_INOS_BASE_AXIS_LIMIT_B_OF_V 0x00000080
366#define DF_INOS_BASE_AXIS_LIMIT_A 0x00000100
367#define DF_INOS_BASE_AXIS_LIMIT_B 0x00000200
368#define DF_INOS_BASE_AXIS_LIMIT_BRAKE 0x00000400
369#define DF_INOS_BASE_AXIS_LIMIT_J_OF_S 0x00000800
370#define DF_INOS_BASE_AXIS_LIMIT_J_OF_V 0x00001000
371#define DF_INOS_BASE_AXIS_LIMIT_J_OF_A 0x00002000
372#define DF_INOS_BASE_AXIS_LIMIT_J 0x00004000
382#if defined(INOS_AXIS_EXTENSION_SUPPORT)
383#include <cinosbaseaxisextension.h>
589class CINOSLimitChecker;
596class CINOSBaseAxisParamSet
602 virtual uint32 SetParam(
const char* apName, real64 arValue);
606 virtual uint32 GetParam(
const char* apName, real64& arResult);
613 virtual CINCOObject* GetRegister()
const;
618 {
return &m_pRamp->m_Param;};
620 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
622 void AddExtension(SINOSParamSetExtension* apExtension);
624 void RemoveExtension(
const char* apName);
632 friend class CINOSShape;
639 CINOSBaseAxisParamSet& operator=(
const CINOSBaseAxisParamSet& aOther);
640 int operator < (CINOSBaseAxisParamSet& aSet)
const
641 {
return (strcmp(m_cName, aSet.m_cName)<0);}
642 int operator == (CINOSBaseAxisParamSet& aSet)
const
643 {
return (strcmp(m_cName, aSet.m_cName)==0);}
644 int operator < (
const char* apName)
const
645 {
return (strcmp(m_cName, apName)<0);}
646 int operator == (
const char* apName)
const
647 {
return (strcmp(m_cName, apName)==0);}
648 friend int operator == (CINOSBaseAxisParamSet& aSet1, CINOSBaseAxisParamSet& aSet2)
649 {
return (strcmp(aSet1.m_cName, aSet2.m_cName)==0);}
653 explicit CINOSBaseAxisParamSet(
const char* apName);
655 CINOSBaseAxisParamSet(
const CINOSBaseAxisParamSet& aOther);
660 virtual ~CINOSBaseAxisParamSet();
667 CINCOObject* m_pRegister;
675 uint32 m_uPosTimeout;
677 real64 m_rPosTolerance;
689typedef real64 (*tpGetter)(
void* apVal);
691struct SINOSBaseAxisHook;
730 if (auNumber < DF_INOS_MAX_AXIS)
731 return m_pAxis[auNumber];
785 virtual uint32
Activate(
bool abCheckPos =
true,
bool abSimulatePos =
false,
786 bool abSimulateOut =
false,
bool abSimulateAct =
false,
828 virtual uint32
Sync(real64 arPosition,
const char* apParam,
838 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
850 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
861 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
871 virtual uint32
Sync(real64 arSyncPos,
const char* apParam, CINCOObject* apObject,
880 virtual uint32
Move(real64 arPosition,
899 virtual uint32
Move(real64 arPosition,
const char* apParam,
912 virtual uint32
MoveTime(real64 arPosition, real64 arTime,
bool abUseP5 =
true,
927 virtual uint32
MoveTime(real64 arPosition, real64 arTime,
bool abUseP5,
941 virtual uint32
MoveTime(real64 arPosition, real64 arTime,
bool abUseP5,
958 virtual uint32
Move(real64 arPosition, real64 arSafe1, real64 arSafe2,
975 virtual uint32
Move(real64 arPosition, real64 arSave1, real64 arSave2,
976 const char* apParam1,
const char* apParam2, real64 arPartner,
const char* apPartner,
989 virtual uint32
MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1006 virtual uint32
MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1023 virtual uint32
MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1039 virtual uint32
MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1056 virtual uint32
MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1073 virtual uint32
MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1082 virtual uint32
Toggle(real64 arPosition1, real64 arPosition2);
1095 real64 arPos2Min, real64 arPos2Max, uint32 auDelayMin, uint32 auDelayMax);
1105 virtual uint32
Track(
const char* apVarName, real64 arFactor,
1106 uint32 auFilterLength, uint32 auDirection = 0);
1117 virtual uint32
Track(
const char* apVarName, real64 arFactor,
1118 uint32 auFilterLength, uint32 auDirection,
const char* apParam);
1129 virtual uint32
Track(
const char* apVarName, real64 arCmdValue,
1130 real64 arFactor, uint32 auFilterLength);
1161 virtual uint32
Endless(
bool abPositive,
const char* apParam,
1170 virtual uint32
Cursor(
bool abPositive =
true);
1187 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime);
1195 virtual uint32
Cursor(real64 arPosition, uint32 auWaitTime);
1205 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime,
1216 virtual uint32
Cursor(real64 arPosition, uint32 auWaitTime,
1228 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime,
1240 virtual uint32
Cursor(real64 arPosition, uint32 auWaitTime,
1252 virtual uint32
Cursor(
bool abPositive, uint32 auWaitTime,
1253 real64 arStep,
const char* apParam);
1264 virtual uint32
Cursor(real64 arbPosition, uint32 auWaitTime,
1265 real64 arStep,
const char* apParam);
1340 real64 arDelta,
const char* apParam);
1488 virtual real64
GetMoveTime(real64 arPosition, real64 arDelta,
const char* apParam);
1504 virtual real64
GetConstTime(real64 arPosition, real64 arDelta,
const char* apParam);
1521 virtual real64
GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1562 virtual real64
GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1606 virtual real64
GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1607 real64 arDelta,
const char* apParam);
1618 real64 arDelta,
const char* apParam);
1629 real64 arDelta,
const char* apParam);
1640 real64 arDelta,
const char* apParam);
1672 real64 arVelocity,
const char* apParam);
1683 real64 arVelocity, real64 arDelta);
1707 real64 arVelocity, real64 arDelta,
const char* apParam);
1719 real64 arPositionVel, real64 arVelocity, real64 arDelta);
1732 real64 arPositionVel, real64 arVelocity, real64 arDelta,
SINOSRampParam* apParam);
1745 real64 arPositionVel, real64 arVelocity, real64 arDelta,
const char* apParam);
1777 real64 arVelocity,
const char* apParam);
1788 real64 arVelocity, real64 arDelta);
1812 real64 arVelocity, real64 arDelta,
const char* apParam);
1824 real64 arPositionVel, real64 arVelocity, real64 arDelta);
1837 real64 arPositionVel, real64 arVelocity, real64 arDelta,
SINOSRampParam* apParam);
1850 real64 arPositionVel, real64 arVelocity, real64 arDelta,
const char* apParam);
1998 virtual int32
GetMoveTicks(real64 arPosition, real64 arDelta,
const char* apParam);
2014 virtual int32
GetConstTicks(real64 arPosition, real64 arDelta,
const char* apParam);
2117 real64 arDelta,
const char* apParam);
2128 real64 arDelta,
const char* apParam);
2139 real64 arDelta,
const char* apParam);
2150 real64 arDelta,
const char* apParam);
2200 const char* apParam);
2225 const char* apParam);
2234 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2245 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2256 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2257 real64 arTime,
const char* apParam);
2266 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2277 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2288 virtual real64
GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2289 uint32 auTicks,
const char* apParam);
2311 virtual uint32
SegBegin(real64 arSlowMotion = REAL64(1.0), real64 arStartVelocity = REAL64(0.0));
2319 virtual uint32
SegBegin(real64 arSlowMotion, real64 arStartPosition, real64 arStartVelocity);
2342 virtual uint32
SegMove(real64 arPosition,
const char* apParam);
2350 virtual uint32
SegMove(real64 arPosition, real64 arVelocity);
2359 virtual uint32
SegMove(real64 arPosition, real64 arVelocity,
2369 virtual uint32
SegMove(real64 arPosition, real64 arVelocity,
2370 const char* apParam);
2438 virtual uint32
Pull(real64 arS, real64 arV, real64 arA, real64 arJ);
2524 virtual uint32
Stop(real64 arPosition,
const char* apParam,
2610 virtual uint32
Break(real64 arPosition,
const char* apParam,
2648 virtual uint32
EmergencyStop(uint16 auType = DF_PRECONFIGURED_EME_STOP_TYPE, uint16 auDelay = DF_PRECONFIGURED_EME_STOP_DELAY,
2684 virtual const char* GetType();
2686 virtual const char* GetUnit();
2688 virtual uint32 GetCharacteristics();
2693 virtual uint32 GetOptions()
2696 virtual char GetShort()
2698 {
return m_cShort[0];};
2699 virtual void SetShort(
char acShort)
2701 { m_cShort[0] = acShort;};
2702 virtual void SetPartner(
const char* apPartner);
2706 virtual void SetCmdPosition(real64 arPosition);
2708 virtual void SetPathPosition(real64 arPosition){};
2710 virtual void GetCmdPosition(real64& arPosition);
2712 virtual void SetCmdVelocity(real64 arVelocity);
2714 virtual void GetCmdVelocity(real64& arVelocity, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2716 virtual void SetCmdAcceleration(real64 arAcceleration);
2718 virtual void GetCmdAcceleration(real64& arAcceleration, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2720 virtual void SetCmdDeceleration(real64 arDeceleration);
2722 virtual void GetCmdDeceleration(real64& arDeceleration, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2724 virtual void SetCmdCruiseleration(real64 arCruiseleration);
2726 virtual void GetCmdCruiseleration(real64& arCruiseleration);
2728 virtual void SetCmdJerk(real64 arJerk, uint32 auNumber = DF_INOS_RAMP_JERK_ALL);
2730 virtual void GetCmdJerk(real64& arJerk, uint32 auNumber = 0);
2732 virtual void SetCmdCruiseJerk(real64 arCruiseJerk);
2734 virtual void GetCmdCruiseJerk(real64& arCruiseJerk);
2736 virtual void GetCmdRealJerk(real64& arJerk, uint32 auNumber = 0);
2738 virtual void SetCmdSlowMotion(real64 arSlowMotion,
bool abUpdate =
false);
2740 virtual void GetCmdSlowMotion(real64& arSlowMotion,
const char* apParam = 0);
2742 virtual void GetActSlowMotion(real64& arSlowMotion,
const char* apParam = 0);
2744 virtual void SetCmdRelaxTime(real64 arRelaxTime);
2746 virtual void GetCmdRelaxTime(real64& arRelaxTime);
2748 virtual void SetEmgDeceleration(real64 arDeceleration);
2750 virtual void GetEmgDeceleration(real64& arDeceleration);
2753 virtual void SetEmgPosition(real64 arPosition);
2755 virtual void GetEmgPosition(real64& arPosition);
2795 if (m_uFlag & DF_INOS_AXIS_FLAG_NORM){
2807 virtual void GetPullAdjPosition(real64& arPosition);
2809 virtual uint32 NrmActPosition(real64 arRange = REAL64(0.0),
bool abRound =
false);
2811 virtual void GetActVelocity(real64& arVelocity,
bool abMapped =
true);
2813 virtual void GetActAcceleration(real64& arAcceleration,
bool abRamp =
true);
2815 virtual void GetActJerk(real64& arJerk,
bool abRamp =
true);
2817 virtual uint32 AdjActTime(real64 arDelta);
2850 virtual void GetRealVelocity(real64& arVelocity);
2852 virtual void GetRealAcceleration(real64& arAcceleration);
2854 virtual void GetRealJerk(real64& arJerk);
2856 virtual void GetActPosError(real64& arPosError)
2857 { arPosError = REAL64(0.0);};
2859 virtual void GetActVelocityError(real64& arVelocityError,
bool abFiltered =
false)
2860 { arVelocityError = REAL64(0.0);};
2862 virtual void GetUnitsPerInc(
double& adUnits);
2864 virtual void GetIncsPerUnit(
double& adIncs);
2866 virtual void SetMinPosition(real64 arPosition);
2868 virtual void GetMinPosition(real64& apPosition)
const;
2870 virtual void SetMaxPosition(real64 arPosition);
2872 virtual void GetMaxPosition(real64& arPosition)
const;
2874 virtual bool CheckPosition(real64& arPosition,
bool abIgnoreMapping =
false,
SINOSRampParam* apParam =
nullptr);
2876 virtual void SetMinVelocity(real64 arVelocity);
2878 virtual void SetMaxVelocity(real64 arVelocity);
2880 virtual void SetMaxSetupVelocity(real64 arVelocity);
2882 virtual void SetMaxInitVelocity(real64 arVelocity);
2884 virtual void GetMinVelocity(real64& arVelocity);
2886 virtual void GetMaxVelocity(real64& arVelocity, uint32 auFlags = eMaxVelocityNone);
2888 virtual void GetTrqVelocity(real64& arVelocity);
2890 virtual void GetMaxSetupVelocity(real64& arVelocity);
2892 virtual void GetMaxInitVelocity(real64& arVelocity);
2894 virtual void SetMinAcceleration(real64 arAcceleration);
2896 virtual void SetMaxAcceleration(real64 arAcceleration);
2898 virtual void SetMaxAccelerationPull(real64 arAcceleration);
2900 virtual void GetMinAcceleration(real64& arAcceleration);
2902 virtual void GetMaxAcceleration(real64& arAcceleration);
2904 virtual void GetMaxAccelerationPull(real64& arAcceleration);
2906 virtual void GetTrqAcceleration(real64& arAcceleration);
2908 virtual void SetMinDeceleration(real64 arDeceleration);
2910 virtual void SetMaxDeceleration(real64 arDeceleration);
2912 virtual void GetMinDeceleration(real64& arDeceleration);
2914 virtual void GetMaxDeceleration(real64& arDeceleration);
2916 virtual void GetTrqDeceleration(real64& arDeceleration);
2918 virtual void SetMinCruiseleration(real64 arCruiseleration);
2920 virtual void SetMaxCruiseleration(real64 arCruiseleration);
2922 virtual void GetMinCruiseleration(real64& arCruiseleration);
2924 virtual void GetMaxCruiseleration(real64& arCruiseleration);
2926 virtual void SetMinJerk(real64 arJerk);
2928 virtual void SetMaxJerk(real64 arJerk);
2930 virtual void GetMinJerk(real64& arJerk);
2932 virtual void GetMaxJerk(real64& arJerk);
2934 virtual void GetEpsilon(real64& arEpsilon);
2936 virtual void GetCycleTime(real64& arCycleTime,
bool abOversampled=
false);
2938 virtual void GetCycleTimeUs(uint32& auCycleTime);
2940 virtual void GetCycleTimeNs(uint32& auCycleTime);
2942 virtual uint8 GetOversampling();
2944 virtual uint16 GetCycleNumber();
2946 virtual uint16 GetCycleId();
2948 virtual void UpdateCycleId(uint16 auCycleId);
2950 virtual uint8 GetBusId();
2952 virtual uint32 SetParam(
const char* apName, real64 arValue);
2954 virtual uint32 SetParam(
const char* apName, uint64 auValue)
2956 {
return defVarNotFound;};
2957 virtual uint32 GetParam(
const char* apName, real64& arResult);
2959 virtual uint32 GetParam(
const char* apName, uint64& auResult)
2961 {
return defVarNotFound;};
2962 virtual volatile real64* GetParamAdr(
const char* apName);
2964 void SetFlag(uint32 auFlag)
2967 void ClrFlag(uint32 auFlag)
2971 {
return m_uFlag & m_uFlagEnb;};
2974 { ClrFlag(DF_INOS_AXIS_FLAG_INCR);};
2977 { SetFlag(DF_INOS_AXIS_FLAG_INCR);};
2979 virtual uint32 SetState(uint32 auState);
2981 virtual int32 GetState();
2983 virtual int32 GetState(uint32& auRampState);
2985 const char* GetStateText()
const;
2987 virtual bool IsBusy()
const;
2998 virtual uint32 GetError(
bool abResolveExternal =
false);
3000 virtual uint64 GetErrorEx(
bool abResolveExternal =
false);
3002 virtual uint32 GetError(uint32& auRampError,
bool abResolveExternal =
false);
3004 virtual uint64 GetErrorEx(uint64& auRampError,
bool abResolveExternal =
false);
3006 virtual uint32 GetErrorHook() {
return m_uErrorHook; };
3008 virtual bool IsErrorFatal()
3011 virtual uint32 GetWarning(
bool abResolveExternal =
false);
3013 virtual uint64 GetWarningEx(
bool abResolveExternal =
false);
3015 virtual uint32 GetWarning(uint32& auRampWarning,
bool abResolveExternal =
false);
3017 virtual uint64 GetWarningEx(uint64& auRampWarning,
bool abResolveExternal =
false);
3019 virtual uint32 GetLimitViolation() {
return m_uLimitViolation;};
3021 virtual void SetErrorMask(uint32 auMask) { m_uErrorMask = auMask;};
3023 virtual void SetWarningMask(uint32 auMask) { m_uWarningMask = auMask;};
3025 virtual void SetLimitViolation(uint32 auLimitViolation)
3026 { INOSOr(&m_uLimitViolation, auLimitViolation);};
3028 virtual uint32 GetErrorMask() {
return m_uErrorMask;};
3030 virtual uint32 GetWarningMask() {
return m_uWarningMask;};
3032 virtual uint32 AcceptError();
3034 virtual uint32 AcceptError(uint32 auError);
3036 virtual uint32 AcceptError(uint32 auError, uint32 auRampError);
3038 virtual uint32 AcceptWarning();
3040 virtual uint32 AcceptWarning(uint32 auWarning);
3042 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning);
3044 virtual uint32 AcceptLimitViolation() { m_uLimitViolation = 0;
return 0;};
3048 virtual void eCreateParamSet(
const char* apSetName);
3051 virtual CINOSBaseAxisParamSet* CreateParamSet(
const char* apSetName);
3053 virtual void DestroyParamSet(
const char* apSetName);
3055 virtual bool SelectParamSet(
const char* apSetName);
3059 eFlgParamSetNone = 0x00000000,
3060 eFlgParamSetSearchGlobal = 0x00000001,
3061 eFlgParamSetIgnoreOverwrite = 0x00000002
3064 virtual CINOSBaseAxisParamSet* GetParamSet(
const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3066 virtual SINOSRampParam* GetRampParam(
const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3068 virtual bool GetRampParam(
const char* apSetName,
char* apResult, uint32 auSize,
3069 SINOSRampParam& aResult, uint32 auFlags = eFlgParamSetSearchGlobal);
3076 static void eCreateGlobalParamSet(
const char* apSetName);
3079 static CINOSBaseAxisParamSet* CreateGlobalParamSet(
const char* apSetName);
3081 static void DestroyGlobalParamSet(
const char* apSetName);
3083 static CINOSBaseAxisParamSet* GetGlobalParamSet(
const char* apSetName);
3085 static SINOSRampParam* GetGlobalRampParam(
const char* apSetName);
3089 virtual void SetPosType(uint32 auPosType)
3091 { m_uPosType = auPosType; };
3092 virtual void SetPosTime(uint32 auPosTime)
3094 { m_uPosTime = auPosTime; };
3095 virtual void SetPosTimeout(uint32 auPosTimeout)
3097 { m_uPosTimeout = auPosTimeout; };
3098 virtual void SetPosTolerance(real64 arPosTolerance)
3100 { m_rPosTolerance = arPosTolerance; };
3104 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3106 SINOSParamSetExtension* GetParamSetExtension(uint32 auExtensionId)
3109 return m_pRamp->GetParamSetExtension(auExtensionId);
3117 void EnableCache(uint32 auSize = 32);
3119 CINOSRampCache* EnableCache(CINOSRampCache* apCache);
3121 CINOSRampCache* DisableCache();
3123 void ReEnableCache();
3131 void SetCacheEpsilon(real64 arEpsilon);
3133 #ifdef INOS_MOVE_CACHE_SUPPORT
3134 void FlushMoveCache();
3140 #ifdef INOS_SAFETY_SUPPORT
3142 virtual void EnableSafetySupervision();
3144 virtual bool DisableSafetySupervision();
3146 virtual void ToggleSafetySupervision();
3151 virtual CINCOObject* GetRegister();
3158 virtual CINOSMapping* GetMapping()
3159 {
return m_pMapping;};
3161 uint32 GetMappingIndex()
3162 {
return m_uMappingIndex;};
3167 virtual uint32 RegisterHook(uintid& auHookId,
void* apHandler,
void* apObject,
3168 int32 aiOrder,
bool abEnabled=
true);
3171 virtual uint32 UnRegisterHook(uintid auHookId);
3173 virtual uint32 EnableHook(uintid auHookId);
3175 virtual uint32 DisableHook(uintid auHookId);
3177 virtual uint32 RegisterPostHook(uintid& auHookId,
void* apHandler,
void* apObject,
3178 int32 aiOrder,
bool abEnabled=
true);
3181 virtual uint32 UnRegisterPostHook(uintid auHookId);
3183 virtual uintid RegisterErrorHook(
void* apHandler,
void* apObject = 0);
3185 virtual void UnRegisterErrorHook(uintid auHookId);
3187 virtual uintid RegisterWarningHook(
void* apHandler,
void* apObject = 0);
3189 virtual void UnRegisterWarningHook(uintid auHookId);
3191 #ifdef INOS_SAFETY_SUPPORT
3192 virtual uintid RegisterSOSHook(
void* apHandler,
void* apObject = 0);
3194 virtual void UnRegisterSOSHook(uintid auHookId);
3198 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3200 virtual void RegisterExtension(IINOSBaseAxisExtension* apExtension);
3202 virtual void UnRegisterExtension(IINOSBaseAxisExtension* apExtension);
3207 virtual void EnableSync(real64 arPosition = REAL64(0.0),
3208 uint8 auMode = DF_INOS_AXIS_SYNC_NOADJ){};
3210 virtual void DisableSync(){};
3212 virtual void GetSyncCount(uint32& auSyncCount)
3213 { auSyncCount = 0;};
3215 virtual void SetSyncCount(uint32 auSyncCount){};
3242 real64 arNormPos = REAL64(0.0));
3248 {
return m_uNormMoveDir; };
3252 { m_uNormMoveDir = auNormMoveDir; };
3256 {
return m_uNormMode; };
3260 { m_uNormMode = auNormMode; };
3264 virtual void EnableCurLimit(){};
3266 virtual void DisableCurLimit(){};
3268 virtual bool GetCurLimit()
3270 {
return (m_uFlag & DF_INOS_AXIS_FLAG_CURL) != 0;};
3281 if (aeType == eActInput) {
3285 else if (aeType == eActActual) {
3309 {
return GetActual(eActOutput,
false);};
3313 virtual void SetMoveSafeMin(real64 arMin, real64 arFact1=REAL64(0.0),
3314 real64 arFact2=REAL64(0.0));
3317 virtual void ResetMoveSafeMin();
3322 void EnableSetupMode();
3324 void DisableSetupMode();
3326 virtual bool CheckSetupMode();
3329 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3330 void* GetCustomerSpecificData()
const {
return m_pCustomerSpecificData; }
3333 void SetCustomerSpecificData(
void* apData) { m_pCustomerSpecificData = apData; }
3344 {
return m_uToggleCnt; };
3347 { m_uToggleCnt=auSetVal; };
3349 #ifdef INOS_MOVEPATH_SUPPORT
3350 void SetMovePathActuals(
struct SINOSMovePathActual* apActuals);
3368 #ifdef INOS_SAFETY_SUPPORT
3370 uint32 GetSafetyUid()
3371 {
return m_uSafetyUid; };
3373 uint32 GetSafetyType()
3374 {
return m_uSafetyType; };
3376 ESafetyFunction GetSafetyFunction()
const {
3377 return m_eSafetyFunction;
3384 friend void _INI_0000_CINOSBaseAxis();
3385 friend void _INI_0400_CINOSBaseAxis();
3386 friend class CINOSRegisterBaseAxis;
3387 friend class CINOSMapping;
3389 friend void _INI_0400_INFO_DCM();
3390 friend class CINOSBaseAxisTest;
3391 friend class CINOSMovePathResourcePosAxis;
3392 friend class CINOSMcRobotCmdMove;
3393 friend class CINOSMcRobotCmdInit;
3394 friend class CINOSMcRobotCmdCalib;
3395 friend class CINOSMcTargetAxis;
3401 real64 iNormPosition(real64 arPosition, real64 arRange = REAL64(0.0),
bool abRound =
false)
const;
3405 virtual void SignalSync(
CINOSSync& apSync);
3407 virtual void SetError(uint32 auErrors);
3409 virtual void SetWarning(uint32 auWarnings);
3411#ifdef INOS_SAFETY_SUPPORT
3412 virtual void CallSOSHooks();
3415 bool Enter(uint32 auCommand,
CINOSSync* apSync = 0);
3422 {
return m_CmdLock.
GetOwner() != 0;};
3424 virtual void iInActivate();
3428 virtual void iEmergencyStop(
bool abLive =
false);
3430 virtual void iPowerEmergencyStop();
3432 virtual uint32 iCursor(
bool abPositive, uint32 auWaitTime,
3435 virtual uint32 iCursor(real64 arPosition, uint32 auWaitTime,
3438 real64 iGetAbsPosition(real64 arRelPosition);
3440 real64 iGetNrmAbsPosition(real64 arRelPosition,
SINOSRampParam* apParam =
nullptr,
bool abConsiderStop =
false);
3442 virtual void iSetCycleTime(real64 arCycleTime);
3444 virtual void iRegisterAxis();
3446 ICACHE
virtual void iPreMap();
3448 ICACHE
virtual void iPostMap();
3450 ICACHE
inline void iCheckRampLimits() {
3451 if (m_pRamp->GetError() & ER_INOS_RAMP_VMAX_REACHED) {
3452 SetError(ER_INOS_AXIS_RAMP_LIMIT);
3457 ICACHE
virtual void iPostWrite();
3459 void SetMapping(CINOSMapping* apMapping, uint32 auIndex)
3460 { m_pMapping = apMapping; m_uMappingIndex = auIndex;
3461 m_pRamp->SetMapping(apMapping, auIndex);};
3464 { m_pMapping = 0; m_uMappingIndex = 0;
3465 m_pRamp->ResetMapping();};
3467 virtual bool iInPosition(
bool abEarlyDone);
3469 virtual bool iInPosition();
3476 virtual void iAdjPreviousPositions(real64 arDifference);
3478 virtual void iSetActRampPosition(real64 arPosition);
3480 virtual bool IsCheckPositionRequired();
3482 void SetDefaultParamIfRequired();
3489 virtual void iResetTrajectory();
3492 void iCoreMismatchError();
3497 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3508 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3510 return pBus->AtomicGatherExit(auToken);
3524 uint32 eActivate(
bool abCheckPos,
bool abSimulatePos,
bool abSimulateOut,
3525 bool abSimulateAct);
3527 uint32 eInActivate();
3529 uint32 eRelax(uint32 auTimeMs);
3531 uint32 eMove(real64 arPosition);
3533 uint32 eMove(real64 arPosition,
char* apParam);
3535 uint32 eMoveTime(real64 arPosition, real64 arTime);
3537 uint32 eMoveTime(real64 arPosition, real64 arTime,
char* apParam);
3539 uint32 eMoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3541 uint32 eMoveApp(real64 arPosition, real64 aPositionVel, real64 arVelocity,
char* apParam);
3543 uint32 eMoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3545 uint32 eMoveDep(real64 arPosition, real64 aPositionVel, real64 arVelocity,
char* apParam);
3547 uint32 eSync(real64 arPosition);
3549 uint32 eSync(real64 arPosition,
char* apParam);
3551 uint32 eSync(real64 arPosition, real64 arSyncPosition);
3553 uint32 eSync(real64 arPosition, real64 arSyncPosition,
char* apParam);
3559 uint32 eUpdate(
const char* apParam);
3561 uint32 eEndless(
bool abPositive);
3563 uint32 eEndless(
bool abPositive,
const char* aparam);
3567 uint32 eStop(
const char* apParam);
3569 uint32 eStop(real64 arPosition);
3571 uint32 eStop(real64 arPosition,
const char* apParam);
3575 uint32 eBreak(
const char* apParam);
3577 uint32 eBreak(real64 arPosition);
3579 uint32 eBreak(real64 arPosition,
const char* apParam);
3581 uint32 eEmergencyStop();
3583 uint32 eEmergencyStop(uint32 auType, uint32 auDelay);
3587 uint32 eContinue(
const char* apParam);
3589 void eSetSlowMotion(real64 arSlowMotion);
3599 uint32 eAcceptError();
3601 uint32 eAcceptWarning();
3607 bool iTrack(
const char* apVarName, real64 arFactor, uint32 auFilterLength);
3609 uint32 _Track(
const char* apVarName, real64 arFactor, uint32 auFilter,
3611 void iTrackFollow();
3632 uint32 m_uErrorMask;
3634 uint32 m_uErrorHook;
3638 uint32 m_uWarningMask;
3640 uint32 m_uLimitViolation;
3647 const char* m_pName;
3649 const char* m_pType;
3655 CINCOObject* m_pRegister;
3657 CINCOObject* m_pCommand;
3659 CINCOObject* m_pTest;
3661 CINCOObject* m_pError;
3663 CINCOObject* m_pWarning;
3665 CINCOObject* m_pLimitViolation;
3667 CINCOObject* m_pFlag;
3669 CINCOObject* m_pState;
3673 CINOSLimitChecker* m_pLimitChecker;
3675 CINOSMapping* m_pMapping;
3677 uint32 m_uMappingIndex;
3707 uint32 m_uWaitTicks;
3709 uintid m_uPreMapHookId;
3711 uintid m_uPostMapHookId;
3713 uintid m_uPostWriteHookId;
3715 uintid m_uPreHookId;
3717 #ifdef INOS_SAFETY_SUPPORT
3718 bool m_bPreHookSafetyEnabled;
3721 uintid m_uPostHookId;
3723 SINOSBaseAxisHook* m_pErrorHooks;
3725 SINOSBaseAxisHook* m_pWarningHooks;
3727 TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pParamSets;
3731 static TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pGlobalParamSets;
3733 #ifdef INOS_MOVE_CACHE_SUPPORT
3734 CINOSMoveCache* m_pMoveCache;
3770 uint32 m_uToggleCnt;
3774 real64 m_rFeedPerTurn;
3776 real64 m_rFeedPerTurn_1;
3781 inosName32 m_cSelectedParamName;
3786 uint32 m_uEmergencyType;
3789 uint32 m_uEmergencyDelay;
3791 real64 m_rEmergencyPosition;
3793 uint16 m_uIntEmergencyType;
3795 uint16 m_uIntEmergencyDelay;
3803 uint32 m_uCurWaitTime;
3805 real64 m_rCurPosition;
3814 bool m_bSyncAvailable =
true;
3819 uint8 m_uNormMoveDir;
3830 uint16 m_uTrackValType;
3856 real64* m_pTrackBuf;
3858 tpGetter m_pTrackGet;
3860 real64 m_rTrackVmax;
3861 real64 m_rTrackAmax;
3862 real64 m_rTrackBmax;
3870 uint32 m_uPosTimeout;
3874 int32 m_iPosTimeout;
3876 real64 m_rPosTolerance;
3884 bool m_bPartnerMoving;
3894 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3900 void* m_pCustomerSpecificData;
3905 #ifdef INOS_SAFETY_SUPPORT
3909 uint8 m_uSafetyLevel;
3911 uint8 m_uSafetyType;
3913 ESafetyFunction m_eSafetyFunction;
3915 real64 m_rSafetyLimit;
3917 uint32 m_uSafetyDelay;
3919 int32 m_iSafetySupervisionStart;
3921 real64 m_rSafetySupervisionLimit;
3923 SINOSBaseAxisHook* m_pSOSHooks;
3926 friend class CINOSMcTargetSafety;
3928 void iSetupSafety();
3930 virtual bool iSetupSafetyRegistration();
3935 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3937 TINOSDoubleLinkedList<IINOSBaseAxisExtension>* m_pExtensions = 0;
3942 uint32 m_ueActivateCheckPos;
3944 uint32 m_ueActivateSimulatePos;
3946 uint32 m_ueActivateSimulateOut;
3948 uint32 m_ueActivateSimulateAct;
3950 real64 m_rePosition;
3952 real64 m_rePositionVel{};
3954 real64 m_reVelocity{};
3956 real64 m_reSyncPosition;
3958 inosName32 m_ceParam;
3960 char m_ceVariable[64];
3968 uint32 m_ueTrackDir;
3970 uint32 m_ueDirection;
3990 real64 m_reSlowMotion;
3993 #ifdef INOS_MOVEPATH_SUPPORT
3994 class CINCOMovePathActuals* m_pMovePathActuals;
3999 static uint32 m_uCount;
4001 static uint8 m_uCountCoreId;
4009 static char m_cStateCombo[494];
4022typedef CINOSBaseAxis *(*TCreateAxis)(
const char* apAxisName);
4023class CINOSRegisterBaseAxis
4026 friend void _INI_0000_CINOSRegisterBaseAxis();
4032 static CINOSRegisterBaseAxis* m_pFirst;
4034 CINOSRegisterBaseAxis* m_pNext;
4036 TCreateAxis m_pCreate;
4038 const char* m_pAxisType;
4040 const char* m_pDatabaseTable;
4046 CINOSRegisterBaseAxis(TCreateAxis apFunction,
const char* apAxisType,
4047 const char* apDatabaseTable);
4050 static CINOSBaseAxis* GetAxis(
const char* apAxisName,
const char* apAxisType);
4052 static void CreateAll();
4061#if defined(INOS_MULTICORE)
4062#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret) \
4063if ((m_uCoreId != DF_INOS_CORE_DEFAULT) && (::GetCoreId() != m_uCoreId)) { \
4064 if (!(GetFlag() & DF_INOS_AXIS_FLAG_IGNORE_CORE)) { \
4065 iCoreMismatchError(); \
4070#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret)
4079#ifdef INOS_SAFETY_SUPPORT
4080#define SAFETY_CHECK_SOS() \
4081 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4082 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4083 real64 rSlowMotion; GetActSlowMotion(rSlowMotion); \
4084 if (rSlowMotion != REAL64(0.0)) { \
4085 m_uError |= ER_INOS_AXIS_REJECTED_SOS; \
4086 INOS_ERROR("AXIS[%s]: Command rejected, axis in SOS (safe operating stop)", GetName());\
4092#define SAFETY_CHECK_SOS_SYNC(apSync) \
4093 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4094 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4095 real64 rSlowMotion; GetActSlowMotion(rSlowMotion); \
4096 if (rSlowMotion != REAL64(0.0)) { \
4097 m_uError |= ER_INOS_AXIS_REJECTED_SOS; \
4098 INOS_ERROR("AXIS[%s]: Command rejected, axis in SOS (safe operating stop)", GetName());\
4105#define SAFETY_IGNORE_IF_SOS() \
4106 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4107 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4112#define SAFETY_CHECK_SOS()
4113#define SAFETY_CHECK_SOS_SYNC(apSync)
4114#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:694
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:3278
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:755
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:2474
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:3745
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:3259
virtual void SetNormMoveDir(uint8 auNormMoveDir)
Definition cinosbaseaxis.h:3251
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:3741
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:3302
SINOSRampDataEx * m_pActRamp
actual commanded values from ramp geni
Definition cinosbaseaxis.h:3743
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:2793
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:3356
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:3308
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:3827
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:3889
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:3346
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:728
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:3305
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:3255
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:3359
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:2464
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:3343
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:3247
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:3747
virtual void GetRealPosition(real64 &arPosition, bool abMapped=true)
Gets the real axis position.
uint16 m_uCycleId
cycle id
Definition cinosbaseaxis.h:3892
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:3365
virtual real64 GetConstTime(real64 arPosition)
Calc time [sec] a Move(adPosition) needs for the constant part.
Definition cinosbaseramp.h:706
Definition cinosbaseramp.h:761
SINOSBaseRampTrqLimit * GetTrqLimitAcceleration()
get torque limit acceleration
Definition cinosbaseramp.h:1360
SINOSBaseRampTrqLimit * GetTrqLimitDeceleration()
get torque limit deceleration
Definition cinosbaseramp.h:1366
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:291
#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:399
real64 m_rPosTolerance
Default positioning tolerance [unit] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OP...
Definition cinosbaseaxis.h:520
inosName32 m_cEmergencyParam
Name of the speed set to be used for emergency stops.
Definition cinosbaseaxis.h:564
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:420
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:525
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:444
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:539
uint32 m_uTrackFilterLength
Defines the default tracking filter length.
Definition cinosbaseaxis.h:496
real64 m_rTrackFactor
Defines the default tracking factor.
Definition cinosbaseaxis.h:492
real64 m_rEmergencyPosition
Emergency stop position (used in emergency types DF_INOS_AXIS_EMGT_STOP_POSITION and DF_INOS_AXIS_EMG...
Definition cinosbaseaxis.h:488
real64 m_rTestPos2
Test mode position 2, see also m_rTestPos1 and m_uTestDelay.
Definition cinosbaseaxis.h:479
inosName64 m_cName
Axis name.
Definition cinosbaseaxis.h:402
real64 m_rTestPos1Max
Test mode position 1 maximum, see also m_rTestPos1.
Definition cinosbaseaxis.h:475
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:415
uint16 m_cShort
Gives the user the possibility to define a short one character based axis alias. This option is depre...
Definition cinosbaseaxis.h:530
uint8 m_uNormMoveDir
Used to define the default axis norm moving direction, e.g. move always in positive direction,...
Definition cinosbaseaxis.h:549
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:456
inosName64 m_cDescription
Axis description.
Definition cinosbaseaxis.h:577
uint32 m_uPosTime
Default positioning time [ms] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OPT.
Definition cinosbaseaxis.h:510
real64 m_rPowerPosition
Power failure position. The system tries to move to this position in case of a power failure.
Definition cinosbaseaxis.h:569
inosName32 m_cRampType
Trajectory generator name. Valid types are INOSJerkRamp, INOSJerkTrqRamp, INOSTrapezeRamp or a custom...
Definition cinosbaseaxis.h:408
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:560
uint8 m_uReserved
Reserved for future use.
Definition cinosbaseaxis.h:424
real64 m_rTestPos1
Test mode position 1, see also m_rTestPos2 and m_uTestDelay.
Definition cinosbaseaxis.h:471
uint32 m_uOptions
Axis options, see DF_INOS_BASE_AXIS_OPT_EARLY_DONE, DF_INOS_BASE_AXIS_OPT_AUTO_ACCEPT,...
Definition cinosbaseaxis.h:437
uint16 m_uEmergencyDelay
The required default delay [ms] if working with emergency type DF_INOS_AXIS_EMGT_STOP_INACTIVATE.
Definition cinosbaseaxis.h:461
uint32 m_uPosTimeout
Default positioning timeout [ms] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OPT.
Definition cinosbaseaxis.h:515
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:467
real64 m_rNormPos
Defines the default norming position, e.g. 360.0 for a turning axis.
Definition cinosbaseaxis.h:553
uint32 m_uPosType
Tells the system how an end of a move is defined. There are three different type available,...
Definition cinosbaseaxis.h:505
real64 m_rTestPos2Max
Test mode position 2 maximum, see also m_rTestPos2.
Definition cinosbaseaxis.h:483
inosName32 m_cPowerParam
Name of the speed set to be used for a power failure move.
Definition cinosbaseaxis.h:573
torque limitation
Definition cinosbaseramp.h:670
extended ramp data
Definition cinosbaseramp.h:626
ramp data
Definition cinosbaseramp.h:611
ramp parameters
Definition cinosbaseramp.h:512
time characteristics of a move
Definition cinosbaseramp.h:636