PID Regulation

已锁定

garbage

  • 帖子

    18
  • 精华

    2
  • 被关注

    0

论坛等级:新手

注册时间:2004-10-05

普通 普通 如何晋级?

PID Regulation

426

0

2004-10-05 21:50:16

FUNCTION "PidReg" : VOID
TITLE ="PID Regulation"
AUTHOR : BenBen
VERSION : 1.0


VAR_INPUT
En : BOOL ; //PID Enable
Suspend : BOOL ; //Restore the state of previous cycle
Input : REAL ; //Input value (Input = Setpoint - Mesure)
LimInpH : REAL ; //Highter limit of PID input
LimInpL : REAL ; //Lower limit of PID input
BandP : REAL ; //Symetric DeadBand applied on the proportionnal part
BandI : REAL ; //Symetric DeadBand applied on the integral part
GainP : REAL ; //KP
GainI : REAL ; //KI
GainD : REAL ; //KD
LimPH : REAL ; //Highter limit of the proportionnal part
LimPL : REAL ; //Lower limit of the proportionnal part
LimIH : REAL ; //Highter limit of the integral part
LimIL : REAL ; //Lower limit of the integral part
LimDH : REAL ; //Highter limit of the derivative part
LimDL : REAL ; //Lower limit of the derivative part
LimOutH : REAL ; //Highter limit of PID output
LimOutL : REAL ; //Lower limit of PID output
Tc : REAL ; //Cycle time
END_VAR
VAR_OUTPUT
Output : REAL ; //Output value
Out_sat : BOOL ; //Saturation of the PID
END_VAR
VAR_IN_OUT
Prop : REAL ; //Proportionnal part
Intg : REAL ; //Integral part
Der : REAL ; //Derivative part
Ecart_Prec : REAL ;
END_VAR
VAR_TEMP
Ecart : REAL ;
Ecart_Abs : REAL ;
ErrP : REAL ;
ErrI : REAL ;
ErrD : REAL ;
Intg_Prec : REAL ;
END_VAR
BEGIN
NETWORK
TITLE =Test Ecart

L #Input;
T #Ecart;
L #Intg;
T #Intg_Prec;

L #Ecart; // Test Ecart > Highter limit of PID input
L #LimInpH;
>R ;
JC jp01;

L #Ecart; // Test Ecart < Lower limit of PID input
L #LimInpL;
JC jp02;
JU jp03;

jp01: L #LimInpH;
T #Ecart;
JU jp03;

jp02: L #LimInpL;
T #Ecart;

jp03: L #Ecart;
ABS ;
T #Ecart_Abs;
NETWORK
TITLE =Calcul Proportionnel

L #Ecart_Abs; // Test Ecart > Symetric DeadBand applied on the proportionnal part
L #BandP;
>R ;
JC jp21;

L 0.000000e+000;
T #ErrP;
JU jp22;

jp21: L #Ecart;
T #ErrP;

jp22: L #GainP; // Calcul of the proportionnal part
L #ErrP;
*R ;
T #Prop;

L #Prop; // Test Prop > Highter limit of the proportionnal part
L #LimPH;
>R ;
JC jp23;

L #Prop; // Test Prop < Lower limit of the proportionnal part
L #LimPL;
JC jp24;
JU jp25;

jp23: L #LimPH;
T #Prop;
JU jp25;

jp24: L #LimPL;
T #Prop;
jp25: NOP 0;
NETWORK
TITLE =Calcul Integral

L #Ecart_Abs; // Test Ecart > Symetric DeadBand applied on the proportionnal part
L #BandI;
>R ;
JC jp31;

L 0.000000e+000;
T #ErrI;
JU jp32;

jp31: L #Ecart;
T #ErrI;

jp32: L #GainI; // Calcul of the integral part
L #ErrI;
*R ;
L #Tc;
*R ;
L #Intg_Prec;
+R ;
T #Intg;

L #Intg; // Test Intg > Highter limit of the integral part
L #LimIH;
>R ;
JC jp33;

L #Intg; // Test Intg < Lower limit of the integral part
L #LimIL;
JC jp34;
JU jp35;

jp33: L #LimIH;
T #Intg;
JU jp35;

jp34: L #LimIL;
T #Intg;
jp35: NOP 0;
NETWORK
TITLE =Calcul Derivative

L #Ecart; // Calcul of the derivative part
L #Ecart_Prec;
-R ;
L #GainD;
*R ;
L #Tc;
/R ;
T #Der;

L #Der; // Test Der > Highter limit of the derivative part
L #LimDH;
>R ;
JC jp43;

L #Der; // Test Der < Lower limit of the derivative part
L #LimDL;
JC jp44;
JU jp45;

jp43: L #LimDH;
T #Der;
JU jp45;

jp44: L #LimDL;
T #Der;
jp45: NOP 0;
NETWORK
TITLE =Output = Prop + Int + Der

A #Suspend;
JC jp50;

L #Prop; // Calcul of the output value
L #Intg;
+R ;
L #Der;
+R ;
T #Output;

L #Output; // Test Out > Highter limit of PID output
L #LimOutH;
>R ;
JC jp53;

L #Output; // Test Der < Lower limit of PID output
L #LimOutL;
JC jp54;

R #Out_sat;
JU jp50;

jp53: L #LimOutH;
T #Output;
S #Out_sat;
JU jp50;

jp54: L #LimOutL;
S #Out_sat;
T #Output;

jp50: L #Ecart;
T #Ecart_Prec;
NETWORK
TITLE =Reset

A #En;
JC jp60;
L 0.000000e+000;
T #Output;
T #Prop;
T #Intg;
T #Der;
R #Out_sat;
jp60: NOP 0;
END_FUNCTION

PID Regulation 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54759条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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