# Core Concepts ## Brief Introduction This file explains the concepts of States and strategies, needed to modify the different programs. ## State concepts The emulator operates on a state machine with three core states: * **Standby**: The equipment is idle but ready. * **Running**: The equipment is active and operational. * **Fail**: The equipment has encountered a fault condition. * **Other**: It's possible to add more states, but new states need to be generated in the core library as well; consider use the 3 basic states before adding more. ## Strategy concepts The emulator is able to run different predefined strategies to control the modbus registers, this is the list of available strategies: * **Single Value**: This strategy will set a value to a setpoint, it has the option to add noise to the value. * **Random**: Random value between 0 and 100, can be used to L1 testing. * **Ramp**: The selected value is going to be adjusted in a constant step rate, to a setpoint, setpoint can be updated in execution time. * **Saw Wave**: Moves the value between two sepoints with constart increments, once it reaches the limit it will reverse direction. * **Square Wave**: Constant change between two sepoints with instant change between them. * **PID**: Full PID controller, you need to give a output, input and setpoint modbus address, PID calculate the output based on the input and the PID constants. * **Totalizer**: Constant increment of a value, to emulate run hours. For more details read the specific strategy implementation