296 lines
8.5 KiB
C
296 lines
8.5 KiB
C
|
|
#ifndef _PP_PROJ_H_
|
|
#define _PP_PROJ_H_
|
|
//***********************************************************************************
|
|
// C header for accessing PMAC Global, CSGlobal, Ptr vars
|
|
// _PPScriptMode_ for Pmac Script like access global & csglobal
|
|
// global Mypvar - access with "Mypvar"
|
|
// global Myparray(32) - access with "Myparray(i)"
|
|
// csglobal Myqvar - access with "Myqvar(i)" where "i" is Coord #
|
|
// csglobal Myqarray(16) - access with "Myqvar(i,j)" where "j" is index
|
|
// _EnumMode_ for Pmac enum data type checking on Set & Get global functions
|
|
// Example
|
|
// global Mypvar
|
|
// csglobal Myqvar
|
|
// "SetGlobalVar(Myqvar, data)" will give a compile error because its a csglobal var.
|
|
// "SetCSGlobalVar(Mypvar, data)" will give a compile error because its a global var.
|
|
//************************************************************************************
|
|
|
|
#ifdef _PPScriptMode_
|
|
enum globalP {_globalP_=-1};
|
|
enum globalParray {_globalParray_=-1};
|
|
enum csglobalQ {_csglobalQ_=-1};
|
|
enum csglobalQarray {_csglobalQarray_=-1};
|
|
|
|
enum ptrM {_ptrM_=-1};
|
|
enum ptrMarray {_ptrMarray_=-1};
|
|
void SetEnumGlobalVar(enum globalP var, double data)
|
|
{
|
|
pshm->P[var] = data;
|
|
}
|
|
|
|
double GetEnumGlobalVar(enum globalP var)
|
|
{
|
|
return pshm->P[var];
|
|
}
|
|
|
|
void SetEnumGlobalArrayVar(enum globalParray var, unsigned index, double data)
|
|
{
|
|
pshm->P[(var + index)%MAX_P] = data;
|
|
}
|
|
|
|
double GetEnumGlobalArrayVar(enum globalParray var, unsigned index)
|
|
{
|
|
return pshm->P[(var + index)%MAX_P];
|
|
}
|
|
|
|
void SetEnumCSGlobalVar(enum csglobalQ var, unsigned cs, double data)
|
|
{
|
|
pshm->Coord[cs % MAX_COORDS].Q[var] = data;
|
|
}
|
|
|
|
double GetEnumCSGlobalVar(enum csglobalQ var, unsigned cs)
|
|
{
|
|
return pshm->Coord[cs % MAX_COORDS].Q[var];
|
|
}
|
|
|
|
void SetEnumCSGlobalArrayVar(enum csglobalQarray var, unsigned index, unsigned cs, double data)
|
|
{
|
|
pshm->Coord[cs % MAX_COORDS].Q[(var + index)%MAX_Q] = data;
|
|
}
|
|
|
|
double GetEnumCSGlobalArrayVar(enum csglobalQarray var, unsigned index, unsigned cs)
|
|
{
|
|
return pshm->Coord[cs % MAX_COORDS].Q[(var + index)%MAX_Q];
|
|
}
|
|
|
|
void SetEnumPtrVar(enum ptrM var, double data)
|
|
{
|
|
im_write(pshm->Mdef + var, data, &pshm->Ldata);
|
|
}
|
|
|
|
double GetEnumPtrVar(enum ptrM var)
|
|
{
|
|
return im_read(pshm->Mdef + var, &pshm->Ldata);
|
|
}
|
|
|
|
void SetEnumPtrArrayVar(enum ptrMarray var, unsigned index, double data)
|
|
{
|
|
im_write(pshm->Mdef + ((var + index)%MAX_M), data, &pshm->Ldata);
|
|
}
|
|
|
|
double GetEnumPtrArrayVar(enum ptrMarray var, unsigned index)
|
|
{
|
|
return im_read(pshm->Mdef + ((var + index)%MAX_M), &pshm->Ldata);
|
|
}
|
|
|
|
#define SetGlobalVar(i, x) SetEnumGlobalVar(i, x)
|
|
#define SetGlobalArrayVar(i, j, x) SetEnumGlobalArrayVar(i, j, x)
|
|
#define GetGlobalVar(i) GetEnumGlobalVar(i)
|
|
#define GetGlobalArrayVar(i, j) GetEnumGlobalArrayVar(i, j)
|
|
|
|
#define SetCSGlobalVar(i, j, x) SetEnumCSGlobalVar(i, j, x)
|
|
#define SetCSGlobalArrayVar(i, j, k, x) SetEnumCSGlobalArrayVar(i, j, k, x)
|
|
#define GetCSGlobalVar(i, j) GetEnumCSGlobalVar(i, j)
|
|
#define GetCSGlobalArrayVar(i, j, k) GetEnumCSGlobalArrayVar(i, j, k)
|
|
|
|
#define SetPtrVar(i, x) SetEnumPtrVar(i, x)
|
|
#define SetPtrArrayVar(i, j, x) SetEnumPtrArrayVar(i, j, x)
|
|
#define GetPtrVar(i) GetEnumPtrVar(i)
|
|
#define GetPtrArrayVar(i, j) GetEnumPtrArrayVar(i, j)
|
|
// end of #ifdef _PPScriptMode_
|
|
#else
|
|
#ifdef _EnumMode_
|
|
enum globalP {_globalP_=-1};
|
|
enum globalParray {_globalParray_=-1};
|
|
enum csglobalQ {_csglobalQ_=-1};
|
|
enum csglobalQarray {_csglobalQarray_=-1};
|
|
enum ptrM {_ptrM_=-1};
|
|
enum ptrMarray {_ptrMarray_=-1};
|
|
void SetEnumGlobalVar(enum globalP var, double data)
|
|
{
|
|
pshm->P[var] = data;
|
|
}
|
|
|
|
double GetEnumGlobalVar(enum globalP var)
|
|
{
|
|
return pshm->P[var];
|
|
}
|
|
|
|
void SetEnumGlobalArrayVar(enum globalParray var, unsigned index, double data)
|
|
{
|
|
pshm->P[(var + index)%MAX_P] = data;
|
|
}
|
|
|
|
double GetEnumGlobalArrayVar(enum globalParray var, unsigned index)
|
|
{
|
|
return pshm->P[(var + index)%MAX_P];
|
|
}
|
|
|
|
void SetEnumCSGlobalVar(enum csglobalQ var, unsigned cs, double data)
|
|
{
|
|
pshm->Coord[cs % MAX_COORDS].Q[var] = data;
|
|
}
|
|
|
|
double GetEnumCSGlobalVar(enum csglobalQ var, unsigned cs)
|
|
{
|
|
return pshm->Coord[cs % MAX_COORDS].Q[var];
|
|
}
|
|
|
|
void SetEnumCSGlobalArrayVar(enum csglobalQarray var, unsigned index, unsigned cs, double data)
|
|
{
|
|
pshm->Coord[cs % MAX_COORDS].Q[(var + index)%MAX_Q] = data;
|
|
}
|
|
|
|
double GetEnumCSGlobalArrayVar(enum csglobalQarray var, unsigned index, unsigned cs)
|
|
{
|
|
return pshm->Coord[cs % MAX_COORDS].Q[(var + index)%MAX_Q];
|
|
}
|
|
|
|
void SetEnumPtrVar(enum ptrM var, double data)
|
|
{
|
|
im_write(pshm->Mdef + var, data, &pshm->Ldata);
|
|
}
|
|
|
|
double GetEnumPtrVar(enum ptrM var)
|
|
{
|
|
return im_read(pshm->Mdef + var, &pshm->Ldata);
|
|
}
|
|
|
|
void SetEnumPtrArrayVar(enum ptrMarray var, unsigned index, double data)
|
|
{
|
|
im_write(pshm->Mdef + ((var + index)%MAX_M), data, &pshm->Ldata);
|
|
}
|
|
|
|
double GetEnumPtrArrayVar(enum ptrMarray var, unsigned index)
|
|
{
|
|
return im_read(pshm->Mdef + ((var + index)%MAX_M), &pshm->Ldata);
|
|
}
|
|
|
|
#define SetGlobalVar(i, x) SetEnumGlobalVar(i, x)
|
|
#define SetGlobalArrayVar(i, j, x) SetEnumGlobalArrayVar(i, j, x)
|
|
#define GetGlobalVar(i) GetEnumGlobalVar(i)
|
|
#define GetGlobalArrayVar(i, j) GetEnumGlobalArrayVar(i, j)
|
|
|
|
#define SetCSGlobalVar(i, j, x) SetEnumCSGlobalVar(i, j, x)
|
|
#define SetCSGlobalArrayVar(i, j, k, x) SetEnumCSGlobalArrayVar(i, j, k, x)
|
|
#define GetCSGlobalVar(i, j) GetEnumCSGlobalVar(i, j)
|
|
#define GetCSGlobalArrayVar(i, j, k) GetEnumCSGlobalArrayVar(i, j, k)
|
|
|
|
#define SetPtrVar(i, x) SetEnumPtrVar(i, x)
|
|
#define SetPtrArrayVar(i, j, x) SetEnumPtrArrayVar(i, j, x)
|
|
#define GetPtrVar(i) GetEnumPtrVar(i)
|
|
#define GetPtrArrayVar(i, j) GetEnumPtrArrayVar(i, j)
|
|
// end of #ifdef _EnumMode_
|
|
#else
|
|
// ***** Standard default mode *****
|
|
#endif
|
|
#endif
|
|
//Kinematic defines for CfromScript
|
|
#define FWD_KIN 0
|
|
#define INV_KIN 1
|
|
#define RT_PLC 2
|
|
#define BG_PLC 3
|
|
#define RT_PROG 4
|
|
#define KinPosMotor L
|
|
#define KinVelMotor R
|
|
#define KinEnaAxisA 0x1
|
|
#define KinPosAxisA C[0]
|
|
#define KinVelAxisA C[32]
|
|
#define KinEnaAxisB 0x2
|
|
#define KinPosAxisB C[1]
|
|
#define KinVelAxisB C[33]
|
|
#define KinEnaAxisC 0x4
|
|
#define KinPosAxisC C[2]
|
|
#define KinVelAxisC C[34]
|
|
#define KinEnaAxisU 0x8
|
|
#define KinPosAxisU C[3]
|
|
#define KinVelAxisU C[35]
|
|
#define KinEnaAxisV 0x10
|
|
#define KinPosAxisV C[4]
|
|
#define KinVelAxisV C[36]
|
|
#define KinEnaAxisW 0x20
|
|
#define KinPosAxisW C[5]
|
|
#define KinVelAxisW C[37]
|
|
#define KinEnaAxisX 0x40
|
|
#define KinPosAxisX C[6]
|
|
#define KinVelAxisX C[38]
|
|
#define KinEnaAxisY 0x80
|
|
#define KinPosAxisY C[7]
|
|
#define KinVelAxisY C[39]
|
|
#define KinEnaAxisZ 0x100
|
|
#define KinPosAxisZ C[8]
|
|
#define KinVelAxisZ C[40]
|
|
#define KinEnaAxisAA 0x200
|
|
#define KinPosAxisAA C[9]
|
|
#define KinVelAxisAA C[41]
|
|
#define KinEnaAxisBB 0x400
|
|
#define KinPosAxisBB C[10]
|
|
#define KinVelAxisBB C[42]
|
|
#define KinEnaAxisCC 0x800
|
|
#define KinPosAxisCC C[11]
|
|
#define KinVelAxisCC C[43]
|
|
#define KinEnaAxisDD 0x1000
|
|
#define KinPosAxisDD C[12]
|
|
#define KinVelAxisDD C[44]
|
|
#define KinEnaAxisEE 0x2000
|
|
#define KinPosAxisEE C[13]
|
|
#define KinVelAxisEE C[45]
|
|
#define KinEnaAxisFF 0x4000
|
|
#define KinPosAxisFF C[14]
|
|
#define KinVelAxisFF C[46]
|
|
#define KinEnaAxisGG 0x8000
|
|
#define KinPosAxisGG C[15]
|
|
#define KinVelAxisGG C[47]
|
|
#define KinEnaAxisHH 0x10000
|
|
#define KinPosAxisHH C[16]
|
|
#define KinVelAxisHH C[48]
|
|
#define KinEnaAxisLL 0x20000
|
|
#define KinPosAxisLL C[17]
|
|
#define KinVelAxisLL C[49]
|
|
#define KinEnaAxisMM 0x40000
|
|
#define KinPosAxisMM C[18]
|
|
#define KinVelAxisMM C[50]
|
|
#define KinEnaAxisNN 0x80000
|
|
#define KinPosAxisNN C[19]
|
|
#define KinVelAxisNN C[51]
|
|
#define KinEnaAxisOO 0x100000
|
|
#define KinPosAxisOO C[20]
|
|
#define KinVelAxisOO C[52]
|
|
#define KinEnaAxisPP 0x200000
|
|
#define KinPosAxisPP C[21]
|
|
#define KinVelAxisPP C[53]
|
|
#define KinEnaAxisQQ 0x400000
|
|
#define KinPosAxisQQ C[22]
|
|
#define KinVelAxisQQ C[54]
|
|
#define KinEnaAxisRR 0x800000
|
|
#define KinPosAxisRR C[23]
|
|
#define KinVelAxisRR C[55]
|
|
#define KinEnaAxisSS 0x1000000
|
|
#define KinPosAxisSS C[24]
|
|
#define KinVelAxisSS C[56]
|
|
#define KinEnaAxisTT 0x2000000
|
|
#define KinPosAxisTT C[25]
|
|
#define KinVelAxisTT C[57]
|
|
#define KinEnaAxisUU 0x4000000
|
|
#define KinPosAxisUU C[26]
|
|
#define KinVelAxisUU C[58]
|
|
#define KinEnaAxisVV 0x8000000
|
|
#define KinPosAxisVV C[27]
|
|
#define KinVelAxisVV C[59]
|
|
#define KinEnaAxisWW 0x10000000
|
|
#define KinPosAxisWW C[28]
|
|
#define KinVelAxisWW C[60]
|
|
#define KinEnaAxisXX 0x20000000
|
|
#define KinPosAxisXX C[29]
|
|
#define KinVelAxisXX C[61]
|
|
#define KinEnaAxisYY 0x40000000
|
|
#define KinPosAxisYY C[30]
|
|
#define KinVelAxisYY C[62]
|
|
#define KinEnaAxisZZ 0x80000000
|
|
#define KinPosAxisZZ C[31]
|
|
#define KinVelAxisZZ C[63]
|
|
#define KinAxisUsed D[0]
|
|
#define KinVelEna D[0]
|
|
#endif //_PP_PROJ_H_
|