示例#1
0
        public static ControlSystemDataSample FromCloseSample(CloseLoopDataSample closeLoopSample)
        {
            var data = new ControlSystemDataSample();

            data.time             = closeLoopSample.time;
            data.mode             = ControlSystemMode.CloseLoop;
            data.input            = closeLoopSample.input;
            data.error            = closeLoopSample.error;
            data.controllerOutput = closeLoopSample.controllerOutput;
            data.systemOutput     = closeLoopSample.systemOutput;
            return(data);
        }
        public CloseLoopDataSample Initialize(double currentTime, double dt)
        {
            controller.Initialize(dt);
            double systemOutput            = system.Initialize(dt);
            CloseLoopDataSample dataSample = new CloseLoopDataSample()
            {
                time             = currentTime,
                input            = 0d,
                error            = 0d,
                controllerOutput = 0d,
                systemOutput     = systemOutput
            };

            return(dataSample);
        }
        public CloseLoopDataSample NextIteration(double input, double previousSystemOutput,
                                                 double currentTime, double dt)
        {
            double error                   = input - previousSystemOutput;
            double controllerOutput        = controller.NextIteration(error, previousSystemOutput, dt);
            double systemOutput            = system.NextIteration(controllerOutput, currentTime, dt);
            CloseLoopDataSample dataSample = new CloseLoopDataSample()
            {
                time             = currentTime,
                input            = input,
                error            = error,
                controllerOutput = controllerOutput,
                systemOutput     = systemOutput
            };

            return(dataSample);
        }