本發(fā)明涉及一種專(zhuān)家系統(tǒng)開(kāi)發(fā)平臺(tái),尤其涉及一種可訪(fǎng)問(wèn)sqlite3數(shù)據(jù)庫(kù)實(shí)時(shí)過(guò)程數(shù)據(jù)的專(zhuān)家系統(tǒng)開(kāi)發(fā)平臺(tái),從而實(shí)現(xiàn)工業(yè)環(huán)境下硬件設(shè)備的軟件邏輯模擬。本發(fā)明所設(shè)計(jì)的基于pyke專(zhuān)家系統(tǒng)的工業(yè)設(shè)備軟件模擬方法主要是用于工業(yè)管控系統(tǒng)中對(duì)于非開(kāi)發(fā)人員的培訓(xùn)。有了這種方法可以不用實(shí)地操作硬件設(shè)備就能獲取到實(shí)時(shí)數(shù)據(jù),從而大大提高了工作培訓(xùn)的效率并且降低了由于出錯(cuò)導(dǎo)致的損失。
背景技術(shù):
在工業(yè)管控系統(tǒng)中,需要針對(duì)所使用的管控系統(tǒng)對(duì)工作人員進(jìn)行相應(yīng)的培訓(xùn)。這種培訓(xùn)的目的是讓工作人員熟悉管控軟件并能快速地用其進(jìn)行工作。在工業(yè)中,大部分工作環(huán)境復(fù)雜,若是在培訓(xùn)中還需要工作人員去實(shí)時(shí)的操作相關(guān)設(shè)備,那么培訓(xùn)的成本會(huì)太高而且培訓(xùn)的效率也會(huì)大大降低。因此,本專(zhuān)利考慮將硬件設(shè)備軟件化,設(shè)計(jì)一種實(shí)現(xiàn)硬件功能的軟件模擬方法。
專(zhuān)家系統(tǒng)的開(kāi)發(fā)一般都分成推理機(jī)和知識(shí)庫(kù),推理機(jī)獨(dú)立于知識(shí)庫(kù),只要有某一行業(yè)的知識(shí),推理機(jī)就可以正常工作推理出結(jié)果。知識(shí)則采用規(guī)則來(lái)標(biāo)識(shí)知識(shí),多條規(guī)則形成知識(shí)庫(kù)。
當(dāng)前的各種行業(yè),如冶金行業(yè)、電力行業(yè)等,其中用到的專(zhuān)家系統(tǒng)一般都是采用專(zhuān)有的軟硬件或者通用的計(jì)算機(jī)軟硬件來(lái)進(jìn)行開(kāi)發(fā)。但是經(jīng)驗(yàn)表明,專(zhuān)有的硬件或軟件雖有助于專(zhuān)家系統(tǒng)的實(shí)現(xiàn),但是不利于專(zhuān)家系統(tǒng)的推廣和后期更新、維護(hù),因此目前普遍采用在主流的計(jì)算機(jī)硬件平臺(tái)或軟件平臺(tái)來(lái)進(jìn)行專(zhuān)家系統(tǒng)的開(kāi)發(fā),本文采用的pyke是基于python的專(zhuān)家系統(tǒng),有專(zhuān)門(mén)模塊設(shè)計(jì)知識(shí)庫(kù)、自帶的推理規(guī)則、后臺(tái)數(shù)據(jù)庫(kù)采用sqlite3需要通過(guò)plc采集大量實(shí)時(shí)數(shù)據(jù),這些實(shí)時(shí)數(shù)據(jù)根據(jù)需要一般都會(huì)保存在這些sqlite3數(shù)據(jù)庫(kù)中。本發(fā)明所采用的pyke專(zhuān)家系統(tǒng)具有很強(qiáng)的使用價(jià)值,能從這個(gè)sqlite3數(shù)據(jù)庫(kù)中獲取相關(guān)的實(shí)時(shí)數(shù)據(jù),以及時(shí)進(jìn)行推理,從而獲知各種硬件設(shè)備的當(dāng)前狀態(tài)是否正常,以采取相應(yīng)的措施。從而可以在沒(méi)有硬件設(shè)備的條件下,實(shí)現(xiàn)對(duì)工業(yè)管控系統(tǒng)的員工培訓(xùn)。
pyke以python語(yǔ)言為基礎(chǔ)開(kāi)發(fā)了數(shù)百個(gè)函數(shù),向用戶(hù)提供了基于規(guī)則的專(zhuān)家系統(tǒng)功能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種基于pyke專(zhuān)家系統(tǒng)的軟件模擬系統(tǒng),以解決現(xiàn)有工業(yè)系統(tǒng)的員工培訓(xùn)中為產(chǎn)生實(shí)時(shí)數(shù)據(jù)而運(yùn)行硬件設(shè)備的問(wèn)題。本發(fā)明的專(zhuān)家系統(tǒng)平臺(tái)可提高系統(tǒng)開(kāi)發(fā)的規(guī)范性和效率,并可實(shí)現(xiàn)專(zhuān)家系統(tǒng)對(duì)各種實(shí)時(shí)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn),為專(zhuān)家系統(tǒng)與各種過(guò)程控制平臺(tái)的結(jié)合提供可能,提高專(zhuān)家系統(tǒng)的實(shí)用性。
為了實(shí)現(xiàn)以上的目的,本發(fā)明的技術(shù)方案如下:
pyke可以把python程序調(diào)制成難以計(jì)數(shù)的各種形態(tài),充分發(fā)揮領(lǐng)域特定語(yǔ)言(domainspecificlanguage,dsl)的優(yōu)勢(shì),在實(shí)質(zhì)內(nèi)容上強(qiáng)化了程序的適用性。通過(guò)pyke的編譯,可以提高dsl的性能。pyke在增強(qiáng)程序適用性的同時(shí),以其代碼重用的優(yōu)勢(shì),將程序開(kāi)發(fā)速度與應(yīng)用領(lǐng)域范圍整整提升了一個(gè)數(shù)量級(jí)。pyke使用sqlgen實(shí)時(shí)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),同時(shí)它還提供了多個(gè)知識(shí)庫(kù)和推理機(jī)。
本發(fā)明由于采用了上述的技術(shù)手段,具有這樣的技術(shù)效果,即(1)本發(fā)明所述系統(tǒng)通過(guò)將pyke編譯生成靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的方式作為推理機(jī)。推理規(guī)則包括正向推理規(guī)則和反向推理規(guī)則。正向推理規(guī)則采用的是if-then語(yǔ)句,pyke查看.krb文件中的哪個(gè)規(guī)則的if子句與已知事實(shí)相匹配,規(guī)則匹配成功后開(kāi)始啟用它,然后將其then子句中的事實(shí)加入到已知事實(shí)的列表中。pyke的then子句與下一個(gè)規(guī)則的if子句相鏈接,此推理過(guò)程持續(xù)到?jīng)]有規(guī)則可供使用,推理的順序是按照.krb文件中的規(guī)則的順序來(lái)進(jìn)行的。推理機(jī)使得用戶(hù)只需在該平臺(tái)下根據(jù)自己的需求增加、修改規(guī)則文件、編輯源文件,就可以迅速搭建起符合要求的專(zhuān)家系統(tǒng)框架,從而實(shí)現(xiàn)硬件的軟件化。由此節(jié)約了大量的時(shí)間和精力。(2)pyke對(duì)python函數(shù)“調(diào)制”,根據(jù)需求做出相應(yīng)的設(shè)置,具體的調(diào)制方法是將參數(shù)設(shè)置為常數(shù)。從而為專(zhuān)家系統(tǒng)與各種過(guò)程控制平臺(tái)的結(jié)合提供了可能,使得開(kāi)發(fā)出的系統(tǒng)可以及時(shí)對(duì)過(guò)程控制平臺(tái)所采集到的各硬件設(shè)備的實(shí)時(shí)數(shù)據(jù)進(jìn)行推理,使得硬件設(shè)備發(fā)生異常時(shí),可以及時(shí)發(fā)出警報(bào)或者調(diào)整控制參數(shù),從而實(shí)現(xiàn)了對(duì)生產(chǎn)線(xiàn)的閉環(huán)控制;(3)pyke把一種邏輯編程方式集成進(jìn)python,它具有的基本功能包括:1.數(shù)據(jù)驅(qū)動(dòng)的正向推理和目標(biāo)驅(qū)動(dòng)的反向推理;2.把python多個(gè)函數(shù)匯集起來(lái),自動(dòng)生成“調(diào)用順序圖”。支持的對(duì)象包括多個(gè)事實(shí)庫(kù)、正向推理規(guī)則和反向推理規(guī)則、多個(gè)規(guī)則庫(kù)、繼生的規(guī)則庫(kù)和推理規(guī)則被編譯成python函數(shù),這極大的增強(qiáng)了規(guī)則的表達(dá)能力,也增強(qiáng)了系統(tǒng)對(duì)平臺(tái)的適應(yīng)性。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果如下:
本發(fā)明提供的軟件模擬系統(tǒng),可以通過(guò)簡(jiǎn)單的邏輯編程實(shí)現(xiàn)對(duì)大部分工業(yè)管控系統(tǒng)的模擬培訓(xùn)。用簡(jiǎn)單的邏輯語(yǔ)言及推理機(jī)制,將硬件設(shè)備用軟件系統(tǒng)取代,不僅節(jié)省了成本,減小了工人操作不當(dāng)所導(dǎo)致的錯(cuò)誤,還提高了工作效率。
附圖說(shuō)明
下面結(jié)合附圖與具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明:
附圖1為利用本發(fā)明所述專(zhuān)家系統(tǒng)開(kāi)發(fā)實(shí)現(xiàn)的軟件邏輯模擬系統(tǒng)的示意圖。
具體實(shí)施方式
本發(fā)明所述專(zhuān)家系統(tǒng)提供有知識(shí)庫(kù)文件.kfb/.kqb/.krb,用于實(shí)現(xiàn)專(zhuān)家系統(tǒng)的功能。pyke把你的知識(shí)庫(kù)文件編譯成python文件,編譯操作要用到pyke/krb_compiler/compiler.krb,最后生成的文件是compiler_bc.py,重新編譯文件compiler_bc.py,在pyke根目錄進(jìn)行以下操作:
$mkdirpyke/krb_compiler/compiled_krb
$python
>>>frompykeimportkrb_compiler
>>>krn_compiler.compiled_krb(‘compiler’,’pyke.krb_compiler.compiled_krb’,
...’pyke/krb_compiler/compiled_krb’,
...’pyke/krb_compiler/compiler.krb’)
[‘compiler_bc.py’]
$mvpyke/krb_compiler/compiled_krb/compiler_bc.pypyke/krb_compiler
用戶(hù)利用其實(shí)現(xiàn)具體的功能時(shí),只需在通過(guò)本發(fā)明所述的系統(tǒng)中,根據(jù)自己的需要對(duì)規(guī)則文件進(jìn)行一定的編輯、增加或修改就可以了。
本發(fā)明所述的系統(tǒng)還提供數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)庫(kù),pyke里面的sqlgen模塊用于專(zhuān)家系統(tǒng)對(duì)sqlite3數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn),從而為專(zhuān)家系統(tǒng)與各種過(guò)程控制平臺(tái)的結(jié)合提供了可能,使得開(kāi)發(fā)出的專(zhuān)家系統(tǒng)可以及時(shí)對(duì)過(guò)程平臺(tái)所采集到的各硬件設(shè)備的實(shí)時(shí)數(shù)據(jù)進(jìn)行推理分析,以及時(shí)知道當(dāng)前的各硬件設(shè)備的工作狀態(tài)是否正常,當(dāng)發(fā)現(xiàn)某硬件設(shè)備處于非正常狀態(tài)時(shí),就可以立即根據(jù)預(yù)先的規(guī)則調(diào)整相關(guān)的參數(shù),或者及時(shí)發(fā)出警報(bào)。
為了使用戶(hù)能夠利用本發(fā)明所述的專(zhuān)家系統(tǒng)的平臺(tái)基礎(chǔ)上迅速搭建出適合自己使用的專(zhuān)家系統(tǒng)框架,本發(fā)明還提供有多個(gè)專(zhuān)家系統(tǒng)模塊,提供有多個(gè)專(zhuān)家系統(tǒng)模塊,至少用于為專(zhuān)家系統(tǒng)提供事實(shí)、規(guī)則、模塊、全局變量、與sqlite3進(jìn)行數(shù)據(jù)交換等實(shí)現(xiàn)框架,因此這些專(zhuān)家系統(tǒng)模塊為專(zhuān)家系統(tǒng)的開(kāi)發(fā)提供了規(guī)范和標(biāo)準(zhǔn),從而使得用戶(hù)只需在該平臺(tái)下增加、修改規(guī)則文件、添加訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的python代碼、或者編輯源文件,就可以快速實(shí)現(xiàn)適合不同硬件平臺(tái)的專(zhuān)家系統(tǒng),而無(wú)需費(fèi)時(shí)費(fèi)力去操作相關(guān)的硬件設(shè)備。在一個(gè)實(shí)施例中,所述專(zhuān)家系統(tǒng)模板都是通過(guò)文本文件來(lái)實(shí)現(xiàn)的,通過(guò)具體的程序(例如python程序)可將專(zhuān)家系統(tǒng)模板文件寫(xiě)入計(jì)算機(jī)內(nèi)存中,并可使用各種模式(包括文字模式、元組模式)匹配所述模板文件中需要替換的內(nèi)容,再將替換好的內(nèi)容寫(xiě)回文件。
參考前面的例子可知,在一個(gè)實(shí)施例中,為了使得用戶(hù)可根據(jù)自己的需要對(duì)這些模板進(jìn)行修改,在上述專(zhuān)家系統(tǒng)中,可以將模式匹配功能用作“占位符”,此占位符可以是python程序里的任意參數(shù),將替換好的內(nèi)容寫(xiě)回文件,就可實(shí)現(xiàn)用戶(hù)多模板的修改。當(dāng)使用本發(fā)明所述的專(zhuān)家系統(tǒng)時(shí),用戶(hù)可以根據(jù)自己的目標(biāo)需求以輸入一些信息。
如附圖所示,為利用本發(fā)明所述專(zhuān)家系統(tǒng)所實(shí)現(xiàn)的一個(gè)專(zhuān)家系統(tǒng)框架結(jié)構(gòu)示意圖,從該附圖中可以看出本發(fā)明所述平臺(tái)所實(shí)現(xiàn)的專(zhuān)家系統(tǒng)功能由pyke推理機(jī)、規(guī)則文件、python專(zhuān)家系統(tǒng)程序以及可能的用戶(hù)接口組成,其中專(zhuān)家系統(tǒng)程序用于加載規(guī)則文件、獲取數(shù)據(jù)庫(kù)的數(shù)據(jù),調(diào)用推理機(jī)進(jìn)行推理并將推理結(jié)果返回給用戶(hù)或者數(shù)據(jù)庫(kù)。
由于專(zhuān)家系統(tǒng)程序和過(guò)程控制軟件都是用python開(kāi)發(fā),并且通過(guò)數(shù)據(jù)庫(kù)間接進(jìn)行數(shù)據(jù)傳遞,因此過(guò)程控制和專(zhuān)家系統(tǒng)功能既可以獨(dú)立運(yùn)行也可以集成在一起。當(dāng)專(zhuān)家系統(tǒng)與過(guò)程控制相結(jié)合,則可以實(shí)現(xiàn)閉環(huán)控制。
下面對(duì)所述專(zhuān)家系統(tǒng)各部分的實(shí)現(xiàn)及功能進(jìn)行進(jìn)一步描述:
(1)推理機(jī):包括正向推理規(guī)則和反向推理規(guī)則,正向推理規(guī)則可以斷言新的事實(shí),可以激活更多的規(guī)則,反向推理規(guī)則能匯集python函數(shù),形成具體的“方案圖”程序。
(2)規(guī)則文件:由于不同的專(zhuān)家系統(tǒng)需要不同的規(guī)則,實(shí)際中規(guī)則文件往往不止一個(gè),因此利用本發(fā)明所述平臺(tái)所提供的一些規(guī)則文件的模板和接口供用戶(hù)使用。
(3)數(shù)據(jù)庫(kù)訪(fǎng)問(wèn):pyke專(zhuān)家系統(tǒng)通過(guò)自帶的sqlgen模塊訪(fǎng)問(wèn)sqlite3數(shù)據(jù)庫(kù),方便數(shù)據(jù)的存取。
例如工業(yè)環(huán)境下具有大量的模型,這些模型有很多關(guān)鍵指標(biāo),為了提高專(zhuān)家系統(tǒng)的正確性,規(guī)則文件中凡是牽涉到可能變化的數(shù)據(jù)都不會(huì)固定,而是以參數(shù)的形式存在。這些參數(shù)值在系統(tǒng)運(yùn)行時(shí)由專(zhuān)家系統(tǒng)程序從數(shù)據(jù)庫(kù)獲得。