999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于多線程技術(shù)的測(cè)控系統(tǒng)軟件設(shè)計(jì)

2016-09-09 02:51:32宋國(guó)堃趙世平
電子設(shè)計(jì)工程 2016年16期
關(guān)鍵詞:系統(tǒng)

楊 珂,宋國(guó)堃,趙世平

(四川大學(xué) 制造科學(xué)與工程學(xué)院,四川 成都 610065)

基于多線程技術(shù)的測(cè)控系統(tǒng)軟件設(shè)計(jì)

楊 珂,宋國(guó)堃,趙世平

(四川大學(xué) 制造科學(xué)與工程學(xué)院,四川 成都610065)

根據(jù)某系統(tǒng)軟件設(shè)計(jì)的需要,開發(fā)了基于多線程技術(shù)的測(cè)控系統(tǒng)軟件。本文中所介紹的軟件是通過微軟.Net平臺(tái)下的C#語言實(shí)現(xiàn)的。該語言平臺(tái)提供強(qiáng)大的線程模型,完整的線程接口能夠滿足對(duì)線程操作的需要。軟件核心采用多線程技術(shù),將數(shù)據(jù)采集、試驗(yàn)控制、UI交互以及安全監(jiān)測(cè)等功能模塊放在不同線程內(nèi)執(zhí)行。線程同步技術(shù)保證了線程之間對(duì)象高速傳輸?shù)臏?zhǔn)確性。該軟件設(shè)計(jì)方式不僅大幅度提高了軟件的穩(wěn)定性和可靠性,還充分利用了計(jì)算機(jī)的系統(tǒng)資源從而加快系統(tǒng)工作效率。

多線程;線程同步;測(cè)控系統(tǒng);C#

文中所介紹的系統(tǒng)是集機(jī)械、液壓、電氣以及計(jì)算機(jī)于一體的工業(yè)測(cè)控系統(tǒng)。本系統(tǒng)不僅要滿足對(duì)各部分模擬數(shù)字信號(hào)采集與輸出的需要,同時(shí)要實(shí)現(xiàn)系統(tǒng)復(fù)雜的試驗(yàn)控制功能。系統(tǒng)軟件要完成數(shù)據(jù)采集、試驗(yàn)控制、UI人機(jī)交互以及安全監(jiān)測(cè)等功能。傳統(tǒng)的測(cè)控軟件大多使用面向過程的編程模式,根據(jù)系統(tǒng)任務(wù)的需要自上至下的執(zhí)行程序[1]。該編程模式顯然無法滿足本系統(tǒng)多任務(wù)同步執(zhí)行以及高速數(shù)據(jù)采集控制的需要。

根據(jù)系統(tǒng)軟件的功能需要,采用多線程作為軟件的核心技術(shù)。本軟件使用微軟Visual Studio 2013平臺(tái)下的C#語言進(jìn)行開發(fā)。該平臺(tái)的.Net Framework 4.5托管編碼環(huán)境提供完整并且功能強(qiáng)大的線程模型[2]。

依據(jù)該模型將整個(gè)程序分成若干功能模塊,把每個(gè)功能模塊放在不同的線程內(nèi)執(zhí)行。該方式依托多線程技術(shù)旨在把軟件功能模塊化,從而簡(jiǎn)化了軟件的框架結(jié)構(gòu),從根本上實(shí)現(xiàn)系統(tǒng)的功能要求。

1 多線程技術(shù)

1.1多線程介紹

多線程技術(shù)就是允許一個(gè)復(fù)雜的應(yīng)用程序能夠同時(shí)執(zhí)行若干個(gè)任務(wù)。這里所說的“同時(shí)”在計(jì)算機(jī)發(fā)展的不同階段代表著不同的含義。在計(jì)算機(jī)內(nèi)核上只存在一個(gè)CPU時(shí),多任務(wù)只能是并發(fā)執(zhí)行即多個(gè)任務(wù)在相同的時(shí)間間隔內(nèi)執(zhí)行。這里的時(shí)間間隔一般由操作系統(tǒng)來分配。由于計(jì)算機(jī)的執(zhí)行速度很快,從邏輯上來看多任務(wù)是在同時(shí)執(zhí)行。然而當(dāng)計(jì)算機(jī)進(jìn)入多核時(shí)代以后,一個(gè)CPU擁有多個(gè)內(nèi)核,這里的多任務(wù)就是并行執(zhí)行,每個(gè)任務(wù)同時(shí)在不同的計(jì)算機(jī)內(nèi)核上執(zhí)行,從而實(shí)現(xiàn)了真正意義上的同時(shí)執(zhí)行。單核時(shí)代使用多線程或者單線程來處理多個(gè)任務(wù)時(shí),實(shí)際上表現(xiàn)出來的處理效果并沒有太大差異。然而由于多線程之間任務(wù)的相互切換反而會(huì)耗費(fèi)大量的系統(tǒng)資源,從而會(huì)使得多線程的執(zhí)行效率更低[3]。相比之下,在多核計(jì)算機(jī)上使用多線程可以充分利用計(jì)算機(jī)的各個(gè)內(nèi)核的硬件資源,遠(yuǎn)遠(yuǎn)超過單線程的執(zhí)行效率。因此,本文所介紹的多線程都是在多核硬件平臺(tái)下的多線程,實(shí)現(xiàn)軟件各線程真正意義的并行執(zhí)行[4]。

1.2線程基本操作和線程同步

.Net平臺(tái)的C#語言提供了操作線程的豐富接口,其中包括操作線程的方法,例如線程的開啟、阻塞、銷毀、優(yōu)先級(jí)設(shè)置等;也包括獲取線程的各種屬性,例如獲取線程的名稱、標(biāo)識(shí)符、當(dāng)前執(zhí)行狀態(tài)等信息。在應(yīng)用程序中,對(duì)線程的常用操作包含以下步驟 (偽代碼示例):1)Thread myThread=new Thread()實(shí)例化一個(gè)線程對(duì)象myThread;2)myThead.Start (myMethod())開啟一個(gè)線程,myMethod()為線程所要執(zhí)行方法的引用;3)在需要阻塞線程的位置,語句Thread.Sleep (myMillisecond)使線程進(jìn)入休眠狀態(tài),myMillisecond為一個(gè)int型參數(shù)指定阻塞線程的時(shí)間,單位為毫秒;4)線程執(zhí)行完成myMethod()方法中的所有語句后,程序即會(huì)銷毀線程并且釋放線程所占用的系統(tǒng)資源,或者給myMethod()方法的循環(huán)體判斷標(biāo)志置位,并且在調(diào)用線程使用Join()方法等待線程終止[5]。

在多線程中,如果允許不同的工作線程對(duì)同一個(gè)對(duì)象進(jìn)行讀寫操作,這勢(shì)必會(huì)導(dǎo)致該對(duì)象訪問出錯(cuò)從而引發(fā)程序異常。線程同步技術(shù)利用互斥鎖以排他方式防止共享對(duì)象被同時(shí)訪問。互斥鎖工作的基本原理是在某個(gè)線程訪問共享對(duì)象前,向操作系統(tǒng)申請(qǐng)鎖對(duì)象,如果鎖被其他線程占有,說明其他線程正在訪問該共享對(duì)象,當(dāng)前線程則沒有訪問權(quán)限因此阻塞當(dāng)前線程,直到獲取鎖才結(jié)束阻塞狀態(tài);如果互斥鎖處于釋放狀態(tài),則當(dāng)前線程馬上獲取鎖并訪問共享對(duì)象,在訪問結(jié)束后釋放互斥鎖。使用這種方式,保證了程序在同一時(shí)刻只能有一個(gè)線程可以訪問共享對(duì)象[6]。C#語言提供的線程同步有Mutex、Monitor以及Lock等對(duì)象,使用方法均通過獲取互斥鎖、標(biāo)記訪問共享對(duì)象的臨界區(qū)、釋放互斥鎖等操作組成。

2 多線程在系統(tǒng)軟件中的詳細(xì)設(shè)計(jì)

2.1軟件框架介紹

文中所介紹的軟件根據(jù)系統(tǒng)的功能要求,人為的把程序各功能模塊放在以下多個(gè)獨(dú)立的線程中執(zhí)行,它們分別是數(shù)據(jù)采集線程(這里包括低速和高速采集兩個(gè)線程)、UI交互線程、試驗(yàn)控制線程以及安全監(jiān)測(cè)線程。線程間交互及邏輯關(guān)系如圖1所示。

圖1 程序框架圖

2.2線程功能詳解

2.2.1數(shù)據(jù)采集線程

數(shù)據(jù)采集作為測(cè)控系統(tǒng)軟件的基礎(chǔ)功能,通過在while函數(shù)中循環(huán)調(diào)用采集板卡的系統(tǒng)API函數(shù)為顯示、控制以及安全判斷提供系統(tǒng)模擬和數(shù)字信息。本軟件根據(jù)系統(tǒng)采集和控制的需要,將數(shù)據(jù)采集分為低速數(shù)據(jù)采集線程和高速數(shù)據(jù)采集線程。在本文的測(cè)控系統(tǒng)中,一部分模擬信號(hào)和數(shù)字信號(hào)僅作為輔助參考信號(hào)使用,例如液壓壓力、溫度、過濾器狀態(tài)等信號(hào)。低速線程采集的數(shù)據(jù)以觸發(fā)事件的形式將數(shù)據(jù)傳遞給UI顯示線程和試驗(yàn)控制線程和安全監(jiān)測(cè)線程。并且保證低速采集線程每采集一次數(shù)據(jù)睡眠10 ms,從而節(jié)約系統(tǒng)資源。相比較于低速采集線程,高速采集線程則負(fù)責(zé)采集系統(tǒng)需要采集頻率較高的拉壓力以及位移信號(hào),并且使用線程同步技術(shù)保證數(shù)據(jù)的高速傳輸。為了滿足系統(tǒng)試驗(yàn)控制線程的采樣要求,本系統(tǒng)選用Advantech公司的PCI1716數(shù)據(jù)采集卡。該采集板卡具有16位分辨率的8路差分輸入或16路單端輸入模擬信號(hào)采集功能,采樣頻率可達(dá)250 KS/s。軟件實(shí)測(cè)顯示,在線程全速采集無休眠操作的情況下單通道采集時(shí)間為160 μs/次,該采集速度可以滿足系統(tǒng)需求。

2.2.2UI交互線程

UI交互線程實(shí)現(xiàn)顯示試驗(yàn)界面以及響應(yīng)用戶操作的功能。該線程一方面把來自數(shù)據(jù)采集線程數(shù)據(jù)、試驗(yàn)控制線程的試驗(yàn)狀態(tài)以及安全監(jiān)測(cè)線程的狀態(tài)信息通過窗體的顯示控件直觀的表示出來,例如chart、richtextbox、label等控件;另一方面通過用戶觸發(fā)窗體控件的事件屬性來響應(yīng)其操作,軟件中即通過“開始試驗(yàn)”按鈕的Click()事件開啟試驗(yàn)控制線程。試驗(yàn)界面設(shè)計(jì)如圖2所示。

2.2.3試驗(yàn)控制線程

試驗(yàn)控制線程實(shí)現(xiàn)試驗(yàn)過程控制和數(shù)據(jù)保存的功能。線程同步的方式使得該線程與高速采集線程實(shí)現(xiàn)數(shù)據(jù)共享,從而保證了試驗(yàn)過程數(shù)據(jù)的高速采集。高速采集的數(shù)據(jù)一方面用于試驗(yàn)控制的判斷依據(jù),另一方面數(shù)據(jù)被保存到緩存數(shù)組中并定期保存到文件當(dāng)中以供查看歷史數(shù)據(jù)。該線程執(zhí)行的方法體中集合了整個(gè)試驗(yàn)的核心控制算法,依賴采集的實(shí)時(shí)數(shù)據(jù)、狀態(tài)標(biāo)志以及邏輯判斷等實(shí)現(xiàn)復(fù)雜的試驗(yàn)控制功能。

2.2.4安全監(jiān)測(cè)線程

