累计流量

合集下载

流量累积计算

流量累积计算

假设现场气体流量计仪表位号为FIT-2101 ,铭牌标注量程35 - 1000 m3/h,信号输出类型为4-20mA,不管选用何种类型PLC和PLC编程软件,把该现场仪表流量累积通过PLC编程软件实现出来(有DA输入及周期循环累积就可以了)。

应擂者需说明采用何种类型PLC,需要粘贴实现流量累计的PLC程序,同时最好有相应的程序说明。

本周末结贴,三个最优回帖分别获得25MP、15MP、10MP!MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。

MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。

兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。

总记录数29 总页数1当前页1 1引用| 回复| 2010-08-19 08:55:09 1楼永不止步打酱油的路过。

引用| 回复| 2010-08-19 09:08:53 2楼小楼气体流量计采用模拟量进行累加,进行气体累计的方式不是很可取。

当然这个可以作为一个算法。

引用| 回复| 2010-08-19 09:15:43 3楼饶歌天然气的计算比较复杂,由于气温、湿度、压力、天然气的纯度都影响积算,今天的擂台题设定在理想标准状态下。

引用| 回复| 2010-08-19 11:25:50 4楼工控十年采用丰炜VH-20AR PLC,主机自带4AD/2DA,通过读写特殊寄存器操作。

程序中写的是每秒读一次,60秒求一次平均流量(最简单的总和平均,没做细处理),最后做累加。

M0为流量清空按钮。

写的比较简单,只为抛砖引玉,也没调试,有错误是肯定的,欢迎指点。

引用| 回复| 2010-08-19 11:56:18 5楼云锋采用施耐德Premium系列PLC,配置4AI模块。

程序采集每秒管网实时流量,进行小时累积,处理后得到每小时流量。

累计流量的名词解释

累计流量的名词解释

累计流量的名词解释当今数字化时代,互联网已经成为人们生活中不可或缺的一部分。

与此同时,随着移动设备的普及和互联网的便捷,人们对于流量的需求日益增长。

与此相关联的一个重要概念就是累计流量。

那么,累计流量指的是什么呢?简单来说,累计流量是指在一定周期内,用户可以使用的总流量量。

在运营商的数据包中,累计流量表明了用户在一个特定的时间范围内可以使用的总数据量。

不同的运营商,在不同的套餐中,提供不同的累计流量额度,通过这个额度用户才能够正常地进行上网、下载、观看视频等等。

当用户使用的流量总量超过了套餐中规定的累计流量额度,一般会收取额外费用或者降低网速。

累计流量的概念并非仅适用于移动网络,它也可以应用于有线宽带或者其他形式的网络连接。

不同的网络运营商或服务提供商,在不同的套餐中会规定不同的累计流量限制。

这个限制的目的在于控制网络资源的使用,并且使得网络的使用更加公平合理。

累计流量的计算方式一般采用字节数或者位数来表示。

在不同的运营商或服务提供商中,计算方式可能有所不同。

通常情况下,用户可以通过手机上的流量监控工具或者登录运营商的官方网站来查询自己的累计流量使用情况。

这样做的好处是,用户能够随时了解自己的流量使用情况,以便有效地管理和控制自己的流量消耗。

随着互联网的不断发展和创新,许多应用程序和服务已经将流量使用纳入了自己的功能之中。

很多手机应用和操作系统都提供了数据流量的监控功能,用户可以随时查看自己使用的流量情况。

此外,一些应用还提供了流量统计的功能,用户可以查看流量的具体使用情况,并且可以对流量使用情况进行限制。

这样一来,用户就可以更加方便地管理和控制自己的流量消耗。

值得一提的是,虽然累计流量是移动互联网使用中的重要概念之一,但并不是唯一的考量因素。

除了累计流量外,用户还需要关注网速、网络覆盖、套餐资费以及其他服务质量等因素。

只有综合多个因素进行考虑,才能选择到最适合自己需求的套餐和服务。

