一種設(shè)備數(shù)據(jù)優(yōu)先采集方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)采集方法,尤其涉及的是一種設(shè)備數(shù)據(jù)優(yōu)先采集方法及系統(tǒng)。
【背景技術(shù)】
[0002]現(xiàn)有的工控軟件采集端由于受工業(yè)串口通訊協(xié)議的約束,每個(gè)上位機(jī)在采集電子設(shè)備數(shù)據(jù)時(shí)只能使用順序輪流模式,為了達(dá)到高效目的,往往每個(gè)串口都有一個(gè)專門的串口采集線程來完成這項(xiàng)工作。而每個(gè)串口掛載的設(shè)備數(shù)量是不確定的,有多有少,一個(gè)采集輪流周期,也會隨設(shè)備的數(shù)量而變化。在輪流采集過程中,用戶有可能需要設(shè)置某個(gè)特定設(shè)備,在設(shè)置完成后,往往想關(guān)注此設(shè)備或其他某個(gè)特定設(shè)備的數(shù)值變化過程,但是此時(shí)串口采集線程依然按照固有輪流順序進(jìn)行采集,很有可能當(dāng)采集到目標(biāo)設(shè)備的時(shí)候,設(shè)備已經(jīng)完全調(diào)整完成了,用戶根本看不到其變化過程,更無法滿足用戶需要監(jiān)視某個(gè)值來執(zhí)行某種中斷或停止動作。
[0003]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種設(shè)備數(shù)據(jù)優(yōu)先采集方法及系統(tǒng),旨在解決現(xiàn)有的串口采集線程采用輪流采集模式采集設(shè)備數(shù)據(jù)導(dǎo)致無法滿足用戶需要實(shí)時(shí)監(jiān)視特定數(shù)值來執(zhí)行相應(yīng)動作的問題。
[0005]本發(fā)明的技術(shù)方案如下:
[0006]一種設(shè)備數(shù)據(jù)優(yōu)先采集方法方法,其中,具體包括以下步驟:
[0007]步驟AOO:對每個(gè)串口采集線程設(shè)置常規(guī)隊(duì)列列表和優(yōu)先隊(duì)列列表,將需要采集的全部設(shè)備按順序放到常規(guī)隊(duì)列列表內(nèi),形成常規(guī)隊(duì)列;
[0008]步驟B00:設(shè)置節(jié)點(diǎn)并編輯節(jié)點(diǎn)內(nèi)容,將節(jié)點(diǎn)發(fā)送至串口采集線程,根據(jù)節(jié)點(diǎn)內(nèi)容將需要優(yōu)先采集的設(shè)備放到優(yōu)先隊(duì)列列表內(nèi),形成優(yōu)先隊(duì)列,串口采集線程啟動對設(shè)備進(jìn)行數(shù)據(jù)采集;
[0009]步驟COO:串口采集線程判斷優(yōu)先隊(duì)列列表是否為空,是,執(zhí)行步驟DOO-步驟R)0,否,執(zhí)行步驟GOO-步驟100 ;
[0010]步驟DOO:串口采集線程從常規(guī)隊(duì)列列表內(nèi)找到標(biāo)記所在的設(shè)備,同時(shí)標(biāo)記移動至常規(guī)隊(duì)列的下一個(gè)設(shè)備;
[0011]步驟EOO:串口采集線程根據(jù)要求發(fā)送指令至常規(guī)隊(duì)列列表內(nèi)找到的標(biāo)記設(shè)備進(jìn)行采集,得到設(shè)備的運(yùn)行數(shù)據(jù);
[0012]步驟R)0:將采集到的設(shè)備運(yùn)行數(shù)據(jù)發(fā)送至對應(yīng)存儲區(qū)域進(jìn)行存儲,執(zhí)行步驟JOO ;
[0013]步驟GOO:串口采集線程從優(yōu)先隊(duì)列列表內(nèi)找到標(biāo)記所在的設(shè)備,同時(shí)標(biāo)記移動至優(yōu)先隊(duì)列的下一個(gè)設(shè)備;
[0014]步驟HOO:串口采集線程根據(jù)要求發(fā)送指令至優(yōu)先隊(duì)列列表內(nèi)找到的標(biāo)記設(shè)備進(jìn)行采集,得到設(shè)備的運(yùn)行數(shù)據(jù);
[0015]步驟100:將采集到的設(shè)備運(yùn)行數(shù)據(jù)發(fā)送至對應(yīng)存儲區(qū)域進(jìn)行存儲,執(zhí)行步驟JOO ;
[0016]步驟JOO:串口采集線程判斷數(shù)據(jù)采集完畢的設(shè)備是否來自優(yōu)先隊(duì)列,是,執(zhí)行步驟KOO-步驟M00,否,執(zhí)行步驟步驟NOO ;
[0017]步驟KOO:串口采集線程根據(jù)節(jié)點(diǎn)內(nèi)容判斷設(shè)備是否滿足退出條件,是,執(zhí)行步驟L00,否,執(zhí)行步驟MOO ;
[0018]步驟LOO:串口采集線程將設(shè)備從優(yōu)先隊(duì)列列表中清除,執(zhí)行步驟COO ;
[0019]步驟MOO:執(zhí)行步驟COO ;
[0020]步驟NOO:執(zhí)行步驟COO。
[0021]所述的設(shè)備數(shù)據(jù)優(yōu)先采集方法方法,其中,所述節(jié)點(diǎn)內(nèi)容包括或設(shè)備識別碼,需要監(jiān)測的設(shè)備運(yùn)行數(shù)據(jù),退出條件,用戶識別碼。
[0022]所述的設(shè)備數(shù)據(jù)優(yōu)先采集方法方法,其中,所述退出條件包括優(yōu)先最大時(shí)長,目標(biāo)值,主動清除,默認(rèn)退出,默認(rèn)時(shí)長。
[0023]所述的設(shè)備數(shù)據(jù)優(yōu)先采集方法方法,其中,所述步驟KOO具體包括以下步驟:
[0024]步驟klO:串口采集線程判斷是否存在主動清除,是,執(zhí)行步驟L00,否,執(zhí)行步驟k20 ;
[0025]步驟k20:串口采集線程判斷對設(shè)備的采集是否達(dá)到優(yōu)先最大時(shí)長或默認(rèn)時(shí)長,是,執(zhí)行步驟L00,否,執(zhí)行步驟k30 ;
[0026]步驟k30:串口采集線程判斷對設(shè)備的采集是否達(dá)到目標(biāo)值或默認(rèn)退出,是,執(zhí)行步驟LOO,否,執(zhí)行步驟MOO。
[0027]所述的設(shè)備數(shù)據(jù)優(yōu)先采集方法方法,其中,所述采取主動清除的過程如下:
[0028]步驟alO:輸入設(shè)備識別碼和用戶識別碼至串口采集線程;
[0029]步驟a20:串口采集線程判斷輸入的用戶識別碼是否有效,是,執(zhí)行步驟a30,否,執(zhí)行步驟a50_步驟a60 ;
[0030]步驟a30:串口采集線程判斷輸入的設(shè)備識別碼是否在優(yōu)先隊(duì)列列表中,是,執(zhí)行步驟a40,否,執(zhí)行步驟a50 ;
[0031]步驟a40:串口采集線程將設(shè)備從優(yōu)先隊(duì)列列表中無條件清除,執(zhí)行步驟步驟a60 ;
[0032]步驟a50:串口采集線程將主動清除請求忽略,執(zhí)行步驟a60 ;
[0033]步驟a60:串口采集線程反饋清除成功或輸入信息無效的結(jié)果至用戶。
[0034]一種設(shè)備數(shù)據(jù)優(yōu)先采集系統(tǒng),其中,包括列表生成模塊,隊(duì)列生成模塊,節(jié)點(diǎn)生成編輯模塊和串口采集線程,所述串口采集線程包括:列表判斷模塊,設(shè)備尋找模塊,數(shù)據(jù)采集模塊,設(shè)備清除模塊,數(shù)據(jù)存儲模塊,退出判斷模塊,設(shè)備標(biāo)記模塊和設(shè)備判斷模塊;
[0035]列表生成模塊,對串口采集線程設(shè)置常規(guī)隊(duì)列列表和優(yōu)先隊(duì)列列表;
[0036]隊(duì)列生成模塊,把設(shè)備放入常規(guī)隊(duì)列列表或根據(jù)節(jié)點(diǎn)內(nèi)容把需要優(yōu)先采集運(yùn)行數(shù)據(jù)的設(shè)備放入優(yōu)先隊(duì)列列表,形成常規(guī)隊(duì)列或優(yōu)先隊(duì)列;
[0037]節(jié)點(diǎn)生成編輯模塊,生成節(jié)點(diǎn),根據(jù)需要優(yōu)先采集運(yùn)行數(shù)據(jù)的設(shè)備要求編輯節(jié)點(diǎn)內(nèi)容,并發(fā)送至串口采集線程;
[0038]列表判斷模塊,判斷優(yōu)先隊(duì)列列表是否為空;
[0039]設(shè)備標(biāo)記模塊,標(biāo)記當(dāng)前需要采集運(yùn)行數(shù)據(jù)的設(shè)備,并在設(shè)備采集完運(yùn)行數(shù)據(jù)后自動移動至下一需要采集運(yùn)行數(shù)據(jù)的設(shè)備;
[0040]設(shè)備尋找模塊,尋找標(biāo)記所在的當(dāng)前設(shè)備;
[0041]數(shù)據(jù)采集模塊,根據(jù)要求采集設(shè)備的運(yùn)行數(shù)據(jù);
[0042]設(shè)備判斷模塊,判斷已經(jīng)采集完運(yùn)行數(shù)據(jù)的設(shè)備是否來自優(yōu)先隊(duì)列列表;
[0043]退出判斷模塊,判斷設(shè)備是否滿足退出條件;
[0044]設(shè)備清除模塊,把滿足退出條件的設(shè)備從常規(guī)隊(duì)列列表或優(yōu)先隊(duì)列列表中刪除;
[0045]數(shù)據(jù)存儲模塊,把采集到的設(shè)備運(yùn)行數(shù)據(jù)存儲至相應(yīng)區(qū)域。
[0046]本發(fā)明的有益效果:本發(fā)明通過提供一種設(shè)備數(shù)據(jù)優(yōu)先采集方法及系統(tǒng),在每個(gè)串口的串口采集線程中設(shè)置所有設(shè)備的普通采集隊(duì)列和一個(gè)優(yōu)先隊(duì)列列表,正常情況下,優(yōu)先隊(duì)列列表保持為空,當(dāng)優(yōu)先隊(duì)列列表不為空時(shí),串口采集線程總是輪流采集優(yōu)先隊(duì)列列表里存在的設(shè)備,直到滿足用戶定義或系統(tǒng)內(nèi)置的條件,設(shè)備將從優(yōu)先隊(duì)列列表里清除,直到整個(gè)優(yōu)先隊(duì)列列表全部為空,再轉(zhuǎn)入普通隊(duì)列去順序采集;不管單串口下掛接多少設(shè)備,串口采集線程總能在需要的時(shí)候?qū)崟r(shí)監(jiān)控到設(shè)備值的整個(gè)變化過程,實(shí)時(shí)性強(qiáng);允許用戶定義優(yōu)先監(jiān)視條件,可以設(shè)置預(yù)期值,監(jiān)視時(shí)長,等,使得監(jiān)視變得非常靈活;加入優(yōu)先隊(duì)列列表無需附加條件,使用戶的監(jiān)控需要提供了最大的便利,可以同時(shí)監(jiān)控特定需要設(shè)備和其他設(shè)備的;由于設(shè)置了優(yōu)先隊(duì)列列表,為上位程序?qū)崿F(xiàn)中斷、暫停等動作提供了可能;優(yōu)先隊(duì)列列表的設(shè)置滿足用戶對特定數(shù)據(jù)實(shí)時(shí)監(jiān)測的需要。
【附圖說明】
[0047]圖1是本發(fā)明中設(shè)備數(shù)據(jù)優(yōu)先采集方法的步驟流程圖。
[0048]圖2是本發(fā)明中設(shè)備數(shù)據(jù)優(yōu)先采集系統(tǒng)的內(nèi)部連接圖。
【具體實(shí)施方式】
[0049]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚、明確,以下參照附圖并舉實(shí)施例對本發(fā)明進(jìn)一步詳細(xì)說明。
[0050]如圖1所示,本設(shè)備數(shù)據(jù)優(yōu)先采集方法,具體包括以下步驟:
[0051]步驟AOO:對每個(gè)串口采集線程設(shè)置常規(guī)隊(duì)列列表和優(yōu)先隊(duì)列列表,將需要采集的全部設(shè)備按順序放到常規(guī)隊(duì)列列表內(nèi),形成常規(guī)隊(duì)列;
[0052]步驟B00:設(shè)置節(jié)點(diǎn)并編輯節(jié)點(diǎn)內(nèi)容,將節(jié)點(diǎn)發(fā)送至串口采集線程,根據(jù)節(jié)點(diǎn)內(nèi)容將需要優(yōu)先采集的設(shè)備放到優(yōu)先隊(duì)列列表內(nèi),形成優(yōu)先隊(duì)列,串口采集線程啟動對設(shè)備進(jìn)行數(shù)據(jù)采集;
[0053]步驟COO:串口采集線程判斷優(yōu)先隊(duì)列列表是否為空,是,執(zhí)行步驟DOO-步驟R)0,否,執(zhí)行步驟GOO-步驟100 ;
[0054]步驟DOO:串口采集線程從常規(guī)隊(duì)列列表內(nèi)找到標(biāo)記所在的設(shè)備,同時(shí)標(biāo)記移動至常規(guī)隊(duì)列的下一個(gè)設(shè)備;
[0055]步驟EOO:串口采集線程根據(jù)要求發(fā)送指令至常規(guī)隊(duì)列列表內(nèi)找到的標(biāo)記設(shè)備進(jìn)行采集,得到設(shè)備的運(yùn)行數(shù)據(jù);<