基于rtlinux的實時控制系統_第1頁
基于rtlinux的實時控制系統_第2頁
基于rtlinux的實時控制系統_第3頁
基于rtlinux的實時控制系統_第4頁
基于rtlinux的實時控制系統_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、天馬行空官方博客: ;QQ:1318241189;QQ群:175569632基于RTLinux的實時控制系統摘要:從技術背景、系統結構、硬件和軟件設計等方面論述了基于RTLinux的閘門實時控制系統的組成、原理以及實現方法,并著重分析了軟件實現的關鍵問題。     關鍵詞:RTLinux 實時控制 TCP/IP MYSQL數據庫在水電站閘門控制系統中,設備地理位置分散、控制分散,基于常規繼電器的控制系統不能滿足電廠無人值班控制系統和全廠綜合自動化的要求,必須將智能控制和工業網絡相結合,實現實時控制的同時又能對設備進行智能管理和維護。目前比較常用的控制系統大多由PL

2、C構成,成本較高,缺乏客戶定制的靈活性。本文從系統功能實現和經濟指標兩個方面考慮,半基于RTLinux的控制平臺、工業以太網和數據庫技術引入閘門控制系統。1 RTLlinux、工業以太網和數據庫RTLinux是由新墨西大學的Victor Yodaiken等人開發的,現在已有商業化的版本推出。在RTLinux面世之前,Linux在實時性方面作過一些嘗試。在POSIX1.b中,規定了實時進程的一些標準,但由于Linux內核的不可搶先性,真正的實時進程無法在標準的Linux環境下實現。RTLinux采用簡單而有效的方法解決了此問題而不用重寫Linux內核代碼。RTLinux實現了一個高效的可搶先的實

3、時調度核心,全面接管中斷,并把Linux作為此實時核心的一個優先級最低的進程運行。當有實時任務需要處理時,RTLinux運行實時任務;無實時任務時,RTLinux運行Linux的非實時進程。圖1是RTLinux的結構圖。為保證實時進程與非實時Linux進程部順序進行數據交換,RTLinux引入了RT-FIFO隊列。RT-FIFO被Linux視為字符設備,最多可達150個,分別命名為/der/rtf0、/dev/rtf1/dev/rtf63。最大的RT-FIFO數量在系統內核編譯時設定。圖2說明了RT-FIFO的工作原理。RTLinux程序運行于兩個空間:用戶空間內核態。RTLinux提供了應用

4、程序接口,借助這些API函數將實時處理部分編寫成內核模塊,并裝載到RTLinux內核中,運行于RTLinux的內核態。非實時部分的應用程序則在Linux下的用戶空間中執行,這樣可以發揮Linux對網絡和數據庫的強大支持功能。TCP/IP協議和以太網在Internet上的成功應用吸引著越來越多控制程師。盡管以太網的時間不確定性給以太網應用于工業控制現場的實時性帶來了很多爭論,但是實際應用中,經網絡傳輸的數據絕大多數用于系統管理和維護等方面,用于實時控制的數據傳輸很少,這也是基于管理集中、控制分散的系統設計策略考慮的。在較高的以太網傳輸速度下,現場智能處理單元的處理速度才是傳輸延遲的主要原因。本系

5、統現場控制單元采用高速處理器,并采用RTLinux作為現場控制單元的控制平臺,直接用以太網傳輸數據,系統的網絡層次減少,信號的傳輸實時性也得到提高。目前,有許多數據庫開發商提供了Linux平臺上的數據庫軟件,例如Oracle、Sybase、Informix和MYSQL等都推出了Linux版本。基于RTLinux的控制系統在實時控制領域有巨大的潛力。2 系統組成本系統分為現場和集中級。現場控制級由分散在現場的4個現場控制單元控制,分別完成閘門位置、油缸油壓和油路狀態等的采集,現場操作按鈕的監視以及閘門提升和下降的控制等。集中級由集中監控站、維護站組成,分別執行監視、智能維護及診斷等功能。打印機用

6、于數據的硬備份、報表的輸出。系統結構如圖3所示。2.1 系統硬件構成在工業控制系統中通常采用PLC作為現場的控制核心。PLC的不足一方面在于其較高的價格,另一方面在于其難以實現非順序控制算法,以及缺乏對TCP/IP靈活的支持。本系統采用嵌入式PC作為控制單元的核心,開發人員可自行開發外圍接口板,根據系統需要靈活組態,既經濟又能使用高級語言開發控制程序。現場控制閘門的LCU采用相同的硬件配置。CPU板采用研華公司的PCM-5864,CPU的Intel公司的Pentium MMX 166MHz,內存為64MB,以太網接口為10MHz的RTL-8139A。CPU板通過PC104總線與采樣模塊和輸出模

7、塊相連。此外該板上配有顯示、鍵盤和鼠標等標準接口,便于在線修改和檢查程序。硬盤選用容量為4.3GB的筆記本硬盤。16通道的A/D采樣模塊PCM-3718H完成模擬量的采集,分辨率為12位;16通道的數字I/O模塊PCM-3730用于開關量的采集、控制閘門的啟動和停止。為便于現場巡檢,LCU配有顯示中文信息的LCD模塊MGLS-240128,內置T6963C控制器。系統采用了16端口的HUB。為保證集中站可靠地工作,集中監控站、集中維護站采用工業PC,配有Intel公司的P處理器,256MB內存和40GB的大硬盤,TCP/IP通信由3COM公司的10/100MbpsPCI網卡3C905C來完成。