综上所述,累计流量是运营商或服务提供商规定的用户在一定时间范围内可使用的总流量量。

PID程序,流量累计,OB35循环时间

PID程序,流量累计,OB35循环时间

PID程序,流量累计,OB35循环时间PID程序中cycle=1s,要在OB35中调用这个fc块(PID 程序块),OB35的默认循环周期为100ms我是否应该将其改为1000ms(OB32的默认是1000ms两者要是相同有影响么),现在我还要做流量累计,也想在OB35中调用FC(流量累加的功能块是否课可以)。

另外流量累加的程序一般怎么写?问题补充:OB1中的程序是循环执行的,而OB35的程序我修改为1000ms后将1s执行一次我这样理解对么?但是我在OB35中调用了几个FC(PID程序的),在调用累积流量的程序块会不会影响精度啊,有没有必要OB35中只调用累积流量的程序块?最佳答案1、PID程序中cycle=1s?1s的时间有些过长。

首先了解OB35与采样周期:OB35中断周期:按所设定的时间间隔产生中断。

采样周期:常指在周期性的采样系统中,当对一模拟量进行采样时,两次采样之间的时间间隔。

一般采样周期cycle 设置为在100ms-200ms之间。

采样周期cycle过长会使得PID调节过程不易于稳定。

原理上,PID的调节节奏应该与其采样周期一致,这是数学模型应与物理过程一致的要求。

这也就是FB58要在OB35中周期调用且OB35的周期要与FB58采样周期一致的原因。

2、现在我还要做流量累计,也想在OB35中调用FC(流量累加的功能块是否课可以)?另外流量累加的程序一般怎么写?可以。

有关流量累计参见:参考技术论坛:流量累积功能块/club/bbs/post.asp?b_id=4&a_id= 441387&s_id=0&num=5#anch看看同类答案,连接:/service/answer/solution.asp?Q_i d=32024&cid=1029/service/answer/solution.asp?Q_i d=32024&cid=1029/service/answer/solution.asp?Q_id=25356&cid=1029/service/answer/solution.asp?Q_i d=45494&cid=1029/service/answer/solution.asp?Q_i d=43505&cid=1029。

累积流量

累积流量

200的话应该只接受0-20毫安信号,用4-20毫安输入先要做一下量程转换,把0-20毫安信号转为4-20毫安,然后在做工程单位换算,算出当前单位的瞬时值,即可显示瞬时流量。

做流量累计的话,把瞬时值按当前时间单位进行累加即可,时间单位越小,累积误差越小。

例如:流量计量程0-100升/分,变送输出4-20MA,plc为单极性输入0-20MA(即0-32000,对应4-20MA为6400-32000),可按下面公式计算出瞬时流量:瞬时流量值= [(量程上限- 量程下限)* (PLC当前采集数- 6400) / (32000 - 6400)] + 量程下限当当前流量计顺时流量为50升/分,变送输出为12MA,PLC采集量即为19200:瞬时流量值=[(100 - 0)* (19200 - 6400) / (32000 - 6400)] + 0 = 50做流量累积的话,可把升/分单位换算成升/秒,然后每秒钟对瞬时流量做一次累加,最后得数再换算回升/分,即可得出当前累积流量。

一般情况下按秒做误差比较大。

至于怎么清零,日累积,月累积什么的计算看你实际要求了。

PLC里做计算时别忘了先把实数转换浮点数,运算完再转回来本文三个编程实例都是在网上回答网友的求助而编写的,现重新整理,供网友参考,有不当之处,请批评指正。

一、一网友求助:“在文本显示器上设定一个数据,也就是需要的吨数,启动PLC,到我设定的吨数后,停泵就可以啦,使用硬件有西门子s7-200cpu226,模拟量模块EM235,文本显示器,电磁流量计,泵各一个。

这个程序怎么编?请各位师傅帮帮忙?文本显示器也连好啦,文本显示器上怎么设置也解决啦。

