|
|
#pragma once
|
|
|
#include "module.h"
|
|
|
|
|
|
class CCamera;
|
|
|
class CProduct;
|
|
|
class CWorkCmdContainer;
|
|
|
//管理常用 的流程
|
|
|
class CCommonFlowMgr :public CModule
|
|
|
{
|
|
|
friend class DlgCutDeviceCtrl;
|
|
|
friend class CDlgSW_XL_Flow;
|
|
|
public:
|
|
|
CCommonFlowMgr(void);
|
|
|
~CCommonFlowMgr(void);
|
|
|
virtual CMFCPropertyGridProperty *CreatGridProperty();
|
|
|
virtual MODULE GetModuleType(){return _COMMON_FLOW_PROP;};
|
|
|
virtual void Ini();
|
|
|
virtual void WriteWorkFileExt(vector<CLab> &LabVec);
|
|
|
virtual void ReadWorkFile(CLabVecRang &LabVecRang);
|
|
|
|
|
|
bool InitDevice();
|
|
|
bool CameraCatchTwoMark();
|
|
|
bool MultipleAreaMark(CProduct &Product,bool bSel);
|
|
|
bool CutShapeByPlatform(CProduct &Product,bool bSel);
|
|
|
bool NormalMarkByPciCard(bool bSel,int times,int CyclicTimes);
|
|
|
bool CameraCatch();
|
|
|
bool AutoMeasureVisionData();
|
|
|
void MovePtToCamera(vector<Dbxy> &PtVec,vector<Dbxy> &ResultVec,bool bCatch);
|
|
|
void MovePtToCamera(Dbxy pt);
|
|
|
int GetAreaCycleCnt(){return m_AreaCycleCnt;};
|
|
|
void SetAreaCycleCnt(int n){m_AreaCycleCnt = n;};
|
|
|
int GetOneObjMarkCnt(){return m_OneObjMarkCnt;};
|
|
|
void SetOneObjMarkCnt(int val){m_OneObjMarkCnt = val;};
|
|
|
int GetSpecialOneObjMarkCnt(){return m_SpecialOneObjMarkCnt;};
|
|
|
void SetSpecialOneObjMarkCnt(int val){m_SpecialOneObjMarkCnt = val;};
|
|
|
int GetCutSpeed(){return m_CutSpeed;};
|
|
|
void SetCutSpeed(int val){m_CutSpeed = val;};
|
|
|
bool IsbConnectObj(){return m_bConnectObj;};
|
|
|
void MoveSelObjToCamera(CProduct &Product);
|
|
|
double GetFirstGap(){return m_FirstGap;};
|
|
|
Dbxy GetAdjustOffset(){return m_AdjustOffset;};
|
|
|
void SetAdjustOffset(Dbxy pt){m_AdjustOffset = pt;};
|
|
|
Dbxy GetAdjustOffsetAll(){return m_AdjustOffsetAll;};//获取治具2或4的振镜偏移
|
|
|
void SetAdjustOffsetAll(Dbxy Offset);//设置治具2或4的振镜偏移(调用前,已根据条件确定当前是2或是4)
|
|
|
Dbxy GetAdjustSize(){return m_SizeAdjust;};
|
|
|
void SetAdjustSize(Dbxy s){m_SizeAdjust = s;};
|
|
|
double GetRotatoAdjust(){return m_RotatoAdjust;};
|
|
|
void SetRotatoAdjust(double val){m_RotatoAdjust = val;};
|
|
|
bool IsNoMarkCanWork(){return m_NoMarkCanWork;};
|
|
|
bool IsbWorkStop(){return m_bWorkStop;};
|
|
|
void SetbWorkStop(bool b){m_bWorkStop = b;};
|
|
|
void CameraCatchTwoMark(CProduct &Product);
|
|
|
void SetLightStateCmd(bool bStart);
|
|
|
bool StartWorkConfirm(bool bSelMark);
|
|
|
bool IsNeedExecAgain();
|
|
|
void ResetProductOffset();
|
|
|
void SetbCollectSpecialObj(bool b){m_bCollectSpecialObj = b;};
|
|
|
bool IsbCollectSpecialObj(){return m_bCollectSpecialObj;};
|
|
|
bool IsbStretchDataToRealSize(){return m_bStretchDataToRealSize;};
|
|
|
bool CameraCatchMark3(CProduct &Product);
|
|
|
|
|
|
void MarkAreaByIdx(int AreaIndex);//根据加工区域索引加工
|
|
|
|
|
|
private:
|
|
|
void SetLightStateCmd(CWorkCmdContainer &CmdContainer,bool bStart);
|
|
|
bool CameraCatchMarkExt(CProduct &Product);
|
|
|
void MoveToFirstArea();
|
|
|
private:
|
|
|
CCamera *m_CurCamera;//当前使用的相机
|
|
|
int m_AlamDelay;//报警延时(ms)
|
|
|
int m_FindOriginTimes;//自动回原点的加工次数(大于0 时生效)
|
|
|
int m_CurWorktimes;//当前的加工次数
|
|
|
int m_AllWorkExecTimes;//重复执行次数(用来拷机)
|
|
|
int m_CurWorkExecTimes;//当前执行次数(用来拷机)
|
|
|
bool m_bStartWorkMsg;//加工前提示
|
|
|
bool m_NoMarkCanWork;//没有定位点时也可以加工
|
|
|
bool m_bWorkStop;//工作是否停止
|
|
|
bool m_bVacuum;//是否使用真空吸附(加工前吸附,结束后放开)
|
|
|
bool m_bCheckObjDataConsistency;//是否检查数据的一致性(避免obj 数据不相等的情况)
|
|
|
//初始化相关参数-----------------------------------------------------
|
|
|
bool m_bIniConfirmMsgBox;//是否弹出初始化确认对话框
|
|
|
bool m_bIniPlatfrom;//是否初始化电机平台
|
|
|
bool m_bIniMotorX;//是否初始化电机X
|
|
|
bool m_bIniMotorY;//是否初始化电机Y
|
|
|
bool m_bIniMotorZ;//是否初始化电机Z
|
|
|
bool m_bInitedToProductPt;//初始化完成后是否返回上料点
|
|
|
//大幅面加工参数-------------------------------------------------------
|
|
|
//每个obj 的总加工次数= (m_FocalAdjustCnt-1)*m_AreaCycleCnt*m_OneObjMarkCnt
|
|
|
bool m_bFocalAdjust;//加工的时候是否实时调整焦距
|
|
|
double m_FocalAdjustDis;//变焦距离mm
|
|
|
int m_FocalAdjustCnt;//变焦次数(每变焦一次按照下面的参数加工一遍)
|
|
|
|
|
|
//产品相关的切割参数
|
|
|
int m_AreaCycleCnt;//每次一个workarea 的循环加工次数
|
|
|
int m_OneObjMarkCnt;//单个元件加工次数
|
|
|
int m_SpecialOneObjMarkCnt;//特殊刀增加的切割次数
|
|
|
bool m_bCollectSpecialObj;//是否正在收集特殊对象数据
|
|
|
int m_CutSpeed;//切割速度
|
|
|
Dbxy m_ProductOffset;//针对产品的切割偏移
|
|
|
|
|
|
|
|
|
bool m_bConnectObj;//是否连接多个obj 数据
|
|
|
bool m_bBackToProductPt;//加工完成后是否返回取料点
|
|
|
bool m_bSetLightState;//是否设置警示灯状态
|
|
|
|
|
|
int m_ConcentricCnt;//同心数据的数量
|
|
|
double m_FirstGap;//第一个拉伸尺寸
|
|
|
double m_ConcentricGap;//同心数据的间隔mm(大于0 向外)(小于0 向内)
|
|
|
|
|
|
Dbxy m_AdjustOffset;//偏移微调mm
|
|
|
Dbxy m_AdjustOffsetAll;//偏移微调mm (针对所有)
|
|
|
Dbxy m_SizeAdjust;//尺寸调整mm
|
|
|
double m_RotatoAdjust;//旋转调整mm
|
|
|
|
|
|
bool m_bStretchDataToRealSize;//根据抓取结果拉伸数据
|
|
|
//平台cut 参数--------------------------------------------------------------
|
|
|
bool m_bUseLaser;//是否开关激光
|
|
|
//振镜校准参数--------------------------------------------------------------
|
|
|
double m_CalibrationPointGap;//打点之间的间隔mm
|
|
|
double m_CalibrationRange;//振镜校准范围mm
|
|
|
};
|
|
|
|
|
|
extern CCommonFlowMgr *gCommonFlowMgr; |