熟妇人妻中文字幕在线视频_无码人妻精品视频_久久躁夜夜躁狠狠躁_偷碰人妻无码视频

現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>基于RTLinux的實(shí)時(shí)控制系統(tǒng)

基于RTLinux的實(shí)時(shí)控制系統(tǒng)

時(shí)間:2023-02-21 00:16:06 電子通信論文 我要投稿
  • 相關(guān)推薦

基于RTLinux的實(shí)時(shí)控制系統(tǒng)

摘要:從技術(shù)背景、系統(tǒng)結(jié)構(gòu)、硬件和軟件設(shè)計(jì)等方面論述了基于RTLinux的閘門實(shí)時(shí)控制系統(tǒng)的組成、原理以及實(shí)現(xiàn)方法,并著重分析了軟件實(shí)現(xiàn)的關(guān)鍵問題。

    關(guān)鍵詞:RTLinux 實(shí)時(shí)控制 TCP/IP MYSQL數(shù)據(jù)庫

在水電站閘門控制系統(tǒng)中,設(shè)備地理位置分散、控制分散,基于常規(guī)繼電器的控制系統(tǒng)不能滿足電廠無人值班控制系統(tǒng)和全廠綜合自動化的要求,必須將智能控制和工業(yè)網(wǎng)絡(luò)相結(jié)合,實(shí)現(xiàn)實(shí)時(shí)控制的同時(shí)又能對設(shè)備進(jìn)行智能管理和維護(hù)。目前比較常用的控制系統(tǒng)大多由PLC構(gòu)成,成本較高,缺乏客戶定制的靈活性。本文從系統(tǒng)功能實(shí)現(xiàn)和經(jīng)濟(jì)指標(biāo)兩個方面考慮,半基于RTLinux的控制平臺、工業(yè)以太網(wǎng)和數(shù)據(jù)庫技術(shù)引入閘門控制系統(tǒng)。

1 RTLlinux、工業(yè)以太網(wǎng)和數(shù)據(jù)庫

RTLinux是由新墨西大學(xué)的Victor Yodaiken等人開發(fā)的,現(xiàn)在已有商業(yè)化的版本推出。在RTLinux面世之前,Linux在實(shí)時(shí)性方面作過一些嘗試。(范文先生網(wǎng)325224.com收集整理)在POSIX1.b中,規(guī)定了實(shí)時(shí)進(jìn)程的一些標(biāo)準(zhǔn),但由于Linux內(nèi)核的不可搶先性,真正的實(shí)時(shí)進(jìn)程無法在標(biāo)準(zhǔn)的Linux環(huán)境下實(shí)現(xiàn)。RTLinux采用簡單而有效的方法解決了此問題而不用重寫Linux內(nèi)核代碼。RTLinux實(shí)現(xiàn)了一個高效的可搶先的實(shí)時(shí)調(diào)度核心,全面接管中斷,并把Linux作為此實(shí)時(shí)核心的一個優(yōu)先級最低的進(jìn)程運(yùn)行。當(dāng)有實(shí)時(shí)任務(wù)需要處理時(shí),RTLinux運(yùn)行實(shí)時(shí)任務(wù);無實(shí)時(shí)任務(wù)時(shí),RTLinux運(yùn)行Linux的非實(shí)時(shí)進(jìn)程。圖1是RTLinux的結(jié)構(gòu)圖。

為保證實(shí)時(shí)進(jìn)程與非實(shí)時(shí)Linux進(jìn)程部順序進(jìn)行數(shù)據(jù)交換,RTLinux引入了RT-FIFO隊(duì)列。RT-FIFO被Linux視為字符設(shè)備,最多可達(dá)150個,分別命名為/der/rtf0、/dev/rtf1……/dev/rtf63。最大的RT-FIFO數(shù)量在系統(tǒng)內(nèi)核編譯時(shí)設(shè)定。圖2說明了RT-FIFO的工作原理。

RTLinux程序運(yùn)行于兩個空間:用戶空間內(nèi)核態(tài)。RTLinux提供了應(yīng)用程序接口,借助這些API函數(shù)將實(shí)時(shí)處理部分編寫成內(nèi)核模塊,并裝載到RTLinux內(nèi)核中,運(yùn)行于RTLinux的內(nèi)核態(tài)。非實(shí)時(shí)部分的應(yīng)用程序則在Linux下的用戶空間中執(zhí)行,這樣可以發(fā)揮Linux對網(wǎng)絡(luò)和數(shù)據(jù)庫的強(qiáng)大支持功能。

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

目前,有許多數(shù)據(jù)庫開發(fā)商提供了Linux平臺上的數(shù)據(jù)庫軟件,例如Oracle、Sybase、Informix和MYSQL等都推出了Linux版本;赗TLinux的控制系統(tǒng)在實(shí)時(shí)控制領(lǐng)域有巨大的潛力。

