TLinux的實(shí)時(shí)控制系統(tǒng)_第1頁
TLinux的實(shí)時(shí)控制系統(tǒng)_第2頁
TLinux的實(shí)時(shí)控制系統(tǒng)_第3頁
TLinux的實(shí)時(shí)控制系統(tǒng)_第4頁
TLinux的實(shí)時(shí)控制系統(tǒng)_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于RTLLinuxx的實(shí)時(shí)控控制系統(tǒng)摘要:從技技術(shù)背景、系統(tǒng)結(jié)構(gòu)構(gòu)、硬件和和軟件設(shè)計(jì)計(jì)等方面論論述了基于于RTLiinux的的閘門實(shí)時(shí)時(shí)控制系統(tǒng)統(tǒng)的組成、原理以及及實(shí)現(xiàn)方法法,并著重重分析了軟軟件實(shí)現(xiàn)的的關(guān)鍵問題題。 關(guān)關(guān)鍵詞:RRTLinnux 實(shí)實(shí)時(shí)控制 TCP/IP MMYSQLL數(shù)據(jù)庫在水電站閘閘門控制系系統(tǒng)中,設(shè)設(shè)備地理位位置分散、控制分散散,基于常常規(guī)繼電器器的控制系系統(tǒng)不能滿滿足電廠無無人值班控控制系統(tǒng)和和全廠綜合合自動(dòng)化的的要求,必必須將智能能控制和工工業(yè)網(wǎng)絡(luò)相相結(jié)合,實(shí)實(shí)現(xiàn)實(shí)時(shí)控控制的同時(shí)時(shí)又能對(duì)設(shè)設(shè)備進(jìn)行智智能管理和和維護(hù)。目目前比較常常用的控制制系統(tǒng)大多多由PLCC構(gòu)成

2、,成成本較高,缺缺乏客戶定定制的靈活活性。本文文從系統(tǒng)功功能實(shí)現(xiàn)和和經(jīng)濟(jì)指標(biāo)標(biāo)兩個(gè)方面面考慮,半半基于RTTLinuux的控制制平臺(tái)、工工業(yè)以太網(wǎng)網(wǎng)和數(shù)據(jù)庫庫技術(shù)引入入閘門控制制系統(tǒng)。1 RTLLlinuux、工業(yè)業(yè)以太網(wǎng)和和數(shù)據(jù)庫RTLinnux是由由新墨西大大學(xué)的Viictorr Yoddaikeen等人開開發(fā)的,現(xiàn)現(xiàn)在已有商商業(yè)化的版版本推出。在RTLLinuxx面世之前前,Linnux在實(shí)實(shí)時(shí)性方面面作過一些些嘗試。在在POSIIX1.bb中,規(guī)定定了實(shí)時(shí)進(jìn)進(jìn)程的一些些標(biāo)準(zhǔn),但但由于Liinux內(nèi)內(nèi)核的不可可搶先性,真真正的實(shí)時(shí)時(shí)進(jìn)程無法法在標(biāo)準(zhǔn)的的Linuux環(huán)境下下實(shí)現(xiàn)。RRTLi

3、nnux采用用簡單而有有效的方法法解決了此此問題而不不用重寫LLinuxx內(nèi)核代碼碼。RTLLinuxx實(shí)現(xiàn)了一一個(gè)高效的的可搶先的的實(shí)時(shí)調(diào)度度核心,全全面接管中中斷,并把把Linuux作為此此實(shí)時(shí)核心心的一個(gè)優(yōu)優(yōu)先級(jí)最低低的進(jìn)程運(yùn)運(yùn)行。當(dāng)有有實(shí)時(shí)任務(wù)務(wù)需要處理理時(shí),RTTLinuux運(yùn)行實(shí)實(shí)時(shí)任務(wù);無實(shí)時(shí)任任務(wù)時(shí),RRTLinnux運(yùn)行行Linuux的非實(shí)實(shí)時(shí)進(jìn)程。圖1是RRTLinnux的結(jié)結(jié)構(gòu)圖。為保證實(shí)時(shí)時(shí)進(jìn)程與非非實(shí)時(shí)Liinux進(jìn)進(jìn)程部順序序進(jìn)行數(shù)據(jù)據(jù)交換,RRTLinnux引入入了RT-FIFOO隊(duì)列。RRT-FIIFO被LLinuxx視為字符符設(shè)備,最最多可達(dá)1150個(gè),分分別

