We just found and fixed a bug that might be related. The conditions that demonstrate it are: 1) A running retentive program block, that 2) contains code that would cause the program to suspend rather than complete (loops, yields) and 3) at least 1 run mode edit. Power down, power up, boot loop.
All of these conditions are present.
Another thing that comes to mind is there was a device driver error.Originally I started with the BRX+Analog card, then I realized we needed more I/O, so I added that, then decided to swap them around (with power off, and configuration on auto).I don't recall that I had an issue before that, but then again I wasn't working on it on a daily basis.
I'm not totally convinced that it's not related to how I structured the code.
I like to do the following,
Say the equipment contains a number of fans,pumps,etc. I generally create a timer block, and then place them in a loop (unyielding). It keeps the code clean especially if there is a lot of equipment involved. I noticed some of them don't work anymore. I couldn't find a obvious reason not to, but decided to fix it later.
For some reason the EA9 series touchscreens are slower to respond to touch and refresh rates, and I figured maybe it was due to a high PLC scan time, so I made all loops yielding (timers and all) to decrease the scan and test it out. Needless to say it wasn't related to the PLC scan time but rather the HMI.
I returned everything back to unyielding (or I think I did).
I'll do some digging next week and email the code.