diff --git a/HSI_HexagonMI_EF3/HSI_Motion.cpp b/HSI_HexagonMI_EF3/HSI_Motion.cpp index 0d4a6f0..a28e7e0 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.cpp +++ b/HSI_HexagonMI_EF3/HSI_Motion.cpp @@ -1132,7 +1132,8 @@ HSI_STATUS HSI_Motion::HomeMachine(bool bHomed) //判断是否需要回家 bool home(false); IsHomed(home); - if (home == true) + + if (home == true && !m_IsHomeEveryTime) //不需要每次都回家,且已经回家了 { g_pLogger->SendAndFlushWithTime(L"[HomeMachine] IsHomed No Need Go Home\n"); return HSI_STATUS_NORMAL; @@ -3616,30 +3617,38 @@ HSI_STATUS HSI_Motion::SetPositionXyz(UINT AxisTypes, double PositionX, double P //开始运动到指定位置,多轴运动 double Points[] = { PositionX, PositionY, PositionZ }; //目标位置点 - //if (!acsc_ToPointM(handleACS, 0, ACSAxisNumbers, Points, nullptr)) //移动到绝对位置 - //{ - // g_pLogger->SendAndFlushWithTime(L"[SetPositionXyz] ACS Multi Motion Error\n"); - // ErrorsHandler(); - //} + + if (m_isSynchronized ==1) - //使用三个轴的分别运动,替代整体运动 acsc_ToPointM,来解决多轴不同速度运动的问题 - if (!acsc_ToPoint(handleACS, 0, ACSAxisNumbers[0], PositionX, nullptr)) //移动到绝对位置 { - g_pLogger->SendAndFlushWithTime(L"[SetPositionXyz] X轴移动出错 \n"); - ErrorsHandler(); + //使用三个轴的分别运动,替代整体运动 acsc_ToPointM,来解决多轴不同速度运动的问题 + if (!acsc_ToPoint(handleACS, 0, ACSAxisNumbers[0], PositionX, nullptr)) //移动到绝对位置 + { + g_pLogger->SendAndFlushWithTime(L"[SetPositionXyz] X轴移动出错 \n"); + ErrorsHandler(); + } + if (!acsc_ToPoint(handleACS, 0, ACSAxisNumbers[1], PositionY, nullptr)) //移动到绝对位置 + { + g_pLogger->SendAndFlushWithTime(L"[SetPositionXyz] Y轴移动出错\n"); + ErrorsHandler(); + } + if (!acsc_ToPoint(handleACS, 0, ACSAxisNumbers[2], PositionZ, nullptr)) //移动到绝对位置 + { + g_pLogger->SendAndFlushWithTime(L"[SetPositionXyz] Z轴移动出错\n"); + ErrorsHandler(); + } } - if (!acsc_ToPoint(handleACS, 0, ACSAxisNumbers[1], PositionY, nullptr)) //移动到绝对位置 + else { - g_pLogger->SendAndFlushWithTime(L"[SetPositionXyz] Y轴移动出错\n"); - ErrorsHandler(); - } - if (!acsc_ToPoint(handleACS, 0, ACSAxisNumbers[2], PositionZ, nullptr)) //移动到绝对位置 - { - g_pLogger->SendAndFlushWithTime(L"[SetPositionXyz] Z轴移动出错\n"); - ErrorsHandler(); + if (!acsc_ToPointM(handleACS, 0, ACSAxisNumbers, Points, nullptr)) //移动到绝对位置 + { + g_pLogger->SendAndFlushWithTime(L"[SetPositionXyz] ACS Multi Motion Error\n"); + ErrorsHandler(); + } + } - + //状态更新 if (eType == HSI_MOTION_MOVE_NOWAIT) //非等待 { @@ -4299,7 +4308,16 @@ HSI_STATUS HSI_Motion::Load_EF3_Config_Inifile(CString GoogolIniFile) m_IsUseEF3 = GetPrivateProfileInt(L"EF3", L"IS_USEEF3", 0, csAppPath); m_IsUseACS = GetPrivateProfileInt(L"EF3", L"IS_USEACS", 0, csAppPath); m_IsUseSimulator = GetPrivateProfileInt(L"EF3", L"IS_USE_SIMULATOR", 0, csAppPath); + m_isSynchronized = GetPrivateProfileInt(L"EF3", L"IS_Synchronized", 1, csAppPath); + g_pLogger->SendAndFlushWithTime(L"[Load_EF3_Config_Inifile] m_IsUseEF3: %d, m_IsUseACS: %d, m_IsUseSimulator: %d, m_isSynchronized: %d\n", + m_IsUseEF3, m_IsUseACS, m_IsUseSimulator, m_isSynchronized); + + // 定义变量,保存 是否每次都回家 + m_IsHomeEveryTime = GetPrivateProfileInt(L"EF3", L"IS_HOME_EVERYTIME", 1, csAppPath); + g_pLogger->SendAndFlushWithTime(L"[Load_EF3_Config_Inifile] m_IsHomeEveryTime: %d\n", m_IsHomeEveryTime); + m_ForSoft = GetPrivateProfileInt(L"SOFTWARE", L"USE_SOFTWARE", 0, csAppPath); + // 从配置文件中读取IP地址 TCHAR buffer[50]; @@ -4308,7 +4326,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Config_Inifile(CString GoogolIniFile) // 将TCHAR类型的buffer转换为char类型的m_ACS_IPAddresses size_t convertedChars = 0; wcstombs_s(&convertedChars, m_ACS_IPAddresses, buffer, _TRUNCATE); - g_pLogger->SendAndFlushWithTime(L"ACS IP Address: %S\n", m_ACS_IPAddresses); + g_pLogger->SendAndFlushWithTime(L"[Load_EF3_Config_Inifile] ACS IP Address: %S\n", m_ACS_IPAddresses); m_IsUse_HSICompensation = GetPrivateProfileInt(L"ASIX", L"IS_USE_HSICOMPENSATION", 0, csAppPath); m_Compensation_Pluse = GetPrivateProfileInt(L"ASIX", L"COMPENSATE_PLUSE", 20, csAppPath); diff --git a/HSI_HexagonMI_EF3/HSI_Motion.h b/HSI_HexagonMI_EF3/HSI_Motion.h index 45754a1..03f2f2d 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.h +++ b/HSI_HexagonMI_EF3/HSI_Motion.h @@ -482,6 +482,8 @@ public: int m_IsUseSimulator; //是否启用模拟器 char m_ACS_IPAddresses[50]; // 定义字符串,存储ACS IP地址 + int m_isSynchronized ; //是否启用同步 0为不启用 1为启用 默认为0 + int m_IsHomeEveryTime; //是否每次都回原点 0为不启用 1为启用 默认为0 int m_DeviceType; //设备类型,0为通用设备,1为三激光, 2为大视野,3为转盘设备 默认为0 int m_UseAxisNum; //转盘设备使用轴号 int m_IbinCount; //记录获取到的分bin数 diff --git a/HSI_HexagonMI_EF3/version.h b/HSI_HexagonMI_EF3/version.h index dee33ae..a8a7279 100644 --- a/HSI_HexagonMI_EF3/version.h +++ b/HSI_HexagonMI_EF3/version.h @@ -12,5 +12,5 @@ #define HSI_VERSION_REVNUM #define HSI_VERSION_BUILD_DATE _T(__DATE__ ) #define HSI_VERSION_BUILD_TIME _T(__TIME__ ) -#define HSI_FILE_DESCRIPTION "2025.05.23 / 16:01 " -#define HSI_FILE_CSDESCRIPTION _T("2025.05.23 / 16:01 ") +#define HSI_FILE_DESCRIPTION "2025.08.12 / 13:17 " +#define HSI_FILE_CSDESCRIPTION _T("2025.08.12 / 13:17 ") diff --git a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini index 999bfff..c51c30f 100644 Binary files a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini and b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini differ