You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
TwoLaserHead-PushJig/LaiPuLaser/Motor.h

114 lines
5.7 KiB
C

#pragma once
#include "PciCh365Mgr.h"
#include "Module.h"
#include "Observer.h"
#include "EnumPropertieType.h"
#include "Subject.h"
#define MOTOR_X _T("X") //<2F><><EFBFBD><EFBFBD>X
#define MOTOR_X2 _T("X2") //<2F><><EFBFBD><EFBFBD>X2
#define MOTOR_Y _T("Y") //<2F><><EFBFBD><EFBFBD>Y
#define MOTOR_Z _T("Z") //<2F><><EFBFBD><EFBFBD>Z
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CMotor
:public CModule,public CObserver,public CSubject
{
public:
CMotor(CString Name);
virtual ~CMotor(void);
virtual void Ini();
virtual MODULE GetModuleType(){return _MOTOR_PROP;};
virtual void ExportPar(ofstream *pFile);
virtual CMFCPropertyGridProperty *CreatGridProperty();
virtual void Update();//<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>Ա仯<D4B1>Ĵ<EFBFBD><C4B4><EFBFBD>
public:
void SetPciPortType(CString DirPortType,CString PulsePortType,CString LimitPortType_F,CString LimitPortType_N);
void SetDirPort(SPciPort Port){m_DirPort = Port;};
void SetPulsePort(SPciPort Port){m_PulsePort = Port;};
bool MoveOnePluse(unsigned int Delay = 0);
void SetDir(bool b);//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>(b Ϊtrue <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>)
double GetOnePulseDis(){return m_OnePulseDis;};
bool FindOrigin(bool bSavePulseCnt = false);
CString Name(){return m_Name;};
bool IsLimitOn();
bool MoveToOriginOffset(double AdjustVal = 0);
bool SendSerialPulses(double TotalCnt,double &PulseCnt,unsigned int Delay);
unsigned int GetDelay(bool bWork);
void MoveByPluse(double PulseCnt,bool bWork);
double GetCoord(){return m_Coord;};
double GetCoord2();
void SetCoord(double Coord){m_Coord = Coord;};
void MoveToCoord(double Coord);
void MoveDis(double dis);
static CMotor *GetMotor(CString Name);
void SetMoveDelay(unsigned int n){m_MoveDelay = n;};
void SetWorkDelay(unsigned int n){m_WorkDelay = n;};
double GetOriginOffsetDis(){return m_OriginOffsetDis;};
void SetOriginOffsetDis(double n){m_OriginOffsetDis = n;};
void NeedCheckFiber(){m_bCheckFiber = true;}
void SetAsixIdx(int idx){m_AsixIdx = idx;};
int GetAsixIdx(){return m_AsixIdx;};
bool IsbReverseDir(){return m_bReverseDir;};
bool IsbReverseMoveFirst(){return m_bReverseMoveFirst;};
double GetReverseMoveDis(){return m_bReverseMoveDis;};
bool GetFindOriginDir(){return m_FindOriginDir;};
bool IsbRevActCoordDir(){return m_bRevActCoordDir;};
private:
void MoveByPluseAccelerate(double PulseCnt,bool bWork);
void MoveByPluseNoAccelerate(double PulseCnt,bool bWork);
double MoveDeviateLimit(unsigned int Delay);
void SetCurLimitPortByDir(bool bForward);
void OnMotorLimit();
private:
static CMotor *gMotorX;//X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static CMotor *gMotorX2;//X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static CMotor *gMotorY;//Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static CMotor *gMotorZ;//Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString m_Name;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString m_DirPortType;//<2F><><EFBFBD><EFBFBD>
CString m_PulsePortType;//<2F><><EFBFBD><EFBFBD>
CString m_LimitPortType_F;//<2F><><EFBFBD><EFBFBD>λ
CString m_LimitPortType_N;//<2F><><EFBFBD><EFBFBD>λ
int m_AsixIdx;//<2F><><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF>еı<D0B5><C4B1><EFBFBD>
//pci <20><><EFBFBD>˿ڲ<CBBF><DAB2><EFBFBD>--------------------------------------------------------
SPciPort m_DirPort;//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
SPciPort m_PulsePort;//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
SPciPort m_LimitPort_F;//<2F><><EFBFBD><EFBFBD>λ<EFBFBD>˿<EFBFBD>
SPciPort m_LimitPort_N;//<2F><><EFBFBD><EFBFBD>λ<EFBFBD>˿<EFBFBD>
SPciPort m_OriginPort;//ԭ<><D4AD><EFBFBD>˿<EFBFBD>
SPciPort m_CurLimitPort;//<2F><>ǰ<EFBFBD><C7B0>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>˿<EFBFBD>
//UPK CO2 <20>õĶ<C3B5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool m_bCheckFiber;//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SPciPort m_FiberPort1;//<2F><><EFBFBD>˶˿<CBB6>1
SPciPort m_FiberPort2;//<2F><><EFBFBD>˶˿<CBB6>2
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>-----------------------------------------------------
double m_OnePulseDis;//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>(mm)
//<2F><>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----------------------------------------------------
bool m_FindOriginDir;//<2F><>ԭ<EFBFBD><D4AD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>(true Ϊ<><CEAA><EFBFBD><EFBFBD>,false Ϊ<><CEAA><EFBFBD><EFBFBD>)
double m_OriginOffsetDis;//ԭ<><D4AD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>(mm)
double m_MaxOriginOffsetDis;//ԭ<><D4AD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>(mm) -- <20><>Ҫ<EFBFBD>DZ<EFBFBD><C7B1><EFBFBD>Ӳ<EFBFBD><D3B2>
double m_MaxPulseCnt;//<2F><>ԭ<EFBFBD><D4AD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ŀ<><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD>˷<EFBFBD>ֹӲ<D6B9><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
int m_FindOriginDelay;//<2F>ҵ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD>ĵȴ<C4B5><C8B4><EFBFBD>ʱ(ms) <20><><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned int m_ReverseMoveDelay;//<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>غ󷴷<D8BA><F3B7B4B7><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>ʱus (ֱ<><D6B1><EFBFBD>ص翪<D8B5><E7BFAA>ΪOFF )
bool m_bReverseMoveFirst;//<2F><>ԭ<EFBFBD><D4AD>֮ǰ<D6AE>Ƿ<EFBFBD><C7B7>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ƶ<EFBFBD>һ<EFBFBD>ξ<EFBFBD><CEBE><EFBFBD>
double m_bReverseMoveDis;//<2F><>ԭ<EFBFBD><D4AD>֮ǰ<D6AE>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>ľ<EFBFBD><C4BE><EFBFBD>mm
//<2F>ٶȲ<D9B6><C8B2><EFBFBD>--------------------------------------------------------------
unsigned int m_MoveDelay;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱus
unsigned int m_WorkDelay;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱus
unsigned int m_OriginPulseDelay;//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱus
bool m_bNeedCheckLimit;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
//<2F>Ӽ<EFBFBD><D3BC>ٿ<EFBFBD><D9BF><EFBFBD>-----------------------------------------------------------
bool m_bAccelerateCtrl;//<2F>Ƿ<EFBFBD><C7B7>Ӽ<EFBFBD><D3BC>ٿ<EFBFBD><D9BF><EFBFBD>
unsigned int m_StartDelay;//<2F><>ʼ<EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>ʱus
unsigned int m_PerChangeDelay;//ÿ<>θı<CEB8><C4B1><EFBFBD><EFBFBD><EFBFBD>ʱus
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----------------------------------------------------------
double m_Coord;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ(mm)
bool m_bReverseDir;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
bool m_bRevActCoordDir;//<2F><>դ<EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
};