安全監(jiān)測(cè)線程實(shí)時(shí)監(jiān)測(cè)整個(gè)系統(tǒng)的各項(xiàng)工作參數(shù)是否在安全參數(shù)范圍內(nèi),如果參數(shù)超標(biāo)則報(bào)警或者緊急停機(jī)。該線程在系統(tǒng)軟件啟動(dòng)后就開始運(yùn)行,直至退出軟件停止工作。這其中監(jiān)測(cè)的信號(hào)包括拉壓力、液壓壓力、溫度液位以及急停開關(guān)等信號(hào),這些信號(hào)同樣來自于數(shù)據(jù)采集線程。該線程也是一個(gè)低速線程,每監(jiān)測(cè)一個(gè)循環(huán)睡眠100 ms。

2.3線程同步實(shí)現(xiàn)

軟件為滿足系統(tǒng)對(duì)于實(shí)時(shí)高速數(shù)據(jù)采集的要求,在數(shù)據(jù)采集線程和試驗(yàn)控制線程之間實(shí)現(xiàn)數(shù)據(jù)共享對(duì)象的線程同步操作。線程同步具體代碼如圖3所示。這里選用Monitor對(duì)象來實(shí)現(xiàn)線程同步,數(shù)據(jù)共享對(duì)象為高速采集線程中的cacheBuf數(shù)組。如圖程序所示,高速采集線程T1對(duì)cacheBuf進(jìn)行寫操作,試驗(yàn)控制線程T2對(duì)其進(jìn)行讀操作。線程同步操作步驟:1)T1執(zhí)行Monitor.Enter()語句,獲取鎖并將T2線程阻塞在Monitor.Enter()語句處;2)T1執(zhí)行Monitor.Pulse()語句,通知阻塞在Monitor.Wait()語句處的線程進(jìn)入就緒狀態(tài);3)T1執(zhí)行Monitor.Wait()語句,釋放鎖并且進(jìn)入等待狀態(tài);4)此阻塞在Monitor.Entor()處的T2獲取鎖并執(zhí)行到Monitor. Pulse()通知阻塞在Monitor.Wait()的T1進(jìn)入就緒狀態(tài);5)T2執(zhí)行Monitor.Wait()語句,釋放鎖并且進(jìn)入等待狀態(tài),此時(shí)處于就緒狀態(tài)并阻塞在Monitor.Wait()處的T1重新獲取鎖,并執(zhí)行Monitor.Exit()并釋放鎖;6)由于T2阻塞在Monitor.Wait()處并處于等待狀態(tài),此時(shí)T1再次執(zhí)行Monitor.Enter()語句并再次獲取鎖。依次類推,保證在同一時(shí)間只有一個(gè)線程獲取能夠獲取對(duì)共享對(duì)象cacheBuf的獨(dú)占訪問權(quán)。

圖2 實(shí)驗(yàn)界面

圖3 線程同步圖

3 結(jié) 論

本文利用多線程技術(shù),一方面實(shí)現(xiàn)了測(cè)控系統(tǒng)軟件各功能模塊的代碼分離從而優(yōu)化了軟件框架,保證其可靠性和穩(wěn)定性;另一方面,多線程的引入大幅度提高系統(tǒng)資源的利用率從而提升軟件的整體執(zhí)行效率。這種基于多線程的測(cè)控軟件設(shè)計(jì)方法同時(shí)具有很高的復(fù)用性。本文軟件中的各功能模塊已在多個(gè)測(cè)控軟件中實(shí)現(xiàn)了充分的代碼復(fù)用,并且得到滿意的效果。

[1]武杰.快速可重組機(jī)械工程測(cè)控實(shí)驗(yàn)平臺(tái)的研制 [D].南京:南京航空航天大學(xué),2007.

[2]Tobin Titus,F(xiàn)abio Claudio Ferracchiati.C#線程參考手冊(cè)[M].北京:清華大學(xué)出版社,2003.

[3]眭俊華,劉慧娜,王建鑫,等.多核多線程技術(shù)綜述[J].計(jì)算機(jī)應(yīng)用,2013(33):239-242,261.

[4]劉權(quán)盛,楊洪斌,吳悅,等.同時(shí)多線程技術(shù)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008(4):963-967.

[5]Christian Nagel,Bill Evjen,Jay Glynn,等.C#高級(jí)編程[M]. 8版.北京:清華大學(xué)出版社,2013.

