What is the reason for the MSG_DELAY_TMR triggering MBS_SlotX.CONTROL.GetStatus? To my knowledge, the AOI takes care of everything internally. I expect that’s triggering something at the wrong time. Try to eliminate that and see what happens.
Edit: I'm using the AOI for that module with IO size 60 so there might be some differences. I looked through the AOI and see that GetStatus is unlatched but not set. Maybe externally triggered is correct, I haven’t used it. If that’s the case, use a ONS to latch the bit when the timer is done instead of OTE.
The benefit of the OTL suggestion depends on how the timer is triggered. If .DN is on one scan only, this might not help.
ProSoft has great support. If that doesn’t fix it, reach out to them.
Some more editing: It sounds like you’re building write commands and triggering them. I've only created one EventCmd write with that module, so I’m far from an expert and these are somewhat guesses.
Make sure PointCount doesn’t go too large. The comments say max of 50 words or 800 bits.
When triggering CmdTrigger, use a ONS to CLR EventCmdStatusReturned. Wait for EventCmdStatusReturned NEQ 0 before unlatching the command and setting up the next command. Use a timeout timer to unlatch the trigger if it’s still on after a couple seconds when a command fails.