频繁波动液位测量

s7300,双法兰测液位,因搅拌原因液位频繁小范围波动,想设计个程序一段时间数据累加求平均值,或者增加阻尼,想简单点稳定点,先过来看的谢谢高手们,更谢谢给我建议的高手

最佳答案

建议可以通过西门子的间接寻址(在STL编辑器中实现)或者通过SCL编程语言实现
即通过指针的方式指向起始地址,然后通过改变指针指向下一个地址,进行数据的存储
我这里有一个数字滤波的程序,使用SCL写的,供参考(实现功能:取最近的十个数据,然后去掉最大值和最小值,然后剩下的八个数据相加后取平均值,其中的SCALE函数为模拟量线性转换函数,需要先在程序中添加FC105):
FUNCTION_BLOCK FB180

// Block Parameters
VAR_INPUT
    PIW_IN: INT;  
    HI_LIM_IN: REAL :=100.0;
    LO_LIM_IN: REAL :=0.0;// Input Parameters
    BIPOLAR_IN: BOOL :=FALSE;

  END_VAR

VAR_IN_OUT
  // I/O Parameters
END_VAR

VAR_OUTPUT
 // Output Parameters
    SCALED_VAL: REAL;
    SCALED_FILTED: REAL;
    ERR: BOOL;
 
END_VAR
VAR_TEMP
    RET_VAL_105:    WORD; // Temporary Variables
    LOOP_COUNT:     INT;
    MAX_DATA:      REAL;
    MIN_DATA:      REAL;
    TOTAL:          REAL;
    TOTAL_FILTERD:    REAL;
END_VAR
VAR
DATA_STORE: ARRAY[0..9] OF REAL;
  // Static Variables

END_VAR

 RET_VAL_105:=SCALE(IN :=PIW_IN// IN: INT
        ,HI_LIM := HI_LIM_IN// IN: REAL
        ,LO_LIM := LO_LIM_IN // IN: REAL
        ,BIPOLAR :=  BIPOLAR_IN// IN: BOOL
        ,OUT := SCALED_VAL// OUT: REAL
        ); // WORD
 
  
IF RET_VAL_105<> 0  THEN ERR:=TRUE;
   
    ELSE
        ERR:=FALSE;
END_IF;
 
        MAX_DATA:=DATA_STORE[0];
        MIN_DATA:=DATA_STORE[0];
        TOTAL:=0.0;
        TOTAL_FILTERD:=0.0; 
 
 FOR LOOP_COUNT:= 0 TO  8 BY 1 DO
    // Statement Section
      DATA_STORE[LOOP_COUNT]:=DATA_STORE[LOOP_COUNT+1];
 END_FOR;
       
       DATA_STORE[9]:=SCALED_VAL;
           
 FOR LOOP_COUNT:= 0 TO  9 BY 1 DO
    // Statement Section
      IF MAX_DATA < DATA_STORE[LOOP_COUNT] THEN MAX_DATA:=DATA_STORE[LOOP_COUNT];
      END_IF;
      
      IF MIN_DATA > DATA_STORE[LOOP_COUNT] THEN MIN_DATA:=DATA_STORE[LOOP_COUNT];
      END_IF;
       
      TOTAL:=TOTAL+DATA_STORE[LOOP_COUNT];       
                
 END_FOR;
          
       TOTAL_FILTERD:=TOTAL- MIN_DATA- MAX_DATA;

       SCALED_FILTED:=TOTAL_FILTERD/8.0;

END_FUNCTION_BLOCK

关于STL中的间接寻址,可以参考本网站下载中心文档编号为 F0215 的文章

提问者对于答案的评价:
虽然不太懂,但是很感谢。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc306488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日 下午3:55
下一篇 2020年10月31日 下午3:56

相关推荐

  • Smart line 700IE变量限制问题

    我查阅资料,说明此屏允许的变量数是500个,但是我做了一个项目,变量有1700多个,下载到屏后,没有发现错误,以后应用到工程是否会存在隐患呢?谢谢! 最佳答案 变量能使用多少,由变…

    自动化系统综合 2017年6月12日
  • s7-200与s7-300

    1、请问西门子S7-200和S7-300有哪些区别?  2、西门子s7-200怎样连到PROFIBUS上?  3、实现相同功能的S7-300…

    自动化系统综合 2020年11月1日
  • 四个数大小排列

    有人做过四个数大小排列吗?现在有四个高炉顶压,我们要取中间2个,能指点或写下,谢谢. 最佳答案 先把四个数按照从大到小或者从小到大的顺序排列起来,然后取中间两个数就行了。比如:MW…

    自动化系统综合 2020年10月31日
  • ACX32,SAPHIR资料

    请教acx32,saphir的应用、编程资料,这种控制器好像在供热,楼宇应用较多,请指导! 最佳答案 acx32是一个通讯卡的型号,Saphir控制器的通讯接口,由Intel&nb…

    自动化系统综合 2020年11月1日
  • 请问哪里有STEP 7软件下载的,想下载一个学学

    在学习S7 300/400,想下载一个STEP 7软件编程学习。。。。,不知道谁能告知?谢谢! 最佳答案 STEP7软件的安装与兼容性说明(更新版) …

    自动化系统综合 2020年11月1日
  • 西门子软件安装问题

    在安装 西门子软件程序:wincc flexible2008 以及drive Monitor时,总是提示我“安装新程序之前,请重新启动Win…

    自动化系统综合 2020年11月1日
  • DCS问题请教

    DCS是一个系统名称,还是一个具体的控制器名字?像PLC一样? 最佳答案 他是系统,包括hmi,控制器,历史数据服务系统,通讯系统,以及数据采集系统。 提问者对于答案的评价:ok

    自动化系统综合 2020年11月1日
  • 设备联动的复杂性与故障率

    我们是设备厂商,由于设备自带了很多阀门与电机,水泵等达几十多个,而且这些设备都需要联动运行,相互之间有关系,我们用软件编程可以实现联动,设备联动给甲方的操作带来了极大的方便,但联动…

    自动化系统综合 2020年11月1日
  • 回零

    simotion的回零指的是零点坐标的建立还是指零点建立后,如果电机转到50厘米的位置,给它回零指令,电机回到零点位置? 最佳答案 指的是后者:“如果电机转到50厘米的位置,给它回…

    自动化系统综合 2020年10月31日
  • STL疑问

    A     M     10.1    …

    自动化系统综合 2020年10月31日