课程中心
HOME
课程中心
正文内容
plc编程求梯形面积 问题:编写一个计算梯形面积的程序。要求梯形的上底,下底和高在
发布时间 : 2024-10-11
作者 : 小编
访问数量 : 23
扫码分享至微信

问题:编写一个计算梯形面积的程序。要求梯形的上底、下底和高在

问题:编写一个计算梯形面积的程序。要求梯形的上底、下底和高在定义变量时直接赋值。

参考答案如图所示

实用经验之谈: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做加法操作)。其实具备计算机常识的人都应当清楚这一点,这是由于浮点数的存储机制造成的,这个问题可以通过使用二级累加或多级别累加的方法来解决,比如每一级累加器只能进行规定级别大小的数据累加,当一级累加器的累积数据大到一定程度时,立刻把数据传送到二级累加器,然后把一级累加器清零。

版权提示:本文为中华工控网(工控论坛)原创,作者 陆宁,转载请与我们联系,否则必将追究法律责任。

相关问答

C语言C++题目:求梯形面积怎么写程序?求答案-懂得

doublearea(doublea,doubleb,doubleh){return0.5*(a+b)*h;//二分之一上底加下底的和乘以高}intmain(void){doublea,b,#inc...

根据平行四边形的面积公式,怎样求梯形的面积_作业帮

[最佳回答]平行四边形面积=底×高梯形比平形四边形有一边长一点,是一个平行四边形+一个三角形三角形的面积=1/2×(三角形的底)×高三角形的底=梯形长边-梯形短...

编写一个程序输入梯形得上底下底和高的值计算并输出其面积?

dima!,b!,h!,s!a=val(Inputbox("输入上底a:"))b=val(Inputbox("输入下底b:"))h=val(Inputbo...

请写出梯形面积公式的推导过程_作业帮

[最佳回答](上底+下底)×高÷2两个完全一样的梯形可以拼成一个平行四边形,而平行四边形的高是梯形的高,平行四边形的底是梯形的上底加下底.平行四边形的面积是...

梯形的面积怎么算-懂得

面积①梯形的面积公式:(上底+下底)×高÷2,②梯形的面积公式:中位线×高,用字母表示:L·h。③对角线互相垂直的梯形面积为:对角线×对角线÷2。周长...

梯形面积公式是什么

[回答]梯形的面积公式:(上底+下底)×高÷2,用字母表示:S=(a+c)×h÷2。变形:h=2S÷(a+c);变形2:a=2s÷h-c;变形3:c=2s÷h-a。公式中a,c分别为梯形上下底,h...

王奶奶在墙的一侧用篱笆围成了一个鸡舍篱笆长65米高是13米求梯形面积是多少?

梯形面积=(上底+下底)*高/2,你给的条件不足,没法计算。梯形面积=(上底+下底)*高/2,你给的条件不足,没法计算。

【梯形面积公式怎么的应用及公式】作业帮

[最佳回答](上底+下底)乘以高/2=面积应用:一般是和水坝结合起来考,望采纳

【梯形的面积=——的面积+——的面积=上底×高/2+下底×高/2...

[最佳回答]梯形的面积=上底加下底的和乘高除以2

梯形的面积怎么算(公式-)_作业帮

[最佳回答]梯形面积有两种算法(1)梯形的面积公式:(上底+下底)×高÷2.用字母表示:(a+b)×h÷2(2)梯形的面积公式2:中位线×高用字母表示:l·h...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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