#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;}; bool GetDxfParFilePath(CString Suffix,CString &FilePath); private: 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;