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.
146 lines
5.3 KiB
C++
146 lines
5.3 KiB
C++
#pragma once
|
|
#include "module.h"
|
|
#include "advmotdrv.h"
|
|
#include "General.h"
|
|
#include "AdvMotApi.h"
|
|
|
|
//速度的类型
|
|
enum ESpeedType
|
|
{
|
|
_SpeedType_Org=0,//原点速度
|
|
_SpeedType_Move,//空移速度
|
|
_SpeedType_Work,//工作速度
|
|
};
|
|
//组运动速度参数
|
|
class PCI1245_SpeedParam
|
|
{
|
|
public:
|
|
PCI1245_SpeedParam(void)
|
|
{
|
|
m_Acc = 50;
|
|
m_Dec = 50;
|
|
m_VelLow = 20;
|
|
m_VelHigh = 50;
|
|
};
|
|
public:
|
|
double m_Acc;//加速度
|
|
double m_Dec;//减速度
|
|
double m_VelLow;//最低速度(mm/s)
|
|
double m_VelHigh;//运行速度(mm/s)
|
|
};
|
|
|
|
class CPci1245IOPort
|
|
{
|
|
public:
|
|
CPci1245IOPort(void)
|
|
{
|
|
m_AsixNum = -1;//轴编号
|
|
m_PortNum = -1;//端口号
|
|
m_bRev = false;//是否反向
|
|
};
|
|
public:
|
|
int m_AsixNum;//轴编号
|
|
int m_PortNum;//端口号
|
|
bool m_bRev;//是否反向
|
|
};
|
|
|
|
class CMotor;
|
|
//研华PCI1245 PCI 运动控制卡
|
|
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 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);
|
|
bool FindOriginExt(CMotor &Motor);
|
|
CMFCPropertyGridProperty* CreatSpeedGridProperty(PCI1245_SpeedParam &SpeedParam,CString SpeedName,CString ValName);
|
|
private:
|
|
bool m_bUsed;//是否使用
|
|
bool m_bInited;//是否被正常初始化
|
|
bool m_bArcCut;//圆弧插补
|
|
bool m_bGroupAisxRev;//插补轴调换
|
|
bool m_bAutoCloseSevon;//关闭程序时自动关闭sevon
|
|
int m_MotorXAsixIdx;//X轴对应的轴编号
|
|
int m_MotorX2AsixIdx;//X2 轴对应的轴编号
|
|
int m_MotorYAsixIdx;//Y轴对应的轴编号
|
|
int m_MotorZAsixIdx;//Z轴对应的轴编号
|
|
|
|
bool m_bMotorXMoveStop;//轴是否运动停止
|
|
bool m_bMotorX2MoveStop;//
|
|
bool m_bMotorYMoveStop;//
|
|
bool m_bMotorZMoveStop;//
|
|
bool m_XYFindOriginByLimit;//XY轴通过找极限来找原点(汕尾信利6台机)
|
|
int m_CheckDelay;//等待电机运动时检测延时ms
|
|
|
|
PCI1245_SpeedParam m_OrgSpeedMotorZ;//Z轴原点速度
|
|
PCI1245_SpeedParam m_MoveSpeedMotorZ;//Z轴移动速度
|
|
PCI1245_SpeedParam m_OrgSpeedMotorXY;//X轴原点速度
|
|
PCI1245_SpeedParam m_MoveSpeedMotorX;//X轴空移速度
|
|
PCI1245_SpeedParam m_WorkSpeedMotorX;//X轴工作速度
|
|
PCI1245_SpeedParam m_MoveSpeedMotorY;//X轴空移速度
|
|
PCI1245_SpeedParam m_WorkSpeedMotorY;//X轴工作速度
|
|
|
|
CPci1245IOPort m_InPortUnload;//下料机保护信号
|
|
|
|
bool m_bCheckActCoord;//是否检测实际光栅尺的坐标
|
|
double m_MaxActCoordErr;//允许最大光栅尺误差脉冲个数
|
|
HAND m_Devhand;//设备句柄
|
|
HAND m_Axishand[32];//轴的句柄数组
|
|
DEVLIST m_avaDevs[MAX_DEVICES];
|
|
double m_End[32];
|
|
int m_CurGpIdx;//当前使用的组编号
|
|
HAND m_GpHand;//组的句柄
|
|
ULONG m_ulAxisCount;//轴的数量
|
|
|
|
BOOL m_bServoOn;
|
|
DWORD m_dwDevNum;//设备编号
|
|
BOOL m_bInit;
|
|
USHORT AxisArray[32];
|
|
USHORT AxCount;
|
|
UINT m_EndNum;
|
|
};
|
|
extern MotionCard_PCI1245 *gMotionCard_PCI1245; |