INOS
cinosbaseaxis.h
Go to the documentation of this file.
1//******************************************************************************
27//******************************************************************************
28
29#ifndef INC_CINOSBASEAXIS_H
30#define INC_CINOSBASEAXIS_H
31//
32//------------------------------------------------------------------------------
33// defines
34//------------------------------------------------------------------------------
35//
36#define DF_INOS_BASE_AXIS_DBT "INOS-BASE-AXIS" // db table name
37//
38#if defined(INOS_64)
39#define DF_INOS_MAX_AXIS 512 // max. number of allowed axis
40#else
41#define DF_INOS_MAX_AXIS 256 // max. number of allowed axis
42#endif
43//
44// --- axis states -------------------------------------------------------------
45//
46#define DF_INOS_AXIS_STATE_DISABLED -1 // static state 'disabled'
47#define DF_INOS_AXIS_STATE_UNDEFINED 0 // static state 'undefined'
48#define DF_INOS_AXIS_STATE_OFF 0 // static state 'off', same as 'undefined'
49#define DF_INOS_AXIS_STATE_ACTIVE 1 // static state 'active'
50#define DF_INOS_AXIS_STATE_READY 2 // static state 'ready'
51#define DF_INOS_AXIS_STATE_PEACE 2 // static state 'ready'
52#define DF_INOS_AXIS_STATE_PULL 3 // static state 'pull'
53#define DF_INOS_AXIS_STATE_BREAK 4 // static state 'break'
54#define DF_INOS_AXIS_STATE_COUPLED 5 // static state 'coupled'
55#define DF_INOS_AXIS_STATE_FORCE 6 // static state 'force'
56#define DF_INOS_AXIS_STATE_ACTIVATING 8 // dynamic state 'activating'
57#define DF_INOS_AXIS_STATE_INACTIVATING 9 // dynamic state 'inactivating'
58#define DF_INOS_AXIS_STATE_SYNCING 10 // dynamic state 'syncing'
59#define DF_INOS_AXIS_STATE_MOVING 11 // dynamic state 'moving'
60#define DF_INOS_AXIS_STATE_ENDLESS 12 // dynamic state 'endless'
61#define DF_INOS_AXIS_STATE_TOGGLE 13 // dynamic state 'toggle'
62#define DF_INOS_AXIS_STATE_STOPPING 14 // dynamic state 'stopping'
63#define DF_INOS_AXIS_STATE_BREAKING 15 // dynamic state 'breaking'
64#define DF_INOS_AXIS_STATE_EMSTOPPING 16 // dynamic state 'emergency stopping'
65#define DF_INOS_AXIS_STATE_MOVINGEX 17 // dynamic state 'moving ex'
66#define DF_INOS_AXIS_STATE_CURSOR 18 // dynamic state 'cursor'
67#define DF_INOS_AXIS_STATE_TRACK 19 // dynamic state 'track'
68#define DF_INOS_AXIS_STATE_MOVINGAPP 20 // dynamic state 'movingapp'
69#define DF_INOS_AXIS_STATE_MOVINGDEP 21 // dynamic state 'movingapp'
70#define DF_INOS_AXIS_STATE_RELAXING 22 // dynamic state 'relaxing'
71#define DF_INOS_AXIS_STATE_UMOVE 23 // dynamic state 'micromove' => see also DF_INOS_CONTROL_SUBSTATE_ACTIVE_UMOVE
72#define DF_INOS_AXIS_STATE_SEARCHING 24 // dynamic state 'searching touch down'
73#define DF_INOS_AXIS_STATE_DEPARTING 25 // dynamic state 'departing from touch down'
74#define DF_INOS_AXIS_STATES 27 // number of states
75//
76// --- axis substates ----------------------------------------------------------
77//
78#define DF_INOS_AXIS_SUBSTATE_TRACK_FOLLOW 0 // track mode 'follow'
79#define DF_INOS_AXIS_SUBSTATE_TRACK_KEEP 1 // track mode 'keep'
80//
81// --- axis commands -----------------------------------------------------------
82//
83#define DF_INOS_AXIS_CMD_ACTIVATE 0x00000001 // command 'Activate'
84#define DF_INOS_AXIS_CMD_INACTIVATE 0x00000002 // command 'InActivate'
85#define DF_INOS_AXIS_CMD_SYNC 0x00000004 // command 'Sync'
86#define DF_INOS_AXIS_CMD_MOVE 0x00000008 // command 'Move'
87#define DF_INOS_AXIS_CMD_ENDLESS 0x00000010 // command 'Endless'
88#define DF_INOS_AXIS_CMD_STOP 0x00000020 // command 'Stop'
89#define DF_INOS_AXIS_CMD_BREAK 0x00000040 // command 'Break'
90#define DF_INOS_AXIS_CMD_CONTINUE 0x00000080 // command 'Continue'
91#define DF_INOS_AXIS_CMD_EMSTOP 0x00000100 // command 'EmergencyStop'
92#define DF_INOS_AXIS_CMD_UPDATE 0x00000200 // command 'Update'
93#define DF_INOS_AXIS_CMD_TOGGLE 0x00000400 // command 'Toggle'
94#define DF_INOS_AXIS_CMD_MOVEEX 0x00002000 // command 'MoveEx'
95#define DF_INOS_AXIS_CMD_HANDLE_CACHE 0x00004000 // commands 'Enable,Disable,FlushCache'
96#define DF_INOS_AXIS_CMD_CURSOR 0x00008000 // command 'Cursor'
97#define DF_INOS_AXIS_CMD_TRACK 0x00010000 // command 'Track'
98#define DF_INOS_AXIS_CMD_MOVESEG 0x00020000 // command 'Seg...'
99#define DF_INOS_AXIS_CMD_COUPLING 0x00040000 // command 'couple'
100#define DF_INOS_AXIS_CMD_PULL 0x00080000 // command 'pull'
101#define DF_INOS_AXIS_CMD_MOVEAPP 0x00100000 // command 'MoveApp'
102#define DF_INOS_AXIS_CMD_MOVEDEP 0x00200000 // command 'MoveDep'
103#define DF_INOS_AXIS_CMD_ENABLE 0x00400000 // command 'Enable'
104#define DF_INOS_AXIS_CMD_DISABLE 0x00800000 // command 'Disable'
105#define DF_INOS_AXIS_CMD_COMMUTATE 0x01000000 // command 'Commutate'
106#define DF_INOS_AXIS_CMD_MOVETIME 0x02000000 // command 'MoveTime'
107#define DF_INOS_AXIS_CMD_RELAX 0x04000000 // command 'Relax'
108//
109// --- axis errors -------------------------------------------------------------
110//
111#define ER_INOS_AXIS_REJECTED 0x00000001 // command rejected
112#define ER_INOS_AXIS_FAILED 0x00000002 // command failed
113#define ER_INOS_AXIS_POS_WINDOW 0x00000004 // positioning window failed
114#define ER_INOS_AXIS_CPD_ERROR 0x00000008 // coupled axis on error
115#define ER_INOS_AXIS_CPD_DELTA 0x00000010 // coupling max delta reached
116#define ER_INOS_AXIS_CPD_CORR 0x00000020 // coupling max correction reached
117#define ER_INOS_AXIS_COM_FAILED 0x00000040 // communication to foreign controller failed
118#define ER_INOS_AXIS_RAMP_LIMIT 0x00000080 // ramp limits exceeded
119#define ER_INOS_AXIS_REJECTED_SOS 0x00000100// command SOS (safe operating stop) rejected
120#define ER_INOS_AXIS_PULL_UNDERRUN 0x00000200// pull underrun detected
121#define ER_INOS_AXIS_SLS_VIOLATION 0x00000400// emergency stop due to upcoming SLS violation
122#define ER_INOS_AXIS_SOS_VIOLATION 0x00000800// emergency stop due to upcoming SOS violation
123#define ER_INOS_AXIS_CORE_MISMATCH 0x00001000// core mismatch
124#define ER_INOS_AXIS_FORCE_CONTROL 0x00002000 // force control error pending
125#define ER_INOS_AXIS_CONTROL 0x00004000 // control error pending
126#define ER_INOS_AXIS_RAMP 0x00008000 // ramp error pending
127#define ER_INOS_AXIS_HOOK 0x00010000 // registering hook failed
128//
129// --- axis warnings -----------------------------------------------------------
130//
131#define WR_INOS_AXIS_RAMP 0x00008000 // ramp warning pending
132#define WR_INOS_AXIS_CONTROL 0x00004000 // control warning pending
133#define WR_INOS_AXIS_IGNORED 0x00000001 // command ignored
134#define WR_INOS_AXIS_CPD_CORR_IGNORED 0x00000002 // coupling correction ignored
135#define WR_INOS_AXIS_COUPLED 0x00000008 // coupled axis has warning
136#define WR_INOS_AXIS_EME_STOPPED 0x00000010 // the axis has been emergency stopped
137//
138// --- axis flags --------------------------------------------------------------
139//
140#define DF_INOS_AXIS_FLAG_ZERO 0x00000001 // zero position after move
141#define DF_INOS_AXIS_FLAG_NORM 0x00000002 // norm position after move
142#define DF_INOS_AXIS_FLAG_INCR 0x00000004 // incremental moves
143#define DF_INOS_AXIS_FLAG_SYNC 0x00000008 // live sync position
144#define DF_INOS_AXIS_FLAG_EDONE 0x00000010 // early done
145#define DF_INOS_AXIS_FLAG_AACC 0x00000020 // auto accept errors on activate
146#define DF_INOS_AXIS_FLAG_CURL 0x00000040 // current limitation
147#define DF_INOS_AXIS_FLAG_LSNCD 0x00000080 // limits only checked if synched
148#define DF_INOS_AXIS_FLAG_DISMP 0x00000100 // mapping permanently disabled
149#define DF_INOS_AXIS_FLAG_RNDNR 0x00000200 // axis has random number
150#define DF_INOS_AXIS_FLAG_PWCL 0x00000400 // limits are checked in post write
151#define DF_INOS_AXIS_FLAG_DSAP 0x00000800 // disable SetAct/SetRealPosition in case of synched
152#define DF_INOS_AXIS_FLAG_SAFETY 0x00001000 // powered by Indel safety
153#define DF_INOS_AXIS_FLAG_ESPULL 0x00002000 // emergency stop pull in case of an axis error
154#define DF_INOS_AXIS_FLAG_IGNORE_CORE 0x00004000 // ignore core mismatch failure (should only be used in desperate situations)
155#define DF_INOS_AXIS_FLAG_INPUT_SHAPING_ACTIVE 0x20000000 // temporary input shaping active
156#define DF_INOS_AXIS_FLAG_WINDOW 0x40000000 // temporary position window active
157#define DF_INOS_AXIS_FLAG_SNCD 0x80000000 // axis is synced
158//
159// --- axis sync modes ---------------------------------------------------------
160//
161#define DF_INOS_AXIS_SYNC_NOADJ 0x00 // live sync with no move adjust
162#define DF_INOS_AXIS_SYNC_ADJUST 0x01 // live sync with move adjust
163#define DF_INOS_AXIS_SYNC_STOP 0x02 // live sync with stop at sync
164//
165// --- axis norm modes ---------------------------------------------------------
166//
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
183//
184// --- axis moving direction in norm mode --------------------------------------
185//
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
210//
211// --- axis safety types -------------------------------------------------------
212//
216#define DF_INOS_AXIS_SAFETY_EMGSTOP 0x00
221#define DF_INOS_AXIS_SAFETY_AUTO 0x01
224#define DF_INOS_AXIS_SAFETY_NONE 0x02
225//
226// --- axis emergency types ----------------------------------------------------
227//
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
258//
259// --- emergency stop special values -------------------------------------------
260//
261#define DF_PRECONFIGURED_EME_STOP_TYPE 0xffff // preconfigured (by dt2 or via inco variable) emergency stop type
265#define DF_PRECONFIGURED_EME_STOP_POS_OR_STOP 0xfffe
266#define DF_PRECONFIGURED_EME_STOP_DELAY 0xffff // preconfigured (by dt2 or via inco variable) emergency stop delay
267//
268// --- positioning type --------------------------------------------------------
269//
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
284//
285// --- axis options ------------------------------------------------------------
286//
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
340
341#if defined(INOS_MOTORCONFIG_LOAD_SUPPORT)
348#define DF_INOS_BASE_AXIS_OPT_CPF_UNIQUE 0x00000800
349#endif
350
354#define DF_INOS_BASE_AXIS_OPT_EMERGENCY_EXTERNAL 0x00001000
355
356// --- axis limit errors -------------------------------------------------------------
357//
358#define DF_INOS_BASE_AXIS_LIMIT_S 0x00000001 // position limit of cmdS exceeded
359#define DF_INOS_BASE_AXIS_LIMIT_V_OF_S 0x00000002 // velocity limit of cmdS exceeded
360#define DF_INOS_BASE_AXIS_LIMIT_A_OF_S 0x00000004 // accelleration ity limit of cmdS exceeded
361#define DF_INOS_BASE_AXIS_LIMIT_B_OF_S 0x00000008 // de-accelleration ity limit of cmdS exceeded
362#define DF_INOS_BASE_AXIS_LIMIT_S_V_CONS 0x00000010 // consistency error between S and V
363#define DF_INOS_BASE_AXIS_LIMIT_V 0x00000020 // velocity limit of cmdV exceeded
364#define DF_INOS_BASE_AXIS_LIMIT_A_OF_V 0x00000040 // accelleration ity limit of cmdV exceeded
365#define DF_INOS_BASE_AXIS_LIMIT_B_OF_V 0x00000080 // de-accelleration ity limit of cmdV exceeded
366#define DF_INOS_BASE_AXIS_LIMIT_A 0x00000100 // accelleration ity limit of cmdA exceeded
367#define DF_INOS_BASE_AXIS_LIMIT_B 0x00000200 // de-accelleration ity limit of cmdA exceeded
368#define DF_INOS_BASE_AXIS_LIMIT_BRAKE 0x00000400 // axis cannot stop within bordes
369#define DF_INOS_BASE_AXIS_LIMIT_J_OF_S 0x00000800 // jerk limit of cmdS exceeded
370#define DF_INOS_BASE_AXIS_LIMIT_J_OF_V 0x00001000 // jerk limit of cmdV exceeded
371#define DF_INOS_BASE_AXIS_LIMIT_J_OF_A 0x00002000 // jerk limit of cmdA exceeded
372#define DF_INOS_BASE_AXIS_LIMIT_J 0x00004000 // jerk limit of cmdJ exceeded
373
374//
375//------------------------------------------------------------------------------
376// includes
377//------------------------------------------------------------------------------
378//
379// system
380#include <cinosbus.h>
381#include <cinosbaseramp.h>
382#if defined(INOS_AXIS_EXTENSION_SUPPORT)
383#include <cinosbaseaxisextension.h>
384#endif
385//
386// C++
387//
388// project
389//
390//------------------------------------------------------------------------------
391//--- structures ---------------------------------------------------------------
392//------------------------------------------------------------------------------
393
399{
402 inosName64 m_cName;
403
408 inosName32 m_cRampType;
409
415 uint16 m_uNumber;
416
421
425
438
445
457
462
468
472
476
480
484
489
493
497
506
511
516
521
526
530 uint16 m_cShort;
531
540
550
554
560 inosName32 m_cDefaultParam;
561
565
570
573 inosName32 m_cPowerParam;
574
577 inosName64 m_cDescription;
578
579 // constructor
581};
582
583//------------------------------------------------------------------------------
584// forward declarations
585//------------------------------------------------------------------------------
586//
587class CINOSMoveCache;
588class CINOSBaseAxis;
589class CINOSLimitChecker;
590//
591//------------------------------------------------------------------------------
592// class definition
593//------------------------------------------------------------------------------
594
596class CINOSBaseAxisParamSet
597{
598 //--- user interface ---------------------------------------------------
599
600 // public member functions
601 public :
602 virtual uint32 SetParam(const char* apName, real64 arValue);
603 //; universal set parameter with aName to aValue and return error code
604 //; \return 0 on success, an INCO error code otherwise, such as
605 //; defVarNotFound, defVarReadOnly, etc.
606 virtual uint32 GetParam(const char* apName, real64& arResult);
607 //; universal get parameter with aName to aResult and return error code
608 virtual CINCOObject* GetRegister(CINOSBaseAxis* apAxis);
609 //; On the first invocation, this function creates the INCO tree
610 //; for this object. Subsequent invocations just return the
611 //; previously created tree.
612 //; return pointer to my inco object
613 virtual CINCOObject* GetRegister() const;
614 //; \return Pointer to my INCO object (or NULL if non have been
615 //; created so far). This function doesn't create any INCO items,
616 //; it just returns what's currently there.
617 SINOSRampParam* GetRampParam()
618 { return &m_pRamp->m_Param;};
619
620 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
622 void AddExtension(SINOSParamSetExtension* apExtension);
624 void RemoveExtension(const char* apName);
625 #endif
626
627 //--- internals --------------------------------------------------------
628
629 // my axis is my friend
630 friend class CINOSBaseAxis;
631 friend class CINOSPhysicalAxis;
632 friend class CINOSShape;
633
634 // public but just for internal use
635 public:
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);}
650
651 // public but just for internal use
652 public:
653 explicit CINOSBaseAxisParamSet(const char* apName);
654 //; constructor
655 CINOSBaseAxisParamSet(const CINOSBaseAxisParamSet& aOther);
656 //; copy constructor, creates deep copies of the values. Note
657 //; that m_pRegister will not be copied nor created. The caller
658 //; would need to call GetRegister() to create the INCO
659 //; representation
660 virtual ~CINOSBaseAxisParamSet();
661 //; destructor
662
663 // protected members
664 protected:
665 inosName64 m_cName;
666 //; set name
667 CINCOObject* m_pRegister;
668 //; pointer to inco registration of set
669 CINOSBaseRampParamSet* m_pRamp;
670 //; pointer to ramp param set
671 uint32 m_uPosType;
672 //; positioning type [0-standard, 1-window]
673 uint32 m_uPosTime;
674 //; positioning time [ms]
675 uint32 m_uPosTimeout;
676 //; positioning timeout [ms]
677 real64 m_rPosTolerance;
678 //; positioning tolerance [unit]
679
680 // allow dynamic object handling (new/delete)
681 DECLARE_DYNAMIC(CINOSBaseAxisParamSet);
682};
684
685//------------------------------------------------------------------------------
686// class definition
687//------------------------------------------------------------------------------
688//
689typedef real64 (*tpGetter)(void* apVal);
690
691struct SINOSBaseAxisHook;
692class CINOSMapping;
694{
695 //--- user interface ---------------------------------------------------
696
697 // public member functions
698 public :
699
704 explicit CINOSBaseAxis(SINOSBaseAxis* apDesc);
705
713
716 virtual ~CINOSBaseAxis();
717
722 static CINOSBaseAxis* GetAxis(const char* apAxisName);
723
728 static CINOSBaseAxis* GetAxis(uint32 auNumber)
729 {
730 if (auNumber < DF_INOS_MAX_AXIS)
731 return m_pAxis[auNumber];
732 else
733 return nullptr;
734 }
735
740 static uint8 GetNumber(const char* apAxisName);
741 //; return number of axis apAxis
742
750 virtual uint32 WaitTicks(uint32 auTicks = 1);
751
755 virtual uint32 Connect()
756 { return 0; };
757
763 virtual uint32 Enable(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
764
770 virtual uint32 Disable(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
771
774
775
785 virtual uint32 Activate(bool abCheckPos = true, bool abSimulatePos = false,
786 bool abSimulateOut = false, bool abSimulateAct = false,
788
793 virtual uint32 InActivate(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
794
800 virtual uint32 Relax(uint32 auTimeMs, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
801
808 virtual uint32 Sync(real64 arPosition, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
809
818 virtual uint32 Sync(real64 arPosition, SINOSRampParam* apParam,
820
828 virtual uint32 Sync(real64 arPosition, const char* apParam,
830
838 virtual uint32 Sync(real64 arPosition, real64 arSyncPos,
840
850 virtual uint32 Sync(real64 arPosition, real64 arSyncPos,
851 SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
852
861 virtual uint32 Sync(real64 arPosition, real64 arSyncPos,
862 const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
863
871 virtual uint32 Sync(real64 arSyncPos, const char* apParam, CINCOObject* apObject,
873
880 virtual uint32 Move(real64 arPosition,
882
890 virtual uint32 Move(real64 arPosition, SINOSRampParam* apParam,
892
899 virtual uint32 Move(real64 arPosition, const char* apParam,
901
912 virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5 = true,
914
927 virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5,
928 SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
929
941 virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5,
942 const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
943
958 virtual uint32 Move(real64 arPosition, real64 arSafe1, real64 arSafe2,
959 SINOSRampParam* apParam1, SINOSRampParam* apParam2, real64 arPartner, SINOSRampParam* apPartner,
961
975 virtual uint32 Move(real64 arPosition, real64 arSave1, real64 arSave2,
976 const char* apParam1, const char* apParam2, real64 arPartner, const char* apPartner,
978
989 virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
991
1006 virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1007 SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
1008
1023 virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1024 const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
1025
1039 virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1040 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
1041
1056 virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1057 SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
1058
1073 virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1074 const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
1075
1082 virtual uint32 Toggle(real64 arPosition1, real64 arPosition2);
1083
1094 virtual uint32 ToggleSection(real64 arPos1Min, real64 arPos1Max,
1095 real64 arPos2Min, real64 arPos2Max, uint32 auDelayMin, uint32 auDelayMax);
1096
1105 virtual uint32 Track(const char* apVarName, real64 arFactor,
1106 uint32 auFilterLength, uint32 auDirection = 0);
1107
1117 virtual uint32 Track(const char* apVarName, real64 arFactor,
1118 uint32 auFilterLength, uint32 auDirection, const char* apParam);
1119
1129 virtual uint32 Track(const char* apVarName, real64 arCmdValue,
1130 real64 arFactor, uint32 auFilterLength);
1131
1136 virtual uint32 SetTrackFactor(real64 arFactor);
1137
1143 virtual uint32 Endless(bool abPositive = true);
1144
1152 virtual uint32 Endless(bool abPositive, SINOSRampParam* apParam,
1154
1161 virtual uint32 Endless(bool abPositive, const char* apParam,
1163
1170 virtual uint32 Cursor(bool abPositive = true);
1171
1178 virtual uint32 Cursor(real64 arPosition);
1179
1187 virtual uint32 Cursor(bool abPositive, uint32 auWaitTime);
1188
1195 virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime);
1196
1205 virtual uint32 Cursor(bool abPositive, uint32 auWaitTime,
1206 real64 arStep);
1207
1216 virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime,
1217 real64 arStep);
1218
1228 virtual uint32 Cursor(bool abPositive, uint32 auWaitTime,
1229 real64 arStep, SINOSRampParam* apParam);
1230
1240 virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime,
1241 real64 arStep, SINOSRampParam* apParam);
1242
1252 virtual uint32 Cursor(bool abPositive, uint32 auWaitTime,
1253 real64 arStep, const char* apParam);
1254
1264 virtual uint32 Cursor(real64 arbPosition, uint32 auWaitTime,
1265 real64 arStep, const char* apParam);
1266
1272 virtual uint32 Update(CINOSSync* apSync = DF_INOS_ASYNCHRONOUS);
1273
1280 virtual uint32 Update(SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_ASYNCHRONOUS);
1281
1288 virtual uint32 Update(const char* apParam, CINOSSync* apSync = DF_INOS_ASYNCHRONOUS);
1289
1295
1301
1306 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, const char* apParam);
1311 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta);
1316 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta,
1317 SINOSRampParam* apParam);
1322 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta, const char* apParam);
1327 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition,
1328 real64 arDelta);
1333 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition,
1334 real64 arDelta, SINOSRampParam* apParam);
1339 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition,
1340 real64 arDelta, const char* apParam);
1341
1346 virtual real64 GetMoveTime(real64 arPosition);
1347
1352 virtual real64 GetAccelerationTime(real64 arPosition);
1353
1358 virtual real64 GetConstTime(real64 arPosition);
1359
1364 virtual real64 GetDecelerationTime(real64 arPosition);
1365
1371 virtual real64 GetMoveTime(real64 arPosition, SINOSRampParam* apParam);
1372
1378 virtual real64 GetAccelerationTime(real64 arPosition, SINOSRampParam* apParam);
1379
1385 virtual real64 GetConstTime(real64 arPosition, SINOSRampParam* apParam);
1386
1392 virtual real64 GetDecelerationTime(real64 arPosition, SINOSRampParam* apParam);
1393
1399 virtual real64 GetMoveTime(real64 arPosition, const char* apParam);
1400
1406 virtual real64 GetAccelerationTime(real64 arPosition, const char* apParam);
1407
1413 virtual real64 GetConstTime(real64 arPosition, const char* apParam);
1414
1420 virtual real64 GetDecelerationTime(real64 arPosition, const char* apParam);
1421
1427 virtual real64 GetMoveTime(real64 arPosition, real64 arDelta);
1428
1434 virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta);
1435
1441 virtual real64 GetConstTime(real64 arPosition, real64 arDelta);
1442
1448 virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta);
1449
1456 virtual real64 GetMoveTime(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1457
1464 virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1465
1472 virtual real64 GetConstTime(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1473
1480 virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1481
1488 virtual real64 GetMoveTime(real64 arPosition, real64 arDelta, const char* apParam);
1489
1496 virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta, const char* apParam);
1497
1504 virtual real64 GetConstTime(real64 arPosition, real64 arDelta, const char* apParam);
1505
1512 virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta, const char* apParam);
1513
1521 virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1522 real64 arDelta);
1523
1531 virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition,
1532 real64 arDelta);
1533
1541 virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition,
1542 real64 arDelta);
1543
1551 virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition,
1552 real64 arDelta);
1553
1562 virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1563 real64 arDelta, SINOSRampParam* apParam);
1564
1573 virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition,
1574 real64 arDelta, SINOSRampParam* apParam);
1575
1584 virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition,
1585 real64 arDelta, SINOSRampParam* apParam);
1586
1595 virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition,
1596 real64 arDelta, SINOSRampParam* apParam);
1597
1606 virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1607 real64 arDelta, const char* apParam);
1608
1617 virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition,
1618 real64 arDelta, const char* apParam);
1619
1628 virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition,
1629 real64 arDelta, const char* apParam);
1630
1639 virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition,
1640 real64 arDelta, const char* apParam);
1641
1649 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1650 real64 arVelocity);
1651
1660 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1661 real64 arVelocity, SINOSRampParam* apParam);
1662
1671 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1672 real64 arVelocity, const char* apParam);
1673
1682 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1683 real64 arVelocity, real64 arDelta);
1684
1694 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1695 real64 arVelocity, real64 arDelta, SINOSRampParam* apParam);
1696
1706 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1707 real64 arVelocity, real64 arDelta, const char* apParam);
1708
1718 virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition,
1719 real64 arPositionVel, real64 arVelocity, real64 arDelta);
1720
1731 virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition,
1732 real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam* apParam);
1733
1744 virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition,
1745 real64 arPositionVel, real64 arVelocity, real64 arDelta, const char* apParam);
1746
1754 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1755 real64 arVelocity);
1756
1765 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1766 real64 arVelocity, SINOSRampParam* apParam);
1767
1776 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1777 real64 arVelocity, const char* apParam);
1778
1787 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1788 real64 arVelocity, real64 arDelta);
1789
1799 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1800 real64 arVelocity, real64 arDelta, SINOSRampParam* apParam);
1801
1811 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1812 real64 arVelocity, real64 arDelta, const char* apParam);
1813
1823 virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition,
1824 real64 arPositionVel, real64 arVelocity, real64 arDelta);
1825
1836 virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition,
1837 real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam* apParam);
1838
1849 virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition,
1850 real64 arPositionVel, real64 arVelocity, real64 arDelta, const char* apParam);
1851
1856 virtual int32 GetMoveTicks(real64 arPosition);
1857
1862 virtual int32 GetAccelerationTicks(real64 arPosition);
1863
1868 virtual int32 GetConstTicks(real64 arPosition);
1869
1874 virtual int32 GetDecelerationTicks(real64 arPosition);
1875
1881 virtual int32 GetMoveTicks(real64 arPosition, SINOSRampParam* apParam);
1882
1888 virtual int32 GetAccelerationTicks(real64 arPosition, SINOSRampParam* apParam);
1889
1895 virtual int32 GetConstTicks(real64 arPosition, SINOSRampParam* apParam);
1896
1902 virtual int32 GetDecelerationTicks(real64 arPosition, SINOSRampParam* apParam);
1903
1909 virtual int32 GetMoveTicks(real64 arPosition, const char* apParam);
1910
1916 virtual int32 GetAccelerationTicks(real64 arPosition, const char* apParam);
1917
1923 virtual int32 GetConstTicks(real64 arPosition, const char* apParam);
1924
1930 virtual int32 GetDecelerationTicks(real64 arPosition, const char* apParam);
1931
1937 virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta);
1938
1944 virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta);
1945
1951 virtual int32 GetConstTicks(real64 arPosition, real64 arDelta);
1952
1958 virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta);
1959
1966 virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1967
1974 virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1975
1982 virtual int32 GetConstTicks(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1983
1990 virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1991
1998 virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta, const char* apParam);
1999
2006 virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta, const char* apParam);
2007
2014 virtual int32 GetConstTicks(real64 arPosition, real64 arDelta, const char* apParam);
2015
2022 virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta, const char* apParam);
2023
2031 virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition,
2032 real64 arDelta);
2033
2041 virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition,
2042 real64 arDelta);
2043
2051 virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition,
2052 real64 arDelta);
2053
2061 virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition,
2062 real64 arDelta);
2063
2072 virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition,
2073 real64 arDelta, SINOSRampParam* apParam);
2074
2083 virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition,
2084 real64 arDelta, SINOSRampParam* apParam);
2085
2094 virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition,
2095 real64 arDelta, SINOSRampParam* apParam);
2096
2105 virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition,
2106 real64 arDelta, SINOSRampParam* apParam);
2107
2116 virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition,
2117 real64 arDelta, const char* apParam);
2118
2127 virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition,
2128 real64 arDelta, const char* apParam);
2129
2138 virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition,
2139 real64 arDelta, const char* apParam);
2140
2149 virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition,
2150 real64 arDelta, const char* apParam);
2151
2155 virtual int32 GetExitTicks();
2156
2161 virtual real64 GetMoveDist(real64 arTime);
2162
2168 virtual real64 GetMoveDist(real64 arPosition, real64 arTime);
2169
2175 virtual real64 GetMoveDist(real64 arTime, SINOSRampParam* apParam);
2176
2183 virtual real64 GetMoveDist(real64 arPosition, real64 arTime,
2184 SINOSRampParam* apParam);
2185
2191 virtual real64 GetMoveDist(real64 arTime, const char* apParam);
2192
2199 virtual real64 GetMoveDist(real64 arPosition, real64 arTime,
2200 const char* apParam);
2201
2207 virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks);
2208
2215 virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks,
2216 SINOSRampParam* apParam);
2217
2224 virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks,
2225 const char* apParam);
2226
2234 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2235 real64 arTime);
2236
2245 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2246 real64 arTime, SINOSRampParam* apParam);
2247
2256 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2257 real64 arTime, const char* apParam);
2258
2266 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2267 uint32 auTicks);
2268
2277 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2278 uint32 auTicks, SINOSRampParam* apParam);
2279
2288 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2289 uint32 auTicks, const char* apParam);
2290
2294 virtual uint64 GetStartTicks(real64 arDelta);
2295
2299 virtual uint64 GetTargetTicks();
2300
2304 virtual uint64 GetTargetTicks(real64 arDelta);
2305
2311 virtual uint32 SegBegin(real64 arSlowMotion = REAL64(1.0), real64 arStartVelocity = REAL64(0.0));
2312
2319 virtual uint32 SegBegin(real64 arSlowMotion, real64 arStartPosition, real64 arStartVelocity);
2320
2326 virtual uint32 SegMove(real64 arPosition);
2327
2334 virtual uint32 SegMove(real64 arPosition, SINOSRampParam* apParam);
2335
2342 virtual uint32 SegMove(real64 arPosition, const char* apParam);
2343
2350 virtual uint32 SegMove(real64 arPosition, real64 arVelocity);
2351
2359 virtual uint32 SegMove(real64 arPosition, real64 arVelocity,
2360 SINOSRampParam* apParam);
2361
2369 virtual uint32 SegMove(real64 arPosition, real64 arVelocity,
2370 const char* apParam);
2371
2376 virtual uint32 SegConst(real64 arPosition);
2377
2382 virtual uint32 SegPos(real64 arTime);
2383
2389 virtual uint32 SegPosSetTime(real64 arTime);
2390
2396 virtual uint32 SegVelocity(real64 arVelocity, SINOSRampParam* apParam);
2397
2403 virtual uint32 SegVelocity(real64 arVelocity, const char* apParam);
2404
2408 virtual real64 SegTime();
2409
2414 virtual uint32 SegRun(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2415
2419 virtual uint32 WaitInPosition();
2420
2424 virtual uint32 GetBusTicksPerAxisTick();
2425
2426 // pulling
2427
2438 virtual uint32 Pull(real64 arS, real64 arV, real64 arA, real64 arJ);
2439
2448 virtual uint32 Pull(SINOSRampData& aData);
2449
2459 virtual uint32 Pull(SINOSRampDataEx* apData);
2460
2465 {
2466 // enable trajectory generator
2467 m_pRamp->Enable();
2468 };
2469
2475 {
2476 // disable trajectory generator
2477 m_pRamp->Disable();
2478 };
2479
2480 // stop/break/continue functions
2481
2486 virtual uint32 Stop(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2487
2493 virtual uint32 Stop(SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2494
2500 virtual uint32 Stop(const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2501
2507 virtual uint32 Stop(real64 arPosition, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2508
2515 virtual uint32 Stop(real64 arPosition, SINOSRampParam* apParam,
2516 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2517
2524 virtual uint32 Stop(real64 arPosition, const char* apParam,
2525 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2526
2533 virtual uint32 StopLive();
2534
2543 virtual uint32 StopLive(real64 arSlowMotion, SINOSRampParam* apParam);
2544
2554 virtual uint32 StopLiveDelta(real64 arDelta, real64 arSlowMotion, SINOSRampParam* apParam = nullptr);
2555
2562 virtual uint32 Break(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2563
2571 virtual uint32 Break(SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2572
2580 virtual uint32 Break(const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2581
2589 virtual uint32 Break(real64 arPosition, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2590
2599 virtual uint32 Break(real64 arPosition, SINOSRampParam* apParam,
2600 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2601
2610 virtual uint32 Break(real64 arPosition, const char* apParam,
2611 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2612
2618 virtual uint32 Continue(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2619
2626 virtual uint32 Continue(SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2627
2634 virtual uint32 Continue(const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2635
2640 virtual uint32 EmergencyStop(CINOSSync* apSync);
2641
2648 virtual uint32 EmergencyStop(uint16 auType = DF_PRECONFIGURED_EME_STOP_TYPE, uint16 auDelay = DF_PRECONFIGURED_EME_STOP_DELAY,
2649 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2650
2657 virtual uint32 EmergencyStopLive();
2658
2667 virtual uint32 EmergencyStopLive(uint16 auType, uint16 auDelay = DF_PRECONFIGURED_EME_STOP_DELAY);
2668
2669 // get/set property functions
2670
2682 virtual const char* GetName();
2683 //; return axis name
2684 virtual const char* GetType();
2685 //; return axis type
2686 virtual const char* GetUnit();
2687 //; return axis unit
2688 virtual uint32 GetCharacteristics();
2689 //; return axis characteristics
2690 virtual uint8 GetNumber()
2691 //; return axis number
2692 { return (uint8) m_pDesc->m_uNumber;};
2693 virtual uint32 GetOptions()
2694 //; return axis options
2695 { return m_pDesc->m_uOptions;};
2696 virtual char GetShort()
2697 //; return axis short character
2698 { return m_cShort[0];};
2699 virtual void SetShort(char acShort)
2700 //; set axis short character
2701 { m_cShort[0] = acShort;};
2702 virtual void SetPartner(const char* apPartner);
2703 //; set partner axis (used for special move commands)
2704 virtual void SetPartner(CINOSBaseAxis* apPartner);
2705 //; set partner axis (used for special move commands)
2706 virtual void SetCmdPosition(real64 arPosition);
2707 //; set commanded axis position (see comment above)
2708 virtual void SetPathPosition(real64 arPosition){};
2709 //; set commanded path axis position
2710 virtual void GetCmdPosition(real64& arPosition);
2711 //; get commanded axis position (see comment above)
2712 virtual void SetCmdVelocity(real64 arVelocity);
2713 //; set commanded velocity (see comment above)
2714 virtual void GetCmdVelocity(real64& arVelocity, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2715 //; get commanded velocity (see comment above)
2716 virtual void SetCmdAcceleration(real64 arAcceleration);
2717 //; set commanded acceleration (see comment above)
2718 virtual void GetCmdAcceleration(real64& arAcceleration, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2719 //; get commanded acceleration (see comment above)
2720 virtual void SetCmdDeceleration(real64 arDeceleration);
2721 //; set commanded deceleration (see comment above)
2722 virtual void GetCmdDeceleration(real64& arDeceleration, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2723 //; get commanded deceleration (see comment above)
2724 virtual void SetCmdCruiseleration(real64 arCruiseleration);
2725 //; set commanded cruiseleration (see comment above)
2726 virtual void GetCmdCruiseleration(real64& arCruiseleration);
2727 //; get commanded cruiseleration (see comment above)
2728 virtual void SetCmdJerk(real64 arJerk, uint32 auNumber = DF_INOS_RAMP_JERK_ALL);
2729 //; set commanded jerk (see comment above)
2730 virtual void GetCmdJerk(real64& arJerk, uint32 auNumber = 0);
2731 //; get commanded jerk (see comment above)
2732 virtual void SetCmdCruiseJerk(real64 arCruiseJerk);
2733 //; set commanded cruise jerk (see comment above)
2734 virtual void GetCmdCruiseJerk(real64& arCruiseJerk);
2735 //; get commanded cruise jerk (see comment above)
2736 virtual void GetCmdRealJerk(real64& arJerk, uint32 auNumber = 0);
2737 //; get commanded real jerk (see comment above)
2738 virtual void SetCmdSlowMotion(real64 arSlowMotion, bool abUpdate = false);
2739 //; set commanded slowmotion factor
2740 virtual void GetCmdSlowMotion(real64& arSlowMotion, const char* apParam = 0);
2741 //; get commanded slowmotion factor
2742 virtual void GetActSlowMotion(real64& arSlowMotion, const char* apParam = 0);
2743 //; get actual slowmotion factor (slowmotion>slowmotionmax ? slowmotionmax : slowmotion)
2744 virtual void SetCmdRelaxTime(real64 arRelaxTime);
2745 //; set commanded relax time
2746 virtual void GetCmdRelaxTime(real64& arRelaxTime);
2747 //; get commanded relax time
2748 virtual void SetEmgDeceleration(real64 arDeceleration);
2749 //; set commanded emergency deceleration
2750 virtual void GetEmgDeceleration(real64& arDeceleration);
2751 //; get commanded emergency deceleration
2752 //; get commanded relax time
2753 virtual void SetEmgPosition(real64 arPosition);
2754 //; set emergency position
2755 virtual void GetEmgPosition(real64& arPosition);
2756 //; get emergency position
2757
2758
2771 virtual uint32 SetActPosition(real64 arPosition);
2772
2784 virtual void GetActPosition(real64& arPosition, bool abRamp = true);
2785
2793 double NormPosition(real64 arPosition) const
2794 {
2795 if (m_uFlag & DF_INOS_AXIS_FLAG_NORM){
2796 // norming active
2797 return iNormPosition(arPosition, m_rNormPos, m_uNormMode & DF_INOS_AXIS_NORM_ROUND);
2798 }
2799 else {
2800 // no norming
2801 return arPosition;
2802 }
2803 }
2804
2805 virtual void GetActPosition(real64& arPosition, uint64 auTicks);
2806 //; get actual commanded position at bus ticks auTicks
2807 virtual uint32 NrmActPosition(real64 arRange = REAL64(0.0), bool abRound = false);
2808 //; norm actual position
2809 virtual void GetActVelocity(real64& arVelocity, bool abMapped = true);
2810 //; get actual commaned velocity (see comment above)
2811 virtual void GetActAcceleration(real64& arAcceleration, bool abRamp = true);
2812 //; get actual commanded acceleratio (see comment above)n
2813 virtual void GetActJerk(real64& arJerk, bool abRamp = true);
2814 //; get actual commanded jerk (see comment above)
2815 virtual uint32 AdjActTime(real64 arDelta);
2816 //; adjust actual move time
2817
2833 virtual uint32 SetRealPosition(real64 arPosition);
2834
2846 virtual void GetRealPosition(real64& arPosition, bool abMapped = true);
2847
2848 virtual void GetRealVelocity(real64& arVelocity);
2849 //; get real velocity (see comment above)
2850 virtual void GetRealAcceleration(real64& arAcceleration);
2851 //; get real acceleration (see comment above)
2852 virtual void GetRealJerk(real64& arJerk);
2853 //; get real jerk (see comment above)
2854 virtual void GetActPosError(real64& arPosError)
2855 { arPosError = REAL64(0.0);};
2856 //; get actual position error (see comment above)
2857 virtual void GetActVelocityError(real64& arVelocityError, bool abFiltered = false)
2858 { arVelocityError = REAL64(0.0);};
2859 //; get actual position error
2860 virtual void GetUnitsPerInc(double& adUnits);
2861 //; get number of units per one inc
2862 virtual void GetIncsPerUnit(double& adIncs);
2863 //; get number of incs per unit
2864 virtual void SetMinPosition(real64 arPosition);
2865 //; set min. allowed position
2866 virtual void GetMinPosition(real64& apPosition) const;
2867 //; get min. allowed position
2868 virtual void SetMaxPosition(real64 arPosition);
2869 //; set max. allowed position
2870 virtual void GetMaxPosition(real64& arPosition) const;
2871 //; get max. allowed position
2872 virtual bool CheckPosition(real64& arPosition, bool abIgnoreMapping = false, SINOSRampParam* apParam = nullptr);
2873 //; return true if arPosition within the range or no range requested
2874 virtual void SetMinVelocity(real64 arVelocity);
2875 //; set min. allowed velocity
2876 virtual void SetMaxVelocity(real64 arVelocity);
2877 //; set max. allowed velocity
2878 virtual void SetMaxSetupVelocity(real64 arVelocity);
2879 //; set max. allowed velocity in setup mode
2880 virtual void SetMaxInitVelocity(real64 arVelocity);
2881 //; set max. allowed velocity during initialization
2882 virtual void GetMinVelocity(real64& arVelocity);
2883 //; get min. allowed velocity
2884 virtual void GetMaxVelocity(real64& arVelocity, uint32 auFlags = eMaxVelocityNone);
2885 //; get max. allowed velocity
2886 virtual void GetTrqVelocity(real64& arVelocity);
2887 //; get torque velocity
2888 virtual void GetMaxSetupVelocity(real64& arVelocity);
2889 //; get max. allowed velocity in setup mode
2890 virtual void GetMaxInitVelocity(real64& arVelocity);
2891 //; get max. allowed velocity during initialization
2892 virtual void SetMinAcceleration(real64 arAcceleration);
2893 //; set min. allowed acceleration
2894 virtual void SetMaxAcceleration(real64 arAcceleration);
2895 //; set max. allowed acceleration
2896 virtual void SetMaxAccelerationPull(real64 arAcceleration);
2897 //; set max. allowed acceleration during pull
2898 virtual void GetMinAcceleration(real64& arAcceleration);
2899 //; get min. allowed acceleration
2900 virtual void GetMaxAcceleration(real64& arAcceleration);
2901 //; get max. allowed acceleration
2902 virtual void GetMaxAccelerationPull(real64& arAcceleration);
2903 //; get max. allowed acceleration during pull
2904 virtual void GetTrqAcceleration(real64& arAcceleration);
2905 //; get torque acceleration
2906 virtual void SetMinDeceleration(real64 arDeceleration);
2907 //; set min. allowed deceleration
2908 virtual void SetMaxDeceleration(real64 arDeceleration);
2909 //; set max. allowed deceleration
2910 virtual void GetMinDeceleration(real64& arDeceleration);
2911 //; get min. allowed deceleration
2912 virtual void GetMaxDeceleration(real64& arDeceleration);
2913 //; get max. allowed deceleration
2914 virtual void GetTrqDeceleration(real64& arDeceleration);
2915 //; get tourque deceleration
2916 virtual void SetMinCruiseleration(real64 arCruiseleration);
2917 //; set min. allowed cruiseleration
2918 virtual void SetMaxCruiseleration(real64 arCruiseleration);
2919 //; set max. allowed cruiseleration
2920 virtual void GetMinCruiseleration(real64& arCruiseleration);
2921 //; get min. allowed cruiseleration
2922 virtual void GetMaxCruiseleration(real64& arCruiseleration);
2923 //; get max. allowed cruiseleration
2924 virtual void SetMinJerk(real64 arJerk);
2925 //; set min. allowed jerk
2926 virtual void SetMaxJerk(real64 arJerk);
2927 //; set max. allowed jerk
2928 virtual void GetMinJerk(real64& arJerk);
2929 //; get min. allowed jerk
2930 virtual void GetMaxJerk(real64& arJerk);
2931 //; get max. allowed jerk
2932 virtual void GetEpsilon(real64& arEpsilon);
2933 //; get axis epsilon
2934 virtual void GetCycleTime(real64& arCycleTime, bool abOversampled=false);
2935 //; get axis cycle time [sec]
2936 virtual void GetCycleTimeUs(uint32& auCycleTime);
2937 //; get axis cycle time [us]
2938 virtual void GetCycleTimeNs(uint32& auCycleTime);
2939 //; get axis cycle time [ns]
2940 virtual uint8 GetOversampling();
2941 //; get oversampling factor
2942 virtual uint16 GetCycleNumber();
2943 //; get axis cycle number
2944 virtual uint16 GetCycleId();
2945 //; get axis cycle id
2946 virtual void UpdateCycleId(uint16 auCycleId);
2947 //; inform about updated cycle id (core id and cycle number could have changed)
2948 virtual uint8 GetBusId();
2949 //; get axis bus id
2950 virtual uint32 SetParam(const char* apName, real64 arValue);
2951 //; universal set parameter with aName to aValue and return error code
2952 virtual uint32 SetParam(const char* apName, uint64 auValue)
2953 //; universal set parameter with aName to aValue and return error code
2954 { return defVarNotFound;};
2955 virtual uint32 GetParam(const char* apName, real64& arResult);
2956 //; universal get parameter with aName to aResult and return error code
2957 virtual uint32 GetParam(const char* apName, uint64& auResult)
2958 //; universal get parameter with aName to aResult and return error code
2959 { return defVarNotFound;};
2960 virtual volatile real64* GetParamAdr(const char* apName);
2961 //; universal get address of parameter with aName or NULL if not found
2962 void SetFlag(uint32 auFlag)
2963 { INOS_OR(m_uFlag, auFlag);};
2964 //; set axis flags
2965 void ClrFlag(uint32 auFlag)
2966 { INOS_AND(m_uFlag, ~auFlag);};
2967 //; clear axis flags
2968 uint32 GetFlag()
2969 { return m_uFlag & m_uFlagEnb;};
2970 //; get axis flags
2971 void Absolute()
2972 { ClrFlag(DF_INOS_AXIS_FLAG_INCR);};
2973 //; switch to absolute mode
2974 void Incremental()
2975 { SetFlag(DF_INOS_AXIS_FLAG_INCR);};
2976 //; switch to incremental mode
2977 virtual uint32 SetState(uint32 auState);
2978 //; set axis state (used to set from ready to active to be able to force sync)
2979 virtual int32 GetState();
2980 //; get axis state
2981 virtual int32 GetState(uint32& auRampState);
2982 //; get axis and ramp state
2983 const char* GetStateText() const;
2984 //; \return A human readable text describing the current axis state.
2985 virtual bool IsBusy() const;
2986 //; Whether the axis is busy or not. Busy means: The axis is "used"
2987 //; by someone. E.g. the axis is also busy if it's in the "Coupled"
2988 //; state, which means that this axis is the "slave" and therefore
2989 //; it gets its positions/commands from its master axis. The axis
2990 //; is also busy if it is in "break" state (which means it is not
2991 //; currently moving, but it'll continue an already started move
2992 //; later). And it is also 'busy' if it's in "relax" state. In
2993 //; fact, the axis is always busy, unless it is in undefined,
2994 //; disabled, active, peace or read state.
2995 //; return true if the axis is currently busy. false otherwise.
2996 virtual uint32 GetError(bool abResolveExternal = false);
2997 //; get axis error
2998 virtual uint64 GetErrorEx(bool abResolveExternal = false);
2999 //; get extended axis errors
3000 virtual uint32 GetError(uint32& auRampError, bool abResolveExternal = false);
3001 //; get axis and ramp error
3002 virtual uint64 GetErrorEx(uint64& auRampError, bool abResolveExternal = false);
3003 //; get extended axis and ramp error
3004 virtual uint32 GetErrorHook() { return m_uErrorHook; };
3005 //; get axis and ramp error
3006 virtual bool IsErrorFatal()
3007 //; return true if error is fatal
3008 { return false;};
3009 virtual uint32 GetWarning(bool abResolveExternal = false);
3010 //; get axis warning
3011 virtual uint64 GetWarningEx(bool abResolveExternal = false);
3012 //; get extended axis warning
3013 virtual uint32 GetWarning(uint32& auRampWarning, bool abResolveExternal = false);
3014 //; get axis and ramp warning
3015 virtual uint64 GetWarningEx(uint64& auRampWarning, bool abResolveExternal = false);
3016 //; get extended axis and ramp warning
3017 virtual uint32 GetLimitViolation() { return m_uLimitViolation;};
3018 //; get axis limit violation
3019 virtual void SetErrorMask(uint32 auMask) { m_uErrorMask = auMask;};
3020 //; set error mask and return old mask
3021 virtual void SetWarningMask(uint32 auMask) { m_uWarningMask = auMask;};
3022 //; set warning mask and return old mask
3023 virtual void SetLimitViolation(uint32 auLimitViolation)
3024 { INOSOr(&m_uLimitViolation, auLimitViolation);};
3025 //; set axis limit violation
3026 virtual uint32 GetErrorMask() { return m_uErrorMask;};
3027 //; get actual error mask
3028 virtual uint32 GetWarningMask() { return m_uWarningMask;};
3029 //; get actual warning mask
3030 virtual uint32 AcceptError();
3031 //; accept all errors
3032 virtual uint32 AcceptError(uint32 auError);
3033 //; accept error
3034 virtual uint32 AcceptError(uint32 auError, uint32 auRampError);
3035 //; accept error
3036 virtual uint32 AcceptWarning();
3037 //; accept all warnings
3038 virtual uint32 AcceptWarning(uint32 auWarning);
3039 //; accept warning
3040 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning);
3041 //; accept warning
3042 virtual uint32 AcceptLimitViolation() { m_uLimitViolation = 0; return 0;};
3043 //; get axis limit violation
3044
3045 // param set functions
3046 virtual void eCreateParamSet(const char* apSetName);
3047 //; Same as CreateParamSet but for INCO registration (as it doesn't return
3048 //; a pointer)
3049 virtual CINOSBaseAxisParamSet* CreateParamSet(const char* apSetName);
3050 //; create new param set with name apSetName and return pointer to it
3051 virtual void DestroyParamSet(const char* apSetName);
3052 //; destroy param set with name apSetName
3053 virtual bool SelectParamSet(const char* apSetName);
3054 //; select param set with name apSetName
3055
3056 enum {
3057 eFlgParamSetNone = 0x00000000,
3058 eFlgParamSetSearchGlobal = 0x00000001,
3059 eFlgParamSetIgnoreOverwrite = 0x00000002
3060 };
3061
3062 virtual CINOSBaseAxisParamSet* GetParamSet(const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3063 //; get pointer to param set with name apSetName
3064 virtual SINOSRampParam* GetRampParam(const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3065 //; get pointer to ramp param of set apSetName
3066 virtual bool GetRampParam(const char* apSetName, char* apResult, uint32 auSize,
3067 SINOSRampParam& aResult, uint32 auFlags = eFlgParamSetSearchGlobal);
3068 //; copy ramp param data to aResult and return true if successful, copy also to original speed set
3069 //; name to apResult. This method is also able to handle the xxx[V/A/B=yyy] case
3070 virtual void PreDestroyRampParam(SINOSRampParam* apParam);
3071 //; use this method to inform axis, that we're about to destroy a previously
3072 //; used speed set
3073
3074 static void eCreateGlobalParamSet(const char* apSetName);
3075 //; Same as CreateParamSet but for INCO registration (as it doesn't return
3076 //; a pointer)
3077 static CINOSBaseAxisParamSet* CreateGlobalParamSet(const char* apSetName);
3078 //; create new param set with name apSetName and return pointer to it
3079 static void DestroyGlobalParamSet(const char* apSetName);
3080 //; destroy param set with name apSetName
3081 static CINOSBaseAxisParamSet* GetGlobalParamSet(const char* apSetName);
3082 //; get pointer to param set with name apSetName
3083 static SINOSRampParam* GetGlobalRampParam(const char* apSetName);
3084 //; get pointer to ramp param of set apSetName
3085
3086 // pos type functions
3087 virtual void SetPosType(uint32 auPosType)
3088 //; set pos type
3089 { m_uPosType = auPosType; };
3090 virtual void SetPosTime(uint32 auPosTime)
3091 //; set pos time
3092 { m_uPosTime = auPosTime; };
3093 virtual void SetPosTimeout(uint32 auPosTimeout)
3094 //; set pos timeout
3095 { m_uPosTimeout = auPosTimeout; };
3096 virtual void SetPosTolerance(real64 arPosTolerance)
3097 //; set pos tolerance
3098 { m_rPosTolerance = arPosTolerance; };
3099
3100 // param set extensions
3101
3102 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3104 SINOSParamSetExtension* GetParamSetExtension(uint32 auExtensionId)
3105 {
3106 // handle over
3107 return m_pRamp->GetParamSetExtension(auExtensionId);
3108 }
3110 real64 GetMoveTimeAdjust(SINOSRampParam* apParam);
3111 #endif
3112
3113 // caching functions
3114
3115 void EnableCache(uint32 auSize = 32);
3116 //; create moving cache with size auSize if nessecary and enable it
3117 CINOSRampCache* EnableCache(CINOSRampCache* apCache);
3118 //; set actual moving cache to apCache and return old one or 0
3119 CINOSRampCache* DisableCache();
3120 //; disable moving cache and return old one
3121 void ReEnableCache();
3122 //; Reenables a previously disabled ramp cache. This function is
3123 //; useful if the cache feature has temporarily been disabled
3124 //; before (DisableCache). Note: This function has no effect if
3125 //; the ramp does not yet owns a cache object. Also: It's safe
3126 //; to call this function while the cache is already enabled.
3127 void FlushCache();
3128 //; flush ramp cache
3129 void SetCacheEpsilon(real64 arEpsilon);
3130 //; set new cache 'epsilon' (standard is = 0.0)
3131 #ifdef INOS_MOVE_CACHE_SUPPORT
3132 void FlushMoveCache();
3133 //; flush moving cache
3134 #endif
3135
3136 // safety
3137
3138 #ifdef INOS_SAFETY_SUPPORT
3140 virtual void EnableSafetySupervision();
3142 virtual bool DisableSafetySupervision();
3144 virtual void ToggleSafetySupervision();
3145 #endif
3146
3147 // miscellaneous functions
3148
3149 virtual CINCOObject* GetRegister();
3150 //; do inco registration and return pointer to it
3151 virtual void SetRamp(CINOSBaseRamp* apRamp);
3152 //; set new ramp geni
3153 CINOSBaseRamp* GetRamp()
3154 { return m_pRamp;};
3155 //; return pointer to ramp geni
3156 virtual CINOSMapping* GetMapping()
3157 { return m_pMapping;};
3158 //; return pointer to actual axis mapping
3159 uint32 GetMappingIndex()
3160 { return m_uMappingIndex;};
3161 //; get actual mapping index
3162
3163 // miscellaneous functions
3164
3165 virtual uint32 RegisterHook(uintid& auHookId, void* apHandler, void* apObject,
3166 int32 aiOrder, bool abEnabled=true);
3167 //; register bus hook that runs in the same bus context, core,
3168 //; category, cyclenumber and cycletime as the axis
3169 virtual uint32 UnRegisterHook(uintid auHookId);
3170 //; unregister bus hook
3171 virtual uint32 EnableHook(uintid auHookId);
3172 //; enable hook
3173 virtual uint32 DisableHook(uintid auHookId);
3174 //; disable hook
3175 virtual uint32 RegisterPostHook(uintid& auHookId, void* apHandler, void* apObject,
3176 int32 aiOrder, bool abEnabled=true);
3177 //; register post bus hook that runs in the same bus context, core,
3178 //; category, cyclenumber and cycletime as the axis
3179 virtual uint32 UnRegisterPostHook(uintid auHookId);
3180 //; unregister bus hook
3181 virtual uintid RegisterErrorHook(void* apHandler, void* apObject = 0);
3182 //; register error hook and return hook id
3183 virtual void UnRegisterErrorHook(uintid auHookId);
3184 //; unregister error hook
3185 virtual uintid RegisterWarningHook(void* apHandler, void* apObject = 0);
3186 //; register Warning hook and return hook id
3187 virtual void UnRegisterWarningHook(uintid auHookId);
3188 //; unregister Warning hook
3189 #ifdef INOS_SAFETY_SUPPORT
3190 virtual uintid RegisterSOSHook(void* apHandler, void* apObject = 0);
3191 //; register SOS hook and return hook id
3192 virtual void UnRegisterSOSHook(uintid auHookId);
3193 //; unregister SOS hook
3194 #endif
3195
3196 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3198 virtual void RegisterExtension(IINOSBaseAxisExtension* apExtension);
3200 virtual void UnRegisterExtension(IINOSBaseAxisExtension* apExtension);
3201 #endif
3202
3203 // auto sync
3204
3205 virtual void EnableSync(real64 arPosition = REAL64(0.0),
3206 uint8 auMode = DF_INOS_AXIS_SYNC_NOADJ){};
3207 //; enable auto syncing (at sync set pos = arPosition)
3208 virtual void DisableSync(){};
3209 //; disable auto syncing
3210 virtual void GetSyncCount(uint32& auSyncCount)
3211 { auSyncCount = 0;};
3212 //; return actual sync counter
3213 virtual void SetSyncCount(uint32 auSyncCount){};
3214 //; set sync counter
3215
3216 // auto norm
3217
3238 virtual void EnableNorm(uint8 auMode = DF_INOS_AXIS_NORM_AFTER,
3239 uint8 auMoveDir = DF_INOS_AXIS_NORM_MOVE_DIR_NO,
3240 real64 arNormPos = REAL64(0.0));
3242 virtual void DisableNorm();
3243
3245 virtual uint8 GetNormMoveDir()
3246 { return m_uNormMoveDir; };
3247
3249 virtual void SetNormMoveDir(uint8 auNormMoveDir)
3250 { m_uNormMoveDir = auNormMoveDir; };
3251
3253 virtual uint8 GetNormMode()
3254 { return m_uNormMode; };
3255
3257 virtual void SetNormMode(uint8 auNormMode)
3258 { m_uNormMode = auNormMode; };
3259
3260 // current limitation
3261
3262 virtual void EnableCurLimit(){};
3263 //; enable current limitation
3264 virtual void DisableCurLimit(){};
3265 //; disable current limitation
3266 virtual bool GetCurLimit()
3267 //; return state of current limitation
3268 { return (m_uFlag & DF_INOS_AXIS_FLAG_CURL) != 0;};
3269
3270 enum EActualType {
3271 eActInput,
3272 eActActual,
3273 eActOutput
3274 };
3276 SINOSRampData* GetActual(EActualType aeType = eActOutput, bool abCopy = true)
3277 {
3278 // check reqeusted type
3279 if (aeType == eActInput) {
3280 // return pointer to ramp values
3281 return m_pActRamp;
3282 } // end if
3283 else if (aeType == eActActual) {
3284 // return pointer to actual values
3285 return m_pActual;
3286 } // end if
3287 else {
3288 // copy requested ?
3289 if (abCopy && (m_pActual == m_pActRamp)) {
3290 // yes
3292 }
3293 // actuals are now control avalues
3295 // return pointer to output values
3296 return m_pActControl;
3297 } // end else
3298 };
3307 { return GetActual(eActOutput, false);};
3308
3309 // safety move
3310
3311 virtual void SetMoveSafeMin(real64 arMin, real64 arFact1=REAL64(0.0),
3312 real64 arFact2=REAL64(0.0));
3313 //; set move safe minimum : arMin=requested minimum,
3314 //; safe1=safe1+arFact(MoveSafeMin-calcedMin), safe2=dito
3315 virtual void ResetMoveSafeMin();
3316 //; reset move safe minimum
3317
3318 // setup mode
3319
3320 void EnableSetupMode();
3321 //; enable setup mode
3322 void DisableSetupMode();
3323 //; disable setup mode
3324 virtual bool CheckSetupMode();
3325 //; return true if setup mode active and fullfilled
3326
3327 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3328 void* GetCustomerSpecificData() const { return m_pCustomerSpecificData; }
3329 //; \return The pinter to the customer specific data (or NULL if
3330 //; no such data are set).
3331 void SetCustomerSpecificData(void* apData) { m_pCustomerSpecificData = apData; }
3332 //; Sets apData to be the "customer specific data" of this axis.
3333 //; The function doesn't care about any previously set customer
3334 //; specific data: The caller is 100% responsible for freeing amy
3335 //; resource related to these data!
3336 //; This class will never access the data in any way apart from
3337 //; initialization to NULL during object contstruction!
3338 #endif
3339
3341 virtual uint32 GetToggleCnt()
3342 { return m_uToggleCnt; };
3344 virtual void SetToggleCnt(uint32 auSetVal)
3345 { m_uToggleCnt=auSetVal; };
3346
3347 #ifdef INOS_MOVEPATH_SUPPORT
3348 void SetMovePathActuals(struct SINOSMovePathActual* apActuals);
3349 #endif
3350
3351 // torque limitation
3352
3359
3360 // multicore
3361
3364 { return m_uCoreId; };
3365
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;
3376 }
3377 #endif
3378
3379 //--- internals --------------------------------------------------------
3380
3381 // after this function you can register new ramps
3382 friend void _INI_0000_CINOSBaseAxis();
3383 friend void _INI_0400_CINOSBaseAxis();
3384 friend class CINOSRegisterBaseAxis;
3385 friend class CINOSMapping;
3386 friend class CINOSPhysicalAxis;
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;
3394
3395 // protected member functions
3396 protected:
3397 void Create();
3398 //; create base axis
3399 real64 iNormPosition(real64 arPosition, real64 arRange = REAL64(0.0), bool abRound = false) const;
3400 //; norm arPosition to 0..360
3401 void Signal(CINOSSync*& apSync);
3402 //; signal sync object if requested
3403 virtual void SignalSync(CINOSSync& apSync);
3404 //; signal given sync object
3405 virtual void SetError(uint32 auErrors);
3406 //; set axis error (and call error hook if nessecary)
3407 virtual void SetWarning(uint32 auWarnings);
3408 //; set axis warning (and call warning hook if nessecary)
3409#ifdef INOS_SAFETY_SUPPORT
3410 virtual void CallSOSHooks();
3411 //; call SOS hooks
3412#endif // INOS_SAFETY_SUPPORT
3413 bool Enter(uint32 auCommand, CINOSSync* apSync = 0);
3414 //; check if command allowed in current state and return false if not
3415 void Exit ();
3416 //; leave critical section
3417 void Exit (CINOSSync*& apCmdSync, CINOSSync* apSync);
3418 //; leave critical section and wait if nessecary
3419 bool IsCritical()
3420 { return m_CmdLock.GetOwner() != 0;};
3421 //; return true if somebody stays in critical section
3422 virtual void iInActivate();
3423 //; inactivate axis
3424 virtual void iStop(SINOSRampParam* apParam);
3425 //; internal stop
3426 virtual void iEmergencyStop(bool abLive = false);
3427 //; internal emergency stop
3428 virtual void iPowerEmergencyStop();
3429 //; internal power failure emergency stop
3430 virtual uint32 iCursor(bool abPositive, uint32 auWaitTime,
3431 real64 arStep, SINOSRampParam* apParam);
3432 //; internal cursor
3433 virtual uint32 iCursor(real64 arPosition, uint32 auWaitTime,
3434 real64 arStep, SINOSRampParam* apParam);
3435 //; internal cursor
3436 real64 iGetAbsPosition(real64 arRelPosition);
3437 //; get absolute position of arRelPosition
3438 real64 iGetNrmAbsPosition(real64 arRelPosition, SINOSRampParam* apParam = nullptr, bool abConsiderStop = false);
3439 //; get normed absolute position of arRelPosition
3440 virtual void iSetCycleTime(real64 arCycleTime);
3441 //; set axis cycle time [sec]
3442 virtual void iRegisterAxis();
3443 //; register axis
3444 ICACHE virtual void iPreMap();
3445 //; pre mapping handler
3446 ICACHE virtual void iPostMap();
3447
3448 ICACHE inline void iCheckRampLimits() {
3449 if (m_pRamp->GetError() & ER_INOS_RAMP_VMAX_REACHED) {
3450 SetError(ER_INOS_AXIS_RAMP_LIMIT);
3451 }
3452 }
3453
3454 //; post mapping handler
3455 ICACHE virtual void iPostWrite();
3456 //; post bus write handler
3457 void SetMapping(CINOSMapping* apMapping, uint32 auIndex)
3458 { m_pMapping = apMapping; m_uMappingIndex = auIndex;
3459 m_pRamp->SetMapping(apMapping, auIndex);};
3460 //; set actual axis mapping
3461 void ResetMapping()
3462 { m_pMapping = 0; m_uMappingIndex = 0;
3463 m_pRamp->ResetMapping();};
3464 //; reset actual axis mapping
3465 virtual bool iInPosition(bool abEarlyDone);
3466 //; returns true if requested position reached
3467 virtual bool iInPosition();
3468 //; returns true if requested position reached (originally, only
3469 //; this overload existed. Then, the abEarlyDone was introduced.
3470 //; Unfortunately, as this function was already 'virtual' we could
3471 //; not just add abEalyDone with a default value, as it would
3472 //; cause derived class, implemented by customers, to not function
3473 //; properly anymore.
3474 virtual void iAdjPreviousPositions(real64 arDifference);
3475 //; adjust previous axis positions (used in limit checker)
3476 virtual void iSetActRampPosition(real64 arPosition);
3477 //; set actual ramp geni position
3478 virtual bool IsCheckPositionRequired();
3479 //; return true if check position required
3480 void SetDefaultParamIfRequired();
3481 //; Sets the "default param" values (V,A,J) to the ramp if those
3482 //; ramp values are current undefined (means: are 0.0). Function does
3483 //; nothing otherwise, or if no "default param" has been specified
3484 //; in the axis config (e.g. in dt2)
3485 void iSetupPositionType(SINOSRampParam* apParam = 0);
3486 //; init position type handling
3487 virtual void iResetTrajectory();
3488 //; reset trajectory planner
3489
3490 void iCoreMismatchError();
3491 //; set core mismatch axis error
3492
3493 INOS_INLINE void AtomicEnter(uint32& auToken)
3494 {
3495 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3496 if (pBus) {
3497 pBus->AtomicGatherEnter(auToken);
3498 } else {
3499 // no bus -> no token
3500 auToken = 0;
3501 }
3502 }
3503
3504 INOS_INLINE bool AtomicExit(uint32 auToken)
3505 {
3506 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3507 if (pBus) {
3508 return pBus->AtomicGatherExit(auToken);
3509 } else {
3510 // no bus -> always OK
3511 return true;
3512 }
3513 }
3514
3515 // private member functions (external versions, because until now we are not
3516 // able to register functions with default parameters)
3517 private:
3518 uint32 eEnable();
3519 //; enable axis
3520 uint32 eDisable();
3521 //; disable axis
3522 uint32 eActivate(bool abCheckPos, bool abSimulatePos, bool abSimulateOut,
3523 bool abSimulateAct);
3524 //; activate physical axis
3525 uint32 eInActivate();
3526 //; inactivate physical axis
3527 uint32 eRelax(uint32 auTimeMs);
3528 //; relax coupled axis
3529 uint32 eMove(real64 arPosition);
3530 //; move to position with acc/deceleration and velocity
3531 uint32 eMove(real64 arPosition, char* apParam);
3532 //; move to position with apParam parameters
3533 uint32 eMoveTime(real64 arPosition, real64 arTime);
3534 //; move to position with acc/deceleration and velocity
3535 uint32 eMoveTime(real64 arPosition, real64 arTime, char* apParam);
3536 //; move to position with apParam parameters
3537 uint32 eMoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3538 //; move to position with acc/deceleration and velocity
3539 uint32 eMoveApp(real64 arPosition, real64 aPositionVel, real64 arVelocity, char* apParam);
3540 //; move to position with apParam parameters
3541 uint32 eMoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3542 //; move to position with acc/deceleration and velocity
3543 uint32 eMoveDep(real64 arPosition, real64 aPositionVel, real64 arVelocity, char* apParam);
3544 //; move to position with apParam parameters
3545 uint32 eSync(real64 arPosition);
3546 //; sync axis
3547 uint32 eSync(real64 arPosition, char* apParam);
3548 //; sync axis
3549 uint32 eSync(real64 arPosition, real64 arSyncPosition);
3550 //; sync axis
3551 uint32 eSync(real64 arPosition, real64 arSyncPosition, char* apParam);
3552 //; sync axis
3553 uint32 eCursor();
3554 //; cursor
3555 uint32 eUpdate();
3556 //; update
3557 uint32 eUpdate(const char* apParam);
3558 //; update
3559 uint32 eEndless(bool abPositive);
3560 //; move to position with acc/deceleration and velocity
3561 uint32 eEndless(bool abPositive, const char* aparam);
3562 //; move to position with acc/deceleration and velocity
3563 uint32 eStop();
3564 //; stop
3565 uint32 eStop(const char* apParam);
3566 //; stop
3567 uint32 eStop(real64 arPosition);
3568 //; stop
3569 uint32 eStop(real64 arPosition, const char* apParam);
3570 //; stop
3571 uint32 eBreak();
3572 //; break
3573 uint32 eBreak(const char* apParam);
3574 //; break
3575 uint32 eBreak(real64 arPosition);
3576 //; break
3577 uint32 eBreak(real64 arPosition, const char* apParam);
3578 //; break
3579 uint32 eEmergencyStop();
3580 //; emergency stop
3581 uint32 eEmergencyStop(uint32 auType, uint32 auDelay);
3582 //; emergency stop
3583 uint32 eContinue();
3584 //; stop
3585 uint32 eContinue(const char* apParam);
3586 //; stop
3587 void eSetSlowMotion(real64 arSlowMotion);
3588 //; stop
3589 void ePos1();
3590 //; move to pos 1
3591 void ePos2();
3592 //; move to pos 2
3593 void eToggle();
3594 //; toggle between pos 1 and pos 2
3595 void eZero();
3596 //; set act pos = 0
3597 uint32 eAcceptError();
3598 //; accept all pending errors
3599 uint32 eAcceptWarning();
3600 //; accept all pending warnings
3601 void iToggling();
3602 //; toggle handler (called cyclic)
3603 void iCursoring();
3604 //; toggle handler (called cyclic)
3605 bool iTrack(const char* apVarName, real64 arFactor, uint32 auFilterLength);
3606 //; track the variable apVarName
3607 uint32 _Track(const char* apVarName, real64 arFactor, uint32 auFilter,
3608 uint32 auDirection, SINOSRampParam* apParam);
3609 void iTrackFollow();
3610 //; tracking handler (called cyclic)
3611 void iTrackKeep();
3612 //; tracking handler (called cyclic)
3613
3614 // protected members
3615 protected:
3616 int32 m_uState;
3617 //; actual state
3618 uint32 m_uSubState;
3619 //; actual sub state
3620 uint32 m_uNxtState;
3621 //; next state
3622 uint32 m_uPrvState;
3623 //; previous state
3624 uint32 m_uBrkState;
3625 //; state before break
3626 uint32 m_uRmpState;
3627 //; state of ramp geni before GetSVAJ
3628 uint32 m_uError;
3629 //; actual errors
3630 uint32 m_uErrorMask;
3631 //; actual error mask
3632 uint32 m_uErrorHook;
3633 //; actual hook error
3634 uint32 m_uWarning;
3635 //; actual warnings
3636 uint32 m_uWarningMask;
3637 //; actual warnings mask
3638 uint32 m_uLimitViolation;
3639 //; actual limit violation mask
3640 uint32 m_uFlag;
3641 //; axis flags (zero, norm, ...)
3642 uint32 m_uFlagEnb;
3643 //; axis flags enable
3644
3645 const char* m_pName;
3646 //; axis name
3647 const char* m_pType;
3648 //; axis type
3649 char m_cShort[2];
3650 //; short character
3651 CINOSBaseAxis* m_pPartner;
3652 //; pointer to partner axis
3653 CINCOObject* m_pRegister;
3654 //; pointer to inco registration
3655 CINCOObject* m_pCommand;
3656 //; pointer to inco registration of commands
3657 CINCOObject* m_pTest;
3658 //; pointer to inco registration of axis test
3659 CINCOObject* m_pError;
3660 //; pointer to inco registration of axis errors
3661 CINCOObject* m_pWarning;
3662 //; pointer to inco registration of axis warnings
3663 CINCOObject* m_pLimitViolation;
3664 //; pointer to inco registration of limit violations
3665 CINCOObject* m_pFlag;
3666 //; pointer to inco registration of axis flags
3667 CINCOObject* m_pState;
3668 //; pointer to inco registration of axis state
3669 CINOSBaseRamp* m_pRamp;
3670 //; pointer to ramp generator
3671 CINOSLimitChecker* m_pLimitChecker;
3672 //; pointer to limit checker
3673 CINOSMapping* m_pMapping;
3674 //; pointer to actual mapping
3675 uint32 m_uMappingIndex;
3676 //; index this axis has in the actual mapping
3677 SINOSBaseAxis* m_pDesc;
3678 //; pointer to object descriptor
3679 CINOSMutex m_CmdLock;
3680 //; mutex to guarantee mutual exclusion in command handling
3681 CINOSSync* m_pActivate;
3682 //; pointer to synch object to be signaled on end of activate
3683 CINOSSync* m_pInActivate;
3684 //; pointer to synch object to be signaled on end of inactivate
3685 CINOSSync* m_pMove;
3686 //; pointer to synch object to be signaled on end of move
3687 CINOSSync* m_pEndless;
3688 //; pointer to synch object to be signaled on end of endless
3689 CINOSSync* m_pStop;
3690 //; pointer to synch object to be signaled on end of stop
3691 CINOSSync* m_pEmStop;
3692 //; pointer to synch object to be signaled on end of emstop
3693 CINOSSync* m_pBreak;
3694 //; pointer to synch object to be signaled on end of break
3695 CINOSSync* m_pVelocity;
3696 //; pointer to synch object to be signaled on velocity reached
3697 CINOSSync* m_pContinue;
3698 //; pointer to synch object to be signaled on end of continue
3699 CINOSSync* m_pWaitInPosition;
3700 //; pointer to synch object to be signaled on end of waitinposition
3701 CINOSSync* m_pWaitInPositionDyn;
3702 //; pointer to dynamically created synch object to be signaled on end of waitinposition
3703 CINOSSync* m_pWaitTicks;
3704 //; pointer to synch object to be signaled on end of waitticks
3705 uint32 m_uWaitTicks;
3706 //; to to be waited for
3707 uintid m_uPreMapHookId;
3708 //; id of pre map hook
3709 uintid m_uPostMapHookId;
3710 //; id of post map hook
3711 uintid m_uPostWriteHookId;
3712 //; id of post bus write hook
3713 uintid m_uPreHookId;
3714 //; id of pre axis command hooks (e.g. track)
3715 #ifdef INOS_SAFETY_SUPPORT
3716 bool m_bPreHookSafetyEnabled;
3718 #endif
3719 uintid m_uPostHookId;
3720 //; id of post hook command hooks (e.g. toggle)
3721 SINOSBaseAxisHook* m_pErrorHooks;
3722 //; pointer to list of error hooks
3723 SINOSBaseAxisHook* m_pWarningHooks;
3724 //; pointer to list of error hooks
3725 TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pParamSets;
3726 //; pool of all param sets
3727 static CINOSMutex m_GlobalParamSetsMutex;
3728 //; global param set mutex
3729 static TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pGlobalParamSets;
3730 //; pool of all param sets
3731 #ifdef INOS_MOVE_CACHE_SUPPORT
3732 CINOSMoveCache* m_pMoveCache;
3733 //; pointer to move cache
3734 #endif
3735
3736 // actual commanded values
3737
3746
3747 // previous three commanded values
3748 SINOSRampData m_sPreviousVrt[3];
3749
3750 // test values
3751
3752 real64 m_rPos1;
3753 //; toggle position 1
3754 real64 m_rPos1Max;
3755 //; max. toggle position 1
3756 real64 m_rPos2;
3757 //; toggle position 2
3758 real64 m_rPos2Max;
3759 //; max. toggle position 2
3760 uint32 m_uDelay;
3761 //; delay in ms between toggles
3762 uint32 m_uDelayMax;
3763 //; max. delay in ms between toggles
3764 uint32 m_uDelayAct;
3765 //; act. delay in ms between toggles
3766 int32 m_iTicks;
3767 //; system ticks to handle delay
3768 uint32 m_uToggleCnt;
3769 //; toggle counter
3770
3771 // miscelanselous
3772 real64 m_rFeedPerTurn;
3773 //; feed per turn (used in method NormPosition)
3774 real64 m_rFeedPerTurn_1;
3775 //; 1 / feed per turn (used in method NormPosition)
3776 real64 m_rInertia;
3777 //; inertia (used in torque limitation)
3778
3779 inosName32 m_cSelectedParamName;
3780 //; last selected param name
3781
3782 // emergency values
3783
3784 uint32 m_uEmergencyType;
3785 //; type of emergency stop (0-Stop, 1-Stop/InActivate, 2-InActivate, 3-none
3786 //; 4-Position, 5-Position/InActivate)
3787 uint32 m_uEmergencyDelay;
3788 //; Delay [ms] after Stop till InActivate (Type = 1)
3789 real64 m_rEmergencyPosition;
3790 //; emergency position
3791 uint16 m_uIntEmergencyType;
3792 //; type of emergency stop (0-Stop, 1-Stop/InActivate, 2-InActivate)
3793 uint16 m_uIntEmergencyDelay;
3794 //; Delay [ms] after Stop till InActivate (Type = 1)
3795 SINOSRampParam* m_pEmergency;
3796 //; pointer to emergency speed set (if available)
3797 SINOSRampParam* m_pPowerFailure;
3798 //; pointer to power failure speed set (if available)
3799
3800 // cursoring
3801 uint32 m_uCurWaitTime;
3802 //; wait afet initial move
3803 real64 m_rCurPosition;
3804 //; cursoring direction
3805 SINOSRampParam* m_pCurParam;
3806 //; cursoring params
3807
3808 // syncing
3809 uint8 m_uSyncMode;
3810 //; requested sync mode
3811 // sync methods available
3812 bool m_bSyncAvailable = true;
3813
3814 // norming
3815 uint8 m_uNormMode;
3816 //; requested norm mode
3817 uint8 m_uNormMoveDir;
3818 //; requested norm move direction
3819 real64 m_rNormPos;
3820 //; requested norm position
3821
3822 // multicore
3823
3826
3827 // tracking
3828 uint16 m_uTrackValType;
3829 //; tracking value type
3830 uint16 m_uTrackDir;
3831 //; tracking direction (0-pos and neg, 1-pos, 2-neg)
3832 void* m_pTrackVal;
3833 //; pointer to track value
3834 real64 m_rTrackCyc;
3835 //; track cycletime [sec]
3836 real64 m_rTrackFct;
3837 //; tracking factor
3838 real64 m_rTrackPos;
3839 //; tracking position
3840 real64 m_rTrackVel;
3841 //; tracking velocity
3842 real64 m_rTrackCmd;
3843 //; tracking commanded value
3844 real64 m_rTrackSum;
3845 //; tracking sum
3846 uint16 m_uTrackLen;
3847 //; tracking buffer length
3848 uint16 m_uTrackInd;
3849 //; tracking buffer index
3850 int32 m_iTrackLst;
3851 //; last track value
3852 int32 m_iTrackOld;
3853 //; old track value
3854 real64* m_pTrackBuf;
3855 //; pointer to tracking buffer
3856 tpGetter m_pTrackGet;
3857 //; pointer to tracking value getter method
3858 real64 m_rTrackVmax;
3859 real64 m_rTrackAmax;
3860 real64 m_rTrackBmax;
3861
3862 // positioning
3863
3864 uint32 m_uPosType;
3865 //; positioning type
3866 uint32 m_uPosTime;
3867 //; positioning time [ms]
3868 uint32 m_uPosTimeout;
3869 //; positioning timeout [ms]
3870 int32 m_iPosTicks;
3871 //; positioning ticks
3872 int32 m_iPosTimeout;
3873 //; positioning timeout ticks
3874 real64 m_rPosTolerance;
3875 //; positioning tolerance
3876
3877 // save moves
3878
3879 // exit time
3880 real64 m_rExitTime;
3881 // partner also running
3882 bool m_bPartnerMoving;
3883
3884 // bus timing
3885
3888
3891
3892 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3898 void* m_pCustomerSpecificData;
3899 #endif
3900
3901 // safety
3902
3903 #ifdef INOS_SAFETY_SUPPORT
3905 tUid m_uSafetyUid;
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;
3922
3923 // also called from CINOSMcTargetSafety at reload of ch.indel.safety.config.img
3924 friend class CINOSMcTargetSafety;
3926 void iSetupSafety();
3928 virtual bool iSetupSafetyRegistration();
3929 #endif
3930
3931 // axis extensions
3932
3933 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3935 TINOSDoubleLinkedList<IINOSBaseAxisExtension>* m_pExtensions = 0;
3936 #endif
3937
3938 // command parameters
3939 protected:
3940 uint32 m_ueActivateCheckPos;
3941 //; param : CheckPos
3942 uint32 m_ueActivateSimulatePos;
3943 //; param : SimulatePos
3944 uint32 m_ueActivateSimulateOut;
3945 //; param : SimulateOut
3946 uint32 m_ueActivateSimulateAct;
3947 //; param : SimulateAct
3948 real64 m_rePosition;
3949 //; param : Position
3950 real64 m_rePositionVel{};
3951 //; param : PositionVel
3952 real64 m_reVelocity{};
3953 //; param : Velocity
3954 real64 m_reSyncPosition;
3955 //; param : SyncPosition
3956 inosName32 m_ceParam;
3957 //; param : Param
3958 char m_ceVariable[64];
3959 //; param : Variable
3960 real64 m_reFactor;
3961 //; param : Factor
3962 real64 m_reValue;
3963 //; param : Value
3964 uint32 m_ueFilter;
3965 //; param : Filter
3966 uint32 m_ueTrackDir;
3967 //; param : Track direction
3968 uint32 m_ueDirection;
3969 //; param : Direction
3970 uint32 m_ueWait;
3971 //; param : Wait
3972 real64 m_reStep;
3973 //; param : Step
3974 real64 m_reReturn;
3975 //; param : return
3976 real64 m_reDelta;
3977 //; param : delta
3978 real64 m_reStart;
3979 //; param : start
3980 real64 m_reEnd;
3981 //; param : end
3982 uint32 m_ueReturn;
3983 //; param : return
3984 uint32 m_ueTicks;
3985 //; param : ticks
3986 real64 m_reTime;
3987 //; param : time
3988 real64 m_reSlowMotion;
3989 //; param SLowMotion
3990
3991 #ifdef INOS_MOVEPATH_SUPPORT
3992 class CINCOMovePathActuals* m_pMovePathActuals;
3993 #endif
3994
3995 // static private members
3996 private:
3997 static uint32 m_uCount;
3998 //; number of axis in pool
3999 static uint8 m_uCountCoreId;
4000 //; current core id
4001 static CINOSBaseAxis* m_pFirst;
4002 //; pointer to first axis
4003 CINOSBaseAxis* m_pNext;
4004 //; pointer to next axis in the chain of all axis
4005 static CINOSBaseAxis* m_pAxis[DF_INOS_MAX_AXIS];
4006 //; array of axis pointers
4007 static char m_cStateCombo[494];
4008 //; axis state INCO item text. Use 494 (=defMaxDataLength). I fear
4009 //; to include inco_com.h here, that's why a plain number is used)
4010
4011 // allow dynamic object handling (new/delete)
4013};
4014
4015//------------------------------------------------------------------------------
4016// class registration
4017//------------------------------------------------------------------------------
4018
4020typedef CINOSBaseAxis *(*TCreateAxis)(const char* apAxisName);
4021class CINOSRegisterBaseAxis
4022{
4023 // after this function you can register new ramps
4024 friend void _INI_0000_CINOSRegisterBaseAxis();
4025
4026 //--- internals --------------------------------------------------------
4027 // private members
4028private:
4029 // pointer to the first registered axis
4030 static CINOSRegisterBaseAxis* m_pFirst;
4031 // pointer to the next axis
4032 CINOSRegisterBaseAxis* m_pNext;
4033 // create funtion for axis
4034 TCreateAxis m_pCreate;
4035 // axis type name
4036 const char* m_pAxisType;
4037 // database table name
4038 const char* m_pDatabaseTable;
4039
4040 //--- user interface ---------------------------------------------------
4041
4042public:
4043 // register a new axis type
4044 CINOSRegisterBaseAxis(TCreateAxis apFunction, const char* apAxisType,
4045 const char* apDatabaseTable);
4046
4047 // create and return and new axis instance
4048 static CINOSBaseAxis* GetAxis(const char* apAxisName, const char* apAxisType);
4049 // create all registered axis
4050 static void CreateAll();
4051};
4053
4054//
4055//------------------------------------------------------------------------------
4056//--- helper macros ------------------------------------------------------------
4057//------------------------------------------------------------------------------
4058//
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(); \
4064 return ret; \
4065 } \
4066}
4067#else
4068#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret)
4069#endif
4070
4071
4072//
4073//------------------------------------------------------------------------------
4074// safety macros
4075//------------------------------------------------------------------------------
4076//
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());\
4085 return m_uError; \
4086 } \
4087 } \
4088 }
4089//
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());\
4097 Signal(apSync); \
4098 return m_uError; \
4099 } \
4100 } \
4101 }
4102//
4103#define SAFETY_IGNORE_IF_SOS() \
4104 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4105 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4106 return m_uError; \
4107 } \
4108 }
4109#else
4110#define SAFETY_CHECK_SOS()
4111#define SAFETY_CHECK_SOS_SYNC(apSync)
4112#define SAFETY_IGNORE_IF_SOS()
4113#endif
4114//
4115//------------------------------------------------------------------------------
4116// end of file
4117//------------------------------------------------------------------------------
4118
4119#endif // INC_CINOSBASEAXIS_H
#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
Short comment.
Short comment.
#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
Definition inos_syn.h:67
#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