4、命名為為/derr/rtff0、/ddev/rrtf1/deev/rttf63。最大的RRT-FIIFO數(shù)量量在系統(tǒng)內(nèi)內(nèi)核編譯時(shí)時(shí)設(shè)定。圖圖2說明了了RT-FFIFO的的工作原理理。RTLinnux程序序運(yùn)行于兩兩個(gè)空間:用戶空間間內(nèi)核態(tài)。RTLiinux提提供了應(yīng)用用程序接口口,借助這這些APII函數(shù)將實(shí)實(shí)時(shí)處理部部分編寫成成內(nèi)核模塊塊,并裝載載到RTLLinuxx內(nèi)核中,運(yùn)運(yùn)行于RTTLinuux的內(nèi)核核態(tài)。非實(shí)實(shí)時(shí)部分的的應(yīng)用程序序則在Liinux下下的用戶空空間中執(zhí)行行,這樣可可以發(fā)揮LLinuxx對(duì)網(wǎng)絡(luò)和和數(shù)據(jù)庫的的強(qiáng)大支持持功能。TCP/IIP協(xié)議和和以太網(wǎng)在在Inteernett

5、上的成功功應(yīng)用吸引引著越來越越多控制程程師。盡管管以太網(wǎng)的的時(shí)間不確確定性給以以太網(wǎng)應(yīng)用用于工業(yè)控控制現(xiàn)場的的實(shí)時(shí)性帶帶來了很多多爭論,但但是實(shí)際應(yīng)應(yīng)用中,經(jīng)經(jīng)網(wǎng)絡(luò)傳輸輸?shù)臄?shù)據(jù)絕絕大多數(shù)用用于系統(tǒng)管管理和維護(hù)護(hù)等方面,用用于實(shí)時(shí)控控制的數(shù)據(jù)據(jù)傳輸很少少,這也是是基于管理理集中、控控制分散的的系統(tǒng)設(shè)計(jì)計(jì)策略考慮慮的。在較較高的以太太網(wǎng)傳輸速速度下,現(xiàn)現(xiàn)場智能處處理單元的的處理速度度才是傳輸輸延遲的主主要原因。本系統(tǒng)現(xiàn)現(xiàn)場控制單單元采用高高速處理器器,并采用用RTLiinux作作為現(xiàn)場控控制單元的的控制平臺(tái)臺(tái),直接用用以太網(wǎng)傳傳輸數(shù)據(jù),系系統(tǒng)的網(wǎng)絡(luò)絡(luò)層次減少少,信號(hào)的的傳輸實(shí)時(shí)時(shí)性也得到到提高。目

6、前,有許許多數(shù)據(jù)庫庫開發(fā)商提提供了Liinux平平臺(tái)上的數(shù)數(shù)據(jù)庫軟件件,例如OOraclle、Syybasee、Infformiix和MYYSQL等等都推出了了Linuux版本。基于RTTLinuux的控制制系統(tǒng)在實(shí)實(shí)時(shí)控制領(lǐng)領(lǐng)域有巨大大的潛力。2 系統(tǒng)組組成本系統(tǒng)分為為現(xiàn)場和集集中級(jí)?,F(xiàn)現(xiàn)場控制級(jí)級(jí)由分散在在現(xiàn)場的44個(gè)現(xiàn)場控控制單元控控制,分別別完成閘門門位置、油油缸油壓和和油路狀態(tài)態(tài)等的采集集,現(xiàn)場操操作按鈕的的監(jiān)視以及及閘門提升升和下降的的控制等。集中級(jí)由由集中監(jiān)控控站、維護(hù)護(hù)站組成,分分別執(zhí)行監(jiān)監(jiān)視、智能能維護(hù)及診診斷等功能能。打印機(jī)機(jī)用于數(shù)據(jù)據(jù)的硬備份份、報(bào)表的的輸出。系系統(tǒng)結(jié)構(gòu)如

7、如圖3所示示。2.1 系系統(tǒng)硬件構(gòu)構(gòu)成在工業(yè)控制制系統(tǒng)中通通常采用PPLC作為為現(xiàn)場的控控制核心。PLC的的不足一方方面在于其其較高的價(jià)價(jià)格,另一一方面在于于其難以實(shí)實(shí)現(xiàn)非順序序控制算法法,以及缺缺乏對(duì)TCCP/IPP靈活的支支持。本系系統(tǒng)采用嵌嵌入式PCC作為控制制單元的核核心,開發(fā)發(fā)人員可自自行開發(fā)外外圍接口板板,根據(jù)系系統(tǒng)需要靈靈活組態(tài),既既經(jīng)濟(jì)又能能使用高級(jí)級(jí)語言開發(fā)發(fā)控制程序序?,F(xiàn)場控制閘閘門的LCCU采用相相同的硬件件配置。CCPU板采采用研華公公司的PCCM-58864,CCPU的IIntell公司的PPentiium MMMX 1166MHHz,內(nèi)存存為64MMB,以太太網(wǎng)接口

