国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

微機改造液壓萬能試驗機關鍵技術的研究

2011-10-21 06:05:32趙春雨王俊飛
大眾科技 2011年6期
關鍵詞:試驗機控件線程

趙春雨 王俊飛

(成都理工大學工程技術學院,四川 成都 614000)

微機改造液壓萬能試驗機關鍵技術的研究

趙春雨 王俊飛

(成都理工大學工程技術學院,四川 成都 614000)

微機化改造后的液壓萬能試驗機能實時、自動、精確地顯示壓力、位移等參數,并能在實驗結束后保存實驗數據和打印材料特性曲線,省去了人工計算的環(huán)節(jié),利于工作效率的提高。文章就其中壓力、位移等實驗參數的測量及實驗曲線繪制關鍵技術和算法進行研究闡述,分析了高速實時工作、串口通訊、曲線擬合等關鍵技術。

高速實時工作;串口通訊;曲線擬合

(一)前言

我國從上世紀50年代開始生產液壓萬能試驗機,早期產品使用杠桿擺錘測力系統(tǒng)。1987年國家頒布了GB228—87《金屬拉伸試驗方法》新標準。舊試驗機的測量系統(tǒng)不能滿足新標準的要求。上世紀90年代已是電子信息時代,計算機已廣泛地應用于各種行業(yè)。因而將計算機應用于試驗機技術已成為當前重要的課題。

在數據采集上,采集速度快、測量精度高;在數據分析上,考慮得更加周全;在數據處理上,具有智能交互、圖文并茂的特點,能以數值顯示、圖表、曲線等多種方式表現實驗數據,并可根據教學要求對實驗數據進行各種分析與處理。讓試驗機在信號檢測、數據處理等方面更接近現代試驗機發(fā)展水平,迎合了目前國內外的試驗機發(fā)展面向智能化、準確化、操作簡便、穩(wěn)定可靠趨勢的需要。

就我國的經濟實力和現有的生產力水平,淘汰低檔試驗機是不必要的。只要選擇改造的途徑,利用微機對液壓萬能試驗機進行壓力、位移等試驗數據的顯示,利用軟件對實驗結果進行處理,都可以達到比較好的效果。目前很多單位已將微機用于低檔試驗機的改造。改造的系統(tǒng)框圖如下圖1。

圖1 液壓萬能試驗機微機化改造組成圖

利用微機的液壓試驗機改造方法在wE-300液壓試驗機的油缸回油管與油缸之間加配一個三通接頭,兩頭接油管,中間接一個30Mpa壓力傳感器,主要用于測量液壓油路的壓力。壓力傳感器接收到油壓的模擬信號傳到微機的數據采集卡。在油缸的工作行程位置上加裝一個位移傳感器,用來測量油缸行程的位移量,通過位移傳感器測量到模擬信號傳到微機的數據采集卡。改造后的試驗機可配有標程為0~700mm不同規(guī)格的變形引伸計,可作金屬材料的拉、壓常規(guī)試驗。

(二)關鍵技術研究

1.系統(tǒng)高速實時工作的實現

(1)FIFO緩存技術

FIFO存儲器是近幾年面市的一種特殊存儲器件,通常用于數據的緩存和用于容納異步信號的頻率或相位的差異。FIFO的實現通常是利用雙口RAM和讀寫地址產生模塊來實現的。FIFO的接口信號包括異步的寫時鐘(wr_clk)和讀時鐘(rd_clk)、與寫時鐘同步的寫有效(wren)和寫數據(wr_data)、與讀時鐘同步的讀有效(rden)和讀數據(rd_data)。為了實現正確的讀寫和避免FIFO的上溢或下溢,通常還應該給出與讀時鐘和寫時鐘同步的 FIFO的空標志(empty)和滿標志(full)以禁止讀寫操作。其特點是在同一個芯片里同一個存儲單元配備有兩個數據口,一個是輸入口,只負責數據寫入,另一個是輸出口,只負責數據輸出,就像數據管道一樣,數據從管道的一頭流入、從另一頭流出,先進入的數據首先流出。另外對這種存儲器進行讀和寫的操作時不需要地址線參與尋址,它的數據是按照一種環(huán)形結構依次進行存放的。FIFO存儲器的另一個與傳統(tǒng)存儲器不同點是傳統(tǒng)存儲器的一個存儲單元中只要寫入一個數據后,這個數據將一直保存,直到被一個新的數據覆蓋,無論這個存儲單元中的數據被讀取過多少次也是如此。而FIFO存儲器中的存儲單元則不是這樣,寫入的數據一旦被讀取后,則這個數據再無法被讀取,像永久消失一樣。所以,FIFO存儲器在操作時由“空”和“滿”的標志位來表示FIFO存儲器內部的狀態(tài)。

