回复:PID的无扰动切换

已锁定

看雪001

  • 帖子

    2417
  • 精华

    87
  • 被关注

    232

论坛等级:至圣

注册时间:2012-04-25

钻石 钻石 如何晋级?

发布于 2020-07-10 09:00:08

19楼

展开查看
以下是引用宝冬在2020-07-09 23:02:36的发言 >17楼

西门子的PID也支持无扰切换(超驰控制),单个PID的语句如下:

"PID_Compact".PIDCtrl.PIDInit := TRUE;  

"PID_Compact".OverwriteInitialOutputValue := "PID_Compact".Output; 

或者

"PID_Temp".PIDCtrl.PIDInit := TRUE;  

"PID_Temp".OverwriteInitialOutputValue := "PID_Temp".PidOutputSum;


超驰控制并不等同于无扰动切换。

比如程序中限定积分项的范围(0-100%),积分项不是-100% - +100%,这个PID就不是所谓“三步法”,积分项超过0-100%这个边界,就停止积分运算,靠比例运算和微分运算迅速把过程值拉回来,这属于超驰控制的策略;

有时候靠一个传感器反馈过程值是不可靠的,传感器损坏或安装不到位导致反馈值并不真实,这时候需要两个或以上的传感器同时反馈过程值,程序中始终监控传感器的可靠性,一旦发现传感器异常,就切换到另一个通道,这种控制策略不能叫”冗余“,也是叫”超驰“。

 我这个系统就是用到两个K型热电偶监控管路中同一点温度值,K型热电偶测温范围-200 -1372℃,当热电偶通道开路时显示温度值1372℃,而管路温度正常值绝不会超过700℃,那么,判断热电偶工作是否正常只需要监控两个K型热电偶数值是不是超过700以上即可:

PROGRAM MainFanCtr
VAR
 PID1: PID;
        ActualValue:REAL;

END_VAR

……

IF K1<1000 AND K2<1000 THEN (*1,以DOC后温度作为PID过程值; 2,若K1、K2正常,取大值作为过程*)
             ActualValue:= MAX(K1,K2);
ELSE
             ActualValue:= MIN(K1,K2);
END_IF;

IF  HMI_AO0_I <0.1 THEN HMI_AO0_I :=0.1; END_IF; (*积分时间不可设置为0*)

PID1(

SPn:= ActualValue    ,

……


大道至简,知易行难
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10585条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。