徐敬波,李天峰,張錫年
(中國石油西北銷售公司,甘肅 蘭州 730070)
成品油庫的高效安全生產是保障區域成品油產銷穩定的重要因素。運用先進的信息化技術、自動化技術、網絡化以及數據處理技術,構建高效、實時的油庫生產監控系統,是降低安全生產風險、提升生產效率效益的必然舉措。目前,我國煉化、礦山、制造、化工等行業主要利用生產制造執行系統(manufacturing execution system,MES)[1-2]對生產過程進行實時監控和預警。MES受規模、功能和部署要求等限制,難以完全滿足異地分布的多座油庫遠程實時監控的應用要求。同時,現有生產監控系統中海量的實時傳感、測量、控制數據的讀寫、集成、處理和存儲[3],主要依托實時數據庫技術,存在采購和運維成本高、并發處理能力相對低、擴展和維護難度大、綜合檢索和分析能力差等不足,限制了后續對生產、設備、作業等數據的進一步分析、挖掘和利用的潛力。
為提升對油庫等生產過程的遠程實時監控和預警能力,以及對實時數據的處理和分析能力,結合Storm大數據流處理、Kafka高速消息隊列、Flume數據采集技術[4-6],設計并實現了基于實時數據處理、可擴展的油庫生產遠程監控系統。該系統能對油庫實時生產狀態進行同步監控和預警,為廣域分布的油庫在線監測提供了一種新思路。
成品油庫是收發和儲存汽油、柴油和乙醇等輕質油品的倉庫或設施,按生產功能分為油區、工藝控制區、收發油區、行政管理及輔助生產區等單元。
油庫自動化系統主要由儲運、消防自動化、安防自動化、環保自動化四類系統及其他輔助監控系統構成。各系統之間互相關聯,形成油庫的整體自動化系統。為確保對成品油庫安全生產運行的全面監控,需要監控的儲運、消防、安防及環保主要參數如下。
①儲油區作業:對防火堤以內的儲罐、管線、工藝閥等設備進行監控。采集和監控的參數包括儲罐液位、溫度、體積、空容、油品質量、進出管流速、管線壓力、浮盤升降、閥門開度、存儲周期、化驗時間等。
②工藝控制區作業:對工藝泵房/棚中電機、泵、電動閥等設備進行監控。采集和監控的參數包括機泵進出口壓力、機泵啟停、機泵運行時長、機泵故障、機泵振動等。
③收發油區作業:對收發油作業中鐵路棧橋、公路發油島、碼頭等設施的鶴管、裝/卸油泵、閥門、計量設備、車輛、船舶、靜電/溢油/道閘/接地傳感等設備進行監控。采集和監控的參數包括油品、車牌、收發油流量/流速、機泵啟停、機泵運行時長、壓力、靜電連接、溢油、接地等。
④消防/安防區作業:對分布在油庫各區域可燃氣體探測、手動報警、周界報警、光纖光柵測溫、火焰探測等設備,以及消防池液位、消防泵啟停、消防閥門開啟、消防管線壓力等參數進行采集和監控。視頻監控系統對油庫主要生產作業區域進行全覆蓋。
⑤環保設備區作業:對油氣回收、污水處理裝置的相關參數進行采集和監控。
⑥行政管理及輔助生產區作業:對變配電能耗、溫度等參數進行采集和監控。
針對油庫遠程實時監控的要求,設計的安全生產遠程監控系統功能架構分為基礎層、傳輸層、平臺層和生產管理應用層四部分。系統具有數據采集、數據實時和批處理、油庫綜合監控的特點[7]。遠程監控系統功能架構如圖1所示。

圖1 遠程監控系統功能架構圖
①基礎層。
基礎層是安全生產遠程監控系統的物理最底層。監控系統基礎層通過包含OPC、Modbus等協議集的混合標準接口,對油庫各自動化系統關鍵監控參數進行自動采集,實現對油庫安全生產過程中多源、多類型數據的可靠獲取。
②傳輸層。
傳輸層采用現場的無線、有線相結合的組網方式,為基礎層采集的數據提供安全、可靠的網絡傳輸系統。在廣域網傳輸中,為確保工控網絡及設備的信息安全,采用數據照相傳送技術的數采安全隔離設備實現企業網與工控網信息的單向隔離[8]。
③平臺層。
平臺層主要在區域監控中心部署分布式大數據處理系統集群,包含實時處理集群(Flume+Kafka+Storm+MySQL)和歷史數據處理集群(Hadoop+Hive)。
實時數據處理流程如圖2所示。

