2024油田管道集群化泄漏监测建模标准_第1页
2024油田管道集群化泄漏监测建模标准_第2页
2024油田管道集群化泄漏监测建模标准_第3页
2024油田管道集群化泄漏监测建模标准_第4页
2024油田管道集群化泄漏监测建模标准_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1000m/s)。通过在管道两端安装压力变送器,可以点的定位(由于时间精度无法保证本次不考虑定位)X式中:cΔtt1t2L,m21s,(t),i=0,1,2,…,20。将前一段数据的最大值与后一段数据的最小值相减得到di=ai-bi+1i=0,1,2,…,19。3min,k=11k=9≤k≤11mi<k>mi>kdefGet_list(list_1):list_maxmax(list_1)#计算数列中的最大值list_min=min(list_1)#计算数列中的最小值Norztion=[]Norztion_1=[]foriteminNorztion.append((float(item)-float(list_min))/(float(list_max)-float(list_min#对各Nr_max=max(Norztion)Nr_min=min(Norztion)foriteminNorztion:returndefGet_Alarm(re_list):n=0Pa_max#各分组压力最大值集合Pa_min#各分组压力最小值集合Pa_avg=[]#各分组平均值集合alarm=Falsewhilen<len(re_list):330210211033021fen_listre_list[n:n+910(11)Pa=[]forrowinPa.append(row)Pa.append(row)#始站压力是fen_list的第一个数值Pa_max.append(max(Pa#该组数据的最大值,将计算结果组建最大值数列Pa_min.append(min(Pa))#该组数据的最小值,将计算结果组建最小值数列m=0Pa_cha=[]cha=[]whilem<len(Pa_max)-1:#如果管道发生泄漏,压力会持续下降,Pa_chaifPa_cha==[]:d_max=K=k9~11ifK==9orK==10orK==11:KKK小值比K之后的均值最大值要大ifmin(Pa_avg[0:K-1])>max(Pa_avg[K+1:len(Pa_avg)]):alarm=Truecha=Pa_chareturn 0.6m³/h)。F=FFΔF>FF00前-FΔt(接近于直线k=ΔF/Δt。计算当前时间点的末站拟合排量,FFK*(tt330defGet_K_PL(ListTimePL,PY_Time):k=an=len_n=list_a=mzpl_1=mzpl_2=S_PL_an=SPL_a=list_len=K_PL_List=pd.DataFrame(columns=('Sn','K','S_PL_an'))whilean<list_len:E_PL=ListTimePL.iloc[an,3]S_PL=ListTimePL.iloc[an,2]Sn=ListTimePL.iloc[an,1]ifan==list_len-Sn1=ListTimePL.iloc[an,1]Sn1=Time_len=Sn1-Snifan==0:k=(E_PL-S_PL)/PY_TimeSPL_a=S_PLifTime_len<S_PL_an=S_PL+k*Time_lenS_PL_an=E_PLelifan==list_len-1:k=(E_PL-S_PL_an)/PY_TimeSPL_a=S_PL_anS_PL_an=E_PLk=(E_PL-S_PL_an)/PY_TimeSPL_a=S_PL_anifTime_len<S_PL_an=S_PL_an+k*Time_lenS_PL_an=K_PL_List=K_PL_List.append(pd.DataFrame({'Sn':[Sn],'K':[k],'S_PL_an':[SPL_a]}))an=an+1return0,为没调泵#调泵的时间点序列list_timelist_a-90list_a-30list_a+30→list_a+90defGet_K(ListTimePL,a_time,PY_Time):k=an=len_n=list_a=mzpl_1=mzpl_2=list_len=ListTimePL.shape[0]whilean<list_len:ifa_time-float(ListTimePL.loc[[an],'Time'])>0:len_n=a_time-list_timelist_a=list_time[an]iflen_n>PY_Time:k=0sn=whilesn<mzpl_1=mzpl_1+float(pdata.loc[[list_a-90+sn],'SZPL'])mzpl_2=mzpl_2+mzpl_1=mzpl_1/60mzpl_2=mzpl_2/k=(mzpl_2-mzpl_1)/PY_Timeaaa=str(mzpl_1)+str(k)return#*******************1330**************************Alarm_List=pd.DataFrame(columns=('idx','SZLJPL','MZLJPL','SCLJ'))new_bj=0npl_cou=new_SZPL_List.shape[0]whilenew_a<(npl_cou-210)/60:new_SZPL_count=0new_MZPL_count=new_ShuCha=0whilenew_b<210:ifnew_SZPL_List.iloc[new_c,1]<0.2:ifnew_c==0:new_SZPL_count=new_SZPL_count+new_SZPL_List.iloc[new_c-1,1]new_SZPL_count=new_SZPL_count+new_SZPL_List.iloc[new_c,1]ifnew_SZPL_List.iloc[new_c,2]<0.2:ifnew_c==0:new_MZPL_count=new_MZPL_count+new_SZPL_List.iloc[new_c-1,2]new_MZPL_count=new_MZPL_count+new_SZPL_List.iloc[new_c,2]new_ShuCha=(new_MZPL_count-new_SZPL_count)/3.5new_MZPL_count1=new_MZPL_count/3.5Alarm_List=Alarm_List.append(pd.DataFrame({'idx':[new_a],'SZLJPL':[new_SZPL_count1],'ifnew_ShuCha<YuZhi:new_bjnew_bj=new_bj+1new_bj=0ifnew_bj>2:defGet_Change(re_list,s,P):p=[]return_x=[]forrowinifP0:elifP1:elifP==2#末站压力elifP==3:#末站排量whilen<len(p):ifn>0:returndefdefGet_Alarm_minmaxa(Ft_value,St_value,style1,st):ifFt_value==[]:Ft_valuemax2=Ft_value[0]-St_value[0]min2=Ft_value[1]-St_value[1]avg=Ft_value[2]-if(max2>0andmin2>0andavg>0):#print(st)#ifstyle1== #else: return'下降'elif(max2<0andmin2<0andavg<0):#print(st)#ifstyle1== #else: return'上升'#print('其他情况')return'其他'ps1_list=[]pe1_list=fs1_list=fe1_list=[]ps2_listfe1_list=[]ps2_list=[]pe2_list=[]fs2_list=[]fe2_list=whilestart_time<end_time:pe1_list=pe2_listnext_time=time_operation(start_time,179).strftime('%Y-%m-%d%H:%M:%S')start_time1=start_time.strftime('%Y-%m-%d%H:%M:%S')re_list=list(searchF(start_time1,next_time))p1=[]p2=f1=f2=n=forrowinre_list:ps2_list=Get_minmaxavg(p1)#始站的压力最大值/最小值/平均值pe2_list=Get_minmaxavg(p2)#末站的压力最大值/最小值/平均值 PAlarmGet_Alarm_minmaxa(ps1_list,ps2_list,1,start_time)#Ps1_list情况,Ps2_list为当前时间点取得的压力情况FAlarmGet_Alarm_minmaxa(fs1_list,fs2_list,2,start_time)if(PAlarm=='下降'andFAlarm=='上升'):start_time=time_operation(start_time,vd为管道内径RecrRe<Recr,Re>Recr,为紊流。 q=(πd4/128μl)Δp v=(d2/32μl)Δp沿程压力损 Δpλλ为沿程阻力系数,实际计算时对金属管取λ=75/Re管壁的绝对粗糙度,Δ/d$(function$(function()vardom=//varvarmyChart=echarts.init(dom);varapp={};option=null;vardata=[];varCoords=[];vard0.082varF(<%:ViewBag.F0%>+<%:ViewBag.F1%>2//每小时排量,实际应用中为(F始+F末)/2varρ(<%:ViewBag.md%>)*1000//原油密度varg=9.8;//重力加速度varυ:ViewBag.ydndxs%>varmina=varvarmaxa=-//varvarλ0varpipedate=newDate("<%:ViewBag.year%>");varnowdate=newDate().getTime();vara=(nowdate-pipedate)/86400000;//管道运行年限varΔ=0.02+a*0.03;//管道粗糙度data.push(["Length","pressure","elevation"]);Coords.push(["longitude","latitude"]);type:"GET",dataType:"json",url:"../PipeLineData/<%:ViewBag.pipeLineData%>.json",success:function(result){varx=vary=varz=varΔζ=varL=varH=varjd=varwd=varRe=F/(900*d*υ*if(Re<2000){λ=75/}elseλ=Math.pow((1/(1.14-2*Math.log(Δ/d+21.25(Math.pow(Re,0.9))))),varPL=λ*L*F*F/(2*g*d*d*(900*Math.PI*d)*(900Math.PI*varvarPζ=Δζ*F*F/(2*g*(900*Ma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论