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/MotionCard_PCI1245.h

150 lines
5.4 KiB
C

#pragma once
#include "module.h"
#include "advmotdrv.h"
#include "General.h"
#include "AdvMotApi.h"
//<2F>ٶȵ<D9B6><C8B5><EFBFBD><EFBFBD><EFBFBD>
enum ESpeedType
{
_SpeedType_Org=0,//ԭ<><D4AD><EFBFBD>ٶ<EFBFBD>
_SpeedType_Move,//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
_SpeedType_Work,//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
_SpeedType_Org2th = 0,//<2F>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>ٶ<EFBFBD>
};
//<2F><><EFBFBD>˶<EFBFBD><CBB6>ٶȲ<D9B6><C8B2><EFBFBD>
class PCI1245_SpeedParam
{
public:
PCI1245_SpeedParam(void)
{
m_Acc = 50;
m_Dec = 50;
m_VelLow = 20;
m_VelHigh = 50;
};
public:
double m_Acc;//<2F><><EFBFBD>ٶ<EFBFBD>
double m_Dec;//<2F><><EFBFBD>ٶ<EFBFBD>
double m_VelLow;//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>(mm/s)
double m_VelHigh;//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>(mm/s)
};
class CPci1245IOPort
{
public:
CPci1245IOPort(void)
{
m_AsixNum = -1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_PortNum = -1;//<2F>˿ں<CBBF>
m_bRev = false;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
};
public:
int m_AsixNum;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_PortNum;//<2F>˿ں<CBBF>
bool m_bRev;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
};
class CMotor;
//<2F>л<EFBFBD>PCI1245 PCI <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>ƿ<EFBFBD>
class MotionCard_PCI1245 :public CModule
{
public:
MotionCard_PCI1245(void);
~MotionCard_PCI1245(void);
virtual MODULE GetModuleType(){return _MOTION_CARD_PCI1245L;};
virtual CMFCPropertyGridProperty *CreatGridProperty();
virtual void Ini();
virtual void OnExitApp();
virtual void ExportPar(ofstream *pFile);
bool IsbUsed(){return m_bUsed;};
Dbxy MovePlatformXY(Dbxy Coord);
Dbxy GetPlatformXYCoord();
bool FindOriginExt(CMotor &Motor);
bool FindOriginByLimit(CMotor &Motor);
bool FindOrigin(CMotor &Motor);
bool MoveToOriginOffset(CMotor &Motor);
void SetCoord(Dbxy coord);
bool MoveMotor(CMotor &Motor,double &Coord);
double GetMotorCoord(CMotor &Motor);
bool CheckFucCanUsed();
bool IsbArcCut(){return m_bArcCut;};
bool IsbInited(){return m_bInited;};
void SetPlatformSpeed(bool bWorkSpeed);
void SetCurGpIdx(int idx);
int GetCurGpIdx(){return m_CurGpIdx;};
void ResetAllAsixErr();
void ResetAllAsixErrExt();
void CheckAsixState();
bool IsbMotorXMoveStop(){return m_bMotorXMoveStop;};
bool IsbMotorX2MoveStop(){return m_bMotorX2MoveStop;};
bool IsbMotorYMoveStop(){return m_bMotorYMoveStop;};
bool IsbMotorZMoveStop(){return m_bMotorZMoveStop;};
void SetMotorSpeed(CMotor &Motor,ESpeedType SpeedType);
void SetSvOn(bool bOn);
void ResetAllAsixCoord();
double GetMotorActCoord(CMotor &Motor);
bool CheckMotorActCoord(CMotor &Motor);
bool CheckUnloadState();
private:
int ReadIOState(CPci1245IOPort IOPort);
bool InitCard();
bool OpenCard();
bool AddAsixToGroup(HAND &GpHand,UINT index);
PCI1245_SpeedParam MM2PulseParam(PCI1245_SpeedParam &SpeedParam,double OnePulseDis);
void SetPlatformSpeedExt(PCI1245_SpeedParam GpParam) ;
Dbxy MM2PulseCoord(Dbxy Coord);
void WaitPlatfromStop();
void LoadConfigFile();
PCI1245_SpeedParam GetMotorSpeed(CMotor &Motor,ESpeedType SpeedType);
bool CheckAsixStateExt(HAND AxisHandle);
CMFCPropertyGridProperty* CreatSpeedGridProperty(PCI1245_SpeedParam &SpeedParam,CString SpeedName,CString ValName);
private:
bool m_bUsed;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>
bool m_bInited;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
bool m_bArcCut;//Բ<><D4B2><EFBFBD>
bool m_bGroupAisxRev;//<2F><EFBFBD><E5B2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool m_bAutoCloseSevon;//<2F>رճ<D8B1><D5B3><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD><D4B6>ر<EFBFBD>sevon
int m_MotorXAsixIdx;//X<><58><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_MotorX2AsixIdx;//X2 <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_MotorYAsixIdx;//Y<><59><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_MotorZAsixIdx;//Z<><5A><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool m_bMotorXMoveStop;//<2F><><EFBFBD>Ƿ<EFBFBD><C7B7>˶<EFBFBD>ֹͣ
bool m_bMotorX2MoveStop;//
bool m_bMotorYMoveStop;//
bool m_bMotorZMoveStop;//
bool m_XYFindOriginByLimit;//XY<58><59>ͨ<EFBFBD><CDA8><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>(<28><>β<EFBFBD><CEB2><EFBFBD><EFBFBD><36><CCA8>)
int m_CheckDelay;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱms
int m_HomeMode=6;//<2F><><EFBFBD>ð忨Home<6D><65><EFBFBD><EFBFBD>ʱ<EFBFBD>ķ<EFBFBD>ʽ.
PCI1245_SpeedParam m_OrgSpeedMotorZ;//Z<><5A>ԭ<EFBFBD><D4AD><EFBFBD>ٶ<EFBFBD>
PCI1245_SpeedParam m_MoveSpeedMotorZ;//Z<><5A><EFBFBD>ƶ<EFBFBD><C6B6>ٶ<EFBFBD>
PCI1245_SpeedParam m_OrgSpeedMotorXY;//X<><58>ԭ<EFBFBD><D4AD><EFBFBD>ٶ<EFBFBD>
PCI1245_SpeedParam m_MoveSpeedMotorX;//X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
PCI1245_SpeedParam m_WorkSpeedMotorX;//X<><EFBFBD><E1B9A4><EFBFBD>ٶ<EFBFBD>
PCI1245_SpeedParam m_MoveSpeedMotorY;//X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
PCI1245_SpeedParam m_WorkSpeedMotorY;//X<><EFBFBD><E1B9A4><EFBFBD>ٶ<EFBFBD>
CPci1245IOPort m_InPortUnload;//<2F><><EFBFBD>ϻ<EFBFBD><CFBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
public:
bool m_bCheckActCoord;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʹ<EFBFBD>դ<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
private:
double m_MaxActCoordErr;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>դ<EFBFBD><D5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HAND m_Devhand;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
HAND m_Axishand[32];//<2F><><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DEVLIST m_avaDevs[MAX_DEVICES];
double m_End[32];
int m_CurGpIdx;//<2F><>ǰʹ<C7B0>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HAND m_GpHand;//<2F><><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
ULONG m_ulAxisCount;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL m_bServoOn;
DWORD m_dwDevNum;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
BOOL m_bInit;
USHORT AxisArray[32];
USHORT AxCount;
UINT m_EndNum;
};
extern MotionCard_PCI1245 *gMotionCard_PCI1245;