lovu Posted July 4, 2019 Share Posted July 4, 2019 struct coorddata* csdata; unsigned inttt=1; void user_plcc() { pshm->P[0]=GetCoordPos(inttt,csdata); pshm->P[1]++; pshm->P[2]=csdata[6].data; } Hello there, I tried to query axis actpos in cplc, using function GetCoordPos(). Axis X/Y/Z were assigned to CS1 and X positon is non-zero. When running this cplc, p0..p2 always stays 0, ending up with background WDT trip Sys.WDTFault=1.Function GetCoordPos() seems to have been got stucked all the time. Anyone knows? Link to comment Share on other sites More sharing options...
steve.milici Posted July 10, 2019 Share Posted July 10, 2019 I suspect the function usage is not correct. Please send me your full project to test at ODT's technical support (ATTN: Steve): ODT-Support@omron.com Link to comment Share on other sites More sharing options...
Omron Forums Support Posted July 16, 2019 Share Posted July 16, 2019 The GetCoord... API functions are particularly difficult to use. Here is an example bgcplc that puts the position of the X axis motor in coordinate system 1 into P2. void user_plcc() { struct coorddata MyCoordData[32]; pshm->P[0] = (double) GetCoordDesPos(1, &MyCoordData[0]); double MyDesPosX; pshm->P[1] = (double) GetCoordAxisData(2, (char *)"x", &MyCoordData[0], &MyDesPosX); pshm->P[2] = MyDesPosX; // One Shot Bgcplc pshm->UserAlgo.BgCplc[0] = 0; } Link to comment Share on other sites More sharing options...
lovu Posted August 1, 2019 Author Share Posted August 1, 2019 Oh, got it. Thank you so much, steve and Eric! Link to comment Share on other sites More sharing options...
lovu Posted August 1, 2019 Author Share Posted August 1, 2019 B.T.W, function GetCoordDesPos() seems to add very much load to CPU[0], maybe it's better for users to perform axis position read in script environment. Link to comment Share on other sites More sharing options...
Recommended Posts