西门子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中来,然后在中断中调用累计程序,例如累计流量=(瞬时流量+累计流量)/3600这个是流量单位是xx/h的,如果是xx/分钟的话就是...
plc累积量为什么清零?
PLC累积量清零是为了确保下一次计数的准确性。在工业控制系统中,PLC累积量通常用于计算生产数量、时间和速度等参数。如果不定期清零,累积量会越来越大,导致计...
三菱PLC怎么写累计计数程序,在触摸屏上面显示,谢谢?
LDM8013DINCPD200上面是每一秒钟加一,在触屏显示计数的寄存器,指定为D200就可以了LDM8013DINCPD200上面是每一秒钟加一,在触屏显示计数的寄存器,指定为...
怎么用PLC300计算电机累积运行时间???-ZOL问答
用PLC300计算电机累积运转时间的方法:假设测量周期约为一秒,可在被测信号的上升沿产生中断,在硬件中断组织块OB40中读取实时时钟的时间,记录中...
plcs7-200累计数跳双数是怎么回事?
在PLCS7-200中,累计数跳双数是指当一个计数器从0开始计数时,每次计数值都增加1,但是每当计数值为奇数时,计数器不进行计数,直到下一个偶数值才继续计数。这...
皮带秤上累计脉冲输出什么意思?
皮带秤上累计脉冲输出是指在皮带运输过程中,通过传感器检测到的皮带的运动,将其转化为相应的脉冲信号,并进行累加。这个累计脉冲输出可以用来计算皮带的运输距...
主设备为西门子PLC,如何把流量计中的累计流量值取出来?
1.首先你的累计值是在程序中做的累积不是通讯读取的累积值2.累计值和设定值做个比较,上升沿导通线圈,在用线圈复位累积值就可以了你这问题问的你就问累计怎...
三菱plc中c200计数器用法?
您好,C200系列PLC中有多种类型的计数器可供使用。以下是一些常见的用法:1.单位计数器:用于计算输入信号的脉冲数,可设置计数范围和计数方向。2.比较计数...
PLC模拟量值校准问题?
在触摸屏或者PLC上加按钮,用来启动校正程序。启动校正程序,每秒读取精度高的压力表读数,与待校正表读数比较差额值,自动记录下来。把50个差额值累计后算平均...
PKS系统如何通过第三方通讯来读写西门子PLC的数据?-盖德问答...
为什么要用第三方通讯,pks可以直接和西门子plc通讯的啊!第三方通讯一般是用opc楼主的第三方值的就是西门子plcpks内置和各种第三方通讯的软件霍...