You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
6.0 KiB
C++

#pragma once
#include "module.h"
#include "Program_SZ_XL_TrackWorkFlow.h"
//深圳信利全自动设备
class CProgram_SZ_XL :public CModule
{
public:
CProgram_SZ_XL(void);
~CProgram_SZ_XL(void);
virtual CMFCPropertyGridProperty *CreatGridProperty();
virtual MODULE GetModuleType(){return _PGM_SW_XL_PROP;};
virtual void Ini();
virtual void OnExitApp();//退出软件时
void InitDevice();
void StartAutoWork(ETrackType TrackType);
void ManualOperation(ETrackType TrackType,ETrackWorkStep TrackWorkStep);
double GetMoveCoord(ETrackType TrackType,ETrackWorkStep WorkStep);
Dbxy GetTrack2Offset(){return m_Track2Offset;};
Dbxy GetTrackMarkOffset(ETrackType TrackType);
void SetbSelMarkMode(bool b){m_bSelMarkMode = b;};
bool IsbSelMarkMode(){return m_bSelMarkMode;};
bool IsbAutoWorkMode(){return m_bAutoWorkMode;};
void SetbAutoWorkMode(bool b){m_bAutoWorkMode = b;};
void ProductCarrierOpenClose(ETrackType TrackType,bool bOpen);
CTrackWorkFlow* GetTrackWorkFlow(ETrackType TrackType);
int GetCutProductCnt(ETrackType TrackType);
void StopAutoWork();
void SaveCutPar();
void ReadCutPar();
ETrackWorkStep GetCurTrackWorkStep(ETrackType TrackType);
void ResetRecordTimes(ETrackType TrackType);
void ReadLoadPlcMsg();
bool SendMsgToLoadDevice(ETrackType TrackType,ETrackWorkStep WorkStep,bool bCheckRev);
ETrackWorkStep GetOtherTrackWorkStep(ETrackType TrackType);
void MoveMotorYToSafePos(ETrackType TrackType);
bool IsbShieldLoad(){return m_bShieldLoad;};
bool IsbShieldMarking(){return m_bShieldMarking;};
bool IsbShieldUnLoad(){return m_bShieldUnLoad;};
void CancelUnloadRequest(ETrackType TrackType);
void SetbCircleStop(ETrackType TrackType,bool bStop);
int GetStopStepUnloadTimes(){return m_StopStepUnloadTimes;};
int GetPlcCmdSendDelay(){return m_PlcCmdSendDelay;};
void GetTrackMotorYCoord(ETrackType TrackType,double &DangerCoordStart,double &DangerCoordEnd,double &SafeCoord);
bool IsbAutoWorking();
bool IsbCheckUnloadState(){return m_bCheckUnloadState;};
void SetCurMarkingTrack(ETrackType t){m_CurMarkingTrack = t;};
ETrackType GetCurMarkingTrack(){return m_CurMarkingTrack;};
private:
bool GetDxfParFilePath(CString Suffix,CString &FilePath);
void ReadLoadPlcMsgExt();
void InitLoadDeviceCom();
void ResetLoadUnloadSignal();
CTrackWorkFlow* GetOtherTrackWorkFlow(ETrackType TrackType);
bool OpenPlcCtrl();
void AnalyzeRecvCmd(CString &RecvStr);
bool CompareBuf(char *Buf,CString str);
int CreatBuf(char *Buf,CString str);
bool SendMsgToLoadPlc(CString &SendMsg,CString &RevMsg);
bool GetLoadCmdStr(ETrackType TrackType,ETrackWorkStep WorkStep,CString &StrOn,CString &StrOnRev,CString &StrOff,CString &StrOffRev);
public:
int m_ServerPort=2404;//监听的端口号
CString m_NetPath="W";//网盘的盘符
Dbxy GetJig2Scale() { return m_Jig2Scale; };
Dbxy GetJig4Scale() { return m_Jig4Scale; };
private:
int m_TrackComPort1;//轨道1 串口号
int m_TrackComPort2;//轨道2 串口号
int m_ComBaudRate;//通信波特率
int m_PlcCmdSendDelay;//plc指令发送后延时ms
int m_LoadComPort;//上料机串口号
CCommPortMgr m_loadCOM;//上料机通信用的串口管理
bool m_bLoadDeviceSuc;//上料机通信是否成功
int m_LoadCmdDelay;//发送上料请求上升沿的时间ms
int m_LoadCmdRevDelay;//发送后间隔这个时间去读取反馈ms
int m_LoadCmdSendTims;//发送给上料plc 的cmd尝试的次数
bool m_bLoadCOMLockerFlg;//发送消息锁定flg
bool m_bCheckUnloadState;//是否检查下料机状态
CCommPortMgr m_LoadDeviceCOM;//上料机通信用串口管理
bool m_bStopReadMsg;//是否暂停读取plc 消息
bool m_bSelMarkMode;//选择加工模式
bool m_bAutoWorkMode;//自动工作模式
double m_MotorXWaitCoord;//X轴等待坐标
double m_MotorXLoadCoord;//X 轴上料坐标
double m_MotorXUnLoadCoord;//X 轴下料坐标
double m_MotorX2LoadCoord;//X2 轴上料坐标
double m_MotorX2UnLoadCoord;//X2 轴下料坐标
Dbxy m_Track2Offset;//轨道2相对轨道1 的偏移量
Dbxy m_Jig2MarkOffset;//治具2的加工偏移
Dbxy m_Jig4MarkOffset;//治具4的加工偏移
Dbxy m_Jig2Scale=Dbxy(1,1);//治具2的加工缩放
Dbxy m_Jig4Scale=Dbxy(1,1);//治具4的加工缩放
double m_Track1DangerCoordStart;//轨道1 的危险范围start
double m_Track1DangerCoordEnd;//轨道1 的危险范围end
double m_Track1SafeCoord;//轨道1 的安全坐标
double m_Track2DangerCoordStart;//轨道2 的危险范围start
double m_Track2DangerCoordEnd;//轨道2 的危险范围end
double m_Track2SafeCoord;//轨道2 的安全坐标
bool m_bShieldLoad;//屏蔽上料
bool m_bShieldMarking;//屏蔽加工过程
bool m_bShieldUnLoad;//屏蔽下料
int m_StopStepUnloadTimes;//连续点多少次可以强制停止unload
ETrackType m_CurMarkingTrack;//当前正在切割的轨道
};
extern CProgram_SZ_XL *gProgram_SZ_XL;