The SIEMENS S7 300 series has interupt driven capabilities which can get you fast program control and advanced math capabilities. One downfall however is that as you increase you output buffer, once it hits 32767 it flips to ZERO and freezes. You have to add extra logic to limit the output...