模糊神經(jīng)網(wǎng)絡(luò)是模糊邏輯控制和神經(jīng)網(wǎng)絡(luò)兩者結(jié)合的產(chǎn)物。這兩者單獨(dú)使用時存在一定缺陷。模糊邏輯在一定的論域上具有很好的收斂性,并具有模糊量運(yùn)算優(yōu)勢;而神經(jīng)網(wǎng)絡(luò)具有強(qiáng)自學(xué)習(xí)、自適應(yīng)、并行運(yùn)算和精確計算的能力。因此,這兩者相結(jié)合可大大提高綜合能力。
plc在工業(yè)控制中應(yīng)用廣泛,因此,功能強(qiáng)大,使用方便。因此,將模糊神經(jīng)網(wǎng)絡(luò)算法應(yīng)用于plc中具有實(shí)際應(yīng)用價值,使plc在機(jī)械、民用等領(lǐng)域廣泛應(yīng)用。這里提出一種基于plc的模糊神經(jīng)網(wǎng)絡(luò)算法實(shí)現(xiàn)方法。
1、模糊神經(jīng)網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)
模糊神經(jīng)網(wǎng)絡(luò)具有很多種結(jié)構(gòu)和算法,對于不同控制對象,綜合考慮運(yùn)算速度和精度,模糊神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)也有所不同。由于該實(shí)現(xiàn)方法沒有實(shí)際控制對象,為了說明在plc上能實(shí)現(xiàn)模糊神經(jīng)網(wǎng)絡(luò)算法,故選擇模糊神經(jīng)網(wǎng)絡(luò),如圖1所示。假設(shè)其中輸入兩個變量x1、x2,輸出變量為y。將每個輸入因子分為:nm,ns,zo,ps,pm等5個模糊狀態(tài)。
2、模糊神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)步驟
選擇在線學(xué)習(xí),在線學(xué)習(xí)期間學(xué)習(xí)速度不變。在線學(xué)習(xí)終止條件是性能指標(biāo)e小于等于某一數(shù)值。這個指標(biāo)值隨控制對象的改變而改變的。當(dāng)確定控制對象時,該指標(biāo)值可根據(jù)經(jīng)驗(yàn)確定。但是為了便于說明問題這里設(shè)置該指標(biāo)值為0.002。具體學(xué)習(xí)步驟是:①θji、σji、ωi及η的初始值在[0,1]之間隨機(jī)選取,η的值為恒定值,根據(jù)經(jīng)驗(yàn)決定。②根據(jù)模糊神經(jīng)算法計算出比較理想的θji(k+1)、σji(k+1)、ωi(k+1)值。③根據(jù)模糊神經(jīng)算法計算e,若e≤0.002,迭代結(jié)束。否則,令θji(k+1)、σji(k+1)、ωi(k+1)為初始值并返回②。
3、模糊神經(jīng)網(wǎng)絡(luò)算法在plc的應(yīng)用
3.1模糊神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)階段的實(shí)現(xiàn)
在學(xué)習(xí)階段實(shí)現(xiàn)過程中,利用上位機(jī)向下位機(jī)傳輸樣本數(shù)據(jù),具體運(yùn)算過程是由下位機(jī)實(shí)現(xiàn)。
3.1.1學(xué)習(xí)階段上位機(jī)程序?qū)崿F(xiàn)
根據(jù)模糊神經(jīng)網(wǎng)絡(luò)理論知識可知,樣本值是根據(jù)實(shí)際控制對象的需要而定的。為了說明問題,采用含有兩個輸入值和一個輸出期望值的較為簡單的樣本值。學(xué)習(xí)過程中上位機(jī)程序設(shè)計流程如圖2所示,具體過程如下:
(1)初始化初始化樣本值和為后續(xù)傳輸樣本值做準(zhǔn)備,通過plc指令把樣本值寫入plc的儲存地址,再次賦值給發(fā)送區(qū)的數(shù)據(jù)區(qū),并把存儲第一個樣本值地址分別賦給vd712,vd716,vd720地址指針,這樣可為再次發(fā)送樣本值做準(zhǔn)備。因?yàn)橐l(fā)送的樣本值是不斷變化的,但是發(fā)送區(qū)不能變化,故使用地址指針達(dá)到兩者同步。
(2)接受請求接收下位機(jī)向上位機(jī)傳送的數(shù)據(jù),該數(shù)據(jù)是告之上位機(jī)是否向下位機(jī)傳送樣本值。
(3)判斷vb703數(shù)據(jù)請求標(biāo)志位vb703,對所接收的數(shù)據(jù),判斷其值是否等于16#ff。而16#ff是通信協(xié)議中規(guī)定上位機(jī)給下位機(jī)傳送數(shù)據(jù)的標(biāo)志。如果等于16#ff,則向下位機(jī)傳輸數(shù)據(jù);否則就再次返回上一步。
(4)發(fā)送數(shù)據(jù)通過上位機(jī)通信程序向下位機(jī)發(fā)送樣本值,發(fā)送完后就結(jié)束第一次傳送樣本值,啟動新接收,等待下位機(jī)請求數(shù)據(jù)傳送信號。
3.1.2下位機(jī)程序?qū)崿F(xiàn)
圖3為下位機(jī)程序流程,從中可以看到學(xué)習(xí)階段下位機(jī)程序的基本構(gòu)想。
針對下位機(jī)程序流程這里需要說明的是:
(1)初始化首先隨機(jī)選取[0,1]內(nèi)θji、σji、ωi及η的初始值,通過plc指令把這些值賦給存儲單元;其次對學(xué)習(xí)過程中用到的常數(shù)賦值,同樣賦給存儲單元;最后,要把請求數(shù)據(jù)傳送的標(biāo)志位vb703置位。
(2)初始值計算由于初始化中請求數(shù)據(jù)傳送,首先通過下位機(jī)的通信程序取得數(shù)據(jù),并且接收樣本數(shù)據(jù)后.復(fù)位vb703,告知上位機(jī)不再傳送數(shù)據(jù)。接著利用初始化已賦值的第一組權(quán)值,計算第一組樣本值為輸入時輸出值、輸出值與期望輸出值的差值以及后續(xù)計算所要用到的數(shù)據(jù)。
(3)權(quán)值、e(性能指標(biāo))值計算在第上一步的基礎(chǔ)上計算權(quán)值和e值。具體算法可參考模糊神經(jīng)網(wǎng)絡(luò)算法.且易于在plc平臺上實(shí)現(xiàn)。
(4)e值判斷把計算的e值與0.002相比較。如果e≤0.002,說明計算的函數(shù)變量、權(quán)值已達(dá)到預(yù)期目標(biāo),學(xué)習(xí)過程結(jié)束。結(jié)束的同時觸發(fā)外接設(shè)備的開關(guān)量,利用外接設(shè)備讀取這些計算結(jié)果。相反,則需繼續(xù)學(xué)習(xí)過程。并將不滿足性能指標(biāo)第3步計算出的函數(shù)變量、權(quán)值賦給下一步重新計算y值所需的地址內(nèi),把請求數(shù)據(jù)標(biāo)志位vb703置位.并向上位機(jī)發(fā)送,從而為新y值的計算做好準(zhǔn)備。
(5)學(xué)習(xí)過程中y值計算由于已把請求數(shù)據(jù)標(biāo)志位置位,因此,首先通過通信程序先取樣本,取完樣本值后復(fù)位vb703,告知上位機(jī)不再傳樣本值,接著計算新的y值,以便計算新的函數(shù)變量、權(quán)值以及e值。學(xué)習(xí)過程下位機(jī)主程序?qū)崿F(xiàn)如圖4所示。
3.2模糊神經(jīng)網(wǎng)絡(luò)現(xiàn)場工作過程實(shí)現(xiàn)
當(dāng)學(xué)習(xí)階段結(jié)束后,通過現(xiàn)場采集數(shù)據(jù),建立數(shù)據(jù)庫并把采集的數(shù)據(jù)當(dāng)做輸人,運(yùn)用訓(xùn)練好的權(quán)值和模糊神經(jīng)網(wǎng)絡(luò)算法,得到控制對象所需的控制值。要實(shí)現(xiàn)以上工作步驟。仍然需要上下位機(jī)合作,故而程序設(shè)計分為上位機(jī)和下位機(jī)兩部分。
3.2.1上位機(jī)程序?qū)崿F(xiàn)
現(xiàn)場工作中上位機(jī)程序設(shè)計功能與學(xué)習(xí)階段相一致,主要區(qū)別;在學(xué)習(xí)階段初始化的和需要給下位機(jī)傳送的樣本值變成了通過外接設(shè)備現(xiàn)場采集到的數(shù)值。在plc程序的初始化中,把采集值從外接設(shè)備的地址中賦值到發(fā)送區(qū)的數(shù)據(jù)區(qū)。因?yàn)椴杉凳窃谝欢ǖ闹芷趦?nèi)變化的,所以是實(shí)時的。故無需地址指針使兩者工作同步。
3.2.2下位機(jī)程序?qū)崿F(xiàn)
由圖5現(xiàn)場工作過程中下位機(jī)程序流程可知.下位機(jī)在現(xiàn)場工作過程中的具體步驟:
(1)初始化下位機(jī)初始化首先要把學(xué)習(xí)過程訓(xùn)練好的θji、σji、η的值,通過plc指令把其賦給存儲單元;其次要對后續(xù)y值計算過程中用到的常數(shù)賦值,同樣也要賦給存儲單元;最后,要把請求數(shù)據(jù)傳送的標(biāo)志位vb703置位。并發(fā)送給上位機(jī)。
(2)接收采集值 首先接收上位機(jī)的采集值,接著把采集的值賦給即將進(jìn)行y值運(yùn)算的儲存地址。同時將請求數(shù)據(jù)傳輸標(biāo)志位vb703復(fù)位,并傳送給上位機(jī),要求停止繼續(xù)向下位機(jī)傳輸采集值。
(3)輸出y值計算利用上一步提供的采集數(shù)據(jù)、初始化步驟中的權(quán)值和模糊神經(jīng)網(wǎng)絡(luò)算法,以plc為平臺進(jìn)行計算,將計算所得值賦給外接輸出設(shè)備的存儲地址.同時根據(jù)現(xiàn)場情況控制請求數(shù)據(jù)接收標(biāo)志位vb703是否置位。
(4)vb703判斷若vb703=16#ff,那么啟動新的數(shù)據(jù)接收,即跳轉(zhuǎn)到第二步。如果vb703≠16#ff,則跳轉(zhuǎn)到結(jié)束。但要知道的是這兩種結(jié)果是工作人員根據(jù)現(xiàn)場情況在第3步中已確定的?,F(xiàn)場工作過程中下位機(jī)主程序?qū)崿F(xiàn)如圖6所示。
4、結(jié)論
通過對模糊神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程和現(xiàn)場工作過程的plc程序的仿真,結(jié)果表明:學(xué)習(xí)過程的plc程序,利用模糊神經(jīng)網(wǎng)絡(luò)自學(xué)習(xí)能力,當(dāng)不滿足性能指標(biāo)時,系統(tǒng)則根據(jù)梯度下降策略自動的調(diào)整權(quán)值、隸屬函數(shù)的和,直到輸出滿足要求為止。現(xiàn)場工作過程plc程序,在采集值確定情況下.能夠得出確定的輸出值,達(dá)到預(yù)期效果。