加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

施耐德unity使用ST计算日均值

(2025-01-30 10:41:35)
标签:

施耐德

st编程

日均值计算

分类: 施耐德PLC
这一篇学习笔记是放假期间自己练习的总结,由于这里审核严格,我在博客园先发表了,现在这里再记录一遍。

以前做过练习,在unity中计算分钟均值和小时均值,做成自定义功能块。今天在家打算按照同样的思路,试着做一下日均值。

第一次打算建立一个三维数组PV_DAY[0..23,0..59,0..59],每秒存放一个数据,编译的时候提示数组太大。

第二次尝试建立24个数组,每个数组存放一个小时内3600个检测值,最终编译的时候提示PLC保存数据内存满,我的这个练习还没有做其他的检测控制功能,说明这样的频率存放数据,计算均值能把CPU弄死机。

最终转变思路,不要1秒采集一个数据,把数据存储频率弄低一点,经过多次尝试,6秒采集一次比较合适。

新建一个导出的功能块类型PV_AVG_DAY,配置内部变量和程序段如下:

施耐德unity使用ST计算日均值

AVG_DAY程序段ST编程方式,脚本如下:

Minute1:=BCD_TO_INT(%SW51);
HOUR:=DIV(Minute1,100);
Minute:=mod_int(Minute1,100);
Second1:=BCD_TO_INT(%SW50);
Second:=div(second1,100);
Cur_Minute:=Minute;
Cur_Second:=Second;
SUM:=0.0;
i:=mod(second,6);
if i=0 then
PV_HOUR[HOUR,Minute,Second]:=PV;
end_if;

for i:=0 to 59 do
for j:=1 to 30 do
sum:=sum+PV_HOUR[hour,I,J];
END_FOR;
END_FOR;

AVG_DAY:=SUM/14400.0;

 

Alarm为FBD编程方式

施耐德unity使用ST计算日均值

这样就完成了日均值计算的自定义功能块,6秒左右采集一次数据。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有