8、為為10MHHz的RTTL-81139A。CPU板板通過PCC104總總線與采樣樣模塊和輸輸出模塊相相連。此外外該板上配配有顯示、鍵盤和鼠鼠標(biāo)等標(biāo)準(zhǔn)準(zhǔn)接口,便便于在線修修改和檢查查程序。硬硬盤選用容容量為4.3GB的的筆記本硬硬盤。166通道的AA/D采樣樣模塊PCCM-37718H完完成模擬量量的采集,分分辨率為112位;116通道的的數(shù)字I/O模塊PPCM-33730用用于開關(guān)量量的采集、控制閘門門的啟動(dòng)和和停止。為為便于現(xiàn)場場巡檢,LLCU配有有顯示中文文信息的LLCD模塊塊MGLSS-2400128,內(nèi)內(nèi)置T69963C控控制器。系系統(tǒng)采用了了16端口口的HUBB。為保證集中中站可靠地

9、地工作,集集中監(jiān)控站站、集中維維護(hù)站采用用工業(yè)PCC,配有IIntell公司的PP處理器,2256MBB內(nèi)存和440GB的的大硬盤,TTCP/IIP通信由由3COMM公司的110/1000MbppsPCII網(wǎng)卡3CC905CC來完成。2.2 系系統(tǒng)軟件構(gòu)構(gòu)成系統(tǒng)的軟件件也分為兩兩部分。集集中監(jiān)控站站采用Wiindowws20000操作系系統(tǒng),并安安裝有MYYSQL-3.233.49 for Winddows服服務(wù)器軟件件和監(jiān)控軟軟件;維護(hù)護(hù)也采用WWindoows20000操作作系統(tǒng)。此此外裝有MMYSQLL的客戶端端軟件包和和維護(hù)及診診斷軟件。監(jiān)控軟件件和維護(hù)及及診斷軟件件均用Viisual

10、l C+開發(fā)。LCU的軟軟件包括實(shí)實(shí)時(shí)Linnux操作作系統(tǒng)、數(shù)數(shù)據(jù)庫客戶戶端軟件和和控制程序序。在LCCU中,操操作系統(tǒng)RRedhaat6.22經(jīng)升級(jí)和和安裝RTTLinuux后被改改造成實(shí)時(shí)時(shí)Linuux。升級(jí)級(jí)后的核為為Linuux-2.2.188,RTLLinuxx的版本號(hào)號(hào)為RTLLinuxx2.2 for Linuux-2.2.188。數(shù)據(jù)庫庫的客戶端端程序包為為MYSQQL-3.23.449RPMM??刂瞥坛绦虬▽?shí)實(shí)時(shí)控制程程序和非實(shí)實(shí)時(shí)程序兩兩部分。3 系統(tǒng)設(shè)設(shè)計(jì)的關(guān)鍵鍵問題現(xiàn)場單元中中與實(shí)現(xiàn)控控制部分和和非實(shí)時(shí)控控制部分程程序相對(duì)應(yīng)應(yīng)的文件為為gateectl_moduul

11、e.cc和gattectll_appp.c。二二者由gccc編譯后后生成目標(biāo)標(biāo)文件gaatecttl_moodulee.o和ggatecctl_aapp.oo。前者為為內(nèi)核模塊塊,嵌入到到RTLiinux核核中,用于于實(shí)時(shí)采集集和實(shí)時(shí)控控制輸出,運(yùn)運(yùn)行于內(nèi)核核態(tài)。后者者為Linnux應(yīng)用用環(huán)境,運(yùn)運(yùn)行于用戶戶空間,完完成數(shù)據(jù)的的預(yù)處理、訪問數(shù)據(jù)據(jù)庫和人機(jī)機(jī)接口等工工作。3.1 內(nèi)內(nèi)核模塊內(nèi)核模塊程程序按多線線程模式編編寫,RTTLinuux提供了了與多線程程編程相應(yīng)應(yīng)的APII函數(shù)。RTLinnux2.2內(nèi)核中中,完成實(shí)實(shí)時(shí)任務(wù)的的模塊主要要包括以下下兩個(gè)功能能函數(shù):Int iinit_mod

