亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        多線程技術在土體三軸流變試驗機上的應用

        2016-06-23 02:53:18陳慶峰宮志清
        工程與試驗 2016年1期
        關鍵詞:多線程同步試驗機

        陳慶峰,宮志清,王 偉

        (1.長春機械科學研究院有限公司,吉林 長春 130103;2.吉林省鵬程電器消防設備有限公司,吉林 長春 130062)

        多線程技術在土體三軸流變試驗機上的應用

        陳慶峰1,宮志清2,王偉1

        (1.長春機械科學研究院有限公司,吉林 長春 130103;2.吉林省鵬程電器消防設備有限公司,吉林 長春 130062)

        摘要:著重論述了多線程技術在土體三軸流變試驗機上的應用,詳細闡述了多線程程序設計。經(jīng)過長時試驗驗證,土體三軸流變試驗機性能穩(wěn)定,符合試驗要求。

        關鍵詞:多線程;同步;試驗機

        1引言

        土體三軸流變試驗機主要用于土體在三軸應力作用下的流變性能測試。可以在恒定圍壓下進行恒載荷和恒變形控制,即進行蠕變和松弛試驗。也可在恒載荷或恒變形控制一段時間后,再施加按一定頻率和振幅變化的動態(tài)載荷,然后再轉為靜態(tài),由此不斷循環(huán)。能夠測試在上述三軸加載條件下試樣上的力和變形變化,及試樣內部的孔隙壓力和孔隙水流量,其中的孔隙壓力與孔隙水流量由上位機采集數(shù)據(jù)。

        在數(shù)據(jù)采集系統(tǒng)的程序設計時,一般采用查詢法或中斷法。查詢法就是采用一個循環(huán),依次采集各個通道。中斷法是采用硬件中斷的形式,先啟動A/D轉換,在轉換結束時發(fā)出一個中斷信號,CPU響應采集卡的中斷時讀出所采集的數(shù)據(jù)。中斷法的優(yōu)點是資源能充分利用,但當系統(tǒng)的硬件中斷資源緊張時,容易造成中斷沖突。另外,對于某些采集硬件,不支持中斷工作方式。當系統(tǒng)需要同時對多個I/O模塊控制時,上述2種方法都很難實現(xiàn)。

        采用基于多線程的設計方法,不僅可以完成對多個I/O模塊的實時控制,并能實現(xiàn)數(shù)據(jù)采集、存儲、顯示實時快速更新,方便操作人員進行分析判斷。

        2多線程技術

        基于NT技術的Windows操作系統(tǒng),采用多線程作為基本調度單位,其應用程序至少包含一個主線程,還可以根據(jù)需要創(chuàng)建一個以上工作線程。一個多線程應用程序允許多個任務并發(fā)執(zhí)行,因而可以執(zhí)行某些實時性或隨機性很強的操作,提高對CPU和其它資源的利用率,加快信息處理速度。結合循環(huán)緩沖和精確定時技術,利用多線程技術可以實現(xiàn)數(shù)據(jù)的高速、實時、連續(xù)采集以及同步處理。

        3多線程的主程序設計

        主程序的設計由響應用戶控制操作、數(shù)據(jù)采集顯示、數(shù)據(jù)存儲、數(shù)據(jù)分析、曲線描繪組成。單線程編寫的程序容易造成數(shù)據(jù)分析時影響數(shù)據(jù)采集與存儲,數(shù)據(jù)的顯示長時間沒有更新,操作者會認為系統(tǒng)死機,此時如果再進行其它操作,系統(tǒng)會長時無法響應該操作,嚴重時造成數(shù)據(jù)丟失,影響試驗。

        多線程的主程序設計以響應用戶控制操作作為進程中的主線程,開辟以數(shù)據(jù)采集線程和數(shù)據(jù)分析、數(shù)據(jù)保存、數(shù)據(jù)顯示、曲線描繪線程作為兩個輔助線程。其原理結構如圖1所示。

        圖1 主程序原理結構

        采用多線程技術,使響應用戶控制操作、數(shù)據(jù)采集顯示、數(shù)據(jù)存儲、數(shù)據(jù)分析、曲線描繪相獨立。子線程在Win32API函數(shù)WaitForSingleObject作用下進入睡眠狀態(tài),把CPU時間讓給數(shù)據(jù)采集線程。當滿足一定條件時,用創(chuàng)建的Win32API函數(shù)SetEvent將指定事件消息發(fā)送給子線程,子線程即可恢復運行狀態(tài),迅速處理,處理結束后再進入睡眠狀態(tài)。這樣,就保證了數(shù)據(jù)的實時采集顯示的及時性。

        4子線程的程序設計

        4.1數(shù)據(jù)采集程序

        數(shù)據(jù)采集程序中,當有了AD數(shù)據(jù)采集卡hDevice設備對象句柄后,便可用InitDeviceProAD函數(shù)初始化AD部件。關于采樣通道、頻率等的參數(shù)設置,是由這個函數(shù)的pPara參數(shù)結構體決定的。只需要對這個pPara參數(shù)結構體的各個成員簡單賦值即可實現(xiàn)所有硬件參數(shù)和設備狀態(tài)的初始化。然后用StartDeviceProAD即可啟動AD部件,開始AD采樣,接著調用GetDevStatusAD_Half函數(shù)以查詢AD的存儲器FIFO的半滿狀態(tài)。如果達到半滿狀態(tài),即可用ReadDeviceProAD_Half函數(shù)一批半滿長度(或半滿以下)的AD數(shù)據(jù),然后再接著再查詢FIFO的半滿狀態(tài),若有效再讀取,這樣反復查詢狀態(tài)反復讀取AD數(shù)據(jù)即可實現(xiàn)連續(xù)不間斷采樣。當需要暫停設備時,執(zhí)行StopDeviceProAD,當需要關閉AD設備時,執(zhí)行ReleaseDeviceProAD便可實現(xiàn)(但設備對象hDevice依然存在)。這部分的主要代碼如下:

        ′讀取AD卡孔隙水壓力數(shù)據(jù)

        If PCI_ReadDeviceProAD_Half(hDevice,ADBuffer(0),_

        nReadSizeWords,nRetSizeWords) = True Then

        ADData = (ADBuffer(0)) And 65535

        ′將原碼轉換為電壓值

        fVolt = ADData * (10000# / 65536#)

        ′1mV=0.2kPa

        Sys1DefBCSZ(0) = fVolt * 0.2

        Sys1DefB(0) = fVolt * 0.2 - Sys1DefBLing(0)

        ′ 顯示壓力值

        SSPDEFB(0).Caption = Format(Sys1DefB(0),"#0.0")

        End If

        4.2數(shù)據(jù)存儲程序

        數(shù)據(jù)存儲程序設計中采用了一級緩沖隊列和二級緩沖隊列的設計方案,避免了數(shù)據(jù)堵塞造成數(shù)據(jù)丟失的問題。即便應用程序突然很忙,使數(shù)據(jù)處理線程沒有時間處理已到來的數(shù)據(jù),但是由于緩沖區(qū)隊列的緩沖作用,可以讓數(shù)據(jù)采集線程先將數(shù)據(jù)連續(xù)緩存在這個區(qū)域中。由于這個緩沖區(qū)可以設計得比較大,因此可以緩沖很長的時間,這樣即便是數(shù)據(jù)處理線程由于系統(tǒng)的偶而繁忙而被堵塞,也很難使數(shù)據(jù)丟失。這部分的主要代碼如下:

        WSuccess = PCI_WriteFile(AD_Module.hFileObject,InUserRegion(0,AD_Module.CurrentIndex),AD_Module.ReadSizeWords * 2) ′數(shù)據(jù)存放在硬盤上

        If AD_Module.m_Wrote8KWCounter >= 128 Then)

        AD_Module.m_WroteMB = AD_Module.m_WroteMB + 1

        AD_Module.m_Wrote8KWCounter = 0

        Else

        AD_Module.m_Wrote8KWCounter = AD_Module.m_Wrote8KWCounter + 2

        End If

        4.3曲線描繪程序

        曲線的描繪主要通過VB的Picturebox控件實現(xiàn)。在子線程B中,存儲數(shù)據(jù)的同時描繪曲線。這部分的主要代碼如下:

        Select Case Curve.ListIndex ′選擇曲線類型

        Case 0

        ′軸向負荷-時間

        NewY1 = UnitNewY * (DATALOADZ(1) - (sngZeroLoad)) + 6800 * YYGauge

        NewX1 = UnitNewX * DATATIME(1) + 6000 * XXGauge

        For i = 2 To DataNum

        NewY2 = UnitNewY * (DATALOADZ(i) - (sngZeroLoad)) + 6800 * YYGauge

        NewX2 = UnitNewX * DATATIME(i) + 6000 * XXGauge

        PCurveNew.Line (NewX1,6800 - NewY1)-(NewX2,6800 - NewY2),QBColor(12)

        NewX1 = NewX2:NewY1 = NewY2

        Next

        Case 1

        ′軸向變形-時間

        NewY1 = UnitNewY * (DATAPosition(1) - (sngZeroPosition)) + 6800 * YYGauge

        NewX1 = UnitNewX * DATATIME(1) + 6000 * XXGauge

        For i = 2 To DataNum

        NewY2 = UnitNewY * (DATAPosition(i) - (sngZeroPosition)) + 6800 * YYGauge

        NewX2 = UnitNewX * DATATIME(i) + 6000 * XXGauge

        PCurveNew.Line (NewX1,6800 - NewY1)-(NewX2,6800 - NewY2),QBColor(12)

        NewX1 = NewX2:NewY1 = NewY2

        Next

        Case 2

        ′軸向負荷-軸向變形

        NewY1 = UnitNewY * (DATALOADZ(1) - (sngZeroLoad)) + 6800 * YYGauge

        NewX1 = UnitNewX * (DATAPosition(1) - (sngZeroPosition)) + 6000 * XXGauge

        For i = 2 To DataNum

        NewY2 = UnitNewY * (DATALOADZ(i) - (sngZeroLoad)) + 6800 * YYGauge

        NewX2 = UnitNewX * (DATAPosition(i) - (sngZeroPosition)) + 6000 * XXGauge

        PCurveNew.Line (NewX1,6800 - NewY1)-(NewX2,6800 - NewY2),QBColor(12)

        NewX1 = NewX2:NewY1 = NewY2

        Next

        Case 3

        ′圍向壓力-時間

        NewY1 = UnitNewY * (DATADEFA(1) - (sngZeroDefA)) + 6800 * YYGauge

        NewX1 = UnitNewX * DATATIME(1) + 6000 * XXGauge

        For i = 2 To DataNum

        NewY2 = UnitNewY * (DATADEFA(i) - (sngZeroDefA)) + 6800 * YYGauge

        NewX2 = UnitNewX * DATATIME(i) + 6000 * XXGauge

        PCurveNew.Line (NewX1,6800 - NewY1)-(NewX2,6800 - NewY2),QBColor(12)

        NewX1 = NewX2:NewY1 = NewY2

        Next

        Case 4

        ′孔隙壓力-時間

        NewY1 = UnitNewY * (DATADEFB(1) - (sngZeroDefB)) + 6800 * YYGauge

        NewX1 = UnitNewX * DATATIME(1) + 6000 * XXGauge

        For i = 2 To DataNum

        NewY2 = UnitNewY * (DATADEFB(i) - (sngZeroDefB)) + 6800 * YYGauge

        NewX2 = UnitNewX * DATATIME(i) + 6000 * XXGauge

        PCurveNew.Line (NewX1,6800 - NewY1)-(NewX2,6800 - NewY2),QBColor(12)

        NewX1 = NewX2:NewY1 = NewY2

        Next

        Case 5

        ′孔隙水流量-時間

        NewY1 = UnitNewY * (DATADEFC(1) - (sngZeroDefC)) + 6800 * YYGauge

        NewX1 = UnitNewX * DATATIME(1) + 6000 * XXGauge

        For i = 2 To DataNum

        NewY2 = UnitNewY * (DATADEFC(i) - (sngZeroDefC)) + 6800 * YYGauge

        NewX2 = UnitNewX * DATATIME(i) + 6000 * XXGauge

        PCurveNew.Line (NewX1,6800 - NewY1)-(NewX2,6800 - NewY2),QBColor(12)

        NewX1 = NewX2:NewY1 = NewY2

        Next

        End Select

        5總結

        應用多線程編程機制,可以很好地處理數(shù)據(jù)采集中多任務的同時性問題,實現(xiàn)數(shù)據(jù)的連續(xù)不間斷采集、顯示、存儲。但是,多線程要比普通程序設計復雜很多。由于任一時刻都可能有多個線程同時執(zhí)行,許多變量、數(shù)據(jù)都可能被其它線程所修改,因此要注意在多線程程序中開辟線程的數(shù)量和線程間的同步控制。該技術在土體三軸流變試驗機的程序設計中取得了很好的效果,長時試驗證明,數(shù)據(jù)采集及時、準確,數(shù)據(jù)存儲安全、可靠。

        參考文獻

        [1]駱斌,費翔林.多線程技術的研究與應用[J].計算機研究與發(fā)展,2000,37(4):407-412.

        [2]潘瑞云.基于PC/104計算機的水聲數(shù)據(jù)采集系統(tǒng)設計與實現(xiàn)[D].哈爾濱工程大學,2009.

        [3]李建宏,何玉珠.多線程技術在復雜數(shù)據(jù)采集系統(tǒng)中的應用[J].電子測量技術,2008,31(5):102-104.

        Application of Multithreading Technology to Soil Triaxial Rheological Testing Machine

        Chen Qingfeng1,Gong Zhiqing2,WangWei1

        (1.Changchun Research Institute for Mechanical Science Co.,Ltd.Changchun 130103,Jilin,China; 2.Jilin Pengcheng Electric Fire Equipment Co.,Ltd.Changchun 130062,Jilin,China)

        Abstract:The application of multithreading technology to soil triaxial rheological testing machine is discussed,and the multithreading software design is described in detail.The longtime test shows that the soil triaxial rheological testing machine has stabile performance,which can meet the requirements of the test.

        Keywords:multithreading;synchronization;testing machine

        [收稿日期]2015-12-03

        [作者簡介]陳慶峰(1976—),男,本科學歷,高級工程師,主要研究方向:計算機控制系統(tǒng)設計與研發(fā)。

        中圖分類號:TH87

        文獻標識碼:B

        doi:10.3969/j.issn.1674-3407.2016.01.026

        猜你喜歡
        多線程同步試驗機
        鐵路軸承試驗機
        哈爾濱軸承(2020年2期)2020-11-06 09:22:28
        接觸疲勞試驗機伺服電動缸加載系統(tǒng)設計
        哈爾濱軸承(2020年1期)2020-11-03 09:16:08
        素質教育理念下藝術教育改革的思路
        Java并發(fā)工具包對并發(fā)編程的優(yōu)化
        政府職能的轉變與中國經(jīng)濟結構調整的同步
        商情(2016年42期)2016-12-23 14:26:58
        公共藝術與城市設計的協(xié)調與同步
        基于多線程文件傳輸關鍵技術研究與實現(xiàn)
        網(wǎng)頁爬蟲技術的關鍵技術研究探索
        一種基于多線程的高速磁盤鏡像算法
        一種新型雙軌同步焊接的焊接裝置
        又黄又爽又无遮挡免费的网站| 无遮挡中文毛片免费观看| 一级片麻豆| 日本精品一区二区三本中文| 国产丝袜高跟美腿一区在线| 一区二区午夜视频在线观看| 视频一区二区三区黄色| 亚洲av无码专区在线| 欧美a级情欲片在线观看免费| 亚洲美免无码中文字幕在线| 亚洲色图综合免费视频| 超短裙老师在线观看一区| 国产精品亚洲精品一区二区| 人妻在卧室被老板疯狂进入| 又爽又黄又无遮挡的激情视频| 人妻无码中文字幕免费视频蜜桃 | 亚洲区福利视频免费看| 日本女优禁断视频中文字幕| 开心激情视频亚洲老熟女| 国产色视频一区二区三区qq号| 无码精品人妻一区二区三区av| 久久九九国产精品怡红院| 乱人伦中文字幕在线不卡网站| 国产精品天干天干在线观蜜臀| 国产一区二区三区涩涩| 女同同志熟女人妻二区| 精品国产av色一区二区深夜久久| 亚洲欧美aⅴ在线资源| 调教在线播放黄| 中文字幕亚洲精品一二三区| 日本免费在线一区二区三区| av综合网男人的天堂| 国产精品美女久久久浪潮av| 久久亚洲国产精品123区| 我也色自拍俺也色自拍| 中文字幕色偷偷人妻久久一区| 亚洲国产精品久久精品 | 人妻少妇av中文字幕乱码| 国产精品98视频全部国产| 性感的小蜜桃在线观看| 日产精品99久久久久久|