线下实训
HOME
线下实训
正文内容
plc累积量编程 西门子S7-200PLC在流量计量方面的应用,如何计量累积量!
发布时间 : 2025-03-16
作者 : 小编
访问数量 : 23
扫码分享至微信

西门子S7-200PLC在流量计量方面的应用,如何计量累积量!

1. 引言

目前,PLC已经广泛应用于钢铁、石油、化工、电力、建材、机械制造、汽车、轻纺、交通运输、环保及文化娱乐等各个行业。它具有高可靠性、抗干扰能力强、功能强大、灵活、易学易用、体积小、重量轻、价格便宜的特点,在流量计量方面也有着广泛的用途,在用于流量累积时又有其编程的独特之处。下面进行详细的分析和论述,包括在西门子S7-200 CPU上编程的例子。

2. 使用PLC显示流量和计算累积量

流量计输出的信号一般是脉冲信号或4~20mA电流信号,这两种信号输出的都是瞬时流量,我们的目的是在PLC中计算和显示瞬时流量值和计算累积量值,当输入信号是脉冲信号时,在计算瞬时流量的时候,必须按照严格的时间间隔计算才能保证瞬时流量的准确性。因此,计算瞬时流量的时候必须用定时中断来进行。而且,在PLC系统中只能运行这一个中断程序,不允许再产生其它中断(即使是低优先级的中断也不允许运行),以防止干扰定时中断的时间间隔的准确性,计算瞬时流量就是将这个时间段的累计脉冲个数换算成累计流量,再除以时间就是瞬时流量。对于4~20mA输入只需按照其对应的量程进行换算就可以直接得到瞬时流量,而累积流量就是将每个时间段内的累积流量累加起来,在实际使用PLC编程的过程中必须注意以下几个问题:

(1) 输入脉冲频率范围是否超出PLC的接收范围;

(2) PLC高速计数器在达到最大计数值时如何保证计算正确;

(3) 如何保证定时中断不受干扰;

(4) 如何避免计算累积量的误差;

(5) 累积量的最大累积位数;

(6) 如何复位累积量。

下面就最关键的2、4、6问题进行详细的叙述,以西门子S7-200 CPU224为例,S7-200的CPU224具有6个单相最大30kHz的高速计数器,但PLC内部没有提供相应的算法来计算频率,需要使用者自行编程计算,这就需要在PLC高速计数器在达到最大计数值时要保证计算的正确性。实际编程时,对高速计数器初始化以后就使之连续计数,不再对其进行任何干预,其高速计数器的初始化程序如图1所示(此段程序应放到PLC第一个扫描周期执行的程序中执行)。

图一:高速计数器的初始化程序

对于高速计数器是否达到最大计数值时需要判断,S7-200CPU的高速计数器是可以周而复始地进行累计的,最高位为符号位,最小值为7FFFFFFF。由于计数器是一直累加的,不可能出现本次读取的计数值小于上次计数值的情况,因此判断计数器当前值是否小于前一次的计数值,就可以判断计数是否达到最大值的拐点(7FFFFFFF),如果达到,则执行特殊的计算以便消除计算错误,程序如图2所示(此程序应放在定时中断子程序中执行)。

当当前计数值大于等于上次计数值时,两个计数值做差,就得到程序两次扫描时间间隔内的计数差值,同时将当前计数值赋值到上次计数值上;当当前计数值小于上次计数值时,计算上次计数值与7FFFFFFF之间的差值(用减法),以及当前计数值和7FFFFFFF之间的差值(用加法,此时寄存器溢出,数位前移),然后将两个结果相加就是程序两次扫描时间间隔内的计数差值,从而实现对累计计数值达到拐点时的正确计算。

图二:消除计算错误程序

实际上,在现场应用中定时中断子程序是采用250ms中断一次执行的,使用SMB34进行控制的。需要注意的是,系统中必须只保证这个中断是唯一存在的,不会受到其他中断的影响,否则可能会因其它中断的影响使周期性中断不准时,从而影响精度。

