I have a KRC4 that is using external, pneumatic brakes on the E1 axis, in addition to the internal brake of the servo motor. Now, a few years ago, I had a similar setup on a KRC2 that I controlled by SPS-monitoring the $BRAKE_SIG signal and opening/closing the pneumatic brakes whenever the servo brakes opened or shut. It worked wonderfully.
But on the KRC4, the braking groups seem to work a bit differently (no SBM modules anymore, for one thing). And the bigger difference that I failed to account for is that, on the KRC2, the E1 axis was not kinematically integrated, while on my KRC4 setup it is. So, right now, the E1 brakes open and close together with arm brakes, even if E1 is not moving.
What I *need* is to open/close the pneumatic brakes only when E1 is going to move, ignoring motion of the arm. And I can't add this into the motion program, because my motion programs are all OLPs generated from simulation. So I need some way to monitor for motion of E1 in the SPS, and do it quickly enough that I can open the pneumatic brakes before the axis starts moving (closure is rather less time-critical). So I can't simply compare $AXIS_ACT.E1 cyclically to a previous reading, b/c by the time I see that move, I'm already grinding metal.
The best solution would be to set up E1 to brake separately from the arm, using $BRK_MODE bit 3. But the manual is rather unclear about how that will interact with kinematically integrated external axes. I'm not going to be able to experiment with $BRK_MODE for a few days (robots are tied up in other testing), so I thought I'd beat the bushes and see what other clever ideas people might have.