cancel
Showing results for 
Search instead for 
Did you mean: 

Kinematic/Axis Interface state machine documentation (safe motion problem)

Kinematic/Axis Interface state machine documentation (safe motion problem)

ctrlXnovo
New Contributor

Is there a state diagram of how the different states move from state to state in the kinematic interface and the axis interface?

I would like to know the correct sequence for moving through these states.  I have an issue when the drives are put in STO that the state machine becomes unresponsive.   I cannot find a good explanation of how the transitions between states are supposed to be commanded.  The state machine appears to get lost, no longer controlling the drive states.  As of now, only a cold reset on the PLC will make it recover.  I am not sure if I am doing something incorrectly or not. 

ctrlXnovo_0-1724344534486.png

ctrlXnovo_1-1724344682561.png

 

 

 

5 REPLIES 5

Sgilk
Contributor

@ctrlXnovo ,

Does this help? There's a lot more relevant documentation adjacent to the links below.

Motion State Machine

Sgilk_1-1724353894894.png

 

Kinematic Object

Sgilk_0-1724353803886.png

Kinematic Interface 

Axis Interface

I appreciate the information and I had found these too.  But I was looking for something directly related to the interface commands.  To explain the specifics of my problem, if I have an EStop on my system, it puts the drives in STO.  I have not figured out a way to re-attach them to the kinematic after this.  The drives are stuck in AB after this event.  No command of the drive, for example to ModeAH has an effect.  The kinematic commands also have no effect, moving from Mode_Coord_AB to _AH or _Standby, etc.  

My thought is that when an STO event occurs on the axes that are joined to the kinematic, that I need to command the kinematic in a certain way to follow the actual drive state.  And then, I'm suspecting, there is a sequence to recover from the STO state once the safety controller releases the drive from STO.  But I have not found a way to do this yet.  Right now, the only sure way is to Cold Stop the PLC which is similar to a power cycle.  Then the kinematic works as expected to coordinated the axes correctly.

CodeShepherd
Community Moderator
Community Moderator

Could you please the versions of the ctrlX OS, ctrlX MOTION, ctrlX PLC and ctrlX PLC Engineering?

Also the used versions of the CXA_MotionInterface and MotionInterfaceUser would be helpful to check what could be going wrong or give you further information.

As we are having the same application for Cartesian robots and STO axis working fine, we need to check why it could not be working on your side.
Recovering to COORDINATED_MOTION from STO using our handling template is quite simple:

  1. Remove STO
  2. Clear error
  3. Retrigger OpMode in the kinematic interface

ctrlX OS - 2.4.0, ctrlX Motion - 2.4.3, ctrlX PLC - 2.4.0, ctrlX PLC Engineering - WRK-V-0204.1, CXA_MotionInterface - 2.4.0.0, MotionInterfaceUser - 2.4.0.0

I think this condition is a result of making many program changes in different states.  We are commissioning a machine and the error is not consistent.  A "Reset Cold" on the PLC always seems to bring it back.  

But my original question was about where to find documentation.  As I commission the machine and run into errors I am wondering if my commands are wrong.  The suggestion to Retrigger the OpMode is helpful but I'm not sure what this does exactly or why it is needed.  The only mention of it I can find is in the library documentation where it simply says "Restart the same OpMode again".  Is there any description of why to use the RetriggerOpMode command, or what state that it is intended to recover from?  I was hoping there was a description of how the drives interact with the kinematic.  In some cases, one drive of the three coordinated axes will enable but not the others.  I'm not sure why.  But again, it could be because we are making many program downloads and online changes.

 

"Restart the same OpMode again" is exactly describing what it does. If one opmode is commanded but from external interference the actual mode is different the retrigger is used to just tell the MotionInterface to switch to the still/currently commanded opmode again.

If many online changes are made, especially when new variables/pointers are created a "clean all" and complete download is sometimes needed to recreate storage stack and reinitialize pointers. 

Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist