As already posted, there are many good reasons for simulation, one of the most important is to get the software working as close to what the customer requests. Other reasons not mentioned yet is customer testing (pre FAT testing). One of my largest customers always insists on testing the software before going to site, this used to be a major task as simulators were rare if not not like rocking horse ****. In the early days, testing consisted of the full set of racks, outputs driving banks of relays to simulate inputs switching, bespoke communication software to simulate weighers, temperature controllers etc. One of the first Simulation packages we used still required the main processor and consisted of a card that fitted on the main rack (Siemens S5) a PC interface card and software written so that the I/O could be simulated using pascal. It was written by an ex Siemens engineer in Germany and was called Prosys.
One other benefit was that the customer would send a group of operators to our offices for a week where they could use the simulation to get pre on-site training. This proved invaluable, they learned how to run the system, got comfortable, was good for relations (how many times have you been on site and felt the whole factory staff were against you). It also allows you to find the bubba factors that operators seem to find without destroying a shifts production output. All this is very important as most engineers who have to commission on-site know that usually the project is running late, the time is short & there is nothing worse than some production manager breathing down your neck while your trying to sort a problem.