”又一网友求助:“我需要流量信号转换成数字信号,对应的数字信号累加成实际流量吨数输出,然后再采用比较设定吨数到达后停泵,对应的流量量程是80立方。

输入的流量信号是4-20MA,请麻烦你给我编一下程序。

谢谢啦。

”回复:1、EM235模块当输入信号为20MA时对应的数字量AIW4 =32000,对应的流量为80 立方/ 秒= 8 立方/ 0.1秒。

累计流量

累计流量

累计流量累计流量累计流量累计流量(西门子程序西门子程序西门子程序西门子程序) FUNCTION "FLUXbase" : VOID V AR_IN_PUT PV : REAL ; //瞬时流量CYC : REAL ; //采样时间(MS) PLL : REAL ; //最小瞬时流量END_V AR V AR_IN_OUT OV_ER1 : REAL ; //累计偏差OV_ER2 : REAL ; //累计偏差PV_ALT : REAL ; //上周期瞬时流量OV : REAL ; //流量累积输出END_V AR V AR_TEMP tmpReal1 : REAL ; tmpReal2 :REAL ; OValt : REAL ; END_V AR BEGIN OV alt := OV ; IF PV >= PLL THEN tmpReal1 := PV * (CYC / 3.6E+6 ) + OV_ER1 ; tmpReal2 := tmpReal1 + OV_ER2 ; OV := tmpReal2 + OValt ; OV_ER1 := OV_ER2 - tmpReal2 + tmpReal1 ; OV_ER2 := OValt - OV + tmpReal2 ; ELSE OV := OValt ; END_IF ; IF OV >= 1.000000e+009 THEN OV := 0.000000e+000; END_IF ; END_FUNCTION 这是我的累积计算,程序简单,精度也比较高OValt = 1.0e+006 tmpReal2 = 0.1 OV = OValt + tmpReal2 = 1.0e+006 + 0.1 = 1.0e+006 OV_ER2 := OValt - OV + tmp Real2 = 1.0e+006 - 1.0e+006 + 0.1 = 0.1 qlhcco 2008-5-13 18:36:36 我把我的家底都抖给你了,这是浮点数在执行加减法时产生的误差,我把每次运算的误差再加的本次的积分里,不管再小的数,累加定量以后,他就可以加到OV里了,所以我的这个算法不会因为OV值大了而不能累积。

E+H流量计使用型号

E+H流量计使用型号

流量计英文名称是flowmeter,全国科学技术名词审定委员会把它定义为:指示被测流量和(或)在选定的时间间隔内流体总量的仪表。

简单来说就是用于测量管道或明渠中流体流量的一种仪表,工程上常用单位m3/h,它可分为瞬时流量(Flow Rate)和累计流量(T otal Flow),瞬时流量即单位时间内过封闭管道或明渠有效截面的量,流过的物质可以是气体、液体、固体;累计流量即为在某一段时间间隔内(一天、一周、一月、一年)流体流过封闭管道或明渠有效截面的累计量。

通过瞬时流量对时间积分亦可求得累计流量,所以瞬时流量计和累计流量计之间也是可以相互转化的。

1联8065==2190系38CONTOIL 流量计VZO 20 VZO 20RC 130/16-In-0,1 artno. 92292UFM流量计ASN-040LM-6-789V9.TTLXU正确型号MN-ASB40LM-6-789V.9TXL0-XU.SICK超声波流量计ELSE100-H 55SST1,PN 1042689,Slave(B) SN 11208506 11208505,Master(A),一个接收端,一个发送端HEDLAND流量计H794A-030-S11 数量2 EH油泵出口流量计SMARTFLOW的流量计型号F3-D-25E+H 流量计80F25-5U20/0M100B01353CS1BN 5000SCCM 数量2个MKS。

