PLC计算流量累计不准?本文解释得很清楚!实例讲解程序!
以前我们讲过西门子S7-200在流量累计中的应用,今天我们来学习一下S7-300系列的应用。
理论来说,博途系列PLC的编程思路与S7-300一致,只是软件有一些区别而已。
那么PLC计算累计流量有多种方法。
常用的有使用中断计算和脉冲数计算。
今天我们来学习一下利用中断计算。
项目实例,A厂有一燃气流量机,需要使用该表计算其燃气用量。
思路大概如下;因PLC可以接收到其时时流量,因此可以使用100ms的中断去累加该流量,当然1s的中断也可以,不过扫描周期越短,数值越精确。
例如;一块流量计的瞬时流量是10m3/h,那么将该流量值除以36000,那就是100ms的流量,每100ms将该值累加,得到的数值就是累计量,理论来说,中断时间越短,数值越精确。但考虑PLC负担也增加,因此建议使用100ms-1s的中断。
然后我们进行实例解说。
一流量计信号接线,流量计一般使用模拟量输入的方式连接,如果是电流信号则分为两线制和四线制,
二线制信号是指;信号的两根线既是电源线又同时是信号线。二线制的优点是接线简单,只适用一般功率小的一次传感器,如:压变、差压变、温变、电容式液位计、射频导纳、电磁流量计、涡街流量计等。传感器本身用电由二线制中得到,是必影响其带载能力。
四线制信号是指;电源两根线,信号两根线。电源和信号是分开工作的。四线制的优点是由于是将电源和功率分开,所以本机的功率与信号是没有功率上的关联的,适用于大功率的的传感器,如超声波(由于其为了加大抗干扰能力,所以发射的功率会很大,所以此款产品选型时要尽量四线的,二线的一般抗干扰能力较弱),就不能作成2线的,只能是4线,分别是工作电源2个,输出2个。
按照流量计要求将模拟量信号接入到PLC系统。
二编程;
打开程序
该程序包含OB1,OB35,FB1,FC105,DB1。
其中OB1是PLC程序必备,对于本实例不需要,空程序即可。
OB35是设置为100ms的中断扫描块,主要程序都在其中。
FB1是主要功能块,
FC105是比较常见的功能,可以处理模拟量数据,将模拟量数据按照固定要求转化。(可以按照量程将PLC扫描的0-27648转化为实际流量,本例中该流量计量程3000m3/h,该信号接入到PLC的PIW256通道,PLC将扫描PIW256地址的0-27648转化为0-3000的实际流量)
比如说如果该流量计的瞬时流量是1500m3/h,该流量计就会输出12ma的电流,PLC会检测到13824,通过转化再次转为1500。
DB1为FB1的背景数据块,为存放FB1中信息的地方。
我们依次讲解一下该程序。
首先我们需要将OB35改为需要的中断时间块
例子中为100ms,就是0.1s
OB1为空块
OB35中为主程序,调用FB1,并以DB1作为背景数据块。
其中FLOW IN为该流量计接入PLC的模拟量通道。
Hi limit为该流量计量程上限,本例为3000m3/h。
Low limit为该流量计量程下限,一般为0。
Division为分辨率,对于100ms,该分辨率为36000,也就是将流量单位改为m3/100ms,如果是1s,该分辨率为3600。也就是将流量单位改为m3/1s。从而进行下一步计算。
Clear是流量累计数清零通道,触发M0.0可以将Flow Accu清零。
输出的Flow rt是转化完的流量数值。
Flow Accu为累计量,该值可通过Clear清零。
接下来我们打开FB1。
第一行第二行为处理模拟量,将信号转为实际流量值。
第三行将该值输出到外部。
第四行将分辨率改为可计算的实数。
第五行将转化的流量数除以分辨率,意味着改为以中断时间为单位的实际流量。
第六行将第五行的流量数相加,得到最终累计流量。
第七行为通过外部清零。
好了程序解说完毕,对于本篇文章,我已准备例子程序,需要的可以在评论区留言;我想要程序,点赞并转发,然后私信我;流量累计程序。
谢谢,学会的请点赞,土豪欢迎打赏。
您的支持是我更新的动力,谢谢大家。
实用经验之谈:PLC系统的流量积算方法参考
目前,具有众多不同品牌的仪器仪表,用来测量工业现场液体或者固体的瞬时流量,然后通过4-20mA信号传递给PLC,作为控制或监控的数据标准。PLC根据瞬时流量积算一定时间内的累积流量,对于流程工业控制领域液体或固体流量的数据分析和产量计算应用具有重要的意义。
1、PLC系统中实现流量积算的方法
首先必须明确,用PLC做流量累计的精度远不如电磁流量计等本身自带累计功能的流量计。对有累积功能的流量计转换器,一般流量转换器的流量累积输出是脉冲输出,可通过PLC的高速脉冲输入端进行高速计数,从而得出累积流量。
对只有瞬时流量输出的流量计,才考虑在PLC中进行流量累积加法运算。在 PLC内做流量累积的时候,不应使用定时器来做,因为定时器受到PLC扫描周期的影响,没法做到十分精确,累加出来数据的误差很大。
目前,一般的中大型PLC都直接或者间接提供了“Totalizer”功能块, 实质都是把每个采集周期的瞬时流量进行简单累加。本文提供了一种将定积分计算引入到流量累积的具体方法,以供参考。
2、定积分计算法引入流量积算的几何意义
设瞬时流量q=q(t)在时间段t的[a,b]区间连续,那么流量累积计算公式为:
图1 瞬时流量
有定积分的几何意义,求时间a到时间b区间内的总流量Q,只需要计算曲线q=q(t),直线t=a,直线t=b和时间轴t所围成的曲边梯形面积。在区间a,b内插入若干个平分点:a=t0<t1<t2<…<tn-1<tn=b,把区间[a,b]分成n个小区间:[ti-1,ti],求每个区间长度Δt上的区间累积流量,只需求第i个小曲边梯形的面积。我们可以把每个小曲边梯形近似看作是小梯形,见图2:
图2 瞬时流量分割图
面积计算:
如果分割无限加细,区间个数n趋向于无穷(n→∞)时,总流量计算为:
3、TIA Portal V15具体实现积分累积流量的方法
以下以Siemens PLC系统的TIA Portal V15为例,实现积分累积流量的方法:
3.1 在程序目录下添加新的FB函数块,确定名称如“Totalizer”,为了实现数值计算的简单性,这个功能块的编程语言选择结构化文本语言SCL。
3.2 打开新建功能块,并建立临时变量,如下图所示
变量定义:
变量名:Reset,数据类型:Bool,分组:Input,作用:FB接收外部传递的累积清零命令;
变量名:Value,数据类型:Real,分组:Input,作用:FB接受外部传递的瞬时流量数据,需要注意的是:一般流量计瞬时流量单位是m3/h,这里需要统一换算成m3/s,即PLC接收的瞬时流量除以3600后再输入此处;
变量名:Cycle,数据类型:TIME,分组:Input,作用:FB接受程序循环时间,单位:秒,
在这里,Cycle值为0B30中断循环块的循环时间。
变量名:Last_Value,数据类型:Real,分组:Static,作用:静态存储上一扫描周期的瞬时流量值;
变量名:Accum,数据类型:Real,分组:Static,作用:静态存储流量累积值;
变量名:Cycle_DInt,数据类型:Dint,分组:Temp,作用:在FB中零时存储Cycle转换为Dint数据类型后的值;
变量名:Cycle_Real,数据类型:Real,分组:Temp,作用:在FB中临时存储Cycle_DInt转换为Real数据类型后的值;
变量名:Total,数据类型:Real,分组:Output,作用:FB向外部传送流量累积值。
3.3 程序编写,如下图所示:
程序编写完成后,进行编译,编译没有错误时,可供调用。
3.4 在流量计算功能的FC中调用名字为“Totalizer”的FB块,并对输入输出参数赋值,如下图所示:
3.5 在OB30中调用流量计算FC功能块,OB30中断块是循环中断块,循环时间设置为100ms,如下图所示:
3.6 程序解读
4、PLC系统中流量计算的其它问题
上述程序只是简单示例,实际应用中,需要根据实际情况考虑更复杂的问题,比如:
▶对于积分算法,取小的矩形对流量进行累计,肯定是矩形划分越细(也就是OB30的循环时间越短),误差越小,不存在误差是不可能的。
▶流量计本身有累计流量功能,同时可以把瞬时流量以模拟量的方式(例如4-20mA)输出,但无法将累计流量数值送出。那么,流量计本身累积流量的数值,最后很有可能与PLC的累计流量数值相差很大,原因可能是多方面造成的,除去系统累计流量误差的因素,如果PLC系统停电检修或者更换相关模块时,流量计还在计量,则PLC无法累积这部分流量。
▶累积数值的自动和手动清零,以免数据溢出。其中自动清零的时机要结合程序考虑好。
▶在流量累积编程时应避免数量级相差太多的浮点数之间进行运算。如果没有适时清零,流量累积程序在运行之初是正常的,因为累计流量初始值及流量瞬时值都为一个很小的浮点数,两数相加后,结果正确。但是当一段时间后,累计流量的数值逐渐增大,当它与瞬时流量的数值相差很远的时候,两者执行加法操作后,瞬时流量的数值将被忽略掉(如9999990.0与0.2做加法操作)。其实具备计算机常识的人都应当清楚这一点,这是由于浮点数的存储机制造成的,这个问题可以通过使用二级累加或多级别累加的方法来解决,比如每一级累加器只能进行规定级别大小的数据累加,当一级累加器的累积数据大到一定程度时,立刻把数据传送到二级累加器,然后把一级累加器清零。
版权提示:本文为中华工控网(工控论坛)原创,作者 陆宁,转载请与我们联系,否则必将追究法律责任。
相关问答
三菱plc累计流量怎么做?
对这个流量进行固定频率的采集,假如采集频率为10hz,也就是每秒钟采集10次,将每次采集的数据进行累加,再将累计的数除以10就是每秒流量,假如流量计工作在最大...
plc如何将流量计瞬时值(4~20ma模拟信号)累加。具体的怎么编程?
这个要知道控制器的机器周期,假设你的控制器机器周期是1秒,那么把你的瞬时值除以3600,就是相当于每个机器周期的流量值,然后将这个值累加PV1=PV/3600;(这里...
求助:可否用PLC程序计算流量累计值?
可以的,首先需要把瞬时流量采集到plc中来,然后在中断中调用累计程序,例如累计流量=(瞬时流量+累计流量)/3600这个是流量单位是xx/h的,如果是xx/分钟的话就是...
西门子plc中如何实现瞬时量累加?
在西门子PLC中,可以通过以下步骤实现瞬时量累加:首先,需要创建一个变量来存储累加值。该变量可以是整数型、浮点型或其他数据类型,具体取决于累加值的范围...
氮气流量的问题-盖德问答-化工人互助问答社区
机组实时产氮量34.6和耗氮量11.366成3倍差别;累计产氮量391638和累计耗氮量33331可是11.7倍差别,排除终端耗氮量设备没有增减的话,那么,应该是仪表...
plc断电延时定时器怎么使用-Even615的回答-懂得
PLC只有通电延时定时器,没有可直接使用的断电延时定时器,需要内部继电器与通电延时定时器配合使用,才能实现断电延时。编程手册里一般都有介绍,可以...
瞬间电流过大如何解决?
有三种方法,一是给PLC加一个稳压电源,是PLC系统的电压稳定。就可以解决了,而且费用不大,成本最低。二就是给电机加软启动(不敢保证完全有效)成本中等。三...
plc断电延时定时器怎么使用-8YmBub9U的回答-懂得
plc断电延时定时器使用:PLC:可编程逻辑控制器,它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令...
三种物料同时加入,西门子PLC怎么做-盖德问答-化工人互助问...
比例控制,如果是连续加料,那得用调节阀,但你说是电磁阀控制,那怎么实现量多量少的控制呢,除非你有三个比例的容量,加满后就可以用电磁阀进行加料控...
plc按钮选型参数?
PLC选型一般要考虑以下参数:一、输入输出(I/O)点数的估算I/O点数估算时应考虑适当的余量,通常根据统计的输入输出点数,再增加10%~20%的可扩展余量后,作为...