基于PLC的模糊神經(jīng)網(wǎng)絡(luò)算法實(shí)現(xiàn)方法
(5)學(xué)習(xí)過程中Y值計(jì)算由于已把請求數(shù)據(jù)標(biāo)志位置位,因此,首先通過通信程序先取樣本,取完樣本值后復(fù)位VB703,告知上位機(jī)不再傳樣本值,接著計(jì)算新的Y值,以便計(jì)算新的函數(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ī)和下位機(jī)兩部分。
3.2.1上位機(jī)程序?qū)崿F(xiàn)
現(xiàn)場工作中上位機(jī)程序設(shè)計(jì)功能與學(xué)習(xí)階段相一致,主要區(qū)別;在學(xué)習(xí)階段初始化的和需要給下位機(jī)傳送的樣本值變成了通過外接設(shè)備現(xiàn)場采集到的數(shù)值。在PLC程序的初始化中,把采集值從外接設(shè)備的地址中賦值到發(fā)送區(qū)的數(shù)據(jù)區(qū)。(http://www.diangon.com/版權(quán)所有)因?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值計(jì)算過程中用到的常數(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值計(jì)算利用上一步提供的采集數(shù)據(jù)、初始化步驟中的權(quán)值和模糊神經(jīng)網(wǎng)絡(luò)算法,以PLC為平臺進(jìn)行計(jì)算,將計(jì)算所得值賦給外接輸出設(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步中已確定的。現(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ù)期效果。
評論