|
suizheshijiegeguogongyehuachengdudebuduanjiada,geguodegangtiexuqiuliangyebuduanjiada,xuyaodegangtiedezhongleiyebuduanzengduo。zhejiuyaoqiuwomenzaigangtiedeshengchanguochengzhongbuduangaijinzijidegongyijishu,tigaoshengchanguochengkongzhijingdu,congershengchanchugengduogenghaodegaozhilianggangcai。
在煉鋼過程中配料、上(shang)料(liao)過(guo)程(cheng)將(jiang)直(zhi)接(jie)影(ying)響(xiang)鋼(gang)的(de)產(chan)量(liang)及(ji)質(zhi)量(liang),如(ru)果(guo)能(neng)對(dui)這(zhe)一(yi)過(guo)程(cheng)進(jin)行(xing)記(ji)錄(lu)分(fen)析(xi),將(jiang)有(you)利(li)於(yu)工(gong)藝(yi)的(de)改(gai)進(jin)及(ji)分(fen)析(xi)產(chan)生(sheng)次(ci)品(pin)的(de)原(yuan)因(yin)。下(xia)麵(mian)就(jiu)講(jiang)解(jie)一(yi)下(xia)通(tong)過(guo)紫(zi)金(jin)橋(qiao)實(shi)時(shi)數(shu)據(ju)庫(ku)實(shi)現(xian)配(pei)料(liao)、上料過程記錄分析的方法和過程。
工藝過程
從(cong)總(zong)的(de)工(gong)藝(yi)過(guo)程(cheng)可(ke)以(yi)分(fen)為(wei)焦(jiao)上(shang)料(liao)和(he)礦(kuang)上(shang)料(liao)兩(liang)部(bu)分(fen),通(tong)常(chang)焦(jiao)或(huo)礦(kuang)又(you)各(ge)自(zi)由(you)兩(liang)套(tao)上(shang)料(liao)係(xi)統(tong)來(lai)完(wan)成(cheng)。在(zai)上(shang)料(liao)前(qian),首(shou)先(xian)要(yao)根(gen)據(ju)生(sheng)產(chan)不(bu)同(tong)種(zhong)類(lei)的(de)鋼(gang)材(cai)進(jin)行(xing)配(pei)料(liao)。一(yi)個(ge)稱(cheng)量(liang)鬥(dou)可(ke)以(yi)對(dui)應(ying)一(yi)個(ge)料(liao)倉(cang)或(huo)兩(liang)上(shang)料(liao)倉(cang),當(dang)一(yi)個(ge)稱(cheng)量(liang)鬥(dou)對(dui)應(ying)兩(liang)個(ge)料(liao)倉(cang)時(shi),要(yao)通(tong)過(guo)選(xuan)料(liao)器(qi)進(jin)行(xing)選(xuan)料(liao)。通(tong)常(chang)焦(jiao)炭(tan)是(shi)通(tong)過(guo)焦(jiao)炭(tan)稱(cheng)量(liang)鬥(dou)稱(cheng)量(liang)後(hou)直(zhi)接(jie)上(shang)料(liao)的(de);而礦通常是由多個量稱量鬥按比例進行稱量混合,然後再由礦總稱量鬥進行彙總稱量上料。

