Describir: Object-Oriented Modeling, Simulation and Automatic Generation of PLC Ladder Logic