#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_