FlexProfile position jump at cam switch and unwanted repositioning after master stop

Hello,

While doing some test on the CtrlX Flexprofile I found a strange behaviour after a cam profile switch.

Configuration:

Real Axis Linear Module = 1000

FB Settings:

 

Flexprofile 0 =>

{
    "name": "0",
    "segments": [
        {
            "gain": 360,
            "range": 360,
            "v0": 0,
            "a0": 0,
            "j0": 0.001745329252,
            "v1": 0,
            "a1": 0,
            "j1": 0.001745329252,
            "limV": 1.874999776392,
            "limA0": -0.010076661611,
            "limA1": 0,
            "limJ0": 0.001745329252,
            "limJ1": 0,
            "lambda": 0.5,
            "syncType": "SEG_DEFAULT",
            "lawType": "REST_IN_REST_POLYNOMIAL_5",
            "pointTableReference": "",
            "master": 1,
            "camBuilderSegmentData": "{\"a0Formula\":null,\"a1Formula\":null,\"AmaxFormula\":null,\"IsPointsTable\":false,\"Description\":\"\",\"j0Formula\":null,\"j1Formula\":null,\"JmaxFormula\":null,\"MasterRangeFormula\":null,\"gainFormula\":null,\"v0Formula\":null,\"v1Formula\":null,\"VmaxFormula\":null,\"MotionLawGUID\":\"45bffbdb-1943-4164-a718-20d09149ff08\"}"
        }
    ],
    "events": [],
    "masterAxsRefVel": 1,
    "camBuilderProfileData": "{\"AdditionalCamData\":null,\"AdditionalProfileData\":{\"LastCamShaftDistance\":360.0,\"LastNumCamPoints\":1024,\"LastContainsLastPoint\":true,\"LastOperatingModeFilterIndex\":0},\"ApplicationCamData\":null,\"CommonCamData\":null,\"ProfileData\":{\"ChangeStartAndEndVelocity\":1,\"MasterModulo\":360.0,\"MasterPositionUnit\":\"Degree\",\"MasterStartPosition\":0.0,\"MasterVelocityFormula\":null,\"MasterVelocityUnit\":\"RPM\",\"SlaveAccelerationUnit\":\"RAD_SEC2\",\"SlaveJerkUnit\":\"RAD_SEC3\",\"SlavePositionUnit\":\"Degree\",\"SlaveStartPosition\":0.0,\"SlaveVelocityUnit\":\"RPM\",\"Variables\":null,\"Header\":{\"ApplicationName\":null,\"ApplicationVersion\":null,\"CamPackageVersion\":null,\"CreationDate\":\"2023-12-04T11:43:52.7100535+01:00\",\"Description\":null,\"GUID\":\"a2ec42c5-2708-4152-8b73-5f0b0bbad063\",\"LastChangeDate\":\"2023-12-04T14:43:17.4997618+01:00\",\"MotionStepCount\":1,\"Name\":\"0\",\"Specification\":\"GeneralProfile\",\"SupportedOperatingModes\":\"EMP, FlexProfile\"}}}"
}
 
