GrpcPrint/PrintS/PLC/AxisState.h

298 lines
15 KiB
C++

#pragma once
#include <shared_mutex>
#include "../config/bean/AxisCfg.h"
#include "../Controller/Base.h"
// 用于读取时返回的结构体
typedef struct {
bool ServoOn; //轴伺服ON_RW
bool ServoHomeIndexOn; //轴伺服成立原点_RW
bool ServoReset; //轴伺服复位_RW
bool MoveP; //轴相对左运动_手动_RW
bool MoveN; //轴相对右运动_手动_RW
bool MovePContinue; //轴左JOG_手动_RW
bool MoveNContinue; //轴右JOG_手动_RW
bool MoveAbsPos; //轴绝对值运动_手动_RW
bool MotionStop; //轴急停_RW
bool ServoRDY; //轴伺服RDY状态_R
bool ServoHomeDone; //轴指令运行HOME_Done_R
bool ResetDone; //轴指令运行RESET_Done_R
bool ServoBusy; //轴伺服BUSY_R
bool ServoException; //轴伺服异常_R
bool Runable; //轴可运行状态_R
short ExceptionCode; //轴伺服异常字_R
bool ServoBreakOn; //主轴伺服刹车_RW
bool BindSlaveOn; //主轴伺服绑定从轴_RW
bool BindSlaveFinish; //主从轴已经绑定_R
bool SlaveServoBreakOn; //从轴伺服刹车_RW
bool SlaveUnbind; //从轴伺服解除绑定_RW
float Pos;
float Torque;
float ShowPos;
float RPos;
} AxisStateValue;
#pragma pack(1)
class AxisState :public Base
{
public:
AxisState();
~AxisState(){}
virtual void GetValue(AxisStateValue& value);
virtual void Update(unsigned char* addr);
virtual void UpdatePosAndLoad(unsigned char* addr);
virtual void SetAxisCfg(AxisCfg* cfg) { m_AxisCfg = cfg; }
virtual void SetZeroPos();
virtual float GetShowPos();
public:
char m_startFlag; //开始标志
BoolData* m_ServoOn; //轴伺服ON_RW
BoolData* m_ServoHomeIndexOn; //轴伺服成立原点_RW
BoolData* m_ServoReset; //轴伺服复位_RW
BoolData* m_MoveP; //轴相对左运动_手动_RW
BoolData* m_MoveN; //轴相对右运动_手动_RW
BoolData* m_MovePContinue; //轴左JOG_手动_RW
BoolData* m_MoveNContinue; //轴右JOG_手动_RW
BoolData* m_MoveAbsPos; //轴绝对值运动_手动_RW
BoolData* m_MotionStop; //轴急停_RW
BoolData* m_ServoRDY; //轴伺服RDY状态_R
BoolData* m_ServoHomeDone; //轴指令运行HOME_Done_R
BoolData* m_ResetDone; //轴指令运行RESET_Done_R
BoolData* m_ServoBusy; //轴伺服BUSY_R
BoolData* m_ServoException; //轴伺服异常_R
BoolData* m_Runable; //轴可运行状态_R
ShortData* m_ExceptionCode; //轴伺服异常字_R
FloatData* m_Pos; //当前位置
FloatData* m_Torque; //当前扭矩
FloatData* m_ShowPos;
FloatData* m_RPos;
char m_endFlag; //结束标志
std::shared_mutex mtx;
AxisCfg* m_AxisCfg;
};
#pragma pack()
class MainAxisState : public AxisState
{
public:
MainAxisState()
: m_ServoBreakOn(new BoolData("ServoBreakOn", u8"主轴伺服刹车_RW"))
, m_BindSlaveOn(new BoolData("BindSlaveOn", u8"主轴伺服绑定从轴_RW"))
, m_BindSlaveFinish(new BoolData("BindSlaveFinish", u8"主从轴已经绑定_R")) {
InsertMp(&m_ServoBreakOn, 1);
InsertMp(&m_BindSlaveOn, 1);
InsertMp(&m_BindSlaveFinish, 1);
}
~MainAxisState(){}
void GetValue(AxisStateValue& value);
void Update(unsigned char* addr);
public:
BoolData* m_ServoBreakOn; //主轴伺服刹车_RW
BoolData* m_BindSlaveOn; //主轴伺服绑定从轴_RW
BoolData* m_BindSlaveFinish; //主从轴已经绑定_R
};
class SlaveAxisState : public AxisState
{
public:
SlaveAxisState()
: m_ServoBreakOn(new BoolData("ServoBreakOn", u8"从轴伺服刹车_RW"))
, m_Unbind(new BoolData("Unbind", u8"从轴伺服解除绑定_RW")) {
InsertMp(&m_ServoBreakOn, 1);
InsertMp(&m_Unbind, 1);
}
~SlaveAxisState(){}
void GetValue(AxisStateValue& value);
void Update(unsigned char* addr);
public:
BoolData* m_ServoBreakOn; //从轴伺服刹车_RW
BoolData* m_Unbind; //从轴伺服解除绑定_RW
};
#if 0
class AxisState
{
public:
AxisState();
~AxisState();
public:
bool m_MoldMainServoOn; //打印主轴伺服ON_RW
bool m_MoldMainServoHomeIndexOn; //打印主轴伺服ON_RW
bool m_MoldMainServoReset; //打印主轴伺服复位_RW
bool m_MoldMainServoBreakOn; //打印主轴伺服刹车_RW
bool m_MoldMainBindSlaveOn; //打印主轴伺服绑定从轴_RW
bool m_MoldMainMoveUp; //打印主轴相对上运动_手动_RW
bool m_MoldMainMoveDown; //打印主轴相对下运动_手动_RW
bool m_MoldMainMoveUpContinue; //打印主轴上JOG_手动_RW
bool m_MoldMainMoveDownContinue; //打印主轴下JOG_手动_RW
bool m_MoldMainMoveAbsPos; //打印主轴绝对值运动_手动_RW
bool m_MoldMainMotionStop; //打印主轴急停_RW
bool m_MoldMainServoRDY; //打印主轴伺服RDY状态_R
bool m_MoldMainServoHomeDone; //打印主轴指令运行HOME_Done_R
bool m_MoldMainResetDone; //打印主轴指令运行RESET_Done_R
bool m_MoldMainServoBusy; //打印主轴伺服BUSY_R
bool m_MoldMainServoException; //打印主轴伺服异常_R
bool m_MoldMainBindSlaveFinish; //打印主从轴已经绑定_R
bool m_MoldMainRunable; //打印主轴可运行状态_R
short m_MoldMainServoExceptionCode; //打印主轴伺服异常字_R
bool m_MoldSlaveServoOn; //打印从轴伺服ON_RW
bool m_MoldSlaveServoHomeIndexOn; //打印从轴伺服成立原点_RW
bool m_MoldSlaveServoReset; //打印从轴伺服复位_RW
bool m_MoldSlaveServoBreakOn; //打印从轴伺服刹车_RW
bool m_MoldSlaveUnbind; //打印从轴伺服解除绑定_RW
bool m_MoldSlaveMoveUp; //打印从轴相对上运动_手动_RW
bool m_MoldSlaveMoveDown; //打印从轴相对下运动_手动_RW
bool m_MoldSlaveMoveUpContinue; //打印从轴上JOG_手动_RW
bool m_MoldSlaveMoveDownContinue; //打印从轴下JOG_手动_RW
bool m_MoldSlaveMoveAbsPos; //打印从轴绝对值运动_手动_RW
bool m_MoldSlaveMotionStop; //打印从轴急停_RW
bool m_MoldSlaveServoRDY; //打印从轴伺服RDY状态_R
bool m_MoldSlaveServoHomeDone; //打印从轴指令运行HOME_Done_R
bool m_MoldSlaveResetDone; //打印从轴指令运行RESET_Done_R
bool m_MoldSlaveServoBusy; //打印从轴伺服BUSY_R
bool m_MoldSlaveServoException; //打印从轴伺服异常_R
bool m_MoldSlaveRunable; //打印从轴可运行状态_R
short m_MoldSlaveServoExceptionCode; //打印从轴伺服异常字_R
bool m_CleanMainServoOn; //清粉主轴伺服ON_RW
bool m_CleanMainServoHomeIndexOn; //清粉主轴伺服成立原点_RW
bool m_CleanMainServoReset; //清粉主轴伺服复位_RW
bool m_CleanMainServoBreakOn; //清粉主轴伺服刹车_RW
bool m_CleanMainBindSlaveOn; //清粉主轴伺服绑定从轴_RW
bool m_CleanMainMoveUp; //清粉主轴相对上运动_手动_RW
bool m_CleanMainMoveDown; //清粉主轴相对下运动_手动_RW
bool m_CleanMainMoveUpContinue; //清粉主轴上JOG_手动_RW
bool m_CleanMainMoveDownContinue; //清粉主轴下JOG_手动_RW
bool m_CleanMainMoveAbsPos; //清粉主轴绝对值运动_手动_RW
bool m_CleanMainMotionStop; //清粉主轴急停_RW
bool m_CleanMainServoRDY; //清粉主轴伺服RDY状态_R
bool m_CleanMainServoHomeDone; //清粉主轴指令运行HOME_Done_R
bool m_CleanMainResetDone; //清粉主轴指令运行RESET_Done_R
bool m_CleanMainServoBusy; //清粉主轴伺服BUSY_R
bool m_CleanMainServoException; //清粉主轴伺服异常_R
bool m_CleanMainBindSlaveFinish; //清粉主从轴已经绑定_R
bool m_CleanMainRunable; //清粉主轴可运行状态_R
short m_CleanMainServoExceptionCode; //清粉主轴伺服异常字_R
bool m_CleanSlaveServoOn; //清粉从轴伺服ON_RW
bool m_CleanSlaveServoHomeIndexOn; //清粉从轴伺服成立原点_RW
bool m_CleanSlaveServoReset; //清粉从轴伺服复位_RW
bool m_CleanSlaveServoBreakOn; //清粉从轴伺服刹车_RW
bool m_CleanSlaveUnbind; //清粉从轴伺服解除绑定_RW
bool m_CleanSlaveMoveUp; //清粉从轴相对上运动_手动_RW
bool m_CleanSlaveMoveDown; //清粉从轴相对下运动_手动_RW
bool m_CleanSlaveMoveUpContinue; //清粉从轴上JOG_手动_RW
bool m_CleanSlaveMoveDownContinue; //清粉从轴下JOG_手动_RW
bool m_CleanSlaveMoveAbsPos; //清粉从轴绝对值运动_手动_RW
bool m_CleanSlaveMotionStop; //清粉从轴急停_RW
bool m_CleanSlaveServoRDY; //清粉从轴伺服RDY状态_R
bool m_CleanSlaveServoHomeDone; //清粉从轴指令运行HOME_Done_R
bool m_CleanSlaveResetDone; //清粉从轴指令运行RESET_Done_R
bool m_CleanSlaveServoBusy; //清粉从轴伺服BUSY_R
bool m_CleanSlaveServoException; //清粉从轴伺服异常_R
bool m_CleanSlaveRunable; //清粉从轴可运行状态_R
short m_CleanSlaveServoExceptionCode; //清粉从轴伺服异常字_R
bool m_LoadAxisServoOn; //移载轴伺服ON_RW
bool m_LoadAxisServoHomeIndexOn; //移载轴伺服成立原点_RW
bool m_LoadAxisServoReset; //移载轴伺服复位_RW
bool m_LoadAxisMoveLeft; //移载轴相对左运动_手动_RW
bool m_LoadAxisMoveRight; //移载轴相对右运动_手动_RW
bool m_LoadAxisMoveLeftContinue; //移载轴左JOG_手动_RW
bool m_LoadAxisMoveRightContinue; //移载轴右JOG_手动_RW
bool m_LoadAxisMoveAbsPos; //移载轴绝对值运动_手动_RW
bool m_LoadAxisMotionStop; //移载轴急停_RW
bool m_LoadAxisServoRDY; //移载轴伺服RDY状态_R
bool m_LoadAxisServoHomeDone; //移载轴指令运行HOME_Done_R
bool m_LoadAxisResetDone; //移载轴指令运行RESET_Done_R
bool m_LoadAxisServoBusy; //移载轴伺服BUSY_R
bool m_LoadAxisServoException; //移载轴伺服异常_R
bool m_LoadAxisRunable; //移载轴可运行状态_R
short m_LoadAxisServoExceptionCode; //移载轴伺服异常字_R
bool m_ArmServoOn; //铺粉轴伺服ON_RW
bool m_ArmServoHomeIndexOn; //铺粉轴伺服成立原点_RW
bool m_ArmServoReset; //铺粉轴伺服复位_RW
bool m_ArmMoveFront; //铺粉轴相对前运动_手动_RW
bool m_ArmMoveBack; //铺粉轴相对后运动_手动_RW
bool m_ArmMoveFrontContinue; //铺粉轴前JOG_手动_RW
bool m_ArmMoveBackContinue; //铺粉轴后JOG_手动_RW
bool m_ArmMoveAbsPos; //铺粉轴绝对值运动_手动_RW
bool m_ArmMotionStop; //铺粉轴急停_RW
bool m_ArmServoRDY; //铺粉轴伺服RDY状态_R
bool m_ArmServoHomeDone; //铺粉轴指令运行HOME_Done_R
bool m_ArmResetDone; //铺粉轴指令运行RESET_Done_R
bool m_ArmServoBusy; //铺粉轴伺服BUSY_R
bool m_ArmServoException; //铺粉轴伺服异常_R
bool m_ArmRunable; //铺粉轴可运行状态_R
short m_ArmServoExceptionCode; //铺粉轴伺服异常字_R
bool m_SupplyServoOn; //供粉转轴伺服ON_RW
bool m_SupplyServoHomeIndexOn; //供粉转轴伺服成立原点_RW
bool m_SupplyServoReset; //供粉转轴伺服复位_RW
bool m_SupplyMovePositive; //供粉转轴相对正转运动_手动_RW
bool m_SupplyMoveNegative; //供粉转轴相对反转运动_手动_RW
bool m_SupplyMovePositiveContinue; //供粉转轴正转JOG_手动_RW
bool m_SupplyMoveNegativeContinue; //供粉转轴反转JOG_手动_RW
bool m_SupplyMoveAbsPos; //供粉转轴绝对值运动_手动_RW
bool m_SupplyMotionStop; //供粉转轴急停_RW
bool m_SupplyServoRDY; //供粉转轴伺服RDY状态_R
bool m_SupplyServoHomeDone; //供粉转轴指令运行HOME_Done_R
bool m_SupplyResetDone; //供粉转轴指令运行RESET_Done_R
bool m_SupplyServoBusy; //供粉转轴伺服BUSY_R
bool m_SupplyServoException; //供粉转轴伺服异常_R
bool m_SupplyRunable; //供粉转轴可运行状态_R
short m_SupplyServoExceptionCode; //供粉转轴伺服异常字_R
bool m_MoldCylinderSeparatePosRecord; //打印升降与缸体分离位记录_RW
bool m_Print3RSeparateRecord; //打印3R脱离位记录__RW
bool m_Print3RSeparateCheckDistanceRecord; //打印3R脱离检测距离记录__RW
bool m_PrintJackupDeoxygenMinPosRecord; //打印顶升轴除氧压缩最低点记录__RW
bool m_PrintJackupPlatformBottomPosRecord; //打印顶升轴基板底座缸平面位置记录__RW
bool m_PrintJackupPlatformPlanePosRecord; //打印顶升轴基板缸平面位置记录_RW
bool m_PrintPlatformHightRecord; //打印基板厚度计算__RW
bool m_MoldUpLimitPosRecord; //打印轴上软限位记录_RW
bool m_MoldDownLimitPosRecord; //打印升降轴下软限位记录_RW
bool m_CleanTrackConnectPosRecord; //清粉升降轨道对接位记录_RW
bool m_CleanBoxCylinderConnectPosRecord; //清粉箱与缸体对接位记录_RW
bool m_Clean3RSeparatePosRecord; //清粉升降3R对接分离位记录_RW
bool m_Clean3RSeparateCheckDistanceRecord; //清粉升降3R分离检测距离记录_RW
bool m_CleanLowestPosRecord; //清粉升降最低点记录_RW
bool m_CleanUpLimitRecord; //清粉升降上软限位记录_RW
bool m_CleanDownLimitRecord; //清粉升降下软限位记录_RW
bool m_LoadAxisTrackPrintPosRecord; //移载轴轨道打印位记录_RW
bool m_LoadAxisTrackCleanPosRecord; //移载轴轨道清粉位记录_RW
bool m_LoadAxisTrackWaitPosRecord; //移载轴轨道等待位记录_RW
bool m_LoadAxisLeftLimitRecord; //移载轴轨道左软限位记录_RW
bool m_LoadAxisRightLimitRecord; //移载轴轨道右软限位记录_RW
bool m_ArmPowderAcceptPosRecord; //铺粉轴接粉位记录_RW
bool m_ArmPowderDropFrontPosRecord; //铺粉轴前下粉位记录_RW
bool m_ArmPrintFrontLimitRecord; //铺粉轴打印面前限位记录_RW
bool m_ArmPrintBackLimitRecord; //铺粉轴打印面后限位记录_RW
bool m_ArmFrontLimitRecord; //铺粉轴前软限位记录_RW
bool m_ArmBackLimitRecord; //铺粉轴后软限位记录_RW
bool m_BlockMoldSoftPosLimit; //屏蔽打印轴软件位置限制_RW
bool m_BlockCleanSoftPosLimit; //屏蔽清粉轴软件位置限制_RW
bool m_BlockLoadAxisSoftPosLimit; //屏蔽移载轴软件位置限制_RW
bool m_BlockArmSoftPosLimit; //屏蔽铺粉轴软件位置限制_RW
bool m_SupplySoftPosLimit; //屏蔽供粉转轴软件位置限制_RW
bool m_MoldMainHomeIndexRecord; //打印主轴原点位记录_RW
bool m_MoldMainAlignRecord; //打印主轴对齐位记录_RW
bool m_MoldMainAlignHomeIndexRelRecord; //打印主轴对齐位与原点相对值记录_RW
bool m_MoldSlaveHomeIndexRecord; //打印从轴原点位记录_RW
bool m_MoldSlaveAlignRecord; //打印从轴对齐位记录_RW
bool m_MoldSlaveAlignHomeIndexRelRecord; //打印从轴对齐位与原点相对值记录_RW
bool m_CleanMainHomeIndexRecord; //清粉主轴原点位记录_RW
bool m_CleanMainAlignRecord; //清粉主轴对齐位记录_RW
bool m_CleanMainAlignHomeIndexRelRecord; //清粉主轴对齐位与原点相对值记录_RW
bool m_CleanSlaveHomeIndexRecord; //清粉从轴原点位记录_RW
bool m_CleanSlaveAlignRecord; //清粉从轴对齐位记录_RW
bool m_CleanSlaveAlignHomeIndexRelRecord; //清粉从轴对齐位与原点相对值记录_RW
};
#endif