添加设置单轴速度

This commit is contained in:
zhengxuan.zhang
2022-10-20 14:18:49 +08:00
parent df5c6c7c3f
commit 9a5ca2a7d1
8 changed files with 268 additions and 63 deletions
+54 -47
View File
@@ -309,13 +309,53 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool& bHomed)
}
return rStatus;
}
#pragma endregion
#ifdef USE_Motion_API
#pragma region 后续考虑
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types)
HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis, double& Speed)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->GetSpeedXyz(axis, Speed);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_EX(UINT AxisTypes, double Speed)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->SetSpeedEx(AxisTypes, Speed);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->GetDIO(IOChannel, _Status);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT& Types)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_bOfflineOnly == 0)
@@ -335,20 +375,13 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types)
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis,double &Speed)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->GetSpeedXyz(axis,Speed);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
#pragma endregion
#ifdef USE_Motion_API
#pragma region 后续考虑
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FOCUSSPEED_XYZ(double &Speed)
{
@@ -604,20 +637,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double Posi
UNREFERENCED_PARAMETER(bWait);
return HSI_STATUS_NOT_SUPPORTED;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->GetDIO(IOChannel,_Status);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIO(UINT IOChannel, UINT _Status)
{
@@ -922,20 +942,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_EX(UINT AxisTypes, double &Speed)
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_EX(UINT AxisTypes, double Speed)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->SetSpeedEx(AxisTypes, Speed);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double &Accel)
{
+6 -6
View File
@@ -20,8 +20,8 @@
#define HSI_API extern "C" __declspec(dllimport)
#endif
const int HSI_APIVersionMajor = 0;
const int HSI_APIVersionMinor = 0;
const int HSI_APIVersionMajor = 1;
const int HSI_APIVersionMinor = 9;
const int HSI_MaxStringLength = 255; // Maximum string length (buffer size - 1)
///////////////////////////////////////////////////////////////////////////////
// Interface API
@@ -426,9 +426,10 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ(UINT AxisTypes, double Pos
double PositionZ, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION();
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool& bHomed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIO(UINT IOChannel, UINT _Status);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types);
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(double &Speed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_XYZ(double Speed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double &AccelX, double &AccelY, double &AccelZ);
@@ -447,8 +448,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool& bHomed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_R(UINT AxisTypes, double &PositionR, double &Time);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double PositionR, HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_PLAN_SCAN(double *pdStartPosX, double *pdStartPosY, double *pdStartPosZ, double *pdEndPosX, double *pdEndPosY, double *pdEndPosZ, double *pdStepDis, bool *pbTrig, int iCount);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIO(UINT IOChannel, UINT _Status);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_START();
//HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP();
+3 -1
View File
@@ -106,7 +106,9 @@
<AdditionalLibraryDirectories>$(LocalDebuggerWorkingDirectory)\ACS;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)HSI_SEVENOCEAN_EF1_CsTest\bin\Debug\HSI.dll"</Command>
<Command>copy "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)HSI_SEVENOCEAN_EF1_CsTest\bin\Debug\HSI.dll"
copy "$(TargetDir)$(ProjectName).dll" "C:\Hexagon\Metus2021\HSI.dll"
copy "$(TargetDir)$(ProjectName).dll" "E:\HexagonProjects\2022-05-直线电机平台\EF3-Interfac\PcDmis\Base\Interfac\Msi\Hsi\Tools\UsbUtility\HSI_Sevenocean_EF1_WPFTest\bin\x64\Debug\HSI.dll"</Command>
</PostBuildEvent>
<PreBuildEvent>
<Command>version.cmd</Command>
+173 -3
View File
@@ -4545,7 +4545,13 @@ HSI_STATUS HSI_Motion::SpecialMotorMove(short AxisNumber, double Position)
}
//========================IO===================================================
HSI_STATUS HSI_Motion::GetDIO(UINT IOChannel, UINT& _Status)
/**
* \brief
* \param IOChannel
* \param _Status
* \return
*/
HSI_STATUS HSI_Motion::GetDIOOld(UINT IOChannel, UINT& _Status)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
@@ -4597,7 +4603,63 @@ HSI_STATUS HSI_Motion::GetDIO(UINT IOChannel, UINT& _Status)
}
return rStatus;
}
HSI_STATUS HSI_Motion::GetDIO(UINT IOChannel, UINT& _Status)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
if (m_SO7_Serial.m_RecvData[0] == 2)
{
if (IOChannel == HSI_MOTION_INPUT_LIMIT_SWITCH)
{
_Status = m_SO7_Serial.m_RecvData[33];
}
if (IOChannel == HSI_MOTION_INPUT_ALARM)
{
_Status = m_SO7_Serial.m_RecvData[40];
}
if (IOChannel == HSI_MOTION_INPUT_CH1) //获取通用输入
{
_Status = m_SO7_Serial.m_RecvData[34];
_Status = (m_SO7_Serial.m_RecvData[35] | (_Status << 8)) & 0xffff;
}
if (IOChannel == HSI_MOTION_OUTPUT_CH1) //获取通用输出
{
_Status = m_SO7_Serial.m_RecvData[36];
_Status = (m_SO7_Serial.m_RecvData[37] | (_Status << 8)) & 0xffff;
}
m_axisStatus = m_SO7_Serial.m_RecvData[58];
m_axisAlarmStatus = m_SO7_Serial.m_RecvData[59];
}
else if (m_bISUseMoreLights > 0)
{
if (m_Led8MotionFlag[m_selectedIndex])
{
if (tReciveData[0] == 0x05)
{
_Status = tReciveData[2];
}
}
else
{
if (tReciveData[0] == 0x05)
{
_Status = tReciveData[1] << 24 | tReciveData[1] << 16 | tReciveData[3] << 8 | tReciveData[4];
}
}
}
else
{
g_pLogger->SendAndFlushWithTime(L"[GetDIO] failed\n");
}
}
//-----------TEST Begin------------------
_Status = 0;
//-----------TEST End------------------
return rStatus;
}
//===========================================================================
HSI_STATUS HSI_Motion::SetDIO(UINT IOChannel, UINT _Status)
{
@@ -6613,7 +6675,13 @@ bool HSI_Motion::SpeedPercentJoyStick(int AxisNum, long& Speed, int& DirveSpeed,
}
//===========================================================================
HSI_STATUS HSI_Motion::GetSpeedXyz(int AxisNum, double& Speed)
/**
* \brief
* \param AxisNum
* \param Speed
* \return
*/
HSI_STATUS HSI_Motion::GetSpeedXyzOld(int AxisNum, double& Speed)
{
g_pLogger->SendAndFlushWithTime(L"[GetSpeedXyz] In\n");
auto rStatus = HSI_STATUS_NORMAL;
@@ -6630,6 +6698,22 @@ HSI_STATUS HSI_Motion::GetSpeedXyz(int AxisNum, double& Speed)
return rStatus;
}
HSI_STATUS HSI_Motion::GetSpeedXyz(int AxisNum, double& Speed)
{
g_pLogger->SendAndFlushWithTime(L"[GetSpeedXyz] In\n");
auto rStatus = HSI_STATUS_NORMAL;
short AxisNumber = AxisConvertIndex(AxisNum);
if (1 == m_iSpeedType)
{
Speed = m_SetPotion_DriveSpeed[AxisNumber] * (m_Resolution[AxisNumber] * 50);
}
else
{
Speed = m_SetPotion_DriveSpeed[AxisNumber];
}
g_pLogger->SendAndFlushWithTime(L"[GetSpeedXyz] Out\n");
return rStatus;
}
//===========================================================================
HSI_STATUS HSI_Motion::SetSpeedXyz(double Speed)
{
@@ -6986,7 +7070,13 @@ HSI_STATUS HSI_Motion::GetSpeedEx(UINT AxisTypes, double& Speed)
}
//===========================================================================
HSI_STATUS HSI_Motion::SetSpeedEx(UINT AxisTypes, double Speed)
/**
* \brief
* \param AxisTypes
* \param Speed
* \return
*/
HSI_STATUS HSI_Motion::SetSpeedExOld(UINT AxisTypes, double Speed)
{
auto rStatus = HSI_STATUS_NORMAL;
g_pLogger->SendAndFlushWithTime(L"[SetSpeedEx] In\n");
@@ -7067,6 +7157,86 @@ HSI_STATUS HSI_Motion::SetSpeedEx(UINT AxisTypes, double Speed)
return rStatus;
}
HSI_STATUS HSI_Motion::SetSpeedEx(UINT AxisTypes, double Speed)
{
auto rStatus = HSI_STATUS_NORMAL;
g_pLogger->SendAndFlushWithTime(L"[SetSpeedEx] In\n");
short AxisNumber = AxisConvertIndex(AxisTypes);
if (Speed <= 0)
{
m_SetPotion_DriveSpeed[AxisNumber] = 0;
}
if (1 == m_iSpeedType)
{
if (Speed >= 65000 * (m_Resolution[AxisNumber] * 50))
{
m_SetPotion_DriveSpeed[AxisNumber] = 65000;
}
}
else
{
if (Speed >= 65000)
{
m_SetPotion_DriveSpeed[AxisNumber] = 65000;
}
}
if (AxisNumber >= 1 && AxisNumber <= 4)
{
if (m_ForSoft == 1)
{
if (m_motorType == 1)
{
if (1 == m_iSpeedType)
{
m_SetPotion_DriveSpeed[1] = static_cast<int>(Speed) / (m_Resolution[1] * 50);
}
else
{
m_SetPotion_DriveSpeed[1] = static_cast<int>(Speed);
}
}
else
{
g_pLogger->SendAndFlushWithTime(L"[SetSpeedEx] AxisNumber = %d,Speed = %f \n", AxisNumber, Speed);
//if (!bSaveSpeedFlag)
//{
// bSaveSpeedFlag = true;
// m_SaveAxisNum = AxisNumber;
// m_SaveAxisSpeed = m_SetPotion_DriveSpeed[AxisNumber];
// g_pLogger->SendAndFlushWithTime(L"[SetSpeedEx] m_SaveAxisNum = %d,m_SaveAxisSpeed = %d \n", m_SaveAxisNum, m_SaveAxisSpeed);
//}
//if (bSaveSpeedFlag && ((int)Speed == m_SetPotion_DriveSpeed[1] * (m_Resolution[1] * 50)))
//{
// bSaveSpeedFlag = false;
// m_SetPotion_DriveSpeed[m_SaveAxisNum] = m_SaveAxisSpeed;
// return rStatus;
//}
if (1 == m_iSpeedType)
{
m_SetPotion_DriveSpeed[AxisNumber] = static_cast<int>(Speed / (m_Resolution[AxisNumber] * 50));
}
else
{
m_SetPotion_DriveSpeed[AxisNumber] = static_cast<int>(Speed);
}
g_pLogger->SendAndFlushWithTime(L"[SetSpeedEx] AxisNumber = %d\n", AxisNumber);
}
}
else
{
if (m_motorType == 1)
{
m_SetPotion_DriveSpeed[AxisNumber] = static_cast<int>(Speed / (m_Resolution[AxisNumber] * 50));
}
else
{
m_SetPotion_DriveSpeed[AxisNumber] = static_cast<int>(Speed / (m_Resolution[AxisNumber] * 50));
}
}
}
g_pLogger->SendAndFlushWithTime(L"[SetSpeedEx] Out\n");
return rStatus;
}
//===========================================================================
HSI_STATUS HSI_Motion::GetAccelerationEx(UINT AxisTypes, double& Accel)
{
+28 -2
View File
@@ -182,7 +182,14 @@ public:
*/
HSI_STATUS IsHomed(bool& bHomed);
HSI_STATUS IsHomedOld(bool& bHomed);
/**
* \brief
* \param AxisNum
* \param Speed
* \return
*/
HSI_STATUS GetSpeedXyz(int AxisNum, double& Speed);
HSI_STATUS GetSpeedXyzOld(int AxisNum, double& Speed);
HSI_STATUS SetSpeedXyz(double Speed);
HSI_STATUS GetFocusSpeed(double& Speed);
HSI_STATUS SetFocusSpeed(double Speed);
@@ -195,7 +202,7 @@ public:
HSI_STATUS GetDeadBand(double& DeadbandX, double& DeadbandY, double& DeadbandZ, double& DeadbandR);
HSI_STATUS GetRefreshDeadBand(double& Deadband);
/**
* \brief
* \brief Jog运动
* \param AxisTypes
* \param Speed
* \return
@@ -264,8 +271,20 @@ public:
*/
HSI_STATUS AbortMotion();
HSI_STATUS AbortMotionOld();
/**
* \brief
* \param IOChannel
* \param _Status
* \return
*/
HSI_STATUS GetDIO(UINT IOChannel, UINT& _Status);
HSI_STATUS GetDIOOld(UINT IOChannel, UINT& _Status);
/**
* \brief
* \param IOChannel
* \param _Status
* \return
*/
HSI_STATUS SetDIO(UINT IOChannel, UINT _Status);
HSI_STATUS GetAxisStatus(int* _Status);
HSI_STATUS GetAppPath(CString& Path);
@@ -283,7 +302,14 @@ public:
HSI_STATUS SetPositionStep(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
HSI_STATUS SetPositionEx(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
HSI_STATUS GetSpeedEx(UINT AxisTypes, double& Speed);
/**
* \brief
* \param AxisTypes
* \param Speed
* \return
*/
HSI_STATUS SetSpeedEx(UINT AxisTypes, double Speed);
HSI_STATUS SetSpeedExOld(UINT AxisTypes, double Speed);
HSI_STATUS GetAccelerationEx(UINT AxisTypes, double& Accel);
HSI_STATUS SetAccelerationEx(UINT AxisTypes, double Accel);
HSI_STATUS SetTriggerLight(int triggleNum, int delayLighting, int delayLightBefor, int triggleMode,
+2 -2
View File
@@ -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 "2022.10.19 / 20:17 "
#define HSI_FILE_CSDESCRIPTION _T("2022.10.19 / 20:17 ")
#define HSI_FILE_DESCRIPTION "2022.10.20 / 12:06 "
#define HSI_FILE_CSDESCRIPTION _T("2022.10.20 / 12:06 ")
+2 -2
View File
@@ -177,8 +177,8 @@ namespace HSI_SEVENOCEAN_EF1_CsTest.HSI
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_ABORT_MOTION", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS AbortMotion();
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_DIO", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS GetDIO(uint ioChannel, ref uint status);
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_DIO", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS GetDIO(uint ioChannel, ref uint status);
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_DIO", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS SetDIO(uint ioChannel, uint status);