12、uule();Void cleaanup_moduule()。前者在模塊塊第一次裝裝入核中時(shí)時(shí)被調(diào)用,完完成實(shí)時(shí)任任務(wù)的參數(shù)數(shù)(優(yōu)先級(jí)級(jí)別、中斷斷周期等)的的設(shè)置,進(jìn)進(jìn)行任務(wù)的的啟動(dòng)和終終止等操作作。后者在在模塊卸載載時(shí)被調(diào)用用,一般在在調(diào)試或系系統(tǒng)退出時(shí)時(shí)使用。模模塊中可啟啟動(dòng)多個(gè)任任務(wù),本系系統(tǒng)在實(shí)時(shí)時(shí)部分只設(shè)設(shè)計(jì)一個(gè)實(shí)實(shí)時(shí)任務(wù)即即Taskk1。 啟動(dòng)動(dòng)實(shí)時(shí)任務(wù)務(wù)前必須進(jìn)進(jìn)行初始化化。iniit_moodulee()中的的初始化工工作包括以以下三部分分:為保證內(nèi)內(nèi)核態(tài)的實(shí)實(shí)時(shí)進(jìn)程與與用戶空間間的非實(shí)時(shí)時(shí)進(jìn)程間交交換信息。須創(chuàng)建33個(gè)RTLL-FIFFO,具體體為:rttf1用于于實(shí)時(shí)進(jìn)程程

13、與非實(shí)時(shí)時(shí)進(jìn)程間的的數(shù)據(jù)交換換,數(shù)據(jù)包包括采集到到的模擬量量和數(shù)字量量;rtff3用于非非實(shí)時(shí)進(jìn)程程向?qū)崟r(shí)進(jìn)進(jìn)程傳遞控控制命令字字,以啟動(dòng)動(dòng)和終止實(shí)實(shí)時(shí)任務(wù);rtf22用于保存存經(jīng)ttff3傳遞的的實(shí)時(shí)任務(wù)務(wù)的控制命命令字。創(chuàng)創(chuàng)建工作由由RTLiinux提提供的APPI函數(shù)rrtf_ccreatte(n,buf)來完成。創(chuàng)建實(shí)時(shí)時(shí)任務(wù)Taask1對(duì)對(duì)應(yīng)的線程程,并設(shè)定定其調(diào)度優(yōu)優(yōu)先級(jí),由由API函函數(shù)pthhreadd_creeate來來完成。當(dāng)非實(shí)時(shí)時(shí)進(jìn)程通過過rtf33進(jìn)行控制制命令傳遞遞時(shí),實(shí)時(shí)時(shí)進(jìn)程應(yīng)及及時(shí)響應(yīng)。因此必須須在實(shí)時(shí)程程序中建立立跟蹤rttf3變化化的子程序序,調(diào)用rrtf

14、_ccreatte_haandleer(3,&dataa_hanndlerr)來完成成此功能。內(nèi)核態(tài)的主主體程序有有兩種實(shí)現(xiàn)現(xiàn)方式:中中斷處理和和周期實(shí)時(shí)時(shí)線程方式式。本系統(tǒng)統(tǒng)采用周期期性實(shí)時(shí)線線,即周期期性地執(zhí)行行數(shù)據(jù)采集集、輸出控控制結(jié)果以以及與處于于用戶空間間中的非實(shí)實(shí)時(shí)進(jìn)程交交換數(shù)據(jù)。具體過程程見圖4。在編寫實(shí)時(shí)時(shí)程序時(shí),應(yīng)應(yīng)特別注意意的是:實(shí)實(shí)時(shí)任務(wù)運(yùn)運(yùn)行在內(nèi)核核水平,是是為了提供供對(duì)計(jì)算機(jī)機(jī)硬件的直直接訪問能能力,為避避免不確定定的延遲,RRTLinnux給代代碼和數(shù)據(jù)據(jù)分配固定定的內(nèi)存空空間。實(shí)時(shí)時(shí)任務(wù)不能能使用Liinux的的系統(tǒng)調(diào)用用及Linnux中的的程序與數(shù)數(shù)據(jù)結(jié)構(gòu),否否

15、則難以保保證數(shù)據(jù)的的一致性。此外應(yīng)控控制實(shí)時(shí)程程序的執(zhí)行行時(shí)間,編編寫程序時(shí)時(shí)應(yīng)注意包包含與APPI函數(shù)對(duì)對(duì)應(yīng)的頭文文件。內(nèi)核程序中中與RT-FIFOO相關(guān)的函函數(shù)有:rtf_ccreatte():創(chuàng)建RTT-FIFFO。rtf_gget():從RTT-FIFFO讀數(shù)據(jù)據(jù)。rtf_pput():向RTT-FIFFO寫數(shù)據(jù)據(jù)。rtf_ccreatte_haandleer():建立響應(yīng)應(yīng)RT-FFIFO變變化的子程程序。內(nèi)核程序中中與實(shí)時(shí)任任務(wù)線程相相關(guān)的函數(shù)數(shù)有:pthreead_ccreatte():創(chuàng)建實(shí)時(shí)時(shí)任務(wù)對(duì)應(yīng)應(yīng)的線程。pthreead_wwait_np():將當(dāng)前前線程掛起起,直至下

