|
|
|
|
#pragma once
|
|
|
|
|
#include "axis.h"
|
|
|
|
|
|
|
|
|
|
enum EM_CRDID
|
|
|
|
|
{//<2F><><EFBFBD><EFBFBD>ID<49><44>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>2<EFBFBD><32>
|
|
|
|
|
EM_CRD_FST = 1,
|
|
|
|
|
EM_CRD_SEC,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct CrdData;
|
|
|
|
|
struct TCrd
|
|
|
|
|
{//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
|
|
|
|
bool buse; //<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>
|
|
|
|
|
char crd; //<2F><><EFBFBD><EFBFBD>ϵID
|
|
|
|
|
ushort axisCnt;
|
|
|
|
|
ushort axisIndex[MAXAXIS];
|
|
|
|
|
CrdData *pCrdData;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum EM_ARC_TYPE
|
|
|
|
|
{//Բ<><D4B2><EFBFBD>岹<EFBFBD><E5B2B9><EFBFBD><EFBFBD>
|
|
|
|
|
EM_ARC_XY = 0, //xy ƽ<><C6BD>Բ<EFBFBD><D4B2>
|
|
|
|
|
EM_ARC_YZ,
|
|
|
|
|
EM_ARC_ZX,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CCard
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
CCard(ushort cardIndex);
|
|
|
|
|
virtual ~CCard();
|
|
|
|
|
|
|
|
|
|
int Open();
|
|
|
|
|
int Close();
|
|
|
|
|
int Reset();
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>˶<EFBFBD>
|
|
|
|
|
int AxisReset(ushort axisIndex);
|
|
|
|
|
int AxisZeroPos(ushort axisIndex); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
int AxisIsMoving(ushort axisIndex); //1<>˶<EFBFBD><CBB6><EFBFBD> 0<><30><EFBFBD><EFBFBD>
|
|
|
|
|
int AxisStop(ushort axisIndex, int stopType);
|
|
|
|
|
int AxisSetSpeed(ushort axisIndex, double vel);
|
|
|
|
|
|
|
|
|
|
int AxisSetPos(ushort axisIndex, long pos);
|
|
|
|
|
int AxisGetPos(ushort axisIndex, EMPosType postype, double* pval);
|
|
|
|
|
//dir 0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int AxisMoveJog(ushort axisIndex, int dir, double vel, double acc, double dec);
|
|
|
|
|
int AxisMovePos(ushort axisIndex, long pos, double vel, double acc, double dec);
|
|
|
|
|
int AxisHome(ushort axisIndex, ushort homeType, long pos, long offset, double vel);
|
|
|
|
|
int AxisMoveOffset(ushort axisIndex, long offset, double vel, double acc, double dec);
|
|
|
|
|
|
|
|
|
|
//IO<49><4F><EFBFBD><EFBFBD>
|
|
|
|
|
int ReadBit(ushort in_index, EIOType di_type);
|
|
|
|
|
int ReadOutBit(ushort out_index, EIOType do_type);
|
|
|
|
|
int WriteOutBit(ushort out_index, ushort val, EIOType do_type);
|
|
|
|
|
|
|
|
|
|
//AD
|
|
|
|
|
int ReadADC(ushort index, double* pval);
|
|
|
|
|
int WriteADC(ushort index, double val);
|
|
|
|
|
|
|
|
|
|
//<2F>岹<EFBFBD>˶<EFBFBD>
|
|
|
|
|
int CreateCrd(ushort *pAxisIndex, ushort nsize, int& crd); //<2F>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵID ʧ<>ܷ<EFBFBD><DCB7><EFBFBD>-1
|
|
|
|
|
int CloseCrd(int index);
|
|
|
|
|
int AddLinePos(int index, double *ppos, double vel, double acc, double dec);
|
|
|
|
|
int AddArcPos(int index, double *ppos1, double *ppos2, double *ppos3, double vel, double acc, double dec);
|
|
|
|
|
int CrdStartMove(int index);
|
|
|
|
|
int CrdStatus(int index, int *progress);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӿ<EFBFBD>
|
|
|
|
|
int SendCustomCommand(const char* msg, char* res/* = 0*/);
|
|
|
|
|
int RecvCustomCommand(const char* msg, char* res/* = 0*/, int timeout/* = 0*/);
|
|
|
|
|
|
|
|
|
|
int ComparePos(ushort axisCnt, short time, long *pBuf1, short count1, long *pBuf2, short count2);
|
|
|
|
|
|
|
|
|
|
bool _bOpened; //<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
ushort _cardIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
CAxis* _pAxis[MAXAXIS]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
void CloseAllAxis(); //<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
int GetExistCrd(); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
|
|
|
|
int SetCrd(TCrd& crdData); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
//IO
|
|
|
|
|
int ReadIn(EIOType di_type, long& val);
|
|
|
|
|
int ReadOut(EIOType do_type, long& val);
|
|
|
|
|
|
|
|
|
|
bool IsSamePos(long* pos1, long* pos2, int axisCnt); //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
bool IsSameLine(long* pos1, long* pos2, long* pos3); //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int CalcArcType(long* pos1, long* pos2, long* pos3, int axisCnt, int &arcType); //ͨ<><CDA8>λ<EFBFBD>ü<EFBFBD><C3BC><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>岹<EFBFBD><E5B2B9><EFBFBD><EFBFBD> arcType EM_ARC_TYPE
|
|
|
|
|
void CalcCenter(long* pos1, long* pos2, long* pos3, double &x, double &y, double&r); //3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ֻȡǰ<C8A1><C7B0><EFBFBD><EFBFBD>
|
|
|
|
|
bool CalcDir(long *pos1, long* pos2, long* pos3); //<2F>ж<EFBFBD>һ<EFBFBD><D2BB>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>true ˳ʱ<CBB3><CAB1> false <20><>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
|
|
|
|
short TransfIOType(short di_type); //<2F><>io<69><6F>ȡ/д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ɹ̸߿<CCB8><DFBF><EFBFBD>IO<49><4F><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
int ParseGearMove(char* param);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>˶<EFBFBD>
|
|
|
|
|
//masterAxis <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//slaveAxis <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//iGearType <20><><EFBFBD><EFBFBD>ģʽ <20>ο<EFBFBD> EM_GEAR_TYPE
|
|
|
|
|
//ratio <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>/<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
//masterSlope <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᵽ<EFBFBD>ﴫ<EFBFBD><EFB4AB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|
|
|
|
int GearMove(ushort masterAxis, ushort slaveAxis,
|
|
|
|
|
int iGearType, double ratio, long masterSlope = 0);
|
|
|
|
|
|
|
|
|
|
int SetBacklash(char* param); //<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>
|
|
|
|
|
int SetArrive(char* param); //<2F><><EFBFBD>õ<EFBFBD>λ<EFBFBD>ź<EFBFBD>
|
|
|
|
|
int SetAD(char* param); //<2F><><EFBFBD>õ<EFBFBD>ѹֵ
|
|
|
|
|
int ParseCompare(char* param); //0<><30>1<EFBFBD><31><EFBFBD><EFBFBD>IO<49>ںţ<DABA>0<EFBFBD><30>1һά/<2F><>άģʽ<C4A3><CABD>0<EFBFBD><30>1 set/start<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
int SetComparePrm(short chn, short mode, short encx, short ency);//0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F>0 0<><30>һάģʽ 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ñȽϲ<C8BD><CFB2><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ñȽϹ<C8BD><CFB9><EFBFBD>X<EFBFBD>ᣨһάλ<CEAC>ñȽ<C3B1>ֻ<EFBFBD>ܱ<EFBFBD>Y<EFBFBD>ᣬ<EFBFBD><E1A3AC><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD>X<EFBFBD>ᣬֻ<E1A3AC>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD>ϣ<EFBFBD>
|
|
|
|
|
int StartCompare(short chn, short mode, int count, long *px, long *py);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
TCrd _crd[MAXCRD]; //<2F><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ
|
|
|
|
|
};
|
|
|
|
|
|