流量计科隆流量计H250H/RR1/M9/K1/Ex,DN25,PN4.0KURZ烟气流量计454FTB-16-HHTModel: 454FTB-16-HHT,Part Number: 756056-H-32-P-1-A-000-M-01-A-015-B-0537Hedland流量计HT622-004SMARTFLOW的流量计DDS-3b-bWEBTEC威泰科流量计CT750-SR-S-B-7OVAL蒸汽流量计W1100-N11G-1116AE+H流量计80E50-AD2SAAAAAAAWEBTEC威泰克流量计CT150-MA-B-B-6SPONSLER流量计IT400-DC-TRL-AXAQUAMETRO流量计VZO 20FL130/25KEM的流量计有做吗ZHM05ST.H.V 5-150L/min1涡街流量计\型号:72F1F-SB0AA1CAB4AW\SN:F8005618000\输出信号:4~20mA+HART\功率:1W\精度:0.75级\法兰尺寸磅级:6" 150LB\法兰密封形式:RF\厂牌:E+H\用于废水甲烷气SIERRA流量计640S-NAA-L06-M0-EN2-P2-V4,用途为选矿的浮选工艺, 管道内介质为空气FLEELGUARD流量计FH235请确认以下型号FH2350300 MFH2350400 MNUFLO流量计修理包9A-100003474HEDLAND流量计H794A-030Smartflow 流量计 DD-3ESmartflow P/N:00004440Smartflow P/N:00004900EUSmartflow P/N:00004441Smartflow P/N:98800002Smartflow P/N:98540000Smartflow P/N:98400000Turbinenradgaszahler流量计 TERZ 94AQUAMATER流量计数量1台VZO 40FL 180/JIS,10K40的法兰的长度=290,中心距=105VZO 40 FL 180/JIS 10-20KKURZ烟气流量计454FTB-16-HHTKING流量计:T205-0201-3-1-WKING流量计:T205-0171-3-1-WHALLIBURTON 哈里伯顿流量计MC-IIE+H 质量流量计80F25-5QL7/0 350℃OMEGA 1.流量计 FMG71-AOMEGA 1.数据采集装置DP25B-E-230CONTOIL燃油流量计 VZF 50 FL 130/25CONTOIL燃油流量计VZF 15 FL 130/25E+H 流量计 80F25-3MP4/0CONTOIL流量计VZF20RC130/16AVERY HARDOLL流量计型号是HBMY97410MJ VSE流量计VS 0,2 GPO12V-32N11/4-10KEM流量计ZHM02KL.D.VVSE流量计VS4GP012V32N11CONTOIL流量计VZF15RC130/16Hedland流量计H794A-030RHEONIK流量计RHM06模块RHE14/24VDCMANUFLO MAMES20流量计E+H 品名:流量计型号:10H40-1F0A1AA0A5AASMARTFLOW的流量计DD-3B流量计OVZ153G4NL343,KOBOLD流量计5套MN-BSK100LM-20BT-32V1.0-A2NR-E-Z86 品牌UNIVERSAL HEDLAND流量计H700A-020Aquametro 流量计型号:CONTOIL CLASS B, VZO 20FL 130/25,规格:Qmin 30L/h DN 20mm, Qmax 150L/h PN 25bar, Qcont 1000L/h, VL 36cm2, Tmax 130℃,NN 1-20mPa.S, P/N:92049, S/N: 4833341, SWISS MADE克拉克KRACHT流量计VCG2FCP2科隆流量计,OPTIFLUX2100CPIUSI飘斯流量计:K200PULSER HPKURZ流量计 MODE;454FTB-16HHT S/N;FD29845A ITEM;0019262 MFGDATE;05/08/2013 PRESSURE;300PSI/200BE+H 氨流量计E+H 80F25-3MP4/0VSE流量计VS0 1EPO12V-32N11/4 10-28VDC NR:13500VSE流量计(防爆)VS0 1EPO12V-32Q11/4Turbines流量计580-477-3067hedland 流量计h794a-030克拉克流量计VC0.2F1PSOMEGA流量计FMA1812AOMEGA流量计FMA1844AOMEGA流量计FMA1828ARHEONIK 流量计RHM06 RHE14(带连接线2米)Precision flow帕尔希森流量计型号:190PLT WPG 型号已经被190PD WPG 替代,Eletta流量计A2-FA50 报价型号:D2-FA50CONTOIL流量计VZOA 40 FL 180/JIS 16K 序列号4975364EGE流量计SDN510GAFAURE HERMAN 涡轮流量计型号:TZN150-600 CS ANSI 600TZN STD-J1-C-AA-2-O-T-H-D-B-300-S32- 1-1-C12-C-A-1-B-H-H-03-1-A AQUAMETRO重油流量计FLOW METER,METER : VZO-25 FL 130/25,METER NO.4630732nuflo流量计9A-100005114nuflo流量计9A-100003550nuflo传感器9A-100003550SMARTFLOW流量计DD-3B/DDS-3B 3/8"NPTKEM流量计SRZ 40 ST.H1.N.T科宝流量计VKP-1100R25SKOBOLD流量开关DSV-2209HU0N32YKOBOLD就地流量计DSV-1202H00N08VSE流量计型号是VS0.4 GPO 12V-32N11/2 10..28V DC ART.NR:14000 FISCHER流量计MODEL: W5927 DS 1102VDYYBKD062为老型号对应的最新的型号DS 1102VDYYBKYY00D0544nuflo 8寸流量计 9A-100012094超声流量计表头\KF160-1-1-0-P1D1R0-1-1-0\KATRONIC 超声流量计探头\M4N\KATRONICWEBTEC流量计CT400-MA-B-B-6KURZ流量计MODE;454FTB-16HHT S/N;FD29845A ITEM;0019262 MFGDATE;05/08/2013 PRESSURE;300PSI/200B QUALITROL 指示流量计CAS-724-1+FLA-644-1 092-052-01 VSE流量计VS4GP012V12A11A/4 24VDC总燃油流量计/Main Engine Fuel Oil Supply System型号/TYPE : VZO 40FL 130/25出厂号/SN : 4979151制造厂/MANUF. : INSTRUMENTSgf流量计 P51530—P1MKS 常规流量计GE50AE+H流量计型号:FTL50-NGN2AA4G7AVSE流量计VS 1 GPO 54V 32N11/4 10..28V DC 8105015KURZ流量计 454FTB-16-HHTPIUSI飘斯流量计:K200PULSER HP 数量2452030 - K200 HIGH PRESSURE PULSE METER 1/8” –7 10583970 流量计数显示器 A103-000,正面尺寸:38*33MM 2 个厂家:DANAHER INDUSTRIAL CONTROLSKRACHT流量计VC0.4F4PSKRACHT流量计VC1F4PS威尔巴流量计(插入式)规格型号:VRB640B-G40/0.7-ZNNNH-159/4.5-CS-I90TG1E+H质量流量计型号:83F40-AD2SAABABHANE+H质量流量计型号:83F50-AD2SAABABHANGE TransPort PT878 超声波流量计。

