累积块更新

已锁定

nuowu

  • 帖子

    1
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2017-04-07

普通 普通 如何晋级?

累积块更新

201

1

2021-07-12 15:19:20

之前自己写的程序有偏差,300 的累计程序看参考下面的,仅供参考!

流量累计的SCL代码-技术论坛-工业支持中心-西门子中国 (siemens.com.cn);

FUNCTION_BLOCK Integr


TITLE = 'Integr'

//

// Block Comment...

//

VERSION: '1.0'

AUTHOR: Author

NAME: Name

FAMILY: Family



// Block Parameters

VAR_INPUT

       In{S7_dynamic:='true'}:REAL;   // Analog Input Value

       OutHiLim{S7_dynamic:='true';S7_edit:='para'}:REAL:=999999999;// Out High Limit

       OutLoLim{S7_dynamic:='true';S7_edit:='para'}:REAL:=0;// Out Low Limit

       Ti{S7_dynamic:='true';S7_edit:='para'}:REAL:=1;// Integral Time Constant [s]

       SampleTime{S7_link:='false';S7_param:='false';S7_sampletime:='true';S7_visible:='false'}:REAL:=0.1;// Sampling Time [s]

       Hold{S7_dynamic:='true';S7_visible:='true'}:bool;    // Hold Calculation Process   

       OutTrkOn{S7_dynamic:='true';S7_visible:='true'}:bool;  // Tracking Out

       OutTrk{S7_dynamic:='true';S7_visible:='true'}:REAL;   // Tracking Value

       InHyst{S7_dynamic:='true';S7_edit:='para';S7_visible:='true'}:REAL;// Hysteresis       

            

END_VAR


VAR_IN_OUT

    // I/O Parameters

END_VAR


VAR_OUTPUT

      Out{S7_dynamic:='true'}:real; // Analog Output Value

      OutHiAct{S7_dynamic:='true'} :BOOL;// OutHiAct  

      OutLoAct{S7_dynamic:='true'}:bool; // OutLoAct

      ErrorNum{S7_dynamic:='true';S7_visible:='false'}:INT:=-1;//NumErrorNum 


END_VAR


VAR_TEMP

    xOut : REAL ;   //Varialble for Out.

    xTITemp : REAL ;//varialble for TI calculation.

    xTI : REAL ;    //Varialble fro TI.

END_VAR

VAR

    SxInLastCycle : REAL ;    //Varialble for LastCycle calculation of In

    SxOutLastCycle : REAL ;    //Varialble for LastCycle calculation of out

    SxPrevOutLastCycle : REAL ;    //Varialble for previous LastCycle calculation of out

END_VAR

BEGIN 

// OutHiLim

    IF Out < OutloLim + InHyst     THEN 

       OutLoAct := true ;

    ELSE

       OutLoAct := false ;

    END_IF;  

// OutHiLim       

    IF Out >= OutHiLim - InHyst   THEN 

       OutHiAct := true ;

    ELSE    

       OutHiAct := false ;

    END_IF;  

  

 xOut := Out;

 xTI := TI;

 IF NOT OutTrkOn THEN

           IF NOT Hold THEN

           xOut := SampleTime*(IN + SxInLastCycle)*0.5/xTI + SxOutLastCycle ;

           xTITemp := xOut + SxPrevOutLastCycle;

           SxOutLastCycle := SxPrevOutLastCycle - xTITemp + xOut;       

           xOut := xTITemp;                          

         ELSE

            ;

      END_IF;

    ELSE

   xOut:=OutTrk;  

END_IF;

   SxPrevOutLastCycle := xOut;

   SxInLastCycle := In;

   Out := xOut;   

END_FUNCTION_BLOCK

v

累积块更新 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54051条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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