王 征,張運波,劉 洋,欒 鑫
(1.長春工程學(xué)院工程訓(xùn)練中心;2.電氣與信息工程學(xué)院,長春130012)
隨著當(dāng)今工業(yè)化大生產(chǎn)時代的發(fā)展,可編程自動化控制器(PAC)得到了更加廣泛的應(yīng)用。它具有控制功能強、可靠性高、使用靈活方便、易于擴展等一系列優(yōu)點,尤其是現(xiàn)代的可編程自動化控制器,其功能已經(jīng)大大超過了邏輯控制的范圍,還包括運動控制、閉環(huán)過程控制、數(shù)據(jù)處理等[1]。它不僅可以取代傳統(tǒng)的繼電—接觸器控制系統(tǒng),還可以進行復(fù)雜的生產(chǎn)過程控制。本文以GE-FANUC公司的RX3i系列PAC為平臺,運用其支持C語言程序開發(fā)的特點,介紹了一種閉環(huán)模糊控制算法。
本模糊控制算法的設(shè)計是將閉環(huán)模糊智能控制程序置于定時中斷響應(yīng)程序之中,而將與開光量控制相關(guān)的程序以及中斷設(shè)置等初始化信息置于中斷服務(wù)程序之外的主程序中,由此形成的智能控制算法主程序框架結(jié)構(gòu)如圖1所示。在程序設(shè)計中使用的間隔定時器是采用RX3i的延時斷開定時器OFDT。系統(tǒng)啟動后間隔定時器開始計時,當(dāng)?shù)竭_采樣周期時,中斷主程序,并開始執(zhí)行中斷響應(yīng)程序。與此同時,定時器OFDT的當(dāng)前值再次返回到設(shè)定值狀態(tài)開始計時。程序通過重復(fù)上述過程,實現(xiàn)按照采樣周期進行數(shù)據(jù)的采集和處理。
圖1 主程序框架結(jié)構(gòu)圖
當(dāng)主程序進入中斷響應(yīng)周期后,系統(tǒng)會調(diào)用RX3i的模糊控制程序,如圖2所示。其工作過程分為3個階段,即輸入采樣、模糊控制和輸出刷新3個階段。其各階段實現(xiàn)的功能是:
(1)輸入采樣階段:在輸入采樣階段,RX3i以中斷方式依次地讀入所有輸入狀態(tài)和數(shù)據(jù),并將它們存入I/O映象區(qū)中相應(yīng)的單元內(nèi),驚醒A/D轉(zhuǎn)換。輸入采樣結(jié)束后,轉(zhuǎn)入用戶程序執(zhí)行和輸出刷新階段。
(2)模糊控制階段:RX3iCPU將A/D轉(zhuǎn)換后的采樣數(shù)據(jù)按模糊控制算法依次完成濾波、偏差與偏差變化率的運算、查表和控制量計算,并根據(jù)邏輯運算的結(jié)果刷新輸出線圈在I/O映象區(qū)中對應(yīng)位的狀態(tài)。
(3)輸出刷新階段:RX3i通過模擬輸出模塊按照I/O映象區(qū)內(nèi)對應(yīng)的狀態(tài)將存儲數(shù)據(jù)完成D/A轉(zhuǎn)換,并刷新所有的輸出鎖存電路,再經(jīng)輸出電路驅(qū)動相應(yīng)的外設(shè),完成閉環(huán)模糊智能控制的功能。
圖2 RX3i模糊控制程序中斷周期示意圖
完成上述3個階段稱作一個中斷響應(yīng)周期。在整個程序運行期間,RX3i的CPU以一定的掃描速度重復(fù)執(zhí)行上述3個階段。
GE-FANUC公司的RX3i控制器是創(chuàng)新的可編程自動化控制器,它是中、高端過程和離散控制應(yīng)用的新一代控制器,其主要特點是具有單一的控制引擎和通用的編程環(huán)境,提供應(yīng)用程序在多種硬件平臺上的可移植性和真正的各種控制選擇的交叉滲透。
RX3iCPU采用Intel 300MHz的處理器,運算能力大大增強。支持多種通用的模擬量(每個通道可以配置電壓、電流、熱電偶、電阻式溫度監(jiān)測器、應(yīng)力計和電阻器等)。具有32K模擬輸入/輸出和最高達5兆字節(jié)的數(shù)據(jù)存儲[2]。RX3i的10兆字節(jié)全部可配置用戶存儲器,足夠在CPU中存儲并運行所有的程序機器文件。尤其值得關(guān)注的是RX3i CPU能夠支持多種語言編程,不僅支持傳統(tǒng)的梯形圖語言和指令表語言,而且還支持高級語言C語言編程[3]。這使得RX3i可以利用C語言進行較復(fù)雜算法的智能控制編程操作,使開發(fā)程序的編寫更加靈活方便,開發(fā)過程得以簡化,有效提高了運行的質(zhì)量。
RX3i模糊控制程序的算法主要包括數(shù)據(jù)采集及A/D轉(zhuǎn)換、數(shù)字濾波以及偏差與偏差變化率的運算、查表和控制量的計算等部分組成。下面我們依次地加以介紹。
在控制系統(tǒng)中,經(jīng)傳感器和變送器輸出的標(biāo)準(zhǔn)信號首先要直接與RX3i的模擬量輸入模塊的A/D轉(zhuǎn)換器相連接。RX3i的每個輸入通道的A/D轉(zhuǎn)換器可接受的輸入范圍為-10~+10V電壓。通過輸入跳線,單獨的通道同樣可以用于4~20mA的電流輸入。此時,模擬量輸入模塊按比例對輸入數(shù)據(jù)進行A/D轉(zhuǎn)換,-10V對應(yīng)于-32 000,+10V對應(yīng)于+32 000,如圖3所示。每位的分辨率是5 mV或者20mA,對于4~20mA的電流輸入可對應(yīng)于1~5V的電壓輸入進行轉(zhuǎn)化。最后將輸入的電流或電壓轉(zhuǎn)變成內(nèi)在的數(shù)字量,數(shù)字?jǐn)?shù)據(jù)以16位的二進制數(shù)形式存儲在RX3i的CPU中[4]。
圖3 A/D轉(zhuǎn)換縮放比例圖
由于原始信號在傳送和轉(zhuǎn)換的過程中可能會產(chǎn)生噪聲和接收干擾,這不僅會降低整個控制系統(tǒng)的精度和可靠性,甚至?xí)蜎]真實信號,所以除了在硬件上采取必要的措施之外,軟件上也要通過數(shù)字濾波消除這些無用信號的影響。本算法采用平均值濾波作為實現(xiàn)數(shù)字濾波的方法。它的軟件設(shè)計方法為:
(1)在RX3i中建立若干個數(shù)據(jù)存儲區(qū),本算法中按n個數(shù)據(jù)量進行平均值濾波;
(2)建立一種類似于隊列的特殊線性表數(shù)組數(shù)據(jù)結(jié)構(gòu)。它只允許在隊列的前端進行刪除操作,而在隊列的后端進行插入操作。它遵循FIFO原則,即先入先出原則。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭[5]。
(3)每當(dāng)程序執(zhí)行中斷處理程序時(即一個采樣周期),從A/D轉(zhuǎn)換后的數(shù)字?jǐn)?shù)據(jù)依次被放進選取的數(shù)據(jù)存儲區(qū)里,新輸入的數(shù)據(jù)放到數(shù)據(jù)區(qū)的第一個位置,此前的數(shù)據(jù)依次向前傳送,然后數(shù)據(jù)區(qū)的末尾位置上的數(shù)據(jù)自動溢出。
(4)在控制系統(tǒng)程序設(shè)計中,通過比較對A/D轉(zhuǎn)換后的數(shù)據(jù)進行限幅濾波。若某次測量受到干擾,使數(shù)據(jù)明顯超出正常范圍就應(yīng)該將此剔除,取而代之一個估計的合理值。
(5)對存儲單元內(nèi)的n個數(shù)據(jù)求平均值,并把其結(jié)果作為本采樣周期的采樣值,即參與偏差運算的采樣值等于當(dāng)前采樣周期的采樣值與前N-1個采樣周期的采樣值進行平均值運算得到的,這樣可以大大減小因硬件采樣產(chǎn)生的誤差[6]。
為了進行模糊控制表查表運算,必須計算偏差和偏差變化率。偏差等于給定值與測量值之差,用e(k)表示,對于偏差變化率的計算,它等于當(dāng)前數(shù)據(jù)偏差e(k)與上個中斷響應(yīng)周期的偏差e(k-1)的差值。在RX3i中由于CPU支持C語言程序的編程運算,可以在RX3i的CPU內(nèi)存中定義整型變量E和EC,因此對于偏差和偏差變化率的計算可以采用直接求取差值的方式,并把所得結(jié)果分別賦值給變量E和EC。即E=e[k],EC=e[k]-e[k-1]。所得的結(jié)構(gòu)存儲于RX3i的內(nèi)部存儲區(qū)中[7]。
智能控制算法中的查表程序是在離線情況下制作模糊規(guī)則表,然后將其存入RX3i的存儲單元中,系統(tǒng)運行后算法通過在線查表的方式求出控制量的值。下面是查表控制算法的程序設(shè)計過程。
(1)通過離線計算取得一個靜態(tài)的模糊控制表,將其控制表存放到RX3i的內(nèi)存中。
(2)設(shè)計一個二維的FUZZY控制器,其輸入為偏差和偏差變化率。以偏差變化率ec為行變量,偏差e為列變量建立模糊規(guī)則表,如表1所示。模糊控制表有13行13列,共計169個元素組成。
(3)由于偏差e、偏差變化率ec和控制量u經(jīng)量化后的整數(shù)論域為[-6,6],為了便于查表和減少程序計算量,通過轉(zhuǎn)換論域函數(shù)Trans(domain)將論域[-6,6]轉(zhuǎn)化為正論域[0,+12],即e=[0,+12],ec=[0,+12],u=[0,+12]。
表1 模糊規(guī)則表
(4)定義數(shù)組Fuzzytable[]作為模糊控制表元素的存儲區(qū)域。將模糊控制表中內(nèi)部元素以行為基準(zhǔn),按照如表1所示順序依次進行編號。其中Fuzzytable[0]、Fuzzytable[1]……Fuzzytable[12]對應(yīng)模糊控制表的第1行,依次類推,每行存有13個元素。設(shè)模糊控制表中的存儲單元編號為M,由表中可以看出,M 與e和ec之間存在如下規(guī)律:M=e+13ec。因此,經(jīng)量化得到的e和ec通過上式求出存儲單元編號M,利用數(shù)組Fuzzytable[M]即可查詢出模糊控制表中相應(yīng)單元中存儲的數(shù)據(jù)內(nèi)容,從而實現(xiàn)了查表的功能。
為了實現(xiàn)閉環(huán)智能控制器的輸出控制,需要獲得RX3i的輸出控制量U。其控制功能的實現(xiàn)按下述步驟完成:
首先,將經(jīng)模糊控制表查表得出的數(shù)據(jù)乘以比例因子Ku,得到控制量的增量Δu。其次,將增量Δu加上事先設(shè)置好的固定量C(穩(wěn)態(tài)量)得到控制量U。因此,模糊控制表查表所得數(shù)據(jù)與控制量之間的關(guān)系如式(1)所示。
最后,將計算得到的控制量U存儲到指定的存儲單元中,并將控制量的值傳送到RX3i控制器的模擬量輸出模塊的輸出通道中,完成D/A轉(zhuǎn)換。此時,RX3i的輸出端子將模擬量形式的控制量傳輸給執(zhí)行機構(gòu),實現(xiàn)閉環(huán)過程控制系統(tǒng)的功能。
應(yīng)用FANUC RX3iPAC平臺實現(xiàn)模糊控制算法的便利之處就在于其支持C語言開發(fā)的靈活性和可擴展性。由于C語言可跨平臺通用,因此對于程序的開發(fā)與移植都帶來很大的方便。算法的具體描述如下:
該模糊控制算法以FANUC RX3i硬件平臺為基礎(chǔ),通過數(shù)據(jù)采集、A/D轉(zhuǎn)換和數(shù)字濾波等環(huán)節(jié),將采樣的數(shù)據(jù)信息進行偏差與偏差變化率運算,并查詢模糊規(guī)則表,最終得到輸出控制量。算法尤其以C語言為編程主體語言,程序設(shè)計靈活方便,易于擴展,并且可移植性和通用性較強,在工業(yè)控制領(lǐng)域具有廣闊的應(yīng)用前景。
[1]Fan Xingzhe,Cheng Ning,Zhang Naiyao.Two Fuzzy Cascade Control Schemes of a Triple Inverted Pendulum[A].Institute of Electrical and Electronics Engineers Inc.Proceedings of the 3th World Congress on Intelligent Control and Automation:Vol3[C].Hefei China Sponsor:IEEE.2000:1721-1726.
[2]李澄非.計算智能方法研究及其在流程工業(yè)中應(yīng)用[D].北京:北京化工大學(xué),2007.17-18.
[3]龍迎春.基于PLC的模糊控制器的設(shè)計[J].微計算機信息,2006,22(10):21-23.
[4]齊蓉,林輝.通用模糊控制器在PLC上的實現(xiàn) [J].工業(yè)儀表與自動化裝置2003(4):23-25.
[5]楊啟文.計算知能及其工程應(yīng)用[D].杭州:浙江大學(xué),2001.25-30.