流量累加

流量累加

假设现场气体流量计仪表位号为FIT-2101 ,铭牌标注量程35 - 1000 m3/h,信号输出类型为4-20mA,不管选用何种类型PLC和PLC编程软件,把该现场仪表流量累积通过PLC编程软件实现出来(有DA输入及周期循环累积就可以了)。

永不止步老菜鸟我本来只是打下酱油,准备路过的。

但看到楼上几位比较积极,也看到有人喜欢保密这个程序,所以我对这个程序来具体说明并公开一下。

我下面的程序属于笔者原创,所有文字及程序均由笔者自己书写,并非摘抄!该程序是以西门子S7-200系列PLC为例来编写的。

该程序经过在S7-224上面测试成功,基本上无误差!(误差在小数点后几位)。

下面先对程序的方案、思维方式、编程方法、注意事项等方面进行说明,然后再贴上PLC程序。

对于流量累计而言,看起来好像是个很简单的程序,但实质上还是有很多需要注意的地方。

写累加程序不难,但要做到误差最小,就不是那么容易的事情了。

简述如下。

1. 首先是采样时间采用的计时方式的问题。

可能有些人会采用定时器(包括1ms/10ms/100ms/1s定时器及秒脉冲等)来作为采样周期--------这样会增大误差。

可以用计时器指令来来作为采样间隔时间,每次计时器到了设定值就采样一次。

