Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
Using the Dynamic Path as example, i need to calculate the points XYZ and execute then when finish recalculate new points and execute.
The problem is recalculate and refreshing the buffer with the new values.
How can restart the pointer / SMC_QUEUE to initial values so can refill the table with the new points??
Im doing the follow steps after execute once, and the BUF not show the new values. STEP 1:
WHILE queueCount > 0 DO
queueCount := SMC_GetCount(poq:=ADR(QUEUE));
SMC_DeleteObj(poq:=ADR(QUEUE), queueCount-1);
END_WHILE
...
n:=0;
QUEUE.bEndOfList := FALSE;
STEP 2:
WHILE NOT QUEUE.bFull DO // when the Queue is full, wait until it has been processed by the following FBs
n := n + 1;
GEO.iSourceLine_No := n;
GEO.piStartPos := GEO.piDestPos; // copy last destination
IF n = 1 THEN
GEO.piStartPos.dX := Eixo_X.fSetPosition; // copy current position
GEO.piStartPos.dY := Eixo_Y.fSetPosition; // copy current position
GEO.piStartPos.dZ := Eixo_Z.fSetPosition; // copy current position
END_IF
GEO.iMoveType := LIN; // generate linear movement
GEO.iObjNo := GEO.iObjNo + 1; // calculate number
GEO.piDestPos.dX := PVL.tabValores[n-1,1]; // generate position
GEO.piDestPos.dY := PVL.tabValores[n-1,2]; // generate position
GEO.piDestPos.dZ := PVL.tabValores[n-1,3]; // generate position
SMC_CalcLengthGeo(pg := ADR(GEO)); // calculate length of object with the help of the standard function
SMC_AppendObj(poq:=ADR(QUEUE), pgi:=ADR(GEO)); //append object to que
Thanks.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
Using the Dynamic Path as example, i need to calculate the points XYZ and execute then when finish recalculate new points and execute.
The problem is recalculate and refreshing the buffer with the new values.
How can restart the pointer / SMC_QUEUE to initial values so can refill the table with the new points??
Im doing the follow steps after execute once, and the BUF not show the new values.
STEP 1:
WHILE queueCount > 0 DO
queueCount := SMC_GetCount(poq:=ADR(QUEUE));
SMC_DeleteObj(poq:=ADR(QUEUE), queueCount-1);
END_WHILE
...
n:=0;
QUEUE.bEndOfList := FALSE;
STEP 2:
WHILE NOT QUEUE.bFull DO // when the Queue is full, wait until it has been processed by the following FBs
n := n + 1;
GEO.iSourceLine_No := n;
GEO.piStartPos := GEO.piDestPos; // copy last destination
IF n = 1 THEN
GEO.piStartPos.dX := Eixo_X.fSetPosition; // copy current position
GEO.piStartPos.dY := Eixo_Y.fSetPosition; // copy current position
GEO.piStartPos.dZ := Eixo_Z.fSetPosition; // copy current position
END_IF
GEO.iMoveType := LIN; // generate linear movement
GEO.iObjNo := GEO.iObjNo + 1; // calculate number
GEO.piDestPos.dX := PVL.tabValores[n-1,1]; // generate position
GEO.piDestPos.dY := PVL.tabValores[n-1,2]; // generate position
GEO.piDestPos.dZ := PVL.tabValores[n-1,3]; // generate position
SMC_CalcLengthGeo(pg := ADR(GEO)); // calculate length of object with the help of the standard function
SMC_AppendObj(poq:=ADR(QUEUE), pgi:=ADR(GEO)); //append object to que
Thanks.