圖2 實時數據處理流程圖
由圖2可知:Flume agent接收基礎層采集的數據和其他來源數據;Kafka集群持久化存儲采集的數據;Storm流處理集群對數據進行實時處理;處理過程的中間數據、最終數據、元數據等由MySQL數據庫存儲。處理集群系統通過面向服務架構(service-oriented architecture,SOA)套件對外提供Web Service服務。Web Service服務與其他生產管理系統進行交互,作為支持生產管理應用層的數據、應用服務器和Web服務器,支持二次開發,具備和其他系統的融合能力。
④生產管理應用層。
生產管理應用層基于SOA架構,實現對油庫生產狀態遠程實時監控的服務化;按照油庫監控管理的要求,提供實時監控、專項管理、統計分析和綜合展示四大服務[9],實現油庫生產狀態監控的服務化。遠程監控系統數據處理結構如圖3所示。

圖3 遠程監控系統數據處理結構圖
油庫安全生產遠程集中監控平臺系統的主要功能設計如下:建立了統一、實時的生產運行數據倉庫,實現了綜合展示、運行監控、儲罐監控、收發油監控、消防/安防監控、設備監控、計質量監控、報警管理、數據分析和統計等功能。
為便于支持多種應用服務的遠程使用和訂閱,油庫生產遠程監控系統的設計采用了基于服務的軟件架構設計模式。監控平臺系統軟件架構如圖4所示。每個服務實現一個不同的應用特性或者功能,且相互獨立運行在系統進程中。每個服務可通過基于簡單對象訪問協議(simple object access protocol,SOAP)Web service API對外提供服務資源調用,確保系統靈活滿足整體應用的需求,能夠適用于構建基于云服務的分布式應用系統。

圖4 監控平臺系統軟件架構圖
在監控系統基礎層,根據各地區油庫自動化系統實際情況,利用混合協議軟件接口,實現對庫級自動化系統的實時數據自動采集和數據格式轉換。油庫數據采集接口如圖5所示。