采集板本身的動態(tài)鏈接庫(PCI8335.dLL)中所有的函數均可以直接調用,從而就實現了保證了采集的高速實時操作。

(2)定時查詢方法

一旦啟動了A/D轉換,A/D就開始不斷地采集數據并存入到FIFO中,系統(tǒng)必須定時查詢FIFO緩存器是否處于半滿狀態(tài),以便下一步的存儲操作。以本系統(tǒng)選用定時杏詢的方法,被執(zhí)行的時鐘控件函數主要用來實現程序定時查詢 A/D狀態(tài)寄存器中的FIFO是否半滿標志(HF),當FIFO中的數據超過一半后,一次讀空FIFO中的數據。因為FIFO半滿時的空間為2048個字,按照最大采集速度每秒100個數據,緩存器可以存儲 2048/8*100=2.56秒的數據,由于定時器的時間處理頻率直接來源于系統(tǒng)時鐘18.2Hz的中斷頻率,這就決定了這種定時器的處理時間的周期是55ms的倍數,時鐘控件定時采集間隔完全可以滿足系統(tǒng)要求。

2.Delphi實現串行通訊的方法

Delphi在目前眾多流行的面向對象開發(fā)工具中最具有吸引力的開發(fā)工具之一。由于Delphi具有編程效率高、功能強大而受到廣大程序員的青睞。用Delphi實現串口通訊,可用使用通訊控件,如MSCOMM和SPCOMM,也可以使用API函數或者在Delphi中調用其它串口通訊程序。而利用API編寫串口通信程序較為復雜,需要掌握大量通信知識,其優(yōu)點是可實現的功能更強大,應用面更廣泛,更適合于編寫較為復雜的低層次通信程序。在本系統(tǒng)中,采用較為方便的MSCOMM通訊控件的方法。利用Delphi 7.0提供的MSCOMM通訊控件可以方便地訪問串行口,MSCOMM控件提供了很多有用的屬性和方法,通過它們用戶可以很容易的對串口進行操作。MSCOMM的主要屬性如表1所示。

表1 MSCOMM控件的主要屬性

OnComm事件是通訊控件唯一的事件,此事件可用來處理所有與通訊有關的事件,無論何種事件發(fā)生,通訊控件只用一個 CommEvent的屬性來處理。使用事件程序的好處是不需要一直讓程序處于檢測的狀態(tài)下,只要事先將程序代碼寫好,一有事件發(fā)生,就直接執(zhí)行相應的程序代碼。下面給出串口的讀寫程序。從串口讀二進制數據的程序如下:

var

SerialInput:Variant;

DataLength,intCnt,intTem:Integer;

begin SerialInput:=frmMain.MSComm.Input;

//讀取串口數據

DataLength:=frmMain.MSComm.InBufferCount; //讀取數據的長度

For intCnt:=1 to SerialDataLength-1 do

Begin

IntTem:= SerialInput[intCnt];

end;

end;

var

SerialOutput:Variant; Count,DataLength:Integer;

begin

Count:=1; SerialOutput:=VarArrayCreate([1,1],v arByte); SerialOuput[Count]:=intTmp[Count];

Inc(Count);

While (Count<DataLength) do

begin SerialOuput[Count]:=intTmp[Count];

Inc(Count); VarArrayRedim(SerialOutput,Count);

end;

frmMain.MSComm.Output:= SerialOuput;

end;

3.多線程機制實現

多線程的實現原理:

創(chuàng)建一個進程時,它的第一個線程稱為主線程(Primary thread),由系統(tǒng)自動地生成。然后可以用這個主線程生成額外的線程,而這些線程,又可以生成更多線程。在運行一個多線程程序時,從表面上看,這些線程似乎同時運行。

而實際情況并不是這樣,為了運行所有這些線程,操作系統(tǒng)為每個獨立線程安排了一些CPU時間。單CPU操作系統(tǒng)時以輪轉方式向線程提供時間片(Quantum),每個線程使用完時間片后交出控制,然后系統(tǒng)再將 CPU時間片分配給下一個線程。因為每個時間片足夠短,所以就給人一種假象,好像這些線程同時運行。創(chuàng)建額外線程唯一目的就是盡可能地利用CPU時間。

雖然Windows 提供了比較多的多線程設計的API 函數,但是直接使用API 函數一方面極其不方便,而且使用不當還容易出錯。利用Tthread 對象,來解決多線程設計上的困難,簡化了多線程問題的處理。Tthread 對象沒有實例的,它和界面的交流,主要依靠主窗體(主VCL線程)。

Tthread 對象的主要方法:

構造線程:

constructor Create(CreateSuspended:boolean)

其中:CreateSuspended=true 構造但不喚醒

false 構造的同時即喚醒

inheried Create(CreateSuspended:boolean)

掛起線程:

suspend

(把線程掛起的次數加一)

喚醒線程:

resume

析構(清除線程所占用的內存):destroy

終止線程(后面會具體討論):Terminate

下面為在主線程區(qū)構造線程的方法是:

thread1:=mymath1.create;

thread2:=mymath2.create;

掛起:

thread1.suspend;

thread2.suspend;

喚醒:

thread1.resume;

thread2.resume;

析構:

thread1.destroy;

thread2.destroy;

線程的同步:

在使用多線程編程時,有一個非常重要的問題就是線程同步。線程同步是指線程之間在相互通信時避免破壞各自數據的能力。同步問題是由前面說到的Win32系統(tǒng)的CPU時間片分配方式所引起的。雖然在某一時刻,只有一個線程占用CPU(單CPU時)時間,但是沒有辦法知道在什么時候,在什么地方線程被打斷,所以如何保證線程之間不破壞彼此的數據就顯得非常重要。

利用Windows的API實現同步,Windows API函數提供了很多同步技術。使用線程的時候,遇到的一個基本的問題,就是多個線程訪問同一個對象,比如訪問相同的文件、DLL、相同的通訊資源,特別是數據庫的訪問,當多個線程對同一數據庫字段寫入的時候,其結果會出現不確定性。

臨界區(qū)用于解決這個問題,它可以保證線程使用敏感數據的時候,阻賽其他的線程訪問名干數據,使用時首先要初始化,其聲明一個

TRTLCriticalSection類型的變量:

var

CS:TRTLCriticalSection;

初始化:

initializeCriticalSection(cs);

獨占

EnterCriticalSection(cs);

解除獨占

LeaveCriticalSection(CS);

使用臨界區(qū)是比較方便而且概念比較清晰的的線程同步機制,應用比較廣泛。

在曲線顯示模塊的設計中,其中主要采用的數學方法。

(三)曲線顯示模塊設計

液壓萬能試驗機在數據采集過程中,所采集到的是一些離散數據點,這些離散的數據點中會存在誤差較大和明顯不正確的點,就需要分析和處理來提高數據準確性,保證能繪出光滑的數據曲線。特別在試驗機啟動和停止時,由于收到較大的電磁干擾等,采集的數據往往會產生突變。為了解決這些數據誤差,本系統(tǒng)采用線性插值和最小二乘法曲線擬合等數學原理,進行去毛刺處理,對數據曲線處理以便得到光滑實驗曲線,便于進行實驗分析。

1.線性插值

已知函數 y=f(x)在節(jié)點 x0,x1有函數 y0=f(x0),y1=f(x1),求作一次多項式L(x)=a0+a1x,使它滿足條件L(x0)=y(tǒng)0,L(x1)=y(tǒng)1。這種插值稱為線性插值,在節(jié)點上插值的誤差為0。

本系統(tǒng)由于采樣頻率比較高,兩個相鄰的采樣點可以近似的看成直線,選用線性插值就可以完成。

本文采用Lagrange插值方法。

Lagrange插值是n次多項式插值,其成功地用構造插值基函數的方法解決了求 n次多項式插值函數問題。基本思想是將待求的 n次多項式插值函數 pn(x)改寫成另一種表示方式,再利用插值條件確定其中的待定函數,從而求出桿值多項式。在區(qū)間[a,b]中已知 y=f(x)在該區(qū)間上有 n個不同點x1,x2,…,xn處的函數值 yi=f(xi)(i=1,2,…,n)。用 Lagrange插值公式計算指定點u處的函數近似值。

Lagrange插值多項式:

其中

Lagrange插值余項

2.最小二乘法擬合曲線

系統(tǒng)進行數據采集時,所采集到的數據為一些離散的數據點,為了使數據曲線平滑、準確,采用最小二乘法擬和曲線,產生一個多項式或已知函數來對這些離散的數據點進行逼近。

