版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微型計(jì)算機(jī)控制系統(tǒng)應(yīng)用軟件01常用控制程序設(shè)計(jì)微型計(jì)算機(jī)控制系統(tǒng)軟件概述02微型計(jì)算機(jī)控制系統(tǒng)軟件概述常用控制程序設(shè)計(jì)微型計(jì)算機(jī)控制系統(tǒng)軟件概述微型計(jì)算機(jī)控制系統(tǒng)軟件主要包括系統(tǒng)軟件與應(yīng)用軟件。系統(tǒng)軟件是指操作系統(tǒng)(DOS,Windows)。它提供了程序運(yùn)行的環(huán)境(不同的操作系統(tǒng)下有不同的人機(jī)界面),以及各種設(shè)計(jì)語(yǔ)言、算法庫(kù)、工具軟件。一般這些軟件由專(zhuān)業(yè)廠商以產(chǎn)品形式向用戶(hù)提供。應(yīng)用軟件是用戶(hù)為完成特定的任務(wù)而編寫(xiě)的各種程序的總稱(chēng)。一般需要應(yīng)用單位根據(jù)不同的控制對(duì)象和不同的控制任務(wù)組織專(zhuān)門(mén)人員進(jìn)行編寫(xiě)??刂茖?duì)象的差異性使對(duì)應(yīng)用軟件的要求也有很大的差別。一般在工業(yè)控制系統(tǒng)中,針對(duì)每個(gè)控制對(duì)象,為完成相應(yīng)的控制任務(wù),都要求配置相應(yīng)的專(zhuān)門(mén)控制程序,才能使整個(gè)系統(tǒng)實(shí)現(xiàn)預(yù)定的功能。在進(jìn)行軟件設(shè)計(jì)時(shí),首先要考慮采用何種語(yǔ)言進(jìn)行編程,是用匯編語(yǔ)言、C語(yǔ)言還是VisualBASIC等;盡管用匯編語(yǔ)言設(shè)計(jì)的程序執(zhí)行速度最快,程序代碼最短,但由于匯編語(yǔ)言是低級(jí)語(yǔ)言,使用匯編語(yǔ)言編程是一件很麻煩的事情,尤其是進(jìn)行數(shù)值運(yùn)算或結(jié)果演示時(shí)更為復(fù)雜。因此,只有對(duì)程序執(zhí)行的時(shí)間要求十分苛刻時(shí),才考慮使用匯編語(yǔ)言。一般情況,開(kāi)發(fā)人員都使用結(jié)構(gòu)化較強(qiáng)的C語(yǔ)言作為開(kāi)發(fā)工具。對(duì)于涉及微機(jī)硬件接口技術(shù)的應(yīng)用系統(tǒng)的開(kāi)發(fā),普遍認(rèn)為C語(yǔ)言與匯編語(yǔ)言的混合編程是最佳的軟件設(shè)計(jì)方法。本章主要涉及一些常用應(yīng)用程序,因此只介紹使用C語(yǔ)言進(jìn)行設(shè)計(jì)。為了使敘述的方法具有通用性,討論中不涉及具體系統(tǒng)。本章還結(jié)合流程圖,給出了一些源程序代碼,以便于初學(xué)者自學(xué)?;竟δ軕?yīng)用軟件隨應(yīng)用領(lǐng)域的不同而不同。目前,在計(jì)算機(jī)控制系統(tǒng)中,應(yīng)用軟件除控制生產(chǎn)過(guò)程之外,還對(duì)生產(chǎn)過(guò)程實(shí)現(xiàn)管理。主要功能如下:(1)控制程序控制程序主要實(shí)現(xiàn)對(duì)系統(tǒng)的調(diào)節(jié)和控制,它根據(jù)各種各樣的控制算法和千差萬(wàn)別的被控對(duì)象的具體情況來(lái)編寫(xiě),控制程序的主要目標(biāo)是滿(mǎn)足系統(tǒng)的性能指標(biāo)。常用的有數(shù)字式PID調(diào)節(jié)控制程序、最優(yōu)控制算法程序、順序控制及插補(bǔ)運(yùn)算程序等。(2)數(shù)據(jù)采集及處理程序它主要包括數(shù)據(jù)可靠性檢查程序,用來(lái)檢查是可靠輸入數(shù)據(jù)還是故障數(shù)據(jù);A/D轉(zhuǎn)換及采樣程序;數(shù)字濾波程序,用來(lái)濾除干擾造成的錯(cuò)誤數(shù)據(jù)或不宜使用的數(shù)據(jù);線性化處理程序,對(duì)檢測(cè)元件或變送器的非線性用軟件補(bǔ)償。(3)巡回檢測(cè)程序除包括數(shù)據(jù)采集程序之外,還包括越限報(bào)警程序,用于在生產(chǎn)中某些量超過(guò)限定值時(shí)報(bào)警;事故預(yù)報(bào)程序,生產(chǎn)中某些量不容許超過(guò)限定值,從這些量的變化趨勢(shì)來(lái)看若有可能超過(guò)限定值,則發(fā)出事故預(yù)報(bào)信號(hào);畫(huà)出顯示程序,用圖、表在CRT上形象地反映生產(chǎn)狀況。(4)數(shù)據(jù)管理程序這部分程序用于生產(chǎn)管理部分,主要包括統(tǒng)計(jì)報(bào)表程序,按生產(chǎn)管理部門(mén)要求地格式打印各種報(bào)表;產(chǎn)品銷(xiāo)售、生產(chǎn)調(diào)度及庫(kù)存管理程序;產(chǎn)值利潤(rùn)預(yù)測(cè)程序等。應(yīng)用程序設(shè)計(jì)步驟應(yīng)用程序設(shè)計(jì)通常分為五個(gè)步驟:?jiǎn)栴}定義、程序設(shè)計(jì)、編碼、調(diào)試、維護(hù)和再設(shè)計(jì)等。問(wèn)題的定義是確定控制任務(wù)對(duì)微型機(jī)控制系統(tǒng)的要求,它包括定義輸入和輸出、處理要求、系統(tǒng)具體指標(biāo)(如執(zhí)行時(shí)間、精度、響應(yīng)時(shí)間等)以及出錯(cuò)處理方法等.程序設(shè)計(jì)是指把所定義的問(wèn)題用程序的方式對(duì)控制任務(wù)進(jìn)行描述。這一步要用到流程圖和模塊程序、自頂向下設(shè)計(jì)、結(jié)構(gòu)程序等程序設(shè)計(jì)技術(shù).手編程序是把設(shè)計(jì)框圖變成計(jì)算機(jī)能接受的指令。實(shí)時(shí)控制中通常采用C語(yǔ)言編寫(xiě)源代碼。查錯(cuò)也稱(chēng)程序驗(yàn)證,它用來(lái)發(fā)現(xiàn)編程中的錯(cuò)誤。在查錯(cuò)階段可以利用諸如查錯(cuò)程序、斷點(diǎn)、跟蹤、模擬程序,邏輯分析器以及聯(lián)機(jī)仿真器等手段。應(yīng)用程序設(shè)計(jì)步驟測(cè)試也稱(chēng)程序正確性確認(rèn),通過(guò)測(cè)試保證程序正確完成要求的任務(wù)。在測(cè)試這一步要注意選擇正確的測(cè)試數(shù)據(jù)和測(cè)試方法。文件編制用流程圖、注釋、存儲(chǔ)器分配說(shuō)明等方法來(lái)描述程序并形成文件,以便于用戶(hù)和操作人員了解。維護(hù)和再設(shè)計(jì)是對(duì)程序進(jìn)行維護(hù)、改進(jìn)和擴(kuò)充,以解決現(xiàn)場(chǎng)設(shè)備發(fā)生的問(wèn)題,有時(shí)還要有特殊的診斷手段(或程序)及維護(hù)手段,有時(shí)為滿(mǎn)足新的要求和處理任務(wù),可能需要改進(jìn)或擴(kuò)充程序。應(yīng)用程序設(shè)計(jì)的每一步往往是相互影響的。問(wèn)題定義時(shí),必須考慮到測(cè)試方案、形成文件的標(biāo)準(zhǔn)和程序的可擴(kuò)展性。設(shè)計(jì)者往往同時(shí)在幾個(gè)步驟上進(jìn)行設(shè)計(jì),如手編程序、查錯(cuò)、文件編制可能同時(shí)進(jìn)行。顯然,應(yīng)用程序設(shè)計(jì)所涉及的內(nèi)容相當(dāng)廣泛,這里只能介紹一些基本的概念。程序設(shè)計(jì)方法
程序設(shè)計(jì)方法是指程序設(shè)計(jì)的某種規(guī)程和準(zhǔn)則。通常有模塊化程序、自頂向下程序設(shè)計(jì)、結(jié)構(gòu)化程序設(shè)計(jì)等幾種方法。1.模塊化程序設(shè)計(jì)模塊化程序設(shè)計(jì)是把一個(gè)較長(zhǎng)的完整程序分成若干個(gè)小的程序或模塊,在分別進(jìn)行獨(dú)立設(shè)計(jì)、編程、測(cè)試和查錯(cuò)之后,最終裝配在一起,聯(lián)結(jié)成一個(gè)大的程序。程序模塊通常是按功能劃分的。在計(jì)算機(jī)控制系統(tǒng)程序設(shè)計(jì)中,這種劃分方法特別有用。模塊化程序設(shè)計(jì)技術(shù)有一些明顯的優(yōu)點(diǎn)。單個(gè)模塊要比一個(gè)完整程序更易編寫(xiě)、查錯(cuò)和測(cè)試,并能為其它程序重復(fù)使用。模塊化程序設(shè)計(jì)的缺點(diǎn)是在把模塊裝配成一個(gè)大程序時(shí),要對(duì)各模塊進(jìn)行連接,以完成模塊之間的信息傳送,此外,為進(jìn)行模塊測(cè)試和程序測(cè)試,還要編寫(xiě)測(cè)試模塊程序用的測(cè)試程序。使用模塊化程序設(shè)計(jì)所占用的內(nèi)存容量也較多。如果很難把程序模塊化,或者有較多的特殊情況需要處理,或者使用了大量變量(每個(gè)也都需要待別處理),則說(shuō)明問(wèn)題定義得不好。為此,需要重新定義任務(wù)。
程序設(shè)計(jì)方法2.自頂向下程序設(shè)計(jì)自頂向下程序設(shè)計(jì)是在程序設(shè)計(jì)時(shí),先從系統(tǒng)一級(jí)的管理程序(或者主程序)開(kāi)始設(shè)計(jì),從屬的程序或者子程序用一些程序標(biāo)志來(lái)代替。當(dāng)系統(tǒng)一級(jí)的程序編好后,再將各標(biāo)志擴(kuò)展成從屬程序或子程序,最后完成整個(gè)系統(tǒng)的程序設(shè)計(jì)。這種程序設(shè)計(jì)過(guò)程大致有以下幾步:(1)寫(xiě)出管理程序并進(jìn)行測(cè)試。尚未確定的子程序用程序標(biāo)志來(lái)代替,但必須在特定的測(cè)試條件下產(chǎn)生與原定的程序相同的結(jié)果;(2)對(duì)每一個(gè)程序標(biāo)志進(jìn)行程序設(shè)計(jì),使它成為實(shí)際的工作程序。這個(gè)過(guò)程是與測(cè)試和查錯(cuò)同時(shí)進(jìn)行的;(3)對(duì)最后的整個(gè)程序進(jìn)行測(cè)試。自頂向下設(shè)計(jì)的優(yōu)點(diǎn)是設(shè)計(jì)、測(cè)試相連結(jié)同時(shí)按一個(gè)線索進(jìn)行,矛盾和問(wèn)題可以較早發(fā)現(xiàn)和解決。而且,測(cè)試能夠完全按真實(shí)的系統(tǒng)環(huán)境來(lái)進(jìn)行,不需要依賴(lài)于測(cè)試程序。它是將程序設(shè)計(jì)、手編程序和測(cè)試這幾步結(jié)合在一起的一種設(shè)計(jì)方法。自頂向下設(shè)計(jì)的缺點(diǎn)主要是上一級(jí)的錯(cuò)誤將對(duì)整個(gè)程序產(chǎn)生嚴(yán)重的影響,一處修改有可能牽動(dòng)全局,引起對(duì)整個(gè)程序進(jìn)行全面修改。另外,總的設(shè)計(jì)可能同系統(tǒng)硬件不能很好配合,不一定能充分利用現(xiàn)成軟件。自頂向下設(shè)計(jì)比較習(xí)慣于人們?nèi)粘5乃季S,而且研制應(yīng)用程序的幾個(gè)步驟可以同時(shí)結(jié)合進(jìn)行,因而能提高研制效率。
程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)的方法給程序設(shè)計(jì)施加了一定的約束,它限制采用規(guī)定的結(jié)構(gòu)類(lèi)型和操作順序。因此,能夠編寫(xiě)出操作順序分明、便于查錯(cuò)和糾正錯(cuò)誤的程序。這些方法指出,任何程序邏輯都可用順序、條件和循環(huán)三種結(jié)構(gòu)來(lái)表示。(1)順序結(jié)構(gòu)順序結(jié)構(gòu)的流程圖如圖7-2所示。在這種結(jié)構(gòu)中,計(jì)算機(jī)按順序先執(zhí)行P1,然后執(zhí)行P2,最后執(zhí)行P3。其中P1、P2、P3可以是一條指令,但也可以是一段程序。程序設(shè)計(jì)方法(2)條件結(jié)構(gòu)條件結(jié)構(gòu)流程圖如圖7-3所示,當(dāng)條件滿(mǎn)足時(shí),計(jì)算機(jī)執(zhí)行P1,否則執(zhí)行P2。在這種結(jié)構(gòu)中,P1和P2都只有一個(gè)入口和一個(gè)出口。(3)循環(huán)結(jié)構(gòu)常見(jiàn)的循環(huán)結(jié)構(gòu)有兩種,如圖7-4所示。在圖7-4a所示的循環(huán)結(jié)構(gòu)中,計(jì)算機(jī)先執(zhí)行循環(huán)操作P,然后判斷條件是否滿(mǎn)足,若條件滿(mǎn)足,程序繼續(xù)循環(huán),若條件不滿(mǎn)足,則停止循環(huán)。而圖7-4b所示的循環(huán)結(jié)構(gòu)中,計(jì)算機(jī)先執(zhí)行條件判斷語(yǔ)句,只有在條件滿(mǎn)足的情況下才能循環(huán)操作P。
程序設(shè)計(jì)方法利用上述幾種基本結(jié)構(gòu),可以構(gòu)成任何功能的程序。結(jié)構(gòu)化程序設(shè)計(jì)的優(yōu)點(diǎn)是:
由于每個(gè)結(jié)構(gòu)只有一個(gè)入口和一個(gè)出口,故程序的執(zhí)行順序易于跟蹤,給程序查錯(cuò)和調(diào)試帶來(lái)很大的方便。
由于基本結(jié)構(gòu)是限定的,故易于裝配成模塊。
易于用程序框圖來(lái)描述。
程序設(shè)計(jì)語(yǔ)言選擇計(jì)算機(jī)控制系統(tǒng)的應(yīng)用程序設(shè)計(jì),可以采用機(jī)器語(yǔ)言、匯編語(yǔ)言或一些高級(jí)語(yǔ)言(如:BASIC、FORTRAN、PASCAL、C以及C++)。工業(yè)控制計(jì)算機(jī)自身的技術(shù)進(jìn)步和計(jì)算機(jī)高級(jí)語(yǔ)言功能的擴(kuò)展使得這樣的設(shè)計(jì)與開(kāi)發(fā)方法得以實(shí)現(xiàn)。首先,工業(yè)控制計(jì)算機(jī)的基本系統(tǒng)與廣泛使用著的個(gè)人計(jì)算機(jī)基本上是兼容的;其次,各種高級(jí)語(yǔ)言也都具備了輸入輸出口的操作語(yǔ)句,并具備了對(duì)內(nèi)存的直接存取功能。這樣,應(yīng)用程序中許多需要對(duì)輸入輸出口的操作就可以用高級(jí)語(yǔ)言的相應(yīng)語(yǔ)句來(lái)編寫(xiě)。在各種高級(jí)語(yǔ)言中,應(yīng)選擇結(jié)構(gòu)化的語(yǔ)言,例如PASCAL、C等,而非結(jié)構(gòu)化的語(yǔ)言,例如BASIC、FORTRAN等,不能寫(xiě)出結(jié)構(gòu)化強(qiáng)、模塊清晰的程序,不適合于編制控制系統(tǒng)的應(yīng)用程序。一些高級(jí)語(yǔ)言已經(jīng)具備調(diào)用匯編語(yǔ)言子程序的功能,這樣就可以用匯編語(yǔ)言編制那些要求執(zhí)行速度快的過(guò)程。一般是將匯編語(yǔ)言子程序作為一個(gè)外部過(guò)程來(lái)由高級(jí)語(yǔ)言調(diào)用,實(shí)現(xiàn)參數(shù)傳送的功能。在具體編制調(diào)用程序的時(shí)候,要嚴(yán)格按照高級(jí)語(yǔ)言的規(guī)定編寫(xiě),以便能夠正確地調(diào)用與返回?,F(xiàn)在,面向?qū)ο蟮某绦蛟O(shè)計(jì)比結(jié)構(gòu)化程序設(shè)計(jì)在效率方面顯得更高一些,例如把C語(yǔ)言擴(kuò)充為面向?qū)ο蟮腃++語(yǔ)言。實(shí)際上C++語(yǔ)言是在C語(yǔ)言中增加了一個(gè)消息表達(dá)式,從而增加了新的表達(dá)式類(lèi)型。一些版本的C++語(yǔ)言的編譯程序?qū)嶋H上是一個(gè)轉(zhuǎn)換器,先將C++源程序轉(zhuǎn)換成C源程序,然后再進(jìn)行編譯。微型計(jì)算機(jī)控制系統(tǒng)軟件概述常用控制程序設(shè)計(jì)報(bào)警程序設(shè)計(jì),,
由采樣讀入的數(shù)據(jù)或經(jīng)計(jì)算機(jī)處理后的數(shù)據(jù)是否超出工藝參數(shù)的范圍,計(jì)算機(jī)要加以判別,如果超越了規(guī)定數(shù)值,就需要通知操作人員采取相應(yīng)的措施,確保生產(chǎn)的安全。越限報(bào)警是工業(yè)控制過(guò)程常見(jiàn)而又實(shí)用的一種報(bào)警形式,它分為上限報(bào)警、下限報(bào)警及上下限報(bào)警。報(bào)警程序設(shè)計(jì)比較簡(jiǎn)單,它主要采用比較法,把采樣并經(jīng)數(shù)字濾波以及標(biāo)度變換后的被測(cè)參數(shù)值與給定的上下限值進(jìn)行比較。如果需要報(bào)警的參數(shù)是xn,該參數(shù)的上下限約束值分別是xmax,xmin,則上下限報(bào)警的物理意義如下:(1)上限報(bào)警若xn>xmax,則上限報(bào)警,否則繼續(xù)執(zhí)行原定操作。(2)下限報(bào)警若xn<xmin,則下限報(bào)警,否則繼續(xù)執(zhí)行原定操作。(3)上下限報(bào)警若xn>xmax,則上限報(bào)警,否則對(duì)下式做判別。若xn<xmin則下限報(bào)警,否則繼續(xù)原定操作。根據(jù)上述規(guī)定,程序可以實(shí)現(xiàn)對(duì)狀態(tài)變量y、偏差e以及輸出u進(jìn)行上下限檢查。報(bào)警程序設(shè)計(jì)在實(shí)際應(yīng)用中,為了避免測(cè)量值在極限值附近擺動(dòng)造成頻繁的報(bào)警,因此在上、下限附近設(shè)定一個(gè)回差帶,如圖所示在中,H是上限帶,L為下限帶。規(guī)定只有當(dāng)測(cè)量值越過(guò)A點(diǎn)時(shí),才算越上限,測(cè)量值穿越帶區(qū),下降到B點(diǎn)以下才算復(fù)限。同樣的道理,測(cè)量值在L帶區(qū)內(nèi)擺動(dòng),均不做處理,只有它低于C點(diǎn)值時(shí),被認(rèn)為越下限,經(jīng)調(diào)節(jié),回歸于D點(diǎn)之上時(shí),才作越下限后復(fù)位處理。它的基本思想就是將采樣、數(shù)字濾波后的數(shù)據(jù)與該被測(cè)點(diǎn)上下限給定值進(jìn)行比較,檢查是否越限;或者與上限復(fù)位值、下限復(fù)位值進(jìn)行比較,檢查是否復(fù)限。如越限,則分別置上、下限標(biāo)志,并輸出相應(yīng)的聲光報(bào)警信號(hào)。如復(fù)限,則清除相應(yīng)標(biāo)志。報(bào)警程序設(shè)計(jì)報(bào)警程序設(shè)計(jì)程序清單為://函數(shù)名:Alarm//入口參數(shù):X-采樣值//出口參數(shù):無(wú)//描述:讀者可以根據(jù)自己的硬件系統(tǒng),修改端口地址、報(bào)警值上下限以及復(fù)限帶區(qū)寬度#definePORT0FFFF//報(bào)警端口地址#defineBoundMax50//報(bào)警上限值#defineBoundMin10//報(bào)警下限值#defineRoomH4//報(bào)警上限帶區(qū)寬度:H#defineRoomL4//報(bào)警下限帶區(qū)寬度:LintAlarmUpFlag//上限報(bào)警標(biāo)志intAlarmDownFlag//下限報(bào)警標(biāo)志
報(bào)警程序設(shè)計(jì)voidAlarm(doubleX){if(X>BoundMax+RoomH/2)//超上限
if(AlarmUpFlag==0)//超上限標(biāo)志未置位
{ AlarmUpFlag=1;//置位
outport(PORT,1);//輸出報(bào)警模型
return;//返回
}elseif(X<(BoundMax-RoomH/2)//復(fù)上限{ if(AlarmUpFlag==1)AlarmUpFlag=0;//清除超上限報(bào)警標(biāo)志
elseif(X<BoundMin-RoomL/2)//超下限
if(AlarmDownFlag==0)//超下限標(biāo)志未置位
報(bào)警程序設(shè)計(jì){ AlarmDownFlag=1;//置位
outport(PORT,1);//輸出報(bào)警模型
return;//返回
}elseif(X>BoundMin+RoomL/2)//復(fù)下限
if(AlarmDownFlag==1)AlarmDownFlag=0;//清除超下限標(biāo)志}}
數(shù)字濾波程序設(shè)計(jì),,
隨機(jī)誤差是由竄入檢測(cè)系統(tǒng)或控制系統(tǒng)的隨機(jī)干擾引起的,這種誤差是指在相同條件下測(cè)量同一量時(shí),其大小和符號(hào)作無(wú)規(guī)則的變化而無(wú)法預(yù)測(cè)、但在多次測(cè)量中它是符合統(tǒng)計(jì)規(guī)律的。為了克服隨機(jī)干擾引入的誤差、除了可以采用硬件辦法,還可以按統(tǒng)計(jì)規(guī)律用軟件算法來(lái)實(shí)現(xiàn),即采用數(shù)字濾波方法來(lái)抑制有效信號(hào)中的干擾成分,消除隨機(jī)誤差,同時(shí)對(duì)信號(hào)進(jìn)行必要的平滑處理,以保證系統(tǒng)的正常運(yùn)行。
與模擬濾波器相比較,數(shù)字濾波算法具有如下的優(yōu)點(diǎn):
節(jié)約硬件成本。數(shù)字濾波只是一個(gè)濾波程序,無(wú)需硬件,而且一個(gè)濾波程序可用于多處和很多通道,無(wú)需每個(gè)通道專(zhuān)設(shè)一個(gè)濾波器,因此,大大節(jié)約硬件成本。
可靠穩(wěn)定。數(shù)字濾波只是一個(gè)計(jì)算過(guò)程,因此可靠性高,不存在阻抗匹配問(wèn)題。
功能強(qiáng)。數(shù)字濾波可以對(duì)頻率很高或很低的信號(hào)進(jìn)行濾波,這是模擬濾波器所不及的。
方便靈活。只要適當(dāng)改變軟件濾波器的濾波程序和運(yùn)算參數(shù),即可改變?yōu)V波特性。
不會(huì)丟失原始數(shù)據(jù)。下面介紹幾種常用數(shù)字濾波算法。
程序判斷法,,
許多物理量的變化都需要一定的時(shí)間,相鄰兩次采樣值之間的變化有一定的限度。程序判斷濾波的方法,是根據(jù)生產(chǎn)經(jīng)驗(yàn),確定出相鄰兩次采樣信號(hào)之間可能出現(xiàn)的最大偏差,若超過(guò)此偏差值,則表明該輸入信號(hào)是干擾信號(hào),應(yīng)該去掉;如小于此偏差值,可將該信號(hào)作為本次采樣值。當(dāng)采樣信號(hào)由于隨機(jī)干擾,如大功率用電設(shè)備的啟動(dòng)或停止,造成電流的尖峰干擾或誤檢測(cè),以及變送器不穩(wěn)定而引起的嚴(yán)重失真等,可采用程序判斷法進(jìn)行濾波。程序判斷濾波根據(jù)濾波方法不同,可以分為:限幅濾波和限速濾波兩種。限幅濾波
基本方法是把兩次相鄰的采樣值相減,求出其增量(以絕對(duì)值表示),然后與兩次采樣容許的最大差值(由被控對(duì)象的實(shí)際情況決定)進(jìn)行比較,若小于等于,則取本次采樣值;若大于,則仍取上次采樣值作為本次采樣值,即:
應(yīng)用這種方法時(shí),關(guān)鍵是值的選擇。過(guò)程的動(dòng)態(tài)持性決定其輸出參數(shù)的變化速度,通常按照參數(shù)可能的最大變化速度及采樣周期T來(lái)決定值。即:
限速濾波
假定順序采樣時(shí)刻:所采樣的信號(hào)為:,則限速濾波的物理意義是:
在實(shí)際使用中,可用代替,這樣,雖增加了運(yùn)算量,但靈活性提高了。限速濾波
限速濾波
程序清單為://函數(shù)名:LimitFilter//入口參數(shù):*Y-采樣值數(shù)組首地址//出口參數(shù):濾波值//描述:設(shè) Y1、Y2、Y3放在以*Y為首地址的單元中,濾波結(jié)果放在temp中#include"math.h"doubleLimitFilter(double*Y){ doubleDeltaY,temp; DeltaY=(fabs(*(Y+1)-*(Y))+fabs(*(Y+2)-*(Y+1)))/2;//計(jì)算DeltaY if(fabs(*(Y+1)-*(Y))<=DeltaY)//Y1與Y2比較
temp=*(Y+1); elseif(fabs(*(Y+2)-*(Y+1))<=DeltaY)//Y3與Y2比較
temp=(*(Y+2)+*(Y+1))/2; else temp=*(Y+2);returntemp;}
中位值濾波法
×——各個(gè)采樣值;虛線——真實(shí)信號(hào)
a:一次干擾情況
b:兩次異向干擾情況
c:兩次同向干擾情況
d:三次干擾情況
中位值濾波法
中位值濾波法就是對(duì)某一被測(cè)參數(shù)連續(xù)采樣N次(一般N取奇數(shù)),然后把N次采樣值按大小排隊(duì),取中間值為本次采樣值。中位值濾波能有效地克服因偶然因素引起的波動(dòng)或采樣器不穩(wěn)定引起的誤碼等造成的脈沖干擾。對(duì)溫度、液位等緩慢變化的被測(cè)參數(shù)采用此法能收到良好的濾波效果,但對(duì)于流量、壓力等快速變化的參數(shù)一般不宜采用中位值濾波算法。從圖7-8可以看出N=3時(shí)采樣的中位值濾波的濾波效果。如果三次采樣中有一次發(fā)生干擾,則不管這個(gè)干擾發(fā)生在什么位置,都將被刪除掉(如圖7-8a所示)。當(dāng)三次采樣中有兩次發(fā)生脈沖干擾時(shí),若這兩次干擾是異向作用(如圖7-8b所示),則同樣可以濾掉這兩次干擾,取得準(zhǔn)確值;若這兩次干擾是同向作用(如圖7-8c所示),或發(fā)生如圖7-8d所示的三次干擾時(shí),中位值濾波便顯得無(wú)能為力,以致會(huì)把錯(cuò)誤信息送入計(jì)算機(jī)中。中位值濾波法中位值濾波程序設(shè)計(jì)的實(shí)質(zhì)是,首先將N個(gè)采樣值從小到大或從大到小進(jìn)行排隊(duì),然后再取中間值。N個(gè)數(shù)據(jù)按大小排序采用“冒泡法”(也叫大數(shù)沉底法),其流程圖如圖7-9所示:中位值濾波法doubleMiddleFilter(double*X,intN){ inti,j; doublet;//定義臨時(shí)之間變量
for(i=0;i<N-1;i++)//N-1次循環(huán)
for(j=0;j<N-1-i;j++) if(*(X+j)>*(X+j+1))//如果前一個(gè)數(shù)大于后一個(gè)數(shù),則相互交換數(shù)值
{ t=*(X+j); *(X+j)=*(X+j+1); *(X+j+1)=t; } return*(X+(N-1)/2);//返回中間值
}
算術(shù)平均濾波法
算術(shù)平均濾波是要按輸入的N個(gè)采樣數(shù)據(jù),尋找這樣一個(gè),使與各采樣值之間的偏差的平方和最小,即:(7-3)
由一元函數(shù)求極值的原理可得:(7-4)
算術(shù)平均濾波法
算術(shù)平均濾波法適用于對(duì)一般具有隨機(jī)干擾的信號(hào)進(jìn)行濾波。這種信號(hào)的特點(diǎn)是有一個(gè)平均值,信號(hào)在某一數(shù)值范圍附近作上下波動(dòng),在這種情況下僅取一個(gè)采樣值作依據(jù)顯然是不準(zhǔn)確的,算術(shù)平均濾波法對(duì)信號(hào)的平滑程度完全取決于N值。當(dāng)N值較大時(shí),平滑度高,但靈敏度低;當(dāng)N值較小時(shí),平滑度低,但靈敏度高。應(yīng)視具體情況選取N值,以便既少占用計(jì)算時(shí)間,又達(dá)到最好的效果。對(duì)于一般流量測(cè)量,常取N=12;若為壓力,則取N=4。算術(shù)平均濾波法
算術(shù)平均濾波程序可直接按上述算法編制,只需要注意兩點(diǎn):(1)是yn的輸入方法,對(duì)于定時(shí)測(cè)量,為了減少數(shù)據(jù)的存儲(chǔ)容量,可對(duì)測(cè)得的y值直接按公式進(jìn)行計(jì)算,但對(duì)于某些應(yīng)用場(chǎng)合,為了加快數(shù)據(jù)測(cè)量的速度,可采用先測(cè)量數(shù)據(jù)、并把它們存放在存儲(chǔ)器中,測(cè)量完N點(diǎn)后,再對(duì)測(cè)得的N個(gè)數(shù)據(jù)進(jìn)行平均值計(jì)算。(2)是選取適當(dāng)?shù)膟n、y的數(shù)據(jù)格式,即確定yn、y是定點(diǎn)數(shù)還是浮點(diǎn)數(shù)。采用浮點(diǎn)數(shù)計(jì)算比較方便,但計(jì)算時(shí)間較長(zhǎng);采用定點(diǎn)數(shù)可加快計(jì)算速度,但是必須考慮累加時(shí)是否會(huì)產(chǎn)生溢出。
算術(shù)平均濾波法
算術(shù)平均濾波法
程序清單為://函數(shù)名:AverageFilter//入口參數(shù):N-采樣值個(gè)數(shù),*Y-采樣值數(shù)組首地址//出口參數(shù):平均值(濾波值)//描述:求累加和,再取平均。采樣值放在以Y為首地址的數(shù)組中doubleAverageFilter(double*Y,intN){ inti; doubletemp; temp=0; for(i=0;i<N;i++) temp=temp+*(Y+i);//求N個(gè)采樣值的累加和
temp=temp/N;returntemp;//返回平均值}
遞推平均濾波法
前面的算術(shù)平均濾波法,每計(jì)算一次數(shù)據(jù),需測(cè)量N次。對(duì)于測(cè)量速度較慢或要求數(shù)據(jù)計(jì)算速率較高的實(shí)時(shí)系統(tǒng),此方法是無(wú)法使用的。例如某A/D芯片轉(zhuǎn)換速率為每秒10次,而要求每秒輸入4次數(shù)據(jù)時(shí),則N不能大于2。下面介紹一種只需進(jìn)行一次測(cè)量,就能得到當(dāng)前算術(shù)平均濾波值的方法——遞推平均濾波法。遞推平均濾波法是把N個(gè)測(cè)量數(shù)據(jù)看成一個(gè)隊(duì)列。隊(duì)列的長(zhǎng)度固定為N,每進(jìn)行一次新的測(cè)量,把測(cè)量結(jié)果放入隊(duì)尾,而扔掉原來(lái)隊(duì)首的一個(gè)數(shù)據(jù),這樣在隊(duì)列中始終有N個(gè)“最新”的數(shù)據(jù)。計(jì)算濾波值時(shí),只要把隊(duì)列中的N個(gè)數(shù)據(jù)進(jìn)行算術(shù)平均,就可得到新的濾波值。這樣每進(jìn)行一次測(cè)量、就可計(jì)算得到一個(gè)新的平均濾波值。這種濾波算法稱(chēng)為遞推歸平均濾波法,其數(shù)學(xué)表達(dá)式為:遞推平均濾波法
參數(shù)流量壓力液面溫度N值1244~121~4
第n次采樣的N項(xiàng)遞推平均值是n,n-1,…,n-N+1次采樣值的平均值,它與算術(shù)平均法相似。遞推平均濾波法對(duì)周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對(duì)偶然出現(xiàn)的脈沖性干擾的抑制作用差,不易消除由于脈沖干擾所引起的采樣值偏差,因此它不適用于脈沖干擾比較嚴(yán)重的場(chǎng)合,而適用于高頻振蕩的系統(tǒng)。通過(guò)觀察不同N值下遞推平均的輸出響應(yīng)來(lái)選取N值;以便既少占用計(jì)算機(jī)時(shí)間,又能達(dá)到最好的濾波效果。其工程經(jīng)驗(yàn)值列于表7-1中遞推平均濾波法
//函數(shù)名:PushFilter//入口參數(shù):N-采樣值個(gè)數(shù),*Y-過(guò)去采樣值數(shù)組首地址,Yn-當(dāng)前采樣值//出口參數(shù):平均值(濾波值)//描述:向前遞推采樣值數(shù)組,然后把當(dāng)前采樣值放到隊(duì)列末尾,再求累加和,取平均。doublePushFilter(double*Y,intN,doubleYn){ inti; doubletemp; temp=0; for(i=0;i<N-1;i++) *(Y+i)=*(Y+i+1);//向前遞推采樣值數(shù)組 *(Y+N-1)=Yn;//當(dāng)前采樣值放到隊(duì)列末尾 for(i=0;i<N;i++) temp=temp+*(Y+i); temp=temp/N;//求平均值returntemp;//返回平均值}加權(quán)遞推平均濾波法
在算術(shù)平均濾波法和遞推平均濾波法中,N次采樣值在輸出結(jié)果中的比重是均等的,即1/N。用這樣的濾波算法,對(duì)于時(shí)變信號(hào)會(huì)引入滯后,N越大、滯后越嚴(yán)重。為了增加新采樣數(shù)據(jù)在遞推平均中的比重,以提高系統(tǒng)對(duì)當(dāng)前采樣值中所受干擾的靈敏度,可采用加權(quán)遞推平均濾波算法。它是遞推平均濾波算法的改進(jìn),即不同時(shí)刻的數(shù)據(jù)加以不同的權(quán),通常越接近現(xiàn)時(shí)刻的數(shù)據(jù),權(quán)取得越大。N項(xiàng)加權(quán)遞推平均濾波算法為:故加權(quán)遞推平均濾波算法適用于有較大純滯后時(shí)間常數(shù)γ的對(duì)象和采樣周期較短的系統(tǒng)。而對(duì)于純滯后時(shí)間常數(shù)較小、采樣周期較長(zhǎng)、緩慢變化的信號(hào),則不能迅速反應(yīng)系統(tǒng)當(dāng)前所受干擾的嚴(yán)重程度,濾波效果差。一階慣性濾波法在模擬量輸入通道等硬件電路中,常用一階慣性RC模擬濾波器來(lái)抑制干擾(如圖7-12所示),當(dāng)用這種模擬方法來(lái)實(shí)現(xiàn)對(duì)低頻干擾的濾波時(shí),首先遇到的問(wèn)題是要求濾波器有大的時(shí)間常數(shù)和高精度的RC網(wǎng)絡(luò)。時(shí)間常數(shù)越大,要求R值越大,其漏電流也隨之增大、從而使RC網(wǎng)絡(luò)的誤差增大和設(shè)備的體積增大,降低了濾波效果。而一階慣性濾波算法是一種以數(shù)字形式通過(guò)算法來(lái)實(shí)現(xiàn)動(dòng)態(tài)的RC濾波方法,它能很好地克服上述模擬濾波器的缺點(diǎn),在濾波常數(shù)要求大的場(chǎng)合,此法更為實(shí)用。由圖7-12不難得出模擬低通濾波器的傳遞函數(shù),即:離散化后,可得:濾波器的時(shí)間常數(shù)較大時(shí)。上述算法便等價(jià)于一般的模擬濾波器。一階慣性濾波法一階慣性濾波算法對(duì)周期性干擾具有良好的抑制作用,適用于波動(dòng)頻繁的參數(shù)濾波,其不足之處是帶來(lái)了相位滯后,靈敏度低。滯后的程度取決于值的大小。同時(shí),它不能濾除頻率高于采樣頻率二分之一(稱(chēng)為奈奎斯特頻率)的干擾信號(hào)。例如采樣頻率為100Hz、則它不能濾去50Hz以上的干擾信號(hào)。對(duì)于高于奈奎斯特頻率的干擾信號(hào),應(yīng)該采用模擬濾波器。//函數(shù)名:OneStepFilter//入口參數(shù):Yn-過(guò)去采樣值,Yn1-當(dāng)前采樣值//出口參數(shù):濾波值//描述:按公式計(jì)算濾波值,并返回。#defineAlfa0.3doubleOneStepFilter(doubleYn1,doubleYn){ doubletemp; temp=Alfa*Yn1+(1-Alfa)*Yn; returntemp;}復(fù)合濾波法在實(shí)際應(yīng)用中,所面臨的隨機(jī)擾動(dòng)往往不是單一的,有時(shí)既要消除脈沖干擾,又要作數(shù)據(jù)平滑。因此常把前面所介紹的兩種以上的方法結(jié)合起來(lái)使用,形成復(fù)合濾波。例如防脈沖擾動(dòng)平均值濾波算法就是一種應(yīng)用實(shí)例。這種算法的特點(diǎn)是先用中位值濾波算法濾掉采樣值中的脈沖性干擾,然后把剩余的各采樣值進(jìn)行遞推平均濾波。其基本算法如下:復(fù)合濾波法
如果:,其中(和分別是所有采樣值中的最小值和最大值),則:(7-11)由于這種濾波算法兼容了遞推平均濾波算法和中值濾波算法的優(yōu)點(diǎn),所以,無(wú)論是對(duì)緩慢變化的過(guò)程變量,還是對(duì)快速變化的過(guò)程變量、都能起到較好的濾波效果。程序流程圖如圖7-13所示復(fù)合濾波法復(fù)合濾波法程序清單為://函數(shù)名:ComplexFilter//入口參數(shù):N-采樣值個(gè)數(shù),*X-采樣值數(shù)組首地址//出口參數(shù):濾波值//描述:先排序,后求和,再取平均doubleComplexFilter(double*X,intN){ inti,j; doubletemp;//定義臨時(shí)之間變量 for(i=0;i<N-1;i++)//N-1次循環(huán) for(j=0;j<N-1-i;j++) if(*(X+j)>*(X+j+1))//如果前一個(gè)數(shù)大于后一個(gè)數(shù),則相互交換數(shù)值 { temp=*(X+j); *(X+j)=*(X+j+1); *(X+j+1)=temp; } temp=0; for(i=1;i<N-1;i++) temp=temp+*(X+i);//求N-2個(gè)采樣值的累加和 temp=temp/(N-2);returntemp;//返回平均值}各種數(shù)字濾波性能的比較
以上介紹了七種數(shù)字濾波方法,讀者可根據(jù)需要設(shè)計(jì)出更多的數(shù)字濾波程序,每種濾波程序都有各自的特點(diǎn),可根據(jù)具體的測(cè)量參數(shù)進(jìn)行合理的選用。(1)濾波效果一般來(lái)說(shuō),對(duì)于變化比較慢的參數(shù),如溫度,可選用程序判斷濾波及一階慣性濾波方法。對(duì)于那些變換比較快的脈沖參數(shù),如壓力、流量等,則可以選擇算術(shù)平均和加權(quán)平均濾波法,特別是加權(quán)平均濾波方法更好。至于要求比較高的系統(tǒng),需要用復(fù)合濾波方法。在算術(shù)平均法和加權(quán)平均濾波法中,其濾波效果與所選擇的采樣次數(shù)N有關(guān),N越大,則濾波效果越好,但花費(fèi)的時(shí)間也越長(zhǎng)。(2)濾波時(shí)間在考慮濾波效果的前提下,應(yīng)盡量采用執(zhí)行時(shí)間比較短的程序,若計(jì)算機(jī)時(shí)間容許,可采用效果更好的復(fù)合濾波程序。注意,在熱工和化工過(guò)程DDC系統(tǒng)中,數(shù)字濾波并非一定需要,要根據(jù)具體情況,經(jīng)過(guò)分析、實(shí)驗(yàn)加以選用。不適當(dāng)?shù)貞?yīng)用數(shù)字濾波,反而會(huì)降低控制效果,以致失控,因此必須注意。各種數(shù)字濾波性能的比較序號(hào)濾波方法優(yōu)點(diǎn)缺點(diǎn)1限幅濾波法有效克服因偶然因素引起的脈沖干擾無(wú)法抑制周期性的干擾,平滑度差2中位值濾波法有效克服因偶然因素引起的脈沖干擾,對(duì)溫度、液位變化緩慢的被測(cè)參數(shù)有良好的濾波效果不宜用于流量、速度等快速變化的參數(shù)3算術(shù)平均濾波法適用于具有隨機(jī)干擾的信號(hào)。該方法有一個(gè)均值,信號(hào)某一數(shù)值范圍附近上下波動(dòng)不適用對(duì)數(shù)據(jù)計(jì)算速度較快的實(shí)時(shí)控制系統(tǒng),比較浪費(fèi)RAM4遞推平均濾波法對(duì)周期性干擾有良好的抑制作用,平滑度高,適用于高頻振蕩系統(tǒng)靈敏度低,對(duì)偶然出現(xiàn)的脈沖性干擾抑制作用較差,不易消除由于脈沖干擾所引起的采樣偏差5加權(quán)遞推平均濾波法適用于有較大滯后時(shí)間常數(shù)的對(duì)象和采樣周期較短的系統(tǒng)對(duì)于純滯后時(shí)間常數(shù)小、采樣周期較長(zhǎng)、變化緩慢的信號(hào),不能迅速反映系統(tǒng)當(dāng)前所受干擾的嚴(yán)重程度,濾波效果差6一階慣性濾波法對(duì)周期性干擾具有良好的抑制作用,適用于波動(dòng)頻率較高的場(chǎng)合相位滯后,靈敏度低,滯后程度取決于α值大小,不能消除頻率高于采樣頻率的1/2的干擾信號(hào)線性化處理程序設(shè)計(jì)
在實(shí)際的控制系統(tǒng)中,計(jì)算機(jī)從模擬量輸入通道得到的有關(guān)現(xiàn)場(chǎng)信號(hào)與源信號(hào)所代表的物理量不一定成線性關(guān)系,而在顯示時(shí)總是希望得到均勻的刻度,即希望系統(tǒng)的輸入與輸出之間為線性關(guān)系,這樣不但讀數(shù)看起來(lái)清楚方便,而且使儀表在整個(gè)范圍內(nèi)靈敏度一致,從而便于讀數(shù)及對(duì)系統(tǒng)進(jìn)行分析與處理。為了保證這些參數(shù)能有線性輸出,需要引入非線性補(bǔ)償,將非線性關(guān)系轉(zhuǎn)化成線性的。這種轉(zhuǎn)化過(guò)程稱(chēng)為線性化處理。常用的補(bǔ)償方法有:計(jì)算法、插值逼近法、折線近似法
計(jì)算法
當(dāng)參數(shù)間的非線性關(guān)系可以用數(shù)學(xué)方程式來(lái)表示時(shí),計(jì)算機(jī)可按公式進(jìn)行計(jì)算,完成對(duì)非線性補(bǔ)償。在計(jì)算機(jī)控制系統(tǒng)中常遇到的兩個(gè)非線性關(guān)系是溫度與熱電勢(shì)、差壓與流量。如在溫度測(cè)量中常用熱電偶測(cè)量溫度。但其被測(cè)溫度與熱電勢(shì)之間呈非線性關(guān)系,一般熱電勢(shì)與溫度的關(guān)系(E-T)可用下式表示:
不同的熱電偶材料系數(shù)不一樣。將采樣值代替上式中的E,即可求得溫度輸出值T。查表與插值逼近法
有許多非線性關(guān)系,如指數(shù)、對(duì)數(shù)、三角函數(shù)、積分和微分等,計(jì)算起來(lái)不僅程序長(zhǎng),而且很費(fèi)機(jī)器時(shí)間;有的關(guān)系也難以用公式來(lái)表達(dá),這些非線性關(guān)系常以某種數(shù)據(jù)表格給出。為解決這類(lèi)問(wèn)題,可以用查表法。
所謂查表法,就是事先就算好的數(shù)據(jù)按一定順序編制成表格存入計(jì)算機(jī)中,查表程序的任務(wù)就是根據(jù)被測(cè)參數(shù)的值(或中間計(jì)算結(jié)果),查出最后的所需的結(jié)果,這種方法速度快,精度高。查表程序的繁簡(jiǎn)及查詢(xún)時(shí)間的長(zhǎng)短與表格長(zhǎng)短有關(guān),更重要的一個(gè)因素是與表格的排列方法有關(guān)。一般的表格有二種排列方法:
(1)無(wú)序表格,即表格的排列是任意的,無(wú)一定的順序;(2)有序表格,即表格的排列有一定的順序、如表格中各項(xiàng)按大小順序排列等。查表的方法有:順序查表法、計(jì)算查表法、對(duì)分搜索法等。關(guān)于建表與查表,在程序設(shè)計(jì)或微型計(jì)算機(jī)原理課中都有相關(guān)內(nèi)容,讀者可以去查閱。
查表與插值逼近法
由于存儲(chǔ)容量的限制,有些表格只給出一些稀疏點(diǎn)上的函數(shù)值。而對(duì)任何相鄰兩點(diǎn)中間的函數(shù)值常用插值法近似計(jì)算,最常用的插值法是運(yùn)算量較小的線性插值法和二次插值法。線性插值法的原理如圖7-14
所示。A、B兩點(diǎn)的點(diǎn)斜式直線方程為:
上式稱(chēng)為一次插值多項(xiàng)式,其中:只要有一個(gè)x就能找到相應(yīng)的y值,通常把線性插值公式編制成相應(yīng)的子程序,在調(diào)用前賦入相應(yīng)參數(shù),直接調(diào)用即可。查表與插值逼近法線性插值有時(shí)誤差較大。因此,可用三點(diǎn)決定的曲線來(lái)實(shí)現(xiàn)插值。若三點(diǎn)不在一條直線上,通過(guò)三點(diǎn)的曲線(也就是拋物線)求得,故稱(chēng)為拋物線插值(二次插值)。二次插值的公式為:上式可以簡(jiǎn)化:
按此式也不難編出相應(yīng)的標(biāo)準(zhǔn)子程序,供系統(tǒng)作插值運(yùn)算使用。線性插值運(yùn)算速度快,但精度低。而二次插值精度比一次插值精度高,但速度慢。可以根據(jù)實(shí)際系統(tǒng)的情況選擇使用。
折線近似法在工程實(shí)踐中,有些非線性規(guī)律不能用數(shù)學(xué)公式精確表達(dá),只能以某種曲線描述出來(lái)。對(duì)于這些曲線可用折線近似方法求解。折線的每一段都可以看成是線性的。我們把各點(diǎn)輸出值與斜率不同的各小段綜合起來(lái),就可實(shí)現(xiàn)所需函數(shù)的逼近。
對(duì)于這種方法,只要n值取得足夠大,即分段足夠多,就可以獲得良好的非線性轉(zhuǎn)換精度。曲線分段的方法主要有兩種:(1)等距分段法等距分段法就是等距離選取分段點(diǎn)。這種方法的主要優(yōu)點(diǎn)是使計(jì)算簡(jiǎn)化,節(jié)省內(nèi)存。但該方法的缺點(diǎn)是當(dāng)函數(shù)的曲率和斜率變化較大時(shí),將會(huì)產(chǎn)生一定的誤差。否則,必須把基點(diǎn)分得很細(xì),這樣勢(shì)必占用更多的內(nèi)存,并使計(jì)算時(shí)間加長(zhǎng)。(2)非等距分段法這種方法的特點(diǎn)是分段點(diǎn)間不是等距的,而是根據(jù)函數(shù)曲線的形狀及其變化曲率的大小來(lái)修正插值間的距離,曲率變化大的,插值間距取小一點(diǎn);反之,可將插值距離增大一點(diǎn)。這種方法的優(yōu)點(diǎn)是可以提高精度,但非等距插值點(diǎn)的選取比較麻煩。
標(biāo)度變換程序設(shè)計(jì)實(shí)際應(yīng)用中,被測(cè)模擬信號(hào)被檢測(cè)出來(lái)并轉(zhuǎn)換成數(shù)字量后,常需要轉(zhuǎn)換成操作人員所熟悉的工程量。因?yàn)楸粶y(cè)對(duì)象的各種數(shù)據(jù)的量綱與A/D轉(zhuǎn)換的輸入值是不一樣的。例如:溫度的單位為℃,壓力單位為Pa等等。這些參數(shù)經(jīng)傳感器和A/D轉(zhuǎn)換后得到一系列的數(shù)碼,這些數(shù)碼值并不等于原來(lái)帶有量綱的參數(shù)值,它僅僅對(duì)應(yīng)于參數(shù)的大小,故必須把它轉(zhuǎn)換成帶有量綱的數(shù)值后才能運(yùn)算、顯示或打印輸出,這種轉(zhuǎn)換就是工程量變換,又稱(chēng)標(biāo)度變換。線性參數(shù)的標(biāo)度變換對(duì)于一般的線性系統(tǒng),其標(biāo)度變換公式如下:程序清單為://函數(shù)名:ScaleChange//入口參數(shù):X-采樣值//出口參數(shù):標(biāo)度變化后的數(shù)值#defineA02//測(cè)量范圍的下限值#defineAm40//測(cè)量范圍的上限值#defineN00//A0對(duì)應(yīng)的數(shù)字量#defineNm255//Am對(duì)應(yīng)的數(shù)字量doubleScaleChange(doubleX){doubletemp;temp=(Am-A0)*(X-N0)/(Nm-N0)+A0;returntemp;}
非線性參數(shù)的標(biāo)度變換如果被測(cè)量為非線性刻度時(shí),則其變換式應(yīng)根據(jù)具體問(wèn)題分析,首先求出它所對(duì)應(yīng)的標(biāo)度變換公式、然后再進(jìn)行程序設(shè)計(jì)。例如,在流量測(cè)量中,其流量和差壓的公式為:
根據(jù)上式知道,流體的流量與被測(cè)流體流過(guò)節(jié)流裝置前后產(chǎn)生的壓力差的平方根成正比,于是得到測(cè)量流量時(shí)的標(biāo)度變換式為:PID算法程序設(shè)計(jì)1.位置式PID算法程序設(shè)計(jì)位置式PID控制算法的表達(dá)式為:
式中:——比例系數(shù)
——積分系數(shù)
——微分系數(shù)
PID算法程序設(shè)計(jì)
為了編程方便,在式(7-25)中,令:
(7-27)
則,式(7-25)改寫(xiě)為:
(7-28)
位置式PID控制算法的流程圖如圖7-15所示,其中
r(k)為給定輸入,y(k)為經(jīng)濾波后的測(cè)量值。
PID算法程序設(shè)計(jì)程序清單://函數(shù)名:PositionPID//入口參數(shù):*Y-采樣值地址//出口參數(shù):位置式PID算法的結(jié)果#defineKp20//比例系數(shù)#defineKi10//積分系數(shù)#defineKd15//微分系數(shù)externdoubleEk1//E(k-1)變量externdoublePIk1//PI(k-1)變量externdoubleRk//設(shè)定值doublePositionPID(double*Y){ doublePPk;doublePIk;doublePDk;doubleEk;PID算法程序設(shè)計(jì)doubleresult;
Ek=Rk-*Y;//求取偏差PPk=Kp*Ek;//k時(shí)刻的比例項(xiàng)PIk=Ki*Ek+PIk1;//k時(shí)刻的積分項(xiàng)PDk=Kd*(Ek-Ek1);//k時(shí)刻的微分項(xiàng)result=PPk+PIk+PDk;//k時(shí)刻的PID運(yùn)算結(jié)果Ek1=Ek;//保存k時(shí)刻的偏差PIk1=PIk;//保存k時(shí)刻的積分項(xiàng)returnresult;//返回結(jié)果}
PID算法程序設(shè)計(jì)2.增量式PID算法程序設(shè)計(jì)增量式PID控制算法的表達(dá)式為:
(7-29)式中:
(7-30)
//函數(shù)名:IncrementPID//入口參數(shù):*Y-采樣值地址//出口參數(shù):PID算法的結(jié)果#defineKp20//比例系數(shù)#defineKi10//積分系數(shù)#defineKd15//微分系數(shù)externdoubleEk1//E(k-1)變量externdoubleEk2//E(k-2)變量externdoubleRk//設(shè)定值doubleIncrementPID(double*Y){doubleEk;doubleresult;Ek=Rk-*Y;result=Kp*(Ek-Ek1)+Ki*Ek+Kd*(Ek-2*Ek1+Ek2);Ek2=Ek1;Ek1=Ek;returnresult;//返回結(jié)果}
PID算法程序設(shè)計(jì)3.抗積分飽和PID控制算法程序設(shè)計(jì)這里只討論采用積分分離法抗積分飽和的PID控制算法程序設(shè)計(jì)。其控制規(guī)律是:當(dāng)偏差大于某個(gè)規(guī)定的門(mén)限值時(shí),取消積分作用,從而使不至過(guò)大。只有偏差較小時(shí),才引入積分作用,以消除偏差。其控制算式為:
其中:為的門(mén)限值PID算法程序設(shè)計(jì)程序清單://函數(shù)名:SeparatePID//入口參數(shù):*Y-采樣值地址//出口參數(shù):積分分離PID算法的結(jié)果#defineKp20//比例系數(shù)#defineKi10//積分系數(shù)#defineKd15//微分系數(shù)#defineEpsilon10//偏差門(mén)限值externdoubleEk1//E(k-1)變量externdoublePIk1//PI(k-1)變量externdoubleRk//設(shè)定值doubleSeparatePID(double*Y){doublePPk;doublePIk;doublePDk;
PID算法程序設(shè)計(jì)doubleEk;doubleKE;doubleresult;
Ek=Rk-*Y;//求取偏差PPk=Kp*Ek;//k時(shí)刻的比例項(xiàng)PIk=Ki*Ek+PIk1;//k時(shí)刻的積分項(xiàng)PDk=Kd*(Ek-Ek1);//k時(shí)刻的微分項(xiàng)Ifabs(Ek)>EpsilonKE=0;ElseKE=1;result=PPk+KE*PIk+PDk;//k時(shí)刻的PID運(yùn)算結(jié)果Ek1=Ek;//保存k時(shí)刻的偏差PIk1=PIk;//保存k時(shí)刻的積分項(xiàng)returnresult;//返回結(jié)果}
PID算法程序設(shè)計(jì)4.不完全微分PID控制算法程序設(shè)計(jì)不完全微分PID控制器增量型控制
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- apg工藝生產(chǎn)管理制度
- 釀造車(chē)間生產(chǎn)管理制度
- 生產(chǎn)技術(shù)方面制度
- 安全生產(chǎn)法電工管理制度
- 班組安全生產(chǎn)制度范本
- 代加工生產(chǎn)規(guī)章制度
- 生產(chǎn)計(jì)劃管理規(guī)章制度
- 生產(chǎn)服務(wù)管理制度范本
- 2026山東泰安市屬事業(yè)單位初級(jí)綜合類(lèi)崗位招聘參考考試試題附答案解析
- 2026甘肅白銀市平川區(qū)容通水務(wù)有限公司招聘9人參考考試題庫(kù)附答案解析
- 清真生產(chǎn)過(guò)程管控制度
- 2026年淺二度燒傷處理
- 北京通州產(chǎn)業(yè)服務(wù)有限公司招聘考試備考題庫(kù)及答案解析
- 河北省NT名校聯(lián)合體2025-2026學(xué)年高三上學(xué)期1月月考英語(yǔ)(含答案)
- 2025-2026學(xué)年滬科版八年級(jí)數(shù)學(xué)上冊(cè)期末測(cè)試卷(含答案)
- 途虎養(yǎng)車(chē)安全培訓(xùn)課件
- 衛(wèi)生管理研究論文
- 2025-2026學(xué)年人教版(新教材)小學(xué)數(shù)學(xué)二年級(jí)下冊(cè)(全冊(cè))教學(xué)設(shè)計(jì)(附教材目錄P161)
- 委托市場(chǎng)調(diào)研合同范本
- 畜牧安全培訓(xùn)資料課件
- 2025年度黨支部書(shū)記述職報(bào)告
評(píng)論
0/150
提交評(píng)論