圖5 油庫數據采集接口示意圖
對已具備PKS、WinCC、iFiX等數據采集與監視控制系統(supervisory control and data acquisition,SCADA)軟件的自動化系統,采用用于過程控制的對象鏈接與嵌入工業標準(object linking and embedding for process control,OPC)2.0標準軟件接口進行數據采集,以實現異構環境中自動化控制網絡數據的統一集成[10]。對部分不具備SCADA系統的油庫,則從PLC、智能儀表等自動化設備直接采集實時數據。數據采集協議則采用標準或統一擴展的Modbus協議。
為保證各油庫實時過程數據的采集時間標簽同步,使用網絡時間協議(network time protocol,NTP)服務,利用同一GPS時鐘,將監控系統實時數據庫服務器作為時間源,其他服務器、緩存機配置與該服務器同步,保證平臺系統時間同步。
高中生,因為文理分科,往往在高二時就會進行分班。在這個時候,我們通常會通過其他班主任了解高一時學生擔任班干部的情況,然后初步確定班干部人選。
為確保多個油庫基礎層感知、測量的大量現場生產數據,能通過安全、可靠、高效的方式實時上傳至系統平臺層,對生產管理應用層提供數據支持。本文采用Flume和kafka組合,對以現場位號、時間戳為標簽的實時數據進行采集、存儲和處理。
Flume是一個分布式、可靠、高可用的海量日志采集、聚合和傳輸的收集系統,具備從console、rpc、text、tail、syslog、exec等數據源高速收集數據的能力,同時能夠解決不同數據源接入的差異性問題。Flume采集數據基本單位Event,運行核心是Agent,含有Source、Channel、Sink三個核心組件,分別實現從外部數據源采集數據、簡單處理和中間存儲數據、將數據寫入接收方的功能。
針對監控系統基礎層采集的實時數據,首先通過設置OPC接口 Client中Group Item的名字、激活狀態、服務器向客戶程序提交數據變化的刷新速率、數據死區以及數據寫入的TXT文件等參數,實現油庫系統設備實時數據向Flume agent服務器的實時傳遞。為保證各油庫設備位號產生的實時數據與后續數據處理隊列相對應,在各油庫設備位號與Flume agent、Kafka Topic消息隊列之間建立實時映射關系。
各Flume agent實時監聽TXT文件中的新增數據后,對新增數據進行實時采集并匯集到總Flume agent中。總Flume agent對不同的來源數據,按照公司、油庫、自動化系統、監測點(位號)、監測點類型(開關量、模擬量)、儀表類型(開關、溫度、壓力、流量、液位等)、監測點采樣時間、監測值,整體處理成統一的數據格式,具體如下所示。
{公司4位字節;油庫8位字節;自動化系統(裝置)8位字節;監測點(位號)12位字節;監測點類型2位字節;儀表類型8個字節;監測點采樣時間8個字節;監測值16位字節;}
Flume采集的實時數據需要實時寫入Kafka,實現對大量、高速數據的實時發布和訂閱,以及數據的存儲,以確保后續的實時數據處理的實施、減少可能的數據丟失風險。
Kafka是一種高吞吐量的分布式發布訂閱消息系統,主要用于處理活躍的流式數據。Kafka通過0(1)的磁盤數據結構提供消息的持久化,保持對于TB級別的消息存儲的長時間穩定性能,同時具備較強橫向擴展、并行處理能力。Kafka消息傳輸吞吐量高,一般超過105~106條/s。
Kafka中的消息(record記錄,也被稱為消息)由一個key、一個value和時間戳構成。消息發送者稱為生產者(producer);消息接收者稱為消費者(consumer);消息類別記錄稱為topic,每一類的消息稱之為一個主題(topic)。為實現Flume與Kafka的整合,接收Flume傳輸的各油庫系統設備的實時數據,在Kafka Cluster中創建與各油庫系統設備位號相對應的Topic。然后,Flume將其采集到的數據分別發送到相對應的topic上進行發布,為后續系統對各設備位號狀態信息的實時處理以及特定時段特定設備的復雜處理奠定了良好的基礎。
實時數據處理是遠程監控系統平臺層的核心模塊,從各地區油庫現場采集的工業實時數據經實時處理后,實現作業操作分析、故障識別與診斷、監控預警報警、實時決策支持、即時消息推送等功能,提升整體管理效率。本文針對油庫生產管理安全預警的實時性要求,選擇Storm流處理框架作為實時數據處理的平臺模塊。
Storm是一個免費開源、分布式、高容錯的實時計算系統,支持集群化部署,在實時分析、在線機器學習、持續計算、分布式遠程調用等領域具有廣泛的應用。在Storm應用中,Storm提交面向需求的運行程序稱為Topology,由Spout和Bolt構成,兩者通過消息Tuple機制進行數據傳遞。Spout是發出Tuple的節點,Bolt則負責數據流(Streams可以包含多個Tuple)接收、轉換、計算、過濾和發出其他Tuple等操作,Bolt可以隨意訂閱某個Spout或者Bolt發出的Tuple。Topology處理的最小消息單位是一個Tuple,可以是一個任意對象的數組。在實際集群運行中,Topology由集群中的主控節點(Nimbus)將任務分配給工作節點(Supervisor),工作節點管理多個工作進程(Worker),工作進程包含多個運算任務(Task),每個Spout和Bolt都由若干個運算任務來具體執行。
Storm對實時數據流處理的關鍵是Kafka與Storm的整合,由Storm中Spout實時獲取Kafka發布的topic消息數據,即利用Storm-Kafka的整合庫中Storm-Kafka API提供的KafkaSpout對象實現Spout對kafka中實時數據的獲取,完成Kafka與Storm之間數據的傳遞和流處理。
本系統利用Storm,實現了油庫儲運、消防、安防等工藝參數的實時監控,油庫儲罐液位、溫度、壓力、流速、靜電、溢油、可燃氣體、火焰探測等參數的實時超閾值報警以及儲罐液位異常、管線流速異常、設備狀態異常等規則的實時判斷預警,以及報警預警的實時推送等功能。
油庫數據采集、處理過程中的非實時數據存儲和查詢采用MySQL數據庫,包括類型、配置、元數據、處理的中間數據等。實時數據、非實時數據最后導入歷史數據庫集群,實現整體監控數據的歸檔存儲和離線的大數據挖掘。
基于上述研究內容,對油庫遠程監控系統進行設計和試點。該系統試點部署于蘭州,對分布在甘肅、四川、陜西、湖北等多座大型油庫的儲運生產、消防安防、設備等過程數據進行了實時采集、監控和預警。系統實現的具體功能描述如下。
①運行監控。該監控用于實現對油庫儲運工藝中電動閥、儲罐液位、泵、儲罐液位、動轉管線的圖形化實時監控;實現對油氣回收、污水處理等成套輔助裝置的工藝參數、設備異常、運行記錄等進行圖形化實時監控和異常報警推送。
②儲罐監控。該監控用于實現對油庫分罐液位、溫度、體積、質量、空容、油品質量、進出罐流速、進出油狀態、存儲時長等進行圖形化實時數據監控和記錄自動存儲,對液位超限、溫度超限、進出罐流速超限進行遠程實時報警推送。
③公路、鐵路收發油監控。該監控用于實現對鐵路棧橋、公路發油島等收發油作業中的收發油種類、分倉、油品體積/質量、溫度、車輛車牌、靜電/溢油/道閘/接地傳感等數據進行圖形化的實時監控和記錄存儲,并對靜電/溢油/道閘/接地等參數異常進行遠程實時報警推送。
④消防安防監控。該監控用于對分布在油庫各區域可燃氣體探測、手動報警、周界報警、光纖光柵測溫、火焰探測等設備以及消防池液位、消防泵啟停、消防閥門開啟、消防管線壓力等參數進行實時監控、記錄和報警。
⑤設備監控。該監控用于對油庫機泵的啟停、電動閥的啟停、機泵運行時長、管線壓力、數據采集設備、網絡設備等進行實時監控和異常報警。
⑥計質量監控。該監控用于對進出庫油品數量與儲罐進出罐油品數量進行實時監控和比對,對誤差超限進行報警推送。
⑦報警管理。該監控用于跟蹤實時報警推送的油庫異常情況的后續處理、審核、確認流程,報警記錄的查詢和統計,實現報警流程的閉環管理。
⑧數據管理。該監控用于實時采集和匯總各油庫生產實時數據,構建統一、實時的生產運行數據平臺,實現生產運行數據的標準化管理,為其他生產應用提供完備和標準的基礎數據源。
油庫生產遠程監控系統試點的硬件環境為:浪潮x86架構計算機服務器節點6個(1個管理節點、3個流處理節點、2個歷史數據處理節點),CPU為2路8核處理器,ECC DDR4內存128 GB,硬盤為32 TB,核心交換機配備多模光纖光接口板,油庫數采工作站4臺。
為保證系統的實際應用效果,使用自動化軟件測試工具UFT、性能測試工具Loadrunner以及測試管理工具ALM,對試點的監控系統進行了功能、性能和應用的全面測試。
功能測試全面覆蓋系統模塊,包括運行監控、儲罐監控、收發油監控、消防/安防監控、設備監控、計質量監控、報警管理和綜合展示,測試功能點174個,執行2385個測試用例。測試結果顯示,系統實現了油庫生產監控、報警、報警處理和統計分析等功能,能夠滿足油庫遠程監控的功能要求。
性能測試內容主要包括運行監控、儲罐監控、收發油監控、設備監控、消防/安防監控等功能點的并發能力和實時數據處理的系統響應。測試結果顯示在模擬最大并發用戶500個、最大測試點為100 000個的壓力測試條件下,平均事物處理的響應時間≤6 s。
試點該油庫生產遠程監控系統對西固、彭州、咸陽、武漢四座油庫進行了實際應用測試。監控系統部署在蘭州,在4座油庫部署的實時監控點超過5000個,系統整體功能正常,最大響應時延低于5 s,能夠滿足油庫實時監控和預警的要求。
總體來說,通過功能、性能和應用測試,表明該監控系統具備一定實際推廣應用的潛力。利用大數據流處理框架處理生產實時數據,為油庫或其他工業環境遠程實時監控和預警提供了一種可選擇的解決方案。
本文從滿足多座油庫生產過程遠程實時監控的需求入手,為整體提升區域多座油庫生產管理智能化水平、降低遠程監控管理成本,基于大數據流處理技術,搭建了一套油庫生產遠程監控系統,實現了對西部地區多座大型油庫生產、安全等過程數據的實時監控和預警。該系統能夠滿足油庫日常生產遠程實時監控的要求。
該系統利用Flume、Kafka、Storm、MySQL實時數據處理框架,代替目前工業MES、工業監控等系統常用的實時數據庫技術。系統具有成本低、易擴展、并行能力強等特點,在后期的裝備在線狀態監測、復雜故障預測和診斷、視頻融合處理、綜合決策支持等大數據應用方面具有潛力。