根據一組給定的實驗數據(xi,yi)(i=0,1,…,m),求出自變量x與因變量y的函數關系y=s(x,a0,…,an)(n<m),這是ai為待定參數,由于觀測數據總有誤差,且待定參數 ai的數量比給定數據點的數量j少(即 n<m),因此它不同于插值問題。這類問題不要求 y=s(x)=s(x,a0,…,an)通過點(xi,yi)(i=0,1,…,m),而只要求在給定點 xi上的誤差δi=s(xi)- yi(i=0,1,…,m)的平方和最小。當s(x)=span{ Φ0,Φ1…,Φn}時,即 s(x)= a0Φ0(x)+ a1Φ1(x)+…+ anΦn(x)這里Φ0,Φ1…,Φn∈C[a,b]是線性無關的函數族,假定在[a,b]上給出一組數據{(xi,yi)(i=0,1,…,m)},a≤xi≤b以及對應的一組權{ρi}0m,這里ρi>0為權系數,要求s(x)=span{ Φ0,Φ1…,Φn}使(a0,…,an)最小。

這就是最小二乘逼近,得到的擬合曲線為y=s(x),這種方法稱為曲線擬合的最小二乘法。

I(a0, a0,…,an)實際上是關于 a0, a0,…,an的多元函數,求I的最小值就是求多元函數I的極值,由極值必要條件,可得

根據內積定義引入相應帶權內積記號

則可得

這是關于參數a0,a0,…,an的線性方程組,用矩陣表示為

均方誤差為

在實際擬合試驗曲線時,取次數為 2的最小二乘擬合,得到擬合方程s(x)。

(四)結論

我國數萬臺低檔試驗機在國標GB228-87的促進下,必須改造。用電子和計算機技術改造試驗機已經有了成功的例子。設計生產一種適臺國情的中檔材料試驗機的新機型是我國目前市場的需要,應該受到有關部門和試驗機廠家的重視。本文就其中的關鍵技術做了研究和闡述,旨在對微機控制液壓萬能試驗機的推廣應用提供有益的參考。

[1] 王勇.材料試驗機的速率與數據采集技術的研究[R].北京工業(yè)大學碩士論文,1994(1):3-9.

[2] 曹少方.液壓萬能試驗機自動測試裝置拄術報告[J].北京工業(yè)大學,1989.

[3] 駱涵秀.試驗機的電液控制系統(tǒng)[M].機械工業(yè)出版社, 1991.

[4] 沈紅衛(wèi).RS一 232串行期通訊的實踐探討[J].計算機工程,1999(7):40-42.

TH123.+1

A

1008-1151(2011)06-0122-03

2011-03-10

趙春雨(1973-),男(滿族),遼寧錦州人,成都理工大學工程技術學院助教,碩士,研究方向為機電傳動;王俊飛 (1983-),男,山西太原人,成都理工大學工程技術學院助教,碩士,研究方向為液壓傳動。

猜你喜歡
試驗機控件線程
鐵路軸承試驗機
哈爾濱軸承(2020年2期)2020-11-06 09:22:28
接觸疲勞試驗機伺服電動缸加載系統(tǒng)設計
哈爾濱軸承(2020年1期)2020-11-03 09:16:08
關于.net控件數組的探討
軟件(2018年7期)2018-08-13 09:44:42
淺談linux多線程協(xié)作
橡膠整體式履帶動態(tài)嚙合試驗機的設計
水泥電動抗折試驗機的應用研究
河南科技(2014年10期)2014-02-27 14:09:20
Linux線程實現技術研究
就這樣玩會VBA中常見的自定義控件
電腦迷(2012年24期)2012-04-29 00:44:03
么移動中間件線程池并發(fā)機制優(yōu)化改進
在PowerBuUder中利用WinSock控件制作簡單的Web服務器
杨浦区| 淮安市| 龙门县| 利津县| 瑞金市| 碌曲县| 西华县| 新平| 马山县| 明星| 齐河县| 丹巴县| 富民县| 灵台县| 容城县| 方城县| 远安县| 新源县| 特克斯县| 儋州市| 莱西市| 和田市| 安多县| 武宁县| 正阳县| 禄劝| 长宁区| 博乐市| 卫辉市| 新民市| 新宾| 兰西县| 保山市| 襄垣县| 随州市| 江油市| 晋城| 武乡县| 枣强县| 松桃| 营山县|