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
351// --- axis limit errors -------------------------------------------------------------
352//
353#define DF_INOS_BASE_AXIS_LIMIT_S 0x00000001 // position limit of cmdS exceeded
354#define DF_INOS_BASE_AXIS_LIMIT_V_OF_S 0x00000002 // velocity limit of cmdS exceeded
355#define DF_INOS_BASE_AXIS_LIMIT_A_OF_S 0x00000004 // accelleration ity limit of cmdS exceeded
356#define DF_INOS_BASE_AXIS_LIMIT_B_OF_S 0x00000008 // de-accelleration ity limit of cmdS exceeded
357#define DF_INOS_BASE_AXIS_LIMIT_S_V_CONS 0x00000010 // consistency error between S and V
358#define DF_INOS_BASE_AXIS_LIMIT_V 0x00000020 // velocity limit of cmdV exceeded
359#define DF_INOS_BASE_AXIS_LIMIT_A_OF_V 0x00000040 // accelleration ity limit of cmdV exceeded
360#define DF_INOS_BASE_AXIS_LIMIT_B_OF_V 0x00000080 // de-accelleration ity limit of cmdV exceeded
361#define DF_INOS_BASE_AXIS_LIMIT_A 0x00000100 // accelleration ity limit of cmdA exceeded
362#define DF_INOS_BASE_AXIS_LIMIT_B 0x00000200 // de-accelleration ity limit of cmdA exceeded
363#define DF_INOS_BASE_AXIS_LIMIT_BRAKE 0x00000400 // axis cannot stop within bordes
364#define DF_INOS_BASE_AXIS_LIMIT_J_OF_S 0x00000800 // jerk limit of cmdS exceeded
365#define DF_INOS_BASE_AXIS_LIMIT_J_OF_V 0x00001000 // jerk limit of cmdV exceeded
366#define DF_INOS_BASE_AXIS_LIMIT_J_OF_A 0x00002000 // jerk limit of cmdA exceeded
367#define DF_INOS_BASE_AXIS_LIMIT_J 0x00004000 // jerk limit of cmdJ exceeded
368
369//
370//------------------------------------------------------------------------------
371// includes
372//------------------------------------------------------------------------------
373//
374// system
375#include <cinosbus.h>
376#include <cinosbaseramp.h>
377#if defined(INOS_AXIS_EXTENSION_SUPPORT)
378#include <cinosbaseaxisextension.h>
379#endif
380//
381// C++
382//
383// project
384//
385//------------------------------------------------------------------------------
386//--- structures ---------------------------------------------------------------
387//------------------------------------------------------------------------------
388
394{
397 inosName64 m_cName;
398
403 inosName32 m_cRampType;
404
410 uint16 m_uNumber;
411
416
420
433
440
452
457
463
467
471
475
479
484
488
492
501
506
511
516
521
525 uint16 m_cShort;
526
535
545
549
555 inosName32 m_cDefaultParam;
556
560
565
568 inosName32 m_cPowerParam;
569
572 inosName64 m_cDescription;
573
574 // constructor
576};
577
578//------------------------------------------------------------------------------
579// forward declarations
580//------------------------------------------------------------------------------
581//
582class CINOSMoveCache;
583class CINOSBaseAxis;
584class CINOSLimitChecker;
585//
586//------------------------------------------------------------------------------
587// class definition
588//------------------------------------------------------------------------------
589
591class CINOSBaseAxisParamSet
592{
593 //--- user interface ---------------------------------------------------
594
595 // public member functions
596 public :
597 virtual uint32 SetParam(const char* apName, real64 arValue);
598 //; universal set parameter with aName to aValue and return error code
599 //; \return 0 on success, an INCO error code otherwise, such as
600 //; defVarNotFound, defVarReadOnly, etc.
601 virtual uint32 GetParam(const char* apName, real64& arResult);
602 //; universal get parameter with aName to aResult and return error code
603 virtual CINCOObject* GetRegister(CINOSBaseAxis* apAxis);
604 //; On the first invocation, this function creates the INCO tree
605 //; for this object. Subsequent invocations just return the
606 //; previously created tree.
607 //; return pointer to my inco object
608 virtual CINCOObject* GetRegister() const;
609 //; \return Pointer to my INCO object (or NULL if non have been
610 //; created so far). This function doesn't create any INCO items,
611 //; it just returns what's currently there.
612 SINOSRampParam* GetRampParam()
613 { return &m_pRamp->m_Param;};
614
615 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
617 void AddExtension(SINOSParamSetExtension* apExtension);
619 void RemoveExtension(const char* apName);
620 #endif
621
622 //--- internals --------------------------------------------------------
623
624 // my axis is my friend
625 friend class CINOSBaseAxis;
626 friend class CINOSPhysicalAxis;
627 friend class CINOSShape;
628
629 // public but just for internal use
630 public:
634 CINOSBaseAxisParamSet& operator=(const CINOSBaseAxisParamSet& aOther);
635 int operator < (CINOSBaseAxisParamSet& aSet) const
636 { return (strcmp(m_cName, aSet.m_cName)<0);}
637 int operator == (CINOSBaseAxisParamSet& aSet) const
638 { return (strcmp(m_cName, aSet.m_cName)==0);}
639 int operator < (const char* apName) const
640 { return (strcmp(m_cName, apName)<0);}
641 int operator == (const char* apName) const
642 { return (strcmp(m_cName, apName)==0);}
643 friend int operator == (CINOSBaseAxisParamSet& aSet1, CINOSBaseAxisParamSet& aSet2)
644 { return (strcmp(aSet1.m_cName, aSet2.m_cName)==0);}
645
646 // public but just for internal use
647 public:
648 explicit CINOSBaseAxisParamSet(const char* apName);
649 //; constructor
650 CINOSBaseAxisParamSet(const CINOSBaseAxisParamSet& aOther);
651 //; copy constructor, creates deep copies of the values. Note
652 //; that m_pRegister will not be copied nor created. The caller
653 //; would need to call GetRegister() to create the INCO
654 //; representation
655 virtual ~CINOSBaseAxisParamSet();
656 //; destructor
657
658 // protected members
659 protected:
660 inosName64 m_cName;
661 //; set name
662 CINCOObject* m_pRegister;
663 //; pointer to inco registration of set
664 CINOSBaseRampParamSet* m_pRamp;
665 //; pointer to ramp param set
666 uint32 m_uPosType;
667 //; positioning type [0-standard, 1-window]
668 uint32 m_uPosTime;
669 //; positioning time [ms]
670 uint32 m_uPosTimeout;
671 //; positioning timeout [ms]
672 real64 m_rPosTolerance;
673 //; positioning tolerance [unit]
674
675 // allow dynamic object handling (new/delete)
676 DECLARE_DYNAMIC(CINOSBaseAxisParamSet);
677};
679
680//------------------------------------------------------------------------------
681// class definition
682//------------------------------------------------------------------------------
683//
684typedef real64 (*tpGetter)(void* apVal);
685
686struct SINOSBaseAxisHook;
687class CINOSMapping;
689{
690 //--- user interface ---------------------------------------------------
691
692 // public member functions
693 public :
694
699 explicit CINOSBaseAxis(SINOSBaseAxis* apDesc);
700
708
711 virtual ~CINOSBaseAxis();
712
717 static CINOSBaseAxis* GetAxis(const char* apAxisName);
718
723 static CINOSBaseAxis* GetAxis(uint32 auNumber)
724 {
725 if (auNumber < DF_INOS_MAX_AXIS)
726 return m_pAxis[auNumber];
727 else
728 return nullptr;
729 }
730
735 static uint8 GetNumber(const char* apAxisName);
736 //; return number of axis apAxis
737
745 virtual uint32 WaitTicks(uint32 auTicks = 1);
746
750 virtual uint32 Connect()
751 { return 0; };
752
758 virtual uint32 Enable(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
759
765 virtual uint32 Disable(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
766
769
770
780 virtual uint32 Activate(bool abCheckPos = true, bool abSimulatePos = false,
781 bool abSimulateOut = false, bool abSimulateAct = false,
783
788 virtual uint32 InActivate(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
789
795 virtual uint32 Relax(uint32 auTimeMs, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
796
803 virtual uint32 Sync(real64 arPosition, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
804
813 virtual uint32 Sync(real64 arPosition, SINOSRampParam* apParam,
815
823 virtual uint32 Sync(real64 arPosition, const char* apParam,
825
833 virtual uint32 Sync(real64 arPosition, real64 arSyncPos,
835
845 virtual uint32 Sync(real64 arPosition, real64 arSyncPos,
846 SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
847
856 virtual uint32 Sync(real64 arPosition, real64 arSyncPos,
857 const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
858
866 virtual uint32 Sync(real64 arSyncPos, const char* apParam, CINCOObject* apObject,
868
875 virtual uint32 Move(real64 arPosition,
877
885 virtual uint32 Move(real64 arPosition, SINOSRampParam* apParam,
887
894 virtual uint32 Move(real64 arPosition, const char* apParam,
896
907 virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5 = true,
909
922 virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5,
923 SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
924
936 virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5,
937 const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
938
953 virtual uint32 Move(real64 arPosition, real64 arSafe1, real64 arSafe2,
954 SINOSRampParam* apParam1, SINOSRampParam* apParam2, real64 arPartner, SINOSRampParam* apPartner,
956
970 virtual uint32 Move(real64 arPosition, real64 arSave1, real64 arSave2,
971 const char* apParam1, const char* apParam2, real64 arPartner, const char* apPartner,
973
984 virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
986
1001 virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1002 SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
1003
1018 virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1019 const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
1020
1034 virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1035 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
1036
1051 virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1052 SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
1053
1068 virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity,
1069 const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
1070
1077 virtual uint32 Toggle(real64 arPosition1, real64 arPosition2);
1078
1089 virtual uint32 ToggleSection(real64 arPos1Min, real64 arPos1Max,
1090 real64 arPos2Min, real64 arPos2Max, uint32 auDelayMin, uint32 auDelayMax);
1091
1100 virtual uint32 Track(const char* apVarName, real64 arFactor,
1101 uint32 auFilterLength, uint32 auDirection = 0);
1102
1112 virtual uint32 Track(const char* apVarName, real64 arFactor,
1113 uint32 auFilterLength, uint32 auDirection, const char* apParam);
1114
1124 virtual uint32 Track(const char* apVarName, real64 arCmdValue,
1125 real64 arFactor, uint32 auFilterLength);
1126
1131 virtual uint32 SetTrackFactor(real64 arFactor);
1132
1138 virtual uint32 Endless(bool abPositive = true);
1139
1147 virtual uint32 Endless(bool abPositive, SINOSRampParam* apParam,
1149
1156 virtual uint32 Endless(bool abPositive, const char* apParam,
1158
1165 virtual uint32 Cursor(bool abPositive = true);
1166
1173 virtual uint32 Cursor(real64 arPosition);
1174
1182 virtual uint32 Cursor(bool abPositive, uint32 auWaitTime);
1183
1190 virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime);
1191
1200 virtual uint32 Cursor(bool abPositive, uint32 auWaitTime,
1201 real64 arStep);
1202
1211 virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime,
1212 real64 arStep);
1213
1223 virtual uint32 Cursor(bool abPositive, uint32 auWaitTime,
1224 real64 arStep, SINOSRampParam* apParam);
1225
1235 virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime,
1236 real64 arStep, SINOSRampParam* apParam);
1237
1247 virtual uint32 Cursor(bool abPositive, uint32 auWaitTime,
1248 real64 arStep, const char* apParam);
1249
1259 virtual uint32 Cursor(real64 arbPosition, uint32 auWaitTime,
1260 real64 arStep, const char* apParam);
1261
1267 virtual uint32 Update(CINOSSync* apSync = DF_INOS_ASYNCHRONOUS);
1268
1275 virtual uint32 Update(SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_ASYNCHRONOUS);
1276
1283 virtual uint32 Update(const char* apParam, CINOSSync* apSync = DF_INOS_ASYNCHRONOUS);
1284
1290
1296
1301 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, const char* apParam);
1306 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta);
1311 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta,
1312 SINOSRampParam* apParam);
1317 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta, const char* apParam);
1322 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition,
1323 real64 arDelta);
1328 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition,
1329 real64 arDelta, SINOSRampParam* apParam);
1334 virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition,
1335 real64 arDelta, const char* apParam);
1336
1341 virtual real64 GetMoveTime(real64 arPosition);
1342
1347 virtual real64 GetAccelerationTime(real64 arPosition);
1348
1353 virtual real64 GetConstTime(real64 arPosition);
1354
1359 virtual real64 GetDecelerationTime(real64 arPosition);
1360
1366 virtual real64 GetMoveTime(real64 arPosition, SINOSRampParam* apParam);
1367
1373 virtual real64 GetAccelerationTime(real64 arPosition, SINOSRampParam* apParam);
1374
1380 virtual real64 GetConstTime(real64 arPosition, SINOSRampParam* apParam);
1381
1387 virtual real64 GetDecelerationTime(real64 arPosition, SINOSRampParam* apParam);
1388
1394 virtual real64 GetMoveTime(real64 arPosition, const char* apParam);
1395
1401 virtual real64 GetAccelerationTime(real64 arPosition, const char* apParam);
1402
1408 virtual real64 GetConstTime(real64 arPosition, const char* apParam);
1409
1415 virtual real64 GetDecelerationTime(real64 arPosition, const char* apParam);
1416
1422 virtual real64 GetMoveTime(real64 arPosition, real64 arDelta);
1423
1429 virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta);
1430
1436 virtual real64 GetConstTime(real64 arPosition, real64 arDelta);
1437
1443 virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta);
1444
1451 virtual real64 GetMoveTime(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1452
1459 virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1460
1467 virtual real64 GetConstTime(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1468
1475 virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1476
1483 virtual real64 GetMoveTime(real64 arPosition, real64 arDelta, const char* apParam);
1484
1491 virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta, const char* apParam);
1492
1499 virtual real64 GetConstTime(real64 arPosition, real64 arDelta, const char* apParam);
1500
1507 virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta, const char* apParam);
1508
1516 virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1517 real64 arDelta);
1518
1526 virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition,
1527 real64 arDelta);
1528
1536 virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition,
1537 real64 arDelta);
1538
1546 virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition,
1547 real64 arDelta);
1548
1557 virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1558 real64 arDelta, SINOSRampParam* apParam);
1559
1568 virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition,
1569 real64 arDelta, SINOSRampParam* apParam);
1570
1579 virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition,
1580 real64 arDelta, SINOSRampParam* apParam);
1581
1590 virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition,
1591 real64 arDelta, SINOSRampParam* apParam);
1592
1601 virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition,
1602 real64 arDelta, const char* apParam);
1603
1612 virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition,
1613 real64 arDelta, const char* apParam);
1614
1623 virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition,
1624 real64 arDelta, const char* apParam);
1625
1634 virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition,
1635 real64 arDelta, const char* apParam);
1636
1644 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1645 real64 arVelocity);
1646
1655 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1656 real64 arVelocity, SINOSRampParam* apParam);
1657
1666 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1667 real64 arVelocity, const char* apParam);
1668
1677 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1678 real64 arVelocity, real64 arDelta);
1679
1689 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1690 real64 arVelocity, real64 arDelta, SINOSRampParam* apParam);
1691
1701 virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel,
1702 real64 arVelocity, real64 arDelta, const char* apParam);
1703
1713 virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition,
1714 real64 arPositionVel, real64 arVelocity, real64 arDelta);
1715
1726 virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition,
1727 real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam* apParam);
1728
1739 virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition,
1740 real64 arPositionVel, real64 arVelocity, real64 arDelta, const char* apParam);
1741
1749 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1750 real64 arVelocity);
1751
1760 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1761 real64 arVelocity, SINOSRampParam* apParam);
1762
1771 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1772 real64 arVelocity, const char* apParam);
1773
1782 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1783 real64 arVelocity, real64 arDelta);
1784
1794 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1795 real64 arVelocity, real64 arDelta, SINOSRampParam* apParam);
1796
1806 virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel,
1807 real64 arVelocity, real64 arDelta, const char* apParam);
1808
1818 virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition,
1819 real64 arPositionVel, real64 arVelocity, real64 arDelta);
1820
1831 virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition,
1832 real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam* apParam);
1833
1844 virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition,
1845 real64 arPositionVel, real64 arVelocity, real64 arDelta, const char* apParam);
1846
1851 virtual int32 GetMoveTicks(real64 arPosition);
1852
1857 virtual int32 GetAccelerationTicks(real64 arPosition);
1858
1863 virtual int32 GetConstTicks(real64 arPosition);
1864
1869 virtual int32 GetDecelerationTicks(real64 arPosition);
1870
1876 virtual int32 GetMoveTicks(real64 arPosition, SINOSRampParam* apParam);
1877
1883 virtual int32 GetAccelerationTicks(real64 arPosition, SINOSRampParam* apParam);
1884
1890 virtual int32 GetConstTicks(real64 arPosition, SINOSRampParam* apParam);
1891
1897 virtual int32 GetDecelerationTicks(real64 arPosition, SINOSRampParam* apParam);
1898
1904 virtual int32 GetMoveTicks(real64 arPosition, const char* apParam);
1905
1911 virtual int32 GetAccelerationTicks(real64 arPosition, const char* apParam);
1912
1918 virtual int32 GetConstTicks(real64 arPosition, const char* apParam);
1919
1925 virtual int32 GetDecelerationTicks(real64 arPosition, const char* apParam);
1926
1932 virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta);
1933
1939 virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta);
1940
1946 virtual int32 GetConstTicks(real64 arPosition, real64 arDelta);
1947
1953 virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta);
1954
1961 virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1962
1969 virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1970
1977 virtual int32 GetConstTicks(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1978
1985 virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta, SINOSRampParam* apParam);
1986
1993 virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta, const char* apParam);
1994
2001 virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta, const char* apParam);
2002
2009 virtual int32 GetConstTicks(real64 arPosition, real64 arDelta, const char* apParam);
2010
2017 virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta, const char* apParam);
2018
2026 virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition,
2027 real64 arDelta);
2028
2036 virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition,
2037 real64 arDelta);
2038
2046 virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition,
2047 real64 arDelta);
2048
2056 virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition,
2057 real64 arDelta);
2058
2067 virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition,
2068 real64 arDelta, SINOSRampParam* apParam);
2069
2078 virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition,
2079 real64 arDelta, SINOSRampParam* apParam);
2080
2089 virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition,
2090 real64 arDelta, SINOSRampParam* apParam);
2091
2100 virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition,
2101 real64 arDelta, SINOSRampParam* apParam);
2102
2111 virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition,
2112 real64 arDelta, const char* apParam);
2113
2122 virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition,
2123 real64 arDelta, const char* apParam);
2124
2133 virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition,
2134 real64 arDelta, const char* apParam);
2135
2144 virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition,
2145 real64 arDelta, const char* apParam);
2146
2150 virtual int32 GetExitTicks();
2151
2156 virtual real64 GetMoveDist(real64 arTime);
2157
2163 virtual real64 GetMoveDist(real64 arPosition, real64 arTime);
2164
2170 virtual real64 GetMoveDist(real64 arTime, SINOSRampParam* apParam);
2171
2178 virtual real64 GetMoveDist(real64 arPosition, real64 arTime,
2179 SINOSRampParam* apParam);
2180
2186 virtual real64 GetMoveDist(real64 arTime, const char* apParam);
2187
2194 virtual real64 GetMoveDist(real64 arPosition, real64 arTime,
2195 const char* apParam);
2196
2202 virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks);
2203
2210 virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks,
2211 SINOSRampParam* apParam);
2212
2219 virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks,
2220 const char* apParam);
2221
2229 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2230 real64 arTime);
2231
2240 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2241 real64 arTime, SINOSRampParam* apParam);
2242
2251 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2252 real64 arTime, const char* apParam);
2253
2261 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2262 uint32 auTicks);
2263
2272 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2273 uint32 auTicks, SINOSRampParam* apParam);
2274
2283 virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition,
2284 uint32 auTicks, const char* apParam);
2285
2289 virtual uint64 GetStartTicks(real64 arDelta);
2290
2294 virtual uint64 GetTargetTicks();
2295
2299 virtual uint64 GetTargetTicks(real64 arDelta);
2300
2306 virtual uint32 SegBegin(real64 arSlowMotion = REAL64(1.0), real64 arStartVelocity = REAL64(0.0));
2307
2314 virtual uint32 SegBegin(real64 arSlowMotion, real64 arStartPosition, real64 arStartVelocity);
2315
2321 virtual uint32 SegMove(real64 arPosition);
2322
2329 virtual uint32 SegMove(real64 arPosition, SINOSRampParam* apParam);
2330
2337 virtual uint32 SegMove(real64 arPosition, const char* apParam);
2338
2345 virtual uint32 SegMove(real64 arPosition, real64 arVelocity);
2346
2354 virtual uint32 SegMove(real64 arPosition, real64 arVelocity,
2355 SINOSRampParam* apParam);
2356
2364 virtual uint32 SegMove(real64 arPosition, real64 arVelocity,
2365 const char* apParam);
2366
2371 virtual uint32 SegConst(real64 arPosition);
2372
2377 virtual uint32 SegPos(real64 arTime);
2378
2384 virtual uint32 SegPosSetTime(real64 arTime);
2385
2391 virtual uint32 SegVelocity(real64 arVelocity, SINOSRampParam* apParam);
2392
2398 virtual uint32 SegVelocity(real64 arVelocity, const char* apParam);
2399
2403 virtual real64 SegTime();
2404
2409 virtual uint32 SegRun(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2410
2414 virtual uint32 WaitInPosition();
2415
2419 virtual uint32 GetBusTicksPerAxisTick();
2420
2421 // pulling
2422
2433 virtual uint32 Pull(real64 arS, real64 arV, real64 arA, real64 arJ);
2434
2443 virtual uint32 Pull(SINOSRampData& aData);
2444
2454 virtual uint32 Pull(SINOSRampDataEx* apData);
2455
2460 {
2461 // enable trajectory generator
2462 m_pRamp->Enable();
2463 };
2464
2470 {
2471 // disable trajectory generator
2472 m_pRamp->Disable();
2473 };
2474
2475 // stop/break/continue functions
2476
2481 virtual uint32 Stop(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2482
2488 virtual uint32 Stop(SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2489
2495 virtual uint32 Stop(const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2496
2502 virtual uint32 Stop(real64 arPosition, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2503
2510 virtual uint32 Stop(real64 arPosition, SINOSRampParam* apParam,
2511 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2512
2519 virtual uint32 Stop(real64 arPosition, const char* apParam,
2520 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2521
2528 virtual uint32 StopLive();
2529
2538 virtual uint32 StopLive(real64 arSlowMotion, SINOSRampParam* apParam);
2539
2549 virtual uint32 StopLiveDelta(real64 arDelta, real64 arSlowMotion, SINOSRampParam* apParam = nullptr);
2550
2557 virtual uint32 Break(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2558
2566 virtual uint32 Break(SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2567
2575 virtual uint32 Break(const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2576
2584 virtual uint32 Break(real64 arPosition, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2585
2594 virtual uint32 Break(real64 arPosition, SINOSRampParam* apParam,
2595 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2596
2605 virtual uint32 Break(real64 arPosition, const char* apParam,
2606 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2607
2613 virtual uint32 Continue(CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2614
2621 virtual uint32 Continue(SINOSRampParam* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2622
2629 virtual uint32 Continue(const char* apParam, CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2630
2635 virtual uint32 EmergencyStop(CINOSSync* apSync);
2636
2643 virtual uint32 EmergencyStop(uint16 auType = DF_PRECONFIGURED_EME_STOP_TYPE, uint16 auDelay = DF_PRECONFIGURED_EME_STOP_DELAY,
2644 CINOSSync* apSync = DF_INOS_SYNCHRONOUS);
2645
2652 virtual uint32 EmergencyStopLive();
2653
2662 virtual uint32 EmergencyStopLive(uint16 auType, uint16 auDelay = DF_PRECONFIGURED_EME_STOP_DELAY);
2663
2664 // get/set property functions
2665
2677 virtual const char* GetName();
2678 //; return axis name
2679 virtual const char* GetType();
2680 //; return axis type
2681 virtual const char* GetUnit();
2682 //; return axis unit
2683 virtual uint32 GetCharacteristics();
2684 //; return axis characteristics
2685 virtual uint8 GetNumber()
2686 //; return axis number
2687 { return (uint8) m_pDesc->m_uNumber;};
2688 virtual uint32 GetOptions()
2689 //; return axis options
2690 { return m_pDesc->m_uOptions;};
2691 virtual char GetShort()
2692 //; return axis short character
2693 { return m_cShort[0];};
2694 virtual void SetShort(char acShort)
2695 //; set axis short character
2696 { m_cShort[0] = acShort;};
2697 virtual void SetPartner(const char* apPartner);
2698 //; set partner axis (used for special move commands)
2699 virtual void SetPartner(CINOSBaseAxis* apPartner);
2700 //; set partner axis (used for special move commands)
2701 virtual void SetCmdPosition(real64 arPosition);
2702 //; set commanded axis position (see comment above)
2703 virtual void SetPathPosition(real64 arPosition){};
2704 //; set commanded path axis position
2705 virtual void GetCmdPosition(real64& arPosition);
2706 //; get commanded axis position (see comment above)
2707 virtual void SetCmdVelocity(real64 arVelocity);
2708 //; set commanded velocity (see comment above)
2709 virtual void GetCmdVelocity(real64& arVelocity, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2710 //; get commanded velocity (see comment above)
2711 virtual void SetCmdAcceleration(real64 arAcceleration);
2712 //; set commanded acceleration (see comment above)
2713 virtual void GetCmdAcceleration(real64& arAcceleration, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2714 //; get commanded acceleration (see comment above)
2715 virtual void SetCmdDeceleration(real64 arDeceleration);
2716 //; set commanded deceleration (see comment above)
2717 virtual void GetCmdDeceleration(real64& arDeceleration, CINOSBaseRamp::ECmdFlags aeFlags = CINOSBaseRamp::eFlgCmdNone);
2718 //; get commanded deceleration (see comment above)
2719 virtual void SetCmdCruiseleration(real64 arCruiseleration);
2720 //; set commanded cruiseleration (see comment above)
2721 virtual void GetCmdCruiseleration(real64& arCruiseleration);
2722 //; get commanded cruiseleration (see comment above)
2723 virtual void SetCmdJerk(real64 arJerk, uint32 auNumber = DF_INOS_RAMP_JERK_ALL);
2724 //; set commanded jerk (see comment above)
2725 virtual void GetCmdJerk(real64& arJerk, uint32 auNumber = 0);
2726 //; get commanded jerk (see comment above)
2727 virtual void SetCmdCruiseJerk(real64 arCruiseJerk);
2728 //; set commanded cruise jerk (see comment above)
2729 virtual void GetCmdCruiseJerk(real64& arCruiseJerk);
2730 //; get commanded cruise jerk (see comment above)
2731 virtual void GetCmdRealJerk(real64& arJerk, uint32 auNumber = 0);
2732 //; get commanded real jerk (see comment above)
2733 virtual void SetCmdSlowMotion(real64 arSlowMotion, bool abUpdate = false);
2734 //; set commanded slowmotion factor
2735 virtual void GetCmdSlowMotion(real64& arSlowMotion, const char* apParam = 0);
2736 //; get commanded slowmotion factor
2737 virtual void GetActSlowMotion(real64& arSlowMotion, const char* apParam = 0);
2738 //; get actual slowmotion factor (slowmotion>slowmotionmax ? slowmotionmax : slowmotion)
2739 virtual void SetCmdRelaxTime(real64 arRelaxTime);
2740 //; set commanded relax time
2741 virtual void GetCmdRelaxTime(real64& arRelaxTime);
2742 //; get commanded relax time
2743 virtual void SetEmgDeceleration(real64 arDeceleration);
2744 //; set commanded emergency deceleration
2745 virtual void GetEmgDeceleration(real64& arDeceleration);
2746 //; get commanded emergency deceleration
2747 //; get commanded relax time
2748 virtual void SetEmgPosition(real64 arPosition);
2749 //; set emergency position
2750 virtual void GetEmgPosition(real64& arPosition);
2751 //; get emergency position
2752
2753
2766 virtual uint32 SetActPosition(real64 arPosition);
2767
2779 virtual void GetActPosition(real64& arPosition, bool abRamp = true);
2780
2788 double NormPosition(real64 arPosition) const
2789 {
2790 if (m_uFlag & DF_INOS_AXIS_FLAG_NORM){
2791 // norming active
2792 return iNormPosition(arPosition, m_rNormPos, m_uNormMode & DF_INOS_AXIS_NORM_ROUND);
2793 }
2794 else {
2795 // no norming
2796 return arPosition;
2797 }
2798 }
2799
2800 virtual void GetActPosition(real64& arPosition, uint64 auTicks);
2801 //; get actual commanded position at bus ticks auTicks
2802 virtual uint32 NrmActPosition(real64 arRange = REAL64(0.0), bool abRound = false);
2803 //; norm actual position
2804 virtual void GetActVelocity(real64& arVelocity, bool abMapped = true);
2805 //; get actual commaned velocity (see comment above)
2806 virtual void GetActAcceleration(real64& arAcceleration, bool abRamp = true);
2807 //; get actual commanded acceleratio (see comment above)n
2808 virtual void GetActJerk(real64& arJerk, bool abRamp = true);
2809 //; get actual commanded jerk (see comment above)
2810 virtual uint32 AdjActTime(real64 arDelta);
2811 //; adjust actual move time
2812
2828 virtual uint32 SetRealPosition(real64 arPosition);
2829
2841 virtual void GetRealPosition(real64& arPosition, bool abMapped = true);
2842
2843 virtual void GetRealVelocity(real64& arVelocity);
2844 //; get real velocity (see comment above)
2845 virtual void GetRealAcceleration(real64& arAcceleration);
2846 //; get real acceleration (see comment above)
2847 virtual void GetRealJerk(real64& arJerk);
2848 //; get real jerk (see comment above)
2849 virtual void GetActPosError(real64& arPosError)
2850 { arPosError = REAL64(0.0);};
2851 //; get actual position error (see comment above)
2852 virtual void GetActVelocityError(real64& arVelocityError, bool abFiltered = false)
2853 { arVelocityError = REAL64(0.0);};
2854 //; get actual position error
2855 virtual void GetUnitsPerInc(double& adUnits);
2856 //; get number of units per one inc
2857 virtual void GetIncsPerUnit(double& adIncs);
2858 //; get number of incs per unit
2859 virtual void SetMinPosition(real64 arPosition);
2860 //; set min. allowed position
2861 virtual void GetMinPosition(real64& apPosition) const;
2862 //; get min. allowed position
2863 virtual void SetMaxPosition(real64 arPosition);
2864 //; set max. allowed position
2865 virtual void GetMaxPosition(real64& arPosition) const;
2866 //; get max. allowed position
2867 virtual bool CheckPosition(real64& arPosition, bool abIgnoreMapping = false, SINOSRampParam* apParam = nullptr);
2868 //; return true if arPosition within the range or no range requested
2869 virtual void SetMinVelocity(real64 arVelocity);
2870 //; set min. allowed velocity
2871 virtual void SetMaxVelocity(real64 arVelocity);
2872 //; set max. allowed velocity
2873 virtual void SetMaxSetupVelocity(real64 arVelocity);
2874 //; set max. allowed velocity in setup mode
2875 virtual void SetMaxInitVelocity(real64 arVelocity);
2876 //; set max. allowed velocity during initialization
2877 virtual void GetMinVelocity(real64& arVelocity);
2878 //; get min. allowed velocity
2879 virtual void GetMaxVelocity(real64& arVelocity, uint32 auFlags = eMaxVelocityNone);
2880 //; get max. allowed velocity
2881 virtual void GetTrqVelocity(real64& arVelocity);
2882 //; get torque velocity
2883 virtual void GetMaxSetupVelocity(real64& arVelocity);
2884 //; get max. allowed velocity in setup mode
2885 virtual void GetMaxInitVelocity(real64& arVelocity);
2886 //; get max. allowed velocity during initialization
2887 virtual void SetMinAcceleration(real64 arAcceleration);
2888 //; set min. allowed acceleration
2889 virtual void SetMaxAcceleration(real64 arAcceleration);
2890 //; set max. allowed acceleration
2891 virtual void SetMaxAccelerationPull(real64 arAcceleration);
2892 //; set max. allowed acceleration during pull
2893 virtual void GetMinAcceleration(real64& arAcceleration);
2894 //; get min. allowed acceleration
2895 virtual void GetMaxAcceleration(real64& arAcceleration);
2896 //; get max. allowed acceleration
2897 virtual void GetMaxAccelerationPull(real64& arAcceleration);
2898 //; get max. allowed acceleration during pull
2899 virtual void GetTrqAcceleration(real64& arAcceleration);
2900 //; get torque acceleration
2901 virtual void SetMinDeceleration(real64 arDeceleration);
2902 //; set min. allowed deceleration
2903 virtual void SetMaxDeceleration(real64 arDeceleration);
2904 //; set max. allowed deceleration
2905 virtual void GetMinDeceleration(real64& arDeceleration);
2906 //; get min. allowed deceleration
2907 virtual void GetMaxDeceleration(real64& arDeceleration);
2908 //; get max. allowed deceleration
2909 virtual void GetTrqDeceleration(real64& arDeceleration);
2910 //; get tourque deceleration
2911 virtual void SetMinCruiseleration(real64 arCruiseleration);
2912 //; set min. allowed cruiseleration
2913 virtual void SetMaxCruiseleration(real64 arCruiseleration);
2914 //; set max. allowed cruiseleration
2915 virtual void GetMinCruiseleration(real64& arCruiseleration);
2916 //; get min. allowed cruiseleration
2917 virtual void GetMaxCruiseleration(real64& arCruiseleration);
2918 //; get max. allowed cruiseleration
2919 virtual void SetMinJerk(real64 arJerk);
2920 //; set min. allowed jerk
2921 virtual void SetMaxJerk(real64 arJerk);
2922 //; set max. allowed jerk
2923 virtual void GetMinJerk(real64& arJerk);
2924 //; get min. allowed jerk
2925 virtual void GetMaxJerk(real64& arJerk);
2926 //; get max. allowed jerk
2927 virtual void GetEpsilon(real64& arEpsilon);
2928 //; get axis epsilon
2929 virtual void GetCycleTime(real64& arCycleTime, bool abOversampled=false);
2930 //; get axis cycle time [sec]
2931 virtual void GetCycleTimeUs(uint32& auCycleTime);
2932 //; get axis cycle time [us]
2933 virtual void GetCycleTimeNs(uint32& auCycleTime);
2934 //; get axis cycle time [ns]
2935 virtual uint8 GetOversampling();
2936 //; get oversampling factor
2937 virtual uint16 GetCycleNumber();
2938 //; get axis cycle number
2939 virtual uint16 GetCycleId();
2940 //; get axis cycle id
2941 virtual void UpdateCycleId(uint16 auCycleId);
2942 //; inform about updated cycle id (core id and cycle number could have changed)
2943 virtual uint8 GetBusId();
2944 //; get axis bus id
2945 virtual uint32 SetParam(const char* apName, real64 arValue);
2946 //; universal set parameter with aName to aValue and return error code
2947 virtual uint32 SetParam(const char* apName, uint64 auValue)
2948 //; universal set parameter with aName to aValue and return error code
2949 { return defVarNotFound;};
2950 virtual uint32 GetParam(const char* apName, real64& arResult);
2951 //; universal get parameter with aName to aResult and return error code
2952 virtual uint32 GetParam(const char* apName, uint64& auResult)
2953 //; universal get parameter with aName to aResult and return error code
2954 { return defVarNotFound;};
2955 virtual volatile real64* GetParamAdr(const char* apName);
2956 //; universal get address of parameter with aName or NULL if not found
2957 void SetFlag(uint32 auFlag)
2958 { INOS_OR(m_uFlag, auFlag);};
2959 //; set axis flags
2960 void ClrFlag(uint32 auFlag)
2961 { INOS_AND(m_uFlag, ~auFlag);};
2962 //; clear axis flags
2963 uint32 GetFlag()
2964 { return m_uFlag & m_uFlagEnb;};
2965 //; get axis flags
2966 void Absolute()
2967 { ClrFlag(DF_INOS_AXIS_FLAG_INCR);};
2968 //; switch to absolute mode
2969 void Incremental()
2970 { SetFlag(DF_INOS_AXIS_FLAG_INCR);};
2971 //; switch to incremental mode
2972 virtual uint32 SetState(uint32 auState);
2973 //; set axis state (used to set from ready to active to be able to force sync)
2974 virtual int32 GetState();
2975 //; get axis state
2976 virtual int32 GetState(uint32& auRampState);
2977 //; get axis and ramp state
2978 const char* GetStateText() const;
2979 //; \return A human readable text describing the current axis state.
2980 virtual bool IsBusy() const;
2981 //; Whether the axis is busy or not. Busy means: The axis is "used"
2982 //; by someone. E.g. the axis is also busy if it's in the "Coupled"
2983 //; state, which means that this axis is the "slave" and therefore
2984 //; it gets its positions/commands from its master axis. The axis
2985 //; is also busy if it is in "break" state (which means it is not
2986 //; currently moving, but it'll continue an already started move
2987 //; later). And it is also 'busy' if it's in "relax" state. In
2988 //; fact, the axis is always busy, unless it is in undefined,
2989 //; disabled, active, peace or read state.
2990 //; return true if the axis is currently busy. false otherwise.
2991 virtual uint32 GetError(bool abResolveExternal = false);
2992 //; get axis error
2993 virtual uint64 GetErrorEx(bool abResolveExternal = false);
2994 //; get extended axis errors
2995 virtual uint32 GetError(uint32& auRampError, bool abResolveExternal = false);
2996 //; get axis and ramp error
2997 virtual uint64 GetErrorEx(uint64& auRampError, bool abResolveExternal = false);
2998 //; get extended axis and ramp error
2999 virtual uint32 GetErrorHook() { return m_uErrorHook; };
3000 //; get axis and ramp error
3001 virtual bool IsErrorFatal()
3002 //; return true if error is fatal
3003 { return false;};
3004 virtual uint32 GetWarning(bool abResolveExternal = false);
3005 //; get axis warning
3006 virtual uint64 GetWarningEx(bool abResolveExternal = false);
3007 //; get extended axis warning
3008 virtual uint32 GetWarning(uint32& auRampWarning, bool abResolveExternal = false);
3009 //; get axis and ramp warning
3010 virtual uint64 GetWarningEx(uint64& auRampWarning, bool abResolveExternal = false);
3011 //; get extended axis and ramp warning
3012 virtual uint32 GetLimitViolation() { return m_uLimitViolation;};
3013 //; get axis limit violation
3014 virtual void SetErrorMask(uint32 auMask) { m_uErrorMask = auMask;};
3015 //; set error mask and return old mask
3016 virtual void SetWarningMask(uint32 auMask) { m_uWarningMask = auMask;};
3017 //; set warning mask and return old mask
3018 virtual void SetLimitViolation(uint32 auLimitViolation)
3019 { INOSOr(&m_uLimitViolation, auLimitViolation);};
3020 //; set axis limit violation
3021 virtual uint32 GetErrorMask() { return m_uErrorMask;};
3022 //; get actual error mask
3023 virtual uint32 GetWarningMask() { return m_uWarningMask;};
3024 //; get actual warning mask
3025 virtual uint32 AcceptError();
3026 //; accept all errors
3027 virtual uint32 AcceptError(uint32 auError);
3028 //; accept error
3029 virtual uint32 AcceptError(uint32 auError, uint32 auRampError);
3030 //; accept error
3031 virtual uint32 AcceptWarning();
3032 //; accept all warnings
3033 virtual uint32 AcceptWarning(uint32 auWarning);
3034 //; accept warning
3035 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning);
3036 //; accept warning
3037 virtual uint32 AcceptLimitViolation() { m_uLimitViolation = 0; return 0;};
3038 //; get axis limit violation
3039
3040 // param set functions
3041 virtual void eCreateParamSet(const char* apSetName);
3042 //; Same as CreateParamSet but for INCO registration (as it doesn't return
3043 //; a pointer)
3044 virtual CINOSBaseAxisParamSet* CreateParamSet(const char* apSetName);
3045 //; create new param set with name apSetName and return pointer to it
3046 virtual void DestroyParamSet(const char* apSetName);
3047 //; destroy param set with name apSetName
3048 virtual bool SelectParamSet(const char* apSetName);
3049 //; select param set with name apSetName
3050
3051 enum {
3052 eFlgParamSetNone = 0x00000000,
3053 eFlgParamSetSearchGlobal = 0x00000001,
3054 eFlgParamSetIgnoreOverwrite = 0x00000002
3055 };
3056
3057 virtual CINOSBaseAxisParamSet* GetParamSet(const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3058 //; get pointer to param set with name apSetName
3059 virtual SINOSRampParam* GetRampParam(const char* apSetName, uint32 auFlags = eFlgParamSetSearchGlobal);
3060 //; get pointer to ramp param of set apSetName
3061 virtual bool GetRampParam(const char* apSetName, char* apResult, uint32 auSize,
3062 SINOSRampParam& aResult, uint32 auFlags = eFlgParamSetSearchGlobal);
3063 //; copy ramp param data to aResult and return true if successful, copy also to original speed set
3064 //; name to apResult. This method is also able to handle the xxx[V/A/B=yyy] case
3065 virtual void PreDestroyRampParam(SINOSRampParam* apParam);
3066 //; use this method to inform axis, that we're about to destroy a previously
3067 //; used speed set
3068
3069 static void eCreateGlobalParamSet(const char* apSetName);
3070 //; Same as CreateParamSet but for INCO registration (as it doesn't return
3071 //; a pointer)
3072 static CINOSBaseAxisParamSet* CreateGlobalParamSet(const char* apSetName);
3073 //; create new param set with name apSetName and return pointer to it
3074 static void DestroyGlobalParamSet(const char* apSetName);
3075 //; destroy param set with name apSetName
3076 static CINOSBaseAxisParamSet* GetGlobalParamSet(const char* apSetName);
3077 //; get pointer to param set with name apSetName
3078 static SINOSRampParam* GetGlobalRampParam(const char* apSetName);
3079 //; get pointer to ramp param of set apSetName
3080
3081 // pos type functions
3082 virtual void SetPosType(uint32 auPosType)
3083 //; set pos type
3084 { m_uPosType = auPosType; };
3085 virtual void SetPosTime(uint32 auPosTime)
3086 //; set pos time
3087 { m_uPosTime = auPosTime; };
3088 virtual void SetPosTimeout(uint32 auPosTimeout)
3089 //; set pos timeout
3090 { m_uPosTimeout = auPosTimeout; };
3091 virtual void SetPosTolerance(real64 arPosTolerance)
3092 //; set pos tolerance
3093 { m_rPosTolerance = arPosTolerance; };
3094
3095 // param set extensions
3096
3097 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3099 SINOSParamSetExtension* GetParamSetExtension(uint32 auExtensionId)
3100 {
3101 // handle over
3102 return m_pRamp->GetParamSetExtension(auExtensionId);
3103 }
3105 real64 GetMoveTimeAdjust(SINOSRampParam* apParam);
3106 #endif
3107
3108 // caching functions
3109
3110 void EnableCache(uint32 auSize = 32);
3111 //; create moving cache with size auSize if nessecary and enable it
3112 CINOSRampCache* EnableCache(CINOSRampCache* apCache);
3113 //; set actual moving cache to apCache and return old one or 0
3114 CINOSRampCache* DisableCache();
3115 //; disable moving cache and return old one
3116 void ReEnableCache();
3117 //; Reenables a previously disabled ramp cache. This function is
3118 //; useful if the cache feature has temporarily been disabled
3119 //; before (DisableCache). Note: This function has no effect if
3120 //; the ramp does not yet owns a cache object. Also: It's safe
3121 //; to call this function while the cache is already enabled.
3122 void FlushCache();
3123 //; flush ramp cache
3124 void SetCacheEpsilon(real64 arEpsilon);
3125 //; set new cache 'epsilon' (standard is = 0.0)
3126 #ifdef INOS_MOVE_CACHE_SUPPORT
3127 void FlushMoveCache();
3128 //; flush moving cache
3129 #endif
3130
3131 // safety
3132
3133 #ifdef INOS_SAFETY_SUPPORT
3135 virtual void EnableSafetySupervision();
3137 virtual bool DisableSafetySupervision();
3139 virtual void ToggleSafetySupervision();
3140 #endif
3141
3142 // miscellaneous functions
3143
3144 virtual CINCOObject* GetRegister();
3145 //; do inco registration and return pointer to it
3146 virtual void SetRamp(CINOSBaseRamp* apRamp);
3147 //; set new ramp geni
3148 CINOSBaseRamp* GetRamp()
3149 { return m_pRamp;};
3150 //; return pointer to ramp geni
3151 virtual CINOSMapping* GetMapping()
3152 { return m_pMapping;};
3153 //; return pointer to actual axis mapping
3154 uint32 GetMappingIndex()
3155 { return m_uMappingIndex;};
3156 //; get actual mapping index
3157
3158 // miscellaneous functions
3159
3160 virtual uint32 RegisterHook(uintid& auHookId, void* apHandler, void* apObject,
3161 int32 aiOrder, bool abEnabled=true);
3162 //; register bus hook that runs in the same bus context, core,
3163 //; category, cyclenumber and cycletime as the axis
3164 virtual uint32 UnRegisterHook(uintid auHookId);
3165 //; unregister bus hook
3166 virtual uint32 EnableHook(uintid auHookId);
3167 //; enable hook
3168 virtual uint32 DisableHook(uintid auHookId);
3169 //; disable hook
3170 virtual uint32 RegisterPostHook(uintid& auHookId, void* apHandler, void* apObject,
3171 int32 aiOrder, bool abEnabled=true);
3172 //; register post bus hook that runs in the same bus context, core,
3173 //; category, cyclenumber and cycletime as the axis
3174 virtual uint32 UnRegisterPostHook(uintid auHookId);
3175 //; unregister bus hook
3176 virtual uintid RegisterErrorHook(void* apHandler, void* apObject = 0);
3177 //; register error hook and return hook id
3178 virtual void UnRegisterErrorHook(uintid auHookId);
3179 //; unregister error hook
3180 virtual uintid RegisterWarningHook(void* apHandler, void* apObject = 0);
3181 //; register Warning hook and return hook id
3182 virtual void UnRegisterWarningHook(uintid auHookId);
3183 //; unregister Warning hook
3184 #ifdef INOS_SAFETY_SUPPORT
3185 virtual uintid RegisterSOSHook(void* apHandler, void* apObject = 0);
3186 //; register SOS hook and return hook id
3187 virtual void UnRegisterSOSHook(uintid auHookId);
3188 //; unregister SOS hook
3189 #endif
3190
3191 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3193 virtual void RegisterExtension(IINOSBaseAxisExtension* apExtension);
3195 virtual void UnRegisterExtension(IINOSBaseAxisExtension* apExtension);
3196 #endif
3197
3198 // auto sync
3199
3200 virtual void EnableSync(real64 arPosition = REAL64(0.0),
3201 uint8 auMode = DF_INOS_AXIS_SYNC_NOADJ){};
3202 //; enable auto syncing (at sync set pos = arPosition)
3203 virtual void DisableSync(){};
3204 //; disable auto syncing
3205 virtual void GetSyncCount(uint32& auSyncCount)
3206 { auSyncCount = 0;};
3207 //; return actual sync counter
3208 virtual void SetSyncCount(uint32 auSyncCount){};
3209 //; set sync counter
3210
3211 // auto norm
3212
3233 virtual void EnableNorm(uint8 auMode = DF_INOS_AXIS_NORM_AFTER,
3234 uint8 auMoveDir = DF_INOS_AXIS_NORM_MOVE_DIR_NO,
3235 real64 arNormPos = REAL64(0.0));
3237 virtual void DisableNorm();
3238
3240 virtual uint8 GetNormMoveDir()
3241 { return m_uNormMoveDir; };
3242
3244 virtual void SetNormMoveDir(uint8 auNormMoveDir)
3245 { m_uNormMoveDir = auNormMoveDir; };
3246
3248 virtual uint8 GetNormMode()
3249 { return m_uNormMode; };
3250
3252 virtual void SetNormMode(uint8 auNormMode)
3253 { m_uNormMode = auNormMode; };
3254
3255 // current limitation
3256
3257 virtual void EnableCurLimit(){};
3258 //; enable current limitation
3259 virtual void DisableCurLimit(){};
3260 //; disable current limitation
3261 virtual bool GetCurLimit()
3262 //; return state of current limitation
3263 { return (m_uFlag & DF_INOS_AXIS_FLAG_CURL) != 0;};
3264
3265 enum EActualType {
3266 eActInput,
3267 eActActual,
3268 eActOutput
3269 };
3271 SINOSRampData* GetActual(EActualType aeType = eActOutput, bool abCopy = true)
3272 {
3273 // check reqeusted type
3274 if (aeType == eActInput) {
3275 // return pointer to ramp values
3276 return m_pActRamp;
3277 } // end if
3278 else if (aeType == eActActual) {
3279 // return pointer to actual values
3280 return m_pActual;
3281 } // end if
3282 else {
3283 // copy requested ?
3284 if (abCopy && (m_pActual == m_pActRamp)) {
3285 // yes
3287 }
3288 // actuals are now control avalues
3290 // return pointer to output values
3291 return m_pActControl;
3292 } // end else
3293 };
3302 { return GetActual(eActOutput, false);};
3303
3304 // safety move
3305
3306 virtual void SetMoveSafeMin(real64 arMin, real64 arFact1=REAL64(0.0),
3307 real64 arFact2=REAL64(0.0));
3308 //; set move safe minimum : arMin=requested minimum,
3309 //; safe1=safe1+arFact(MoveSafeMin-calcedMin), safe2=dito
3310 virtual void ResetMoveSafeMin();
3311 //; reset move safe minimum
3312
3313 // setup mode
3314
3315 void EnableSetupMode();
3316 //; enable setup mode
3317 void DisableSetupMode();
3318 //; disable setup mode
3319 virtual bool CheckSetupMode();
3320 //; return true if setup mode active and fullfilled
3321
3322 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3323 void* GetCustomerSpecificData() const { return m_pCustomerSpecificData; }
3324 //; \return The pinter to the customer specific data (or NULL if
3325 //; no such data are set).
3326 void SetCustomerSpecificData(void* apData) { m_pCustomerSpecificData = apData; }
3327 //; Sets apData to be the "customer specific data" of this axis.
3328 //; The function doesn't care about any previously set customer
3329 //; specific data: The caller is 100% responsible for freeing amy
3330 //; resource related to these data!
3331 //; This class will never access the data in any way apart from
3332 //; initialization to NULL during object contstruction!
3333 #endif
3334
3336 virtual uint32 GetToggleCnt()
3337 { return m_uToggleCnt; };
3339 virtual void SetToggleCnt(uint32 auSetVal)
3340 { m_uToggleCnt=auSetVal; };
3341
3342 #ifdef INOS_MOVEPATH_SUPPORT
3343 void SetMovePathActuals(struct SINOSMovePathActual* apActuals);
3344 #endif
3345
3346 // torque limitation
3347
3354
3355 // multicore
3356
3359 { return m_uCoreId; };
3360
3361 #ifdef INOS_SAFETY_SUPPORT
3363 uint32 GetSafetyUid()
3364 { return m_uSafetyUid; };
3366 uint32 GetSafetyType()
3367 { return m_uSafetyType; };
3369 ESafetyFunction GetSafetyFunction() const {
3370 return m_eSafetyFunction;
3371 }
3372 #endif
3373
3374 //--- internals --------------------------------------------------------
3375
3376 // after this function you can register new ramps
3377 friend void _INI_0000_CINOSBaseAxis();
3378 friend void _INI_0400_CINOSBaseAxis();
3379 friend class CINOSRegisterBaseAxis;
3380 friend class CINOSMapping;
3381 friend class CINOSPhysicalAxis;
3382 friend void _INI_0400_INFO_DCM();
3383 friend class CINOSBaseAxisTest;
3384 friend class CINOSMovePathResourcePosAxis;
3385 friend class CINOSMcRobotCmdMove;
3386 friend class CINOSMcRobotCmdInit;
3387 friend class CINOSMcRobotCmdCalib;
3388 friend class CINOSMcTargetAxis;
3389
3390 // protected member functions
3391 protected:
3392 void Create();
3393 //; create base axis
3394 real64 iNormPosition(real64 arPosition, real64 arRange = REAL64(0.0), bool abRound = false) const;
3395 //; norm arPosition to 0..360
3396 void Signal(CINOSSync*& apSync);
3397 //; signal sync object if requested
3398 virtual void SignalSync(CINOSSync& apSync);
3399 //; signal given sync object
3400 virtual void SetError(uint32 auErrors);
3401 //; set axis error (and call error hook if nessecary)
3402 virtual void SetWarning(uint32 auWarnings);
3403 //; set axis warning (and call warning hook if nessecary)
3404#ifdef INOS_SAFETY_SUPPORT
3405 virtual void CallSOSHooks();
3406 //; call SOS hooks
3407#endif // INOS_SAFETY_SUPPORT
3408 bool Enter(uint32 auCommand, CINOSSync* apSync = 0);
3409 //; check if command allowed in current state and return false if not
3410 void Exit ();
3411 //; leave critical section
3412 void Exit (CINOSSync*& apCmdSync, CINOSSync* apSync);
3413 //; leave critical section and wait if nessecary
3414 bool IsCritical()
3415 { return m_CmdLock.GetOwner() != 0;};
3416 //; return true if somebody stays in critical section
3417 virtual void iInActivate();
3418 //; inactivate axis
3419 virtual void iStop(SINOSRampParam* apParam);
3420 //; internal stop
3421 virtual void iEmergencyStop(bool abLive = false);
3422 //; internal emergency stop
3423 virtual void iPowerEmergencyStop();
3424 //; internal power failure emergency stop
3425 virtual uint32 iCursor(bool abPositive, uint32 auWaitTime,
3426 real64 arStep, SINOSRampParam* apParam);
3427 //; internal cursor
3428 virtual uint32 iCursor(real64 arPosition, uint32 auWaitTime,
3429 real64 arStep, SINOSRampParam* apParam);
3430 //; internal cursor
3431 real64 iGetAbsPosition(real64 arRelPosition);
3432 //; get absolute position of arRelPosition
3433 real64 iGetNrmAbsPosition(real64 arRelPosition, SINOSRampParam* apParam = nullptr, bool abConsiderStop = false);
3434 //; get normed absolute position of arRelPosition
3435 virtual void iSetCycleTime(real64 arCycleTime);
3436 //; set axis cycle time [sec]
3437 virtual void iRegisterAxis();
3438 //; register axis
3439 ICACHE virtual void iPreMap();
3440 //; pre mapping handler
3441 ICACHE virtual void iPostMap();
3442
3443 ICACHE inline void iCheckRampLimits() {
3444 if (m_pRamp->GetError() & ER_INOS_RAMP_VMAX_REACHED) {
3445 SetError(ER_INOS_AXIS_RAMP_LIMIT);
3446 }
3447 }
3448
3449 //; post mapping handler
3450 ICACHE virtual void iPostWrite();
3451 //; post bus write handler
3452 void SetMapping(CINOSMapping* apMapping, uint32 auIndex)
3453 { m_pMapping = apMapping; m_uMappingIndex = auIndex;
3454 m_pRamp->SetMapping(apMapping, auIndex);};
3455 //; set actual axis mapping
3456 void ResetMapping()
3457 { m_pMapping = 0; m_uMappingIndex = 0;
3458 m_pRamp->ResetMapping();};
3459 //; reset actual axis mapping
3460 virtual bool iInPosition(bool abEarlyDone);
3461 //; returns true if requested position reached
3462 virtual bool iInPosition();
3463 //; returns true if requested position reached (originally, only
3464 //; this overload existed. Then, the abEarlyDone was introduced.
3465 //; Unfortunately, as this function was already 'virtual' we could
3466 //; not just add abEalyDone with a default value, as it would
3467 //; cause derived class, implemented by customers, to not function
3468 //; properly anymore.
3469 virtual void iAdjPreviousPositions(real64 arDifference);
3470 //; adjust previous axis positions (used in limit checker)
3471 virtual void iSetActRampPosition(real64 arPosition);
3472 //; set actual ramp geni position
3473 virtual bool IsCheckPositionRequired();
3474 //; return true if check position required
3475 void SetDefaultParamIfRequired();
3476 //; Sets the "default param" values (V,A,J) to the ramp if those
3477 //; ramp values are current undefined (means: are 0.0). Function does
3478 //; nothing otherwise, or if no "default param" has been specified
3479 //; in the axis config (e.g. in dt2)
3480 void iSetupPositionType(SINOSRampParam* apParam = 0);
3481 //; init position type handling
3482 virtual void iResetTrajectory();
3483 //; reset trajectory planner
3484
3485 void iCoreMismatchError();
3486 //; set core mismatch axis error
3487
3488 INOS_INLINE void AtomicEnter(uint32& auToken)
3489 {
3490 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3491 if (pBus) {
3492 pBus->AtomicGatherEnter(auToken);
3493 } else {
3494 // no bus -> no token
3495 auToken = 0;
3496 }
3497 }
3498
3499 INOS_INLINE bool AtomicExit(uint32 auToken)
3500 {
3501 CINOSBus* pBus=CINOSBus::FindBus(GetBusId());
3502 if (pBus) {
3503 return pBus->AtomicGatherExit(auToken);
3504 } else {
3505 // no bus -> always OK
3506 return true;
3507 }
3508 }
3509
3510 // private member functions (external versions, because until now we are not
3511 // able to register functions with default parameters)
3512 private:
3513 uint32 eEnable();
3514 //; enable axis
3515 uint32 eDisable();
3516 //; disable axis
3517 uint32 eActivate(bool abCheckPos, bool abSimulatePos, bool abSimulateOut,
3518 bool abSimulateAct);
3519 //; activate physical axis
3520 uint32 eInActivate();
3521 //; inactivate physical axis
3522 uint32 eRelax(uint32 auTimeMs);
3523 //; relax coupled axis
3524 uint32 eMove(real64 arPosition);
3525 //; move to position with acc/deceleration and velocity
3526 uint32 eMove(real64 arPosition, char* apParam);
3527 //; move to position with apParam parameters
3528 uint32 eMoveTime(real64 arPosition, real64 arTime);
3529 //; move to position with acc/deceleration and velocity
3530 uint32 eMoveTime(real64 arPosition, real64 arTime, char* apParam);
3531 //; move to position with apParam parameters
3532 uint32 eMoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3533 //; move to position with acc/deceleration and velocity
3534 uint32 eMoveApp(real64 arPosition, real64 aPositionVel, real64 arVelocity, char* apParam);
3535 //; move to position with apParam parameters
3536 uint32 eMoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity);
3537 //; move to position with acc/deceleration and velocity
3538 uint32 eMoveDep(real64 arPosition, real64 aPositionVel, real64 arVelocity, char* apParam);
3539 //; move to position with apParam parameters
3540 uint32 eSync(real64 arPosition);
3541 //; sync axis
3542 uint32 eSync(real64 arPosition, char* apParam);
3543 //; sync axis
3544 uint32 eSync(real64 arPosition, real64 arSyncPosition);
3545 //; sync axis
3546 uint32 eSync(real64 arPosition, real64 arSyncPosition, char* apParam);
3547 //; sync axis
3548 uint32 eCursor();
3549 //; cursor
3550 uint32 eUpdate();
3551 //; update
3552 uint32 eUpdate(const char* apParam);
3553 //; update
3554 uint32 eEndless(bool abPositive);
3555 //; move to position with acc/deceleration and velocity
3556 uint32 eEndless(bool abPositive, const char* aparam);
3557 //; move to position with acc/deceleration and velocity
3558 uint32 eStop();
3559 //; stop
3560 uint32 eStop(const char* apParam);
3561 //; stop
3562 uint32 eStop(real64 arPosition);
3563 //; stop
3564 uint32 eStop(real64 arPosition, const char* apParam);
3565 //; stop
3566 uint32 eBreak();
3567 //; break
3568 uint32 eBreak(const char* apParam);
3569 //; break
3570 uint32 eBreak(real64 arPosition);
3571 //; break
3572 uint32 eBreak(real64 arPosition, const char* apParam);
3573 //; break
3574 uint32 eEmergencyStop();
3575 //; emergency stop
3576 uint32 eEmergencyStop(uint32 auType, uint32 auDelay);
3577 //; emergency stop
3578 uint32 eContinue();
3579 //; stop
3580 uint32 eContinue(const char* apParam);
3581 //; stop
3582 void eSetSlowMotion(real64 arSlowMotion);
3583 //; stop
3584 void ePos1();
3585 //; move to pos 1
3586 void ePos2();
3587 //; move to pos 2
3588 void eToggle();
3589 //; toggle between pos 1 and pos 2
3590 void eZero();
3591 //; set act pos = 0
3592 uint32 eAcceptError();
3593 //; accept all pending errors
3594 uint32 eAcceptWarning();
3595 //; accept all pending warnings
3596 void iToggling();
3597 //; toggle handler (called cyclic)
3598 void iCursoring();
3599 //; toggle handler (called cyclic)
3600 bool iTrack(const char* apVarName, real64 arFactor, uint32 auFilterLength);
3601 //; track the variable apVarName
3602 uint32 _Track(const char* apVarName, real64 arFactor, uint32 auFilter,
3603 uint32 auDirection, SINOSRampParam* apParam);
3604 void iTrackFollow();
3605 //; tracking handler (called cyclic)
3606 void iTrackKeep();
3607 //; tracking handler (called cyclic)
3608
3609 // protected members
3610 protected:
3611 int32 m_uState;
3612 //; actual state
3613 uint32 m_uSubState;
3614 //; actual sub state
3615 uint32 m_uNxtState;
3616 //; next state
3617 uint32 m_uPrvState;
3618 //; previous state
3619 uint32 m_uBrkState;
3620 //; state before break
3621 uint32 m_uRmpState;
3622 //; state of ramp geni before GetSVAJ
3623 uint32 m_uError;
3624 //; actual errors
3625 uint32 m_uErrorMask;
3626 //; actual error mask
3627 uint32 m_uErrorHook;
3628 //; actual hook error
3629 uint32 m_uWarning;
3630 //; actual warnings
3631 uint32 m_uWarningMask;
3632 //; actual warnings mask
3633 uint32 m_uLimitViolation;
3634 //; actual limit violation mask
3635 uint32 m_uFlag;
3636 //; axis flags (zero, norm, ...)
3637 uint32 m_uFlagEnb;
3638 //; axis flags enable
3639
3640 const char* m_pName;
3641 //; axis name
3642 const char* m_pType;
3643 //; axis type
3644 char m_cShort[2];
3645 //; short character
3646 CINOSBaseAxis* m_pPartner;
3647 //; pointer to partner axis
3648 CINCOObject* m_pRegister;
3649 //; pointer to inco registration
3650 CINCOObject* m_pCommand;
3651 //; pointer to inco registration of commands
3652 CINCOObject* m_pTest;
3653 //; pointer to inco registration of axis test
3654 CINCOObject* m_pError;
3655 //; pointer to inco registration of axis errors
3656 CINCOObject* m_pWarning;
3657 //; pointer to inco registration of axis warnings
3658 CINCOObject* m_pLimitViolation;
3659 //; pointer to inco registration of limit violations
3660 CINCOObject* m_pFlag;
3661 //; pointer to inco registration of axis flags
3662 CINCOObject* m_pState;
3663 //; pointer to inco registration of axis state
3664 CINOSBaseRamp* m_pRamp;
3665 //; pointer to ramp generator
3666 CINOSLimitChecker* m_pLimitChecker;
3667 //; pointer to limit checker
3668 CINOSMapping* m_pMapping;
3669 //; pointer to actual mapping
3670 uint32 m_uMappingIndex;
3671 //; index this axis has in the actual mapping
3672 SINOSBaseAxis* m_pDesc;
3673 //; pointer to object descriptor
3674 CINOSMutex m_CmdLock;
3675 //; mutex to guarantee mutual exclusion in command handling
3676 CINOSSync* m_pActivate;
3677 //; pointer to synch object to be signaled on end of activate
3678 CINOSSync* m_pInActivate;
3679 //; pointer to synch object to be signaled on end of inactivate
3680 CINOSSync* m_pMove;
3681 //; pointer to synch object to be signaled on end of move
3682 CINOSSync* m_pEndless;
3683 //; pointer to synch object to be signaled on end of endless
3684 CINOSSync* m_pStop;
3685 //; pointer to synch object to be signaled on end of stop
3686 CINOSSync* m_pEmStop;
3687 //; pointer to synch object to be signaled on end of emstop
3688 CINOSSync* m_pBreak;
3689 //; pointer to synch object to be signaled on end of break
3690 CINOSSync* m_pVelocity;
3691 //; pointer to synch object to be signaled on velocity reached
3692 CINOSSync* m_pContinue;
3693 //; pointer to synch object to be signaled on end of continue
3694 CINOSSync* m_pWaitInPosition;
3695 //; pointer to synch object to be signaled on end of waitinposition
3696 CINOSSync* m_pWaitInPositionDyn;
3697 //; pointer to dynamically created synch object to be signaled on end of waitinposition
3698 CINOSSync* m_pWaitTicks;
3699 //; pointer to synch object to be signaled on end of waitticks
3700 uint32 m_uWaitTicks;
3701 //; to to be waited for
3702 uintid m_uPreMapHookId;
3703 //; id of pre map hook
3704 uintid m_uPostMapHookId;
3705 //; id of post map hook
3706 uintid m_uPostWriteHookId;
3707 //; id of post bus write hook
3708 uintid m_uPreHookId;
3709 //; id of pre axis command hooks (e.g. track)
3710 #ifdef INOS_SAFETY_SUPPORT
3711 bool m_bPreHookSafetyEnabled;
3713 #endif
3714 uintid m_uPostHookId;
3715 //; id of post hook command hooks (e.g. toggle)
3716 SINOSBaseAxisHook* m_pErrorHooks;
3717 //; pointer to list of error hooks
3718 SINOSBaseAxisHook* m_pWarningHooks;
3719 //; pointer to list of error hooks
3720 TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pParamSets;
3721 //; pool of all param sets
3722 static CINOSMutex m_GlobalParamSetsMutex;
3723 //; global param set mutex
3724 static TINOSNameBalancedBinaryTree<CINOSBaseAxisParamSet>* m_pGlobalParamSets;
3725 //; pool of all param sets
3726 #ifdef INOS_MOVE_CACHE_SUPPORT
3727 CINOSMoveCache* m_pMoveCache;
3728 //; pointer to move cache
3729 #endif
3730
3731 // actual commanded values
3732
3741
3742 // previous three commanded values
3743 SINOSRampData m_sPreviousVrt[3];
3744
3745 // test values
3746
3747 real64 m_rPos1;
3748 //; toggle position 1
3749 real64 m_rPos1Max;
3750 //; max. toggle position 1
3751 real64 m_rPos2;
3752 //; toggle position 2
3753 real64 m_rPos2Max;
3754 //; max. toggle position 2
3755 uint32 m_uDelay;
3756 //; delay in ms between toggles
3757 uint32 m_uDelayMax;
3758 //; max. delay in ms between toggles
3759 uint32 m_uDelayAct;
3760 //; act. delay in ms between toggles
3761 int32 m_iTicks;
3762 //; system ticks to handle delay
3763 uint32 m_uToggleCnt;
3764 //; toggle counter
3765
3766 // miscelanselous
3767 real64 m_rFeedPerTurn;
3768 //; feed per turn (used in method NormPosition)
3769 real64 m_rFeedPerTurn_1;
3770 //; 1 / feed per turn (used in method NormPosition)
3771 real64 m_rInertia;
3772 //; inertia (used in torque limitation)
3773
3774 inosName32 m_cSelectedParamName;
3775 //; last selected param name
3776
3777 // emergency values
3778
3779 uint32 m_uEmergencyType;
3780 //; type of emergency stop (0-Stop, 1-Stop/InActivate, 2-InActivate, 3-none
3781 //; 4-Position, 5-Position/InActivate)
3782 uint32 m_uEmergencyDelay;
3783 //; Delay [ms] after Stop till InActivate (Type = 1)
3784 real64 m_rEmergencyPosition;
3785 //; emergency position
3786 uint16 m_uIntEmergencyType;
3787 //; type of emergency stop (0-Stop, 1-Stop/InActivate, 2-InActivate)
3788 uint16 m_uIntEmergencyDelay;
3789 //; Delay [ms] after Stop till InActivate (Type = 1)
3790 SINOSRampParam* m_pEmergency;
3791 //; pointer to emergency speed set (if available)
3792 SINOSRampParam* m_pPowerFailure;
3793 //; pointer to power failure speed set (if available)
3794
3795 // cursoring
3796 uint32 m_uCurWaitTime;
3797 //; wait afet initial move
3798 real64 m_rCurPosition;
3799 //; cursoring direction
3800 SINOSRampParam* m_pCurParam;
3801 //; cursoring params
3802
3803 // syncing
3804 uint8 m_uSyncMode;
3805 //; requested sync mode
3806 // sync methods available
3807 bool m_bSyncAvailable = true;
3808
3809 // norming
3810 uint8 m_uNormMode;
3811 //; requested norm mode
3812 uint8 m_uNormMoveDir;
3813 //; requested norm move direction
3814 real64 m_rNormPos;
3815 //; requested norm position
3816
3817 // multicore
3818
3821
3822 // tracking
3823 uint16 m_uTrackValType;
3824 //; tracking value type
3825 uint16 m_uTrackDir;
3826 //; tracking direction (0-pos and neg, 1-pos, 2-neg)
3827 void* m_pTrackVal;
3828 //; pointer to track value
3829 real64 m_rTrackCyc;
3830 //; track cycletime [sec]
3831 real64 m_rTrackFct;
3832 //; tracking factor
3833 real64 m_rTrackPos;
3834 //; tracking position
3835 real64 m_rTrackVel;
3836 //; tracking velocity
3837 real64 m_rTrackCmd;
3838 //; tracking commanded value
3839 real64 m_rTrackSum;
3840 //; tracking sum
3841 uint16 m_uTrackLen;
3842 //; tracking buffer length
3843 uint16 m_uTrackInd;
3844 //; tracking buffer index
3845 int32 m_iTrackLst;
3846 //; last track value
3847 int32 m_iTrackOld;
3848 //; old track value
3849 real64* m_pTrackBuf;
3850 //; pointer to tracking buffer
3851 tpGetter m_pTrackGet;
3852 //; pointer to tracking value getter method
3853 real64 m_rTrackVmax;
3854 real64 m_rTrackAmax;
3855 real64 m_rTrackBmax;
3856
3857 // positioning
3858
3859 uint32 m_uPosType;
3860 //; positioning type
3861 uint32 m_uPosTime;
3862 //; positioning time [ms]
3863 uint32 m_uPosTimeout;
3864 //; positioning timeout [ms]
3865 int32 m_iPosTicks;
3866 //; positioning ticks
3867 int32 m_iPosTimeout;
3868 //; positioning timeout ticks
3869 real64 m_rPosTolerance;
3870 //; positioning tolerance
3871
3872 // save moves
3873
3874 // exit time
3875 real64 m_rExitTime;
3876 // partner also running
3877 bool m_bPartnerMoving;
3878
3879 // bus timing
3880
3883
3886
3887 #ifdef INOS_USE_CUSTOMER_IMAGE_DATA
3893 void* m_pCustomerSpecificData;
3894 #endif
3895
3896 // safety
3897
3898 #ifdef INOS_SAFETY_SUPPORT
3900 tUid m_uSafetyUid;
3902 uint8 m_uSafetyLevel;
3904 uint8 m_uSafetyType;
3906 ESafetyFunction m_eSafetyFunction;
3908 real64 m_rSafetyLimit;
3910 uint32 m_uSafetyDelay;
3912 int32 m_iSafetySupervisionStart;
3914 real64 m_rSafetySupervisionLimit;
3916 SINOSBaseAxisHook* m_pSOSHooks;
3917
3918 // also called from CINOSMcTargetSafety at reload of ch.indel.safety.config.img
3919 friend class CINOSMcTargetSafety;
3921 void iSetupSafety();
3923 virtual bool iSetupSafetyRegistration();
3924 #endif
3925
3926 // axis extensions
3927
3928 #if defined(INOS_AXIS_EXTENSION_SUPPORT)
3930 TINOSDoubleLinkedList<IINOSBaseAxisExtension>* m_pExtensions = 0;
3931 #endif
3932
3933 // command parameters
3934 protected:
3935 uint32 m_ueActivateCheckPos;
3936 //; param : CheckPos
3937 uint32 m_ueActivateSimulatePos;
3938 //; param : SimulatePos
3939 uint32 m_ueActivateSimulateOut;
3940 //; param : SimulateOut
3941 uint32 m_ueActivateSimulateAct;
3942 //; param : SimulateAct
3943 real64 m_rePosition;
3944 //; param : Position
3945 real64 m_rePositionVel{};
3946 //; param : PositionVel
3947 real64 m_reVelocity{};
3948 //; param : Velocity
3949 real64 m_reSyncPosition;
3950 //; param : SyncPosition
3951 inosName32 m_ceParam;
3952 //; param : Param
3953 char m_ceVariable[64];
3954 //; param : Variable
3955 real64 m_reFactor;
3956 //; param : Factor
3957 real64 m_reValue;
3958 //; param : Value
3959 uint32 m_ueFilter;
3960 //; param : Filter
3961 uint32 m_ueTrackDir;
3962 //; param : Track direction
3963 uint32 m_ueDirection;
3964 //; param : Direction
3965 uint32 m_ueWait;
3966 //; param : Wait
3967 real64 m_reStep;
3968 //; param : Step
3969 real64 m_reReturn;
3970 //; param : return
3971 real64 m_reDelta;
3972 //; param : delta
3973 real64 m_reStart;
3974 //; param : start
3975 real64 m_reEnd;
3976 //; param : end
3977 uint32 m_ueReturn;
3978 //; param : return
3979 uint32 m_ueTicks;
3980 //; param : ticks
3981 real64 m_reTime;
3982 //; param : time
3983 real64 m_reSlowMotion;
3984 //; param SLowMotion
3985
3986 #ifdef INOS_MOVEPATH_SUPPORT
3987 class CINCOMovePathActuals* m_pMovePathActuals;
3988 #endif
3989
3990 // static private members
3991 private:
3992 static uint32 m_uCount;
3993 //; number of axis in pool
3994 static uint8 m_uCountCoreId;
3995 //; current core id
3996 static CINOSBaseAxis* m_pFirst;
3997 //; pointer to first axis
3998 CINOSBaseAxis* m_pNext;
3999 //; pointer to next axis in the chain of all axis
4000 static CINOSBaseAxis* m_pAxis[DF_INOS_MAX_AXIS];
4001 //; array of axis pointers
4002 static char m_cStateCombo[494];
4003 //; axis state INCO item text. Use 494 (=defMaxDataLength). I fear
4004 //; to include inco_com.h here, that's why a plain number is used)
4005
4006 // allow dynamic object handling (new/delete)
4008};
4009
4010//------------------------------------------------------------------------------
4011// class registration
4012//------------------------------------------------------------------------------
4013
4015typedef CINOSBaseAxis *(*TCreateAxis)(const char* apAxisName);
4016class CINOSRegisterBaseAxis
4017{
4018 // after this function you can register new ramps
4019 friend void _INI_0000_CINOSRegisterBaseAxis();
4020
4021 //--- internals --------------------------------------------------------
4022 // private members
4023private:
4024 // pointer to the first registered axis
4025 static CINOSRegisterBaseAxis* m_pFirst;
4026 // pointer to the next axis
4027 CINOSRegisterBaseAxis* m_pNext;
4028 // create funtion for axis
4029 TCreateAxis m_pCreate;
4030 // axis type name
4031 const char* m_pAxisType;
4032 // database table name
4033 const char* m_pDatabaseTable;
4034
4035 //--- user interface ---------------------------------------------------
4036
4037public:
4038 // register a new axis type
4039 CINOSRegisterBaseAxis(TCreateAxis apFunction, const char* apAxisType,
4040 const char* apDatabaseTable);
4041
4042 // create and return and new axis instance
4043 static CINOSBaseAxis* GetAxis(const char* apAxisName, const char* apAxisType);
4044 // create all registered axis
4045 static void CreateAll();
4046};
4048
4049//
4050//------------------------------------------------------------------------------
4051//--- helper macros ------------------------------------------------------------
4052//------------------------------------------------------------------------------
4053//
4054#if defined(INOS_MULTICORE)
4055#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret) \
4056if ((m_uCoreId != DF_INOS_CORE_DEFAULT) && (::GetCoreId() != m_uCoreId)) { \
4057 if (!(GetFlag() & DF_INOS_AXIS_FLAG_IGNORE_CORE)) { \
4058 iCoreMismatchError(); \
4059 return ret; \
4060 } \
4061}
4062#else
4063#define INOS_AXIS_CORE_MISMATCH_IS_ERROR(ret)
4064#endif
4065
4066
4067//
4068//------------------------------------------------------------------------------
4069// safety macros
4070//------------------------------------------------------------------------------
4071//
4072#ifdef INOS_SAFETY_SUPPORT
4073#define SAFETY_CHECK_SOS() \
4074 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4075 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4076 real64 rSlowMotion; GetActSlowMotion(rSlowMotion); \
4077 if (rSlowMotion != REAL64(0.0)) { \
4078 m_uError |= ER_INOS_AXIS_REJECTED_SOS; \
4079 INOS_ERROR("AXIS[%s]: Command rejected, axis in SOS (safe operating stop)", GetName());\
4080 return m_uError; \
4081 } \
4082 } \
4083 }
4084//
4085#define SAFETY_CHECK_SOS_SYNC(apSync) \
4086 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4087 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4088 real64 rSlowMotion; GetActSlowMotion(rSlowMotion); \
4089 if (rSlowMotion != REAL64(0.0)) { \
4090 m_uError |= ER_INOS_AXIS_REJECTED_SOS; \
4091 INOS_ERROR("AXIS[%s]: Command rejected, axis in SOS (safe operating stop)", GetName());\
4092 Signal(apSync); \
4093 return m_uError; \
4094 } \
4095 } \
4096 }
4097//
4098#define SAFETY_IGNORE_IF_SOS() \
4099 if (GetFlag() & DF_INOS_AXIS_FLAG_SAFETY) { \
4100 if (m_eSafetyFunction == eSafetyFunctionSOS) { \
4101 return m_uError; \
4102 } \
4103 }
4104#else
4105#define SAFETY_CHECK_SOS()
4106#define SAFETY_CHECK_SOS_SYNC(apSync)
4107#define SAFETY_IGNORE_IF_SOS()
4108#endif
4109//
4110//------------------------------------------------------------------------------
4111// end of file
4112//------------------------------------------------------------------------------
4113
4114#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:689
virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
virtual uint32 Update(CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
Update a running Move to actual commanded values (acc,dec,vel,jerk) Signal apSync if constant velocit...
virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition within the given time arTime and the speedset apParam. The speed set values are tr...
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, real64 arTime, const char *apParam)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in arTime [sec].
virtual uint32 Sync(real64 arPosition, real64 arSyncPos, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to arSyncPos at mark.
virtual uint64 GetStartTicks(real64 arDelta)
Get absolut bus ticks the actual move reaches the start position + arDelta.
virtual uint32 Endless(bool abPositive, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
Start and endless move in the requested direction with speed set apParam.
virtual int32 GetMoveTicks(real64 arPosition, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs until arPosition.
virtual uint32 Pull(SINOSRampDataEx *apData)
Add a path point to the actual pull list and start pull mode if not et done. If one is running an axi...
virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, const char *apParam)
Calc time [sec] an according MoveApp needs until arEndPosition-arDelta.
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, uint32 auTicks, const char *apParam)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in auTicks [bus ticks].
virtual real64 GetMoveDist(real64 arTime, const char *apParam)
Calc distance [unit] a Move progresses in arTime [sec].
virtual real64 GetMoveTime(real64 arPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move(adPosition) needs until arPosition-arDelta.
virtual uint32 SegVelocity(real64 arVelocity, const char *apParam)
Directly change velocity to the new value.
virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, const char *apParam)
Calc time [sec] an according MoveDep needs until arEndPosition-arDelta.
virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the const part.
virtual uint32 SegPosSetTime(real64 arTime)
Sets the time of the last added segpos segment [sec]. Can be used to adjust a previous added pos segm...
virtual uint32 SegRun(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Run actual segments.
virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity)
Calc time [sec] an according MoveDep needs.
virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move needs from arStartPosition until arEndPosition-arDelta.
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, SINOSRampParam *apParam)
Calculate time characteristics of a move.
virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc bus ticks a Move needs from arStartPosition until arEndPosition-arDelta.
virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual uint32 SegMove(real64 arPosition, const char *apParam)
Add a move to arPosition. Velocity and acceleration in arPosition have to be 0.0.
virtual real64 GetConstTime(real64 arPosition, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the constant part.
virtual uint32 Move(real64 arPosition, real64 arSave1, real64 arSave2, const char *apParam1, const char *apParam2, real64 arPartner, const char *apPartner, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. The move is done in a so called safe way (backward -> part...
virtual int32 GetConstTicks(real64 arPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the constant part.
virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks, const char *apParam)
Calc distance [unit] a Move(arPosition) progresses in auTicks [bus ticks].
SINOSRampData * GetActual(EActualType aeType=eActOutput, bool abCopy=true)
get pointer to actual control values
Definition cinosbaseaxis.h:3271
virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move(adPosition) needs until arPosition-arDelta.
virtual uint32 SegBegin(real64 arSlowMotion=REAL64(1.0), real64 arStartVelocity=REAL64(0.0))
Create a new segmentation move.
virtual int32 GetConstTicks(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the constant part.
void InitializeLimitChecker()
Initializes the limit checker if requested.
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, const char *apParam)
Calculate time characteristics of a move.
virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. Ensure befor arPositionVel a velocity that is smaller than...
virtual int32 GetDecelerationTicks(real64 arPosition, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual uint32 WaitInPosition()
Wait for any move to finish.
virtual int32 GetAccelerationTicks(real64 arPosition, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual uint32 EmergencyStop(CINOSSync *apSync)
Stop a running move with the defined emergency deceleration/jerk.
virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] an according MoveApp needs until arEndPosition-arDelta.
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, const char *apParam)
Calc time [sec] an according MoveApp needs until arPosition-arDelta.
virtual real64 GetMoveDist(real64 arPosition, real64 arTime, SINOSRampParam *apParam)
Calc distance [unit] a Move(arPosition) progresses in arTime [sec].
virtual real64 GetDecelerationTime(real64 arPosition)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual uint32 Track(const char *apVarName, real64 arFactor, uint32 auFilterLength, uint32 auDirection, const char *apParam)
Track the variable with name apVarName.
virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calculate time characteristics of a move.
virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual uint32 SegVelocity(real64 arVelocity, SINOSRampParam *apParam)
Directly change velocity to the new value.
virtual int32 GetMoveTicks(real64 arPosition, const char *apParam)
Calc bus ticks a Move(adPosition) needs until arPosition.
virtual uint32 Move(real64 arPosition, real64 arSafe1, real64 arSafe2, SINOSRampParam *apParam1, SINOSRampParam *apParam2, real64 arPartner, SINOSRampParam *apPartner, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. The move is done in a so called safe way (backward -> part...
virtual uint32 Enable(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Enables a previously disabled axis. Only enabled axis can be activated.
virtual uint32 Move(real64 arPosition, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam.
virtual uint32 StopLive()
Stop a running move with the currently selected speed set. The stop is calculated live and therefore ...
virtual uint32 Stop(real64 arPosition, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the given speed set at requested position.
virtual real64 GetMoveTime(real64 arPosition, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs until arPosition.
virtual int32 GetMoveTicks(real64 arPosition)
Calc bus ticks a Move(adPosition) needs until arPosition.
virtual uint32 SetActPosition(real64 arPosition)
Sets the actual axis position. This method doesn't change a current following error and it is therefo...
virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5=true, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition within the given time arTime. Actual commanded jerk, acc/deceleration and velocity...
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta)
Calculate time characteristics of a move.
virtual uint32 Update(SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
Update a running Move to speed set apParam. Signal apSync if constant velocity reached (acc = 0).
virtual int32 GetConstTicks(real64 arPosition)
Calc bus ticks a Move(adPosition) needs for the constant part.
virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual uint32 SegMove(real64 arPosition, real64 arVelocity)
Add a move to arPosition. Requested velocity in arPosition is arVelocity, the acceleration is 0....
virtual real64 GetAccelerationTime(real64 arPosition)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
virtual uint32 SegMove(real64 arPosition, real64 arVelocity, SINOSRampParam *apParam)
Add a move to arPosition. Requested velocity in arPosition is arVelocity, the acceleration is 0....
virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual uint32 EmergencyStopLive(uint16 auType, uint16 auDelay=0xffff)
Stop a running move with the defined emergency deceleration/jerk. The stop is calculated live and the...
virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs until arPosition-arDelta.
virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move needs from arStartPosition until arEndPosition-arDelta.
virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the const part.
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, SINOSRampParam *apParam)
Calc time [sec] an according MoveDep needs.
virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc time [sec] a Move needs from arStartPosition until arEndPosition-arDelta.
virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta)
Calc time [sec] an according MoveDep needs until arEndPosition-arDelta.
virtual uint32 Relax(uint32 auTimeMs, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Relax a coupled slave axis for a given time.
virtual uint32 Connect()
Connect axis to hardware.
Definition cinosbaseaxis.h:750
virtual uint32 Sync(real64 arSyncPos, const char *apParam, CINCOObject *apObject, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark and set actual position to arSyncPos at mark.
virtual uint32 Stop(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the currently selected speed set.
virtual real64 GetConstTime(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the constant part.
virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the const part.
void DisableRamp()
Disable the axis trajectory generator. Can be used to fill up a pull list without staring immediately...
Definition cinosbaseaxis.h:2469
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, const char *apParam)
Calc time [sec] an according MoveApp needs.
virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the const part.
virtual uint32 Track(const char *apVarName, real64 arCmdValue, real64 arFactor, uint32 auFilterLength)
Track the variable with name apVarName to the commanded value arCmdValue.
virtual real64 GetDecelerationTime(real64 arPosition, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual uint32 GetBusTicksPerAxisTick()
Get number of bus ticks an axis tick takes.
virtual real64 GetMoveTime(real64 arPosition, real64 arDelta)
Calc time [sec] a Move(adPosition) needs until arPosition-arDelta.
SINOSRampDataEx * m_pActControl
actual commanded values (valid if mapping active or after a SetActual)
Definition cinosbaseaxis.h:3738
virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with actual commanded jerk, acc/deceleration and velocity. Ensure after arPosition...
virtual uint32 Continue(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Continue a pause move.
virtual uint32 Cursor(real64 arPosition)
Moves one 'inc' in 'arPosition' direction, waits 500ms and then moves to arPosition....
virtual void SetNormMode(uint8 auNormMode)
Definition cinosbaseaxis.h:3252
virtual void SetNormMoveDir(uint8 auNormMoveDir)
Definition cinosbaseaxis.h:3244
virtual uint32 Pull(SINOSRampData &aData)
Add a path point to the actual pull list and start pull mode if not et done. If one is running an axi...
virtual uint32 Move(real64 arPosition, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with actual commanded jerk, acc/deceleration and velocity.
virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. Ensure after arPositionVel a velocity that is smaller than...
virtual real64 GetMoveTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move needs from arStartPosition until arEndPosition-arDelta.
virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, uint32 auTicks, SINOSRampParam *apParam)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in auTicks [bus ticks].
SINOSRampDataEx * m_pActual
actual commanded values (handed over to control)
Definition cinosbaseaxis.h:3734
virtual uint32 Break(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the currently selected speed set. The move is still pending and can be cont...
virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime, real64 arStep)
Moves one step in 'arPosition' direction, waits auWaitTime ms and then moves to arPosition....
virtual uint32 Cursor(bool abPositive, uint32 auWaitTime, real64 arStep)
Moves one arStep in the requested direction, waits auWaitTime ms and starts an endless move to the de...
virtual real64 GetDecelerationTime(real64 arPosition, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual int32 GetMoveTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move needs from arStartPosition until arEndPosition-arDelta.
virtual real64 GetMoveTime(real64 arPosition)
Calc time [sec] a Move(adPosition) needs until arPosition.
virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks, SINOSRampParam *apParam)
Calc distance [unit] a Move(arPosition) progresses in auTicks [bus ticks].
virtual uint64 GetTargetTicks()
Get absolut bus ticks the actual move reaches the target position.
SINOSRampData * GetRealVrt()
get pointer to real values
Definition cinosbaseaxis.h:3295
SINOSRampDataEx * m_pActRamp
actual commanded values from ramp geni
Definition cinosbaseaxis.h:3736
virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual int32 GetConstTicks(real64 arPosition, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the constant part.
virtual uint32 Cursor(bool abPositive, uint32 auWaitTime, real64 arStep, const char *apParam)
Moves one arStep in the requested direction, waits auWaitTime ms and starts an endless move to the de...
virtual int32 GetConstTicks(real64 arPosition, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the constant part.
virtual uint32 Break(SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the given speed set. The move is still pending and can be continued with Co...
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta)
Calc time [sec] an according MoveApp needs until arPosition-arDelta.
virtual real64 GetMoveDist(real64 arTime)
Calc distance [unit] a Move progresses in arTime [sec].
double NormPosition(real64 arPosition) const
Returned the 'normed' value of arPosition.
Definition cinosbaseaxis.h:2788
virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with actual commanded jerk, acc/deceleration and velocity. Ensure befor arPosition...
virtual real64 GetMoveDist(real64 arTime, SINOSRampParam *apParam)
Calc distance [unit] a Move progresses in arTime [sec].
virtual int32 GetAccelerationTicks(real64 arPosition)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual real64 GetConstTime(real64 arPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the constant part.
CINOSBaseAxis(SINOSBaseAxis *apDesc)
Create an axis based on a descriptor (usually not used because this is done by the configuration syst...
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta, const char *apParam)
Calculate time characteristics of a move.
virtual uint32 Update(const char *apParam, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
Update a running Move to speed set apParam. Signal apSync if constant velocity reached (acc = 0).
virtual int32 GetMoveTicks(real64 arPosition, real64 arDelta)
Calc bus ticks a Move(adPosition) needs until arPosition-arDelta.
virtual uint64 GetTargetTicks(real64 arDelta)
Get absolut bus ticks the actual move reaches the target position - arDelta.
virtual real64 GetMoveDist(real64 arPosition, real64 arTime)
Calc distance [unit] a Move(arPosition) progresses in arTime [sec].
virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual int32 GetConstTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the const part.
virtual uint32 Stop(real64 arPosition, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the currently selected speed set at requested position.
virtual uint32 Toggle(real64 arPosition1, real64 arPosition2)
Start an endless toggle between arPosition1 and arPosition2 with actual commanded a jerk,...
virtual uint32 Sync(real64 arPosition, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to 0.0 at mark.
virtual uint32 ToggleSection(real64 arPos1Min, real64 arPos1Max, real64 arPos2Min, real64 arPos2Max, uint32 auDelayMin, uint32 auDelayMax)
Start an endless section toggle between arPosition1 and arPosition2 with actual commanded a jerk,...
virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual real64 GetAccelerationTime(real64 arPosition, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
virtual uint32 Track(const char *apVarName, real64 arFactor, uint32 auFilterLength, uint32 auDirection=0)
Track the variable with name apVarName.
virtual void DisableNorm()
virtual real64 GetConstTime(real64 arPosition, real64 arDelta)
Calc time [sec] a Move(adPosition) needs for the constant part.
virtual uint32 Break(const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the given speed set. The move is still pending and can be continued with Co...
virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual void GetActPosition(real64 &arPosition, bool abRamp=true)
Gets the actual axis position.
virtual uint32 Stop(SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the given speed set.
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, SINOSRampParam *apParam)
Calc time [sec] an according MoveApp needs.
virtual uint32 SetTrackFactor(real64 arFactor)
Allows to live change the tracking factor of an active 'Track'.
virtual real64 GetMoveDist(real64 arPosition, uint32 auTicks)
Calc distance [unit] a Move(arPosition) progresses in auTicks [bus ticks].
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity)
Calc time [sec] an according MoveApp needs.
virtual int32 GetExitTicks()
Calc bus ticks needed till exit in a safe move.
SINOSBaseRampTrqLimit * GetTrqLimitAcceleration()
get torque limit acceleration
Definition cinosbaseaxis.h:3349
virtual uint32 Endless(bool abPositive, const char *apParam, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS)
Start and endless move in the requested direction with speed set apParam.
virtual uint32 SegBegin(real64 arSlowMotion, real64 arStartPosition, real64 arStartVelocity)
Create a new segmentation move at given position.
virtual real64 GetMoveDepTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] an according MoveDep needs until arEndPosition-arDelta.
virtual int32 GetAccelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual int32 GetConstTicks(real64 arPosition, real64 arDelta)
Calc bus ticks a Move(adPosition) needs for the constant part.
SINOSRampData * GetActPhy()
deprecated
Definition cinosbaseaxis.h:3301
virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime, real64 arStep, SINOSRampParam *apParam)
Moves one step in 'arPosition' direction, waits auWaitTime ms and then moves to arPosition....
virtual real64 GetMoveAppTime(real64 arStartPosition, real64 arEndPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta)
Calc time [sec] an according MoveApp needs until arEndPosition-arDelta.
virtual uint32 MoveApp(real64 arPosition, real64 arPositionVel, real64 arVelocity, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. Ensure after arPositionVel a velocity that is smaller than...
virtual uint32 SegConst(real64 arPosition)
Add a move to arPosition with actual velocity.
virtual int32 GetDecelerationTicks(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc bus ticks a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual real64 GetConstTime(real64 arPosition, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the constant part.
virtual uint32 WaitTicks(uint32 auTicks=1)
Wait for the given axis control cycle ticks. This method can be useful if it is necessary to synchron...
virtual uint32 InActivate(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Inactivate axis.
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition)
Calculate time characteristics of a move.
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, real64 arTime, SINOSRampParam *apParam)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in arTime [sec].
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calculate time characteristics of a move.
virtual int32 GetDecelerationTicks(real64 arPosition)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual uint32 Break(real64 arPosition, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the currently selected speed set at requested position. The move is still p...
uint8 m_uCoreId
id of core the axis is handled in
Definition cinosbaseaxis.h:3820
virtual uint32 Sync(real64 arPosition, real64 arSyncPos, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to arSyncPos at mark.
virtual real64 GetConstTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the const part.
virtual void EnableNorm(uint8 auMode=0x00, uint8 auMoveDir=0x00, real64 arNormPos=REAL64(0.0))
virtual uint32 Continue(const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Continue a pause move with the given speed set.
virtual int32 GetAccelerationTicks(real64 arPosition, const char *apParam)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual uint32 EmergencyStop(uint16 auType=0xffff, uint16 auDelay=0xffff, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the defined emergency deceleration/jerk.
virtual real64 GetAccelerationTime(real64 arPosition, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
uint32 m_uBusTicksPerAxisTick
number of bus ticks an axis tick takes
Definition cinosbaseaxis.h:3882
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, uint32 auTicks)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in auTicks [bus ticks].
virtual uint32 MoveDep(real64 arPosition, real64 arPositionVel, real64 arVelocity, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam. Ensure before arPositionVel a velocity that is smaller tha...
virtual uint32 Sync(real64 arPosition, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to 0.0 at mark.
virtual uint32 Stop(const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the given speed set.
virtual void SetToggleCnt(uint32 auSetVal)
set toggle counter to given value
Definition cinosbaseaxis.h:3339
virtual int32 GetDecelerationTicks(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta)
Calc time [sec] an according MoveDep needs until arPosition-arDelta.
virtual uint32 Break(real64 arPosition, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the given speed set at requested position. The move is still pending and ca...
virtual int32 GetAccelerationTicks(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the acceleration part.
virtual uint32 Sync(real64 arPosition, const char *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to 0.0 at mark.
virtual uint32 Break(real64 arPosition, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Pause a running move with the given speed set at requested position. The move is still pending and ca...
virtual uint32 Stop(real64 arPosition, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Stop a running move with the given speed set at requested position.
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, const char *apParam)
Calc time [sec] an according MoveDep needs until arPosition-arDelta.
static CINOSBaseAxis * GetAxis(uint32 auNumber)
Get pointer to axis with a given number.
Definition cinosbaseaxis.h:723
virtual real64 GetMoveDist(real64 arPosition, real64 arTime, const char *apParam)
Calc distance [unit] a Move(arPosition) progresses in arTime [sec].
CINOSBaseAxis(SINOSBaseAxis *apDesc, CINOSBaseRamp *apRamp)
Create an axis based on a descriptor (usually not used because this is done by the configuration syst...
virtual uint32 Cursor(bool abPositive, uint32 auWaitTime)
Moves one 'inc' in the requested direction, waits auWaitTime ms and starts an endless move to the def...
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calculate time characteristics of a move.
virtual uint32 MoveTime(real64 arPosition, real64 arTime, bool abUseP5, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition within the given time arTime and the speedset apParam. The speed set values are tr...
virtual uint32 SegMove(real64 arPosition)
Add a move to arPosition. Velocity and acceleration in arPosition have to be 0.0.
virtual uint32 Continue(SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Continue a pause move with the given speed set.
SINOSRampData * GetActVrt()
deprecated
Definition cinosbaseaxis.h:3298
virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual uint32 Pull(real64 arS, real64 arV, real64 arA, real64 arJ)
Add a path point to the actual pull list and start pull mode if not et done. If one is running an axi...
virtual uint32 StopLive(real64 arSlowMotion, SINOSRampParam *apParam)
Stop a running move with the given speed set and required slowmotion factor. The stop is calculated l...
virtual uint8 GetNormMode()
Definition cinosbaseaxis.h:3248
virtual real64 GetMoveTime(real64 arPosition, const char *apParam)
Calc time [sec] a Move(adPosition) needs until arPosition.
virtual uint32 Cursor(real64 arbPosition, uint32 auWaitTime, real64 arStep, const char *apParam)
Moves one step in 'arPosition' direction, waits auWaitTime ms and then moves to arPosition....
virtual uint32 Move(real64 arPosition, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Move to arPosition with speed set apParam.
virtual ~CINOSBaseAxis()
Destroy the axis (usually not used)
SINOSBaseRampTrqLimit * GetTrqLimitDeceleration()
get torque limit deceleration
Definition cinosbaseaxis.h:3352
virtual real64 GetDecelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the deceleration part.
virtual SINOSTimeCharacteristics GetTimeCharacteristics(real64 arStartPosition, real64 arEndPosition, real64 arDelta)
Calculate time characteristics of a move.
virtual uint32 Cursor(real64 arPosition, uint32 auWaitTime)
Moves one 'inc' in 'arPosition' direction, waits auWaitTime ms and then moves to arPosition....
virtual uint32 Cursor(bool abPositive=true)
Moves one 'inc' in the requested direction, waits 500ms and starts an endless move to the defined sof...
virtual uint32 SegMove(real64 arPosition, SINOSRampParam *apParam)
Add a move to arPosition. Velocity and acceleration in arPosition have to be 0.0.
virtual uint32 EmergencyStopLive()
Stop a running move with the defined emergency deceleration/jerk. The stop is calculated live and the...
virtual uint32 Disable(CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Disables an enabled axis. Only inactivated axis can be disabled. Use 'Enable' to reenable the axis.
virtual uint32 StopLiveDelta(real64 arDelta, real64 arSlowMotion, SINOSRampParam *apParam=nullptr)
Stop a running move with the given speed set and required slowmotion factor. The stop is calculated l...
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, const char *apParam)
Calc time [sec] an according MoveDep needs.
virtual const char * GetName()
virtual uint32 Sync(real64 arPosition, real64 arSyncPos, SINOSRampParam *apParam, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Search reference mark till arPosition and set actual position to arSyncPos at mark.
virtual real64 GetMoveTime(real64 arPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move(adPosition) needs until arPosition-arDelta.
void EnableRamp()
Enable a recently disabled trajectory generator.
Definition cinosbaseaxis.h:2459
virtual real64 GetMoveDepTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] an according MoveDep needs until arPosition-arDelta.
virtual real64 GetMoveAppTime(real64 arPosition, real64 arPositionVel, real64 arVelocity, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] an according MoveApp needs until arPosition-arDelta.
virtual real64 GetAccelerationTime(real64 arPosition, real64 arDelta)
Calc time [sec] a Move(adPosition) needs for the acceleration part.
static uint8 GetNumber(const char *apAxisName)
Get number of axis apAxisName.
virtual uint32 SegPos(real64 arTime)
stay at actual position for arTime [sec].
virtual real64 GetDecelerationTime(real64 arPosition, real64 arDelta, const char *apParam)
Calc time [sec] a Move(adPosition) needs for the deceleration part.
virtual uint32 Activate(bool abCheckPos=true, bool abSimulatePos=false, bool abSimulateOut=false, bool abSimulateAct=false, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
Activate axis in a given mode, e.g Activate(true,true,true,true) enables the axis in a full simulated...
virtual uint32 GetToggleCnt()
get current toggle counter
Definition cinosbaseaxis.h:3336
virtual int32 GetDecelerationTicks(real64 arPosition, SINOSRampParam *apParam)
Calc bus ticks a Move(adPosition) needs for the deceleration part.
virtual uint32 Endless(bool abPositive=true)
Start and endless move in the requested direction with actual commanded acc/dec and velocity.
virtual uint8 GetNormMoveDir()
Definition cinosbaseaxis.h:3240
virtual real64 GetMoveDist(real64 arStartPosition, real64 arEndPosition, real64 arTime)
Calc distance [unit] a move from arStartPosition to arEndPosition progresses in arTime [sec].
static CINOSBaseAxis * GetAxis(const char *apAxisName)
Get pointer to axis with name apAxisName.
virtual uint32 SetRealPosition(real64 arPosition)
Sets the real axis position. This method ignores a current following error and should therefore NOT b...
SINOSRampDataEx * m_pRealVrt
actual real virtual values
Definition cinosbaseaxis.h:3740
virtual void GetRealPosition(real64 &arPosition, bool abMapped=true)
Gets the real axis position.
uint16 m_uCycleId
cycle id
Definition cinosbaseaxis.h:3885
virtual uint32 SegMove(real64 arPosition, real64 arVelocity, const char *apParam)
Add a move to arPosition. Requested velocity in arPosition is arVelocity, the acceleration is 0....
virtual real64 SegTime()
Returns time the actual segment move takes.
virtual real64 GetAccelerationTime(real64 arStartPosition, real64 arEndPosition, real64 arDelta, SINOSRampParam *apParam)
Calc time [sec] a Move from arStartPosition until arEndPosition needs for the acceleration part.
virtual uint32 Cursor(bool abPositive, uint32 auWaitTime, real64 arStep, SINOSRampParam *apParam)
Moves one arStep in the requested direction, waits auWaitTime ms and starts an endless move to the de...
uint8 GetCoreId()
get core id the axis is running on
Definition cinosbaseaxis.h:3358
virtual real64 GetConstTime(real64 arPosition)
Calc time [sec] a Move(adPosition) needs for the constant part.
Definition cinosbaseramp.h:697
Definition cinosbaseramp.h:752
SINOSBaseRampTrqLimit * GetTrqLimitAcceleration()
get torque limit acceleration
Definition cinosbaseramp.h:1343
SINOSBaseRampTrqLimit * GetTrqLimitDeceleration()
get torque limit deceleration
Definition cinosbaseramp.h:1349
Definition cinosbus.h:565
INOS_INLINE void AtomicGatherEnter(uint32 &ouToken)
Definition cinosbus.h:952
Definition cinosmutex.h:36
ICACHE class CINOSTask * GetOwner()
Return id of mutex owner.
Definition cinosmutex.h:118
Provides physical aka real axis functionality.
Definition cinosphysicalaxis.h:289
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:394
real64 m_rPosTolerance
Default positioning tolerance [unit] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OP...
Definition cinosbaseaxis.h:515
inosName32 m_cEmergencyParam
Name of the speed set to be used for emergency stops.
Definition cinosbaseaxis.h:559
uint8 m_uCoreId
Id of core the axis has to run on. In the configuration file do not define this value or set it to 0x...
Definition cinosbaseaxis.h:415
uint32 m_uCacheSize
Used to define a cache size for the special safe move commands. Currently only used on a special cust...
Definition cinosbaseaxis.h:520
uint8 m_uSafetyType
Defines the behaviour in case of an SOS request DF_INOS_AXIS_SAFETY_EMGSTOP, DF_INOS_AXIS_SAFETY_AUTO...
Definition cinosbaseaxis.h:439
uint8 m_uNormMode
Used to define the default axis norming mode, e.g. norm an turn axis to 0..360° see DF_INOS_AXIS_NORM...
Definition cinosbaseaxis.h:534
uint32 m_uTrackFilterLength
Defines the default tracking filter length.
Definition cinosbaseaxis.h:491
real64 m_rTrackFactor
Defines the default tracking factor.
Definition cinosbaseaxis.h:487
real64 m_rEmergencyPosition
Emergency stop position (used in emergency types DF_INOS_AXIS_EMGT_STOP_POSITION and DF_INOS_AXIS_EMG...
Definition cinosbaseaxis.h:483
real64 m_rTestPos2
Test mode position 2, see also m_rTestPos1 and m_uTestDelay.
Definition cinosbaseaxis.h:474
inosName64 m_cName
Axis name.
Definition cinosbaseaxis.h:397
real64 m_rTestPos1Max
Test mode position 1 maximum, see also m_rTestPos1.
Definition cinosbaseaxis.h:470
uint16 m_uNumber
Optional axis number. This value is only used on specific Indel targets like e.g. a GIN-AX4x4 to defi...
Definition cinosbaseaxis.h:410
uint16 m_cShort
Gives the user the possibility to define a short one character based axis alias. This option is depre...
Definition cinosbaseaxis.h:525
uint8 m_uNormMoveDir
Used to define the default axis norm moving direction, e.g. move always in positive direction,...
Definition cinosbaseaxis.h:544
uint8 m_uEmergencyType
Defines the default behaviour in case of an emergency stop of the axis. An emergency stop is either i...
Definition cinosbaseaxis.h:451
inosName64 m_cDescription
Axis description.
Definition cinosbaseaxis.h:572
uint32 m_uPosTime
Default positioning time [ms] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OPT.
Definition cinosbaseaxis.h:505
real64 m_rPowerPosition
Power failure position. The system tries to move to this position in case of a power failure.
Definition cinosbaseaxis.h:564
inosName32 m_cRampType
Trajectory generator name. Valid types are INOSJerkRamp, INOSJerkTrqRamp, INOSTrapezeRamp or a custom...
Definition cinosbaseaxis.h:403
inosName32 m_cDefaultParam
If this string is not empty and the axis ramps A,V,J are set to 0.0 (means undefined) then the speed ...
Definition cinosbaseaxis.h:555
uint8 m_uReserved
Reserved for future use.
Definition cinosbaseaxis.h:419
real64 m_rTestPos1
Test mode position 1, see also m_rTestPos2 and m_uTestDelay.
Definition cinosbaseaxis.h:466
uint32 m_uOptions
Axis options, see DF_INOS_BASE_AXIS_OPT_EARLY_DONE, DF_INOS_BASE_AXIS_OPT_AUTO_ACCEPT,...
Definition cinosbaseaxis.h:432
uint16 m_uEmergencyDelay
The required default delay [ms] if working with emergency type DF_INOS_AXIS_EMGT_STOP_INACTIVATE.
Definition cinosbaseaxis.h:456
uint32 m_uPosTimeout
Default positioning timeout [ms] for types DF_INOS_AXIS_PST_WINDOW and DF_INOS_AXIS_PST_WINDOW_OPT.
Definition cinosbaseaxis.h:510
uint32 m_uTestDelay
For testing purposes, an axis provides a test folder in the INCO tree where one can toggle the axis b...
Definition cinosbaseaxis.h:462
real64 m_rNormPos
Defines the default norming position, e.g. 360.0 for a turning axis.
Definition cinosbaseaxis.h:548
uint32 m_uPosType
Tells the system how an end of a move is defined. There are three different type available,...
Definition cinosbaseaxis.h:500
real64 m_rTestPos2Max
Test mode position 2 maximum, see also m_rTestPos2.
Definition cinosbaseaxis.h:478
inosName32 m_cPowerParam
Name of the speed set to be used for a power failure move.
Definition cinosbaseaxis.h:568
torque limitation
Definition cinosbaseramp.h:661
Definition cinosmovepathtrajectory.h:50
extended ramp data
Definition cinosbaseramp.h:617
ramp data
Definition cinosbaseramp.h:602
ramp parameters
Definition cinosbaseramp.h:503
time characteristics of a move
Definition cinosbaseramp.h:627