8、2.2 系統軟件構成系統的軟件也分為兩部分。集中監控站采用Windows2000操作系統,并安裝有MYSQL-3.23.49 for Windows服務器軟件和監控軟件;維護也采用Windows2000操作系統。此外裝有MYSQL的客戶端軟件包和維護及診斷軟件。監控軟件和維護及診斷軟件均用Visual C+開發。LCU的軟件包括實時Linux操作系統、數據庫客戶端軟件和控制程序。在LCU中,操作系統Redhat6.2經升級和安裝RTLinux后被改造成實時Linux。升級后的核為Linux-2.2.18,RTLinux的版本號為RTLinux2.2 for Linux-2.2.18。數據庫的客

9、戶端程序包為MYSQL-3.23.49RPM。控制程序包括實時控制程序和非實時程序兩部分。3 系統設計的關鍵問題現場單元中與實現控制部分和非實時控制部分程序相對應的文件為gatectl_module.c和gatectl_app.c。二者由gcc編譯后生成目標文件gatectl_module.o和gatectl_app.o。前者為內核模塊,嵌入到RTLinux核中,用于實時采集和實時控制輸出,運行于內核態。后者為Linux應用環境,運行于用戶空間,完成數據的預處理、訪問數據庫和人機接口等工作。3.1 內核模塊內核模塊程序按多線程模式編寫,RTLinux提供了與多線程編程相應的API函數。RTLi

10、nux2.2內核中,完成實時任務的模塊主要包括以下兩個功能函數:Int init_module();Void cleanup_module()。前者在模塊第一次裝入核中時被調用,完成實時任務的參數(優先級別、中斷周期等)的設置,進行任務的啟動和終止等操作。后者在模塊卸載時被調用,一般在調試或系統退出時使用。模塊中可啟動多個任務,本系統在實時部分只設計一個實時任務即Task1。    啟動實時任務前必須進行初始化。init_module()中的初始化工作包括以下三部分:·為保證內核態的實時進程與用戶空間的非實時進程間交換信息。須創建3個RTL-FIFO,具

11、體為:rtf1用于實時進程與非實時進程間的數據交換,數據包括采集到的模擬量和數字量;rtf3用于非實時進程向實時進程傳遞控制命令字,以啟動和終止實時任務;rtf2用于保存經ttf3傳遞的實時任務的控制命令字。創建工作由RTLinux提供的API函數rtf_create(n,buf)來完成。·創建實時任務Task1對應的線程,并設定其調度優先級,由API函數pthread_create來完成。·當非實時進程通過rtf3進行控制命令傳遞時,實時進程應及時響應。因此必須在實時程序中建立跟蹤rtf3變化的子程序,調用rtf_create_handler(3,&data_ha

12、ndler)來完成此功能。內核態的主體程序有兩種實現方式:中斷處理和周期實時線程方式。本系統采用周期性實時線,即周期性地執行數據采集、輸出控制結果以及與處于用戶空間中的非實時進程交換數據。具體過程見圖4。在編寫實時程序時,應特別注意的是:實時任務運行在內核水平,是為了提供對計算機硬件的直接訪問能力,為避免不確定的延遲,RTLinux給代碼和數據分配固定的內存空間。實時任務不能使用Linux的系統調用及Linux中的程序與數據結構,否則難以保證數據的一致性。此外應控制實時程序的執行時間,編寫程序時應注意包含與API函數對應的頭文件。內核程序中與RT-FIFO相關的函數有:rtf_create()

13、:創建RT-FIFO。rtf_get():從RT-FIFO讀數據。rtf_put():向RT-FIFO寫數據。rtf_create_handler():建立響應RT-FIFO變化的子程序。內核程序中與實時任務線程相關的函數有:pthread_create():創建實時任務對應的線程。pthread_wait_np():將當前線程掛起,直至下一個周期線程。pthread_makeperiodic_np():設置線程的屬性并啟動線程。pthread_suspend_np():將本線程無限期掛起,即終止任務。在調試階段,需要將有bug的模塊卸載。該項工作由cleanup_module()來完成。在卸

14、載模塊時將rtf1、rf2和rtf3撤銷,并撤銷實時任務Task1。3.2 應用程序Linux下應用程序gatect1_app工作流程見圖4,其程序用Linux下的C語言開發。集中監控站和維護站的程序在Windows下用Visual C+開發。其中有幾點要說明:·RT-FIFO被Linux視為字符設備,因此可以通過調用open("/dev/rtf1",O_RDONLY)來獲得rtf1的指針,rtf2的rtf3類似。獲得指針后通過read和write函數實現對RT_FIFO的讀寫操作。·程序中調用select函數檢查RT_FIFO是否忙,以避免讀RT_FI

15、FO時出現阻塞現象。·LCD顯示模塊MGLS-240128內置智能控制器,只需將待顯示的數據送控制器的顯示緩沖區就能實現顯示功能,數據顯示不會占用系統過多的時間。    ·系統數據傳輸和維護通過網絡數據庫來實現。數據庫采用客戶端/服務器模塊,將LCU、集中維護站設置為客戶端,將集中監控站設置為服務器。本系統采用基于TCP/IP協議的MYSQL數據庫為實現數據管理。MYSQL是一個多用戶、多線程的SQL數據庫服務器,由客戶端/服務器結構來實現。它由一個服務器守護程序mysqld和不同的客戶程序及庫組成,使用TCP/IP把多個客戶(LCU等)連接到一個服務器(集中監控站)上。在運行前應將主機名、IP地址等設備就緒,在LCU的應用程序gatectl_app中應包含MYSQL.h頭文件,其中有MYSQL的API函數的具體實現。在用戶空間,C語言程序通過這些API函數訪問遠程的數據庫服務器。·數據的預處理:為防止被干擾的數據上傳到服務器,應用程序對數據進行濾波,再對數據進行分類。經過預處理后的數據才可以送數

溫馨提示

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

評論

0/150

提交評論