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 uint32 NrmActPosition(real64 arRange = REAL64(0.0),
bool abRound =
false);
2809 virtual void GetActVelocity(real64& arVelocity,
bool abMapped =
true);
2811 virtual void GetActAcceleration(real64& arAcceleration,
bool abRamp =
true);
2813 virtual void GetActJerk(real64& arJerk,
bool abRamp =
true);
2815 virtual uint32 AdjActTime(real64 arDelta);
2848 virtual void GetRealVelocity(real64& arVelocity);
2850 virtual void GetRealAcceleration(real64& arAcceleration);
2852 virtual void GetRealJerk(real64& arJerk);
2854 virtual void GetActPosError(real64& arPosError)
2855 { arPosError = REAL64(0.0);};
2857 virtual void GetActVelocityError(real64& arVelocityError,
bool abFiltered =
false)
2858 { arVelocityError = REAL64(0.0);};
2860 virtual void GetUnitsPerInc(
double& adUnits);
2862 virtual void GetIncsPerUnit(
double& adIncs);
2864 virtual void SetMinPosition(real64 arPosition);
2866 virtual void GetMinPosition(real64& apPosition)
const;
2868 virtual void SetMaxPosition(real64 arPosition);
2870 virtual void GetMaxPosition(real64& arPosition)
const;
2872 virtual bool CheckPosition(real64& arPosition,
bool abIgnoreMapping =
false,
SINOSRampParam* apParam =
nullptr);
2874 virtual void SetMinVelocity(real64 arVelocity);
2876 virtual void SetMaxVelocity(real64 arVelocity);
2878 virtual void SetMaxSetupVelocity(real64 arVelocity);
2880 virtual void SetMaxInitVelocity(real64 arVelocity);
2882 virtual void GetMinVelocity(real64& arVelocity);
2884 virtual void GetMaxVelocity(real64& arVelocity, uint32 auFlags = eMaxVelocityNone);
2886 virtual void GetTrqVelocity(real64& arVelocity);
2888 virtual void GetMaxSetupVelocity(real64& arVelocity);
2890 virtual void GetMaxInitVelocity(real64& arVelocity);
2892 virtual void SetMinAcceleration(real64 arAcceleration);
2894 virtual void SetMaxAcceleration(real64 arAcceleration);
2896 virtual void SetMaxAccelerationPull(real64 arAcceleration);
2898 virtual void GetMinAcceleration(real64& arAcceleration);
2900 virtual void GetMaxAcceleration(real64& arAcceleration);
2902 virtual void GetMaxAccelerationPull(real64& arAcceleration);
2904 virtual void GetTrqAcceleration(real64& arAcceleration);
2906 virtual void SetMinDeceleration(real64 arDeceleration);
2908 virtual void SetMaxDeceleration(real64 arDeceleration);
2910 virtual void GetMinDeceleration(real64& arDeceleration);
2912 virtual void GetMaxDeceleration(real64& arDeceleration);
2914 virtual void GetTrqDeceleration(real64& arDeceleration);
2916 virtual void SetMinCruiseleration(real64 arCruiseleration);
2918 virtual void SetMaxCruiseleration(real64 arCruiseleration);
2920 virtual void GetMinCruiseleration(real64& arCruiseleration);
2922 virtual void GetMaxCruiseleration(real64& arCruiseleration);
2924 virtual void SetMinJerk(real64 arJerk);
2926 virtual void SetMaxJerk(real64 arJerk);
2928 virtual void GetMinJerk(real64& arJerk);
2930 virtual void GetMaxJerk(real64& arJerk);
2932 virtual void GetEpsilon(real64& arEpsilon);
2934 virtual void GetCycleTime(real64& arCycleTime,
bool abOversampled=
false);
2936 virtual void GetCycleTimeUs(uint32& auCycleTime);
2938 virtual void GetCycleTimeNs(uint32& auCycleTime);
2940 virtual uint8 GetOversampling();
2942 virtual uint16 GetCycleNumber();
2944 virtual uint16 GetCycleId();
2946 virtual void UpdateCycleId(uint16 auCycleId);
2948 virtual uint8 GetBusId();
2950 virtual uint32 SetParam(
const char* apName, real64 arValue);
2952 virtual uint32 SetParam(
const char* apName, uint64 auValue)
2954 {
return defVarNotFound;};
2955 virtual uint32 GetParam(
const char* apName, real64& arResult);
2957 virtual uint32 GetParam(
const char* apName, uint64& auResult)
2959 {
return defVarNotFound;};
2960 virtual volatile real64* GetParamAdr(
const char* apName);
2962 void SetFlag(uint32 auFlag)
2965 void ClrFlag(uint32 auFlag)
2969 {
return m_uFlag & m_uFlagEnb;};
2972 { ClrFlag(DF_INOS_AXIS_FLAG_INCR);};
2975 { SetFlag(DF_INOS_AXIS_FLAG_INCR);};
2977 virtual uint32 SetState(uint32 auState);
2979 virtual int32 GetState();
2981 virtual int32 GetState(uint32& auRampState);
2983 const char* GetStateText()
const;
2985 virtual bool IsBusy()
const;
2996 virtual uint32 GetError(
bool abResolveExternal =
false);
2998 virtual uint64 GetErrorEx(
bool abResolveExternal =
false);
3000 virtual uint32 GetError(uint32& auRampError,
bool abResolveExternal =
false);
3002 virtual uint64 GetErrorEx(uint64& auRampError,
bool abResolveExternal =
false);
3004 virtual uint32 GetErrorHook() {
return m_uErrorHook; };
3006 virtual bool IsErrorFatal()
3009 virtual uint32 GetWarning(
bool abResolveExternal =
false);
3011 virtual uint64 GetWarningEx(
bool abResolveExternal =
false);
3013 virtual uint32 GetWarning(uint32& auRampWarning,
bool abResolveExternal =
false);
3015 virtual uint64 GetWarningEx(uint64& auRampWarning,
bool abResolveExternal =
false);
3017 virtual uint32 GetLimitViolation() {
return m_uLimitViolation;};
3019 virtual void SetErrorMask(uint32 auMask) { m_uErrorMask = auMask;};
3021 virtual void SetWarningMask(uint32 auMask) { m_uWarningMask = auMask;};
3023 virtual void SetLimitViolation(uint32 auLimitViolation)
3024 { INOSOr(&m_uLimitViolation, auLimitViolation);};
3026 virtual uint32 GetErrorMask() {
return m_uErrorMask;};
3028 virtual uint32 GetWarningMask() {
return m_uWarningMask;};
3030 virtual uint32 AcceptError();
3032 virtual uint32 AcceptError(uint32 auError);
3034 virtual uint32 AcceptError(uint32 auError, uint32 auRampError);
3036 virtual uint32 AcceptWarning();
3038 virtual uint32 AcceptWarning(uint32 auWarning);
3040 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning);
3042 virtual uint32 AcceptLimitViolation() { m_uLimitViolation = 0;
return 0;};
3046 virtual void eCreateParamSet(
const char* apSetName);
3049 virtual CINOSBaseAxisParamSet* CreateParamSet(
const char* apSetName);
3051 virtual void DestroyParamSet(
const char* apSetName);
3053 virtual bool SelectParamSet(
const char* apSetName);
3057 eFlgParamSetNone = 0x00000000,
3058 eFlgParamSetSearchGlobal = 0x00000001,
3059 eFlgParamSetIgnoreOverwrite = 0x00000002
3062 virtual CINOSBaseAxisParamSet* GetParamSet(
const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3064 virtual SINOSRampParam* GetRampParam(
const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3066 virtual bool GetRampParam(
const char* apSetName,
char* apResult, uint32 auSize,
3067 SINOSRampParam& aResult, uint32 auFlags = eFlgParamSetSearchGlobal);
3074 static void eCreateGlobalParamSet(
const char* apSetName);
3077 static CINOSBaseAxisParamSet* CreateGlobalParamSet(
const char* apSetName);
3079 static void DestroyGlobalParamSet(
const char* apSetName);
3081 static CINOSBaseAxisParamSet* GetGlobalParamSet(
const char* apSetName);
3083 static SINOSRampParam* GetGlobalRampParam(
const char* apSetName);
3087 virtual void SetPosType(uint32 auPosType)
3089 { m_uPosType = auPosType; };
3090 virtual void SetPosTime(uint32 auPosTime)
3092 { m_uPosTime = auPosTime; };
3093 virtual void SetPosTimeout(uint32 auPosTimeout)
3095 { m_uPosTimeout = auPosTimeout; };
3096 virtual void SetPosTolerance(real64 arPosTolerance)
3098 { m_rPosTolerance = arPosTolerance; };
3102 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3104 SINOSParamSetExtension* GetParamSetExtension(uint32 auExtensionId)
3107 return m_pRamp->GetParamSetExtension(auExtensionId);
3115 void EnableCache(uint32 auSize = 32);
3117 CINOSRampCache* EnableCache(CINOSRampCache* apCache);
3119 CINOSRampCache* DisableCache();
3121 void ReEnableCache();
3129 void SetCacheEpsilon(real64 arEpsilon);
3131 #ifdef INOS_MOVE_CACHE_SUPPORT
3132 void FlushMoveCache();
3138 #ifdef INOS_SAFETY_SUPPORT
3140 virtual void EnableSafetySupervision();
3142 virtual bool DisableSafetySupervision();
3144 virtual void ToggleSafetySupervision();
3149 virtual CINCOObject* GetRegister();
3156 virtual CINOSMapping* GetMapping()
3157 {
return m_pMapping;};
3159 uint32 GetMappingIndex()
3160 {
return m_uMappingIndex;};
3165 virtual uint32 RegisterHook(uintid& auHookId,
void* apHandler,
void* apObject,
3166 int32 aiOrder,
bool abEnabled=
true);
3169 virtual uint32 UnRegisterHook(uintid auHookId);
3171 virtual uint32 EnableHook(uintid auHookId);
3173 virtual uint32 DisableHook(uintid auHookId);
3175 virtual uint32 RegisterPostHook(uintid& auHookId,
void* apHandler,
void* apObject,
3176 int32 aiOrder,
bool abEnabled=
true);
3179 virtual uint32 UnRegisterPostHook(uintid auHookId);
3181 virtual uintid RegisterErrorHook(
void* apHandler,
void* apObject = 0);
3183 virtual void UnRegisterErrorHook(uintid auHookId);
3185 virtual uintid RegisterWarningHook(
void* apHandler,
void* apObject = 0);
3187 virtual void UnRegisterWarningHook(uintid auHookId);
3189 #ifdef INOS_SAFETY_SUPPORT
3190 virtual uintid RegisterSOSHook(
void* apHandler,
void* apObject = 0);
3192 virtual void UnRegisterSOSHook(uintid auHookId);
3196 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3198 virtual void RegisterExtension(IINOSBaseAxisExtension* apExtension);
3200 virtual void UnRegisterExtension(IINOSBaseAxisExtension* apExtension);
3205 virtual void EnableSync(real64 arPosition = REAL64(0.0),
3206 uint8 auMode = DF_INOS_AXIS_SYNC_NOADJ){};
3208 virtual void DisableSync(){};
3210 virtual void GetSyncCount(uint32& auSyncCount)
3211 { auSyncCount = 0;};
3213 virtual void SetSyncCount(uint32 auSyncCount){};
3240 real64 arNormPos = REAL64(0.0));
3246 {
return m_uNormMoveDir; };
3250 { m_uNormMoveDir = auNormMoveDir; };
3254 {
return m_uNormMode; };
3258 { m_uNormMode = auNormMode; };
3262 virtual void EnableCurLimit(){};
3264 virtual void DisableCurLimit(){};
3266 virtual bool GetCurLimit()
3268 {
return (m_uFlag & DF_INOS_AXIS_FLAG_CURL) != 0;};
3279 if (aeType == eActInput) {
3283 else if (aeType == eActActual) {
3307 {
return GetActual(eActOutput,
false);};
3311 virtual void SetMoveSafeMin(real64 arMin, real64 arFact1=REAL64(0.0),
3312 real64 arFact2=REAL64(0.0));
3315 virtual void ResetMoveSafeMin();
3320 void EnableSetupMode();
3322 void DisableSetupMode();
3324 virtual bool CheckSetupMode();
3327 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3328 void* GetCustomerSpecificData()
const {
return m_pCustomerSpecificData; }
3331 void SetCustomerSpecificData(
void* apData) { m_pCustomerSpecificData = apData; }
3342 {
return m_uToggleCnt; };
3345 { m_uToggleCnt=auSetVal; };
3347 #ifdef INOS_MOVEPATH_SUPPORT
3366 #ifdef INOS_SAFETY_SUPPORT
3368 uint32 GetSafetyUid()
3369 {
return m_uSafetyUid; };
3371 uint32 GetSafetyType()
3372 {
return m_uSafetyType; };
3374 ESafetyFunction GetSafetyFunction()
const {
3375 return m_eSafetyFunction;
3382 friend void _INI_0000_CINOSBaseAxis();
3383 friend void _INI_0400_CINOSBaseAxis();
3384 friend class CINOSRegisterBaseAxis;
3385 friend class CINOSMapping;
3387 friend void _INI_0400_INFO_DCM();
3388 friend class CINOSBaseAxisTest;
3389 friend class CINOSMovePathResourcePosAxis;
3390 friend class CINOSMcRobotCmdMove;
3391 friend class CINOSMcRobotCmdInit;
3392 friend class CINOSMcRobotCmdCalib;
3393 friend class CINOSMcTargetAxis;
3399 real64 iNormPosition(real64 arPosition, real64 arRange = REAL64(0.0),
bool abRound =
false)
const;
3403 virtual void SignalSync(
CINOSSync& apSync);
3405 virtual void SetError(uint32 auErrors);
3407 virtual void SetWarning(uint32 auWarnings);
3409#ifdef INOS_SAFETY_SUPPORT
3410 virtual void CallSOSHooks();
3413 bool Enter(uint32 auCommand,
CINOSSync* apSync = 0);
3420 {
return m_CmdLock.
GetOwner() != 0;};
3422 virtual void iInActivate();
3426 virtual void iEmergencyStop(
bool abLive =
false);
3428 virtual void iPowerEmergencyStop();
3430 virtual uint32 iCursor(
bool abPositive, uint32 auWaitTime,
3433 virtual uint32 iCursor(real64 arPosition, uint32 auWaitTime,
3436 real64 iGetAbsPosition(real64 arRelPosition);
3438 real64 iGetNrmAbsPosition(real64 arRelPosition,
SINOSRampParam* apParam =
nullptr,
bool abConsiderStop =
false);
3440 virtual void iSetCycleTime(real64 arCycleTime);
3442 virtual void iRegisterAxis();
3444 ICACHE
virtual void iPreMap();
3446 ICACHE
virtual void iPostMap();
3448 ICACHE
inline void iCheckRampLimits() {
3449 if (m_pRamp->GetError() & ER_INOS_RAMP_VMAX_REACHED) {
3450 SetError(ER_INOS_AXIS_RAMP_LIMIT);
3455 ICACHE
virtual void iPostWrite();
3457 void SetMapping(CINOSMapping* apMapping, uint32 auIndex)
3458 { m_pMapping = apMapping; m_uMappingIndex = auIndex;
3459 m_pRamp->SetMapping(apMapping, auIndex);};
3462 { m_pMapping = 0; m_uMappingIndex = 0;
3463 m_pRamp->ResetMapping();};
3465 virtual bool iInPosition(
bool abEarlyDone);
3467 virtual bool iInPosition();
3474 virtual void iAdjPreviousPositions(real64 arDifference);
3476 virtual void iSetActRampPosition(real64 arPosition);
3478 virtual bool IsCheckPositionRequired();
3480 void SetDefaultParamIfRequired();
3487 virtual void iResetTrajectory();
3490 void iCoreMismatchError();
3495 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3506 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3508 return pBus->AtomicGatherExit(auToken);
3522 uint32 eActivate(
bool abCheckPos,
bool abSimulatePos,
bool abSimulateOut,
3523 bool abSimulateAct);
3525 uint32 eInActivate();
3527 uint32 eRelax(uint32 auTimeMs);
3529 uint32 eMove(real64 arPosition);
3531 uint32 eMove(real64 arPosition,
char* apParam);
3533 uint32 eMoveTime(real64 arPosition, real64 arTime);
3535 uint32 eMoveTime(real64 arPosition, real64 arTime,
char* apParam);
3537 uint32 eMoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3539 uint32 eMoveApp(real64 arPosition, real64 aPositionVel, real64 arVelocity,
char* apParam);
3541 uint32 eMoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3543 uint32 eMoveDep(real64 arPosition, real64 aPositionVel, real64 arVelocity,
char* apParam);
3545 uint32 eSync(real64 arPosition);
3547 uint32 eSync(real64 arPosition,
char* apParam);
3549 uint32 eSync(real64 arPosition, real64 arSyncPosition);
3551 uint32 eSync(real64 arPosition, real64 arSyncPosition,
char* apParam);
3557 uint32 eUpdate(
const char* apParam);
3559 uint32 eEndless(
bool abPositive);
3561 uint32 eEndless(
bool abPositive,
const char* aparam);
3565 uint32 eStop(
const char* apParam);
3567 uint32 eStop(real64 arPosition);
3569 uint32 eStop(real64 arPosition,
const char* apParam);
3573 uint32 eBreak(
const char* apParam);
3575 uint32 eBreak(real64 arPosition);
3577 uint32 eBreak(real64 arPosition,
const char* apParam);
3579 uint32 eEmergencyStop();
3581 uint32 eEmergencyStop(uint32 auType, uint32 auDelay);
3585 uint32 eContinue(
const char* apParam);
3587 void eSetSlowMotion(real64 arSlowMotion);
3597 uint32 eAcceptError();
3599 uint32 eAcceptWarning();
3605 bool iTrack(
const char* apVarName, real64 arFactor, uint32 auFilterLength);
3607 uint32 _Track(
const char* apVarName, real64 arFactor, uint32 auFilter,
3609 void iTrackFollow();
3630 uint32 m_uErrorMask;
3632 uint32 m_uErrorHook;
3636 uint32 m_uWarningMask;
3638 uint32 m_uLimitViolation;
3645 const char* m_pName;
3647 const char* m_pType;
3653 CINCOObject* m_pRegister;
3655 CINCOObject* m_pCommand;
3657 CINCOObject* m_pTest;
3659 CINCOObject* m_pError;
3661 CINCOObject* m_pWarning;
3663 CINCOObject* m_pLimitViolation;
3665 CINCOObject* m_pFlag;
3667 CINCOObject* m_pState;
3671 CINOSLimitChecker* m_pLimitChecker;
3673 CINOSMapping* m_pMapping;
3675 uint32 m_uMappingIndex;
3705 uint32 m_uWaitTicks;
3707 uintid m_uPreMapHookId;
3709 uintid m_uPostMapHookId;
3711 uintid m_uPostWriteHookId;
3713 uintid m_uPreHookId;
3715 #ifdef INOS_SAFETY_SUPPORT
3716 bool m_bPreHookSafetyEnabled;
3719 uintid m_uPostHookId;
3721 SINOSBaseAxisHook* m_pErrorHooks;
3723 SINOSBaseAxisHook* m_pWarningHooks;
3725 TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pParamSets;
3729 static TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pGlobalParamSets;
3731 #ifdef INOS_MOVE_CACHE_SUPPORT
3732 CINOSMoveCache* m_pMoveCache;
3768 uint32 m_uToggleCnt;
3772 real64 m_rFeedPerTurn;
3774 real64 m_rFeedPerTurn_1;
3779 inosName32 m_cSelectedParamName;
3784 uint32 m_uEmergencyType;
3787 uint32 m_uEmergencyDelay;
3789 real64 m_rEmergencyPosition;
3791 uint16 m_uIntEmergencyType;
3793 uint16 m_uIntEmergencyDelay;
3801 uint32 m_uCurWaitTime;
3803 real64 m_rCurPosition;
3812 bool m_bSyncAvailable =
true;
3817 uint8 m_uNormMoveDir;
3828 uint16 m_uTrackValType;
3854 real64* m_pTrackBuf;
3856 tpGetter m_pTrackGet;
3858 real64 m_rTrackVmax;
3859 real64 m_rTrackAmax;
3860 real64 m_rTrackBmax;
3868 uint32 m_uPosTimeout;
3872 int32 m_iPosTimeout;
3874 real64 m_rPosTolerance;
3882 bool m_bPartnerMoving;
3892 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3898 void* m_pCustomerSpecificData;
3903 #ifdef INOS_SAFETY_SUPPORT
3907 uint8 m_uSafetyLevel;
3909 uint8 m_uSafetyType;
3911 ESafetyFunction m_eSafetyFunction;
3913 real64 m_rSafetyLimit;
3915 uint32 m_uSafetyDelay;
3917 int32 m_iSafetySupervisionStart;
3919 real64 m_rSafetySupervisionLimit;
3921 SINOSBaseAxisHook* m_pSOSHooks;
3924 friend class CINOSMcTargetSafety;
3926 void iSetupSafety();
3928 virtual bool iSetupSafetyRegistration();
3933 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3935 TINOSDoubleLinkedList<IINOSBaseAxisExtension>* m_pExtensions = 0;
3940 uint32 m_ueActivateCheckPos;
3942 uint32 m_ueActivateSimulatePos;
3944 uint32 m_ueActivateSimulateOut;
3946 uint32 m_ueActivateSimulateAct;
3948 real64 m_rePosition;
3950 real64 m_rePositionVel{};
3952 real64 m_reVelocity{};
3954 real64 m_reSyncPosition;
3956 inosName32 m_ceParam;
3958 char m_ceVariable[64];
3966 uint32 m_ueTrackDir;
3968 uint32 m_ueDirection;
3988 real64 m_reSlowMotion;
3991 #ifdef INOS_MOVEPATH_SUPPORT
3992 class CINCOMovePathActuals* m_pMovePathActuals;
3997 static uint32 m_uCount;
3999 static uint8 m_uCountCoreId;
4007 static char m_cStateCombo[494];
4020typedef CINOSBaseAxis *(*TCreateAxis)(
const char* apAxisName);
4021class CINOSRegisterBaseAxis
4024 friend void _INI_0000_CINOSRegisterBaseAxis();
4030 static CINOSRegisterBaseAxis* m_pFirst;
4032 CINOSRegisterBaseAxis* m_pNext;
4034 TCreateAxis m_pCreate;
4036 const char* m_pAxisType;
4038 const char* m_pDatabaseTable;
4044 CINOSRegisterBaseAxis(TCreateAxis apFunction,
const char* apAxisType,
4045 const char* apDatabaseTable);
4048 static CINOSBaseAxis* GetAxis(
const char* apAxisName,
const char* apAxisType);
4050 static void CreateAll();
4059#if defined(INOS_MULTICORE)
4060#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret) \
4061if ((m_uCoreId != DF_INOS_CORE_DEFAULT) && (::GetCoreId() != m_uCoreId)) { \
4062 if (!(GetFlag() & DF_INOS_AXIS_FLAG_IGNORE_CORE)) { \
4063 iCoreMismatchError(); \
4068#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret)
4077#ifdef INOS_SAFETY_SUPPORT
4078#define SAFETY_CHECK_SOS() \
4079 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4080 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4081 real64 rSlowMotion; GetActSlowMotion(rSlowMotion); \
4082 if (rSlowMotion != REAL64(0.0)) { \
4083 m_uError |= ER_INOS_AXIS_REJECTED_SOS; \
4084 INOS_ERROR("AXIS[%s]: Command rejected, axis in SOS (safe operating stop)", GetName());\
4090#define SAFETY_CHECK_SOS_SYNC(apSync) \
4091 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4092 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4093 real64 rSlowMotion; GetActSlowMotion(rSlowMotion); \
4094 if (rSlowMotion != REAL64(0.0)) { \
4095 m_uError |= ER_INOS_AXIS_REJECTED_SOS; \
4096 INOS_ERROR("AXIS[%s]: Command rejected, axis in SOS (safe operating stop)", GetName());\
4103#define SAFETY_IGNORE_IF_SOS() \
4104 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4105 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4110#define SAFETY_CHECK_SOS()
4111#define SAFETY_CHECK_SOS_SYNC(apSync)
4112#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:3276
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:3743
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:3257
virtual void SetNormMoveDir(uint8 auNormMoveDir)
Definition cinosbaseaxis.h:3249
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:3739
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:3300
SINOSRampDataEx * m_pActRamp
actual commanded values from ramp geni
Definition cinosbaseaxis.h:3741
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:3354
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:3306
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:3825
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:3887
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:3344
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:3303
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:3253
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:3357
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:3341
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:3245
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:3745
virtual void GetRealPosition(real64 &arPosition, bool abMapped=true)
Gets the real axis position.
uint16 m_uCycleId
cycle id
Definition cinosbaseaxis.h:3890
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:3363
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:1349
SINOSBaseRampTrqLimit * GetTrqLimitDeceleration()
get torque limit deceleration
Definition cinosbaseramp.h:1355
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: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: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