当前位置: 首页 > news >正文

建设聚美优品网站收流量费吗网站建设免费免代码

建设聚美优品网站收流量费吗,网站建设免费免代码,中国廉政建设网是正规网站吗,发布前面我们发布了一系列PID控制器相关的文章#xff0c;包括经典PID控制器以及参数自适应的PID控制器。这一系列PID控制器虽说实现了主要功能#xff0c;也在实际使用中取得了良好效果#xff0c;但还有很多的细节部分可以改进以提高性能和灵活性。所以在这篇中我们来讨论改进…前面我们发布了一系列PID控制器相关的文章包括经典PID控制器以及参数自适应的PID控制器。这一系列PID控制器虽说实现了主要功能也在实际使用中取得了良好效果但还有很多的细节部分可以改进以提高性能和灵活性。所以在这篇中我们来讨论改进PID控制器以实现正反作用转换。 1、提出问题 到目前为止我们讨论的情况都是在增大输出而控制变量也随之增加的情况而实际的情况并非完全如此。有些系统当我们增加输出时控制变量会随之减小这就是我们在此要讨论的问题。在前面的PID控制器开发中我们并未考虑这一问题为了增强PID控制器使用的适应性和方便性我们需要添加上控制PID输出方向的功能这就是所说的正反作用控制。 事实上PID控制器分为正作用和反作用两种这本身并没有什么本质上的区别。但需要使用者自己清楚是希望输出增加时输入也增加还是输出增加时输入减小并以此来确定控制器的正反作用。 2、分析设计 我们要添加上正反作用的功能该如何实现呢首先我们需要明白所谓正作用实际就是输出增加输入值也随之增加的控制方式而反作用就是输出增加输入值随之减小的控制方式。一个系统选择什么样的作用方式是由系统本身的特性决定的这包括被控对象的属性执行机构的操作特性等。换句话说我们没办法要通过对输入的处理实现作用方式但可以从输出的角度来实现我们的要求。 首先我们需要为PID对象添加一个描述正反作用的属性。这个属性的取值决定了控制器对象采用何种作用方式。 /*定义正反作用枚举类型*/ typedef enum ClassicPIDDR {DIRECT,       //正作用REVERSE       //反作用 }ClassicPIDDRType;/*定义PID对象类型*/ typedef struct CLASSIC {float *pPV;                   //测量值指针float *pSV;                   //设定值指针float *pMV;                   //输出值指针float *pKp;                   //比例系数指针float *pKi;                   //积分系数指针float *pKd;                   //微分系数指针uint16_t *pMA;                //手自动操作指针float setpoint;               //设定值float lasterror;              //前一拍偏差float preerror;               //前两拍偏差float deadband;               //死区float result;                 //PID控制器计算结果float output;                 //输出值0-100%float maximum;                //输出值上限float minimum;                //输出值下限float errorabsmax;            //偏差绝对值最大值float errorabsmin;            //偏差绝对值最小值float alpha;                  //不完全微分系数float deltadiff;              //微分增量float integralValue;          //积分累计量float gama;                   //微分先行滤波系数float lastPv;                 //上一拍的过程测量值float lastDeltaPv;            //上一拍的过程测量值增量ClassicPIDDRType direct;      //正反作用 }CLASSICPID; 其次我们要在初始化对象时对这一属性进行初始化。至于初始化的值就需要根据实际使用需求选择枚举。 最后还需要在PID控制器中实现这部分的操作。实现这一操作的方式有两种。一种方法是将PID的三个参数取反变为负值这样就可以实现反作用。第二种方法是我们正常使用PID的三个参数计算而将增量部分取反这样也可实现反作用。显然第一种方法便于理解而第二种方法更便于操作这里我们使用第二种方法来实现。 3、软件实现 我们已经设计好使用参数正常计算增量在正作用时将增量取加而在反作用时将增量取为减这样就实现了正反作用的转换。这里所说的“加”与“减”是纯粹的数学运算不用考虑增量本身的符号是正是负。正反作用与手自动转换的性质不同并不需要在线修改在系统确定后就已经确定所以我们需要在初始化中设定它。而在PID控制器中我们根据正反作用这一属性的取值来决定对增量部分是做“加”运算还是“减”运算。据此我们修改PID控制器为 /* 通用PID控制器,采用增量型算法具有变积分梯形积分和抗积分饱和功能微分项采用不完全微分一阶滤波alpha值越大滤波作用越强*/ void PIDRegulator(CLASSICPID *vPID) {float thisError;float result;float factor;float increment;float pError,dError,iError;if(*vPID-pMA1)      //手动模式{vPID-output*vPID-pMV;//设置无扰动切换vPID-result(vPID-maximum-vPID-minimum)*vPID-output/100.0-vPID-minimum;*vPID-pSV*vPID-pPV;vPID-setpoint*vPID-pSV;}else                  //自动模式{vPID-setpoint*vPID-pSV;thisErrorvPID-setpoint-(*vPID-pPV); //得到偏差值resultvPID-result;if (fabs(thisError)vPID-deadband){pErrorthisError-vPID-lasterror;iError(thisErrorvPID-lasterror)/2.0;dErrorthisError-2*(vPID-lasterror)vPID-preerror;//变积分系数获取factorVariableIntegralCoefficient(thisError,vPID-errorabsmax,vPID-errorabsmin);//计算微分项增量带不完全微分vPID-deltadiff(*vPID-pKd)*(1-vPID-alpha)*dErrorvPID-alpha*vPID-deltadiff;increment(*vPID-pKp)*pError(*vPID-pKi)*factor*iErrorvPID-deltadiff;   //增量计算}else{if((fabs(vPID-setpoint-vPID-minimum)vPID-deadband)(fabs((*vPID-pPV)-vPID-minimum)vPID-deadband)){resultvPID-minimum;}increment0.0;}//正反作用设定if(vPID-directDIRECT){resultresultincrement;}else{resultresult-increment;}/*对输出限值避免超调和积分饱和问题*/if(resultvPID-maximum){resultvPID-maximum;}if(resultvPID-minimum){resultvPID-minimum;} vPID-preerrorvPID-lasterror;  //存放偏差用于下次运算vPID-lasterrorthisError;vPID-resultresult;vPID-output(vPID-result-vPID-minimum)/(vPID-maximum-vPID-minimum)*100.0;*vPID-pMVvPID-output;} } 4、总结 我们在PID控制器中增加了正反作用的处理经验证与我们预期的结果是一致的。其实正反作用并不复杂就是要在我们期望输入增加时如何控制输出的方向。如果输入输出的变化趋势一致我们就需要采用正作用如果输入输出的变化趋势相反则我们就需要选择反作用。 关于如何确定一个控制器的正反作用这里我们不妨举一个例子。我们设想我们需要控制一个水槽的液位怎么样确定这个控制器的正反作用呢我们说过确定控制器的正反作用需要考虑被控对象的特性和执行机构的特性。对于这个例子被控对象我们要考虑是入水口可控还是出水口可控执行机构是常闭还是常开所以有四种情况 所谓常闭型和常开型是指在没有信号输入的时候执行机构所处的状态。所以常开型给的信号越大开度越小常闭型给的信号越大开度越大。当然这只是一个简单的例子实际使用中会更复杂但都可从被控对象和执行机构的特性入手来选取控制器的正反作用。 欢迎关注
http://www.pierceye.com/news/20516/

