添加设置单轴速度

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
+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)
{