求模拟量输入温度连续每小时平均数

模拟量输入通道通过转换实数,计划每秒取一个数值,来计算每小时的平均值,需要连续不断的数据,比如到3601个数据时自动覆盖第一个数据。

钻石用户推荐最佳答案

1、
功能和样例:缓存测量值的“FIFO”
https://support.industry.siemens.com/cs/document/8685494
根据FIFO原则在环形缓冲器临时存储接收到的数据并传给用户接口https://support.industry.siemens.com/cs/document/16825843
如何计算读入的任意数量的数值的当前平均值?
http://support.automation.siemens.com/CN/view/zh/28027081
2、自己写程序,是在TIA环境下写的,如图
      2.1 程序的变量定义,其中累积值、计数值、数组下标要在上电初始化组织块 OB100 中初始化成 0,这部分程序没有帖出
      2.2 FC1 的接口定义以及程序,程序代码如下,可直接复制:

"数据块_1".CURRENT_INDEX := "数据块_1".CURRENT_INDEX + 1;
IF "数据块_1".CURRENT_INDEX > 3600 THEN
    "数据块_1".CURRENT_INDEX := 1;
END_IF;
"数据块_1".COUNT := "数据块_1".COUNT + 1;
IF "数据块_1".COUNT > 3600 THEN
    "数据块_1".COUNT := 3600;
    "数据块_1".SUM_REAL := "数据块_1".SUM_REAL – "数据块_1".DB_VAR["数据块_1".CURRENT_INDEX];
    "数据块_1".SUM_REAL := "数据块_1".SUM_REAL + #REAL_IN;
ELSE
    "数据块_1".SUM_REAL := "数据块_1".SUM_REAL + #REAL_IN;
END_IF;
"数据块_1".DB_VAR["数据块_1".CURRENT_INDEX] := #REAL_IN;
#AVERRAGE_OUT := "数据块_1".SUM_REAL / "数据块_1".COUNT;
     2.3、OB1中的调用FC1,我没加条件,你可以根据实际情况加条件调用。

图片说明:

求模拟量输入温度连续每小时平均数  

提问者对于答案的评价:

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午11:01
下一篇 2020年10月30日 下午11:02

相关推荐