2 系統(tǒng)組成

本系統(tǒng)分為現(xiàn)場和集中級,F(xiàn)場控制級由分散在現(xiàn)場的4個現(xiàn)場控制單元控制,分別完成閘門位置、油缸油壓和油路狀態(tài)等的采集,現(xiàn)場操作按鈕的監(jiān)視以及閘門提升和下降的控制等。集中級由集中監(jiān)控站、維護(hù)站組成,分別執(zhí)行監(jiān)視、智能維護(hù)及診斷等功能。打印機(jī)用于數(shù)據(jù)的硬備份、報(bào)表的輸出。系統(tǒng)結(jié)構(gòu)如圖3所示。

2.1 系統(tǒng)硬件構(gòu)成

在工業(yè)控制系統(tǒng)中通常采用PLC作為現(xiàn)場的控制核心。PLC的不足一方面在于其較高的價(jià)格,另一方面在于其難以實(shí)現(xiàn)非順序控制算法,以及缺乏對TCP/IP靈活的支持。本系統(tǒng)采用嵌入式PC作為控制單元的核心,開發(fā)人員可自行開發(fā)外圍接口板,根據(jù)系統(tǒng)需要靈活組態(tài),既經(jīng)濟(jì)又能使用高級語言開發(fā)控制程序。

現(xiàn)場控制閘門的LCU采用相同的硬件配置。CPU板采用研華公司的PCM-5864,CPU的Intel公司的Pentium MMX 166MHz,內(nèi)存為64MB,以太網(wǎng)接口為10MHz的RTL-8139A。CPU板通過PC104總線與采樣模塊和輸出模塊相連。此外該板上配有顯示、鍵盤和鼠標(biāo)等標(biāo)準(zhǔn)接口,便于在線修改和檢查程序。硬盤選用容量為4.3GB的筆記本硬盤。16通道的A/D采樣模塊PCM-3718H完成模擬量的采集,分辨率為12位;16通道的數(shù)字I/O模塊PCM-3730用于開關(guān)量的采集、控制閘門的啟動和停止。為便于現(xiàn)場巡檢,LCU配有顯示中文信息的LCD模塊MGLS-240128,內(nèi)置T6963C控制器。系統(tǒng)采用了16端口的HUB。

為保證集中站可靠地工作,集中監(jiān)控站、集中維

護(hù)站采用工業(yè)PC,配有Intel公司的P處理器,256MB內(nèi)存和40GB的大硬盤,TCP/IP通信由3COM公司的10/100MbpsPCI網(wǎng)卡3C905C來完成。

2.2 系統(tǒng)軟件構(gòu)成

系統(tǒng)的軟件也分為兩部分。集中監(jiān)控站采用Windows2000操作系統(tǒng),并安裝有MYSQL-3.23.49 for Windows服務(wù)器軟件和監(jiān)控軟件;維護(hù)也采用Windows2000操作系統(tǒng)。此外裝有MYSQL的客戶端軟件包和維護(hù)及診斷軟件。監(jiān)控軟件和維護(hù)及診斷軟件均用Visual C++開發(fā)。

LCU的軟件包括實(shí)時(shí)Linux操作系統(tǒng)、數(shù)據(jù)庫客戶端軟件和控制程序。在LCU中,操作系統(tǒng)Redhat6.2經(jīng)升級和安裝RTLinux后被改造成實(shí)時(shí)Linux。升級后的核為Linux-2.2.18,RTLinux的版本號為RTLinux2.2 for Linux-2.2.18。數(shù)據(jù)庫的客戶端程序包為MYSQL-3.23.49RPM?刂瞥绦虬▽(shí)時(shí)控制程序和非實(shí)時(shí)程序兩部分。

3 系統(tǒng)設(shè)計(jì)的關(guān)鍵問題

現(xiàn)場單元中與實(shí)現(xiàn)控制部分和非實(shí)時(shí)控制部分程序相對應(yīng)的文件為gatectl_module.c和gatectl_app.c。二者由gcc編譯后生成目標(biāo)文件gatectl_module.o和gatectl_app.o。前者為內(nèi)核模塊,嵌入到RTLinux核中,用于實(shí)時(shí)采集和實(shí)時(shí)控制輸出,運(yùn)行于內(nèi)核態(tài)。后者為Linux應(yīng)用環(huán)境,運(yùn)行于用戶空間,完成數(shù)據(jù)的預(yù)處理、訪問數(shù)據(jù)庫和人機(jī)接口等工作。

3.1 內(nèi)核模塊

內(nèi)核模塊程序按多線程模式編寫,RTLinux提供了與多線程編程相應(yīng)的API函數(shù)。

RTLinux2.2內(nèi)核中,完成實(shí)時(shí)任務(wù)的模塊主要包括以下兩個功能函數(shù):