FlexProfile 1 =>

 

 
{
    "name": "1",
    "segments": [
        {
            "gain": 360,
            "range": 180,
            "v0": 0,
            "a0": 0,
            "j0": 0.013962634016,
            "v1": 0,
            "a1": 0,
            "j1": 0.013962634016,
            "limV": 3.749999552783,
            "limA0": -0.040306646444,
            "limA1": 0,
            "limJ0": 0.013962634016,
            "limJ1": 0,
            "lambda": 0.5,
            "syncType": "SEG_DEFAULT",
            "lawType": "COMMON_POLYNOMIAL_5",
            "pointTableReference": "",
            "master": 1,
            "camBuilderSegmentData": "{\"a0Formula\":null,\"a1Formula\":null,\"AmaxFormula\":null,\"IsPointsTable\":false,\"Description\":\"\",\"j0Formula\":null,\"j1Formula\":null,\"JmaxFormula\":null,\"MasterRangeFormula\":null,\"gainFormula\":null,\"v0Formula\":null,\"v1Formula\":null,\"VmaxFormula\":null,\"MotionLawGUID\":\"2E3EF69C-9A43-49ef-B064-B4E86DCD9535\"}"
        },
        {
            "gain": -360,
            "range": 180,
            "v0": 0,
            "a0": 0,
            "j0": -0.013962634016,
            "v1": 0,
            "a1": 0,
            "j1": -0.013962634016,
            "limV": -3.749999552637,
            "limA0": -0.040306646442,
            "limA1": 0,
            "limJ0": -0.013962634016,
            "limJ1": 0,
            "lambda": 0.5,
            "syncType": "SEG_DEFAULT",
            "lawType": "COMMON_POLYNOMIAL_5",
            "pointTableReference": "",
            "master": 1,
            "camBuilderSegmentData": "{\"a0Formula\":null,\"a1Formula\":null,\"AmaxFormula\":null,\"IsPointsTable\":false,\"Description\":\"\",\"j0Formula\":null,\"j1Formula\":null,\"JmaxFormula\":null,\"MasterRangeFormula\":null,\"gainFormula\":null,\"v0Formula\":null,\"v1Formula\":null,\"VmaxFormula\":null,\"MotionLawGUID\":\"2E3EF69C-9A43-49ef-B064-B4E86DCD9535\"}"
        }
    ],
    "events": [],
    "masterAxsRefVel": 1,
    "camBuilderProfileData": "{\"AdditionalCamData\":null,\"AdditionalProfileData\":{\"LastCamShaftDistance\":360.0,\"LastNumCamPoints\":1024,\"LastContainsLastPoint\":true,\"LastOperatingModeFilterIndex\":0},\"ApplicationCamData\":null,\"CommonCamData\":null,\"ProfileData\":{\"ChangeStartAndEndVelocity\":1,\"MasterModulo\":360.0,\"MasterPositionUnit\":\"Degree\",\"MasterStartPosition\":0.0,\"MasterVelocityFormula\":null,\"MasterVelocityUnit\":\"RPM\",\"SlaveAccelerationUnit\":\"RAD_SEC2\",\"SlaveJerkUnit\":\"RAD_SEC3\",\"SlavePositionUnit\":\"Degree\",\"SlaveStartPosition\":0.0,\"SlaveVelocityUnit\":\"RPM\",\"Variables\":null,\"Header\":{\"ApplicationName\":null,\"ApplicationVersion\":null,\"CamPackageVersion\":null,\"CreationDate\":\"2023-12-04T11:50:48.5011634+01:00\",\"Description\":null,\"GUID\":\"38ce51a9-1442-4d57-bfd1-9791e4e56d0a\",\"LastChangeDate\":\"2024-01-03T14:29:26.3722696+01:00\",\"MotionStepCount\":2,\"Name\":\"1\",\"Specification\":\"GeneralProfile\",\"SupportedOperatingModes\":\"FlexProfile\"}}}"
}
 
When the profile switch from cam 0 to cam 1 there is a jump with a 2 mm negative positioning
 
 
 
Then if we switch back to profile 0 and stop the master axis the slave axis move to unwanted position
returning to the prevoius step because it miss the 2 mm jump it took at the 1st profile switch

 

 

 

Can you help me to understand why we have this behaviour ?

Many Thanks
Giuseppe
 
 
Best reply by giustola

Hello,

I found the reason for the strange behavior I had encountered and it was due to an incorrect setting of the coupling mode of the new profile which was set to SLAVE_ORIGIN_MASTER_ORIGIN and which therefore did not allow the axis to synchronize with the second profile because it was trying to bring the slave axis back in origin and therefore to zero. By setting the ProfileEntry as shown in the figure below, the profile change works correctly.

 

 

Many Thanks to Kohl Juergen (DC-AE/STS1) <[email protected]>

Giuseppe

 

View original
1 reply