隨著世界å„國工æ¥åŒ–ç¨‹åº¦çš„ä¸æ–·åŠ å¤§ï¼Œå„國的鋼éµéœ€æ±‚é‡ä¹Ÿä¸æ–·åŠ å¤§ï¼Œéœ€è¦çš„鋼éµçš„ç¨®é¡žä¹Ÿä¸æ–·å¢žå¤šã€‚é€™å°±è¦æ±‚我們在鋼éµçš„生產éŽç¨‹ä¸ä¸æ–·æ”¹é€²è‡ªå·±çš„å·¥è—æŠ€è¡“ï¼Œæé«˜ç”Ÿç”¢éŽç¨‹æŽ§åˆ¶ç²¾åº¦ï¼Œå¾žè€Œç”Ÿç”¢å‡ºæ›´å¤šæ›´å¥½çš„高質é‡é‹¼æã€‚
在煉鋼éŽç¨‹ä¸é…æ–™ã€ä¸Šæ–™éŽç¨‹å°‡ç›´æŽ¥å½±éŸ¿é‹¼çš„產é‡åŠè³ªé‡ï¼Œå¦‚果能å°é€™ä¸€éŽç¨‹é€²è¡Œè¨˜éŒ„分æžï¼Œå°‡æœ‰åˆ©äºŽå·¥è—的改進åŠåˆ†æžç”¢ç”Ÿæ¬¡å“çš„åŽŸå› ã€‚ä¸‹é¢å°±è¬›è§£ä¸€ä¸‹é€šéŽç´«é‡‘橋實時數據庫實ç¾é…æ–™ã€ä¸Šæ–™éŽç¨‹è¨˜éŒ„分æžçš„æ–¹æ³•å’ŒéŽç¨‹ã€‚
å·¥è—éŽç¨‹
從總的工è—éŽç¨‹å¯ä»¥åˆ†ç‚ºç„¦ä¸Šæ–™å’Œç¤¦ä¸Šæ–™å…©éƒ¨åˆ†ï¼Œé€šå¸¸ç„¦æˆ–礦åˆå„自由兩套上料系統來完æˆã€‚在上料å‰ï¼Œé¦–å…ˆè¦æ ¹æ“šç”Ÿç”¢ä¸åŒç¨®é¡žçš„鋼æé€²è¡Œé…æ–™ã€‚ä¸€å€‹ç¨±é‡æ–—å¯ä»¥å°æ‡‰ä¸€å€‹æ–™å€‰æˆ–å…©ä¸Šæ–™å€‰ï¼Œç•¶ä¸€å€‹ç¨±é‡æ–—å°æ‡‰å…©å€‹æ–™å€‰æ™‚,è¦é€šéŽé¸æ–™å™¨é€²è¡Œé¸æ–™ã€‚é€šå¸¸ç„¦ç‚æ˜¯é€šéŽç„¦ç‚ç¨±é‡æ–—稱é‡åŽç›´æŽ¥ä¸Šæ–™çš„;而礦通常是由多個é‡ç¨±é‡æ–—æŒ‰æ¯”ä¾‹é€²è¡Œç¨±é‡æ··åˆï¼Œç„¶åŽå†ç”±ç¤¦ç¸½ç¨±é‡æ–—進行匯總稱é‡ä¸Šæ–™ã€‚
記錄éŽç¨‹åˆ†æž
å°äºŽæ‰€æœ‰ç¨±é‡æ–—ï¼Œç•¶ç¨±é‡æ–—打開時為一次稱é‡çµæŸï¼Œé€™æ™‚æ ¹æ“šç¨±é‡æ–—物料來æºï¼ˆæ–™å€‰é¸æ“‡å™¨é¸æ“‡ç‹€æ…‹ï¼‰ï¼Œå°‡é€™å€‹å€¼è¨˜éŒ„åˆ°å°æ‡‰æœ¬æ¬¡åŠ æ–™é‡ä¸é–“é‡ä¸ã€‚å°äºŽç¤¦ç¸½ç¨±é‡æ–—打開時或焦ç‚ç¨±é‡æ–—打開時,則產生一æ¢ä¸Šæ–™è¨˜éŒ„。å°äºŽç„¦ç‚上料記錄,åªè¨˜éŒ„一個當å‰é¸æ“‡æ–™å€‰çš„上料é‡ï¼›å°äºŽç¤¦çš„上料記錄,則è¦è¨˜éŒ„å„分組æˆåˆ†çš„上料é‡ï¼ˆç”±ä¸é–“é‡ç²å¾—)和礦總的上料é‡ã€‚
上料éŽç¨‹ç”¢ç”Ÿçš„記錄è¦é€šéŽWEBç€è¦½ç™¼å¸ƒï¼Œç‚ºäº†ä½¿ç”¨æ‰€WEB客戶端看到相åŒçš„è¨˜éŒ„çµæžœï¼Œé€™è¦æ±‚記錄時è¦å°‡æ•¸æ“šæ’入到æ·å²ä¸ã€‚WEBå®¢æˆ¶ç«¯é€šéŽæŸ¥è©¢æŒ‡å®šæ™‚間范åœå…§çš„ä¸Šæ–™è¨˜éŒ„ï¼Œè€Œå¾—ä¸€è‡´çš„å®Œæ•´çš„è¨˜éŒ„çµæžœã€‚
記錄éŽç¨‹å¯¦ç¾ã€‚
å°äºŽç¤¦ä¸Šæ–™è¨˜éŒ„,由于其是由多種組分混åˆçµ„æˆï¼Œå¹¶è¦å°å„組分å«é‡é€²è¡Œè¨˜éŒ„ï¼Œå› æ¤è¡Œæˆä¸Šæ–™è¨˜éŒ„å‰ï¼Œè¦é€šéŽä¸€çµ„ä¸é–“變é‡å°å„組分的稱é‡çµæžœè¨˜éŒ„ã€‚æ ¹æ“šåˆ†ç¤¦ç¨±é‡æ–—å°æ‡‰ä¸€å€‹æˆ–兩個料倉的ä¸åŒï¼Œåœ¨ç”¢ç”Ÿä¸é–“é‡è¨˜éŒ„æ™‚ï¼Œè™•ç†æ–¹æ³•有所ä¸åŒï¼Œä½†è§¸ç™¼æ¢ä»¶éƒ½ç”±åˆ†ç¤¦ç¨±é‡æ–—的放料門打開產生的。在數據庫的“值改變â€è…³æœ¬ä¸ç‚ºæ¯å€‹åˆ†ç¤¦ç¨±é‡æ–—打開開關定義一段處ç†è…³æœ¬ï¼Œå¦‚下所示:
ä¸€å€‹åˆ†ç¤¦ç¨±é‡æ–—å°æ‡‰ä¸€å€‹æ–™å€‰ï¼Œé–‹é—œç‹€æ…‹è®ŠåŒ–時腳本:
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;
ç•¶ç¤¦ç¸½ç¨±é‡æ–—或焦ç‚ç¨±é‡æ–—打開時就會產生一æ¢ä¸Šæ–™è¨˜éŒ„,為了方便以時間為åºçš„è¨˜éŒ„æª¢ç´¢ï¼Œå¢žåŠ äº†ä¸€å€‹â€œè¨˜éŒ„æ™‚é–“â€æ•¸æ“šåº«é»žï¼Œå…¶ä¿å˜çš„值沒有太多實際æ„ç¾©ï¼Œä½†å®ƒæ‰€å°æ‡‰çš„æ™‚間則是其它é‡å€¼çš„æª¢ç´¢æ¢ä»¶ã€‚å°äºŽç¤¦ç¸½ç¨±é‡æ–—或焦ç‚ç¨±é‡æ–—åŒæ¨£è¦åœ¨æ•¸æ“šåº«çš„“值改變â€è…³æœ¬ä¸ç‚ºæ¯å€‹ç¨±é‡æ‰“開開關定義一段處ç†è…³æœ¬ï¼Œå¦‚下所示:
焦ç‚ç¨±é‡æ–—開關狀態變化時腳本:
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 RecordCou nt = #RecordTime.GetDataCou nt();
int RecordIndex = 1;
int i,j;
//第一個記錄的時間有å¯èƒ½å°äºŽé–‹å§‹æ™‚é–“
if( #RecordTime.GetVal(1,1) < #StartDate.Time ) then
RecordCou nt = RecordCou nt - 1;
RecordIndex = RecordIndex+ 1;
endif;
if( RecordCou nt > #List.RowCou nt() - 2) then
#List.AddRow(RecordCou nt - (#List.RowCou nt() - 2));
else
if( RecordCou nt < 18 ) then//18是本例ä¸ç¼ºçœè¨˜éŒ„æ•¸ï¼Œå¯æ ¹æ“šå¯¦éš›æƒ…æ³èª¿æ•´
#List.DelTailRow(#List.RowCou nt() - 20);//20為缺çœè¨˜éŒ„æ•¸åŠ è¡¨é 行數。
#List.ClearRowData(3,18);
else
#List.DelTailRow(#List.RowCou nt()-2 -RecordCou nt);
endif;
endif;
j=1;
for i=1to RecordCou nt+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;

å°çµ
æœ¬æ–‡ä¸»è¦æ˜¯ä»¥é‹¼éµçš„é…æ–™ã€ä¸Šæ–™è¨˜éŒ„éŽç¨‹ç‚ºä¾‹ï¼Œçµåˆå·¥è—éŽç¨‹å¯¦ç¾æ•¸æ“šè¨˜éŒ„和查詢顯示。å°äºŽé€™å€‹ç¤ºä¾‹ä¸åƒ…å¯ä»¥åšç‚ºé‹¼éµé…æ–™ã€ä¸Šæ–™è¨˜éŒ„ã€æ•¸æ“šåˆ†æžé¡¯ç¤ºçš„原型,也å¯ä»¥æ ¹æ“šå®ƒçš„æ‡‰ç”¨ç‰¹é»žï¼ˆæ•¸æ“šç”¢ç”Ÿå˜å„²ç”±æœå‹™å™¨ç«¯â€”—數據庫腳本來完æˆï¼Œæ•¸æ“šæŸ¥è©¢é¡¯ç¤ºç”±å®¢æˆ¶ç«¯è…³æœ¬ä¾†å®Œæˆï¼‰ï¼Œè€Œå°‡å…¶æ“´å±•到其它行æ¥ã€‚希望å°å¸ç¿’使用紫金橋實時數據庫所有幫助。