You have a legacy control system that needs to be updated to new hardware and software while maintaining the same behavior as the old system. Building a system that simulates the environment of the legacy system can help. For example: if you are creating a new control system for a rocket launch facility, you would create a system that simulates the rocket and the launch facility.
The simulation system can verify that the new controls are behaving the same as the old without the risk of damage to the existing system. Using simulations can often speed up development cycles
Risks of updating a legacy control system:
- New system may not behave the same
- It is hard to test all of the situations on actual hardware
- Testing emergency or damage situations require creating these dangerous situations
Strategies for developing and using a simulation system
Compare data from the legacy system with data from the new system
Use the legacy system to gather data from the real system and from the simulation system. You can then use that data to compare how your new software performs relative to the legacy system.
Endigit used this strategy in updating the control system of a nuclear test reactor. We were able to successfully reverse their system by looking at the Assembly code and data from previous experiments.
Use simulation system to test dangerous or costly real life tests
Control systems in critical applications need to work correctly every time. For example, you would be hesitant to get on an aircraft whose flight control system had not been thoroughly tested. However, many of the scenarios are either costly or dangerous to perform live tests on. No one gets hurt and no equipment is damaged when a plane crashes in a simulation.
Keep simulation system after deployment to run tests on any changes
After the new control system is deployed, the simulation system can still be useful to test software changes in a controlled environment. Just because the new system has been deployed doesn’t mean that this system won’t need changes or additions that require testing. Tests can be automated to ensure that any changes made will result in desired behavior.