Example #1
0
        public override void GetInstance(List <PIDConstant> constants, SimpleDynamicObject dynObj, double baseInterval, List <double> cumulativeErrRanges)
        {
            //if (dynObj != null)
            //{
            //    //参数匹配检测
            //    if (dynObj.Interval != baseInterval)
            //    {
            //        string msg = InnerArgumentException.GenInfo(nameof(dynObj.Interval), dynObj, nameof(baseInterval), baseInterval);
            //        throw new InnerArgumentException(msg);
            //    }
            //}
            this.DynamicObject = dynObj;

            if (constants != null && constants.Count >= 2 && dynObj != null)
            {
                this.BaseInterval = baseInterval;
                this.ConstantIn   = constants[0];
                this.ConstantOut  = constants[1];

                if (constants.Count > 2)
                {
                    this.AuxiliaryConstants = constants.GetRange(2, constants.Count - 2);
                }
                this.ComplexRadioCollection         = new ComplexRadioCollection(this.ConstantIn, this.ConstantOut, this.AuxiliaryConstants, dynObj.UpdateFrequency, dynObj.WriteTimes, dynObj.FetchType, dynObj.Difference, cumulativeErrRanges, this.BaseInterval);
                this.ComplexRadioCollection.Maximum = this.Maximun;
                this.StrategySwitch = true;
            }
        }
        public override void GetInstance(PIDConstant constant, SimpleDynamicObject dynObj, double baseInterval)
        {
            //if (dynObj != null)
            //{
            //    //参数匹配检测
            //    if (dynObj.Interval != baseInterval)
            //    {
            //        string msg = InnerArgumentException.GenInfo(nameof(dynObj.Interval), dynObj, nameof(baseInterval), baseInterval);
            //        throw new InnerArgumentException(msg);
            //    }
            //}
            this.DynamicObject = dynObj;

            if (constant != null && dynObj != null)
            {
                this.BaseInterval            = baseInterval;
                this.RadioConstant           = constant;
                this.RadioCollection         = new RadioCollection(this.RadioConstant, dynObj.UpdateFrequency, dynObj.WriteTimes, dynObj.FetchType, dynObj.Difference, this.BaseInterval);
                this.RadioCollection.Maximum = this.Maximun;
                this.StrategySwitch          = true;
            }
        }
 /// <summary>
 /// 用于复杂比例控制器
 /// </summary>
 /// <param name="constants">PID回路参数列表</param>
 /// <param name="dynObj">基础动态修正对象</param>
 /// <param name="baseInterval">执行间隔</param>
 /// <param name="cumulativeErrRange">累计误差范围列表</param>
 public virtual void GetInstance(List <PIDConstant> constants, SimpleDynamicObject dynObj, double baseInterval, List <double> cumulativeErrRange)
 {
 }
 /// <summary>
 /// 用于比例控制器
 /// </summary>
 /// <param name="constant">PID回路参数</param>
 /// <param name="dynObj">基础动态修正对象</param>
 /// <param name="baseInterval">执行间隔</param>
 public virtual void GetInstance(PIDConstant constant, SimpleDynamicObject dynObj, double baseInterval)
 {
 }