Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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());
        }