We are moving! We are currently migrating our community to the new Bosch Connected Industry Online Portal. The community will be available latest in the new year again, until then it will be in read-only mode. Click here for more information.
09-06-2022 05:00 AM
When I change the UnitStateReq to OPERATIONAL, as opposed to BACKBONE_CONTROLLED, then the backbone signals related to the Exec state machine are also not executed anymore it seems.
Today I learned this very surprising fact when I was debugging why a switch of operation modes would not trigger a unit's cancel as I expected. I always thought that the UnitStateReq only affects the Unit state, as the name also suggests, but not that it would also affect the Exec state. I guess this behavior is intentional. If so, then I would like to raise the point if this is really a good idea. Which use case exists where this is behavior desired?
If you think this is exactly how things should be, then I want to stress that this needs some documentation. I scanned the training book and couldn't find this mentioned (2019 version). Also I could not find a descriptive comment in the NxBase library where I would expect it. In particular the OpconUnitStateReq enum could use a serious hint that it also affects the behavior of the exec state machine. I was really surprised by this behavior and I thought I understood quite well how the framework works. Also debugging this was not easy at all.
Solved! Go to Solution.
09-07-2022 08:57 AM
If you set the UnitState explicitly to OPERATIONAL, it indeed means that you want to make this unit independent of the parent unit. Therefore the behaviour is intended.
Example use case:
You have a pump or belt motor that shall run always, independent of operation mode changes. You can put the UnitState to OPERATIONAL to prevent a cancel because of operation mode change.
Disadvantage is that you have to manage the cancel because of an emergency stop in your application.
A whole framework documentation is currently in work.