李 東
(上海海勃物流軟件有限公司,上海 200080)
大型港口生產供油業務具有場地封閉、站點分散、用油量大、不均衡的特點,傳統加油采用手工簽字記錄模式,效率低下,數據不精確;報表實時性差,油品損耗難以計量,結算困難,安全度低,不能滿足港口能耗管理和節能減排的要求,針對以上問題,結合港口集團總部、港口碼頭現場、油品供應商、系統維護人員的需求,設計開發了油品集中管控系統(Oil centralized management and control system,OCMC),該系統主要應用卡機聯動系統進行加油數據的控制和采集,建立了以OGG為紐帶的三級ORACLE數據庫,基于JAVA開發的油品管控平臺等,整個系統業務流程清晰、功能模塊完整、數據實時準確,科學集中管控,節省了大量人力物力,取得了良好社會效益和經濟效益。
油品集中管控系統由供油采集系統(OCS)、油品數據中心(ODC)、油品管理平臺(OMP)三個子系統組成,OCS部署在碼頭加油站,主要有非接觸式卡機聯動、油卡管理、ZigBee無線傳輸、通信控制,并通過局域網實時上傳到ODC,對加油站的進、銷、付、存的智能控制和數據采集;ODC部署在港口總部,以星型結構和OCS站通信連接;OMP系統部署在混合云上,使用Web技術,服務器端采用Java開發語言,基于業界廣泛通用的SSH2架構,Web服務器采用Tomcat中間件服務器,Web客戶端采用JQuery框架,WebUI采用基于JQuery的商業產品MiniUI。這樣能保證服務器端安全、速度快,包含油品、進油、付油、庫存、交接班、統計報表等管理模塊。[1]
圖1 總體架構
考慮到大型港口封閉性的特點,需要在港口場地內設置加油站,站級OCS主要由加油機系統、移動加油車系統、站級管理系統三部分組成,加油機系統卡機聯動控制器通過RS485通信總線和射頻卡控制單元相連,對非接觸式IC卡進行讀取,獲取雙卡(司機卡、車卡)授權驗證信息,加油機卡機聯動控制器接口與加油機數控主板進行數據通信,通過授權驗證后允許油槍加油,加油結束后,打印加油小票,加油數據傳送到加油站PC,在通信正常的情況下,卡機聯動控制器會自動下載授權卡信息,保證卡機聯動控制系統能夠完成脫機加油,通信恢復后,加油數據斷點續至加油站PC,加油機主要為方便移動的加油設備(集卡、鏟車、叉車、場地車等)提供加油業務;移動加油車上需要安裝卡機聯動控制器,在出油管道上安裝流量計(DN40/12V/0.1),電磁閥(DN40/24V),卡機聯動控制器讀卡授權后,打開電磁閥進行加油,加油完畢后,把流量表加油數據采集到卡機聯動控制器MEM中,移動加油車完成加油后,返回加油站移動加油車存放區,移動加加油機卡機聯動控制器通過ZigeBee無線模塊和加油站PC相連,完成加油數據的長傳,移動加油車主要為移動不便的加油設備(輪胎吊、龍門吊等)加油;站級管理系統和油罐液位儀系統、加油機系統、移動加油車系統、監控系統相連,完成進、銷油數據采集、庫存管理、視頻監控、數據查詢及打印等業務,并且采集到的加油數據由通信控制器通過LAN上傳到ODC。[2]
油品集中管控系統設立三級Oracle數據庫,主要由站級DB、ODCDB、OMPDB,DB之間通過Oracle GoldenGate(OGG)實現大量數據亞秒級的異構實時復制同步,保證供油邏輯業務數據的一致性;多家站級DB(stationA/B…)通過OGG多對一集中復制到ODCDB,ODC搭建雙活SERVER,雙SAN光纖交換機和主備存儲盤陣相連,利用oracle RAC集群技術和RMAN工具,保證了供油數據的高精度、高冗余、高安全;ODCDB通過OGG一對一單項復制到部署在混合云上的OMPDB,OMP系統基于OMPDB的基礎上進行油品管理平臺開發。
OMP系統通過Web應用發布到INTERNET上,用戶主要包括港口總部、加油站、用油單位、供應商以及系統維護人員,通過WAN/LAN登錄網址訪問。港口總部管理和分析全港油品采購情況;加油站用戶管理加油站的日常運行,進行進貨、加油、移庫、盤點等操作;加油單位用戶查詢本單位油品使用情況;供應商用戶查看加油站油品實時庫存,維護油品價格,管理油泵的校泵等并作為結賬依據和用油單位進行結算。
OMP系統主要包括系統配置、生產用油、查詢盤點等三個模塊(詳見圖2)。
圖2 功能模塊
CARD_BALANCE_VIEW視圖用于查詢加油卡余額時后臺程序調用。
create view [dbo].[CARD_BALANCE_VIEW] as
SELECT EDU_IC_NUM,EDU_COUNT
FROM [OMPDB_Link]. OMPDB.dbo.TBL_EDU
GetLossedTTC實現功能:根據時間范圍、加油站號、油槍號查詢該油槍的TTC號缺失列表,代碼片段如下:
Create function GetLossedTTC(
@REFD_DT_Start VARCHAR(20)
,@REFD_DT_End VARCHAR(20)
,@REFD_STATION_ID VARCHAR(20)
,@REFD_OILNOZZLE_ID int
)
RETURNS @LossedTTCList TABLE(
REFD_STATION_ID VARCHAR(20)
,REFD_OILNOZZLE_ID int
,REFD_DT_Start VARCHAR(20)
,REFD_DT_End VARCHAR(20)
,TTC VARCHAR(1000)
)
as
begin
declare @ttc_prev int, @DT_prev VARCHAR(30);
declare Refuel_cursor cursor for
SELECT CONVERT(varchar(100),r.REFD_DT,
120) as REFD_DT,r.REFD_OIL_SERIAL
FROM GSS_REFUEL_DETAIL r
where r.REFD_STATION_ID=@REFD_STATION_ID
a n d r.R E F D_O I L N O Z Z L E_I D = @R E F D_OILNOZZLE_ID
and r.REFD_DT >= dateadd(day,0,@REFD_DT_Start)
and REFD_DT <= dateadd(day,0,@REFD_DT_End)
order by r.REFD_OIL_SERIAL asc;
open Refuel_cursor;
fetch from Refuel_cursor into @DT_prev,@ttc_prev ;
while(@@fetch_status=0) begin
declare @ttc_curr int, @DT_curr VARCHAR(30) ;
fetch from Refuel_cursor into @DT_curr,@ttc_curr ;
if(@@fetch_status=0) begin
if(@ttc_curr > @ttc_prev + 1) begin
declare @ttc VARCHAR(1000) ;
set @ttc = cast(@ttc_prev+1 as VARCHAR) ;
declare @idx int ;
set @idx = @ttc_prev + 2 ;
while(@idx < @ttc_curr) begin
set @ttc = @ttc + ',' + cast(@idx as VARCHAR) ;
set @idx = @idx + 1 ;
end ;
insert into @LossedTTCList
s e l e c t @R E F D_S TAT I O N_I D,@R E F D_OILNOZZLE_ID,@DT_prev,@DT_curr,@ttc;
end;
end
else
begin
break;
end;
set @DT_prev = @DT_curr;
set @ttc_prev = @ttc_curr;
end;
——關閉和釋放游標
CLOSE Refuel_cursor ;
return ;
end
refresRefuelData_FuelStation將加油站數據庫系統中的異常加油記錄同步到OMP系統中。用戶登錄異常加油記錄處理界面,系統自動調用該存儲過程同步本加油站的異常加油記錄,也可以手工啟動同步過程;存儲過程的輸入為加油站號,返回數據同步狀態,“1”表示成功,“0”表示失敗。
隨著時代的進步,傳統人工作業和管理的弊端逐漸顯現,基于信息化、自動化、數據化的管理系統已經深入滲透到傳統行業,顛覆了傳統的管理模式和思維,展現了強大的生命力。