Saw your post, so thought I’d make a comment
It looks like you only have safemove basic, so you don’t have the protective bubble options to my knowledge. Safemove-Advanced should only be a robotware keystring away, but I believe that is an expensive option.
The way I had robot collision confirmed was to used well planed world zones and logic within motion tasks, and that was from very experienced ABB R&D & Automotive Project robot guys that do our in-house training. The well planed parts of the worldzones is to avoid the points raised about fast movement, and/or cutting corners, oversize tools etc.
A current project I’m pushing a lot harder on speed and moving the simple logic from WaitDO, to TrigCheckIO. Basically switching, from asking before proceeding into the zone, too assuming good and this avoids slow fine points, but it will hit the anchors hard if it happens to be potential crash (The PLC should be avoiding these anyway)
This is potentially overkill, but I also hook up both robots worldzone outputs via a cross connection to another virtual signal. If this goes high, then it triggers an interrupt to do an quick stop and fault. It is effectively just another layer of protection. You can also use collision detection, which granted doesn’t stop the collision, but should lessen the damage if all else fails.
You could look at getting the upgraded multimove-synchronized option as well.
I’ve hit the worldzone limit as well(Seems like 20 per motion task, not controller thou), and have created “virtual” worldzones in another static task as you’ve mentioned. However, I only use that for process, and data control, I wouldn’t be trusting it for inter robot collision avoidance. Possibly look at temporary worldzones, but I dont think they’ll help - my understanding is they still use the worldzone resources and your just turning them on/off
You can, power cycle the controller, switch modes and move the worldzone allocation around. Maybe it can’t help you in production, but i have a different worldzone group for error recovery.