322 virtual uint32
Activate(
bool abCheckPos =
true,
bool abSimulatePos =
false,
323 bool abSimulateOut =
false,
bool abSimulateAct =
false,
330 virtual uint32 Commutate();
332 virtual uint32 ForceCommutate(
bool abAlways =
false);
335 virtual uint32 ReActivate(uint32 auDelayMs = 100);
343 virtual uint32
Sync(real64 arPosition,
const char* apParam,
346 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
350 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
354 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
358 virtual uint32
Sync(real64 arSyncPos,
const char* apParam, CINCOObject* apObject,
362 virtual uint32
Sync(real64 arPosition, real64 arSyncPos, uint32 auFlags,
366 virtual uint32
Sync(real64 arPosition, real64 arSyncPos, uint32 auFlags,
370 virtual uint32
Sync(real64 arPosition, real64 arSyncPos, uint32 auFlags,
384 virtual uint32
SyncMove(real64 arPosition, real64 arSyncPos, real64 arMovePos,
397 virtual uint32
SyncMove(real64 arPosition, real64 arSyncPos, real64 arMovePos,
410 virtual uint32
SyncMove(real64 arPosition, real64 arSyncPos, real64 arMovePos,
413 virtual uint32 MoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
416 virtual uint32 MoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
417 const char* apTrgName, real64 arTrgLevel,
SINOSRampParam* apParam,
420 virtual uint32 MoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
421 const char* apTrgName, real64 arTrgLevel,
const char* apParam,
425 virtual uint32 MoveExApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
426 real64& arTrgPos, uint32 auFlags,
const char* apTrgName, real64 arTrgLevel,
429 virtual uint32 MoveExApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
430 real64& arTrgPos, uint32 auFlags,
const char* apTrgName, real64 arTrgLevel,
433 virtual uint32 MoveExApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
434 real64& arTrgPos, uint32 auFlags,
const char* apTrgName, real64 arTrgLevel,
459 { m_eBorderType = auType;};
466 { auType = m_eBorderType;};
473 { m_rBorderLimit = arLimit;};
480 { arLimit = m_rBorderLimit;};
487 { m_rBorderRelax = arRelax;};
494 { arRelax = m_rBorderRelax;};
507 virtual uint32
MoveToBorder(real64 arPosition,
const char* apParam,
518 virtual uint32
MoveToBorder(real64 arPosition, real64& arResult,
532 virtual uint32
MoveToBorderApp(real64 arPosition, real64 arPositionVel,
547 virtual uint32
MoveToBorderApp(real64 arPosition, real64 arPositionVel,
548 real64 arVelocity, real64& arResult,
const char* apParam,
564 virtual uint32
MoveToBorderApp(real64 arPosition, real64 arPositionVel,
565 real64 arVelocity, real64& arResult, uint32 auFlags,
const char* apParam,
593 bool abSet, real64& arResult,
const char* apParam,
616 bool abSet, real64& arResult, uint32 auFlags,
const char* apParam,
631 bool abSet, real64 arPositionVel, real64 arVelocity,
648 bool abSet, real64 arPositionVel, real64 arVelocity, real64& arResult,
666 bool abSet, real64 arPositionVel, real64 arVelocity, real64& arResult,
680 real64 arLevel,
bool abGreater,
const char* apParam,
695 real64 arLevel,
bool abGreater, real64& arResult,
const char* apParam,
711 real64 arLevel,
bool abGreater, real64& arResult,
SINOSRampParam* apParam,
727 real64 arLevel,
bool abGreater, real64& arResult, uint32 auFlags,
743 real64 arLevel,
bool abGreater, real64& arResult, uint32 auFlags,
760 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
778 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
796 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
815 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
834 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
837 #if defined(INOS_FORCE_CONTROL_SUPPORT)
869 virtual uint32
ForceApproach(
double adPosition,
double adPositionVel,
double adVelocity,
881 virtual uint32
ForceDepart(
double adPosition,
double adPositionVel,
double adVelocity,
950 virtual void SetPathPosition(real64 arPosition)
override
951 { m_pControl->SetPathS(arPosition); };
954 virtual void GetActPosition(real64& arPosition,
bool abRamp =
true)
override;
956 virtual void GetActPosition(real64& arPosition, uint64 auTicks)
override;
958 virtual void GetActPosition(real64& arCmdPosition, real64& arRealPosition);
960 virtual void GetActVelocity(real64& arVelocity,
bool abRamp =
true)
override;
962 virtual void GetActVelocity(real64& arCmdVelocity, real64& arRealVelocity);
964 virtual void GetActAcceleration(real64& arAcceleration,
bool abRamp =
true)
override;
966 virtual void GetActAcceleration(real64& arCmdAcceleration, real64& arRealAcceleration);
968 virtual void GetActJerk(real64& arJerk,
bool abRamp =
true)
override;
970 virtual void GetActPosError(real64& arPosError)
override;
972 virtual void GetActVelocityError(real64& arVelocityError,
bool abFiltered =
false)
override;
974 virtual void GetPosErrorAtEvent(real64& arPosError)
975 { arPosError = m_rMePosErr;};
980 virtual void GetRealPosition(real64& arPosition,
bool abMapped =
true)
override;
982 virtual void GetRealVelocity(real64& arVelocity)
override;
984 virtual void GetRealVelocityFiltered(real64& arVelocity);
986 virtual void GetRealAcceleration(real64& arAcceleration)
override;
988 virtual void GetRealJerk(real64& arJerk)
override;
996 virtual void GetUnitsPerInc(
double& adUnits)
override;
998 virtual void SetIncsPerUnit(
double adIncs);
1000 virtual void GetIncsPerUnit(
double& adIncs)
override;
1002 virtual void SetGearRatio(
double adGearRatio);
1004 virtual void GetGearRatio(
double& adGearRatio);
1006 virtual void SetFeedPerTurn(
double adFeedPerTurn);
1008 virtual void GetFeedPerTurn(
double& adFeedPerTurn);
1010 virtual void SetIncsPerTurn(
double adIncsPerTurn);
1012 virtual void GetIncsPerTurn(
double& adIncsPerTurn);
1014 virtual void GetTurnsPerMin(
double& adTurnsPerMin);
1016 virtual void GetIncPosition(uint8& auIncPosition);
1018 virtual void SetInertia(
double adInertia);
1020 virtual void GetInertia(
double& adInertia);
1023 virtual void GetCycleTime(real64& arCycleTime,
bool abOversampled=
false)
override;
1025 virtual uint8 GetOversampling()
override;
1027 virtual uint16 GetCycleNumber()
override;
1029 virtual uint16 GetCycleId()
override;
1031 virtual void UpdateCycleId(uint16 auCycleId)
override;
1033 virtual uint8 GetBusId()
override;
1035 virtual uint32 SetParam(
const char* apName, real64 arValue)
override;
1037 virtual uint32 GetParam(
const char* apName, real64& arResult)
override;
1040 virtual int32 GetState()
override;
1042 virtual int32 GetState(uint32& auRampState)
override;
1044 virtual int32 GetState(uint32& auRampState, uint32& auControlState);
1046 virtual uint32 GetError(
bool abResolveExternal =
false)
override;
1048 virtual uint64 GetErrorEx(
bool abResolveExternal =
false)
override;
1050 virtual uint32 GetError(uint32& auRampError,
bool abResolveExternal =
false)
override;
1052 virtual uint64 GetErrorEx(uint64& auRampError,
bool abResolveExternal =
false)
override;
1054 virtual uint32 GetError(uint32& auRampError, uint32& auControlError,
1055 bool abResolveExternal =
false);
1057 virtual uint64 GetErrorEx(uint64& auRampError, uint64& auControlError,
1058 bool abResolveExternal =
false);
1060 virtual bool IsErrorFatal()
override;
1062 virtual uint32 GetWarning(
bool abResolveExternal =
false)
override;
1064 virtual uint64 GetWarningEx(
bool abResolveExternal =
false)
override;
1066 virtual uint32 GetWarning(uint32& auRampWarning,
bool abResolveExternal =
false)
override;
1068 virtual uint64 GetWarningEx(uint64& auRampWarning,
bool abResolveExternal =
false)
override;
1070 virtual uint32 GetWarning(uint32& auRampWarning, uint32& auControlWarning,
1071 bool abResolveExternal =
false);
1073 virtual uint64 GetWarningEx(uint64& auRampWarning, uint64& auControlWarning,
1074 bool abResolveExternal =
false);
1076 virtual uint32 AcceptError()
override;
1078 virtual uint32 AcceptError(uint32 auError)
override;
1080 virtual uint32 AcceptError(uint32 auError, uint32 auRampError)
override;
1082 virtual uint32 AcceptError(uint32 auError, uint32 auRampError,
1083 uint32 auControlError);
1085 virtual uint32 AcceptWarning()
override;
1087 virtual uint32 AcceptWarning(uint32 auWarning)
override;
1089 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning)
override;
1091 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning,
1092 uint32 auControlWarning);
1094 virtual uint32 SetParam(
const char* apName, uint64 auValue)
override
1096 {
return defVarNotFound;};
1097 virtual uint32 GetParam(
const char* apName, uint64& auResult)
override
1099 {
return defVarNotFound;};
1103 virtual CINCOObject* GetRegister()
override;
1106 {
return m_pControl;};
1109 {
return m_pMotor;};
1111 #ifdef INOS_FORCE_CONTROL_SUPPORT
1112 virtual class CINOSForceControl* GetForce()
1113 {
return m_pForce;};
1117 virtual bool IsEmgInActivating();
1122 virtual void EnableSync(real64 arPosition = REAL64(0.0),
1123 uint8 auSyncMode = DF_INOS_AXIS_SYNC_NOADJ)
override;
1125 virtual void DisableSync()
override;
1127 virtual void GetSyncCount(uint32& auSyncCount)
override;
1129 virtual void SetSyncCount(uint32 auSyncCount)
override;
1131 virtual void GetSyncCorr(real64& arSyncCorr);
1133 virtual bool EnableSafeSync();
1135 virtual void DisableSafeSync();
1142 real64 arNormPos = REAL64(0.0))
override;
1148 virtual void SetNormMode(uint8 auNormMode)
override;
1152 virtual void EnableCurLimit()
override;
1154 virtual void DisableCurLimit()
override;
1156 virtual void SetCurLimit(
bool abEnable);
1158 virtual bool GetCurLimit()
override;
1160 virtual void SetMaxCurrent(real64 arMaxCurrent);
1162 virtual void GetMaxCurrent(real64& arMaxCurrent);
1169 {
return m_pCpdAxis;};
1171 uint32 GetCoupledOptions()
1173 {
return m_uCpdOptions;};
1174 virtual bool IsCouplingEnabled()
1177 virtual uint32 EnableCoupling(
const char* apAxis, uint32 auOptions,
1180 virtual uint32 EnableCoupling(
const char* apAxis, uint32 auOptions,
1181 real64 arMaxDelta, real64 arMaxCorr);
1183 virtual uint32 EnableCoupling();
1185 virtual uint32 DisableCoupling();
1187 virtual uint32 EnableLoadBalancing(
const char* apAxis, real64 arFactor);
1189 virtual uint32 DisableLoadBalancing();
1191 virtual void SetCpdOption(uint32 auOption) {
1192 INOS_OR(m_uCpdOptions, auOption);
1194 virtual void ClrCpdOption(uint32 auOption) {
1195 INOS_AND(m_uCpdOptions, ~auOption);
1197 virtual uint32 GetCpdOptions() {
1198 return m_uCpdOptions;
1204 bool abInverted =
false)
1206 { m_pLimitPos = apLimitPos; m_pLimitNeg = apLimitNeg;
1207 m_bLimitInv = abInverted;
if (m_pLimitPos || m_pLimitNeg) m_eBorderType =
eBorderSensor;};
1208 virtual void ResetBorderLimit()
1210 { m_pLimitPos = m_pLimitNeg = NULL;};
1216 virtual bool IsPowerReady();
1218 virtual bool IsOnline()
const;
1231 #ifdef INOS_SAFETY_SUPPORT
1233 virtual uint32 MoveMicro();
1236 virtual bool iSetupSafetyRegistration()
override;
1241 #if defined(INOS_MOTORCONFIG_LOAD_SUPPORT)
1242 virtual void GetMotorConfig(
char* apResult, uint32 auSize)
const
1245 inos_strncpy(apResult, desc->m_cMotorConfig, auSize);
1247 virtual bool IsMotorConfigValid()
const
1251 return !((
nullptr != desc) && (0 != strlen(desc->m_cMotorConfig)) && (0 == (desc->m_uMotorConfigFlags & 1)));
1253 virtual bool IsMotorConfigUnique()
const
1257 return ((
nullptr != desc) && ((0 == strlen(desc->m_cMotorConfig)) || (2 == (desc->m_uMotorConfigFlags & 2))));
1270 virtual void iInActivate()
override;
1274 virtual void iEmergencyStop(
bool abLive =
false)
override;
1276 virtual void iPowerEmergencyStop()
override;
1278 virtual void iSetCycleTime(real64 arCycleTime)
override;
1280 virtual void iRegisterAxis()
override;
1282 virtual uint32 iMoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
1283 const char* apTrgName, real64 arTrgLevel,
SINOSRampParam* apParam,
1288 bool iMoveExSetupTrigger(
const char* apTrgName, real64 arTrgLevel);
1290 bool iMoveExBorderReached();
1292 bool iMoveExBorder();
1294 bool iMoveExTriggerOccured();
1296 void iMoveExRestoreControl();
1298 void iMoveExCleanup();
1300 void iMoveExWaitForBorderDelayDone();
1302 void iMoveExWaitForEventBorderDelayDone();
1304 void iMoveExBorderOccured();
1306 void iMoveExBorderRelaxStart();
1308 void iMoveExBorderRelaxStop();
1310 ICACHE
virtual void iPostMap()
override;
1312 ICACHE
virtual void iPostMapCpd();
1314 ICACHE
virtual void iPostWrite()
override;
1316 ICACHE
virtual void iPostWriteCpd();
1318 virtual uint32 iEnableCoupling();
1320 virtual void iActivateCoupling();
1322 virtual void iInActivateCoupling();
1324 void iCheckErrors();
1326 void iCheckWarnings();
1328 virtual void iSetActRampPosition(real64 arPosition)
override;
1330 static bool TestBit_0(
void* apAddress ,
void* apNumber);
1332 static bool TestBit_1(
void* apAddress ,
void* apNumber);
1334 static bool TestBit_true(
void* apAddress ,
void* apNumber);
1336 uint32 eMoveEx(real64 arPosition, real64 arTrgPosition, uint32 auFlags,
1337 char* apTrgName, real64 arTrgLevel);
1339 uint32 eMoveEx(real64 arPosition, real64 arTrgPosition, uint32 auFlags,
1340 char* apTrgName, real64 arTrgLevel,
char* apParam);
1342 uint32 eMoveToBorder(real64 arPosition,
char* apParam);
1344 uint32 eSync(real64 arPosition, real64 arSyncPosition, uint32 auFlags);
1346 uint32 eSync(real64 arPosition, real64 arSyncPosition, uint32 auFlags,
char* apParam);
1349 void iLoadBalancingHook();
1352#ifdef INOS_SAFETY_SUPPORT
1353 void iHandleSafety(uint32& uError);
1365 bool m_bPowerOnCtr0;
1374 uint32 m_uMeCtrFlag;
1376 uint32 m_uMeRmpFlag;
1392 real64 m_rBorderLimit;
1394 real64 m_rBorderRelax;
1397 uint32 m_uBorderDelay;
1400 bool m_bBorderRelaxActive;
1402 void* m_pMeTrgSrcAdr;
1404 uint64 m_uMeTrgLevel;
1406 tpMeTrgFct m_pMeTrgFct;
1408 uint16 m_uMeTrgSrcTyp;
1410 uint16 m_uMeTrgSrcBit;
1412 real64 m_rMePositionVel;
1414 real64 m_rMeVelocity;
1416 real64 m_rMePositionMove;
1420 bool m_bMeCurrentLimit;
1422 bool m_bMeRestoreControlFlags;
1424 bool m_bMeTriggerMasked;
1426 real64 m_rMePositionAtBorder;
1431 uint32 m_uCpdOptions;
1439 uint16 m_uCpdWaitCns;
1441 real64 m_rCpdOffset;
1443 real64 m_rCpdMaxDelta;
1445 real64 m_rCpdMaxCorr;
1449 uint32 m_uRelaxTime;
1465 uint32 m_ueFlagsSync;
1467 uint32 m_ueFlagsMoveEx;
1471 real64 m_reTrgLevel;
1474 char m_ceCpdAxis[16];
1476 uint32 m_ueCpdOptions;
1478 real64 m_reCpdMaxDelta;
1480 real64 m_reCpdMaxCorr;
1482 real64 m_reStretchFactor;
1487 #if defined(INOS_FORCE_CONTROL_SUPPORT)
1488 double m_deForce = 5.0;
1489 double m_deForceLimit = 10.0;
1490 double m_deForceTara = 0.0;
1491 uint32 m_uForceControlFlags = 0;
1492 inosName32 m_ceForceParam{};
1493 class CINOSForceControl* m_pForce =
nullptr;
1494 uintid m_uForceHookId = 0;
1496 uint32 eForceActivate(
const char*);
1497 uint32 eForceInactivate();
1498 uint32 eForceInactivate(
double);
1499 uint32 eForceApproach(
double,
double,
double,
double,
double,
const char*);
1500 uint32 eForceDepart(
double,
double,
double,
double,
const char*);
1501 uint32 eForceMove(
double,
const char*);
1502 uint32 eForceMoveStop(
const char*);
1503 uint32 eForceBreak(
double,
const char*);
1504 uint32 eForceTara(
double);
1505 uint32 eForceSelect(
const char*);
1510 void ForcePosition();
1512 void ForceHookEnable();