I was going to ask how you were sensing engine in operation.
How about a small coil pickup using the flywheel magnet? You could setup a relay to close when the engine gets to running speed. Close the relay with power from the coil. Sense the relay closure with the PLC. A resistor should be enough to control relay engagement so it doesn't happen below a certain RPM. Another thing, once the engine starts, it might take a few seconds to get up to speed, especially with a load. You might want to pause for a couple seconds before checking if engine is on after starting relay is disengaged.
I also didn't see how you are measuring the battery voltage. I assume there must be some analog to digital setpoint that has been programmed.
Hope I made a suggestion that will be of use to you. It has been a long time since I programmed PLC's. I did mostly ladder logic programming too but did a couple of projects with small text based programmers.
This could be easily done with a picaxe controller or pic for less money but would require you to build the interface circuitry to connect everything. The programming language is very similar for the picaxe.
I have been thinking about using a picaxe for the blower controller in a solar hot air heating collector. $3 chip, $2 temp sensor, few resistors & caps, small relay. $10 or so for on off, progammable blower control. Either small wall wart or solar & batteries for power. Will run from 3 to 5.5v.
I will be interested to hear how your project turns out. If you energize relays with your PLC, don't forget the back-emf clamping diodes. I know it's basic, but easy to forget.
Steve