计时器的精度不可能高于它的时基,因此每次计时器超时和再次开始计时的时候,都要产生一个时基的正或负的误差。

例如,10ms为一个时基的计时器预定计10次,其时间计算将是100ms正或负10ms。

假设你采用100ms定时器来作为采样周期,那么在程序运行过程中,实际上的有效采样周期不是100ms,在这个基础上还包括了PLC的扫描周期的一部分(扫描周期过程包含如下内容。

读取输入--------S7-200将实际输入的状态复制到过程映像输入寄存器;执行程序中的控制逻辑--------S7-200执行程序指令,并在不同的存储区存储数值;处理通讯请求--------S7-200执行通讯所需的所有任务;执行CPU 自检诊断--------S7-200可确保固件、程序存储器和所有扩展模块正确工作;写入输出--------将存储在过程映像输出寄存器中的数值写入到实际输出。

流量累计公式

流量累计公式

Qi = Qmax
K ⋅x 461.9(Ti + 273.15) − 9.7 + 0.0132Ti Pi + 101.36

K=
461.9(Tb + 273.15) − 9.7 + 0.0132Tb Pb + 101.36
Qi:瞬时流量; Qmax:最大设计瞬时流量,最大差压对应的流量值; x:测量差压,其值为量程的百分比; Ti:补偿温度,单位为℃; Pi:压力输入,单位为 KPa; Tb:设计额定温度,单位为℃; Pb:设计额定压力,单位为 KPa; 8:一般气体全补偿开方累积 公式:
-2-
Qi = Qmax K=
K (101.36 + Pi ) ⋅ x 273.15 + Ti


273.15 + Tb 101.36 + Pb
Qi:瞬时流量; Qmax:最大设计瞬时流量,最大差压对应的流量值; x:测量差压,其值为量程的百分比; Ti:补偿温度,单位为℃; Pi:压力输入,单位为 KPa; Tb:设计额定温度,单位为℃; Pb:设计额定压力,单位为 KPa;
澳泰自动化
流量累积公式
常用流量累积公式算法汇总(用于上位机运算用)
1:线性累积 公式:Qi=xQmax; Qmax:最大设计瞬时流量; x:测量差压,其值为量程的百分比; Qi:瞬时流量; 2:开方累积 公式:Qi=Qmax
x;
Qi:瞬时流ห้องสมุดไป่ตู้; Qmax:最大设计瞬时流量; x:测量差压,其值为量程的百分比; 3:饱和蒸汽全补偿线性累积 公式:
澳泰自动化
Qi = Qmax
x⋅ ( Pi + 137.411) ; Pb + 137.411
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

累计流量累计流量累计流量累计流量(西门子程序西门子程序西门子程序西门子程序) FUNCTION "FLUXbase" : VOID V AR_IN_PUT PV : REAL ; //瞬时流量CYC : REAL ; //采样时间(MS) PLL : REAL ; //最小瞬时流量END_V AR V AR_IN_OUT OV_ER1 : REAL ; //累计偏差OV_ER2 : REAL ; //累计偏差PV_ALT : REAL ; //上周期瞬时流量OV : REAL ; //流量累积输出END_V AR V AR_TEMP tmpReal1 : REAL ; tmpReal2 :REAL ; OValt : REAL ; END_V AR BEGIN OV alt := OV ; IF PV >= PLL THEN tmpReal1 := PV * (CYC / 3.6E+6 ) + OV_ER1 ; tmpReal2 := tmpReal1 + OV_ER2 ; OV := tmpReal2 + OValt ; OV_ER1 := OV_ER2 - tmpReal2 + tmpReal1 ; OV_ER2 := OValt - OV + tmpReal2 ; ELSE OV := OValt ; END_IF ; IF OV >= 1.000000e+009 THEN OV := 0.000000e+000; END_IF ; END_FUNCTION 这是我的累积计算,程序简单,精度也比较高OValt = 1.0e+006 tmpReal2 = 0.1 OV = OValt + tmpReal2 = 1.0e+006 + 0.1 = 1.0e+006 OV_ER2 := OValt - OV + tmp Real2 = 1.0e+006 - 1.0e+006 + 0.1 = 0.1 qlhcco 2008-5-13 18:36:36 我把我的家底都抖给你了,这是浮点数在执行加减法时产生的误差,我把每次运算的误差再加的本次的积分里,不管再小的数,累加定量以后,他就可以加到OV里了,所以我的这个算法不会因为OV值大了而不能累积。

你可以模拟一下,有偏差变量和没有偏差变量V AR_INPUTFUNCTION "FLUXbase" : VOIDVAR_INPUTPV : REAL ; //瞬时流量CYC : REAL ; //采样时间(MS)PLL : REAL ; //最小瞬时流量END_VARVAR_IN_OUTOV_ER1 : REAL ; //累计偏差OV_ER2 : REAL ; //累计偏差PV_ALT : REAL ; //上周期瞬时流量OV : REAL ; //流量累积输出END_VARVAR_TEMPtmpReal1 : REAL ;tmpReal2 :REAL ;OValt : REAL ;END_VARBEGINOValt := OV ;IF PV >= PLL THENtmpReal1 := PV * (CYC / 3.6E+6 ) + OV_ER1 ;tmpReal2 := tmpReal1 + OV_ER2 ;OV := tmpReal2 + OValt ;OV_ER1 := OV_ER2 - tmpReal2 + tmpReal1 ;OV_ER2 := OValt - OV + tmpReal2 ;ELSEOV := OValt ;END_IF ;IF OV >= 1.000000e+009 THENOV := 0.000000e+000;END_IF ;END_FUNCTION这是我的累积计算,程序简单,精度也比较高OValt = 1.0e+006tmpReal2 = 0.1OV = OValt + tmpReal2 = 1.0e+006 + 0.1 = 1.0e+006OV_ER2 := OValt - OV + tmp Real2 = 1.0e+006 - 1.0e+006 + 0.1 = 0.1qlhcco2008-5-13 18:36:36我把我的家底都抖给你了,这是浮点数在执行加减法时产生的误差,我把每次运算的误差再加的本次的积分里,不管再小的数,累加定量以后,他就可以加到OV里了,所以我的这个算法不会因为OV值大了而不能累积。

你可以模拟一下,有偏差变量和没有偏差变量的区别。

你会发现其中的奥妙了。

yzdatou2008-5-14 7:11:04模拟了一下确实是对的。

谢谢ls指教。

你的思路很独特,受教了。

qlhcco2008-5-14 9:56:14我这个思路也不是完全是我自己的,其实是我在研究SETP7 FB41的PID功能是发现的,最后我就应用在累积计算的算法里了yzdatou2008-5-14 19:20:34很佩服你的钻研精神,自愧弗如。

另外,我思考再三,仍然要给你来个鸡蛋里面挑骨头,呵呵。

假定累积量越来越大,最终达到8位数,而实际有效数字仅7位,那么这个累计量的个位数将不再变化了。

qlhcco2008-5-15 0:07:57确实是这样的,这是由于浮点数的问题,这个问题不是不可以解决,dint型数据可以显示2147483647;可以将OV结果转换为DINT类型数据,OV_ER2也转换成DINT类型数据,OV(dint)+ OV_ER2( dint )= OUT(显示用)该输出不用于计算只是用于显示。

你认为如何?yzdatou2008-5-15 16:26:57你说的没错。

我就是用dint类型变量来存储累积量,再用一个real变量存储小于1的累积量到1就进位。

FUNCTION_BLOCK FB618//TITLE = 'LEIJI'//know_how_protectVERSION: '6.0'AUTHOR: nyjNAME: nyjFAMILY: china{S7_m_c:='true'}// Block ParametersVAR_INPUT// Input ParametersTongDaoDiZhi{S7_m_c:='true'}:WORD:=0;// AI adressXunHuanShiJian{S7_m_c:='true'}:REAL:=100;// unit:msLiangcheng{S7_m_c:='true'}:REAL:=0.0;// m3/h(max) , t/h(max)QingLing{S7_m_c:='true';S7_string_0:='false';S7_string_1:='true'}:BOOL:=0;// back to zeroEND_VARVAR_OUTPUT// Output ParametersShunShiZhi{S7_m_c:='true'}:REAL;//m3/h , t/hLeiJiZhi{S7_m_c:='true'}:DINT;//m3 , tEND_VARVAR_IN_OUTLeiJiHH:DINT:=0;//(1e--??ee)LeiJiH:DINT:=0;//(1--1e)LeiJiL:REAL:=0.0;//(0.0--1.0)END_VARBEGINIF WORD_TO_INT(TongDaoDiZhi)< 0 OR WORD_TO_INT(TongDaoDiZhi)= 32767 OR WORD_TO_INT(TongDaoDiZhi)= -32767 THENTongDaoDiZhi:=0;END_IF;IF WORD_TO_INT(TongDaoDiZhi)> 27648 AND WORD_TO_INT(TongDaoDiZhi)<> 32767 AND WORD_TO_INT(TongDaoDiZhi)<> -32767 THENTongDaoDiZhi:=27648;END_IF;ShunShiZhi:=WORD_TO_INT(TongDaoDiZhi)*Liangcheng/27648.0;LeiJiL:=LeiJiL+ShunShiZhi*XunHuanShiJian/3600000.0;IF LeiJiL >= 1.0 AND LeiJiL < 100000000.0 THENIF REAL_TO_DINT(LeiJiL)<=LeiJiL THENLeiJiH:= LeiJiH + REAL_TO_DINT(LeiJiL / 1.0);LeiJiL:= LeiJiL- REAL_TO_DINT(LeiJiL / 1.0);ELSELeiJiH:= LeiJiH + REAL_TO_DINT(LeiJiL / 1.0)-1;LeiJiL:= LeiJiL - REAL_TO_DINT(LeiJiL / 1.0)+1;END_IF;END_IF;IF LeiJiL >= 100000000.0 THENIF REAL_TO_DINT(LeiJiL/100000000.0)<=(LeiJiL/100000000.0) THENLeiJiHH:= LeiJiHH + REAL_TO_DINT(LeiJiL / 100000000.0);LeiJiL:= LeiJiL- REAL_TO_DINT(LeiJiL / 100000000.0)*100000000.0;ELSELeiJiHH:= LeiJiHH + REAL_TO_DINT(LeiJiL / 100000000.0)-1;LeiJiL:= LeiJiL - (REAL_TO_DINT(LeiJiL / 100000000.0)-1.0)*100000000.0; END_IF;END_IF;IF LeiJiH >= 100000000.0 THENLeiJiHH:= LeiJiHH+(LeiJiH DIV 100000000);LeiJiH:= LeiJiH-(LeiJiH DIV 100000000)*100000000;END_IF;IF LeiJiL < 0.0 THENLeiJiL:=0.0;END_IF;IF LeiJiH < 0 THENLeiJiH:=0;END_IF;IF LeiJiHH < 0 THENLeiJiHH:=0;END_IF;LeiJiZhi:=REAL_TO_DINT(LeiJiHH*100000000.0+LeiJiH+LeiJiL);IF QingLing = true THENQingLing := false ;LeiJiHH:= 0 ;LeiJiH:= 0 ;LeiJiL:= 0.0 ;END_IF;END_FUNCTION_BLOCK―――――――――――――――――――――――――――――――――粗粗看了下,程序先进行量程转换,得出瞬时流量,然后进行累加。

相关文档
最新文档