16、下一個(gè)周期期線程。pthreead_mmakepperioodic_np():設(shè)置線線程的屬性性并啟動(dòng)線線程。pthreead_ssuspeend_nnp():將本線程程無限期掛掛起,即終終止任務(wù)。在調(diào)試階段段,需要將將有bugg的模塊卸卸載。該項(xiàng)項(xiàng)工作由ccleannup_mmodulle()來來完成。在在卸載模塊塊時(shí)將rttf1、rrf2和rrtf3撤撤銷,并撤撤銷實(shí)時(shí)任任務(wù)Tassk1。3.2 應(yīng)應(yīng)用程序Linuxx下應(yīng)用程程序gattect11_appp工作流程程見圖4,其其程序用LLinuxx下的C語語言開發(fā)。集中監(jiān)控控站和維護(hù)護(hù)站的程序序在Winndowss下用Viisuall C

17、+開發(fā)。其其中有幾點(diǎn)點(diǎn)要說明:RT-FFIFO被被Linuux視為字字符設(shè)備,因因此可以通通過調(diào)用oopen(/deev/rttf1,O_RDDONLYY)來獲得得rtf11的指針,rrtf2的的rtf33類似。獲獲得指針后后通過reead和wwritee函數(shù)實(shí)現(xiàn)現(xiàn)對(duì)RT_FIFOO的讀寫操操作。程序中調(diào)調(diào)用sellect函函數(shù)檢查RRT_FIIFO是否否忙,以避避免讀RTT_FIFFO時(shí)出現(xiàn)現(xiàn)阻塞現(xiàn)象象。LCD顯顯示模塊MMGLS-2401128內(nèi)置置智能控制制器,只需需將待顯示示的數(shù)據(jù)送送控制器的的顯示緩沖沖區(qū)就能實(shí)實(shí)現(xiàn)顯示功功能,數(shù)據(jù)據(jù)顯示不會(huì)會(huì)占用系統(tǒng)統(tǒng)過多的時(shí)時(shí)間。 系系統(tǒng)數(shù)據(jù)傳傳輸

18、和維護(hù)護(hù)通過網(wǎng)絡(luò)絡(luò)數(shù)據(jù)庫來來實(shí)現(xiàn)。數(shù)數(shù)據(jù)庫采用用客戶端/服務(wù)器模模塊,將LLCU、集集中維護(hù)站站設(shè)置為客客戶端,將將集中監(jiān)控控站設(shè)置為為服務(wù)器。本系統(tǒng)采采用基于TTCP/IIP協(xié)議的的MYSQQL數(shù)據(jù)庫庫為實(shí)現(xiàn)數(shù)數(shù)據(jù)管理。MYSQQL是一個(gè)個(gè)多用戶、多線程的的SQL數(shù)數(shù)據(jù)庫服務(wù)務(wù)器,由客客戶端/服服務(wù)器結(jié)構(gòu)構(gòu)來實(shí)現(xiàn)。它由一個(gè)個(gè)服務(wù)器守守護(hù)程序mmysqlld和不同同的客戶程程序及庫組組成,使用用TCP/IP把多多個(gè)客戶(LLCU等)連連接到一個(gè)個(gè)服務(wù)器(集集中監(jiān)控站站)上。在在運(yùn)行前應(yīng)應(yīng)將主機(jī)名名、IP地地址等設(shè)備備就緒,在在LCU的的應(yīng)用程序序gateectl_app中中應(yīng)包含MMYSQLL.h頭文文件,其中中有MYSSQL的AAPI函數(shù)數(shù)的具體實(shí)實(shí)現(xiàn)。在用用戶空間,CC語言程序序通過這些些API函函數(shù)訪問遠(yuǎn)遠(yuǎn)程的數(shù)據(jù)據(jù)庫服務(wù)器器。數(shù)據(jù)的預(yù)預(yù)處理:為為防止被干干擾的數(shù)據(jù)據(jù)上傳到服服務(wù)器,應(yīng)應(yīng)用程序?qū)?duì)數(shù)據(jù)進(jìn)行行濾波,再再對(duì)數(shù)據(jù)進(jìn)進(jìn)行分類。經(jīng)過預(yù)處處理后的數(shù)數(shù)據(jù)才可以以送數(shù)據(jù)緩緩沖區(qū),通通過A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論