工業(yè)現(xiàn)場(chǎng)嵌入式控制器軟件的分析和設(shè)計(jì)
摘要:本文分析了Linux在嵌入式系統(tǒng)中應(yīng)用的可能性及優(yōu)勢(shì),并設(shè)計(jì)了基于嵌入式Linux的工業(yè)現(xiàn)場(chǎng)控制器軟件,并實(shí)際應(yīng)用于計(jì)算機(jī)集散控制系統(tǒng)中,滿足了一般甚至核電領(lǐng)域中DCS系統(tǒng)對(duì)現(xiàn)場(chǎng)控制器的要求。
關(guān)鍵詞:嵌入式Linux;DCS;現(xiàn)場(chǎng)控制器
1.引言
現(xiàn)場(chǎng)控制器是DCS系統(tǒng)的核心組成部分,擔(dān)負(fù)著接收并執(zhí)行控制算法、采集現(xiàn)場(chǎng)數(shù)據(jù)并進(jìn)行大量數(shù)據(jù)處理等職能,且具有控制周期短,運(yùn)行穩(wěn)定、可靠等要求。因此,如何選用高性能的硬件,開發(fā)穩(wěn)定可靠的嵌入式操作系統(tǒng),并設(shè)計(jì)現(xiàn)場(chǎng)控制器軟件系統(tǒng)成為DCS系統(tǒng)開發(fā)中的關(guān)鍵之一。
本文分析并設(shè)計(jì)了基于嵌入式Linux的工業(yè)現(xiàn)場(chǎng)控制器的控制軟件系統(tǒng)。
EmbeddedLinux的優(yōu)勢(shì)
EmbeddedLinux具有如下特點(diǎn):
第一,Linux系統(tǒng)內(nèi)核源碼完全開放。因?yàn)長(zhǎng)inux的內(nèi)核源碼是完全開發(fā)的,所以不同領(lǐng)域和層次的用戶可以免費(fèi)得到Linux內(nèi)核源碼,并根據(jù)自己的應(yīng)用需要方便的對(duì)內(nèi)核進(jìn)行修改。這樣可以有效控制成本,并設(shè)計(jì)和開發(fā)出滿足其需要的嵌入式系統(tǒng)。
第二,強(qiáng)大的網(wǎng)絡(luò)功能。Linux的網(wǎng)絡(luò)連接能力緊密的和Linux內(nèi)核結(jié)合在一起,為用戶提供了完善而強(qiáng)大的網(wǎng)絡(luò)功能。實(shí)際上,Linux就是依靠互聯(lián)網(wǎng)才迅速發(fā)展了起來。Linux支持所有標(biāo)準(zhǔn)Internet協(xié)議,可以輕松地與TCP/IP、LANManager、WindowsforWorkgroups、NovellNetware或WindowsNT網(wǎng)絡(luò)集成在一起??梢栽贚inux的網(wǎng)絡(luò)協(xié)議?;A(chǔ)上開發(fā)出嵌入式的TCP/IP網(wǎng)絡(luò)協(xié)議棧,使得嵌入式設(shè)備具有強(qiáng)大的網(wǎng)絡(luò)功能。
第三,Linux是Unix兼容,完全符合IEEEPOSIX.1標(biāo)準(zhǔn)。許多運(yùn)行在Unix上的軟件可以不加修的運(yùn)行在Linux上。因此嵌入式Linux具有很多豐富的免費(fèi)軟件資源可以利用。第四,Linux具備完整的開發(fā)工具鏈,嵌入式系統(tǒng)開發(fā)者輕易建立嵌入式系統(tǒng)的開發(fā)環(huán)境和交叉運(yùn)行環(huán)境,可以跨越嵌入式系統(tǒng)開發(fā)中仿真工具的障礙。從編輯階段,編譯階段到調(diào)試階段,可以方便的使用GNU提供的EMACS,GCC,GDB,KGDB等工具鏈。第五,Linux具有廣泛的硬件支持。Linux能運(yùn)行在,無論是RISC還是CISC、32位還是64位等各種處理器上。Linux支持各種主流的硬件設(shè)備和最新的硬件技術(shù),可以在沒有MMU的處理器上運(yùn)行。所以嵌入式Linux有廣泛的應(yīng)用前景。
工業(yè)控制DCS系統(tǒng)的組成
DCS是分散控制系統(tǒng)的簡(jiǎn)稱,國(guó)內(nèi)一般習(xí)慣稱為集散控制系統(tǒng)。它是一個(gè)由過程控制級(jí)和過程監(jiān)控級(jí)組成的以通信網(wǎng)絡(luò)為紐帶的多級(jí)計(jì)算機(jī)系統(tǒng),綜合了計(jì)算機(jī)、通訊、顯示和控制等4C技術(shù),其基本思想是分散控制、集中操作、分級(jí)治理、配置靈活、組態(tài)方便。
DCS具有以下特點(diǎn):
高可靠性
由于DCS將系統(tǒng)控制功能分散在各臺(tái)計(jì)算機(jī)上實(shí)現(xiàn),系統(tǒng)結(jié)構(gòu)采用容錯(cuò)設(shè)計(jì),因此某一臺(tái)計(jì)算機(jī)出現(xiàn)的故障不會(huì)導(dǎo)致系統(tǒng)其它功能的喪失。此外,由于系統(tǒng)中各臺(tái)計(jì)算機(jī)所承擔(dān)的任務(wù)比較單一,可以針對(duì)需要實(shí)現(xiàn)的功能采用具有特定結(jié)構(gòu)和軟件的專用計(jì)算機(jī),從而使系統(tǒng)中每臺(tái)計(jì)算機(jī)的可靠性也得到提高。
開放性
DCS采用開放式、標(biāo)準(zhǔn)化、模塊化和系列化設(shè)計(jì),系統(tǒng)中各臺(tái)計(jì)算機(jī)采用局域網(wǎng)方式通信,實(shí)現(xiàn)信息傳輸,當(dāng)需要改變或擴(kuò)充系統(tǒng)功能時(shí),可將新增計(jì)算機(jī)方便地連入系統(tǒng)通信網(wǎng)絡(luò)或從網(wǎng)絡(luò)中卸下,幾乎不影響系統(tǒng)其他計(jì)算機(jī)的工作。
靈活性通過組態(tài)軟件根據(jù)不同的流程應(yīng)用對(duì)象進(jìn)行軟硬件組態(tài),即確定測(cè)量與控制信號(hào)及相互
間連接關(guān)系、從控制算法庫(kù)選擇適用的控制規(guī)律以及從圖形庫(kù)調(diào)用基本圖形組成所需的各種監(jiān)控和警畫面,從而方便地構(gòu)成所需的控制系統(tǒng)。
易于維護(hù)功能單一的小型或微型專用計(jì)算機(jī),具有維護(hù)簡(jiǎn)單、方便的特點(diǎn),當(dāng)某一局部或某個(gè)計(jì)算機(jī)出現(xiàn)故障時(shí),可以在不影響整個(gè)系統(tǒng)運(yùn)行的情況下更換,迅速排除故障。
協(xié)調(diào)性各工作站之間通過通信網(wǎng)絡(luò)傳送各種數(shù)據(jù),整個(gè)系統(tǒng)信息共享,協(xié)調(diào)工作,以完成控制系統(tǒng)的總體功能和優(yōu)化處理。
控制功能齊全控制算法豐富,集連續(xù)控制、順序控制和批處理控制于一體,可實(shí)現(xiàn)串級(jí)、前饋、解耦、自適應(yīng)和猜測(cè)控制等先進(jìn)控制,并可方便地加入所需的非凡控制算法。
DCS的構(gòu)成方式十分靈活,可由專用的治理計(jì)算機(jī)站、操作員站、工程師站、記錄站、現(xiàn)場(chǎng)控制站和數(shù)據(jù)采集站等組成,也可由通用的服務(wù)器、工業(yè)控制計(jì)算機(jī)和可編程控制器構(gòu)成。
處于底層的過程控制級(jí)一般由分散的現(xiàn)場(chǎng)控制站、數(shù)據(jù)采集站等就地實(shí)現(xiàn)數(shù)據(jù)采集和控制,并通過數(shù)據(jù)通信網(wǎng)絡(luò)傳送到生產(chǎn)監(jiān)控級(jí)計(jì)算機(jī)。生產(chǎn)監(jiān)控級(jí)對(duì)來自過程控制級(jí)的數(shù)據(jù)進(jìn)行集中操作治理,如各種優(yōu)化計(jì)算、統(tǒng)計(jì)表、故障診斷、顯示警等。隨著計(jì)算機(jī)技術(shù)的發(fā)展,DCS可以按照需要與更高性能的計(jì)算機(jī)設(shè)備通過網(wǎng)絡(luò)連接來實(shí)現(xiàn)更高級(jí)的集中治理功能,如計(jì)劃調(diào)度、倉(cāng)儲(chǔ)治理、能源治理等。
嵌入式控制器軟件設(shè)計(jì)
嵌入式控制器是指在DCS的硬件體系結(jié)構(gòu)中的現(xiàn)場(chǎng)控制站,即圖1中被紅色橢圓圈中的部分。在設(shè)定的控制周期下,主控制器循環(huán)的執(zhí)行從I/O設(shè)備采集現(xiàn)場(chǎng)數(shù)據(jù)、控制邏輯運(yùn)算、與操作員站進(jìn)行數(shù)據(jù)交換、故障診斷、冗余等任務(wù)。
主控制器向下通過I/O插件或者現(xiàn)場(chǎng)總線網(wǎng)絡(luò),連接現(xiàn)場(chǎng)的各種I/O設(shè)備、執(zhí)行設(shè)備等;向上通過系統(tǒng)網(wǎng)絡(luò)與操作員站、工程師站等連接。
DCS系統(tǒng)的性能、可靠性等重要指標(biāo)主要體現(xiàn)在主控制器上。因此,設(shè)計(jì)出高效穩(wěn)定的現(xiàn)場(chǎng)控制器軟件系統(tǒng),對(duì)于設(shè)計(jì)整個(gè)DCS系統(tǒng)的關(guān)鍵之一。
1控制器硬件及系統(tǒng)平臺(tái)嵌入式控制器的硬件平臺(tái)為IntelXScaleIXP425嵌入式開發(fā)板;操作系統(tǒng)采用嵌入式Linux,版本為16。
2控制器軟件結(jié)構(gòu)
控制器軟件設(shè)計(jì)為運(yùn)行于嵌入式Linux平臺(tái)上的單線程應(yīng)用程序,調(diào)度策略為實(shí)時(shí)的先入先出方式,現(xiàn)場(chǎng)運(yùn)行采用雙機(jī)熱備份方式。由于控制器軟件要完成的各種功能相對(duì)獨(dú)立,因此本文中將控制器軟件程序設(shè)計(jì)成多模塊結(jié)構(gòu)。模塊之間的關(guān)系如下圖所示。
各模塊分別設(shè)計(jì)為:
總控模塊??偪啬K指的是對(duì)系統(tǒng)整體運(yùn)行進(jìn)行監(jiān)控的模塊,它協(xié)調(diào)和調(diào)度其他模塊的運(yùn)行,包括系統(tǒng)開始啟動(dòng)時(shí)的初始化、程序結(jié)束時(shí)所進(jìn)行的清理以及按照周期性調(diào)度其它模塊的運(yùn)行。
時(shí)間治理模塊。在控制器軟件中,維護(hù)一個(gè)與校時(shí)無關(guān)的時(shí)間計(jì)數(shù),系統(tǒng)根據(jù)這個(gè)計(jì)數(shù)來進(jìn)行計(jì)時(shí)和調(diào)度。工作機(jī)和備份機(jī)之間通過校時(shí)使得絕對(duì)時(shí)間和計(jì)數(shù)都能保持一致。
通訊模塊。此模塊提供控制器軟件的網(wǎng)絡(luò)通訊功能,設(shè)計(jì)為具體網(wǎng)絡(luò)協(xié)議對(duì)上層應(yīng)用即通訊服務(wù)模塊透明。同時(shí),通訊模塊應(yīng)該實(shí)現(xiàn)將網(wǎng)絡(luò)上的字節(jié)流封裝成具有特定功能單元的數(shù)據(jù)包,及將具有特定功能單元的數(shù)據(jù)包轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)流,以供通訊服務(wù)模塊使用。
通訊服務(wù)模塊。通訊服務(wù)模塊和通訊模塊密切相關(guān),是控制器軟件對(duì)外提供的服務(wù)接口。控制器軟件定義了一組標(biāo)準(zhǔn)的通訊服務(wù),外部只要按照規(guī)定的格式向控制器發(fā)送通訊請(qǐng)求,控制器就會(huì)給出應(yīng)答或結(jié)果。通訊服務(wù)模塊實(shí)質(zhì)上是對(duì)通訊模塊所接收到的數(shù)據(jù)的處理;并將處理結(jié)果交給通訊模塊發(fā)送。
冗余模塊。冗余主要是涉及到工作機(jī)和備份機(jī)之間的通訊,采用網(wǎng)絡(luò)方式。主機(jī)需要向從機(jī)傳送的數(shù)據(jù)主要包括:下裝文件、運(yùn)行數(shù)據(jù)、相關(guān)通訊服務(wù)命令等,另外工作機(jī)和備份機(jī)之間的校時(shí)也通過冗余模塊完成。
診斷模塊。診斷模塊負(fù)責(zé)檢測(cè)控制器運(yùn)行狀態(tài),并對(duì)出現(xiàn)及可能出現(xiàn)的異常狀態(tài)進(jìn)行修正。
錯(cuò)誤信息處理模塊??刂破鬈浖懈髂K通過此錯(cuò)誤信息處理模塊將各種錯(cuò)誤信息記錄下來,通過通訊服務(wù),記錄的錯(cuò)誤信息可以被提取出來進(jìn)行分析,以便于分析、解決出現(xiàn)的問題。
狀態(tài)顯示模塊。狀態(tài)顯示模塊主要是負(fù)責(zé)按照要求控制控制器面板上顯示部件LED
燈顯示相應(yīng)信息。
掉電保護(hù)模塊。掉電保護(hù)模塊周期性地將重要數(shù)據(jù)保存,當(dāng)系統(tǒng)掉電重啟后,可恢復(fù)運(yùn)行數(shù)據(jù)。本文中設(shè)計(jì)為周期性的將重要的運(yùn)行數(shù)據(jù)保存到SRAM中,保存完畢后,設(shè)置掉電保護(hù)有效標(biāo)志;當(dāng)控制器重新啟動(dòng)后,檢查此標(biāo)志,若有效,則恢復(fù)運(yùn)行數(shù)據(jù)。
數(shù)據(jù)交換模塊。控制器軟件和現(xiàn)場(chǎng)IO模件進(jìn)行數(shù)據(jù)交換:DP主站從輸入模塊收集輸入數(shù)據(jù)并發(fā)送給控制器,在IEC運(yùn)算后,控制器軟件將輸出數(shù)據(jù)發(fā)送給DP主站,
DP主站將輸出數(shù)據(jù)分發(fā)給輸出設(shè)備。本文設(shè)計(jì)為DP主站將從現(xiàn)場(chǎng)智能設(shè)備收集的輸入數(shù)據(jù)存放在雙口RAM中,然后控制器軟件從雙口RAM中獲得輸入數(shù)據(jù);控制器軟件將輸出數(shù)據(jù)存放在雙口RAM中,然后DP主站從雙口RAM獲得輸出數(shù)據(jù),然后分發(fā)給現(xiàn)場(chǎng)智能設(shè)備。
IEC任務(wù)調(diào)度模塊。IEC任務(wù)調(diào)度模塊負(fù)責(zé)對(duì)各種IEC任務(wù)進(jìn)行調(diào)度,包括周期性任務(wù)、連續(xù)性任務(wù)、內(nèi)部事件任務(wù)和外部事件觸發(fā)的任務(wù)。IEC任務(wù)調(diào)度模塊還要維護(hù)雙機(jī)之間的同步,通過發(fā)送和應(yīng)答同步標(biāo)號(hào)保證雙機(jī)之間的IEC任務(wù)運(yùn)算的節(jié)拍一致。假如同步失敗,工作機(jī)要向備份機(jī)拷貝運(yùn)行數(shù)據(jù),然后備份機(jī)重新運(yùn)行。
控制器軟件的代碼設(shè)計(jì)如下所示。
intmain
/Finalization/
}
控制器軟件程序在啟動(dòng)后,對(duì)冗余模塊、通訊模塊、數(shù)據(jù)交換模塊、掉電保護(hù)模塊、狀
態(tài)顯示模塊、診斷模塊進(jìn)行初始化;之后進(jìn)入while無限循環(huán)并周期性的調(diào)用或執(zhí)行通訊模塊、狀態(tài)顯示模塊、數(shù)據(jù)交換模塊輸入部分、IEC任務(wù)調(diào)度模塊、數(shù)據(jù)交換模塊輸出部分、冗余同步模塊、診斷模塊、及可能的延時(shí);當(dāng)程序碰到意外情況需要終止時(shí),程序進(jìn)入清理部分,釋放占用的資源,最后結(jié)束運(yùn)行。
實(shí)驗(yàn)及結(jié)果分析
經(jīng)過實(shí)驗(yàn)和對(duì)結(jié)果的分析,基于嵌入式Linux的嵌入式控制器具有較高性能,能滿足一般甚至核電領(lǐng)域DCS系統(tǒng)中現(xiàn)場(chǎng)控制器的要求??刂破鬈浖邮詹⒄{(diào)度數(shù)個(gè)周期型IEC任務(wù)時(shí)控制周期可達(dá)到50ms,并且滿足現(xiàn)場(chǎng)控制器網(wǎng)絡(luò)負(fù)荷率小于15%,系統(tǒng)總負(fù)荷率小于40%等要求。
分析原因如下:
IXP425具有強(qiáng)大的計(jì)算能力和集成的NPE具有非常強(qiáng)大的網(wǎng)絡(luò)處理能力;系統(tǒng)配備大量?jī)?nèi)存,程序可快速運(yùn)行;
Linux運(yùn)行于IXP425BIGENDIAN模式,網(wǎng)絡(luò)協(xié)議??梢詼p少一些轉(zhuǎn)化處理;
Linux操作系統(tǒng)性能較好,控制器軟件采用模塊化設(shè)計(jì),并優(yōu)化代碼,具有較強(qiáng)處理能力。
總結(jié)
本文分析了計(jì)算機(jī)集散控制器系統(tǒng)中現(xiàn)場(chǎng)控制器的在工業(yè)控制領(lǐng)域的重要性,并設(shè)計(jì)了基于嵌入式Linux的現(xiàn)場(chǎng)控制器軟件系統(tǒng)。所設(shè)計(jì)出的系統(tǒng)高效、可靠,滿足一般甚至核電領(lǐng)域的工業(yè)控制要求?;谇度胧絃inux的工業(yè)現(xiàn)場(chǎng)嵌入式控制系統(tǒng)必然有著更美好的前景。
參考文獻(xiàn)
徐雪松章兢.嵌入式Linux在工業(yè)控制領(lǐng)域中的應(yīng)用.國(guó)際電子元器件,2004年,03期
宋威周偉.集散控制系統(tǒng)應(yīng)用現(xiàn)狀及其發(fā)展.工業(yè)控制計(jì)算機(jī),2004年,11期
郭晨鮮費(fèi)凌.基于嵌入式控制器及研發(fā)平臺(tái)的分析與研究.西華大學(xué)學(xué),2005年,04期
張廣輝徐江華邵惠鶴.基于交換式以太網(wǎng)的嵌入式控制系統(tǒng).自動(dòng)化儀表,2008年,06期
AnalysisandDesignofEmbeddedLinuxBasedFieldControlStationSoftware
文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。