320 virtual uint32
Activate(
bool abCheckPos =
true,
bool abSimulatePos =
false,
321 bool abSimulateOut =
false,
bool abSimulateAct =
false,
328 virtual uint32 Commutate();
330 virtual uint32 ForceCommutate(
bool abAlways =
false);
333 virtual uint32 ReActivate(uint32 auDelayMs = 100);
341 virtual uint32
Sync(real64 arPosition,
const char* apParam,
344 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
348 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
352 virtual uint32
Sync(real64 arPosition, real64 arSyncPos,
356 virtual uint32
Sync(real64 arSyncPos,
const char* apParam, CINCOObject* apObject,
360 virtual uint32
Sync(real64 arPosition, real64 arSyncPos, uint32 auFlags,
364 virtual uint32
Sync(real64 arPosition, real64 arSyncPos, uint32 auFlags,
368 virtual uint32
Sync(real64 arPosition, real64 arSyncPos, uint32 auFlags,
382 virtual uint32
SyncMove(real64 arPosition, real64 arSyncPos, real64 arMovePos,
395 virtual uint32
SyncMove(real64 arPosition, real64 arSyncPos, real64 arMovePos,
408 virtual uint32
SyncMove(real64 arPosition, real64 arSyncPos, real64 arMovePos,
411 virtual uint32 MoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
414 virtual uint32 MoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
415 const char* apTrgName, real64 arTrgLevel,
SINOSRampParam* apParam,
418 virtual uint32 MoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
419 const char* apTrgName, real64 arTrgLevel,
const char* apParam,
423 virtual uint32 MoveExApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
424 real64& arTrgPos, uint32 auFlags,
const char* apTrgName, real64 arTrgLevel,
427 virtual uint32 MoveExApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
428 real64& arTrgPos, uint32 auFlags,
const char* apTrgName, real64 arTrgLevel,
431 virtual uint32 MoveExApp(real64 arPosition, real64 arPositionVel, real64 arVelocity,
432 real64& arTrgPos, uint32 auFlags,
const char* apTrgName, real64 arTrgLevel,
457 { m_eBorderType = auType;};
464 { auType = m_eBorderType;};
471 { m_rBorderLimit = arLimit;};
478 { arLimit = m_rBorderLimit;};
485 { m_rBorderRelax = arRelax;};
492 { arRelax = m_rBorderRelax;};
505 virtual uint32
MoveToBorder(real64 arPosition,
const char* apParam,
516 virtual uint32
MoveToBorder(real64 arPosition, real64& arResult,
530 virtual uint32
MoveToBorderApp(real64 arPosition, real64 arPositionVel,
545 virtual uint32
MoveToBorderApp(real64 arPosition, real64 arPositionVel,
546 real64 arVelocity, real64& arResult,
const char* apParam,
562 virtual uint32
MoveToBorderApp(real64 arPosition, real64 arPositionVel,
563 real64 arVelocity, real64& arResult, uint32 auFlags,
const char* apParam,
591 bool abSet, real64& arResult,
const char* apParam,
614 bool abSet, real64& arResult, uint32 auFlags,
const char* apParam,
629 bool abSet, real64 arPositionVel, real64 arVelocity,
646 bool abSet, real64 arPositionVel, real64 arVelocity, real64& arResult,
664 bool abSet, real64 arPositionVel, real64 arVelocity, real64& arResult,
678 real64 arLevel,
bool abGreater,
const char* apParam,
693 real64 arLevel,
bool abGreater, real64& arResult,
const char* apParam,
709 real64 arLevel,
bool abGreater, real64& arResult,
SINOSRampParam* apParam,
725 real64 arLevel,
bool abGreater, real64& arResult, uint32 auFlags,
741 real64 arLevel,
bool abGreater, real64& arResult, uint32 auFlags,
758 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
776 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
794 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
813 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
832 real64 arLevel,
bool abGreater, real64 arPositionVel, real64 arVelocity,
835 #if defined(INOS_FORCE_CONTROL_SUPPORT)
867 virtual uint32
ForceApproach(
double adPosition,
double adPositionVel,
double adVelocity,
879 virtual uint32
ForceDepart(
double adPosition,
double adPositionVel,
double adVelocity,
948 virtual void SetPathPosition(real64 arPosition)
override
949 { m_pControl->SetPathS(arPosition); };
952 virtual void GetActPosition(real64& arPosition,
bool abRamp =
true)
override;
954 virtual void GetActPosition(real64& arPosition, uint64 auTicks)
override;
956 virtual void GetActPosition(real64& arCmdPosition, real64& arRealPosition);
958 virtual void GetActVelocity(real64& arVelocity,
bool abRamp =
true)
override;
960 virtual void GetActVelocity(real64& arCmdVelocity, real64& arRealVelocity);
962 virtual void GetActAcceleration(real64& arAcceleration,
bool abRamp =
true)
override;
964 virtual void GetActAcceleration(real64& arCmdAcceleration, real64& arRealAcceleration);
966 virtual void GetActJerk(real64& arJerk,
bool abRamp =
true)
override;
968 virtual void GetActPosError(real64& arPosError)
override;
970 virtual void GetActVelocityError(real64& arVelocityError,
bool abFiltered =
false)
override;
972 virtual void GetPosErrorAtEvent(real64& arPosError)
973 { arPosError = m_rMePosErr;};
978 virtual void GetRealPosition(real64& arPosition,
bool abMapped =
true)
override;
980 virtual void GetRealVelocity(real64& arVelocity)
override;
982 virtual void GetRealVelocityFiltered(real64& arVelocity);
984 virtual void GetRealAcceleration(real64& arAcceleration)
override;
986 virtual void GetRealJerk(real64& arJerk)
override;
994 virtual void GetUnitsPerInc(
double& adUnits)
override;
996 virtual void SetIncsPerUnit(
double adIncs);
998 virtual void GetIncsPerUnit(
double& adIncs)
override;
1000 virtual void SetGearRatio(
double adGearRatio);
1002 virtual void GetGearRatio(
double& adGearRatio);
1004 virtual void SetFeedPerTurn(
double adFeedPerTurn);
1006 virtual void GetFeedPerTurn(
double& adFeedPerTurn);
1008 virtual void SetIncsPerTurn(
double adIncsPerTurn);
1010 virtual void GetIncsPerTurn(
double& adIncsPerTurn);
1012 virtual void GetTurnsPerMin(
double& adTurnsPerMin);
1014 virtual void GetIncPosition(uint8& auIncPosition);
1016 virtual void SetInertia(
double adInertia);
1018 virtual void GetInertia(
double& adInertia);
1021 virtual void GetCycleTime(real64& arCycleTime,
bool abOversampled=
false)
override;
1023 virtual uint8 GetOversampling()
override;
1025 virtual uint16 GetCycleNumber()
override;
1027 virtual uint16 GetCycleId()
override;
1029 virtual void UpdateCycleId(uint16 auCycleId)
override;
1031 virtual uint8 GetBusId()
override;
1033 virtual uint32 SetParam(
const char* apName, real64 arValue)
override;
1035 virtual uint32 GetParam(
const char* apName, real64& arResult)
override;
1038 virtual int32 GetState()
override;
1040 virtual int32 GetState(uint32& auRampState)
override;
1042 virtual int32 GetState(uint32& auRampState, uint32& auControlState);
1044 virtual uint32 GetError(
bool abResolveExternal =
false)
override;
1046 virtual uint64 GetErrorEx(
bool abResolveExternal =
false)
override;
1048 virtual uint32 GetError(uint32& auRampError,
bool abResolveExternal =
false)
override;
1050 virtual uint64 GetErrorEx(uint64& auRampError,
bool abResolveExternal =
false)
override;
1052 virtual uint32 GetError(uint32& auRampError, uint32& auControlError,
1053 bool abResolveExternal =
false);
1055 virtual uint64 GetErrorEx(uint64& auRampError, uint64& auControlError,
1056 bool abResolveExternal =
false);
1058 virtual bool IsErrorFatal()
override;
1060 virtual uint32 GetWarning(
bool abResolveExternal =
false)
override;
1062 virtual uint64 GetWarningEx(
bool abResolveExternal =
false)
override;
1064 virtual uint32 GetWarning(uint32& auRampWarning,
bool abResolveExternal =
false)
override;
1066 virtual uint64 GetWarningEx(uint64& auRampWarning,
bool abResolveExternal =
false)
override;
1068 virtual uint32 GetWarning(uint32& auRampWarning, uint32& auControlWarning,
1069 bool abResolveExternal =
false);
1071 virtual uint64 GetWarningEx(uint64& auRampWarning, uint64& auControlWarning,
1072 bool abResolveExternal =
false);
1074 virtual uint32 AcceptError()
override;
1076 virtual uint32 AcceptError(uint32 auError)
override;
1078 virtual uint32 AcceptError(uint32 auError, uint32 auRampError)
override;
1080 virtual uint32 AcceptError(uint32 auError, uint32 auRampError,
1081 uint32 auControlError);
1083 virtual uint32 AcceptWarning()
override;
1085 virtual uint32 AcceptWarning(uint32 auWarning)
override;
1087 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning)
override;
1089 virtual uint32 AcceptWarning(uint32 auWarning, uint32 auRampWarning,
1090 uint32 auControlWarning);
1092 virtual uint32 SetParam(
const char* apName, uint64 auValue)
override
1094 {
return defVarNotFound;};
1095 virtual uint32 GetParam(
const char* apName, uint64& auResult)
override
1097 {
return defVarNotFound;};
1101 virtual CINCOObject* GetRegister()
override;
1104 {
return m_pControl;};
1107 {
return m_pMotor;};
1109 #ifdef INOS_FORCE_CONTROL_SUPPORT
1110 virtual class CINOSForceControl* GetForce()
1111 {
return m_pForce;};
1115 virtual bool IsEmgInActivating();
1120 virtual void EnableSync(real64 arPosition = REAL64(0.0),
1121 uint8 auSyncMode = DF_INOS_AXIS_SYNC_NOADJ)
override;
1123 virtual void DisableSync()
override;
1125 virtual void GetSyncCount(uint32& auSyncCount)
override;
1127 virtual void SetSyncCount(uint32 auSyncCount)
override;
1129 virtual void GetSyncCorr(real64& arSyncCorr);
1131 virtual bool EnableSafeSync();
1133 virtual void DisableSafeSync();
1140 real64 arNormPos = REAL64(0.0))
override;
1146 virtual void SetNormMode(uint8 auNormMode)
override;
1150 virtual void EnableCurLimit()
override;
1152 virtual void DisableCurLimit()
override;
1154 virtual void SetCurLimit(
bool abEnable);
1156 virtual bool GetCurLimit()
override;
1158 virtual void SetMaxCurrent(real64 arMaxCurrent);
1160 virtual void GetMaxCurrent(real64& arMaxCurrent);
1167 {
return m_pCpdAxis;};
1169 uint32 GetCoupledOptions()
1171 {
return m_uCpdOptions;};
1172 virtual bool IsCouplingEnabled()
1175 virtual uint32 EnableCoupling(
const char* apAxis, uint32 auOptions,
1178 virtual uint32 EnableCoupling(
const char* apAxis, uint32 auOptions,
1179 real64 arMaxDelta, real64 arMaxCorr);
1181 virtual uint32 EnableCoupling();
1183 virtual uint32 DisableCoupling();
1185 virtual uint32 EnableLoadBalancing(
const char* apAxis, real64 arFactor);
1187 virtual uint32 DisableLoadBalancing();
1189 virtual void SetCpdOption(uint32 auOption) {
1190 INOS_OR(m_uCpdOptions, auOption);
1192 virtual void ClrCpdOption(uint32 auOption) {
1193 INOS_AND(m_uCpdOptions, ~auOption);
1199 bool abInverted =
false)
1201 { m_pLimitPos = apLimitPos; m_pLimitNeg = apLimitNeg;
1202 m_bLimitInv = abInverted;
if (m_pLimitPos || m_pLimitNeg) m_eBorderType =
eBorderSensor;};
1203 virtual void ResetBorderLimit()
1205 { m_pLimitPos = m_pLimitNeg = NULL;};
1211 virtual bool IsPowerReady();
1213 virtual bool IsOnline()
const;
1226 #ifdef INOS_SAFETY_SUPPORT
1228 virtual uint32 MoveMicro();
1231 virtual bool iSetupSafetyRegistration()
override;
1236 #if defined(INOS_MOTORCONFIG_LOAD_SUPPORT)
1237 virtual void GetMotorConfig(
char* apResult, uint32 auSize)
const
1240 inos_strncpy(apResult, desc->m_cMotorConfig, auSize);
1242 virtual bool IsMotorConfigValid()
const
1246 return !((
nullptr != desc) && (0 != strlen(desc->m_cMotorConfig)) && (0 == (desc->m_uMotorConfigFlags & 1)));
1248 virtual bool IsMotorConfigUnique()
const
1252 return ((
nullptr != desc) && ((0 == strlen(desc->m_cMotorConfig)) || (2 == (desc->m_uMotorConfigFlags & 2))));
1265 virtual void iInActivate()
override;
1269 virtual void iEmergencyStop(
bool abLive =
false)
override;
1271 virtual void iSetCycleTime(real64 arCycleTime)
override;
1273 virtual void iRegisterAxis()
override;
1275 virtual uint32 iMoveEx(real64 arPosition, real64& arTrgPos, uint32 auFlags,
1276 const char* apTrgName, real64 arTrgLevel,
SINOSRampParam* apParam,
1281 bool iMoveExSetupTrigger(
const char* apTrgName, real64 arTrgLevel);
1283 bool iMoveExBorderReached();
1285 bool iMoveExBorder();
1287 bool iMoveExTriggerOccured();
1289 void iMoveExRestoreControl();
1291 void iMoveExCleanup();
1293 void iMoveExWaitForBorderDelayDone();
1295 void iMoveExWaitForEventBorderDelayDone();
1297 void iMoveExBorderOccured();
1299 void iMoveExBorderRelaxStart();
1301 void iMoveExBorderRelaxStop();
1303 ICACHE
virtual void iPostMap()
override;
1305 ICACHE
virtual void iPostMapCpd();
1307 ICACHE
virtual void iPostWrite()
override;
1309 ICACHE
virtual void iPostWriteCpd();
1311 virtual uint32 iEnableCoupling();
1313 virtual void iActivateCoupling();
1315 virtual void iInActivateCoupling();
1317 void iCheckErrors();
1319 void iCheckWarnings();
1321 virtual void iSetActRampPosition(real64 arPosition)
override;
1323 static bool TestBit_0(
void* apAddress ,
void* apNumber);
1325 static bool TestBit_1(
void* apAddress ,
void* apNumber);
1327 static bool TestBit_true(
void* apAddress ,
void* apNumber);
1329 uint32 eMoveEx(real64 arPosition, real64 arTrgPosition, uint32 auFlags,
1330 char* apTrgName, real64 arTrgLevel);
1332 uint32 eMoveEx(real64 arPosition, real64 arTrgPosition, uint32 auFlags,
1333 char* apTrgName, real64 arTrgLevel,
char* apParam);
1335 uint32 eMoveToBorder(real64 arPosition,
char* apParam);
1337 uint32 eSync(real64 arPosition, real64 arSyncPosition, uint32 auFlags);
1339 uint32 eSync(real64 arPosition, real64 arSyncPosition, uint32 auFlags,
char* apParam);
1342 void iLoadBalancingHook();
1345#ifdef INOS_SAFETY_SUPPORT
1346 void iHandleSafety(uint32& uError);
1358 bool m_bPowerOnCtr0;
1367 uint32 m_uMeCtrFlag;
1369 uint32 m_uMeRmpFlag;
1385 real64 m_rBorderLimit;
1387 real64 m_rBorderRelax;
1390 uint32 m_uBorderDelay;
1393 bool m_bBorderRelaxActive;
1395 void* m_pMeTrgSrcAdr;
1397 uint64 m_uMeTrgLevel;
1399 tpMeTrgFct m_pMeTrgFct;
1401 uint16 m_uMeTrgSrcTyp;
1403 uint16 m_uMeTrgSrcBit;
1405 real64 m_rMePositionVel;
1407 real64 m_rMeVelocity;
1409 real64 m_rMePositionMove;
1413 bool m_bMeCurrentLimit;
1415 bool m_bMeRestoreControlFlags;
1417 bool m_bMeTriggerMasked;
1419 real64 m_rMePositionAtBorder;
1424 uint32 m_uCpdOptions;
1432 uint16 m_uCpdWaitCns;
1434 real64 m_rCpdOffset;
1436 real64 m_rCpdMaxDelta;
1438 real64 m_rCpdMaxCorr;
1442 uint32 m_uRelaxTime;
1458 uint32 m_ueFlagsSync;
1460 uint32 m_ueFlagsMoveEx;
1464 real64 m_reTrgLevel;
1467 char m_ceCpdAxis[16];
1469 uint32 m_ueCpdOptions;
1471 real64 m_reCpdMaxDelta;
1473 real64 m_reCpdMaxCorr;
1475 real64 m_reStretchFactor;
1480 #if defined(INOS_FORCE_CONTROL_SUPPORT)
1481 double m_deForce = 5.0;
1482 double m_deForceLimit = 10.0;
1483 double m_deForceTara = 0.0;
1484 uint32 m_uForceControlFlags = 0;
1485 inosName32 m_ceForceParam{};
1486 class CINOSForceControl* m_pForce =
nullptr;
1487 uintid m_uForceHookId = 0;
1489 uint32 eForceActivate(
const char*);
1490 uint32 eForceInactivate();
1491 uint32 eForceInactivate(
double);
1492 uint32 eForceApproach(
double,
double,
double,
double,
double,
const char*);
1493 uint32 eForceDepart(
double,
double,
double,
double,
const char*);
1494 uint32 eForceMove(
double,
const char*);
1495 uint32 eForceMoveStop(
const char*);
1496 uint32 eForceBreak(
double,
const char*);
1497 uint32 eForceTara(
double);
1498 uint32 eForceSelect(
const char*);
1503 void ForcePosition();
1505 void ForceHookEnable();