#pragma once #include "dt.h" #include "CHardware.h" #include "JAxis.h" //#define WIN32_LEAN_AND_MEAN #ifdef C_AXIS_EXPORTS #define C_AXIS_DLL_API __declspec(dllexport) #else #define C_AXIS_DLL_API //__declspec(dllimport) #endif enum SPEED { FAST=10, //快速 MEDIUM=5, //中速 SLOW=2 //慢速 }; #define SYNC true //等待到位 #define NOSYNC false //不待待到位 #define MOVEING 1 //#define FORCE_BUFFER_NO 6 // //#define FORCE_SPRING_BUFFER_NO 10 class C_AXIS_DLL_API CAxis { public: enum AXIS_TYPE { X = 0, Y, Z, R, FORCE, Z1 }; private: AXIS_TYPE m_eAxisType = AXIS_TYPE::X; string m_strAxisType; string m_strModuleType; JAxis* m_pAxis = nullptr; string m_strAxisName = ""; INT m_iUse = 0; bool m_bIsInitSuccess = false; UINT m_iHomeTime = 100000; //回零等待时间(秒) UINT m_iFastTime = 10000; //快速等待时间(秒) UINT m_iMediumTime = 50000; //中速等待时间(秒) UINT m_iSlowTime = 100000; //慢速等待时间(秒) UINT m_iLastWaitTime = 100000; //上次移动的等待时间 UINT m_iCommonWaitTime = 100000; //其他情况等待事件 unsigned long m_lStartSysTime; //开始移动的系统时间 bool m_bEnable = false; //运控卡禁止/启用 public: CAxis(); LONG Init(JAxis* pAxis, ns_db::AXIS_LIST_STRUCT *pAxisStruct); string GetAxisName() {return m_strAxisName;}; string GetModuleType() { return m_strModuleType; }; string GetStringAxisType() { return m_strAxisType; }; string GetStringModuleType() { return m_strModuleType; }; AXIS_TYPE GetAxisType() { return m_eAxisType; }; //LONG SetJogMotionMode LONG GetAxisStatus(AxisStatus& axisStatus); LONG GetActualPos(double &pos); //反馈位置 LONG AxisOn(); LONG AxisOff(); LONG GetProfilePos(double& dProfilePos); //指令位置 LONG Sync(); LONG Stop(AxisStopMode eStopMode = AXIS_SMOOTH_STOP); LONG CheckDone(); LONG Home(bool bSync = SYNC); LONG Move_PassPosReturn(double dDist, double dPassDist, SPEED speed = FAST); LONG MoveTo_PassPosReturn(double dPos, double dPassPos, SPEED speed = FAST); LONG Move(double dDist, SPEED speed = FAST, bool bSync = SYNC); LONG MoveTo(double dPos, SPEED speed = FAST, bool bSync = SYNC); LONG MoveTo(double dPos, double speed, bool bSync = SYNC); LONG Move(double dPos, double speed, bool bSync = SYNC); LONG MoveForceCurrent(int nTorqueRatio, int nReachTime = 50, int nStopTime = 10); LONG GetProfileCurrent(double& dProfileTorque); //获取指令电流 LONG GetActualCurrent(double& dProfileTorque); //获取反馈电流 LONG SetStopDec(double val, double val1); LONG SetBufferParamF(int nBufferNo, std::string sParamFName, double dDoubleParam); LONG GetBufferParamF(int nBufferNo, std::string sParamFName, double& dDoubleParam); LONG SetBufferParam(int nBufferNo, std::string sParamFName, int dDoubleParam); LONG GetBufferParam(int nBufferNo, std::string sParamFName, int& dDoubleParam); LONG WriteSerialValueF(std::string sSerial, double tValue); LONG WriteSerialValueN(std::string sSerial, int tValue); LONG WriteSocketValueF(std::string ascii, double tValue); LONG WriteSocketValueN(std::string ascii, int tValue); LONG WriteSocketCommand(std::string ascii); //LONG RunForcerBuffer(); //运行力控buffer,不断判断弹簧压合到特定位置,到特定位置控制力控轴停下来 //LONG RunSpringForcerBuffer(); //运行弹簧力控buffer,循环判断多段弹簧压合位置,每次到压合位置Z轴停下来 LONG RunBuffer(int id); LONG StopBuffer(int id); };