|
|
|
@ -7,27 +7,32 @@
|
|
|
|
namespace nsMMF
|
|
|
|
namespace nsMMF
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// !!! Do Not change the order to support MMF use case
|
|
|
|
// !!! Do Not change the order to support MMF use case
|
|
|
|
using MotorStatus = struct _MotorStatus {
|
|
|
|
using MotorStatus = struct _MotorStatus
|
|
|
|
bool NegLimHit{ false }; // 0
|
|
|
|
{
|
|
|
|
bool PosLimHit{ false }; // 1
|
|
|
|
char MotorName[80]{}; // offset 0 : 80 byte to align to 8 bytes
|
|
|
|
bool Homed{ false }; // 2
|
|
|
|
|
|
|
|
bool ServoReady{ false }; // 3
|
|
|
|
bool NegLimHit{ false }; // 80
|
|
|
|
bool ServoAlarm{ false }; // 4
|
|
|
|
bool PosLimHit{ false }; // 81
|
|
|
|
bool InPosition{ false }; // 5
|
|
|
|
bool Homed{ false }; // 82
|
|
|
|
bool MtrOn{ false }; // 6
|
|
|
|
bool ServoReady{ false }; // 83
|
|
|
|
bool MtrCurOnOff{ false }; // 7 // array to store motor On/Off States before maintenance mode
|
|
|
|
bool ServoAlarm{ false }; // 84
|
|
|
|
double MtrPos{ 0. }; // 8
|
|
|
|
bool InPosition{ false }; // 85
|
|
|
|
double PosErr{ 0. }; // 16
|
|
|
|
bool MtrOn{ false }; // 86
|
|
|
|
unsigned short MotionStatus{ 0 }; // 24
|
|
|
|
bool MtrCurOnOff{ false }; // 87 // array to store motor On/Off States before maintenance mode
|
|
|
|
unsigned short Status{ 0 }; // 26
|
|
|
|
double MtrPos{ 0. }; // 88
|
|
|
|
int MtrNo{ 0 }; // 28 // motor no wrt the type of card used
|
|
|
|
double PosErr{ 0. }; // 96
|
|
|
|
int MtrType{ 0 }; // 32 // servo or stepper, with or without encoder feedback
|
|
|
|
unsigned short MotionStatus{ 0 }; // 104
|
|
|
|
int MtrCurPos{ 0 }; // 36 // array to store motor position before maintenance mode
|
|
|
|
unsigned short Status{ 0 }; // 106
|
|
|
|
char MotorName[104]{ "AACC" }; // 40~ 144 (original size 4 bytes - but has to end on a 8-byte align address)
|
|
|
|
int MtrNo{ 0 }; // 108 // motor no wrt the type of card used
|
|
|
|
|
|
|
|
int MtrType{ 0 }; // 112 // servo or stepper, with or without encoder feedback
|
|
|
|
|
|
|
|
int MtrCurPos{ 0 }; // 116 // array to store motor position before maintenance mode
|
|
|
|
|
|
|
|
|
|
|
|
// Assignment operator overload
|
|
|
|
// Assignment operator overload
|
|
|
|
_MotorStatus& operator=(const _MotorStatus& rhs)
|
|
|
|
_MotorStatus& operator=(const _MotorStatus& rhs)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
strcpy_s(MotorName, rhs.MotorName);
|
|
|
|
|
|
|
|
//
|
|
|
|
NegLimHit = rhs.NegLimHit;
|
|
|
|
NegLimHit = rhs.NegLimHit;
|
|
|
|
PosLimHit = rhs.PosLimHit;
|
|
|
|
PosLimHit = rhs.PosLimHit;
|
|
|
|
Homed = rhs.Homed;
|
|
|
|
Homed = rhs.Homed;
|
|
|
|
@ -43,8 +48,6 @@ namespace nsMMF
|
|
|
|
MtrNo = rhs.MtrNo;
|
|
|
|
MtrNo = rhs.MtrNo;
|
|
|
|
MtrType = rhs.MtrType;
|
|
|
|
MtrType = rhs.MtrType;
|
|
|
|
MtrCurPos = rhs.MtrCurPos;
|
|
|
|
MtrCurPos = rhs.MtrCurPos;
|
|
|
|
//
|
|
|
|
|
|
|
|
strcpy_s(MotorName, rhs.MotorName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return *this;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -61,6 +64,9 @@ namespace nsMMF
|
|
|
|
|
|
|
|
|
|
|
|
inline void from_json(const json& j, MotorStatus& x)
|
|
|
|
inline void from_json(const json& j, MotorStatus& x)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
std::string name = j.at("MotorName").get<std::string>();
|
|
|
|
|
|
|
|
strcpy_s(x.MotorName, name.c_str());
|
|
|
|
|
|
|
|
|
|
|
|
getValue(j, "NegLimHit", x.NegLimHit);
|
|
|
|
getValue(j, "NegLimHit", x.NegLimHit);
|
|
|
|
getValue(j, "PosLimHit", x.PosLimHit);
|
|
|
|
getValue(j, "PosLimHit", x.PosLimHit);
|
|
|
|
getValue(j, "Homed", x.Homed);
|
|
|
|
getValue(j, "Homed", x.Homed);
|
|
|
|
@ -76,15 +82,12 @@ namespace nsMMF
|
|
|
|
getValue(j, "MtrNo", x.MtrNo);
|
|
|
|
getValue(j, "MtrNo", x.MtrNo);
|
|
|
|
getValue(j, "MtrType", x.MtrType);
|
|
|
|
getValue(j, "MtrType", x.MtrType);
|
|
|
|
getValue(j, "MtrCurPos", x.MtrCurPos);
|
|
|
|
getValue(j, "MtrCurPos", x.MtrCurPos);
|
|
|
|
//getValue(j, "MotorName", x.MotorName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string name = j.at("MotorName").get<std::string>();
|
|
|
|
|
|
|
|
strcpy_s(x.MotorName, name.c_str());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
inline void to_json(json& j, const MotorStatus& x)
|
|
|
|
inline void to_json(json& j, const MotorStatus& x)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
j = nlohmann::json{
|
|
|
|
j = nlohmann::json{
|
|
|
|
|
|
|
|
{ "MotorName", x.MotorName },
|
|
|
|
{ "NegLimHit", x.NegLimHit },
|
|
|
|
{ "NegLimHit", x.NegLimHit },
|
|
|
|
{ "PosLimHit", x.PosLimHit },
|
|
|
|
{ "PosLimHit", x.PosLimHit },
|
|
|
|
{ "Homed", x.Homed },
|
|
|
|
{ "Homed", x.Homed },
|
|
|
|
@ -99,8 +102,7 @@ namespace nsMMF
|
|
|
|
{ "Status", x.Status },
|
|
|
|
{ "Status", x.Status },
|
|
|
|
{ "MtrNo", x.MtrNo },
|
|
|
|
{ "MtrNo", x.MtrNo },
|
|
|
|
{ "MtrType", x.MtrType },
|
|
|
|
{ "MtrType", x.MtrType },
|
|
|
|
{ "MtrCurPos", x.MtrCurPos },
|
|
|
|
{ "MtrCurPos", x.MtrCurPos }
|
|
|
|
{ "MotorName", x.MotorName }
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|