CAxis.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #pragma once
  2. #include "dt.h"
  3. #include "CHardware.h"
  4. #include "JAxis.h"
  5. //#define WIN32_LEAN_AND_MEAN
  6. #ifdef C_AXIS_EXPORTS
  7. #define C_AXIS_DLL_API __declspec(dllexport)
  8. #else
  9. #define C_AXIS_DLL_API //__declspec(dllimport)
  10. #endif
  11. enum SPEED {
  12. FAST=10, //快速
  13. MEDIUM=5, //中速
  14. SLOW=2 //慢速
  15. };
  16. #define SYNC true //等待到位
  17. #define NOSYNC false //不待待到位
  18. #define MOVEING 1
  19. //#define FORCE_BUFFER_NO 6
  20. //
  21. //#define FORCE_SPRING_BUFFER_NO 10
  22. class C_AXIS_DLL_API CAxis
  23. {
  24. public:
  25. enum AXIS_TYPE { X = 0, Y, Z, R, FORCE };
  26. private:
  27. AXIS_TYPE m_eAxisType = AXIS_TYPE::X;
  28. string m_strAxisType;
  29. string m_strModuleType;
  30. JAxis* m_pAxis = nullptr;
  31. string m_strAxisName = "";
  32. INT m_iUse = 0;
  33. bool m_bIsInitSuccess = false;
  34. UINT m_iHomeTime = 100000; //回零等待时间(秒)
  35. UINT m_iFastTime = 10000; //快速等待时间(秒)
  36. UINT m_iMediumTime = 50000; //中速等待时间(秒)
  37. UINT m_iSlowTime = 100000; //慢速等待时间(秒)
  38. UINT m_iLastWaitTime = 100000; //上次移动的等待时间
  39. UINT m_iCommonWaitTime = 100000; //其他情况等待事件
  40. unsigned long m_lStartSysTime; //开始移动的系统时间
  41. bool m_bEnable = false; //运控卡禁止/启用
  42. public:
  43. CAxis();
  44. LONG Init(JAxis* pAxis, ns_db::AXIS_LIST_STRUCT *pAxisStruct);
  45. string GetAxisName() {return m_strAxisName;};
  46. string GetModuleType() { return m_strModuleType; };
  47. string GetStringAxisType() { return m_strAxisType; };
  48. string GetStringModuleType() { return m_strModuleType; };
  49. AXIS_TYPE GetAxisType() { return m_eAxisType; };
  50. LONG GetAxisStatus(AxisStatus& axisStatus);
  51. LONG GetActualPos(double &pos); //反馈位置
  52. LONG AxisOn();
  53. LONG AxisOff();
  54. LONG GetProfilePos(double& dProfilePos); //指令位置
  55. LONG Sync();
  56. LONG Stop(AxisStopMode eStopMode = AXIS_SMOOTH_STOP);
  57. LONG CheckDone();
  58. LONG Home(bool bSync = SYNC);
  59. LONG Move_PassPosReturn(double dDist, double dPassDist, SPEED speed = FAST);
  60. LONG MoveTo_PassPosReturn(double dPos, double dPassPos, SPEED speed = FAST);
  61. LONG Move(double dDist, SPEED speed = FAST, bool bSync = SYNC);
  62. LONG MoveTo(double dPos, SPEED speed = FAST, bool bSync = SYNC);
  63. LONG MoveTo(double dPos, double speed, bool bSync = SYNC);
  64. LONG Move(double dPos, double speed, bool bSync = SYNC);
  65. LONG MoveForceCurrent(int nTorqueRatio, int nReachTime = 50, int nStopTime = 10);
  66. LONG GetProfileCurrent(double& dProfileTorque); //获取指令电流
  67. LONG GetActualCurrent(double& dProfileTorque); //获取反馈电流
  68. LONG SetStopDec(double val, double val1);
  69. LONG SetBufferParamF(int nBufferNo, std::string sParamFName, double dDoubleParam);
  70. LONG GetBufferParamF(int nBufferNo, std::string sParamFName, double& dDoubleParam);
  71. LONG SetBufferParam(int nBufferNo, std::string sParamFName, int dDoubleParam);
  72. LONG GetBufferParam(int nBufferNo, std::string sParamFName, int& dDoubleParam);
  73. LONG WriteSerialValue(std::string sSerial, std::any tValue);
  74. LONG WirteSocketValue(std::string ascii, std::any tValue);
  75. //LONG RunForcerBuffer(); //运行力控buffer,不断判断弹簧压合到特定位置,到特定位置控制力控轴停下来
  76. //LONG RunSpringForcerBuffer(); //运行弹簧力控buffer,循环判断多段弹簧压合位置,每次到压合位置Z轴停下来
  77. LONG RunBuffer(int id);
  78. };