記錄過程分析
對於所有稱量鬥,當稱量鬥打開時為一次稱量結束,這時根據稱量鬥物料來源(料倉選擇器選擇狀態),jiangzhegezhijiludaoduiyingbencijialiaoliangzhongjianliangzhong。duiyukuangzongchengliangdoudakaishihuojiaotanchengliangdoudakaishi,zechanshengyitiaoshangliaojilu。duiyujiaotanshangliaojilu,zhijiluyigedangqianxuanzeliaocangdeshangliaoliang;對於礦的上料記錄,則要記錄各分組成分的上料量(由中間量獲得)和礦總的上料量。
上料過程產生的記錄要通過WEB瀏覽發布,為了使用所WEB客戶端看到相同的記錄結果,這要求記錄時要將數據插入到曆史中。WEB客戶端通過查詢指定時間範圍內的上料記錄,而得一致的完整的記錄結果。
記錄過程實現
對(dui)於(yu)礦(kuang)上(shang)料(liao)記(ji)錄(lu),由(you)於(yu)其(qi)是(shi)由(you)多(duo)種(zhong)組(zu)分(fen)混(hun)合(he)組(zu)成(cheng),並(bing)要(yao)對(dui)各(ge)組(zu)分(fen)含(han)量(liang)進(jin)行(xing)記(ji)錄(lu),因(yin)此(ci)行(xing)成(cheng)上(shang)料(liao)記(ji)錄(lu)前(qian),要(yao)通(tong)過(guo)一(yi)組(zu)中(zhong)間(jian)變(bian)量(liang)對(dui)各(ge)組(zu)分(fen)的(de)稱(cheng)重(zhong)結(jie)果(guo)記(ji)錄(lu)。根(gen)據(ju)分(fen)礦(kuang)稱(cheng)量(liang)鬥(dou)對(dui)應(ying)一(yi)個(ge)或(huo)兩(liang)個(ge)料(liao)倉(cang)的(de)不(bu)同(tong),在(zai)產(chan)生(sheng)中(zhong)間(jian)量(liang)記(ji)錄(lu)時(shi),處(chu)理(li)方(fang)法(fa)有(you)所(suo)不(bu)同(tong),但(dan)觸(chu)發(fa)條(tiao)件(jian)都(dou)由(you)分(fen)礦(kuang)稱(cheng)量(liang)鬥(dou)的(de)放(fang)料(liao)門(men)打(da)開(kai)產(chan)生(sheng)的(de)。在(zai)數(shu)據(ju)庫(ku)的(de)“值改變”腳本中為每個分礦稱量鬥打開開關定義一段處理腳本,如下所示:
一個分礦稱量鬥對應一個料倉,開關狀態變化時腳本:
if( 580稱量鬥5打開信號.PV ) then
580燒5稱重E.PV = 580稱量鬥5稱重.PV;
endif;
一個分礦稱量鬥對應兩個料倉,開關狀態變化時腳本:
if (580稱量鬥1打開信號.PV) then
if( 580礦1燒11選擇信號.PV == 0) then
580礦1稱重E.PV = 580稱量鬥1稱重.PV;
580燒11稱重E.PV = -99999;
else
580礦1稱重E.PV = -99999;
580燒11稱重E.PV = 580稱量鬥1稱重.PV;
endif;
endif;
當礦總稱量鬥或焦炭稱量鬥打開時就會產生一條上料記錄,為了方便以時間為序的記錄檢索,增加了一個“記錄時間”shujukudian,qibaocundezhimeiyoutaiduoshijiyiyi,dantasuoduiyingdeshijianzeshiqitaliangzhidejiansuotiaojian。duiyukuangzongchengliangdouhuojiaotanchengliangdoutongyangyaozaishujukude“值改變”腳本中為每個稱量打開開關定義一段處理腳本,如下所示:
焦炭稱量鬥開關狀態變化時腳本:
int Millisecond = $SYSTEM.Millisec;
int CurTime = $SYSTEM.LongTime;
if( 580西焦稱量鬥打開.PV == 1) then
InsertHisData2(580記錄時間.PV,$SYSTEM.LongTime, $SYSTEM.LongTime,Millisecond);
InsertHisData2(580裝料製度.PV,-99999, CurTime, Millisecond);//裝料製度0表示為P
InsertHisData2(580焦3上料量.PV, -99999, CurTime, Millisecond);
//沒有上料的礦
InsertHisData2(580礦總上料量.PV, -99999, CurTime, Millisecond);
//這裏假設為0時為選擇焦1
if( 580焦1焦2選擇信號.PV == 0) then
InsertHisData2(580焦1上料量.PV, 580西焦稱重.PV, CurTime, Millisecond);
InsertHisData2(580焦2上料量.PV, -99999, CurTime, Millisecond);
else
InsertHisData2(580焦1上料量.PV, -99999, CurTime, Millisecond);
InsertHisData2(580焦2上料量.PV, 580西焦稱重.PV, CurTime, Millisecond);
endif;
endif;
礦總稱量鬥開關狀態變化時腳本:
int Millisecond = $SYSTEM.Millisec;
int CurTime= $SYSTEM.LongTime;
if (580西礦稱量鬥打開.PV) then
InsertHisData2(580記錄時間.PV,CurTime, CurTime, Millisecond);
InsertHisData2(580裝料製度.PV,1, CurTime, Millisecond);//1表示裝料製度為K
InsertHisData2(580焦1上料量.PV, -99999, CurTime, Millisecond);
//沒有上料的礦或焦
InsertHisData2(580球10上料量.PV, -99999, CurTime, Millisecond);
InsertHisData2(580礦1上料量.PV, 580礦1稱重E.PV, CurTime, Millisecond);
//上料的礦或焦
InsertHisData2(580礦總上料量.PV, 580西礦稱重.PV, CurTime, Millisecond);
endif;
記錄查詢顯示
對於記錄的顯示首先是通過一個隱藏的“所有曆史數據表”將選定時間範圍內的所有記錄時間檢索出來,然後再通過這個時間檢索其它記錄值,並將這些值填充到顯示表中。這個處理過程是通過“所有曆史數據表”的“事件腳本”來完成的:

“事件腳本”中的“數據刷新”腳本如下所示:
int RecordCount = #RecordTime.GetDataCount();
int RecordIndex = 1;
int i,j;
//第一個記錄的時間有可能小於開始時間
if( #RecordTime.GetVal(1,1) < #StartDate.Time ) then
RecordCount = RecordCount - 1;
RecordIndex = RecordIndex+ 1;
endif;
if( RecordCount > #List.RowCount() - 2) then
#List.AddRow(RecordCount - (#List.RowCount() - 2));
else
if( RecordCount < 18 ) then//18是本例中缺省記錄數,可根據實際情況調整
#List.DelTailRow(#List.RowCount() - 20);//20為缺省記錄數加表頭行數。
#List.ClearRowData(3,18);
else
#List.DelTailRow(#List.RowCount()-2 -RecordCount);
endif;
endif;
j=1;
for i=1to RecordCount+1step1
if( #RecordTime.GetVal(1,RecordIndex+i) == #RecordTime.GetVal(3,RecordIndex+i)) then
#list.SetVal(1, j+2, #RecordTime.GetVal(1,RecordIndex+i));
#list.SetVal(2, j+2, #RecordTime.GetVal(2,RecordIndex+i));
j=j+1;
endif;
next;
小結
本文主要是以鋼鐵的配料、上料記錄過程為例,結合工藝過程實現數據記錄和查詢顯示。對於這個示例不僅可以做為鋼鐵配料、上料記錄、數據分析顯示的原型,也可以根據它的應用特點(數據產生存儲由服務器端――數據庫腳本來完成,數據查詢顯示由客戶端腳本來完成),而將其擴展到其它行業。希望對學習使用紫金橋實時數據庫所有幫助。
|