From d1cf3135110d9505046a370df8d0b562441587c9 Mon Sep 17 00:00:00 2001 From: TAO Cheng Date: Fri, 25 Apr 2014 17:23:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BAXYZ?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=AF=BC=E5=87=BA=E7=81=AF=E5=85=89=E8=B0=83=E8=8A=82?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=AE=8C=E5=96=84debug=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=BE=93=E5=87=BA=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Base/Interfac/Msi/Hsi/MicroVu/LOGGER.CPP | 54 -- .../Interfac/Msi/Hsi/MicroVu/Mv_Proto.cpp | 4 +- .../Base/Interfac/Msi/Hsi/MicroVu/Mv_Proto.h | 2 +- PcDmis/Base/Interfac/Msi/Hsi/MicroVu/logger.h | 56 -- .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp | 564 +++++++++++++--- .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h | 40 +- .../Tools/UsbUtility/Debug/UtilityDebug.Log | 2 + .../Hsi/Tools/UsbUtility/Debug/so7_config.ini | 42 +- .../Msi/Hsi/Tools/UsbUtility/LOGGER.CPP | 21 +- .../MachineInterfaceDll.cpp | 633 +++++++++++++----- .../MachineInterfaceDll/MachineInterfaceDll.h | 60 +- .../MachineInterfaceDll.rc | Bin 0 -> 4676 bytes .../MachineInterfaceDll.vcxproj | 8 +- .../MachineInterfaceDll.vcxproj.filters | 12 +- .../MachineInterfaceDll.vcxproj.user | 3 +- .../UsbUtility/MachineInterfaceDll/resource.h | 14 + .../Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo | Bin 95232 -> 112640 bytes .../UsbUtility/Win32TestDll/Win32TestDll.cpp | 168 ++++- .../Msi/Hsi/Tools/UsbUtility/logger.h | 1 + 19 files changed, 1252 insertions(+), 432 deletions(-) delete mode 100644 PcDmis/Base/Interfac/Msi/Hsi/MicroVu/LOGGER.CPP delete mode 100644 PcDmis/Base/Interfac/Msi/Hsi/MicroVu/logger.h create mode 100644 PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.rc create mode 100644 PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/resource.h 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 0000000000000000000000000000000000000000..0143fa6f057b74e7f38e8d9cc318579c077bc400 GIT binary patch literal 4676 zcmd6rT~8W86o$`rlm3S--e_u6)QjF$K}(84p4Ej z{%mz?SkqcovWnHLV`o-|T4H``Rr?O5!QT@*fKp{1^vj0T`vvR57}+tn%wpUFrJ?=A z{|V>_hbCTs<8KA85AjoYl%enP%tqwzF}NV=4>4aB|J6e*Smd+g9;}o}J^WrSHv;lO z?rM#}I@RD!Tm@s70qf*;pPaa(n)>+Phk9k3;83R~4sByjCX7>cC7#GWWa{h6)bKeFtdsJhMAg;}vSW&W;N9R^Tel__jDJq^XT(U#DEF74x(;A^u@pRQX|D zqn;x1S=1x6et_@Cu6yV$ihuLF@wx599k~p03C`*@%jlSQ3KTd|W_wV<&gn_#sfDEbh4MI$|#F^okG>UEGnY-YVb5m-6*2`Zm=JIE_G_@~ z<5?FZ2Ou<@smA%zLak<{?${^ijXe6nEL+zJ&%E9gR>RmPj=J{L#U4nESaw>;88+K`mXD1Bj`Lq-{tho7IwNZ zk3dj#+2*4jbY#b@cR^#e3WKI1x9pwxDZWZ>V$}evZgaT3r4LnnzIIv^t2;1PeqDpm z1e<-F@+%Sd3V)Z`#m6Ff6TKjsTdzW)7F(ih7YYGwy`{70Ezzi>b4a(jCl@CF75A*B z7KSm2&5l>3O@HumA}uV<*n9Sp2?yx{_EGZ?w8MhT?Z^z3x~8dvT$+E R59mtz|4;r~Iv;mQ`U7O_FE0Q9 literal 0 HcmV?d00001 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 648196c34b739eca9c6531b758f35fe12d6357ff..5cbc5f8c94b3bc654ee4c05db1e4e6eec7dff03e 100644 GIT binary patch delta 9130 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 delta 5448 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 #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;