29 #ifndef INC_CINOSBASECONTROLLER_H
30 #define INC_CINOSBASECONTROLLER_H
38 #define DF_INOS_CONTROLLER_STATE_PEACE 0 // peace
39 #define DF_INOS_CONTROLLER_STATE_ACTIVATING 1 // activating
40 #define DF_INOS_CONTROLLER_STATE_ACTIVE 2 // active
41 #define DF_INOS_CONTROLLER_STATE_INACTIVATING 3 // inactivating
42 #define DF_INOS_CONTROLLER_STATE_TUNING 4 // tuning
47 #define DF_INOS_CONTROLLER_SUBSTATE_ACTIVE_HALT 0 // active halt
48 #define DF_INOS_CONTROLLER_SUBSTATE_ACTIVE_RUN 1 // active run
49 #define DF_INOS_CONTROLLER_SUBSTATE_ACTIVE_JUMP 2 // active jump
50 #define DF_INOS_CONTROLLER_SUBSTATE_ACTIVE_SETTLE 3 // active settle
54 #define ER_INOS_CONTROLLER_VALCHK 0x00000001 // controller value check error
55 #define ER_INOS_CONTROLLER_SETTLE 0x00000002 // settling timeout
56 #define ER_INOS_CONTROLLER_OUTCHN 0x00000800 // output channel not found
57 #define ER_INOS_CONTROLLER_INPCHN 0x00001000 // input channel not found
58 #define ER_INOS_CONTROLLER_ACTIVATE 0x00002000 // activation error
59 #define ER_INOS_CONTROLLER_EXTERN 0x00004000 // external controller error
60 #define ER_INOS_CONTROLLER_OFFLINE 0x00008000 // value channel offline
64 #define WR_INOS_CONTROLLER_INTLIMIT 0x00000001 // integrator limit reached
65 #define WR_INOS_CONTROLLER_NOTSUP 0x00000002 // not supported
69 #define DF_INOS_BASE_CONTROLLER_FLAG_CHK_VAL 0x00000001 // check value error
70 #define DF_INOS_BASE_CONTROLLER_FLAG_SIM_VAL 0x00000002 // simulate actual value
71 #define DF_INOS_BASE_CONTROLLER_FLAG_SIM_OUT 0x00000004 // simulate output
72 #define DF_INOS_BASE_CONTROLLER_FLAG_SIM_ACT 0x00000008 // simulate activate
73 #define DF_INOS_BASE_CONTROLLER_FLAG_ENB_BLZ 0x00000010 // enable boltzmann feed forward
81 #define DF_INOS_BASE_CONTROLLER_FLAG_IGN_ALM_ACT 0x00000020
84 #define DF_INOS_BASE_CONTROLLER_FLAG_ZERO_INT_JUMP 0x00000040
85 #define DF_INOS_BASE_CONTROLLER_FLAG_KEEP_CMDS 0x20000000 // keep cmdS at activate
86 #define DF_INOS_BASE_CONTROLLER_FLAG_SUP_JFW 0x40000000 // supports jump forward
87 #define DF_INOS_BASE_CONTROLLER_FLAG_SUP_JBW 0x80000000 // supports jump backward
89 #define DF_INOS_BASE_CONTROLLER_MAX_V_FILTER 16 // max. allowed V filter length
123 const char* apInpName,
const char* apOutName);
129 virtual void Activate(
bool abCheckVal =
true,
bool abSimulateVal =
false,
130 bool abSimulateOut =
false,
bool abSimulateAct =
false);
132 virtual void InActivate();
137 virtual uint32 Tune(
const char* apParam);
144 ICACHE
virtual uint32 Pull(real64 arValue, real64 arVelocity,
145 real64 arAcceleration, real64 arJerk);
148 virtual void GetCmdValue(real64& arValue);
150 virtual void GetCmdVelocity(real64& arVelocity);
152 virtual void GetCmdAcceleration(real64& arAcceleration);
154 virtual void GetCmdJerk(real64& arJerk);
156 ICACHE
virtual void SetActValue(real64 arValue,
bool abIgnorePosError=
false);
158 ICACHE
virtual void GetActValue(real64& arValue);
160 virtual void GetActVelocity(real64& arVelocity);
162 virtual void GetActAcceleration(real64& arAcceleration);
164 virtual void GetActJerk(real64& arJerk);
166 virtual void GetActValError(real64& arValError);
169 virtual uint32 GetParam(
const char* apName, real64& arResult);
171 virtual volatile real64* GetParamAdr(
const char* apName);
173 virtual uint32 SetParam(
const char* apName, real64 arValue);
176 void SetFlag(uint32 auFlag)
179 void ClrFlag(uint32 auFlag)
185 ICACHE
virtual uint32 GetState();
187 ICACHE
virtual uint32 GetState(uint32& auSubState);
189 virtual uint32 SetError(uint32 auError);
191 ICACHE
virtual uint32 GetError(
bool abResolveExternal =
false);
193 virtual uint32 GetWarning();
195 virtual void AcceptError(uint32 auError=0xffffffff);
197 virtual void AcceptWarning(uint32 auWarning=0xffffffff);
200 virtual void GetCycleTime(real64& arCycleTime);
202 virtual void SetCycleTime(real64 arCycleTime);
204 virtual uint16 GetCycleNumber();
206 virtual uint16 GetCycleId();
208 virtual uint8 GetBusId();
211 virtual const char* GetUnit()
214 virtual uint32 GetCharacteristics()
215 {
return m_uCharacteristics; };
217 virtual uint8 GetTypeChar() {
return m_uTypeChar;};
220 { m_pParent = apParent;};
222 virtual const char* GetType() {
return m_pType;};
225 virtual CINCOObject* GetRegister();
228 virtual bool OnEmergency()
229 {
return (m_uError & m_uErrorDis) != 0;};
236 friend class CINCOpidDelayToHalt;
238 friend class CINOSRemoteControlWorker;
242 virtual void Reset();
245 virtual void StopJump();
247 virtual void StopTune();
249 virtual void Jump(real64 arSrc, real64 arDst){};
251 virtual void PreControl(){};
253 virtual void Control();
255 virtual void SetOutput(real64 arOutput);
257 virtual void CalcError();
259 virtual bool IsSettled(
bool abAdjAllowed=
false)
270 virtual const char* GetStateText();
289 uint32 m_uWarningMask;
301 CINCOObject* m_pRegister;
303 CINCOObject* m_pError;
305 CINCOObject* m_pErrorMask;
307 CINCOObject* m_pErrorDis;
309 CINCOObject* m_pWarning;
311 CINCOObject* m_pWarningMask;
313 CINCOObject* m_pFlag;
323 CINCOObject* m_pProp;
344 real64 m_rCycleTime_1;
346 real64 m_rCycleTimeMs;
348 real64 m_rDelayToHalt;
350 real64 m_rActivateTimeout;
352 int32 m_iActivateStart;
356 real64 m_rSettleTime;
358 real64 m_rSettleTimeout;
360 int32 m_iSettleStart;
380 uint32 m_uVactLength;
386 real64 m_rVactRaw[DF_INOS_BASE_CONTROLLER_MAX_V_FILTER];
420 uint32 m_uCharacteristics;
422 uint32 m_uDelayToHalt;
424 int32 m_iDelayToHalt;
441 friend void _INI_0000_CINOSBaseController();
452 TCreateController m_pCreate;
465 const char* apInpName,
const char* apOutName);
472 #endif // INC_CINOSBASECONTROLLER_H