173 const char* apController,
const char* apInpName,
const char* apOutName);
188 virtual uint32
Activate(
bool abCheckVal =
true,
bool abSimulateVal =
false,
189 bool abSimulateOut =
false,
bool abSimulateAct =
false,
197 virtual void CreateRemoteTargetControl(
const char* apTarget,
198 real64 arRemoteUpdateTime,
201 virtual void AttachRemoteTargetControl(
const char* apTarget,
202 real64 arRemoteUpdateTime,
205 virtual uintptr DoCollectData();
210 virtual uint32 Move(real64 arValue,
216 virtual uint32 Move(real64 arPosition,
const char* apParam,
219 virtual uint32 Toggle(real64 arvalue, real64 arValue2);
230 virtual real64 GetMoveTime(real64 arValue);
232 virtual real64 GetMoveTime(real64 arValue,
SINOSRampParam* apParam);
234 virtual real64 GetMoveTime(real64 arValue,
const char* apParam);
236 virtual real64 GetMoveTime(real64 arValue, real64 arDelta);
238 virtual real64 GetMoveTime(real64 arValue, real64 arDelta,
SINOSRampParam* apParam);
240 virtual real64 GetMoveTime(real64 arValue, real64 arDelta,
const char* apParam);
242 virtual real64 GetMoveTime(real64 arStartValue, real64 arEndValue,
246 virtual real64 GetMoveTime(real64 arStartValue, real64 arEndValue,
250 virtual real64 GetMoveTime(real64 arStartValue, real64 arEndValue,
251 real64 arDelta,
const char* apParam);
254 virtual uint32 GetMoveTicks(real64 arValue);
256 virtual uint32 GetMoveTicks(real64 arPosition,
SINOSRampParam* apParam);
258 virtual uint32 GetMoveTicks(real64 arValue,
const char* apParam);
260 virtual uint32 GetMoveTicks(real64 arValue, real64 arDelta);
262 virtual uint32 GetMoveTicks(real64 arValue, real64 arDelta,
SINOSRampParam* apParam);
264 virtual uint32 GetMoveTicks(real64 arValue, real64 arDelta,
const char* apParam);
266 virtual uint32 GetMoveTicks(real64 arStartValue, real64 arEndValue,
270 virtual uint32 GetMoveTicks(real64 arStartValue, real64 arEndValue,
274 virtual uint32 GetMoveTicks(real64 arStartValue, real64 arEndValue,
275 real64 arDelta,
const char* apParam);
278 virtual real64 GetMoveDist(real64 arValue, real64 arTime);
280 virtual real64 GetMoveDist(real64 arValue, real64 arTime,
283 virtual real64 GetMoveDist(real64 arValue, real64 arTime,
284 const char* apParam);
286 virtual real64 GetMoveDist(real64 arValue, uint32 auTicks);
288 virtual real64 GetMoveDist(real64 arValue, uint32 auTicks,
291 virtual real64 GetMoveDist(real64 arValue, uint32 auTicks,
292 const char* apParam);
294 virtual real64 GetMoveDist(real64 arStartValue, real64 arEndValue,
298 virtual real64 GetMoveDist(real64 arStartValue, real64 arEndValue,
302 virtual real64 GetMoveDist(real64 arStartValue, real64 arEndValue,
303 real64 arTime,
const char* apParam);
306 virtual real64 GetMoveDist(real64 arStartValue, real64 arEndValue,
310 virtual real64 GetMoveDist(real64 arStartValue, real64 arEndValue,
314 virtual real64 GetMoveDist(real64 arStartValue, real64 arEndValue,
315 uint32 auTicks,
const char* apParam);
318 virtual uint64 GetTargetTicks();
323 virtual uint32 Pull(real64 arS, real64 arV, real64 arA, real64 arJ);
332 { m_pRamp->Enable();};
336 { m_pRamp->Disable();};
346 virtual uint32 Stop(real64 arValue,
352 virtual uint32 Stop(real64 arValue,
const char* apParam,
362 virtual const char* GetName();
364 virtual const char* GetUnit();
366 virtual uint32 GetCharacteristics();
368 virtual void SetCmdValue(real64 arValue);
370 virtual void GetCmdValue(real64& arValue);
372 virtual void SetCmdVelocity(real64 arVelocity);
374 virtual void GetCmdVelocity(real64& arVelocity);
376 virtual void SetCmdAcceleration(real64 arAcceleration);
378 virtual void GetCmdAcceleration(real64& arAcceleration);
380 virtual void SetCmdDeceleration(real64 arDeceleration);
382 virtual void GetCmdDeceleration(real64& arDeceleration);
384 virtual void SetCmdJerk(real64 arJerk, uint32 auNumber = DF_INOS_RAMP_JERK_ALL);
386 virtual void GetCmdJerk(real64& arJerk, uint32 auNumber = 0);
388 virtual void GetCmdRealJerk(real64& arJerk, uint32 auNumber = 0);
390 virtual void SetCmdSlowMotion(real64 arSlowMotion);
392 virtual void GetCmdSlowMotion(real64& arSlowMotion);
394 virtual uint32 SetActValue(real64 arValue);
396 virtual void GetActValue(real64& arValue);
398 virtual void GetActVelocity(real64& arVelocity);
400 virtual void GetActAcceleration(real64& arAcceleration);
402 virtual void GetActJerk(real64& arJerk);
404 virtual uint32 SetRealValue(real64 arValue);
406 virtual void GetRealValue(real64& arValue);
408 virtual void SetMinValue(real64 arValue);
410 virtual void GetMinValue(real64& arValue);
412 virtual void SetMaxValue(real64 arValue);
414 virtual void GetMaxValue(real64& arValue);
416 virtual void SetMaxVelocity(real64 arVelocity);
418 virtual void GetMaxVelocity(real64& arVelocity);
420 virtual void SetMaxAcceleration(real64 arAcceleration);
422 virtual void GetMaxAcceleration(real64& arAcceleration);
424 virtual void SetMaxDeceleration(real64 arDeceleration);
426 virtual void GetMaxDeceleration(real64& arDeceleration);
428 virtual void SetMaxJerk(real64 arJerk);
430 virtual void GetMaxJerk(real64& arJerk);
432 virtual void SetCycleTime(real64 arCycleTime);
434 virtual void GetCycleTime(real64& arCycleTime);
436 virtual uint16 GetCycleNumber();
438 virtual uint16 GetCycleId();
440 virtual uint8 GetBusId();
442 virtual uint32 SetParam(
const char* apName, real64 arValue);
444 virtual uint32 GetParam(
const char* apName, real64& arResult);
446 virtual volatile real64* GetParamAdr(
const char* apName);
448 void SetFlag(uint32 auFlag)
451 void ClrFlag(uint32 auFlag)
457 virtual uint32 GetState();
459 virtual uint32 GetState(uint32& auRmpState, uint32& auCtrState);
461 virtual uint32 GetError();
463 virtual uint32 GetError(uint32& auRmpError, uint32& auCtrState);
465 virtual uint32 GetWarning();
467 virtual uint32 GetWarning(uint32& auRmpWarning, uint32& auCtrWarning);
469 virtual void AcceptError();
471 virtual void AcceptError(uint32 auError);
473 virtual void AcceptError(uint32 auError, uint32 auRmpError, uint32 auCtrError);
475 virtual void AcceptWarning();
477 virtual void AcceptWarning(uint32 auWarning);
479 virtual void AcceptWarning(uint32 auWarning, uint32 auRmpWarning, uint32 auCtrError);
483 virtual void eCreateParamSet(
const char* apSetName);
488 virtual void DestroyParamSet(
const char* apSetName);
490 virtual bool SelectParamSet(
const char* apSetName);
495 static void eCreateGlobalParamSet(
const char* apSetName);
500 static void DestroyGlobalParamSet(
const char* apSetName);
507 virtual CINCOObject* GetRegister();
514 virtual uintid RegisterErrorHook(
void* apHandler,
void* apObject = 0);
516 virtual void UnRegisterErrorHook(uintid auHookId);
518 virtual const char* GetInputName();
520 virtual const char* GetOutputName();
522 virtual const char* GetEnbOutputName();
524 virtual const char* GetActivateOutputName();
527 static void SetBusError();
529 static void AcceptBusError();
531 static void SetSafetyError();
533 static void AcceptSafetyError();
535 static void SetApplicationError();
537 static void AcceptApplicationError();
540 virtual void UpdateIncoItems(
bool i_bForceUpdate);
547 friend void _INI_0400_CINOSControl();
548 friend class CINOSRemoteControlWorker;
553 {
return (strcmp(GetName(), aControl.GetName())<0);}
555 {
return (strcmp(GetName(), aControl.GetName())==0);}
556 int operator < (
const char* aName)
557 {
return (strcmp(GetName(), aName)<0);}
558 int operator == (
const char* aName)
559 {
return (strcmp(GetName(), aName)==0);}
565 virtual void SetError(uint32 auErrors);
567 bool Enter(uint32 auCommand,
CINOSSync* apSync = 0);
574 {
return m_CmdLock.
GetOwner() != 0;};
576 virtual void iInActivate();
582 virtual void iControl();
584 virtual void iPostWrite();
586 static void SetTargetError();
588 void OnTargetError();
592 void OnSafetyError();
594 void OnApplicationError();
596 CINOSBit* SearchOutput(
const char* apName)
const;
599 virtual void CallErrorHooks();
609 void eActivate(
bool abCheckVal,
bool abSimulateVal,
bool abSimulateOut,
616 void eAttachRemoteTargetControl(
const char* apTarget, real64 arRemoteUpdateTime,
bool abCreate);
618 void eMove(real64 arPosition,
const char* apParam);
630 void eAcceptWarning();
632 void eTune(
const char* apParam);
659 uint32 m_uWarningMask;
666 CINCOObject* m_pRegister;
668 CINCOObject* m_pCommand;
670 CINCOObject* m_pTest;
672 CINCOObject* m_pError;
674 CINCOObject* m_pErrorDis;
676 CINCOObject* m_pErrorMask;
678 CINCOObject* m_pWarning;
680 CINCOObject* m_pWarningMask;
682 CINCOObject* m_pFlag;
684 CINCOObject* m_pState;
706 uintid m_uPostHookId;
710 uintid m_uBusErrorHookId;
712 SINOSControlErrorHook* m_pErrorHooks;
714 TINOSNameBalancedBinaryTree<CINOSControlParamSet>* m_pParamSets;
716 static TINOSNameBalancedBinaryTree<CINOSControlParamSet>* m_pGlobalParamSets;
718 real64 m_rCycleTimeMs;
726 inosName32 m_cInputName;
728 inosName32 m_cOutputName;
730 inosName32 m_cEnbOutputName;
732 inosName32 m_cActivateOutputName;
734 inosName32 m_cSelectedParamName;
736 inosName32 m_cRemoteTargetName;
738 CINOSBusModule* m_pRemoteControlModule;
740 uint32 m_uRemoteUpdateTime;
762 bool m_bUpdatePending =
false;
764 SINOSCollectedControlData* m_pCollectedData =
nullptr;
766 uint32 m_uRemoteCollectedDataAddr = 0;
768 uint32 m_uRemoteCollectedDataVersion = 0;
772 uint32 m_uActivateCheckVal;
774 uint32 m_uActivateSimulateVal;
776 uint32 m_uActivateSimulateOut;
778 uint32 m_uActivateSimulateAct;
782 inosName32 m_cMoveParam;
784 inosName32 m_cCreateRemoteControlTarget;
786 real64 m_cCreateRemoteControlUpdateTime;
787 bool m_bCreate{
false};
789 char m_cTuneParam[64];
795 static uint32 eCreate(
char* apName,
char* apRamp,
char* apController,
796 char* apInpName,
char* apOutName);
798 static uint32 eDestroy(
char* apName);
803 static TINOSNameBalancedBinaryTree<CINOSControl>* m_pControls;
805 static CINCOObject* m_psRegister;
807 static CINCOObject* m_psCmd;
809 static CINCOObject* m_psEntity;
811 static char m_ceName[64];
813 static char m_ceRamp[32];
815 static char m_ceController[32];
817 static char m_ceInput[32];
819 static char m_ceOutput[32];