通过以上计算就得到了250ms内流量计发过来的脉冲个数,这个数值乘以脉冲当量就是250ms内的流量值,再除以时间就是瞬时流量。另外,在250ms内再执行累加程序就可以计算累积流量了。在计算累积流量过程中需要避免累积过程的计算误差,我们知道,流量累积量是一直累积的一个数值,一般会累积到8位数,而plc内部浮点数的有效位数是6位,当累积量数值很大的时候就会造成一个大数和一个小数相加,势必导致小数的有效位数丢失,造成很大的累积误差,因此,要避免大数和小数相加的情况出现。解决方法是采用多个流量累积器,只允许同数量级的数值相加,从而避免数值有效位数损失,实际编程中采用了5个累积器,根据常用流量情况下,在周期中断时间间隔(250ms)内流过的流量乘以15作为第一个累积器的上限,当达到这个累积器的上限值后,将这个累积器的值累加到第2个累积器中,并把第一个累积器清零,对于第三个累积器也同样处理,第4个累积器用于保存累积量小数部分数值,第5个累积器用于保存累积量整数部分数值,这样在显示总累积量时只需显示整数部分和小数部分就可以了,整个过程充分避免了累积过程中大数与小数相加的情况出现。在实际工程中,需根据流量的大小、周期中断的时间间隔来确定所用累积器的个数,而累积器的整数部分用双整数来表示,双整数的范围是-2,147,483,648到+2,147,483,647,可以使累积器的整数位数达到9位。这样,在显示累积量时就可以最多显示9位整数的累积量和6位小数的累积量,总计15位,从而省略累积器倍乘系数,使读数更简便。

对累积器需要在一定条件下复位,累积到最大数值或手动复位,在中断程序中判断累积量是否达到或超过最大位数,当超过最大数值时,将各个累积器清零,清零的触发信号也可以是手动触发。

3. 结束语

本文列出了在PLC中计算和显示瞬时流量和计算累积量时可能遇到的问题,并以西门子S7-200 CPU224系列探讨了解决办法,值得进行该工作的工程人员借鉴。

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累积量为什么清零?

PLC累积量清零是为了确保下一次计数的准确性。在工业控制系统中,PLC累积量通常用于计算生产数量、时间和速度等参数。如果不定期清零,累积量会越来越大,导致计...

西门子PLC-s7200smart流量累计并达到累计之后清零怎么写?

首先你的累计值是在程序中做的累积不是通讯读取的累积值累计值和设定值做个比较,上升沿导通线圈,在用线圈复位累积值就可以了你这问题问的你就问累计怎么做...

三菱PLC怎么写累计计数程序,在触摸屏上面显示,谢谢?

LDM8013DINCPD200上面是每一秒钟加一,在触屏显示计数的寄存器,指定为D200就可以了LDM8013DINCPD200上面是每一秒钟加一,在触屏显示计数的寄存器,指定为...

三菱plc累计计时程序

[最佳回答]三菱PLC快没电时会有指示灯一闪一闪的,在一个月内要换新电池否则数据丢失.

300plc计数器累计用什么变量?

在300PLC计数器中,通常会使用一个整型变量来进行累计计数。这个变量可以用来保存计数器的当前值,并且可以根据需要进行增加或减少操作。通过使用整型变量,可以...

plc编程要如何做能在最短时间内学会?

plc编程也一样好多类似“几天精通”的都是噱头尤其是个别的plc培训机构,学这个还得脚踏实地一步一步...plc编程要如何做能在最短时间内学会任何事都没有捷径可...

三菱plc怎样实现累加器功能?

关于这个问题,要实现累加器功能,可以使用三菱PLC中的数据寄存器(D寄存器)来存储累加器的值。下面是一个简单的累加器程序示例:1.首先,定义一个D寄存器作...

三菱plc恒压pid编程实例?

以下是一个三菱PLC恒压PID控制的程序实例:```MC+GB10#10=2000//设置计算周期为2000ms(示例)MC+S1#1=0//PV实际值#2=0//SV...

主设备为西门子PLC,如何把流量计中的累计流量值取出来?

1.首先你的累计值是在程序中做的累积不是通讯读取的累积值2.累计值和设定值做个比较,上升沿导通线圈,在用线圈复位累积值就可以了你这问题问的你就问累计怎...

plc怎么显示运行时间?

plc显示运行时间的方法步骤:第一按下启动按钮I0.1,电机开始运行(输出Q0.0),运行时间开始累积。2.运行时间到达60秒后,分钟开始累积,分钟到达60秒后,小时开始...

 cbr1000rr  汪汉臣 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部