317 virtual uint32
Activate(
bool abCheckPos =
true,
bool abSimulatePos =
false,
318 bool abSimulateOut =
false,
bool abSimulateAct =
false,
325 virtual uint32 Commutate();
327 virtual uint32 ForceCommutate(
bool abAlways =
false);
330 virtual uint32 ReActivate(uint32 auDelayMs = 100);
338 virtual uint32
Sync(real64 arPosition,
const char* apParam,
341 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
345 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
349 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
353 virtual uint32
Sync(real64 arSyncPos,
const char* apParam, CINCOObject* apObject,
357 virtual uint32
Sync(real64 arPosition, real64 arSyncPos, uint32 auFlags,
361 virtual uint32
Sync(real64 arPosition, real64 arSyncPos, uint32 auFlags,
365 virtual uint32
Sync(real64 arPosition, real64 arSyncPos, uint32 auFlags,
379 virtual uint32
SyncMove(real64 arPosition, real64 arSyncPos, real64 arMovePos,
392 virtual uint32
SyncMove(real64 arPosition, real64 arSyncPos, real64 arMovePos,
405 virtual uint32
SyncMove(real64 arPosition, real64 arSyncPos, real64 arMovePos,
408 virtual uint32 MoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
411 virtual uint32 MoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
412 const char* apTrgName, real64 arTrgLevel,
SINOSRampParam* apParam,
415 virtual uint32 MoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
416 const char* apTrgName, real64 arTrgLevel,
const char* apParam,
420 virtual uint32 MoveExApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
421 real64& arTrgPos, uint32 auFlags,
const char* apTrgName, real64 arTrgLevel,
424 virtual uint32 MoveExApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
425 real64& arTrgPos, uint32 auFlags,
const char* apTrgName, real64 arTrgLevel,
428 virtual uint32 MoveExApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
429 real64& arTrgPos, uint32 auFlags,
const char* apTrgName, real64 arTrgLevel,
454 { m_eBorderType = auType;};
461 { auType = m_eBorderType;};
468 { m_rBorderLimit = arLimit;};
475 { arLimit = m_rBorderLimit;};
482 { m_rBorderRelax = arRelax;};
489 { arRelax = m_rBorderRelax;};
502 virtual uint32
MoveToBorder(real64 arPosition,
const char* apParam,
513 virtual uint32
MoveToBorder(real64 arPosition, real64& arResult,
527 virtual uint32
MoveToBorderApp(real64 arPosition, real64 arPositionVel,
542 virtual uint32
MoveToBorderApp(real64 arPosition, real64 arPositionVel,
543 real64 arVelocity, real64& arResult,
const char* apParam,
559 virtual uint32
MoveToBorderApp(real64 arPosition, real64 arPositionVel,
560 real64 arVelocity, real64& arResult, uint32 auFlags,
const char* apParam,
588 bool abSet, real64& arResult,
const char* apParam,
611 bool abSet, real64& arResult, uint32 auFlags,
const char* apParam,
626 bool abSet, real64 arPositionVel, real64 arVelocity,
643 bool abSet, real64 arPositionVel, real64 arVelocity, real64& arResult,
661 bool abSet, real64 arPositionVel, real64 arVelocity, real64& arResult,
675 real64 arLevel,
bool abGreater,
const char* apParam,
690 real64 arLevel,
bool abGreater, real64& arResult,
const char* apParam,
706 real64 arLevel,
bool abGreater, real64& arResult,
SINOSRampParam* apParam,
722 real64 arLevel,
bool abGreater, real64& arResult, uint32 auFlags,
738 real64 arLevel,
bool abGreater, real64& arResult, uint32 auFlags,
755 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
773 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
791 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
810 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
829 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
832 #if defined(INOS_FORCE_CONTROL_SUPPORT)
864 virtual uint32
ForceApproach(
double adPosition,
double adPositionVel,
double adVelocity,
876 virtual uint32
ForceDepart(
double adPosition,
double adPositionVel,
double adVelocity,
945 virtual void SetPathPosition(real64 arPosition)
override
946 { m_pControl->SetPathS(arPosition); };
949 virtual void GetActPosition(real64& arPosition,
bool abRamp =
true)
override;
951 virtual void GetActPosition(real64& arPosition, uint64 auTicks)
override;
953 virtual void GetActPosition(real64& arCmdPosition, real64& arRealPosition);
955 virtual void GetActVelocity(real64& arVelocity,
bool abRamp =
true)
override;
957 virtual void GetActVelocity(real64& arCmdVelocity, real64& arRealVelocity);
959 virtual void GetActAcceleration(real64& arAcceleration,
bool abRamp =
true)
override;
961 virtual void GetActAcceleration(real64& arCmdAcceleration, real64& arRealAcceleration);
963 virtual void GetActJerk(real64& arJerk,
bool abRamp =
true)
override;
965 virtual void GetActPosError(real64& arPosError)
override;
967 virtual void GetActVelocityError(real64& arVelocityError,
bool abFiltered =
false)
override;
969 virtual void GetPosErrorAtEvent(real64& arPosError)
970 { arPosError = m_rMePosErr;};
975 virtual void GetRealPosition(real64& arPosition,
bool abMapped =
true)
override;
977 virtual void GetRealVelocity(real64& arVelocity)
override;
979 virtual void GetRealVelocityFiltered(real64& arVelocity);
981 virtual void GetRealAcceleration(real64& arAcceleration)
override;
983 virtual void GetRealJerk(real64& arJerk)
override;
991 virtual void GetUnitsPerInc(
double& adUnits)
override;
993 virtual void SetIncsPerUnit(
double adIncs);
995 virtual void GetIncsPerUnit(
double& adIncs)
override;
997 virtual void SetGearRatio(
double adGearRatio);
999 virtual void GetGearRatio(
double& adGearRatio);
1001 virtual void SetFeedPerTurn(
double adFeedPerTurn);
1003 virtual void GetFeedPerTurn(
double& adFeedPerTurn);
1005 virtual void SetIncsPerTurn(
double adIncsPerTurn);
1007 virtual void GetIncsPerTurn(
double& adIncsPerTurn);
1009 virtual void GetTurnsPerMin(
double& adTurnsPerMin);
1011 virtual void GetIncPosition(uint8& auIncPosition);
1013 virtual void SetInertia(
double adInertia);
1015 virtual void GetInertia(
double& adInertia);
1018 virtual void GetCycleTime(real64& arCycleTime,
bool abOversampled=
false)
override;
1020 virtual uint8 GetOversampling()
override;
1022 virtual uint16 GetCycleNumber()
override;
1024 virtual uint16 GetCycleId()
override;
1026 virtual void UpdateCycleId(uint16 auCycleId)
override;
1028 virtual uint8 GetBusId()
override;
1030 virtual uint32 SetParam(
const char* apName, real64 arValue)
override;
1032 virtual uint32 GetParam(
const char* apName, real64& arResult)
override;
1035 virtual int32 GetState()
override;
1037 virtual int32 GetState(uint32& auRampState)
override;
1039 virtual int32 GetState(uint32& auRampState, uint32& auControlState);
1041 virtual uint32 GetError(
bool abResolveExternal =
false)
override;
1043 virtual uint64 GetErrorEx(
bool abResolveExternal =
false)
override;
1045 virtual uint32 GetError(uint32& auRampError,
bool abResolveExternal =
false)
override;
1047 virtual uint64 GetErrorEx(uint64& auRampError,
bool abResolveExternal =
false)
override;
1049 virtual uint32 GetError(uint32& auRampError, uint32& auControlError,
1050 bool abResolveExternal =
false);
1052 virtual uint64 GetErrorEx(uint64& auRampError, uint64& auControlError,
1053 bool abResolveExternal =
false);
1055 virtual bool IsErrorFatal()
override;
1057 virtual uint32 GetWarning(
bool abResolveExternal =
false)
override;
1059 virtual uint64 GetWarningEx(
bool abResolveExternal =
false)
override;
1061 virtual uint32 GetWarning(uint32& auRampWarning,
bool abResolveExternal =
false)
override;
1063 virtual uint64 GetWarningEx(uint64& auRampWarning,
bool abResolveExternal =
false)
override;
1065 virtual uint32 GetWarning(uint32& auRampWarning, uint32& auControlWarning,
1066 bool abResolveExternal =
false);
1068 virtual uint64 GetWarningEx(uint64& auRampWarning, uint64& auControlWarning,
1069 bool abResolveExternal =
false);
1071 virtual uint32 AcceptError()
override;
1073 virtual uint32 AcceptError(uint32 auError)
override;
1075 virtual uint32 AcceptError(uint32 auError, uint32 auRampError)
override;
1077 virtual uint32 AcceptError(uint32 auError, uint32 auRampError,
1078 uint32 auControlError);
1080 virtual uint32 AcceptWarning()
override;
1082 virtual uint32 AcceptWarning(uint32 auWarning)
override;
1084 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning)
override;
1086 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning,
1087 uint32 auControlWarning);
1089 virtual uint32 SetParam(
const char* apName, uint64 auValue)
override
1091 {
return defVarNotFound;};
1092 virtual uint32 GetParam(
const char* apName, uint64& auResult)
override
1094 {
return defVarNotFound;};
1098 virtual CINCOObject* GetRegister()
override;
1101 {
return m_pControl;};
1104 {
return m_pMotor;};
1106 #ifdef INOS_FORCE_CONTROL_SUPPORT
1107 virtual class CINOSForceControl* GetForce()
1108 {
return m_pForce;};
1112 virtual bool IsEmgInActivating();
1117 virtual void EnableSync(real64 arPosition = REAL64(0.0),
1118 uint8 auSyncMode = DF_INOS_AXIS_SYNC_NOADJ)
override;
1120 virtual void DisableSync()
override;
1122 virtual void GetSyncCount(uint32& auSyncCount)
override;
1124 virtual void SetSyncCount(uint32 auSyncCount)
override;
1126 virtual void GetSyncCorr(real64& arSyncCorr);
1128 virtual bool EnableSafeSync();
1130 virtual void DisableSafeSync();
1137 real64 arNormPos = REAL64(0.0))
override;
1143 virtual void SetNormMode(uint8 auNormMode)
override;
1147 virtual void EnableCurLimit()
override;
1149 virtual void DisableCurLimit()
override;
1151 virtual void SetCurLimit(
bool abEnable);
1153 virtual bool GetCurLimit()
override;
1155 virtual void SetMaxCurrent(real64 arMaxCurrent);
1157 virtual void GetMaxCurrent(real64& arMaxCurrent);
1164 {
return m_pCpdAxis;};
1166 uint32 GetCoupledOptions()
1168 {
return m_uCpdOptions;};
1169 virtual bool IsCouplingEnabled()
1172 virtual uint32 EnableCoupling(
const char* apAxis, uint32 auOptions,
1175 virtual uint32 EnableCoupling(
const char* apAxis, uint32 auOptions,
1176 real64 arMaxDelta, real64 arMaxCorr);
1178 virtual uint32 EnableCoupling();
1180 virtual uint32 DisableCoupling();
1182 virtual uint32 EnableLoadBalancing(
const char* apAxis, real64 arFactor);
1184 virtual uint32 DisableLoadBalancing();
1186 virtual void SetCpdOption(uint32 auOption) {
1187 INOS_OR(m_uCpdOptions, auOption);
1189 virtual void ClrCpdOption(uint32 auOption) {
1190 INOS_AND(m_uCpdOptions, ~auOption);
1196 bool abInverted =
false)
1198 { m_pLimitPos = apLimitPos; m_pLimitNeg = apLimitNeg;
1199 m_bLimitInv = abInverted;
if (m_pLimitPos || m_pLimitNeg) m_eBorderType =
eBorderSensor;};
1200 virtual void ResetBorderLimit()
1202 { m_pLimitPos = m_pLimitNeg = NULL;};
1208 virtual bool IsPowerReady();
1210 virtual bool IsOnline()
const;
1223 #ifdef INOS_SAFETY_SUPPORT
1225 virtual uint32 MoveMicro();
1228 virtual bool iSetupSafetyRegistration()
override;
1233 #if defined(INOS_MOTORCONFIG_LOAD_SUPPORT)
1234 virtual void GetMotorConfig(
char* apResult, uint32 auSize)
const
1237 inos_strncpy(apResult, desc->m_cMotorConfig, auSize);
1239 virtual bool IsMotorConfigValid()
const
1243 return !((
nullptr != desc) && (0 != strlen(desc->m_cMotorConfig)) && (0 == (desc->m_uMotorConfigFlags & 1)));
1245 virtual bool IsMotorConfigUnique()
const
1249 return ((
nullptr != desc) && ((0 == strlen(desc->m_cMotorConfig)) || (2 == (desc->m_uMotorConfigFlags & 2))));
1262 virtual void iInActivate()
override;
1266 virtual void iEmergencyStop(
bool abLive =
false)
override;
1268 virtual void iSetCycleTime(real64 arCycleTime)
override;
1270 virtual void iRegisterAxis()
override;
1272 virtual uint32 iMoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
1273 const char* apTrgName, real64 arTrgLevel,
SINOSRampParam* apParam,
1278 bool iMoveExSetupTrigger(
const char* apTrgName, real64 arTrgLevel);
1280 bool iMoveExBorderReached();
1282 bool iMoveExBorder();
1284 bool iMoveExTriggerOccured();
1286 void iMoveExRestoreControl();
1288 void iMoveExCleanup();
1290 void iMoveExWaitForBorderDelayDone();
1292 void iMoveExWaitForEventBorderDelayDone();
1294 void iMoveExBorderOccured();
1296 void iMoveExBorderRelaxStart();
1298 void iMoveExBorderRelaxStop();
1300 ICACHE
virtual void iPostMap()
override;
1302 ICACHE
virtual void iPostMapCpd();
1304 ICACHE
virtual void iPostWrite()
override;
1306 ICACHE
virtual void iPostWriteCpd();
1308 virtual uint32 iEnableCoupling();
1310 virtual void iActivateCoupling();
1312 virtual void iInActivateCoupling();
1314 void iCheckErrors();
1316 void iCheckWarnings();
1318 virtual void iSetActRampPosition(real64 arPosition)
override;
1320 static bool TestBit_0(
void* apAddress ,
void* apNumber);
1322 static bool TestBit_1(
void* apAddress ,
void* apNumber);
1324 static bool TestBit_true(
void* apAddress ,
void* apNumber);
1326 uint32 eMoveEx(real64 arPosition, real64 arTrgPosition, uint32 auFlags,
1327 char* apTrgName, real64 arTrgLevel);
1329 uint32 eMoveEx(real64 arPosition, real64 arTrgPosition, uint32 auFlags,
1330 char* apTrgName, real64 arTrgLevel,
char* apParam);
1332 uint32 eMoveToBorder(real64 arPosition,
char* apParam);
1334 uint32 eSync(real64 arPosition, real64 arSyncPosition, uint32 auFlags);
1336 uint32 eSync(real64 arPosition, real64 arSyncPosition, uint32 auFlags,
char* apParam);
1339 void iLoadBalancingHook();
1342#ifdef INOS_SAFETY_SUPPORT
1343 void iHandleSafety(uint32& uError);
1355 bool m_bPowerOnCtr0;
1364 uint32 m_uMeCtrFlag;
1366 uint32 m_uMeRmpFlag;
1382 real64 m_rBorderLimit;
1384 real64 m_rBorderRelax;
1387 uint32 m_uBorderDelay;
1390 bool m_bBorderRelaxActive;
1392 void* m_pMeTrgSrcAdr;
1394 uint64 m_uMeTrgLevel;
1396 tpMeTrgFct m_pMeTrgFct;
1398 uint16 m_uMeTrgSrcTyp;
1400 uint16 m_uMeTrgSrcBit;
1402 real64 m_rMePositionVel;
1404 real64 m_rMeVelocity;
1406 real64 m_rMePositionMove;
1410 bool m_bMeCurrentLimit;
1412 bool m_bMeRestoreControlFlags;
1414 bool m_bMeTriggerMasked;
1416 real64 m_rMePositionAtBorder;
1421 uint32 m_uCpdOptions;
1429 uint16 m_uCpdWaitCns;
1431 real64 m_rCpdOffset;
1433 real64 m_rCpdMaxDelta;
1435 real64 m_rCpdMaxCorr;
1439 uint32 m_uRelaxTime;
1455 uint32 m_ueFlagsSync;
1457 uint32 m_ueFlagsMoveEx;
1461 real64 m_reTrgLevel;
1464 char m_ceCpdAxis[16];
1466 uint32 m_ueCpdOptions;
1468 real64 m_reCpdMaxDelta;
1470 real64 m_reCpdMaxCorr;
1472 real64 m_reStretchFactor;
1477 #if defined(INOS_FORCE_CONTROL_SUPPORT)
1478 double m_deForce = 5.0;
1479 double m_deForceLimit = 10.0;
1480 double m_deForceTara = 0.0;
1481 uint32 m_uForceControlFlags = 0;
1482 inosName32 m_ceForceParam{};
1483 class CINOSForceControl* m_pForce =
nullptr;
1484 uintid m_uForceHookId = 0;
1486 uint32 eForceActivate(
const char*);
1487 uint32 eForceInactivate();
1488 uint32 eForceInactivate(
double);
1489 uint32 eForceApproach(
double,
double,
double,
double,
double,
const char*);
1490 uint32 eForceDepart(
double,
double,
double,
double,
const char*);
1491 uint32 eForceMove(
double,
const char*);
1492 uint32 eForceMoveStop(
const char*);
1493 uint32 eForceBreak(
double,
const char*);
1494 uint32 eForceTara(
double);
1495 uint32 eForceSelect(
const char*);
1500 void ForcePosition();
1502 void ForceHookEnable();