This commit is contained in:
Chenwenxuan
2024-03-06 14:54:30 +08:00
commit edac2715f0
1525 changed files with 809982 additions and 0 deletions

695
device/deviceproxy.h Normal file
View File

@@ -0,0 +1,695 @@
#ifndef DEVICEPROXY_H
#define DEVICEPROXY_H
#include <QObject>
#include "base.h"
#include "ACSVariable.h"
#include "acscontroller.h"
#include "myexception.h"
#include <QTimer>
#include <QThread>
#include <QMutex>
#include "LaserMark.h"
#include "LaserMark_global.h"
#include "MarkEzdDll.h"
#include "opencv2/opencv.hpp"
#include "bllaserlib.h"
#include "BLLaserLib_global.h"
#include "coordinate.h"
#include"qtcpserver.h"
#include"qtcpsocket.h"
#include "RMS_Dll_global.h"
#include "rms_dll.h"
#define MACHINE001 1
#ifdef MACHINE001
#define XAXIS 0
#define YAXIS 1
#define ZAXIS 4
#define ZAAXIS 2
#define DAXIS 5
#define Z0AXIS 6
#define Z2AXIS 7
#else
#define XAXIS 0
#define YAXIS 1
#define ZAXIS 4
#define ZAAXIS 6
#define DAXIS 5
#define Z0AXIS 7
#define Z2AXIS 2
#endif
#define LASERMARKFOCUS 120
#define CAMERAFOCUS 120
#define FINDHEIGHTFOCUS 10
#define INCHES4 55
#define INCHES6 80
#define INCHES8 105
#define MAXHEIGHT 55
#define ZWORKPOS 0
#define PIANYIJIAODU 0
#define LASERMARKJIAODU 0
#define JIADINGJIAGONG 0
class CDeviceProxyWorker;
#define DEV DeviceProxy::instance()
class DeviceProxy:public QObject
{
Q_OBJECT
friend class CDeviceProxyWorker;
public:
static DeviceProxy* instance();
static void setAxisName(QMap<int,QString> axisName);
~DeviceProxy();
void DEVInit();
void reset();
void setAlarm(bool flag);
void setDataCheck(bool flag);
int UpdateWorkData();
QTcpServer* server;
QTcpSocket* socket;//一个客户端对应一个socket
void ClientConnect();
void ReadData1();
double R_detection_pt{0};
double mode;
double R_detection_ps{0};
double R_detection_pm{0};
double R_detection_po{0};
double R_detection_set_ppt{0};
double R_detection_set_pps{0};
cv::Mat Func_merge(int left,int right);
std::vector<cv::Mat> srcImgs;
int BiaoDingFlag{false};
int PPValues[21];
double p2tBuf[21];
double p2sBuf[21];
double getPP(double ap,bool flag);
QImage imageR;
RMS_Dll rms;
QString StrPlotSixInch = "(0,-60)(-30,-50)(-20,-50)(-10,-50)(0,-50)(10,-50)(20,-50)(30,-50)(-40,-40)(-30,-40)(-20,-40)(-10,-40)(0,-40)(10,-40)"
"(20,-40)(30,-40)(40,-40)(-50,-30)(-40,-30)(-30,-30)(-20,-30)(-10,-30)(0,-30)(10,-30)(20,-30)(30,-30)(40,-30)(50,-30)"
"(-50,-20)(-40,-20)(-30,-20)(-20,-20)(-10,-20)(0,-20)(10,-20)(20,-20)(30,-20)(40,-20)(50,-20)(-50,-10)(-40,-10)(-30,-10)"
"(-20,-10)(-10,-10)(0,-10)(10,-10)(20,-10)(30,-10)(40,-10)(50,-10)(-60,0)(-50,0)(-40,0)(-30,0)(-20,0)(-10,0)(0,0)(10,0)"
"(20,0)(30,0)(40,0)(50,0)(60,0)(-50,10)(-40,10)(-30,10)(-20,10)(-10,10)(0,10)(10,10)(20,10)(30,10)(40,10)(50,10)(-50,20)"
"(-40,20)(-30,20)(-20,20)(-10,20)(0,20)(10,20)(20,20)(30,20)(40,20)(50,20)(-50,30)(-40,30)(-30,30)(-20,30)(-10,30)(0,30)"
"(10,30)(20,30)(30,30)(40,30)(50,30)(-40,40)(-30,40)(-20,40)(-10,40)(0,40)(10,40)(20,40)(30,40)(40,40)(-30,50)(-20,50)"
"(-10,50)(0,50)(10,50)(20,50)(30,50)(0,60)";
QString StrPlotEightInch = "(-44,-72)(-30,-72)(-16,-72)(-2,-72)(12,-72)(26,-72)(40,-72)(-58,-58)"
"(-44,-58)(-30,-58)(-16,-58)(-2,-58)(12,-58)(26,-58)(40,-58)(54,-58)"
"(-72,-44)(-58,-44)(-44,-44)(-30,-44)(-16,-44)(-2,-44)(12,-44)(26,-44)"
"(40,-44)(54,-44)(68,-44)(-72,-30)(-58,-30)(-44,-30)(-30,-30)(-16,-30)"
"(-2,-30)(12,-30)(26,-30)(40,-30)(54,-30)(68,-30)(-72,-16)(-58,-16)"
"(-44,-16)(-30,-16)(-16,-16)(-2,-16)(12,-16)(26,-16)(40,-16)(54,-16)"
"(68,-16)(82,-16)(-72,-2)(-58,-2)(-44,-2)(-30,-2)(-16,-2)(-2,-2)"
"(12,-2)(26,-2)(40,-2)(54,-2)(68,-2)(82,-2)(-72,12)(-58,12)(-44,12)"
"(-30,12)(-16,12)(-2,12)(12,12)(26,12)(40,12)(54,12)(68,12)(82,12)"
"(-72,26)(-58,26)(-44,26)(-30,26)(-16,26)(-2,26)(12,26)(26,26)(40,26)"
"(54,26)(68,26)(-72,40)(-58,40)(-44,40)(-30,40)(-16,40)(-2,40)(12,40)"
"(26,40)(40,40)(54,40)(68,40)(-58,54)(-44,54)(-30,54)(-16,54)(-2,54)"
"(12,54)(26,54)(40,54)(54,54)(-44,68)(-30,68)(-16,68)(-2,68)(12,68)"
"(26,68)(40,68)(-16,82)(-2,82)(12,82)";
QString StrPlotFourInch = "(-2,-44)(-30,-30)(-16,-30)(-2,-30)(12,-30)(26,-30)(-30,-16)(-16,-16)"
"(-2,-16)(12,-16)(26,-16)(40,-16)(-44,-2)(-30,-2)(-16,-2)(-2,-2)(12,-2)"
"(26,-2)(40,-2)(-30,12)(-16,12)(-2,12)(12,12)(26,12)(40,12)(-30,26)(-16,26)"
"(-2,26)(12,26)(26,26)(-16,40)(-2,40)(12,40)";
bool StopElectricResistanceCheckFlag{false};
LaserMark * pLaserMark;
double laserMarkHeight{1};
double laserMarkWidth{1};
double laserMarkInternal{1};
int laserMarkFrequency{1};
double laserMarkPulseWidth{1};
//BLLaserLib * pBLLaserLib;
bool bUserPower{false};
bool SuspendFlag{false};
void Record_xiao();
void laserCtlCnn();
void laserCtlClose();
void laserCtlSet(QString strParam);
void laserSetMode(int); //设置出发模式 =》 0为TOD模式 1为GATE模式
void laserSetEmissionOnOff(int); //设置内部激光器开光关光状态 =》 1为激光器出光 0为激光器关光
void laserSetExtTrigEnable(int); //设置外部激光器触发使能状态 =》 1为激光器使能开 0为激光器使能关
bool PidFlag{true};
bool DataCheckFlag{false};
QString strLaserMark_test;
// 连续相对运动
void XAxisCMoveN();
void XAxisCMoveNEnd();
void XAxisCMoveP();
void XAxisCMovePEnd();
void YAxisCMoveN();
void YAxisCMoveNEnd();
void YAxisCMoveP();
void YAxisCMovePEnd();
void ZAxisCMoveN();
void ZAxisCMoveNEnd();
void ZAxisCMoveP();
void ZAxisCMovePEnd();
void ZAAxisCMoveN();
void ZAAxisCMoveNEnd();
void ZAAxisCMoveP();
void ZAAxisCMovePEnd();
void Z0AxisCMoveN();
void Z0AxisCMoveNEnd();
void Z0AxisCMoveP();
void Z0AxisCMovePEnd();
void Z2AxisCMoveN();
void Z2AxisCMoveNEnd();
void Z2AxisCMoveP();
void Z2AxisCMovePEnd();
void DAxisCMoveN();
void DAxisCMoveNEnd();
void DAxisCMoveP();
void DAxisCMovePEnd();
// 单步相对运动
void XAxisSMoveN();
void XAxisSMoveP();
void YAxisSMoveN();
void YAxisSMoveP();
void ZAxisSMoveN();
void ZAxisSMoveP();
void ZAAxisSMoveN();
void ZAAxisSMoveP();
void DAxisSMoveN();
void DAxisSMoveP();
void Z2AxisSMoveN();
void Z2AxisSMoveP();
void Z0AxisSMoveN();
void Z0AxisSMoveP();
// 绝对运动
void ABSMove();
void ABSMove_DZ0Z2();
void ABSMove_Z0_test();
void RSToZero();
void MachSmallArea();
void SScan();
void compSScan();
int GetRatioP1P2Thread();
int SaveRatioP1P2ToCSV(float ApValue_P1[30],float ApValue_P2[30], float ApPercentage[30],float kb[],bool flag);
int ElectricResistanceCheckThread();
void imageGet();
int FindEdgeThread();
int FindEdgeThread_6();
void MHCompOpen();
void MotionCompOpen(bool flag,double array[]);
void MotionCompClose();
void compClose();
void FindEdge();
void GetRatioP1P2();
void ElectricResistanceCheck();
void GetGlobalPhoto();
void GetGlobalPhotoSide();
int GetGlobalPhotoThread();
void stop();
void Suspend();
void ContinueBuffer();
void EStop();
void SMach();
void semiAutoMach();
void vacuumSuckerOpen();
void vacuumSuckerClose();
// 三色灯
void laserOpen();
void laserClose();
void greenLightOpen();
void greenLightClose();
void redLightOpen();
void redLightClose();
void yellowLightOpen();
void yellowLightClose();
void StopBtnOpen();
void StopBtnClose();
void RunBtnOpen();
void RunBtnClose();
void FanOpen();
void FanClose();
void VacuumBreakOpen();
void VacuumBreakClose();
void AirValveClose();
void AirValveOpen();
void CuCeGaoClose();
void CuCeGaoOpen();
void Pin18Close();
void Pin18Open();
void LightClose();
void LightOpen();
void AirValveClose2();
void AirValveOpen2();
void setLight();
// 轴使能操作
void enableDisableXAxis();
void enableDisableYAxis();
void enableDisableZAxis();
void enableDisableZAAxis();
void enableDisableDAxis();
void enableDisableZ0Axis();
void enableDisableZ2Axis();
//设置轴状态
void setAxisState();
// 相机,加工头,测距头位置转换
void MHToCamera();
void CameraToMH();
void RHToCamera();
void CameraToRH();
void RHToMH();
void MHToRH();
// 过程位置
void toLoadAndUnloadPos();
void toGloblaCameraPos();
void toSScanStartPos();
void toRSToZeroPos();
//void toMachStartPos();
void toZAAxisCPos();
void toLaserApTestPos();
void toLaserMarkPos();
void toHeightFindPos();
void toEdgeSearchPos();
void toCompenTestPos();
void toRecordPos();
void LoadFromCsv(QString fileName);
int devLaserNum{0};
int devLaserState{0};
int devPlaneScanCompState{0};
int devMotionCompState{0};
int devWorkpieceLockState{0};
int devLightingState{0};
bool devLaserCheck{false};
int devLaserOpenTime{0};
bool checkZaxisAlarmFlag{true};
bool LaserTestApFlag{false};
int LaserTestApIndex{1};
double LaserApValueP1{0};
double ApPercentage{0};
int Mach_T_S_flag{0};
int devInState{0};
int runBtnDINum;
int stopBtnDINum;
int estopBtnDINum;
int door1DINum;
int door2DINum;
int airValveOpenNum{0};
int airValveCloseNum{0};
int CuCeGaoDINum{0};
int airValveDoNum{0};
int CuCeGaoDoNum{0};
int airValveDoSts{0};
int airValveDoNum2{0};
int airValveDoSts2{0};
int AllPressureDINum{0};
int devLightNum{0};
int UPSDINum{0};
int airValveDiOpenSts;
int airValveDiCloseSts;
int runType{0};
bool bRunning;
bool bAutoLoadUnloadFlag{false};
int RFIDCount{0};
double Palletheight{0};
double LaserMarkOffset_Y{0};
double LaserMarkOffset_X{0};
double workpieceHeight{0};
//double ZZA{0};
bool lastTaskIsFinish{true};
QString lastTaskName;
int AxisMoveSafeCheckXY(int axisBuf[4],double distPos[4],int moveMode[2]);
void detectionZZAAxisPos();
bool getDevIsReset();
bool getDevIsInit();
bool getLastTaskIsFinish();
int ShangProc(void);
int XiaProc(void);
int deCode_file(QString strFileName);
QString deCodeString;
QStringList fFileContent;
signals:
void ShangLiaoFSGL(bool);
void XiaLiaoFSGL(bool);
void MsgLogInSuccess(bool);
void MsgSetValueSGL(int);
void RunSGL(bool);
void MHCompOpenFSGL();
void MHCompCloseFSGL();
void MotionCompOpenFSGL();
void MotionCompCloseFSGL();
void laserOpenFSGL();
void laserCloseFSGL();
void suspendBufferFSGL();
void continueBufferFSGL();
void vacuumSuckerOpenFSGL();
void vacuumSuckerCloseFSGL();
void FindEdgeFinishSGL(int);
void GetRatioP1P2FinishSGL(int);
void ElectricResistanceCheckFinishSGL(int);
void show_Q_PP_SGL();
void CMDRunFinishSGL();
void XAxisLimitStateSGL(LIMIT_STATE);
void YAxisLimitStateSGL(LIMIT_STATE);
void ZAxisLimitStateSGL(LIMIT_STATE);
void ZAAxisLimitStateSGL(LIMIT_STATE);
void XAxisEnableStateSGL(bool);
void YAxisEnableStateSGL(bool);
void ZAxisEnableStateSGL(bool);
void ZAAxisEnableStateSGL(bool);
void XAxisCtPosSGL(double);
void YAxisCtPosSGL(double);
void ZAxisCtPosSGL(double);
void ZAAxisCtPosSGL(double);
void DAxisCtPosSGL(double);
void Z0AxisCtPosSGL(double);
void Z2AxisCtPosSGL(double);
void StepNameSGL(int);
void TransferPLCSGL(int);
void SeparatePLCSGL(int);
void GetGlobalPhotoFinishSGL(int);
void PowerMeterValueSGL(float,float);
void EStopSGL(bool);
void SETRfidText(char *);
void DEVInitStateChangedSGL(bool);
//void DEVResetStateChangedSGL(bool);
void RSValueChangedSGL(double);
void stateDetectExceptSGL(int exceptCode);
void exceptSGL(MyException);
void exceptSGL_lhc(MyException);
void AutoExceptSGL_laser(MyException);
void AutoSmachStateSGL(bool);
void StopStateSGL(bool);
void SmachTypeStateSGL(bool);
void VacuumSuckerOnOrOffStateSGL(bool);
void GetRunTypeState();
void AutoExceptSGL(MyException);
void ShowSmallAreasSGL();
void ShowMergeSGL();
void DDEnableStateSGL(int);
void DDLimitStateSGL(int,LIMIT_STATE);
void InStateSGL(int);
private slots:
// 监控状态
void stateDetection();
void resetFHandl();
void XAxisSMoveNFHandl();
void XAxisSMovePFHandl();
void YAxisSMoveNFHandl();
void YAxisSMovePFHandl();
void ZAxisSMoveNFHandl();
void ZAxisSMovePFHandl();
void ZAAxisSMoveNFHandl();
void ZAAxisSMovePFHandl();
void DAxisSMoveNFHandl();
void DAxisSMovePFHandl();
void Z2AxisSMoveNFHandl();
void Z2AxisSMovePFHandl();
void Z0AxisSMoveNFHandl();
void Z0AxisSMovePFHandl();
void ABSMoveFHandl();
void toLoadAndUnloadPosFHandl();
void toGlobalCameraPosFHandl();
void toSScanStartPosFHandl();
void toRSToZeroPosFHandl();
void toLaserApTestPosFHandl();
void toLaserMarkPosFHandl();
void toHeightFindPosFHandl();
void toEdgeSearchPosFHandl();
void toCompenTestPosFHandl();
void toRecordPosFHandl();
void toZAAxisCPosFHandl();
void MHToCameraFHandl();
void CameraToMHFHandl();
void RHToCameraFHandl();
void CameraToRHFHandl();
void RHToMHFHandl();
void MHToRHFHandl();
void RSToZeroFHandl();
void MachSmallAreaFHandl();
void SScanFHandl();
void compSScanFHandl();
void MHCompOpenFHandl();
void FindEdgeFHandl(int result);
void GetRatioP1P2FHandl(int result);
void ElectricResistanceCheckFHandl(int result);
void SMachFHandl();
void semiAutoMachFHandl();
void CSS_MHCompOpenFHandl();
void GetGlobalPhotoFHandl(int result);
private:
DeviceProxy();
DeviceProxy(DeviceProxy const&) = delete;
DeviceProxy& operator = (DeviceProxy const&) = delete;
//监控
void startStateDetection();
void stopStateDetection();
void detectionAllAxisCtPos();
void detectionAllAxisLimitState();
void detectionAllAxisEnableState();
void detectionCMDRunFState();
void detectionEStopState();
void detectionRCValue();
void detectionLaserValue();
void detectionInState();
bool getResetState();
//使能
void enableXAxis();
void enableYAxis();
void enableZAxis();
void enableZAAxis();
void disableXAxis();
void disableYAxis();
void disableZAxis();
void disableZAAxis();
void enableDAxis();
void enableZ0Axis();
void enableZ2Axis();
void disableDAxis();
void disableZ0Axis();
void disableZ2Axis();
void readSScanData();
void saveSScanData();
void buildSScanDataTable();
void saveSScanDataTable();
void readCompSScanData();
void saveCompSScanData();
void buildLookupTable();
void buildLookupTable2();
void buildLookupTable_lhc();
void buildLookupTable_lhc2();
void saveLookupTable();
void saveLookupTable_lhc();
void saveLookupTable_load();
void SScanDataCheck_lhc();
void SScanDataCheck();
void lookupTableHeadEndDataHandl();
void lookupTableHeadEndDataHandl_lhc();
void lookupTableHeadEndDataHandl_lhc2();
double DataHandlCheck_lhc(double data[6]);
void lookupTable_do_Gaussian();
void lookupPeripheralMakeUpZero();
void downLoadLookupTable();
void RSToZeroInSide();
void MachSmallAreaInSide();
void SScanInSide();
void compSScanInSide();
void MHCompOpenInSide();
void compCloseInSide();
void FindEdgeInSide();
void GetRatoP1P2Side();
void ElectricResistanceCheckSide();
// 过程位置
void toLoadAndUnloadPosInSide();
void GloblaCameraPosInSide();
void toSScanStartPosInSide();
void toRSToZeroPosInSide();
void toLaserApTestPosInSide();
void toLaserMarkPosInSide();
void toLaserMarkPosThreadInSide();
void toHeightFindPosInSide();
void toEdgeSearchPosInSide();
void toRecordPosInSide();
void toEdgeSearchPosThreadInSide();
void toCompenTestPosInSide();
void SMachInSide(int index);
void semiAutoMachInSide();
void vacuumSuckerOpenInSide();
void vacuumSuckerCloseInSide();
void laserOpenInSide();
void laserCloseInSide();
void RHToMHInSide();
void MHToRHInSide();
// 异常处理
void exceptHandl(MyException mye);
void exceptHandl_thread(MyException mye);
private:
static DeviceProxy* uniqueInstance;
ACSController *acsCtl;
QTimer *timer;
LIMIT_STATE XAxisLimitState{NORMAL};
LIMIT_STATE YAxisLimitState{NORMAL};
LIMIT_STATE ZAxisLimitState{NORMAL};
LIMIT_STATE ZAAxisLimitState{NORMAL};
LIMIT_STATE Z0AxisLimitState{NORMAL};
LIMIT_STATE Z2AxisLimitState{NORMAL};
LIMIT_STATE DAxisLimitState{NORMAL};
volatile double XAxisCtPos{0.0};
volatile double YAxisCtPos{0.0};
volatile double ZAxisCtPos{0.0};
volatile double ZAAxisCtPos{0.0};
volatile double Z0AxisCtPos{0.0};
volatile double Z2AxisCtPos{0.0};
volatile double DAxisCtPos{0.0};
double XAxisMin{0.0};
double XAxisMax{0.0};
double YAxisMin{0.0};
double YAxisMax{0.0};
double ZAxisAddZA{0.0};
bool XAxisIsEnable{false};
bool YAxisIsEnable{false};
bool ZAxisIsEnable{false};
bool ZAAxisIsEnable{false};
bool Z0AxisIsEnable{false};
bool Z2AxisIsEnable{false};
bool DAxisIsEnable{false};
bool devIsInit{false};
bool devIsReset{false};
bool devIsAlarm{false};
int devLightState{0};
int devRunStopBtnState{100};
bool devEStopState{false};
bool XAxisMoving{false};
bool YAxisMoving{false};
bool ZAxisMoving{false};
bool ZAAxisMoving{false};
bool Z0AxisMoving{false};
bool Z2AxisMoving{false};
bool DAxisMoving{false};
bool XAxisIsInPos{false};
bool YAxisIsInPos{false};
bool ZAxisIsInPos{false};
bool ZAAxisIsInPos{false};
bool Z0AxisIsInPos{false};
bool Z2AxisIsInPos{false};
bool DAxisIsInPos{false};
bool reqCMDRunFState{false};
//bool lastTaskIsFinish{true};
//QString lastTaskName;
QVector<double> CSS_RSData;
QVector<double> CSS_XPosData;
QVector<double> SScanArMsrZ;
QVector<double> SScanArPosY;
QVector<QVector<double>> SScanDataTable;
QVector<QVector<double>> lookupTable;
QVector<QVector<double>> lookupTable_Gaussian;
double lookupTableStartY{0.0};
double SSStartYPos{0.0};
double SSStartXPos{0.0};
bool XAxisErrorDetection{false};
bool YAxisErrorDetection{false};
bool ZAxisErrorDetection{false};
bool ZAAxisErrorDetection{false};
bool Z0AxisErrorDetection{false};
bool Z2AxisErrorDetection{false};
bool DAxisErrorDetection{false};
QThread thread;
int step{0};
CDeviceProxyWorker *worker;
QMutex mutex;
bool StopFindEdgeFlag{false};
bool StopGonglvCheckFlag{false};
bool StopGetRatioP1P2Flag{false};
bool ZZAPosCheckFlag{false};
int lRunStopTime[2]{0,0};
int lRunCheckAirValve{0};
};
class CDeviceProxyWorker :public QObject
{
Q_OBJECT
public:
CDeviceProxyWorker(DeviceProxy *parent) { mParent = parent; }
virtual ~CDeviceProxyWorker() {}
public slots :
void doWork_custom();
private:
DeviceProxy *mParent;
signals:void finished();
};
#endif // DEVICEPROXY_H