If you monitor places in your program where you could possibly hang (you should do this anyway), you can do soft resets on programs. However, if you desire a hard reset, an old fashion hardware timer that requires a pulse from the PLC periodically or else the timer times-out and opens a NC relay to the main power to the CPU.