Int init_module();

Void cleanup_module()。

前者在模塊第一次裝入核中時(shí)被調(diào)用,完成實(shí)時(shí)任務(wù)的參數(shù)(優(yōu)先級別、中斷周期等)的設(shè)置,進(jìn)行任務(wù)的啟動和終止等操作。后者在模塊卸載時(shí)被調(diào)用,一般在調(diào)試或系統(tǒng)退出時(shí)使用。模塊中可啟動多個任務(wù),本系統(tǒng)在實(shí)時(shí)部分只設(shè)計(jì)一個實(shí)時(shí)任務(wù)即Task1。

    啟動實(shí)時(shí)任務(wù)前必須進(jìn)行初始化。init_module()中的初始化工作包括以下三部分:

·為保證內(nèi)核態(tài)的實(shí)時(shí)進(jìn)程與用戶空間的非實(shí)時(shí)進(jìn)程間交換信息。須創(chuàng)建3個RTL-FIFO,具體為:rtf1用于實(shí)時(shí)進(jìn)程與非實(shí)時(shí)進(jìn)程間的數(shù)據(jù)交換,數(shù)據(jù)包括采集到的模擬量和數(shù)字量;rtf3用于非實(shí)時(shí)進(jìn)程向?qū)崟r(shí)進(jìn)程傳遞控制命令字,以啟動和終止實(shí)時(shí)任務(wù);rtf2用于保存經(jīng)ttf3傳遞的實(shí)時(shí)任務(wù)的控制命令字。創(chuàng)建工作由RTLinux提供的API函數(shù)rtf_create(n,buf)來完成。

·創(chuàng)建實(shí)時(shí)任務(wù)Task1對應(yīng)的線程,并設(shè)定其調(diào)度優(yōu)先級,由API函數(shù)pthread_create來完成。

·當(dāng)非實(shí)時(shí)進(jìn)程通過rtf3進(jìn)行控制命令傳遞時(shí),實(shí)時(shí)進(jìn)程應(yīng)及時(shí)響應(yīng)。因此必須在實(shí)時(shí)程序中建立跟蹤rtf3變化的子程序,調(diào)用rtf_create_handler(3,&data_handler)來完成此功能。

內(nèi)核態(tài)的主體程序有兩種實(shí)現(xiàn)方式:中斷處理和周期實(shí)時(shí)線程方式。本系統(tǒng)采用周期性實(shí)時(shí)線,即周期性地執(zhí)行數(shù)據(jù)采集、輸出控制結(jié)果以及與處于用戶空間中的非實(shí)時(shí)進(jìn)程交換數(shù)據(jù)。具體過程見圖4。

在編寫實(shí)時(shí)程序時(shí),應(yīng)特別注意的是:實(shí)時(shí)任務(wù)運(yùn)行在內(nèi)核水平,是為了提供對計(jì)算機(jī)硬件的直接訪問能力,為避免不確定的延遲,RTLinux給代碼和數(shù)據(jù)分配固定的內(nèi)存空間。實(shí)時(shí)任務(wù)不能使用Linux的系統(tǒng)調(diào)用及Linux中的程序與數(shù)據(jù)結(jié)構(gòu),否則難以保證數(shù)據(jù)的一致性。此外應(yīng)控制實(shí)時(shí)程序的執(zhí)行時(shí)間,編寫程序時(shí)應(yīng)注意包含與API函數(shù)對應(yīng)的頭文件。

內(nèi)核程序中與RT-FIFO相關(guān)的函數(shù)有:

rtf_create():創(chuàng)建RT-FIFO。

rtf_get():從RT-FIFO讀數(shù)據(jù)。

rtf_put():向RT-FIFO寫數(shù)據(jù)。

rtf_create_handler():建立響應(yīng)RT-FIFO變化的子程序。

內(nèi)核程序中與實(shí)時(shí)任務(wù)線程相關(guān)的函數(shù)有:

pthread_create():創(chuàng)建實(shí)時(shí)任務(wù)對應(yīng)的線程。

pthread_wait_np():將當(dāng)前線程掛起,直至下一個周期線程。

pthread_makeperiodic_np():設(shè)置線程的屬性并啟動線程。

pthread_suspend_np():將本線程無限期掛起,即終止任務(wù)。

在調(diào)試階段,需要將有bug的模塊卸載。該項(xiàng)工作由cleanup_module()來完成。在卸載模塊時(shí)將rtf1、rf2和rtf3撤銷,并撤銷實(shí)時(shí)任務(wù)Task1。

3.2 應(yīng)用程序

Linux下應(yīng)用程序gatect1_app工作流程見圖4,其程序用Linux下的C語言開發(fā)。集中監(jiān)控站和維護(hù)站的程序在Windows下用Visual C++開發(fā)。其中有幾點(diǎn)要說明:

·RT-FIFO被Linux視為字符設(shè)備,因此可以通過調(diào)用open("/dev/rtf1",O_RDONLY)來獲得rtf1的指針,rtf2的rtf3類似。獲得指針后通過read和write函數(shù)實(shí)現(xiàn)對RT_FIFO的讀寫操作。

·程序中調(diào)用select函數(shù)檢查RT_FIFO是否忙,以避免讀RT_FIFO時(shí)出現(xiàn)阻塞現(xiàn)象。

·LCD顯示模塊MGLS-240128內(nèi)置智能控制器,只需將待顯示的數(shù)據(jù)送控制器的顯示緩沖區(qū)就能實(shí)現(xiàn)顯示功能,數(shù)據(jù)顯示不會占用系統(tǒng)過多的時(shí)間。

    ·系統(tǒng)數(shù)據(jù)傳輸和維護(hù)通過網(wǎng)絡(luò)數(shù)據(jù)庫來實(shí)現(xiàn)。數(shù)據(jù)庫采用客戶端/服務(wù)器模塊,將LCU、集中維護(hù)站設(shè)置為客戶端,將集中監(jiān)控站設(shè)置為服務(wù)器。本系統(tǒng)采用基于TCP/IP協(xié)議的MYSQL數(shù)據(jù)庫為實(shí)現(xiàn)數(shù)據(jù)管理。MYSQL是一個多用戶、多線程的SQL數(shù)據(jù)庫服務(wù)器,由客戶端/服務(wù)器結(jié)構(gòu)來實(shí)現(xiàn)。它由一個服務(wù)器守護(hù)程序mysqld和不同的客戶程序及庫組成,使用TCP/IP把多個客戶(LCU等)連接到一個服務(wù)器(集中監(jiān)控站)上。在運(yùn)行前應(yīng)將主機(jī)名、IP地址等設(shè)備就緒,在LCU的應(yīng)用程序gatectl_app中應(yīng)包含MYSQL.h頭文件,其中有MYSQL的API函數(shù)的具體實(shí)現(xiàn)。在用戶空間,C語言程序通過這些API函數(shù)訪問遠(yuǎn)程的數(shù)據(jù)庫服務(wù)器。

·數(shù)據(jù)的預(yù)處理:為防止被干擾的數(shù)據(jù)上傳到服務(wù)器,應(yīng)用程序?qū)?shù)據(jù)進(jìn)行濾波,再對數(shù)據(jù)進(jìn)行分類。經(jīng)過預(yù)處理后的數(shù)據(jù)才可以送數(shù)據(jù)緩沖區(qū),通過API函數(shù)向數(shù)據(jù)庫服務(wù)器上傳。

4 應(yīng)用效果

目前該系統(tǒng)正在試驗(yàn)室運(yùn)行。從連續(xù)運(yùn)轉(zhuǎn)的情況看,控制實(shí)時(shí)性和可靠性均達(dá)到了設(shè)計(jì)要求,網(wǎng)絡(luò)和數(shù)據(jù)庫均運(yùn)行正常,可見本設(shè)計(jì)思路是可行的。下一步將設(shè)放到工業(yè)現(xiàn)場進(jìn)一步驗(yàn)證。RTLinux實(shí)現(xiàn)實(shí)時(shí)控制功能并與Linux有機(jī)結(jié)合,這一設(shè)計(jì)思路既滿足了實(shí)時(shí)控制系統(tǒng)對響應(yīng)的快速性、時(shí)間的精確性和控制的可預(yù)測性的要求,又充分發(fā)揮了Linux對網(wǎng)絡(luò)和數(shù)據(jù)庫的支持功能。將RTLinux引入控制領(lǐng)域,拓寬了Linux的應(yīng)用范圍,必須加速工業(yè)控制的信息化。


【基于RTLinux的實(shí)時(shí)控制系統(tǒng)】相關(guān)文章:

RTLinux下的一種實(shí)時(shí)應(yīng)用通信機(jī)制08-06

基于ARM的實(shí)時(shí)測控系統(tǒng)開發(fā)平臺08-06

工業(yè)Ethernet在遠(yuǎn)程實(shí)時(shí)控制系統(tǒng)中的具體應(yīng)用08-06

基于OMAP的MPEG—4實(shí)時(shí)解碼器的實(shí)現(xiàn)08-06

基于WE904的實(shí)時(shí)圖像無線傳輸設(shè)計(jì)08-06

基于單片機(jī)的實(shí)時(shí)傳真信息監(jiān)測系統(tǒng)08-06

實(shí)現(xiàn)基于Spring框架應(yīng)用的權(quán)限控制系統(tǒng)08-19

基于PCI總線的實(shí)時(shí)圖像識別與跟蹤平臺設(shè)計(jì)08-06

基于USB和多線程的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)08-06