public void Pump_some_value_to_pid() { var t0 = 0.AsMinute(); var pid = new PIDAlgorithm(0.5, 0.5, 0.5, 0.0); pid.Reset(10.0.At(t0)); Timestamped<double> u; var success = pid.TryControl(8.0.At(t0.Add(5.min())), out u); Assert.IsTrue(success); Assert.AreEqual(4.At(t0.Add(5.min())), u); }
public void Control_linear_mosquito_with_pid() { var receivedSeries = new List<Timestamped<double>>(); var t0 = 0.AsMinute(); var setpoint = 10.0.At(t0);//.Add(5.min())); var pid = new PIDAlgorithm(0.5, 0.5, 0.5, 0.0); var mosquito = new LinearMosquito(2.0.In(1.min()), t0); var controlledMosqito = mosquito.ControlledBy(pid); controlledMosqito.Receive += (t) => receivedSeries.Add(t); controlledMosqito.Send(setpoint); var clock = new Clock(t0); clock.Subscribe(mosquito); clock.Tick(5.min()); //while (true) clock.Tick(1.min()); Assert.AreEqual(setpoint, receivedSeries.Last()); }