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.

121 lines
4.1 KiB
C

2 years ago
#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>ϵ
};