FORUM CTRLX AUTOMATION
ctrlX World Partner Apps for ctrlX AUTOMATION
09-10-2021 09:24 AM
Hello,
I'm having problems to understand how the robot path accelertion works on our FB in the PlcOpen library ( the same behaviour on the CXA_Motion function) . As you can see in the attached screenshots to get a trace difference in the acceleration feedback and in the cycle time I had to change the acceleration settings from 5000 mm/s2 ( 1st case ) to 1 mm/s2.
This is very strange to me but maybe I'm missing something.
Please could you have me to understand and eventually corret what generate that behaviour ?
Many Thanks
Giuseppe
Solved! Go to Solution.
09-10-2021 11:12 AM - edited 09-10-2021 11:40 AM
I am a little confused because in your code you are using functions, that does not exist. Did you write your own function blocks from the motion functions?
It would also be easier for us if you would have sent us the complete project or appData, not only this program snippets.
It could happen that you are simply missing the ramp values. So for me there are some open questions:
My measurement with your unchanged command values (vel=200,acc=dec=1000,jrk=100000) increased limits and standard units. There I miss the ramping up because of the high acceleration 1000m/s2:
EDIT: My measurement with your unchanged command values (vel=200,acc=dec=1000,jrk=100000) increased limits and changed units:
09-10-2021 01:48 PM
Hello,
sorry I miss the MC_AddAxisToGroup in the previous program, now I added it ( see new attached file ) but the result are quite the same.
I also added some new screenshots about the trace and the axis and kinematics settings I have.
Please look at the action aPlcOpen in the PLC_PROG program.
Please let me know if you need more infos
Waintng for your feedback.
Many thanks
Giuseppe
09-10-2021 01:52 PM
09-10-2021 02:02 PM - edited 09-10-2021 02:04 PM
In your screenshots you gave your self the answer I guess:
You think you are commanding mm/s² but the motion kernel calculates m/s² so it is a extremely fast acceleration (5000m/s²) and in 80ms, what then must be the cycle time of your task, the ramp up of the values is simply already done from one to the other measuring point.
Please have look to my second measurement in my previous post where I changed the units.
09-10-2021 03:07 PM
Hello,
Ok thanks a changed the measuring units and now it OK.
One question : is it posisble to avoid the acceleration jump at each block change during the robot path that is shown in the screenshot below ?
09-10-2021 03:17 PM
What exactly do you like to avoid there? The actual acceleration will always change when velocity changes. It only looks like a peak because the time it is not zero is that short. If you like to keep it lower command less or use a lower jerk.
09-10-2021 03:32 PM
But in this case the velocity is the same in all the programmed point. There is no velocity change as you can see in the screenshot. So why we have an acceleration jump each block change .
With the old control (MLC/XM) using continuos slope this was not happening.
Just to understand the behaviour.
Many Thanks
Giuseppe
09-18-2021 04:00 PM
As soon as you are using cont slope in the ctrlX MOTION it will also not happen there. But for now you are using block slope. So what you see in the values is always the actual running command. That means that the peak at 13s is the change between the first and the second command while blending.
Also your still having a quite low resolution in your trace so you cannot see any ramping up or down or even at 13,25s it seems your record is missing a peak.
09-20-2021 08:32 AM - edited 09-20-2021 08:34 AM
Hello
OK Thanks, but How could I set the Contonuos Slope ? In the MLC/XM there is an FB input parameter to do it but I could not find it in the same FB in CtrlX. Could you help me ??
Many Thanks
Giuseppe
09-20-2021 09:13 AM
Continuous slope is planned for release RM21.11 (1V12) end of November. So it cannot be used at the moment.
05-09-2023 10:17 PM
It looks like continuous slope is released now. I have been unable to successfully blend using this mode. My positions form a square, so I would expect a circle. Currently each point is moved to individually with no blending.
2: // Set modes, velocity, acceleration and deceleration
arKinCtrl_gb[uiKinematicsIndex].CoordMode.DynValues.Velocity := 20;
arKinCtrl_gb[uiKinematicsIndex].CoordMode.DynValues.Acceleration := 2;
arKinCtrl_gb[uiKinematicsIndex].CoordMode.DynValues.Deceleration := 2;
arKinCtrl_gb[uiKinematicsIndex].Admin._OpModeBits.MODE_COORD_POS_LIN_ABS := TRUE;
// SRG Additions (Set coordination mode to SlopeType)
arKinCtrl_gb[uiKinematicsIndex].CoordMode.SlopeType := MB_KIN_CONT_MOTION.ST_CONTINUOUS_SLOPE;
ackCoordMode := arKinCtrl_gb[uiKinematicsIndex].CoordMode.SlopeType;
IF arKinStatus_gb[uiKinematicsIndex].Admin.CmdDone AND ackCoordMode = MB_KIN_CONT_MOTION.ST_CONTINUOUS_SLOPE THEN
uiState := uiState + 1;
END_IF
3: // move absolute - buffer commands
arKinCtrl_gb[uiKinematicsIndex].CoordMode.Point := arPoints[0];
aruliReturnedCmdId[0] := arKinCtrl_gb[uiKinematicsIndex].Admin.mTriggerMoveCmd(_OpMode:= ModeCoordPosLinAbs, Buffered:= TRUE, UserID:=CONCAT('ID ', TO_STRING(uiMyOwnId)) );
uiMyOwnId := uiMyOwnId + 1;
arKinCtrl_gb[uiKinematicsIndex].CoordMode.Point := arPoints[1];
aruliReturnedCmdId[1] := arKinCtrl_gb[uiKinematicsIndex].Admin.mTriggerMoveCmd(_OpMode:= ModeCoordPosLinAbs, Buffered:= TRUE, UserID:=CONCAT('ID ', TO_STRING(uiMyOwnId)) );
uiMyOwnId := uiMyOwnId + 1;
arKinCtrl_gb[uiKinematicsIndex].CoordMode.Point := arPoints[2];
aruliReturnedCmdId[2] := arKinCtrl_gb[uiKinematicsIndex].Admin.mTriggerMoveCmd(_OpMode:= ModeCoordPosLinAbs, Buffered:= TRUE, UserID:=CONCAT('ID ', TO_STRING(uiMyOwnId)) );
uiMyOwnId := uiMyOwnId + 1;
arKinCtrl_gb[uiKinematicsIndex].CoordMode.Point := arPoints[3];
aruliReturnedCmdId[3] := arKinCtrl_gb[uiKinematicsIndex].Admin.mTriggerMoveCmd(_OpMode:= ModeCoordPosLinAbs, Buffered:= TRUE, UserID:=CONCAT('ID ', TO_STRING(uiMyOwnId)) );
uiMyOwnId := uiMyOwnId + 1;
05-10-2023 07:20 AM - edited 05-10-2023 03:44 PM
Please have a look to this topic for some information about continuous blending or to the official documentation of the ctrlX CORE - MOTION app.
05-10-2023 03:32 PM
Hi,
Will the continuos motion slote be implemented in the CXA_PlcOpen Library as a paramenter input in the kinematic motion command function blocks ( i.e.
) like it was on the MLC/XM PlcOpen library?
If yes on which Ctrlx Works realesa will it be implemented ?
Many Thanks.
Giuseppe
05-10-2023 03:55 PM - edited 05-10-2023 03:55 PM
Currently there are no plans to implement such command options into the command function blocks as we restructured our system architecture and the command options will not only be blending but have various functionality. To combine all of these in one interface (one function block) could get quite confusing/overloaded for users.
The only way would be to create such function block on your own, like we did similar in our "Template for cartesian handling systems". See method mMoveKin2TeachPoint.