...
For the IPA controller, an mdot_IPA reference is entered into the controller, which is demanding some IPA mass flow rate. The controller subtracts these two mass flow rates to get the mass flow rate error. Then, it passes that mdot_err into a PID controller, which computes theta_dot*sqrt(dP_valve). If we focus on theta_dot first, we can see that theta_dot is just the rate of change in valve angle required to bring the mdot_err to zero. We multiply this by sqrt(dP_valve) to remove nonlinearity from the main loop. Then, theta_dot is isolated, and passed through the plant dynamics of the system. These dynamics allow us to calculate the new pressure drop across the IPA injector as a result of this slight change in valve angle. Then, we can scale this by the rest of the orifice mdot equation to obtain mdot_IPA, which is fed back into the beginning of the controller.
Moving onto the N2O controller, we see that it controls N2O indirectly via measuring the chamber pressure, and not the mass flow directly. This is an assumption that we'll have to validate during testing, as it was inspired from researchers at Airborne Engineering who made a throttleable engine with an O/F of 5 (ours is ~2.75). Using pc, which is obtained from a chamber pressure transducer, we can pass pc through a controller to give us a desired angle that will achieve the desired N2O mass flow rate. Then, we can compute the new chamber pressure that results from this new valve angle, which is then fed back to the beginning of the controller.
Additionally, there is a feedforward (KFF) term added into the controller. This basically makes the control system more efficient; a feedforward term gives an initial "guess" for the actuator input to reach the desired setpooint faster. This means that the feedforward term pre-positions the actuator to a position that results in a pretty close pc so that the PID only has to make small corrections.