[6]楊宗德,呂光宏,劉雍.Linux高級(jí)程序設(shè)計(jì)[M].3版.北京:人民郵電出版社,2012.

The software design of measurement and control system based on multi-threading technology

YANG Ke,SONG Guo-kun,ZHAO Shi-ping
(Manufactory Science and Engineering Institute of Sichuan University,Chengdu 610065,China)

We developed a software of measurement and control system based on multi-threading technology according to the design need of a certain measurement and control system.The realization of the software in the article is through the C# language on the.Net platform,which providing with a powerful thread model and complete operation interfaces can meet the needs toward to the operation on threads.The core function of the software,which starts different threads to run the data acquisition,experiment control,UI interaction and safety monitoring functional modules,is multi-threading technology. Thread synchronization technology guaranteed the accuracy of high-speed objects transmission among different threads.On the one hand,this kind of design pattern enhances the stability and reliability of the software significantly,on the other hand,it can also takes full advantage of the computer's system resources to speed up the working efficiency of the system.

multi-threading;data synchronization;measurement and control system;C#

TN98

A

1674-6236(2016)16-0089-03

2015-08-25稿件編號(hào):201508133

楊珂(1991—),男,四川成都人,碩士。研究方向:儀器儀表工程。

猜你喜歡
系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
基于UG的發(fā)射箱自動(dòng)化虛擬裝配系統(tǒng)開發(fā)
半沸制皂系統(tǒng)(下)
FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統(tǒng) 德行天下
PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
主站蜘蛛池模板: 精品91在线| 国产日韩欧美一区二区三区在线| 一区二区无码在线视频| 欧美精品黑人粗大| 麻豆a级片| 久久亚洲美女精品国产精品| 国产午夜福利亚洲第一| 宅男噜噜噜66国产在线观看| 国产毛片高清一级国语| 18禁影院亚洲专区| 九色在线观看视频| 国产一区亚洲一区| 天天躁夜夜躁狠狠躁躁88| 精品视频在线一区| 老司机精品一区在线视频| 久久成人免费| 毛片免费观看视频| 视频一区视频二区中文精品| 欧美yw精品日本国产精品| 狠狠五月天中文字幕| 永久天堂网Av| 亚洲中文字幕日产无码2021| 无码国产伊人| 亚洲一区国色天香| 99热这里都是国产精品| 亚洲色图在线观看| 日本91在线| 国产精品理论片| 亚洲无码电影| 精品一区二区三区四区五区| 在线观看视频99| 婷婷色在线视频| 真实国产精品vr专区| 97青草最新免费精品视频| 美女内射视频WWW网站午夜| 国产青青操| 91福利在线观看视频| 欧美黄网在线| 亚洲永久免费网站| 国产视频一区二区在线观看 | 日韩av无码精品专区| 午夜无码一区二区三区在线app| 又爽又大又光又色的午夜视频| 亚洲一区二区三区中文字幕5566| 亚洲美女高潮久久久久久久| 九九九精品视频| 四虎永久免费地址| 天堂在线视频精品| 亚洲伦理一区二区| 色偷偷av男人的天堂不卡| 天天躁夜夜躁狠狠躁躁88| 乱色熟女综合一区二区| 色综合日本| 国产精品欧美激情| 亚洲国产精品国自产拍A| 亚洲不卡影院| 国产激情无码一区二区APP| 国产青榴视频| 蜜桃视频一区| 国产成人福利在线| 国产不卡国语在线| 午夜福利免费视频| 在线观看网站国产| 91免费观看视频| 老司国产精品视频91| 久久国产亚洲偷自| 婷婷综合色| 九九九精品成人免费视频7| 日本人妻丰满熟妇区| a毛片在线免费观看| 亚洲第一综合天堂另类专| 久久五月视频| 色呦呦手机在线精品| 国产精品白浆无码流出在线看| 成人欧美在线观看| 色婷婷在线影院| 国产精品太粉嫩高中在线观看 | 色天天综合| 国产一级一级毛片永久| a级毛片毛片免费观看久潮| 在线国产毛片手机小视频| 一级香蕉视频在线观看|