储油罐的变位识别与罐容表标定
作者:互联网
摘要
加油站中的对储油罐中油的容量的确定是一个非常重要的事情,只有知道储油罐中的油的多少才能知道何时需要对储油罐进行加油,以及了解埋在地底下的储油罐是否由于地基变形,罐面被腐蚀等原因而发生漏油等情况。因此,很有必要建立一个关于储油罐的变位识别与罐容表标定的数学模型。
通过对该题目中的各种情况的具体分析,我们建立了储油罐的变位识别与罐容表标定的数学模型,通过这个模型解决了该题目中的所有问题。并通过题目中所给的数据,利用最小二乘法验证所建立的模型的正确性。
我们在这两个问题中主要利用了分割,积分求和的思想,以及相应的数学运算建立所需要的数学模型。首先将油罐用定积分的思想进行分割,再用微积分的思想进行求和,经过一定地数学积分运算,得到了油位高度和油罐储油量的关系式,建立了数学模型。模型建立后,再利用附表的数据结合matlab软件进行拟合分析,用Java编程运算出油罐容表,用高斯迭代算法推算出偏转角度。
关键词:罐容表 罐体变位 微分模型 最小二乘法
一、问题提出与重述
通常加油站都有若干个储存燃油的地下储油罐,并且一般都有与之配套的“油位计量管理系统”,采用流量计和油位计来测量进/出油量与罐内油位高度等数据,通过预先标定的罐容表(即罐内油位高度与储油量的对应关系)进行实时计算,以得到罐内油位高度和储油量的变化情况。许多储油罐在使用一段时间后,由于地基变形等原因,使罐体的位置会发生纵向倾斜和横向偏转等变化(以下称为变位),从而导致罐容表发生改变。按照有关规定,需要定期对罐容表进行重新标定。
为了研究解决储油罐的变位识别与罐容表标定的问题,我们需要完成以下问题:
1、为了掌握罐体变位后对罐容表的影响,先利用一个小椭圆型储油罐(两端平头的椭圆柱体),分别对罐体无变位和倾斜角为a=4.1°的纵向变位两种情况做了实验,然后建立数学模型来研究罐体变位后对罐容表的影响,求出罐体变位后油位高度间隔为1cm的罐容表标定值。
2、在第一题实验的基础上,要对实际储油罐进行研究,建立罐体变位后标定罐容表的数学模型,即罐内储油量与油位高度及变位参数(纵向倾斜角度a和横向偏转角度b)之间的一般关系。然后利用罐体变位后在进/出油过程中的实际检测数据,确定该模型的变位参数,并求出罐体变位后油位高度间隔为10cm的罐容表标定值。进一步利用那些实际检测数据来分析检验该模型的正确性与方法的可靠性。
二、问题假设
1、假设在地底下的储油罐以及储油罐中的油不会受温度的影响而产生热胀冷缩;
2、假设储油罐使用一定时间后,地基变形等原因不会使储油罐的表面变形;
3、忽略第一问中所提供的数据的测量误差。
三、问题分析与模型建立
问题一:
1.问题分析
2.符号说明
3.模型建立与问题解答
计算油罐的体积,如下图部分
为了研究所建立模型的可靠性,我们利用MATLAB绘画出有变位时题目自带的附件1和我们模型算出的灌油表作对比。
观察图,我们发现两曲线并不是完全吻合,那是因为汽油易挥发性等原因,但两曲线是基本吻合的。所有我们可以推断我们建立的模型是可靠的。
为研究罐体变位后对罐容表的影响,我们还是利用MATLAB绘画出罐体没变位,有变位时灌油表。
观察图,我们发现两曲线并不吻合。当H=0时,无变位的罐体油量值为0,而有变位的油量值就可能不为0了;当H接近1.1时,无变位的油量值明显大于有变位的;无变位曲线变化率稳定,而有变位曲线变化率不稳定(在H较小时,变化率大;H较大时,变化率小)。所以罐体变位后对罐容表有一定影响。
问题二:
1.问题分析
对于问题(2),我们要解决的是实际储油罐的问题。解决因地形变化等原因,使罐体的位置会发生纵向倾斜和横向偏转等变化,从而导致罐容表发生改变的问题,是可以解决。解决问题,要从下面两个方面入手:
a)找到储油罐的说明书,在说明里弄清楚储油罐的结构规格,包括储油罐的高、长、半径等数据。
b)取到近段时间记录储油罐的油位高及对应的油量的进/出值。
有了这两方面的资料数据,我们就可以完成解决问题了。首先,根据储油罐的结构规格,建立模型,列出罐内储油量与油位高度及变位参数(纵向倾斜角度a和横向偏转角度b )之间的一般关系。然后利用油罐体近段时间的记录值,根据我们所建立的数学模型确定变位参数,从而确定罐内油位高度与储油量的对应关系。这样,我们就能修改预先标定的罐容表。
2.符号说明
3.模型建立与问题解答
为了计算简单,先计算如下图所示灰色部分的体积
分两部分:
接下利用Java编程(代码见附录3),算出油面高度从0-3m的每间隔为10cm的罐容表标定值,表格见附录4。
为了研究所建立模型的正确性与方法的可靠性,我们利用MATLAB绘画出题目自带的附件2和我们模型算出的灌油表作对比。
观察图,我们发现两曲线不重合,那是因为汽油易挥发性等原因,但两曲线是基本吻合的。所有我们可以推断我们建立的模型是正确的、方法是可靠的。
四、参考文献
[1] 同济大学应用数学系,高等数学第五版,高等教育出版社,2002年
[2] 周开利,MATLAB基础及应用教程,北京:北京大学出版社,2007年
[3] 吉奥丹诺,数学建模(原书第3版),北京:机械工业出版社,2006年
五、附录
附录1:
public class Shu {
public static void main(String args[]) {
getV();
}
public static void getV() {//根据油的高度H计算变位后油罐内油的体积
double a = 0.89;
double b = 0.6;
double tQ = 0.07168;
double v = 0, l1 = 0, l2 = 0, H = 0;
double lo = (H+0.02867)/tQ;
System.out.println("体积\t\t\t\t高度");
for(; H <= 1.21;) {
if(H <= 0.14695) {
l1 = lo;
}else if(H <= 1.17133) {
l1 = 2.45;
}
if(H > 0 && H <= 1.17133) {
v = a/b*((1.0/3/tQ)*Math.pow((b*b-Math.pow((lo*tQ-l1*tQ-b),2)),1.5)+b*b*(l1*Math.asin((lo*tQ
-l1*tQ-b)/b)-1.0/tQ*Math.pow(b*b-Math.pow((lo*tQ-l1*tQ-b),2),0.5)+(lo*tQ-b)/tQ
*Math.asin(l1*tQ/b))+0.5*Math.PI*b*b*l1)-a/b*((1.0/3/tQ)*Math.pow((b*b-Math.pow((lo
*tQ-l2*tQ-b),2)),1.5)+b*b*(l2*Math.asin((lo*tQ-l2*tQ-b)/b)-1.0/tQ*Math.pow(b*b
-Math.pow((lo*tQ-l2*tQ-b),2),0.5)+(lo*tQ-b)/tQ*Math.asin(l2*tQ/b))+0.5*Math.PI*b*b*l2);
}else if(H > 1.1713 && H <= 1.2) {
lo = (2.05*tQ-H+1.2)/tQ;
l1 = lo;
v = a*b*Math.PI*2.45-(a/b*((1.0/3/tQ)*Math.pow((b*b-Math.pow((lo*tQ-l1*tQ-b),2)),1.5)+b*b*(l1*
Math.asin((lo*tQ-l1*tQ-b)/b)-1.0/tQ*Math.pow(b*b-Math.pow((lo*tQ-l1*tQ-b),2),0.5)+(lo*
tQ-b)/tQ*Math.asin(l1*tQ/b))+0.5*Math.PI*b*b*l1)-a/b*((1.0/3/tQ)*Math.pow((b*b-Math.pow
((lo*tQ-l2*tQ-b),2)),1.5)+b*b*(l2*Math.asin((lo*tQ-l2*tQ-b)/b)-1.0/tQ*Math.pow(b*b-
Math.pow((lo*tQ-l2*tQ-b),2),0.5)+(lo*tQ-b)/tQ*Math.asin(l2*tQ/b))+0.5*Math.PI*b*b*l2));
}
System.out.println(v+"\t\t\t"+H);
H += 0.01;
lo = (H+0.02867)/tQ;
}
}
}
附录2:
高度(m) | 液体体积 | 高度(m) | 液体体积 |
0.01 | 0.243381352 | 0.61 | 2.191677777 |
0.02 | 0.338459734 | 0.62 | 2.234977414 |
0.03 | 0.413281526 | 0.63 | 2.278093027 |
0.04 | 0.473061843 | 0.64 | 2.320991899 |
0.05 | 0.521227675 | 0.65 | 2.363640659 |
0.06 | 0.560187359 | 0.66 | 2.406005159 |
0.07 | 0.591718603 | 0.67 | 2.448050356 |
0.08 | 0.617183916 | 0.68 | 2.489740179 |
0.09 | 0.637659135 | 0.69 | 2.531037383 |
0.1 | 0.654014522 | 0.7 | 2.571903392 |
附录3:
public static void getV2(double r,double h,double ta,double lo,double l,double R) {
double v1 = 0;
double v2 = 0;
v1 = -1/3*Math.pow(2*R*(lo-l)*ta-(lo-l)*(lo-l)*ta*ta,1.5)+R*R*(lo*ta-l*ta-R)*Math.asin((
lo*ta-l*ta-R)/R+R*R*Math.sqrt(2*R*(lo-l)*ta-(lo-l)*(lo-l)*ta*ta));
v2 = 0.5*Math.PI*r*r-Math.PI*h*h*h/6+2*h*Math.sqrt(2*r-h*h-1)/3-2*h*r*Math.sqrt(2*r-h*h-1)/3
-(1-3*r+2*r*r*r)*Math.atan(h/Math.sqrt(2*r-h*h-1))-(h*h*h-3*r*r*h)*Math.atan((r-1)/
Math.sqrt(2*r-h*h-1))+2*r*r*r/3*Math.atan(h*(r-1)/r/Math.sqrt(2*r-h*h-1));
}
附录4:
显示油高/mm | 显示油量容积/L | 显示油高/mm | 显示油量容积/L |
0.00 | 286.60 | 1510.00 | 32476.03 |
10.00 | 410.22 | 1520.00 | 32686.48 |
20.00 | 533.84 | 1530.00 | 32896.93 |
30.00 | 657.46 | 1540.00 | 33107.38 |
40.00 | 781.08 | 1550.00 | 33317.83 |
50.00 | 904.70 | 1560.00 | 33528.28 |
60.00 | 1028.32 | 1570.00 | 33738.73 |
70.00 | 1151.94 | 1580.00 | 33949.18 |
80.00 | 1275.56 | 1590.00 | 34159.63 |
标签:罐容表,罐体,double,变位,储油罐,Math 来源: https://blog.csdn.net/ykko2009/article/details/121335772