許劍光
摘 要:歷史報(bào)警控制是企業(yè)計(jì)算機(jī)控制系統(tǒng)的重要功能。本文介紹了當(dāng)前成熟的ADO及SQL數(shù)據(jù)查詢技術(shù),并將其用于對(duì)iFix v3.0組態(tài)軟件歷史報(bào)警庫的查詢,既滿足了設(shè)備維護(hù)的要求也達(dá)到了軟件優(yōu)化的目的。
關(guān)鍵詞:歷史報(bào)警 查詢 軟件優(yōu)化
中圖分類號(hào):TP302.1 TG333.7文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1003-9082(2019)11-0-01
引言
南京鋼鐵集團(tuán)中厚板卷廠煉鋼車間現(xiàn)有120t雙車式鋼包爐、雙罐式VD真空處理裝置各一座,主體設(shè)備從意大利DANIELI公司引進(jìn),其中一級(jí)自動(dòng)化系統(tǒng)人機(jī)界面由外方開發(fā)并運(yùn)行于iFIX v3.0平臺(tái)上。由于在原設(shè)計(jì)中報(bào)警頁未能提供歷史報(bào)警的查詢功能,對(duì)于維修人員在日常維護(hù)過程中判斷故障產(chǎn)生原因帶來很大困難。因此,筆者在充分了解iFIX軟件的基礎(chǔ)上,根據(jù)現(xiàn)場的要求進(jìn)行了相應(yīng)的開發(fā)工作,彌補(bǔ)了設(shè)計(jì)的不足,也滿足了生產(chǎn)的需要。
一、系統(tǒng)改進(jìn)的實(shí)現(xiàn)原理
在實(shí)際工作中需要將開關(guān)量變位,模擬量越限等數(shù)據(jù)的變化情況存入報(bào)警歷史數(shù)據(jù)庫中,然后再通過編寫程序查詢報(bào)警歷史,使現(xiàn)場用戶能夠直觀方便的查詢所需的歷史數(shù)據(jù)。在本系統(tǒng)中以較為流行的關(guān)系型數(shù)據(jù)庫系統(tǒng)ACCESS作為報(bào)警歷史庫存儲(chǔ)歷史報(bào)警信息。為了使應(yīng)用程序能通過OLE DB訪問數(shù)據(jù)庫,以達(dá)到方便快速地訪問和操作數(shù)據(jù)庫中的數(shù)據(jù)的要求,程序中使用了ADO+SQL的方式進(jìn)行操作。
1.ADO簡介:ADO是一套COM(Component Object Model組件對(duì)象模型)組件(DLLs),它允許用戶像訪問電子郵件和文件系統(tǒng)一樣訪問數(shù)據(jù)庫。ADO庫包含三個(gè)基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口,其中第一個(gè)接口可以創(chuàng)建一個(gè)數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的SQL語句,第二個(gè)接口提供了一種簡單的方法來執(zhí)行返回記錄集的存儲(chǔ)過程和SQL語句,第三個(gè)接口對(duì)記錄集提供了更多的控制功能,如記錄鎖定,游標(biāo)控制等。
2.SQL簡介:SQL指結(jié)構(gòu)化查詢語言(Structured Query Language),是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。
結(jié)構(gòu)化查詢語言是高級(jí)的非過程化編程語言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對(duì)數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫系統(tǒng), 可以使用相同的結(jié)構(gòu)化查詢語言作為數(shù)據(jù)輸入與管理的接口。結(jié)構(gòu)化查詢語言語句可以嵌套,這使它具有極大的靈活性和強(qiáng)大的功能。。
二、系統(tǒng)實(shí)現(xiàn)的步驟
本系統(tǒng)的主要功能是訪問和操作報(bào)警數(shù)據(jù)庫中的數(shù)據(jù),向用戶提供完整詳細(xì)的報(bào)警信息,其主要功能有:查詢當(dāng)天的數(shù)據(jù)、按日期、時(shí)間區(qū)間查找、按區(qū)域查找等。
1.查詢模塊設(shè)計(jì)。此模塊用于實(shí)現(xiàn)通過日期、時(shí)間及區(qū)域查詢的功能。實(shí)現(xiàn)原理主要是通過TADOConnection組件連接數(shù)據(jù)庫,TADOQuery發(fā)送SQL語句實(shí)現(xiàn)后臺(tái)數(shù)據(jù)庫實(shí)現(xiàn)查詢。同時(shí)利用數(shù)據(jù)源組件TDataSource連接數(shù)據(jù)顯示控件TDBGrid和TADOQuery,部分代碼如下:
ADOConnectionlj.connected:=.T.;
DisableControls; //連接期間暫時(shí)停止數(shù)據(jù)顯示控件
Adoquerycx.close;
Sql.txt=; //清空SQL
sql.Add(‘select * from fixalarms);
2.排序模塊設(shè)計(jì)。為了便于數(shù)據(jù)的瀏覽,程序中加入了排序功能,排序語句的實(shí)現(xiàn)相對(duì)容易,主要通過在SQL查詢語句Select中添加Order選項(xiàng)實(shí)現(xiàn):
if radiogroupcx.ItemIndex=0 then
sql.Add(‘order by cdatecx(datelast) asc)
else if radiogroupcx.ItemIndex=1 then
sql.Add(‘order by cdatecx(datelast) desc); // 按datelast字段降序排序
if radiogroupcx2.ItemIndex=0 then
sql.Add(‘timelast asc)
else if radiogroupcx2.ItemIndex=1 then
sql.Add(‘timelast desc); // 按timelast字段升序排序
3.實(shí)現(xiàn)記錄滾動(dòng)瀏覽。DBGRID組件主要實(shí)現(xiàn)記錄的瀏覽功能,但是在Delphi中該控件并沒有實(shí)現(xiàn)通過鼠標(biāo)移動(dòng)記錄的功能,因此必須手動(dòng)響應(yīng)相應(yīng)的鼠標(biāo)滾輪消息。主要原理是通過向DBGrid發(fā)送消息WM_MOUSE_WHEEL實(shí)現(xiàn)記錄的移動(dòng):
if Message.Msg = WM_MOUSEWHEEL then //判斷鼠標(biāo)滾輪是否移動(dòng)
begin
xx := Short(Message.WParamHi) < 0;
if xx then
DBGridxs.DataSource.DataSet.MoveBy(1)
else
DBGridxs.DataSource.DataSet.MoveBy(-1) //移動(dòng)記錄
end
else
Wnd(Message);
4.系統(tǒng)相關(guān)的設(shè)置模塊。在實(shí)際應(yīng)用中查詢數(shù)據(jù)庫的存放位置往往需要隨時(shí)改變,這是實(shí)際生產(chǎn)中常見的需求之一。本系統(tǒng)也加入了類似的功能,其思路主要通過向注冊(cè)表寫入相應(yīng)的鍵值來實(shí)現(xiàn)數(shù)據(jù)庫位置的調(diào)整,這樣每次執(zhí)行時(shí)程序會(huì)自動(dòng)讀取新的數(shù)據(jù)庫路徑。
regcx:=Tregistry.Create;//創(chuàng)建注冊(cè)表類
regcx.RootKey:=HKEY_CURRENT_USER; //設(shè)定根鍵
if regcx.KeyExists(‘\sw\cx)=.F. then //如果子鍵不存在則創(chuàng)建
else
begin
if Reg.OpenKey(‘\sw\cx, .T.) then //判斷相應(yīng)的鍵值是否存在
string:=reg.readstring(‘datasourcecx);
ADOConnectioncx.ConnectionString:=string; //得到連接數(shù)據(jù)表的字符串
ADOQuerycx2.Active:=.T.;
end;
結(jié)語
報(bào)警查詢系統(tǒng)目前已用于實(shí)際生產(chǎn),通過一段時(shí)間的測試證明該系統(tǒng)能夠方便快捷地查詢歷史數(shù)據(jù),并且可以發(fā)現(xiàn)設(shè)備存在的隱患并提前采取保護(hù)措施,達(dá)到了預(yù)期的設(shè)計(jì)效果。隨著中厚板卷生產(chǎn)的進(jìn)一步發(fā)展,該系統(tǒng)未來還將不斷增加新的功能特別是移動(dòng)查詢,從而進(jìn)一步推動(dòng)歷史報(bào)警控制水平的提高。
參考文獻(xiàn)
[1]iFix v3.0技術(shù)手冊(cè).GE Fanuc International,2003.
[2]何玉潔.數(shù)據(jù)庫基礎(chǔ)及應(yīng)用技術(shù)[M].北京:清華大學(xué)出版社,2002.
[3]Loren Eidahl著,宏伊工作室譯.Visual Basic 5 控件設(shè)計(jì)與開發(fā)[M].杭州:浙江科學(xué)技術(shù)出版社,西蒙與舒斯特國際出版公司,1998.
[4]陳燦煌,陳周造.Dephi 5.0 徹底研究[M].北京:中國鐵道出版社,2001.
[5]陳豫龍,何旭洪.Dephi 6 數(shù)據(jù)庫系統(tǒng)開發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2002.