相关文章:

  • 制作网站协议书wordpress 输出子分类
  • 新氧整形网站开发模版青岛正规网站设计公司
  • 芜湖网站设计公司中国十大建筑设计院排名
  • 长沙米拓建站上海高端室内设计
  • 网站左侧漂浮导航wordpress 搜索 404
  • 建设银行网站啊怎么用ps制作个人网站模板下载
  • 设计师常用的素材网站网站域名空间代理
  • 折800网站模板制作公司网站设
  • 学做会计账的网站樟树网站开发
  • 商城网站怎么建备案查询工信部
  • 东营有哪些制作网站国际公司和跨国公司
  • 自己做的网站显示iis7营销工具有哪些
  • 音视频娱乐网站开发商个人简历模板免费可编辑
  • 温州网站排名优化如何建立分销网站
  • 嵩明县住房和城乡建设局网站空间安装wordpress
  • wordpress站长主题老域名做网站
  • 南宁网站制作公司哪家好dw网页设计免费模板
  • 万户网络做网站如何爱站网seo
  • dede 网站建设模板大理网上商城网站建设
  • 网站建设与规划总结怎么写建设部网站 合同格式
  • 刷会员网站怎么做做网站的心得体会
  • 企业网站 php 下载wordpress china第三性
  • 舟山建设银行纪念币预约网站淘宝上的网站建设能信吗
  • 怎么成立自己的网站邢台网站123
  • 做竞拍网站瑞郎网络
  • 有关网站建设新闻资讯手机html5网站模板
  • 有源码怎么做网站wordpress 搜索 多个词
  • 上海地区网站备案wordpress add_theme_page
  • 网站在百度搜不到wordpress时间相差8小时
  • 粉末涂料做网站有用吗国外服务器做网站