找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5491|回复: 14

用PLC实现流量累加算法讲解

  [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:29
  • 打卡月天数:1
  • 打卡总奖励:7791
  • 最近打卡:2025-12-13 17:25:16

2540

主题

1355

回帖

2万

积分

管理员

积分
21304
发表于 2019-5-23 21:37:52 | 显示全部楼层 |阅读模式
在使用s7-1200PLC编写程序的时候,如果项目上需要用到流量累积功能,但是本款PLC并没有自带流量累积功能块。这时,就需要我们组态工程师自己编写一个具有流量累积功能程序,或者将该程序封装为FB块或者FC块。本文以封装FB块为例。
第一步:在程序块目录下单击添加新块,弹出添加新块对话框,选中FB函数块,在名称栏填上需要命名的名字,如:Totalizer,选择编程需要用的编程语言,本文以SCL语言讲解,FB块的编号可以通过手动或自动生成,然后单击确认,如下图所示
第二步:打开新建功能块,并建立临时变量,如下图所示
第三步:程序编写,如下图所示:
程序编写完成后,进行编译,编译没有错误时,在FC(FC2,FLOWACCUM)中调用该FB块,最后在OB30中断块中调用该FB块。
第四步:在FC中调用名字为“Totalizer”的FB块,并对输入输出参数赋值,如下图所示
再在OB30中调用功能块,OB30中断块是循环中断块,循环时间为100ms,如下图所示
双击循环中断OB30中断块,在中断块中调用FC2(FLOWACCUM)功能块,如下图所示
程序解读:
变量定义:
变量名:Reset,数据类型:Bool,作用:累积清零
变量名:Accum,数据类型:Real,作用:存储累积值
变量名:Total,数据类型:Real,作用:存放累计值
变量名:Intervall,数据类型:TIME,作用:流量单位中的时间,如m3/h,则:变量为1h=3600s,变量单位:秒
变量名:Intervall_DInt,数据类型:Dint,作用:存储Intervall转换为Dint数据类型后的值
变量名:Intervall_Real,数据类型:Real,作用:存储Intervall_DInt转换为Real数据类型后的值
变量名:Cycle,数据类型:TIME,作用:存储程序循环时间,单位:秒
变量名:Cycle_DInt,数据类型:Dint,作用:存储Cycle转换为Dint数据类型后的值
变量名:Cycle_Real,数据类型:Real,作用:存储Cycle_DInt转换为Real数据类型后的值
程序代码:
IF #Reset = true THEN //条件为真时
#Accum := 0.000000e000; //累积清零
#Total := 0.000000e000; //累积清零
ELSE
#Intervall_DInt := TIME_TO_DINT(#Intervall);//将时间型变量Intervall转换为双整型数据,并存在变量中
#Intervall_Real := DINT_TO_REAL(#Intervall_DInt);//将双整型数据转换为实型数据,并存在变量中
#Cycle_DInt := TIME_TO_DINT(#Cycle);//将时间型变量Cycle转换为双整型数据,并存在变量中,本例为0.1s
#Cycle_Real := DINT_TO_REAL(#Cycle_DInt);//将双整型数据转换为实型数据,并存在变量中
#Accum := ((#Value * #Cycle_Real) / #Intervall_Real) + #Accum;//累积计算
#Total := #Accum; //Kopiere Ergebnis nach #Total / Copy result to #Total.//累计值传递
END_IF;

工控课堂 www.gkket.com

0

主题

87

回帖

486

积分

注册会员

积分
486
发表于 2019-5-24 18:30:45 | 显示全部楼层
太生气了,无法HOLD啦 >_<......
工控课堂 www.gkket.com

0

主题

128

回帖

415

积分

注册会员

积分
415
发表于 2019-6-3 07:31:35 | 显示全部楼层
我顶,我顶,我顶顶顶
工控课堂 www.gkket.com

0

主题

110

回帖

480

积分

注册会员

积分
480
发表于 2019-6-5 18:37:39 | 显示全部楼层
党的好公民,人民的好公仆。。。
工控课堂 www.gkket.com

0

主题

101

回帖

525

积分

中级会员

积分
525
发表于 2019-6-11 07:27:11 | 显示全部楼层
加油,加油,不要沉下去,我是最热贴
工控课堂 www.gkket.com

0

主题

116

回帖

191

积分

新手上路

积分
191
发表于 2025-11-19 11:57:14 | 显示全部楼层
学到了学到了,这波分享太实用啦!
工控课堂 www.gkket.com

0

主题

78

回帖

119

积分

新手上路

积分
119
发表于 2025-11-19 12:04:07 | 显示全部楼层
说得对!狠狠赞同,没毛病~
工控课堂 www.gkket.com

0

主题

71

回帖

379

积分

注册会员

积分
379
发表于 2025-11-19 12:06:49 | 显示全部楼层
同款经历!简直是世另我
工控课堂 www.gkket.com

0

主题

138

回帖

495

积分

注册会员

积分
495
发表于 2025-11-19 12:08:34 | 显示全部楼层
这逻辑绝了,分析得太到位了吧
工控课堂 www.gkket.com

0

主题

73

回帖

107

积分

新手上路

积分
107
发表于 2025-11-19 12:08:35 | 显示全部楼层
来凑个热闹,为楼主增加点人气!
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 04:47 , Processed in 0.149060 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表