diff --git a/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/LOGGER.CPP b/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/LOGGER.CPP deleted file mode 100644 index 69936bc..0000000 --- a/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/LOGGER.CPP +++ /dev/null @@ -1,54 +0,0 @@ -#include "stdafx.h" - -#include "Logger.h" - -void CLogger::Send(LPCTSTR format, ...) -{ - if (!m_File) - { - m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); - } - int length = 0; - va_list list; - va_start(list, format); - length = vswprintf_s(m_Str,5000, format, list); - if(m_File) - { - _ftprintf(m_File, m_Str); - } -} -void CLogger::SendAndFlush(LPCTSTR format, ...) -{ - int length = 0; - va_list list; - - va_start(list, format); - length = vswprintf_s(m_Str2,5000, format, list); - Send(m_Str2); - - if(m_File) - { - fclose(m_File); - m_File = NULL; - if(m_FileName.GetLength() > 0) - m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); - } -} - -void CLogger::SendAndFlushPerMode(LPCTSTR format, ...) -{ - int length = 0; - va_list list; - - va_start(list, format); - length = vswprintf_s(m_Str2,5000, format, list); - Send(m_Str2); - - if((m_lLogMask & LOGFLUSH) && m_File) - { - fclose(m_File); - m_File = NULL; - if(m_FileName.GetLength() > 0) - m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); - } -} \ No newline at end of file diff --git a/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/Mv_Proto.cpp b/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/Mv_Proto.cpp index 5589772..b12d6d7 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/Mv_Proto.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/Mv_Proto.cpp @@ -2,7 +2,7 @@ #include "stdafx.h" #include "Mv_Proto.h" #include "SsiStatus.h" -#include "Logger.h" +#include "..\Tools\UsbUtility\logger.h" #include "math.h" #define MY_CONFIG 1 @@ -507,7 +507,7 @@ CMv_Proto::CMv_Proto() g_machine.s_machine_config._dXYZSpeed = 50; m_bHomingActive = false; - g_pLogger = new CLogger(); + g_pLogger = new CLogger(_T("Mv_Proto.log")); }; //****************************************************************************** diff --git a/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/Mv_Proto.h b/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/Mv_Proto.h index 234ec6e..2c2b08c 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/Mv_Proto.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/Mv_Proto.h @@ -10,7 +10,7 @@ #pragma once #endif // _MSC_VER > 1000 /*ThirdParty\UsbSupport\LibUsb_Win\Include\lusb0_usb.h - #include "logger.h" +#include "..\Tools\UsbUtility\logger.h" #include "..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Include\lusb0_usb.h" #include "SsiStatus.h" diff --git a/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/logger.h b/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/logger.h deleted file mode 100644 index 0bd5cc4..0000000 --- a/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/logger.h +++ /dev/null @@ -1,56 +0,0 @@ -#if !defined(LOGGER_H__5142BB38_5565_4124_88A4_56EA08298154__INCLUDED_) -#define LOGGER_H__5142BB38_5565_4124_88A4_56EA08298154__INCLUDED_ - -#include -#include -#include -#include -#include -#include -#include - -const long LOGINIT = 0x0001; -const long LOGACTIONS = 0x0002; -const long LOGCOMM = 0x0004; -const long LOGFLUSH = 0x0008; - -class CLogger -{ -public: - - CLogger() - { - m_File = NULL; - CString Path=_T(""); // Speed optimization - noticed slow in GlowCode - if (Path.IsEmpty()) { - CString tmpPath; - GetModuleFileName(NULL,tmpPath.GetBuffer(255),255); - tmpPath.ReleaseBuffer(); - tmpPath.TrimRight(); - int nLastSlash = tmpPath.ReverseFind('\\'); - if (nLastSlash >= 0) - tmpPath = tmpPath.Left(nLastSlash); - else - tmpPath.Empty(); - Path=tmpPath; - } - m_FileName=Path + _T("\\Mv_SSILog.txt"); - m_lLogMask=0; - }; - ~CLogger() - { - if (m_File) - fclose(m_File); - }; - - void Send(LPCTSTR, ...); - void SendAndFlush(LPCTSTR, ...); - void SendAndFlushPerMode(LPCTSTR, ...); - CString m_FileName; - long m_lLogMask; - FILE *m_File; - _TCHAR m_Str[20000]; - _TCHAR m_Str2[20000]; -}; - -#endif // !defined(LOGGER_H__5142BB38_5565_4124_88A4_56EA08298154__INCLUDED_) diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp index af2b58c..1357079 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp @@ -10,6 +10,9 @@ #define MAX_IN_BUFF_SIZE 1024 #define M_PI 3.14159265358979323846 +const INT HOME_TIMEOUT=300000; +const INT MOVETO_TIMEOUT=60000; +const INT MIN_SLEEP_TIME=20; const DOUBLE ROTARY_MMtoScale_RESOLUTION=0.0005; //***** Static Data ***** static char *outBuff = NULL; @@ -26,9 +29,8 @@ HANDLE CSO7_Proto::g_hEP02_Serial_Mutex; //================================================================ struct_so7_machine CSO7_Proto::g_machine; usb_dev_handle *CSO7_Proto::g_dev=NULL; -CLogger *CSO7_Proto::g_pLogger; +CLogger *CSO7_Proto::g_pLogger=NULL; HANDLE CSO7_Proto::g_hHomedEvent = NULL; -CLogger* g_pLog=NULL; //=========================================================================== @@ -562,8 +564,7 @@ CSO7_Proto::CSO7_Proto() so7_motion_reset_controller_parameter(); so7_config_para_set_default(); m_bHomingActive = false; - g_pLogger = new CLogger(_T("\\UtilityDebug.Log")); - g_pLogger->Send(_T("Construct Cso7_Proto.\r\n")); + g_pLogger = new CLogger(_T("\\MachineInterface.Log")); }; //****************************************************************************** @@ -574,9 +575,10 @@ CSO7_Proto::~CSO7_Proto() free(ep_buff[i]._buffer); }; if (g_pLogger) - g_pLogger->Send(_T("Destruct Cso7_Proto.\r\n")); - delete g_pLogger; - g_pLogger = NULL; + { + delete g_pLogger; + g_pLogger = NULL; + } } #pragma warning(disable:4996) @@ -2568,7 +2570,34 @@ SSI_STATUS_MOTION CSO7_Proto::Load_So7_Config() g_machine.s_machine_config.motion.m_DebugOutputEnable=atoi(cTemp); } } - + //==================Motion============================= + else if(!_stricmp(token, "X_SCALE_RESOLUTION")) + { + token = strtok( NULL, seps); + if (token) + { + strcpy(cTemp,token); + g_machine.s_machine_config.x_axis._scale_resolution=atof(cTemp); + } + } + else if(!_stricmp(token, "Y_SCALE_RESOLUTION")) + { + token = strtok( NULL, seps); + if (token) + { + strcpy(cTemp,token); + g_machine.s_machine_config.y_axis._scale_resolution=atof(cTemp); + } + } + else if(!_stricmp(token, "Z_SCALE_RESOLUTION")) + { + token = strtok( NULL, seps); + if (token) + { + strcpy(cTemp,token); + g_machine.s_machine_config.z_axis._scale_resolution=atof(cTemp); + } + } //=================Rotary======================== else if (!_stricmp(token,"ROTARY_AXIS_NUMBER")) { @@ -2846,6 +2875,10 @@ int CSO7_Proto::Get_SeqNumber(usb_dev_handle *udev) //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb() { + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("Enter Initialize Usb.\n")); + } //Set initial state of the machine g_machine.s_status._machine_running = false; @@ -2862,7 +2895,6 @@ SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb() if (!g_dev) { MessageBox(NULL, _T("Unable to open device"), _T("Message"), MB_OK|MB_ICONERROR); - g_pLogger->SendAndFlushPerMode(_T("Unable to open device %s \r\n"), usb_strerror()); g_machine.IsOffline=TRUE; rStatus= SSI_STATUS_MOTION_DATALINK_ERROR; } @@ -2880,7 +2912,6 @@ SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb() rStatus=SSI_STATUS_MOTION_DATALINK_ERROR; } - g_pLogger->SendAndFlushPerMode(_T("Init:Open device succeed .\r\n")); // ******************************************************************** // This event is used to kick the Serial Usb Command process. This threading model // is important because the underlying library is not thread-safe. @@ -2972,8 +3003,10 @@ SSI_STATUS_MOTION CSO7_Proto::Exit_SO7Usb() g_hEP02_Thread_State = THREAD_EXIT; ReleaseMutex(g_hEP02_Serial_Mutex); CloseHandle(g_hEP02_Serial_Mutex); - - g_pLogger->SendAndFlushPerMode(_T("Exit: Exit_SO7Usb \r\n")); + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("Exit Exit_SO7Usb.\n")); + } return Status; } @@ -3009,9 +3042,12 @@ SSI_STATUS_MOTION CSO7_Proto::_do_single_threaded_usb_comm(int iEP_Base) //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::_start_machine() { + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("_start_machine.\n")); + } g_hEP8x_Thread_State = THREAD_RUNNING_STATE2; g_machine.s_status._machine_running = true; - g_pLogger->SendAndFlushPerMode(_T("_start_machine\n")); SetEvent(g_hHomedEvent); //so7_motion_probe_on_off_(false); @@ -3023,6 +3059,10 @@ SSI_STATUS_MOTION CSO7_Proto::_start_machine() //=============================================================================== SSI_STATUS_MOTION CSO7_Proto::_shutdown_machine() { + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("_shutdown_machine.\n")); + } g_machine.s_status._machine_running = false; return SSI_STATUS_MOTION_NORMAL; }; @@ -3216,25 +3256,74 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_laser_on_off(bool _bOnOff) //**********************************************************************// //**********************************************************************// +SSI_STATUS_MOTION CSO7_Proto::so7_motion_init_firmware_para() +{ + _send_cmd_SO7_CMD_GET_RESET_FLAG(); + if(g_machine.IsSupportReadInterrputMsg) + { + _send_cmd_SO7_CMD_SET_GET_INTERRUPT_MSG_METHOD(g_machine.s_machine_config.motion.GetInterruptMsgMethod); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_READ_FIRMWARE_VERSION_INFO(); + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + CStringA csAStr(""); + csAStr.Format("FirmwareVersion:%s.\n",g_machine.FirmwareInfo); + CString csStr(csAStr); + g_pLogger->SendAndFlushWithTime(csStr); + } + if (g_machine.FirmwareVer==FirmwareVer_6_X) + { + _send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X,E_WRITE_ACCURA_ERR,static_cast(g_machine.s_machine_config.motion.m_AccuraErrPulseX)); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Y,E_WRITE_ACCURA_ERR,static_cast(g_machine.s_machine_config.motion.m_AccuraErrPulseY)); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z,E_WRITE_ACCURA_ERR,static_cast(g_machine.s_machine_config.motion.m_AccuraErrPulseZ)); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X,E_WRITE_EQUIDISTANCE,static_cast(g_machine.s_machine_config.motion.m_EQUIDIS_X)); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Y,E_WRITE_EQUIDISTANCE,static_cast(g_machine.s_machine_config.motion.m_EQUIDIS_Y)); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z,E_WRITE_EQUIDISTANCE,static_cast(g_machine.s_machine_config.motion.m_EQUIDIS_Z)); + Sleep(MIN_SLEEP_TIME); + } + } + else + { + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("FirmwareVersion:UNKNOWN.\n")); + } + } + return SSI_STATUS_MOTION_NORMAL; +} //================================================================== bool CSO7_Proto::so7_motion_is_homed() { - if (g_machine.IsOffline) - { - g_machine.Sys_Reset_Flag =1; - SetEvent(g_hHomedEvent); - } + //if (g_machine.IsOffline) + //{ + // g_machine.Sys_Reset_Flag =1; + // SetEvent(g_hHomedEvent); + //} _send_cmd_SO7_CMD_GET_RESET_FLAG(); if (g_machine.Sys_Reset_Flag == 1) { + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("so7_motion_is_homed:true.\n")); + } SetEvent(g_hHomedEvent); return true; } else + { + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("so7_motion_is_homed:false.\n")); + } return false; + } }; - //======================================================================== // Move the stage left/right until the index location is non-zero //======================================================================== @@ -3260,7 +3349,6 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home() // Home so7_motion_reset_worktable_lower_left(CT_HOME_XYZ); - g_pLogger->SendAndFlushPerMode(_T("so7_motion_reset_worktable_lower_left.\n")); TRACE0(" - waiting for X,Y,Zm to stop moving\n"); //======================================== // Wait until X-Y-Zm stopped moving @@ -3271,14 +3359,66 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home() _send_cmd_SO7_CMD_GET_RESET_FLAG(); iRetry++; } - g_pLogger->SendAndFlushPerMode(_T("[%d]waiting for X,Y,Zm to stop moving\n"),iRetry); - g_pLogger->SendAndFlushPerMode(_T("Home succeed.\n")); //_get_xyz_index(g_machine.s_machine_config.x_axis._neg_working_limit,g_machine.s_machine_config.y_axis._neg_working_limit,g_machine.s_machine_config.z_axis._neg_working_limit); _send_cmd_SO7_CMD_SET_VER_NUMBER(); m_bHomingActive = false; SetEvent(g_hHomedEvent); return SSI_STATUS_MOTION_NORMAL; } +//======================================================================== +SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_HomeXYZ(char cHomeMachineMode) +{ + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("Enter so7_motion_Dcc_HomeXYZ(%d).\n"),cHomeMachineMode); + } + if (g_machine.IsOffline) + { + SetEvent(g_hHomedEvent); + return SSI_STATUS_MOTION_NORMAL; + } + //查询是否复位 + _send_cmd_SO7_CMD_GET_RESET_FLAG(); + g_machine.cVerNumber=3; + if (g_machine.Sys_Reset_Flag == 1) + { + _send_cmd_SO7_CMD_SET_VER_NUMBER(); + SetEvent(g_hHomedEvent); + return SSI_STATUS_MOTION_NORMAL; + } + + m_bHomingActive = true; // Tell the world we need to home the stage + + // Home + so7_motion_reset_worktable_lower_left(cHomeMachineMode); + + TRACE0("Waiting for X,Y,Zm to stop moving\n"); + //======================================== + // Wait until X-Y-Zm stopped moving + //======================================== + INT lSleep = 20; + INT lMaxLoopCnt = HOME_TIMEOUT/lSleep; + INT lLoopCnt = 0; + Sleep(lSleep); + do + { + Sleep(lSleep); + _send_cmd_SO7_CMD_GET_RESET_FLAG(); + lLoopCnt++; + } while (g_machine.Sys_Reset_Flag != 1 && lLoopCnt < lMaxLoopCnt); + //_get_xyz_index(g_machine.s_machine_config.x_axis._neg_working_limit,g_machine.s_machine_config.y_axis._neg_working_limit,g_machine.s_machine_config.z_axis._neg_working_limit); + m_bHomingActive = false; + if (g_machine.Sys_Reset_Flag == 1) + { + SetEvent(g_hHomedEvent); + _send_cmd_SO7_CMD_SET_VER_NUMBER(); + return SSI_STATUS_MOTION_NORMAL; + } + else + { + return SSI_STATUS_MOTION_TIMEOUT; + } +} //================================================================== SSI_STATUS_MOTION CSO7_Proto::so7_Motion_R_IsHomed(bool &bHomed) @@ -3286,6 +3426,7 @@ SSI_STATUS_MOTION CSO7_Proto::so7_Motion_R_IsHomed(bool &bHomed) _send_cmd_SO7_CMD_GET_RESET_FLAG(); if (g_machine.Sys_Reset_Flag == 1) { + SetEvent(g_hHomedEvent); bHomed=true; } else @@ -3299,6 +3440,10 @@ SSI_STATUS_MOTION CSO7_Proto::so7_Motion_R_IsHomed(bool &bHomed) SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home_R() { //查询是否复位 + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("Enter so7_motion_Dcc_Home_R.\n")); + } _send_cmd_SO7_CMD_GET_RESET_FLAG(); if (g_machine.Sys_Reset_Flag == 1) { @@ -3326,17 +3471,15 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home_R() g_machine.z._pos_fixed._long_=lMoveToDis; } _send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ); - - g_pLogger->SendAndFlushPerMode(_T("so7_motion_reset_worktable_lower_left.\n")); //======================================== - const long lSleep = 20; - const long lMaxLoopCnt = 2000/lSleep; - long lLoopCnt = 0; + INT lSleep = 20; + INT lMaxLoopCnt = MOVETO_TIMEOUT/lSleep; + INT lLoopCnt = 0; Sleep(lSleep); - BOOL IsFinished(FALSE); + bool IsFinished(FALSE); do { - so7_motion_is_finished(EMSG_STOPXYZ_1_MOVETOXYZ,IsFinished); + so7_Motion_R_IsMotionFInished(IsFinished); Sleep(lSleep); ++lLoopCnt; } while (!IsFinished && lLoopCnt < lMaxLoopCnt); @@ -3346,7 +3489,6 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home_R() _send_cmd_SO7_CMD_SET_RESET_FLAG(); g_machine.cVerNumber = 3; _send_cmd_SO7_CMD_SET_VER_NUMBER(); - g_pLogger->SendAndFlushPerMode(_T("Home succeed.\n")); SetEvent(g_hHomedEvent); return SSI_STATUS_MOTION_NORMAL; } @@ -3445,6 +3587,11 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_R(double dRad,bool bWait) { dRMovetoDis=dRMovetoDis; } + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("so7_motion_set_position_R:[From]%.4f;[To]%.4f;[Dis]%.4F.\n") + ,dRStart,dRad,dRMovetoDis); + } lMoveToDis=static_cast(dRMovetoDis*(static_cast(g_machine.s_machine_config.motion.m_RotaryCirclePulse))/(2.0*M_PI)); g_machine.x._pos_fixed._long_=0; g_machine.y._pos_fixed._long_=0; @@ -3464,23 +3611,23 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_R(double dRad,bool bWait) _send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ); g_machine.MotionType=EMSG_STOPXYZ_1_MOVETOXYZ; - BOOL IsFinished(TRUE); + bool IsFinished(true); if (bWait) { - const long lSleep = 20; - const long lMaxLoopCnt = 2000/lSleep; // use max homing time of 20 seconds - long lLoopCnt = 0; + INT lSleep = 20; + INT lMaxLoopCnt = MOVETO_TIMEOUT/lSleep; // use max homing time of 20 seconds + INT lLoopCnt = 0; Sleep(lSleep); do { - so7_motion_is_finished(EMSG_STOPXYZ_1_MOVETOXYZ,IsFinished); + so7_Motion_R_IsMotionFInished(IsFinished); Sleep(lSleep); ++lLoopCnt; } while (!IsFinished && lLoopCnt < lMaxLoopCnt); } - g_machine.MotionType=-1; if (IsFinished) { + g_machine.MotionType=-1; return SSI_STATUS_MOTION_NORMAL; } else @@ -3502,10 +3649,19 @@ SSI_STATUS_MOTION CSO7_Proto::so7_Motion_R_IsMotionFInished(bool &bFinished) if (IsFinished) { bFinished=true; + IsMotionFinishedManual(TRUE); } else { - bFinished=false; + IsFinished=IsMotionFinishedManual(); + if (IsFinished) + { + bFinished=true; + } + else + { + bFinished=false; + } } } return SSI_STATUS_MOTION_NORMAL; @@ -3515,14 +3671,6 @@ SSI_STATUS_MOTION CSO7_Proto::so7_Motion_R_IsMotionFInished(bool &bFinished) SSI_STATUS_MOTION CSO7_Proto::so7_motion_move_R(char _SpeedGear) { //4-FASTER,1-SLOWER - if (_SpeedGear>4) - { - _SpeedGear=4; - } - if (_SpeedGear<1) - { - _SpeedGear=1; - } if (g_machine.s_machine_config.motion.m_RotaryAxisNO==MACHINE_AXIS_X) { _send_cmd_SO7_CMD_MOVE_X(_SpeedGear); @@ -3581,9 +3729,9 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_position_xyz(double & dX, double & dY = ScaleToMM(lY, g_machine.s_machine_config.y_axis._scale_resolution); dZ = ScaleToMM(lZ, g_machine.s_machine_config.z_axis._scale_resolution); - dX -= g_machine.s_machine_config.x_axis._neg_working_limit; - dY -= g_machine.s_machine_config.y_axis._neg_working_limit; - dZ -= g_machine.s_machine_config.z_axis._neg_working_limit; + //dX -= g_machine.s_machine_config.x_axis._neg_working_limit; + //dY -= g_machine.s_machine_config.y_axis._neg_working_limit; + //dZ -= g_machine.s_machine_config.z_axis._neg_working_limit; return SSI_STATUS_MOTION_NORMAL; }; @@ -3618,7 +3766,11 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_xyz(double dX, double dY, Y.to = MMtoScale(dY, g_machine.s_machine_config.y_axis._scale_resolution); Z.from = MMtoScale(dZStart, g_machine.s_machine_config.z_axis._scale_resolution); Z.to = MMtoScale(dZ, g_machine.s_machine_config.z_axis._scale_resolution); - + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("so7_motion_set_position_xyz:[From]X:%.4f,Y:%.4f,Z:%.4f;[To]X:%.4f,Y:%.4f,Z:%.4f.\n") + ,dXStart,dYStart,dZStart,dX,dY,dZ); + } // move the position to make the -X, -Y, -Z position 0,0,0 //X.to += g_machine.s_machine_config.x_axis._neg_working_limit; //Y.to += g_machine.s_machine_config.y_axis._neg_working_limit; @@ -3634,32 +3786,114 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_xyz(double dX, double dY, // _calculate_straightline_motion(g_machine.s_machine_config._dXYZSpeed); _send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ); + g_machine.MotionType=EMSG_STOPXYZ_1_MOVETOXYZ; #pragma message("Test settle wait comparing the status bit to the scale monitor") - + TRACE1("Presettle Time: %lf\n", TimeInSecs()); if (bWait) { - const long lSleep = 20; - const long lMaxLoopCnt = 5000/lSleep; // use max homing time of 20 seconds - long lLoopCnt = 0; + INT lSleep = 20; + INT lMaxLoopCnt = MOVETO_TIMEOUT/lSleep; // use max homing time of 20 seconds + INT lLoopCnt = 0; Sleep(lSleep); - BOOL IsFinished(FALSE); + bool IsFinished(FALSE); do { - so7_motion_is_finished(EMSG_STOPXYZ_1_MOVETOXYZ,IsFinished); + so7_Motion_XYZ_IsMotionFinished(IsFinished); Sleep(lSleep); ++lLoopCnt; } while (!IsFinished && lLoopCnt < lMaxLoopCnt); - - TRACE1("Presettle Time: %lf\n", TimeInSecs()); - //WaitForSettleXYZZM(); TRACE1("Postsettle Time: %lf\n", TimeInSecs()); + if (IsFinished) + { + g_machine.MotionType=-1; + return SSI_STATUS_MOTION_NORMAL; + } + else + { + return SSI_STATUS_MOTION_TIMEOUT; + } } - - return SSI_STATUS_MOTION_NORMAL; }; //================================================================== +SSI_STATUS_MOTION CSO7_Proto::so7_Motion_XYZ_IsMotionFinished(bool &bFinished) +{ + if (g_machine.MotionType=1) + { + double dPosX(0.0),dPosY(0.0),dPosZ(0.0); + so7_motion_get_position_xyz(dPosX,dPosY,dPosZ); + if ((fabs(dPosX-g_machine.x._ReCorded_Pos)<=g_machine.s_machine_config.x_axis._motor_precision) + && (fabs(dPosY-g_machine.y._ReCorded_Pos)<=g_machine.s_machine_config.y_axis._motor_precision) + && (fabs(dPosZ-g_machine.z._ReCorded_Pos)<=g_machine.s_machine_config.z_axis._motor_precision)) + { + g_machine.MotionFinishedCnts++; + if (g_machine.MotionFinishedCnts>g_machine.s_machine_config.motion.m_CNC_Deadlock_JudgeMaxCnts) + { + g_machine.MotionFinished=TRUE; + } + else + { + g_machine.MotionFinished=FALSE; + } + } + else + { + g_machine.MotionFinishedCnts=0; + } + g_machine.x._ReCorded_Pos=dPosX; + g_machine.y._ReCorded_Pos=dPosY; + g_machine.z._ReCorded_Pos=dPosZ; + } + else + { + g_machine.MotionFinished=FALSE; + g_machine.MotionFinishedCnts=0; + } + } + return g_machine.MotionFinished; +}; +//================================================================== SSI_STATUS_MOTION CSO7_Proto::so7_motion_is_finished(char MotionType,BOOL& IsFinished) { WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done @@ -3693,9 +3927,97 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_is_finished(char MotionType,BOOL& IsFin // Full Speed -> dPercentSpeed = 100% // Slow Speed -> dPercentSpeed = 20% //======================================================================== -SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_speed_xyz(double dPercentSpeed) +SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_speed_xyz(EMACHINE_AXIS cAxis,char cSpeedGear,char Acce,char cHoldSpeed,char cStartSpeed,char cRefreshCycle,double dBufferDis) { - g_machine.s_machine_config._dXYZSpeed = dPercentSpeed; + char SetSpeedGear(0); + EMACHINE_AXIS SetAXIS(MACHINE_AXIS_NONE); + SetSpeedGear=static_cast(abs(cSpeedGear)); + if (SetSpeedGear>4) + { + SetSpeedGear=4; + } + else if (SetSpeedGear<1) + { + SetSpeedGear=1; + } + SetSpeedGear=4-SetSpeedGear; + if (cAxis==MACHINE_AXIS_R) + { + if (g_machine.s_machine_config.motion.m_RotaryAxisNO==MACHINE_AXIS_X) + { + SetAXIS=MACHINE_AXIS_X; + } + else if (g_machine.s_machine_config.motion.m_RotaryAxisNO==MACHINE_AXIS_Y) + { + SetAXIS=MACHINE_AXIS_Y; + } + else if (g_machine.s_machine_config.motion.m_RotaryAxisNO==MACHINE_AXIS_Z) + { + SetAXIS=MACHINE_AXIS_Z; + } + } + + switch(cAxis) + { + case MACHINE_AXIS_X: + { + g_machine.s_machine_config.x_axis._speed_base[SetSpeedGear]=Acce; + g_machine.s_machine_config.x_axis._speed_max[SetSpeedGear]=cHoldSpeed; + g_machine.s_machine_config.x_axis._speed_start[SetSpeedGear]=cStartSpeed; + g_machine.s_machine_config.x_axis._speed_fresh[SetSpeedGear]=cRefreshCycle; + g_machine.s_machine_config.x_axis._speed_slow_dis[SetSpeedGear]=dBufferDis; + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,SetSpeedGear); + Sleep(MIN_SLEEP_TIME); + break; + } + case MACHINE_AXIS_Y: + { + g_machine.s_machine_config.y_axis._speed_base[SetSpeedGear]=Acce; + g_machine.s_machine_config.y_axis._speed_max[SetSpeedGear]=cHoldSpeed; + g_machine.s_machine_config.y_axis._speed_start[SetSpeedGear]=cStartSpeed; + g_machine.s_machine_config.y_axis._speed_fresh[SetSpeedGear]=cRefreshCycle; + g_machine.s_machine_config.y_axis._speed_slow_dis[SetSpeedGear]=dBufferDis; + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,SetSpeedGear); + Sleep(MIN_SLEEP_TIME); + break; + } + case MACHINE_AXIS_Z: + { + g_machine.s_machine_config.z_axis._speed_base[SetSpeedGear]=Acce; + g_machine.s_machine_config.z_axis._speed_max[SetSpeedGear]=cHoldSpeed; + g_machine.s_machine_config.z_axis._speed_start[SetSpeedGear]=cStartSpeed; + g_machine.s_machine_config.z_axis._speed_fresh[SetSpeedGear]=cRefreshCycle; + g_machine.s_machine_config.z_axis._speed_slow_dis[SetSpeedGear]=dBufferDis; + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,SetSpeedGear); + Sleep(MIN_SLEEP_TIME); + break; + } + case MACHINE_AXIS_ZOOM: + { + if (SetSpeedGear==4) + { + SetSpeedGear=0; + } + else if (SetSpeedGear==3) + { + SetSpeedGear=0; + } + else if (SetSpeedGear==2) + { + SetSpeedGear=1; + } + else if (SetSpeedGear==1) + { + SetSpeedGear=2; + } + g_machine.s_machine_config.zm_axis._speed._char_[0]=cStartSpeed; + g_machine.s_machine_config.zm_axis._speed._char_[1]=cHoldSpeed; + _send_cmd_SO7_CMD_SET_ZOOM_SPEED(SetSpeedGear); + Sleep(MIN_SLEEP_TIME); + break; + } + default:break; + } return SSI_STATUS_MOTION_NORMAL; } @@ -3717,7 +4039,78 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_3D_max_speed(double &dMaxSpeed) return SSI_STATUS_MOTION_NORMAL; } +//======================================================================== +SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_all_speed_para() +{ + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,0); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,1); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,2); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,3); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,4); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,0); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,1); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,2); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,3); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,4); + Sleep(MIN_SLEEP_TIME); + + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,0); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,1); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,2); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,3); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,4); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PRECISION(0); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PRECISION(1); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_SPEED_PRECISION(2); + Sleep(MIN_SLEEP_TIME); + _send_cmd_SO7_CMD_SET_MOTOR_SPEED_WHEELBASE_PARAMETER(); + Sleep(MIN_SLEEP_TIME); + return SSI_STATUS_MOTION_NORMAL; +} +//======================================================================== +SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_all_speed_para() +{ + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 0); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 1); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 2); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 3); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 4); + + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 0); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 1); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 2); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 3); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 4); + + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 0); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 1); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 2); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 3); + _send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 4); + + _send_cmd_SO7_CMD_READ_SPEED_PRECISION(0); + _send_cmd_SO7_CMD_READ_SPEED_PRECISION(1); + _send_cmd_SO7_CMD_READ_SPEED_PRECISION(2); + _send_cmd_SO7_CMD_READ_MOTOR_SPEED_WHEELBASE_PARAMETER(); + return SSI_STATUS_MOTION_NORMAL; +} //======================================================================== SSI_STATUS_MOTION CSO7_Proto::_calculate_straightline_motion(double dSpeedMM) { @@ -3821,8 +4214,8 @@ SSI_STATUS_MOTION CSO7_Proto::so7_light_set_light_off() g_machine.s_lights_value._spare_light1=1; g_machine.s_lights_value.segment[0]=0; g_machine.s_lights_value.segment[1]=0; - _send_cmd_SO7_CMD_SET_ALL_LIGHT_VALUE(); + Sleep(3*MIN_SLEEP_TIME); return SSI_STATUS_MOTION_NORMAL; }; @@ -3833,36 +4226,41 @@ SSI_STATUS_MOTION CSO7_Proto::so7_light_set_light() WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done _send_cmd_SO7_CMD_SET_ALL_LIGHT_VALUE(); + Sleep(3*MIN_SLEEP_TIME); return SSI_STATUS_MOTION_NORMAL; }; //================================================================== -SSI_STATUS_MOTION CSO7_Proto::so7_light_set_lamp_state(double dBottomPercent, double dTopPercent) +SSI_STATUS_MOTION CSO7_Proto::so7_light_set_lamp_state(double dTopLightPercent,double dBottomLightPercent,double dCoaxialLightPercent,double dReservedLightPercent,double dRingLightPercent,char cOuterRingLightSwitch,char cInnerRingLightSwitch) { - WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done - if(!g_pLog) - g_pLog=new CLogger(_T("\\Lamp.Log")); - g_machine.s_lights_value._top_light = (static_cast(dTopPercent* (MAXLIGHTVALUE)/100.0 ))+1; - g_machine.s_lights_value._bottom_light = (static_cast(dBottomPercent*(MAXLIGHTVALUE)/100.0))+1; - g_pLog->SendAndFlushPerMode(_T("dBottomPercent: %f dTopPercent: %f\n"),dBottomPercent,dTopPercent); - g_pLog->SendAndFlushPerMode(_T("so7_light_set_lamp_state bottom: %d top: %d\n"), g_machine.s_lights_value._bottom_light,g_machine.s_lights_value._top_light); - TRACE2("so7_light_set_lamp_state bottom: %d top: %d\n", - g_machine.s_lights_value._bottom_light,g_machine.s_lights_value._top_light); - delete g_pLog; - g_pLog=NULL; + WaitForSingleObject(g_hHomedEvent, INFINITE); + g_machine.s_lights_value._bottom_light = (static_cast(dTopLightPercent* (MAXLIGHTVALUE-MINLIGHTVALUE)/100.0 ))+MINLIGHTVALUE; + g_machine.s_lights_value._top_light = (static_cast(dBottomLightPercent*(MAXLIGHTVALUE-MINLIGHTVALUE)/100.0))+MINLIGHTVALUE; + g_machine.s_lights_value._ring_light = (static_cast(dRingLightPercent*(MAXLIGHTVALUE-MINLIGHTVALUE)/100.0))+MINLIGHTVALUE; + g_machine.s_lights_value._coaxial_light = (static_cast(dCoaxialLightPercent*(MAXLIGHTVALUE-MINLIGHTVALUE)/100.0))+MINLIGHTVALUE; + g_machine.s_lights_value._spare_light1 = (static_cast(dReservedLightPercent*(MAXLIGHTVALUE-MINLIGHTVALUE)/100.0))+MINLIGHTVALUE; + g_machine.s_lights_value.segment[0] = cOuterRingLightSwitch; + g_machine.s_lights_value.segment[1] = cInnerRingLightSwitch; + _send_cmd_SO7_CMD_SET_ALL_LIGHT_VALUE(); + Sleep(3*MIN_SLEEP_TIME); + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("so7_light_set_lamp_state:TOP:%d,BOT:%d,COAXIAL:%d,RESERVED:%d,RING:%d,ORING:%d,IRING:%d.\n") + ,(BYTE)g_machine.s_lights_value._bottom_light,(BYTE)g_machine.s_lights_value._top_light,(BYTE)g_machine.s_lights_value._coaxial_light + ,(BYTE)g_machine.s_lights_value._spare_light1,(BYTE)g_machine.s_lights_value._ring_light,(BYTE)g_machine.s_lights_value.segment[0] + ,(BYTE)g_machine.s_lights_value.segment[1]); + } return SSI_STATUS_MOTION_NORMAL; }; - - -//**********************************************************************// -//**********************************************************************// +//********************************************************************************// +//*******************************************************************************// //================================================================================== -//============================================================== +//================================================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_X(char SpeedGear) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); @@ -4539,6 +4937,12 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(char Cmd,cha WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); + if (g_machine.s_machine_config.motion.m_DebugOutputEnable>=1) + { + g_pLogger->SendAndFlushWithTime(_T("SEND_SYS_COMMAND:Cmd:%d,BOT:%d,SubCmd:%d,Type:%d,Data:%d.\n") + ,Cmd,SubCmd,Type,Data); + } + *(ep_buff[EP_02_CMD_IDX]._buffer) = Cmd; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = SubCmd; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = Type; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h index f8ace27..33c6624 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h @@ -60,16 +60,6 @@ const long MAX_INTENSITY = 0x3FF; #define MAXLIGHTVALUE 255 #define MINLIGHTVALUE 1 -enum MACHINE_AXIS -{ - MACHINE_AXIS_NONE = 0, - MACHINE_AXIS_X, - MACHINE_AXIS_Y, - MACHINE_AXIS_Z, - MACHINE_AXIS_ZOOM, - MACHINE_AXIS_R, - MACHINE_AXIS_ALL = 5 -}; enum EMACHINETYPE { MACHINE_SO7_CONTROLLER, @@ -82,6 +72,19 @@ enum EFirmwareVer FirmwareVer_6_X, FirmwareVer_Total }; +enum ESO7_AXIS_TYPE +{ + E_AXIS_Y=1, + E_AXIS_X=2, + E_AXIS_Z=3 +}; +enum ESO7_WRITE_FPGA_DATA_ADDR +{ + E_WRITE_MOTOR_FLAG=9, + E_WRITE_EQUIDISTANCE=10, + E_WRITE_ACCURA_ERR=11, + E_WRITE_TOTAL=16 +}; enum ESO7_CONTROLLER_IO_ADDR { ESO7_CONTROLLER_INPUT_PORT_ADDR=5, @@ -123,6 +126,7 @@ typedef struct s_so7_axis // axis parameters long _scale_probe; double _dSet_Zero_Pos; long _lSet_Zero_Pos; + double _ReCorded_Pos; } SO7AXIS; struct s_so7_axis_config // axis configuration { @@ -265,6 +269,8 @@ struct struct_so7_machine double dRotaryCirclDis; char SEQ_NUMBER; char MotionType; + int MotionFinishedCnts; + BOOL MotionFinished; struct s_so7_axis x; struct s_so7_axis y; struct s_so7_axis z; @@ -394,8 +400,11 @@ public: SSI_STATUS_MOTION ExtractAppPath(CString &Path); SSI_STATUS_MOTION so7_motion_startup(double x_scale_resolution, double y_scale_resolution, double z_scale_resolution); + SSI_STATUS_MOTION so7_motion_init_firmware_para(); + bool so7_motion_is_homed(); SSI_STATUS_MOTION so7_motion_Dcc_Home(); + SSI_STATUS_MOTION so7_motion_Dcc_HomeXYZ(char cHomeMachineMode=1); SSI_STATUS_MOTION so7_motion_Dcc_Home_R(); SSI_STATUS_MOTION so7_Motion_R_IsHomed(bool &bHomed); SSI_STATUS_MOTION so7_Motion_R_IsMotionFInished(bool &bFinished); @@ -414,7 +423,10 @@ public: SSI_STATUS_MOTION _get_xyz_index(long & lX, long & lY, long & lZ); SSI_STATUS_MOTION so7_motion_get_position_xyz(double & dX, double & dY, double & dZ); SSI_STATUS_MOTION so7_motion_set_position_xyz(double dX, double dY, double dZ, bool bWait); - SSI_STATUS_MOTION so7_motion_set_speed_xyz(double dPercentSpeed); + SSI_STATUS_MOTION so7_Motion_XYZ_IsMotionFinished(bool &bFinished); + BOOL IsMotionFinishedManual(BOOL _BResetCnts=FALSE); + + SSI_STATUS_MOTION so7_motion_set_speed_xyz(EMACHINE_AXIS cAxis,char cSpeedGear,char Acce,char cHoldSpeed,char cStartSpeed,char cRefreshCycle,double dBufferDis); SSI_STATUS_MOTION so7_motion_get_speed_xyz(double &dPercentSpeed); SSI_STATUS_MOTION so7_motion_set_position_R(double dR,bool bWait); SSI_STATUS_MOTION so7_motion_get_position_R(double & dR); @@ -423,6 +435,10 @@ public: SSI_STATUS_MOTION so7_motion_get_3D_max_speed(double &dMaxSpeed); SSI_STATUS_MOTION so7_motion_is_finished(char MotionType,BOOL& IsFinished); + SSI_STATUS_MOTION so7_motion_set_all_speed_para(); + SSI_STATUS_MOTION so7_motion_get_all_speed_para(); + + SSI_STATUS_MOTION _calculate_straightline_motion(double dSpeedMM); SSI_STATUS_MOTION so7_optics_set_scale_position(long lScale); @@ -434,7 +450,7 @@ public: SSI_STATUS_MOTION so7_light_set_light_off(); SSI_STATUS_MOTION so7_light_set_light(); - SSI_STATUS_MOTION so7_light_set_lamp_state(double dBottomPercent, double dTopPercent); + SSI_STATUS_MOTION so7_light_set_lamp_state(double dTopLightPercent,double dBottomLightPercent,double dCoaxialLightPercent,double dReservedLightPercent,double dRingLightPercent,char cOuterRingLightSwitch,char cInnerRingLightSwitch); SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_X(char SpeedGear); SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_Y(char SpeedGear); diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log index 8a5a8f6..2f93d0b 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log @@ -4539,3 +4539,5 @@ _start_machine Construct Cso7_Proto. Init:Open device succeed . _start_machine +Usb Port Initialized. +Usb Port Initialized. diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/so7_config.ini b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/so7_config.ini index 2f7988d..821436a 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/so7_config.ini +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/so7_config.ini @@ -1,23 +1,11 @@ -[7OCEANAUTOZOOM] -ZOOM_PRODUCT_ID=So7123456 -ZOOM_COM_PORT=1 -ZOOM_START_DEG=0.000000 -ZOOM_END_DEG=0.000000 -ZOOM_ORG_DEG=0.000000 -ZOOM_DEADBAND_DEG=0.100000 -ZOOM_PULSE_PER_DEG=25.134736064968621 -ZOOM_READING_INTERVAL_TIME=60 -ZOOM_MOTOR_SPEED_FAST=2000 -ZOOM_MOTOR_SPEED_SLOW=800 -; [CONTROLLER] -CLOSE_LOOP_ENABLED=0 -MOTION_RETRY_TIMES=0 -SHIFT_POSITION_X=0.000000 -SHIFT_POSITION_Y=0.000000 -SHIFT_POSITION_Z=0.000000 GET_USB_MESSAGE_METHOD=1 WRITE_DATA_SLEEP_TIME=0 +TOUCH_PROBE_ENABLE=0 +JOYSTICK_ENABLE=0 +DEBUG_LOG_ENABLE=0 +; +[Motion] ACCURA_ERROR_PULSE_X=1 ACCURA_ERROR_PULSE_Y=1 ACCURA_ERROR_PULSE_Z=1 @@ -26,18 +14,8 @@ EQUIDISTANCE_PULSE_Y=0 EQUIDISTANCE_PULSE_Z=0 CNC_DEADLOCK_SOLUTION=1 CNC_DEADLOCK_MAX_CNTS=6 -TOUCH_PROBE_ENABLE=0 -JOYSTICK_ENABLE=0 -DEBUG_LOG_ENABLE=0 -; -[VIDEOCARD] -SDK3000_SLEEP_COUNT=550000 -SV4000E_DENOISE_PARA_CHANNEL1=70 -SV4000E_DENOISE_PARA_CHANNEL2=70 -SV4000E_DENOISE_PARA_CHANNEL3=70 -SV4000E_DENOISE_PARA_CHANNEL4=70 -; -[HSI] -MACHINE_CONTROLLER_TYPE=0 -MACHINE_VIDEOCARD_TYPE=0 -; +X_SCALE_RESOLUTION=0.500 +Y_SCALE_RESOLUTION=0.500 +Z_SCALE_RESOLUTION=0.500 +ROTARY_AXIS_NUMBER=2 +ROTARY_CIR_DIS=7.2 \ No newline at end of file diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/LOGGER.CPP b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/LOGGER.CPP index 952bb86..d7da1b8 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/LOGGER.CPP +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/LOGGER.CPP @@ -48,7 +48,26 @@ void CLogger::SendAndFlush(LPCTSTR format, ...) m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); } } - +void CLogger::SendAndFlushWithTime(LPCTSTR format, ...) +{ + if (!m_File) + { + m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); + } + if(m_File) + { + int length = 0; + va_list list; + va_start(list, format); + length = vswprintf_s(m_Str2,5000, format, list); + CTime _cTime=CTime::GetCurrentTime(); + CString csTime=_cTime.Format("[%m/%d %H:%M:%S] "); + _ftprintf(m_File, _T("%s"), csTime); + _ftprintf(m_File, m_Str2); + fclose(m_File); + m_File = NULL; + } +} void CLogger::SendAndFlushPerMode(LPCTSTR format, ...) { int length = 0; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.cpp index b1ff369..2262ec4 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.cpp @@ -16,6 +16,469 @@ CEF8000_Interface* m_pEF8000_Interface=NULL; CSO7_Proto* m_pSO7_Proto=NULL; bool g_bOfflineOnly(false); +EMACHINE_AXIS ActiveAxis=MACHINE_AXIS_NONE; +SSI_STATUS_MOTION LoadMotionParameter(); + +//================================================================== +extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Machine_Startup(bool bOfflineOnly,EHOME_MACHINE_MODE cHomeMachineMode) +{ + SSI_STATUS_MOTION rStatus=SSI_STATUS_MOTION_NORMAL; + g_bOfflineOnly=bOfflineOnly; + if (!g_bOfflineOnly) + { + if (!m_pSO7_Proto) + { + m_pSO7_Proto=new CSO7_Proto(); + } + rStatus=m_pSO7_Proto->Load_So7_Config(); + if (rStatus==SSI_STATUS_MOTION_NORMAL) + { + rStatus=m_pSO7_Proto->Init_SO7Usb(); + if (rStatus==SSI_STATUS_MOTION_NORMAL) + { + m_pSO7_Proto->_start_machine(); + rStatus=LoadMotionParameter(); + if (rStatus==SSI_STATUS_MOTION_NORMAL) + { + m_pSO7_Proto->so7_motion_set_all_speed_para(); + m_pSO7_Proto->so7_motion_init_firmware_para(); + + switch (cHomeMachineMode) + { + case HOME_R: + { + m_pSO7_Proto->so7_motion_Dcc_Home_R(); + break; + } + case HOME_XYZ: + case HOME_X: + case HOME_Y: + case HOME_Z: + case HOME_XY: + case HOME_XZ: + case HOME_YZ: + { + m_pSO7_Proto->so7_motion_Dcc_HomeXYZ(static_cast(cHomeMachineMode)); + break; + } + default: + { + break; + } + } + } + } + } + } + return rStatus; +} +//================================================================== +extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Machine_Shutdown() +{ + if (m_pEF8000_Interface) + { + delete m_pEF8000_Interface; + m_pEF8000_Interface=nullptr; + } + if (m_pSO7_Proto) + { + m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); + Sleep(10); + m_pSO7_Proto->so7_light_set_light_off(); + if(m_pSO7_Proto->g_machine.IsSupportReadInterrputMsg) + { + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_GET_INTERRUPT_MSG_METHOD(E_GET_INTERRUPT_MSG_INTERRUPT); + } + m_pSO7_Proto->_shutdown_machine(); + m_pSO7_Proto->Exit_SO7Usb(); + delete m_pSO7_Proto; + m_pSO7_Proto=nullptr; + } + return SSI_STATUS_MOTION_NORMAL; +} + +/**************************Motion**********************************/ +EXP_IMP SSI_STATUS_MOTION WINAPI Motion_DCCHomeXYZ(EHOME_MACHINE_MODE cHomeMachineMode) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_motion_Dcc_HomeXYZ(static_cast(cHomeMachineMode)); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsHomedXYZ(bool &bHomed) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + bHomed=m_pSO7_Proto->so7_motion_is_homed(); + return SSI_STATUS_MOTION_NORMAL; + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +EXP_IMP SSI_STATUS_MOTION WINAPI Motion_GetPositionXYZ(double &PositionX, double &PositionY, double &PositionZ) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_motion_get_position_xyz(PositionX,PositionY,PositionZ); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +EXP_IMP SSI_STATUS_MOTION WINAPI Motion_SetPositionXYZ(double PositionX, double PositionY, double PositionZ,bool bWait) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_motion_set_position_xyz(PositionX,PositionY,PositionZ,bWait); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsFinishedXYZ(bool &bFinished) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_Motion_XYZ_IsMotionFinished(bFinished); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +EXP_IMP SSI_STATUS_MOTION WINAPI Motion_SetSpeedXYZ(EMACHINE_AXIS cAxis,char cSpeedGear,char Acce,char cHoldSpeed,char cStartSpeed,char cRefreshCycle,double dBufferDis) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_motion_set_speed_xyz(cAxis,cSpeedGear,Acce,cRefreshCycle,cStartSpeed,cHoldSpeed,dBufferDis); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} + +//SpeedGear:1,2,3,4(Faster) +EXP_IMP SSI_STATUS_MOTION WINAPI Motion_Jog(EMACHINE_AXIS cAxis,char cSpeedGear) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + if (abs(cSpeedGear)>4) + { + if (cSpeedGear>0) + { + cSpeedGear=4; + } + else + { + cSpeedGear=-4; + } + } + if (abs(cSpeedGear)<1) + { + cSpeedGear=1; + } + ActiveAxis=cAxis; + switch (cAxis) + { + case MACHINE_AXIS_X: + { + return m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_X(cSpeedGear); + break; + } + case MACHINE_AXIS_Y: + { + return m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Y(cSpeedGear); + break; + } + case MACHINE_AXIS_Z: + { + return m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Z(cSpeedGear); + break; + } + case MACHINE_AXIS_ZOOM: + { + if (abs(cSpeedGear)==4) + { + if (cSpeedGear>0) + { + cSpeedGear=5; + } + else + { + cSpeedGear=-5; + } + } + else if (abs(cSpeedGear)==3) + { + if (cSpeedGear>0) + { + cSpeedGear=5; + } + else + { + cSpeedGear=-5; + } + } + else if (abs(cSpeedGear)==2) + { + if (cSpeedGear>0) + { + cSpeedGear=1; + } + else + { + cSpeedGear=-1; + } + } + else if (abs(cSpeedGear)==1) + { + if (cSpeedGear>0) + { + cSpeedGear=2; + } + else + { + cSpeedGear=-2; + } + } + return m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_ZM(cSpeedGear); + break; + } + case MACHINE_AXIS_R: + { + return m_pSO7_Proto->so7_motion_move_R(cSpeedGear); + break; + } + default: + { + return SSI_STATUS_MOTION_INVALID_PARAMETERS; + break; + } + } + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +EXP_IMP SSI_STATUS_MOTION WINAPI Motion_Stop() +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + if (ActiveAxis==MACHINE_AXIS_ZOOM) + { + return m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_V(); + } + else + { + return m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); + } + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} + +/**************************Rotary Table****************************/ +//================================================================== +extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_GetPositionR(double& dPos) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_motion_get_position_R(dPos); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +//================================================================== +extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_SetPositionR(double dAbsolutePos,bool bWait) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_motion_set_position_R(dAbsolutePos,bWait); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +//================================================================== +extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_DCCHomeR() +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_motion_Dcc_Home_R(); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} + +//================================================================== +extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsHomedR(bool &bHomed) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_Motion_R_IsHomed(bHomed); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +//================================================================== +extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsFinishedR(bool &bFinished) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_Motion_R_IsMotionFInished(bFinished); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +/*******************************************************************/ +EXP_IMP SSI_STATUS_MOTION WINAPI Illumination_SetLampState(double dTopLightPercent,double dBottomLightPercent,double dCoaxialLightPercent,double dReservedLightPercent,double dRingLightPercent,char cOuterRingLightSwitch,char cInnerRingLightSwitch) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->so7_light_set_lamp_state(dTopLightPercent,dBottomLightPercent,dCoaxialLightPercent,dReservedLightPercent,dRingLightPercent,cOuterRingLightSwitch,cInnerRingLightSwitch); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} +EXP_IMP SSI_STATUS_MOTION WINAPI SEND_SYS_COMMAND(char Cmd,char SubCmd,char Type,char Data) +{ + if (!g_bOfflineOnly) + { + if (m_pSO7_Proto) + { + return m_pSO7_Proto->_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(Cmd,SubCmd,Type,Data); + } + else + { + return SSI_STATUS_MACHINE_UNINITIALIZED; + } + } + else + { + return SSI_STATUS_MOTION_NORMAL; + } +} //================================================================== SSI_STATUS_MOTION LoadMotionParameter() @@ -73,173 +536,3 @@ SSI_STATUS_MOTION LoadMotionParameter() return SSI_STATUS_MOTOR_DAT_FILE_NOT_FOUND; } } -//================================================================== -extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Machine_Startup(bool bOfflineOnly,bool bDCCHome) -{ - SSI_STATUS_MOTION rStatus=SSI_STATUS_MOTION_NORMAL; - g_bOfflineOnly=bOfflineOnly; - if (!g_bOfflineOnly) - { - if (!m_pSO7_Proto) - { - m_pSO7_Proto=new CSO7_Proto(); - } - rStatus=m_pSO7_Proto->Init_SO7Usb(); - if (rStatus==SSI_STATUS_MOTION_NORMAL) - { - m_pSO7_Proto->_start_machine(); - rStatus=m_pSO7_Proto->Load_So7_Config(); - if (rStatus==SSI_STATUS_MOTION_NORMAL) - { - rStatus=LoadMotionParameter(); - if (rStatus==SSI_STATUS_MOTION_NORMAL) - { - m_pSO7_Proto->_send_cmd_SO7_CMD_GET_RESET_FLAG(); - if(m_pSO7_Proto->g_machine.IsSupportReadInterrputMsg) - { - m_pSO7_Proto->_send_cmd_SO7_CMD_READ_FIRMWARE_VERSION_INFO(); - } - if (bDCCHome) - { - m_pSO7_Proto->so7_motion_Dcc_Home_R(); - } - } - } - } - } - return rStatus; -} -//================================================================== -extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Machine_Sutdown() -{ - if (m_pEF8000_Interface) - { - delete m_pEF8000_Interface; - m_pEF8000_Interface=nullptr; - } - if (m_pSO7_Proto) - { - if(m_pSO7_Proto->g_machine.IsSupportReadInterrputMsg) - { - m_pSO7_Proto->_send_cmd_SO7_CMD_SET_GET_INTERRUPT_MSG_METHOD(E_GET_INTERRUPT_MSG_INTERRUPT); - } - m_pSO7_Proto->_shutdown_machine(); - m_pSO7_Proto->Exit_SO7Usb(); - delete m_pSO7_Proto; - m_pSO7_Proto=nullptr; - } - return SSI_STATUS_MOTION_NORMAL; -} -//================================================================== -extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_GetPositionR(double& dPos) -{ - if (!g_bOfflineOnly) - { - if (!m_pSO7_Proto) - { - m_pSO7_Proto=new CSO7_Proto(); - } - return m_pSO7_Proto->so7_motion_get_position_R(dPos); - } - else - { - return SSI_STATUS_MOTION_NORMAL; - } -} -//================================================================== -extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_SetPositionR(double dAbsolutePos,bool bWait) -{ - if (!g_bOfflineOnly) - { - if (!m_pSO7_Proto) - { - m_pSO7_Proto=new CSO7_Proto(); - } - return m_pSO7_Proto->so7_motion_set_position_R(dAbsolutePos,bWait); - } - else - { - return SSI_STATUS_MOTION_NORMAL; - } -} -//================================================================== -extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_DCCHome() -{ - if (!g_bOfflineOnly) - { - if (!m_pSO7_Proto) - { - m_pSO7_Proto=new CSO7_Proto(); - } - return m_pSO7_Proto->so7_motion_Dcc_Home_R(); - } - else - { - return SSI_STATUS_MOTION_NORMAL; - } -} - -//================================================================== -extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsHomed(bool &bHomed) -{ - if (!g_bOfflineOnly) - { - if (!m_pSO7_Proto) - { - m_pSO7_Proto=new CSO7_Proto(); - } - return m_pSO7_Proto->so7_Motion_R_IsHomed(bHomed); - } - else - { - return SSI_STATUS_MOTION_NORMAL; - } -} -//================================================================== -extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsFinished(bool &bFinished) -{ - if (!g_bOfflineOnly) - { - if (!m_pSO7_Proto) - { - m_pSO7_Proto=new CSO7_Proto(); - } - return m_pSO7_Proto->so7_Motion_R_IsMotionFInished(bFinished); - } - else - { - return SSI_STATUS_MOTION_NORMAL; - } -} -//================================================================== -extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_JogR(char cSpeedGear) -{ - if (!g_bOfflineOnly) - { - if (!m_pSO7_Proto) - { - m_pSO7_Proto=new CSO7_Proto(); - } - return m_pSO7_Proto->so7_motion_move_R(cSpeedGear); - } - else - { - return SSI_STATUS_MOTION_NORMAL; - } -} -//================================================================== -extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_StopR() -{ - if (!g_bOfflineOnly) - { - if (!m_pSO7_Proto) - { - m_pSO7_Proto=new CSO7_Proto(); - } - return m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); - } - else - { - return SSI_STATUS_MOTION_NORMAL; - } -} diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.h index e95c4e4..a2e0325 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.h @@ -6,6 +6,29 @@ #define EXP_IMP __declspec(dllimport) #endif +enum EMACHINE_AXIS +{ + MACHINE_AXIS_NONE = 0, + MACHINE_AXIS_X, + MACHINE_AXIS_Y, + MACHINE_AXIS_Z, + MACHINE_AXIS_ZOOM, + MACHINE_AXIS_R, + MACHINE_AXIS_ALL = 5 +}; +enum EHOME_MACHINE_MODE +{ + HOME_NONE, + HOME_XYZ=1, + HOME_X=10, + HOME_Y, + HOME_Z, + HOME_XY=20, + HOME_XZ, + HOME_YZ, + HOME_R=30, + HOME_TOATAL=255 +}; enum SSI_STATUS_MOTION { SSI_STATUS_MOTION_NORMAL = 0, @@ -15,23 +38,40 @@ enum SSI_STATUS_MOTION SSI_STATUS_MOTION_TIMEOUT, SSI_STATUS_SO7_CONFIG_FILE_NOT_FOUND, SSI_STATUS_MOTOR_DAT_FILE_NOT_FOUND, + SSI_STATUS_MACHINE_UNINITIALIZED, SSI_STATUS_UNKNOWN_ERROR }; extern "C" { - /////////////////////////////////////////////// - EXP_IMP SSI_STATUS_MOTION WINAPI Machine_Startup(bool bOfflineOnly,bool bDCCHome); - EXP_IMP SSI_STATUS_MOTION WINAPI Machine_Sutdown(); + /////////////////////////////////////////////////////////////////////////////////// + EXP_IMP SSI_STATUS_MOTION WINAPI Machine_Startup(bool bOfflineOnly,EHOME_MACHINE_MODE cHomeMachineMode); + EXP_IMP SSI_STATUS_MOTION WINAPI Machine_Shutdown(); + //================================================================================= + //===============================Motion============================================ + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_DCCHomeXYZ(EHOME_MACHINE_MODE cHomeMachineMode); + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsHomedXYZ(bool &bHomed); + //Units:mm + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_GetPositionXYZ(double &PositionX, double &PositionY, double &PositionZ); + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_SetPositionXYZ(double PositionX, double PositionY, double PositionZ,bool bWait); + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsFinishedXYZ(bool &bFinished); + //SpeedGear:1,2,3,4(Faster) + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_SetSpeedXYZ(EMACHINE_AXIS cAxis,char cSpeedGear,char Acce,char cHoldSpeed,char cStartSpeed,char cRefreshCycle,double dBufferDis); + + //SpeedGear:1,2,3,4(Faster) + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_Jog(EMACHINE_AXIS cAxis,char cSpeedGear); + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_Stop(); + //===================================Rotary Table================================== + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_DCCHomeR(); + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsHomedR(bool &bHomed); //Units:Rad EXP_IMP SSI_STATUS_MOTION WINAPI Motion_GetPositionR(double& dPos); EXP_IMP SSI_STATUS_MOTION WINAPI Motion_SetPositionR(double dAbsolutePos,bool bWait); - - EXP_IMP SSI_STATUS_MOTION WINAPI Motion_DCCHome(); - EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsHomed(bool &bHomed); - EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsFinished(bool &bFinished); - //SpeedGear:1,2,3,4(Faster) - EXP_IMP SSI_STATUS_MOTION WINAPI Motion_JogR(char cSpeedGear); - EXP_IMP SSI_STATUS_MOTION WINAPI Motion_StopR(); + EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsFinishedR(bool &bFinished); + //==============================Illumination======================================= + //Range value:0.0-100.0 + EXP_IMP SSI_STATUS_MOTION WINAPI Illumination_SetLampState(double dTopLightPercent,double dBottomLightPercent,double dCoaxialLightPercent,double dReservedLightPercent,double dRingLightPercent,char cOuterRingLightSwitch,char cInnerRingLightSwitch); + //==============================CMD================================================ + EXP_IMP SSI_STATUS_MOTION WINAPI SEND_SYS_COMMAND(char Cmd,char SubCmd,char Type,char Data); } \ No newline at end of file diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.rc b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.rc new file mode 100644 index 0000000..0143fa6 Binary files /dev/null and b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.rc differ diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj index 12b4b2c..3f4a3b1 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj @@ -80,23 +80,27 @@ - + + - + Create Create + + + diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj.filters b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj.filters index 0a4421b..ee33359 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj.filters +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj.filters @@ -33,7 +33,10 @@ 澶存枃浠 - + + 澶存枃浠 + + 澶存枃浠 @@ -50,8 +53,13 @@ 婧愭枃浠 - + 婧愭枃浠 + + + 璧勬簮鏂囦欢 + + \ No newline at end of file diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj.user b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj.user index d82205c..896ef3b 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj.user +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.vcxproj.user @@ -1,7 +1,8 @@ 锘 - E:\Tony\MachineInterfaceUtility\PcDmis\Base\Interfac\Msi\Hsi\Tools\UsbUtility\Debug\Win32TestDll.exe + + WindowsLocalDebugger \ No newline at end of file diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/resource.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/resource.h new file mode 100644 index 0000000..79381f9 --- /dev/null +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/resource.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by MachineInterfaceDll.rc + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo index 648196c..5cbc5f8 100644 Binary files a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo and b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo differ diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Win32TestDll/Win32TestDll.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Win32TestDll/Win32TestDll.cpp index 9f88fe1..a151e49 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Win32TestDll/Win32TestDll.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Win32TestDll/Win32TestDll.cpp @@ -2,19 +2,169 @@ // #include "stdafx.h" +#include #include "..\MachineInterfaceDll\MachineInterfaceDll.h" +void ShowMessage(SSI_STATUS_MOTION status); int _tmain(int argc, _TCHAR* argv[]) { - SSI_STATUS_MOTION status=Machine_Startup(false,false); - double dPos(0.0); - bool bb; - status=Motion_GetPositionR(dPos); - status=Motion_SetPositionR(dPos,true); - status=Motion_IsHomed(bb); - status=Motion_IsFinished(bb); - status=Motion_MoveR(1); - status=Machine_Sutdown(); + SSI_STATUS_MOTION status=Machine_Startup(false,HOME_NONE); + printf("Machine_Startup:"); + ShowMessage(status); + //================================================================================= + //===============================Motion============================================ + bool bHomed(false); + status=Motion_IsHomedXYZ(bHomed); + printf("Motion_IsHomedXYZ:"); + ShowMessage(status); + if (!bHomed) + { + status=Motion_DCCHomeXYZ(HOME_XYZ); + printf("Motion_IsHomedXYZ:"); + ShowMessage(status); + do + { + Sleep(20); + status=Motion_IsHomedXYZ(bHomed); + printf("Motion_IsHomedXYZ:"); + ShowMessage(status); + } while (!bHomed); + } + status=Motion_Jog(MACHINE_AXIS_X,3); + printf("Motion_Jog:"); + ShowMessage(status); + Sleep(3000); + status=Motion_Stop(); + printf("Motion_Stop:"); + ShowMessage(status); + + status=Motion_Jog(MACHINE_AXIS_Y,3); + printf("Motion_Jog:"); + ShowMessage(status); + Sleep(3000); + status=Motion_Stop(); + printf("Motion_Stop:"); + ShowMessage(status); + + status=Motion_Jog(MACHINE_AXIS_Z,-3); + printf("Motion_Jog:"); + ShowMessage(status); + Sleep(3000); + status=Motion_Stop(); + printf("Motion_Stop:"); + ShowMessage(status); + + double PositionX,PositionY,PositionZ; + status=Motion_GetPositionXYZ(PositionX,PositionY,PositionZ); + printf("Motion_GetPositionXYZ:%.4f,%.4f.%.4f;\r\n",PositionX,PositionY,PositionZ); + PositionX=0.0; + PositionY=0.0; + PositionZ=0.0; + printf("Motion_SetPositionXYZ:%.4f,%.4f.%.4f;\r\n",PositionX,PositionY,PositionZ); + status=Motion_SetPositionXYZ(PositionX,PositionY,PositionZ,true); + + status=Motion_GetPositionXYZ(PositionX,PositionY,PositionZ); + printf("Motion_GetPositionXYZ:%.4f,%.4f.%.4f;\r\n",PositionY,PositionX,PositionZ); + + //status=Motion_IsFinishedXYZ(bool &bFinished); + status=Motion_Jog(MACHINE_AXIS_X,-3); + printf("Motion_Jog:"); + ShowMessage(status); + Sleep(3000); + status=Motion_Stop(); + printf("Motion_Stop:"); + ShowMessage(status); + status=Motion_SetSpeedXYZ(MACHINE_AXIS_X,3,20,20,20,3,0.01); + printf("Motion_SetSpeedXYZ:"); + ShowMessage(status); + status=Motion_Jog(MACHINE_AXIS_X,3); + printf("Motion_Jog:"); + ShowMessage(status); + Sleep(3000); + status=Motion_Stop(); + printf("Motion_Stop:"); + ShowMessage(status); + + //===================================Rotary Table================================== + //Motion_DCCHomeR(); + //Motion_IsHomedR(bool &bHomed); + ////Units:Rad + //Motion_GetPositionR(double& dPos); + //Motion_SetPositionR(double dAbsolutePos,bool bWait); + //Motion_IsFinishedR(bool &bFinished); + //==============================Illumination======================================= + //Range value:0.0-100.0 + status=Illumination_SetLampState(0,100,0,0,0,0,0); + printf("Illumination_SetLampState:"); + ShowMessage(status); + Sleep(1000); + status=Illumination_SetLampState(100,0,0,0,0,0,0); + printf("Illumination_SetLampState:"); + ShowMessage(status); + Sleep(1000); + status=Illumination_SetLampState(100,100,0,0,0,0,0); + printf("Illumination_SetLampState:"); + ShowMessage(status); + Sleep(1000); + + //==============================CMD================================================ + //SEND_SYS_COMMAND(char Cmd,char SubCmd,char Type,char Data); + status=Machine_Shutdown(); + printf("Machine_Shutdown:"); + ShowMessage(status); + printf("Press any key to exit\r\n"); + _getch(); return 0; } +void ShowMessage(SSI_STATUS_MOTION status) +{ + switch(status) + { + case SSI_STATUS_MOTION_NORMAL: + { + printf("SSI_STATUS_MOTION_NORMAL.\r\n"); + break; + } + case SSI_STATUS_MOTION_DATALINK_ERROR: + { + printf("SSI_STATUS_MOTION_DATALINK_ERROR.\r\n"); + break; + } + case SSI_STATUS_MOTION_LIMIT_REACHED: + { + printf("SSI_STATUS_MOTION_LIMIT_REACHED.\r\n"); + break; + } + case SSI_STATUS_MOTION_INVALID_PARAMETERS: + { + printf("SSI_STATUS_MOTION_INVALID_PARAMETERS.\r\n"); + break; + } + case SSI_STATUS_MOTION_TIMEOUT: + { + printf("SSI_STATUS_MOTION_TIMEOUT.\r\n"); + break; + } + case SSI_STATUS_SO7_CONFIG_FILE_NOT_FOUND: + { + printf("SSI_STATUS_SO7_CONFIG_FILE_NOT_FOUND.\r\n"); + break; + } + case SSI_STATUS_MOTOR_DAT_FILE_NOT_FOUND: + { + printf("SSI_STATUS_MOTOR_DAT_FILE_NOT_FOUND.\r\n"); + break; + } + case SSI_STATUS_MACHINE_UNINITIALIZED: + { + printf("SSI_STATUS_MACHINE_UNINITIALIZED.\r\n"); + break; + } + case SSI_STATUS_UNKNOWN_ERROR: + { + printf("SSI_STATUS_UNKNOWN_ERROR.\r\n"); + break; + } + } +} diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/logger.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/logger.h index 77b3188..0caa431 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/logger.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/logger.h @@ -46,6 +46,7 @@ public: void Send(LPCTSTR, ...); void SendAndFlush(LPCTSTR, ...); void SendAndFlushPerMode(LPCTSTR, ...); + void SendAndFlushWithTime(LPCTSTR, ...); CString m_FileName; long m_lLogMask; FILE *m_File;