在使用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;
示波器测量高频信号为什么要用x10档(二)
“彩虹”参展全球无人机大会,着力打造“中国制造”名片
区块链的下一波热点和风口会是什么
OPPO小布智能语音助手将带来一个全新的普罗米修斯世界
中国联通为更多的智慧场馆量身定制特色的AR/VR/ MR内容体验
基于S7-1200PLC的流量累积功能程序
恒扬科技携手IBM、Xilinx创立第二代分布式计算联盟
魅族传将自研处理器,中国未来“芯”路璀璨
基于奥比中光红外深度相机的虹膜识别系统
谷歌地图全面升级 增加3D视图和高清卫星照片
以机械手控制为例,分析PLC与步进驱动装置的控制方法
巴西禁售不带充电器iPhone
关于光纤连接器的使用介绍和注意事项
坚果Pro2S和小米8SE哪个最好
关于GD32F450系列Cortex®-M4 内核MCU的分析和介绍
武汉政府正式发布了5G发展行动计划到2021年将实现5G市域全覆盖
华为云OBS如何提升用户体验
HomePNA接入,什么是HomePNA接入
关于PLC编程的三个实用算法
如何画出漂亮的PCB?