NLX230型模糊控制器及其嵌入式應(yīng)用研究
1 引言
在自動(dòng)控制領(lǐng)域,模糊控制理論及其應(yīng)用的研究取得了很大的進(jìn)展,美國(guó)neuralogix公司推出的nlx230型單片模糊控制器是一種可編程的超大規(guī)模集成模糊邏輯微處理器fmc(fuzzy
micro controller),根據(jù)模糊邏輯原理對(duì)輸入條件進(jìn)行模糊邏輯運(yùn)算,得到最優(yōu)的動(dòng)作,通過執(zhí)行并行操作控制輸出,其處理速度高達(dá)30m規(guī)則/秒,具有與計(jì)算機(jī)的接口電路、與外接eeprom的接口電路和晶體振蕩器接口電路,可廣泛應(yīng)用于過程嵌入式控制、模式匹配,人工智能,機(jī)器人及專家系統(tǒng)。
2 nlx230的設(shè)計(jì)特點(diǎn)與工作原理
模糊邏輯在控制領(lǐng)域的應(yīng)用原理是利用模糊邏輯器件通過"項(xiàng)"和"規(guī)則"去構(gòu)造任意復(fù)雜的線性和非線性函數(shù),再根據(jù)輸入狀態(tài)經(jīng)過模糊推理,找到最佳的輸出動(dòng)作值并應(yīng)用于控制過程,從而使模糊邏輯獲得類似于人類專家似然推理的能力。
nlx230基于條件用模糊邏輯規(guī)則計(jì)算出優(yōu)化的輸出操作。輸入值在用戶定義的隸屬函數(shù)中按適合的程度排序。為了實(shí)施有效的數(shù)字化,采用1個(gè)線性對(duì)稱隸屬函數(shù)或最簡(jiǎn)單的最大/最小模糊參考方法,規(guī)則決定了在輸入時(shí)所需的狀態(tài)集,每一規(guī)則至多包含16個(gè)項(xiàng),每1個(gè)項(xiàng)與1個(gè)"清晰"輸入/模糊隸屬函數(shù)配對(duì)。1個(gè)當(dāng)前值是對(duì)用戶在某一規(guī)則下的輸出值合計(jì)的修改。對(duì)于所有的輸入和輸出,輸入排序與規(guī)則處理是并行的。單片式24位寬的規(guī)則存儲(chǔ)器最多可存64個(gè)規(guī)則,所有輸入都可共享這些規(guī)則。根據(jù)需要每個(gè)輸出可以被編程為最多用64個(gè)規(guī)則,任一個(gè)輸出所用的規(guī)則個(gè)數(shù)是其他規(guī)則所用的規(guī)則的剩余數(shù)。模糊邏輯原理的高效數(shù)字化實(shí)現(xiàn)使nlx230在低價(jià)格下獲得高處理速度(30m規(guī)則/秒)。
2.1 距離測(cè)量的相似判決原理
nlx230型單片模糊集成控制器利用模糊邏輯元件將輸入與隸屬度函數(shù)結(jié)合起來(lái),確定輸入對(duì)于被選定的隸屬函數(shù)中心值的距離,通過距離測(cè)量進(jìn)行相似決策。由于最佳隸屬函數(shù)的形狀與系統(tǒng)中傳感器特性、控制響應(yīng)及其他動(dòng)態(tài)特性有關(guān),因而確定最佳隸屬函數(shù)形狀往往是很困難的(當(dāng)然,在某些情況下可以根據(jù)經(jīng)驗(yàn)確定)。nlx230型單片模糊控制器在設(shè)計(jì)上采取了一種新的方法,不依賴隸屬函數(shù)的形狀和確值輸入與隸屬函數(shù)的交點(diǎn),而且測(cè)算出輸入與選定的隸屬函數(shù)的中心點(diǎn)的距離,其原理如圖1所示。不考慮隸屬函數(shù)的區(qū)間和輸入的單調(diào),而測(cè)量輸出與中間位置的距離,距離用中心位置減去輸入,忽略符號(hào)。確值輸入xa離中心點(diǎn)越遠(yuǎn),其隸屬值越低,反之,其隸屬值越高。當(dāng)確值輸入xa正好位于中心點(diǎn)位置時(shí),則隸屬值最大。
有二種不同類型的隸屬函數(shù),對(duì)于第一種隸屬函數(shù),確值輸入離中心點(diǎn)愈近,隸屬值愈大,如果確值輸入落入隸屬函數(shù)的寬度范圍之外,那么隸屬值最小。對(duì)于第二隸屬函數(shù),當(dāng)確值輸入落入隸屬函數(shù)的寬度范圍之內(nèi)時(shí)隸屬值最小。距離測(cè)量的優(yōu)點(diǎn)有二:其一是使設(shè)計(jì)者在保留重要信息的同時(shí)不必決定復(fù)雜隸屬函數(shù)的形狀;其二是這種方法提供了相似判決的簡(jiǎn)單途徑。
2.2 確值輸入向模糊邏輯量的轉(zhuǎn)換
確值輸入向模糊邏輯量的轉(zhuǎn)換是通過測(cè)量距離的相似判決模糊邏輯單元實(shí)現(xiàn)的,在相似判決模糊邏輯單元內(nèi)求取隸屬值的電路結(jié)構(gòu)如圖2所示。模糊邏輯單元內(nèi)被選定的隸屬函數(shù)中心點(diǎn)值和確值輸入送進(jìn)減法器計(jì)算出差值ac,該差值與隸屬函數(shù)寬度值相比較,只有當(dāng)差值在寬度范圍內(nèi)時(shí),隸屬值計(jì)算器才輸出結(jié)果(該結(jié)果等于從允許的最大隸屬值中減去差值ac,如圖1所示),否則,隸屬值計(jì)算器輸出將被置零或置最小值。隸屬值實(shí)際上是1個(gè)模糊邏輯量,用μ(或d)表示。
3 nlx230的內(nèi)部結(jié)構(gòu)和引腳功能
nlx230型模糊控制器的內(nèi)部結(jié)構(gòu)如圖3所示,它由模糊輸入選擇器,16個(gè)模糊單元、最小和最大比較器、規(guī)則寄存器、輸出寄存器和定時(shí)控制等部分組成,完成模糊推理運(yùn)算并作出控制決策。
3.1 模糊輸入選擇器和模糊單元
8選1多路選擇器控制n lx230中16個(gè)模糊單元的每個(gè)單元的輸入。模糊單元求取輸入量對(duì)用戶所定義的隸屬函數(shù)的隸屬度。每個(gè)模糊單元從8個(gè)外部輸入中任選1個(gè)作為輸入數(shù)據(jù)(1個(gè)模糊單元只能訪問1個(gè)輸入數(shù)據(jù))。把模糊單元組態(tài)構(gòu)成輸出反饋到輸入的形式,可不處理外部輸入。把一個(gè)輸入同1個(gè)隸屬函數(shù)聯(lián)系起來(lái)構(gòu)成1個(gè)項(xiàng),nlx230最多可支持16個(gè)項(xiàng)。每個(gè)模糊單元的結(jié)構(gòu)如圖2所示,含有1個(gè)16位的項(xiàng)寄存器,包括8位的中心值、5位的寬度值及3位的輸入選擇組態(tài)(完成對(duì)8個(gè)外部輸入中任1個(gè)輸入的選擇)。每個(gè)模糊單元計(jì)算輸入值與用戶定義的中心點(diǎn)的距離,完成輸入確值量到模糊邏輯量的轉(zhuǎn)換。這樣,每1個(gè)模糊單元與1個(gè)8位中心位置相聯(lián),計(jì)算出距離后,其結(jié)果與用戶定義的寬度相比較,5位的寬度值代表輸入離中心位置的最遠(yuǎn)距離,如果輸入的距離小于或等于此寬度,那么輸入被認(rèn)為是隸屬函數(shù)的一部分,距離的求補(bǔ)得到隸屬函數(shù)度。求補(bǔ)就是30減去距離(30是最大寬度,)輸入離中心越近,隸屬值越高,落在寬度內(nèi)的隸屬值被傳到最小比較器來(lái)進(jìn)行規(guī)則處理。
當(dāng)輸入等于中心值時(shí),模糊單元輸出最大值31;當(dāng)輸入落在寬度范圍以外時(shí),模糊輸出值為0,表示完全沒有關(guān)系。
3.2 最小值比較器和最大值比較器
nlx230的最小值比較器是由高流通量的神經(jīng)元網(wǎng)路執(zhí)行的,以適合高速的數(shù)據(jù)量。64條規(guī)則分別存儲(chǔ)在64個(gè)規(guī)則寄存器中,每個(gè)規(guī)則寄存器字有24位,其前16位分別用來(lái)完成每個(gè)模糊單元的輸出對(duì)最小比較器的使能。每個(gè)規(guī)則位固定對(duì)應(yīng)1個(gè)模糊單元。當(dāng)1個(gè)規(guī)則位被置1,則此規(guī)則包含該項(xiàng),相應(yīng)的模糊單元輸出可與其他置1的規(guī)則位相比較以找出最小項(xiàng)。
某個(gè)規(guī)則的最小項(xiàng)一旦被找到,就儲(chǔ)存在nlx230最大值比較器的暫存寄存器中,對(duì)應(yīng)被處理的每一規(guī)則經(jīng)處理所得最小項(xiàng)與暫存于最大值寄存器中的值進(jìn)行比較,去小存大;當(dāng)處理完所有規(guī)則,最大值寄存器中的結(jié)果是所有最小項(xiàng)中的最大值,該值對(duì)應(yīng)的規(guī)則為取勝規(guī)則,代表1個(gè)"模糊"邏輯各結(jié)果的和。取勝規(guī)則的當(dāng)前值(動(dòng)作值)送到模糊量與確值量的轉(zhuǎn)換單元(輸出寄存器),經(jīng)轉(zhuǎn)換處理后進(jìn)行模糊控制。
當(dāng)前值定義在每個(gè)規(guī)則寄存器字的8個(gè)保留位,代表輸出動(dòng)作值所需的修正量,動(dòng)作修正值是1個(gè)8位二進(jìn)制補(bǔ)碼值為-128~127。從規(guī)則寄存器字來(lái)的8位動(dòng)作修正值與用戶定義的初值相加。例如,初始值為100,動(dòng)作修正值為-5,則輸出為95。
3.3 規(guī)則寄存器和輸出寄存器
規(guī)則寄存器用于存放控制規(guī)則,nlx230最多可存放64條規(guī)則。輸出寄存器為總線使能方式,只要處理了所有的規(guī)則,規(guī)則寄存器的8位補(bǔ)碼修正值與初始值之和,飽和算數(shù)運(yùn)算使輸出位取模128(當(dāng)前值使輸出高于或低于界限-128和127),輸出即由模糊量轉(zhuǎn)換為確值量,模糊控制器在輸入下一組數(shù)據(jù)的同時(shí)輸出結(jié)果數(shù)據(jù)。
3.4 nlx230的引腳功能
nlx230采用40引腳雙列直插式封裝,如圖4所示。rst是系統(tǒng)復(fù)位腳,低電平有效。di0-di7是8位數(shù)據(jù)輸入口。vss是地。sk是串行時(shí)鐘腳,用于將組態(tài)數(shù)據(jù)打入fmc(m/s=0時(shí),該腳輸出)。cs是片選,與m/s和r/w聯(lián)用使能串行數(shù)據(jù)輸入/輸出(m/s=1時(shí)輸出,m/s=0時(shí)輸入)。di是串行數(shù)據(jù)輸入腳。do是串行數(shù)據(jù)輸出腳。m/s是主/從模式選擇(m/s=1時(shí)為主動(dòng)模式;m/s=0時(shí)為伺服模式)。r/w是讀/寫輸入腳,僅用于伺服模式(r=1為讀;w=0為寫)。nc是空腳,必須接地。xi為晶體振蕩器輸入腳。xo為晶體振蕩器輸出腳。clk是緩沖系統(tǒng)時(shí)鐘輸出腳。stb是選通腳,與ma0-ma2聯(lián)用以選通輸入/輸出數(shù)據(jù)。ma2是輸入/輸出多路傳輸?shù)刂?輸出腳。ma1是輸入/輸出多路傳輸?shù)刂肺?輸出腳。ma0是輸入/輸出多路傳輸?shù)刂肺?輸出腳。do7-do0為數(shù)據(jù)輸出腳。vdd是+5v電源腳。
4 nlx230模糊控制器的工作模式
nlx230模糊控制器的工作模式有模糊單元模式、輸入模式、輸出模式及輸入輸出擴(kuò)展應(yīng)用。
4.1 模糊單元模式
在模糊單元模式下有二種方式,典型應(yīng)用為模糊單元的輸出表示每一個(gè)輸入接近中心位置的程度;另一種方式是將nlx230組態(tài)成為不包含模糊單元,通過使用不包含模糊單元的工作方式可用輸入與中心位置的距離來(lái)加權(quán)規(guī)則項(xiàng)。
4.2 輸入模式
nlx230的輸入即可以是來(lái)自8個(gè)分時(shí)多路輸入引腳的信號(hào)又可以是輸出的內(nèi)部反饋信號(hào),二種輸入模式通過輸入組態(tài)寄存器選擇。
4.3 輸出模式
nlx230的每個(gè)輸出可以配置為立即輸出和累加輸出二種組態(tài)。在立即輸出模式中,由取勝規(guī)則(該規(guī)則帶有最大的最小項(xiàng))所特指的動(dòng)作值加上初始值。對(duì)nlx230的工作周期,原始的初始值都被用來(lái)計(jì)算輸出。在累加輸出模式中,1個(gè)輸出的新值是加了新動(dòng)作值(此動(dòng)作值由獲勝規(guī)則所決定)的現(xiàn)在值。在這個(gè)模式中,新輸入值被保留作為初始我用于下1個(gè)輸出值的計(jì)算。用戶定義的原始初始值僅在復(fù)位后計(jì)算第一個(gè)輸出值時(shí)被使用。
4.4 擴(kuò)展
多個(gè)nlx230級(jí)聯(lián)使用能夠擴(kuò)展輸入、輸出、模糊單元和規(guī)則的數(shù)目。
4.5 時(shí)鐘
1個(gè)外部時(shí)鐘源從xi引腳輸入可直接驅(qū)動(dòng)nlx230。nlx230也包含了1個(gè)有源振蕩器電路用于時(shí)鐘的發(fā)生。clk提供了所需的時(shí)鐘輸出。
5 nlx230的操作方式
nlx230的操作模式通過初始化完成。復(fù)位引腳m/s可設(shè)置2種不同結(jié)構(gòu)的操作方式:主動(dòng)方式(nlx230自動(dòng)從外部eeprom中讀取數(shù)據(jù))和從動(dòng)方式(nlx230等待外部邏輯電路讀寫數(shù)據(jù))。
5.1 主動(dòng)方式
主動(dòng)方式是在復(fù)位引腳由"1"變?yōu)?0"和m/s為"1"時(shí)使nlx230開始1個(gè)自動(dòng)卸載周期。nlx230通過時(shí)鐘sk的發(fā)生、片選使能和地址(do)的發(fā)生來(lái)尋址2048位的串行eeprom。nlx230輸出串行時(shí)鐘(sk)并維持片選(cs),接著出現(xiàn)"讀標(biāo)志",7位地址在do輸出引腳出現(xiàn),nlx230立即開始在di引腳輸入16位數(shù)據(jù),該過程持續(xù)進(jìn)行到nlx230已經(jīng)輸入128個(gè)數(shù)據(jù)字(16×28=2048),之后片選失效。這個(gè)組態(tài)周期的下1個(gè)工作是由nlx230處理出現(xiàn)在輸入引腳(di0-di7)上的數(shù)據(jù)。
5.2 從動(dòng)(伺服)方式
m/s為"0"時(shí),nlx230處于從動(dòng)(伺服)模式,由外部控制邏輯提供sk、cs、r/w等信號(hào)。在sk上升沿之前,維持r/w為低電平和cs為高電平以觸發(fā)卸載過程。然后,在sk的上升沿由di引腳輸入數(shù)據(jù)。所有數(shù)據(jù)位(2048)順序?qū)懭牒?,cs變?yōu)榈碗娖?;在sk的上升沿之前,保持r/w和cs信號(hào)為高電平以觸發(fā)加載過程。然后,在sk的上升沿由do引腳輸出數(shù)據(jù)。所有數(shù)據(jù)位(2048)被順序讀出后,cs變?yōu)榈碗娖?。在串行卸載或加載周期之后,需要一個(gè)復(fù)位信號(hào)(保持為低電平)以清除內(nèi)部數(shù)據(jù)通道。
6 應(yīng)用接口
6.1 nlx230接口功能
nlx230有8個(gè)時(shí)分多路復(fù)用輸入腳和8個(gè)多路復(fù)用輸出腳。內(nèi)部連接輸出到輸入可以得到反饋路徑、外部晶體振蕩器或pc電路;輸入和輸出計(jì)數(shù)的1個(gè)時(shí)鐘輸出;為使外部數(shù)據(jù)輸入信號(hào)同步的1個(gè)幀信號(hào);串行eeprom接口由數(shù)據(jù)輸入(di)、片選(cs)、時(shí)鐘(sk)和讀寫(r/w)引腳組成。當(dāng)nlx230與微機(jī)接口時(shí),只需di、cs、do、sk和r/w引腳即可。
6.2 數(shù)據(jù)接口電路
nlx230與微處理器(或單片機(jī))接口只需5個(gè)引腳信號(hào):di、cs、do、sk、r/w。圖5所示為典型的控制系統(tǒng)數(shù)據(jù)接口,74373作為輸入/輸出數(shù)據(jù)鎖存器,其個(gè)數(shù)與輸入/輸出個(gè)數(shù)相同。nlx230用于典型的輸入/輸出為8個(gè)8位數(shù)值的多路復(fù)用控制系統(tǒng)。mux地址腳ma(2:0)、選通腳stb及動(dòng)態(tài)輸入或輸出通道的譯碼由nlx230提供。nlx230提供所有必要的信號(hào),由典型幀時(shí)序圖可顯示時(shí)間關(guān)系。輸入值從di(7:0)輸入的同時(shí)輸出也在do(7:0)進(jìn)行。
7 應(yīng)用實(shí)例
應(yīng)用實(shí)例是玩具電動(dòng)汽車自動(dòng)駕駛控制系統(tǒng)。根據(jù)輸入由nlx230提供決策輸出,由控制規(guī)則控制不同路面環(huán)境下的速度與方向。nlx230的開發(fā)系統(tǒng)ads230由軟、硬件二部分組成,主要功能是將應(yīng)用系統(tǒng)的控制規(guī)則寫成控制規(guī)則文件,并轉(zhuǎn)換為有關(guān)寄存器的內(nèi)容寫入nlx230的規(guī)則寄存器。
7.1 標(biāo)號(hào)定義
df:前方;dr:右方;dl:左方;ve:速度;ro:路面;di:方向;ft:油門;br:剎車;le:左;ei:右;st:直;df-cl:接近前方;df-fa:遠(yuǎn)離前方;dr-fa:遠(yuǎn)離右方;dl-fa:遠(yuǎn)離左方;ve-sl:低速;ve-me:中速;ve-fa:高速;ra-we:路面滑;ro-me:路面適度;th-sl:抵擋;th-me:中擋;th-fa:高擋;br-of:不剎車;al-a:提示躲避;al-v:提示速度;si-r:右信號(hào);si-l:左信號(hào);br-lt:關(guān)油門;sp-i:速度變高;ac:累加;im:立即;yes:是;no:不是;is:是;in:包含;ex:不包含;then:則;and:并且;lb:反饋。
輸入/輸出定義如表1所示。項(xiàng)的定義如表2所示。
7.2 規(guī)則定義
8 結(jié)束語(yǔ)
在模糊控制方面,nlx230型模糊控制器與單片機(jī)相比,具有推理速度快、功能強(qiáng)大、應(yīng)用靈活和控制效果好等特點(diǎn),因此,可廣泛應(yīng)用于過程嵌入式控制、模式匹配、人工智能、機(jī)器人及專家系統(tǒng)。
評(píng)論