基于S7-200 PLC的模糊神經(jīng)網(wǎng)絡算法設計
針對下位機程序流程這里需要說明的是:
(1)初始化首先隨機選取[0,1]內θji、σji、ωi及η的初始值,通過PLC指令把這些值賦給存儲單元;其次對學習過程中用到的常數(shù)賦值,同樣賦給存儲單元;最后,要把請求數(shù)據(jù)傳送的標志位VB703置位。
(2)初始值計算由于初始化中請求數(shù)據(jù)傳送,首先通過下位機的通信程序取得數(shù)據(jù),并且接收樣本數(shù)據(jù)后.復位VB703,告知上位機不再傳送數(shù)據(jù)。接著利用初始化已賦值的第一組權值,計算第一組樣本值為輸入時輸出值、輸出值與期望輸出值的差值以及后續(xù)計算所要用到的數(shù)據(jù)。
(3)權值、E(性能指標)值計算在第上一步的基礎上計算權值和E值。具體算法可參考模糊神經(jīng)網(wǎng)絡算法.且易于在PLC平臺上實現(xiàn)。
(4)E值判斷把計算的E值與0.002相比較。如果E≤0.002,說明計算的函數(shù)變量、權值已達到預期目標,學習過程結束。結束的同時觸發(fā)外接設備的開關量,利用外接設備讀取這些計算結果。相反,則需繼續(xù)學習過程。并將不滿足性能指標第3步計算出的函數(shù)變量、權值賦給下一步重新計算y值所需的地址內,把請求數(shù)據(jù)標志位VB703置位.并向上位機發(fā)送,從而為新y值的計算做好準備。
(5)學習過程中Y值計算由于已把請求數(shù)據(jù)標志位置位,因此,首先通過通信程序先取樣本,取完樣本值后復位VB703,告知上位機不再傳樣本值,接著計算新的Y值,以便計算新的函數(shù)變量、權值以及E值。學習過程下位機主程序實現(xiàn)如圖4所示。
4.2 模糊神經(jīng)網(wǎng)絡現(xiàn)場工作過程實現(xiàn)
當學習階段結束后,通過現(xiàn)場采集數(shù)據(jù),建立數(shù)據(jù)庫并把采集的數(shù)據(jù)當做輸人,運用訓練好的權值和模糊神經(jīng)網(wǎng)絡算法,得到控制對象所需的控制值。要實現(xiàn)以上工作步驟。仍然需要上下位機合作,故而程序設計分為上位機和下位機兩部分。
4.2.1上位機程序實現(xiàn)
現(xiàn)場工作中上位機程序設計功能與學習階段相一致,主要區(qū)別;在學習階段初始化的和需要給下位機傳送的樣本值變成了通過外接設備現(xiàn)場采集到的數(shù)值。在PLC程序的初始化中,把采集值從外接設備的地址中賦值到發(fā)送區(qū)的數(shù)據(jù)區(qū)。因為采集值是在一定的周期內變化的,所以是實時的。故無需地址指針使兩者工作同步。
4.2.2 下位機程序實現(xiàn)
由圖5現(xiàn)場工作過程中下位機程序流程可知.下位機在現(xiàn)場工作過程中的具體步驟:
(1)初始化下位機初始化首先要把學習過程訓練好的θji、σji、η的值,通過PLc指令把其賦給存儲單元;其次要對后續(xù)Y值計算過程中用到的常數(shù)賦值,同樣也要賦給存儲單元;最后,要把請求數(shù)據(jù)傳送的標志位VB703置位。并發(fā)送給上位機。
(2)接收采集值 首先接收上位機的采集值,接著把采集的值賦給即將進行Y值運算的儲存地址。同時將請求數(shù)據(jù)傳輸標志位VB703復位,并傳送給上位機,要求停止繼續(xù)向下位機傳輸采集值。
(3)輸出y值計算利用上一步提供的采集數(shù)據(jù)、初始化步驟中的權值和模糊神經(jīng)網(wǎng)絡算法,以PLC為平臺進行計算,將計算所得值賦給外接輸出設備的存儲地址.同時根據(jù)現(xiàn)場情況控制請求數(shù)據(jù)接收標志位VB703是否置位。
(4)VB703判斷若VB703=16#FF,那么啟動新的數(shù)據(jù)接收,即跳轉到第二步。如果VB703≠16#FF,則跳轉到結束。但要知道的是這兩種結果是工作人員根據(jù)現(xiàn)場情況在第3步中已確定的?,F(xiàn)場工作過程中下位機主程序實現(xiàn)如圖6所示。
5 結論
通過對模糊神經(jīng)網(wǎng)絡學習過程和現(xiàn)場工作過程的PLC程序的仿真,結果表明:學習過程的PLC程序,利用模糊神經(jīng)網(wǎng)絡自學習能力,當不滿足性能指標時,系統(tǒng)則根據(jù)梯度下降策略自動的調整權值、隸屬函數(shù)的和,直到輸出滿足要求為止。現(xiàn)場工作過程PLC程序,在采集值確定情況下.能夠得出確定的輸出值,達到預期效果。
評論