<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > 氣體壓力閉環(huán)控制系統(tǒng)設(shè)計(jì)

          氣體壓力閉環(huán)控制系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2011-01-24 來源:網(wǎng)絡(luò) 收藏

          b.JPG
          1.2.1 主程序模塊
          主要是聲明成員變量,調(diào)用硬件驅(qū)動模塊和數(shù)據(jù)處理模塊的已經(jīng)定義好的類函數(shù)。主程序根據(jù)氣壓表模塊輸出的壓力值,然后用數(shù)據(jù)處理模塊進(jìn)行數(shù)據(jù)分析,根據(jù)壓力值的變化來閉環(huán)控制步進(jìn)電機(jī)轉(zhuǎn)動的方向,壓力變化過快,則需要減小精密閥門開度,電機(jī)反轉(zhuǎn),壓力變化過慢則電機(jī)正轉(zhuǎn),使壓力上升速度在一個(gè)安全高效的范圍內(nèi)。
          1.2.2 硬件驅(qū)動模塊
          硬件驅(qū)動模塊用于對硬件設(shè)計(jì)部分主要儀表的控制和驅(qū)動,主要包括氣壓表模塊、步進(jìn)電機(jī)模塊和串口模塊,各分模塊也是均以類的形式進(jìn)行封裝。
          氣壓表模塊,表1和表2在氣壓表內(nèi)部可以進(jìn)行初始設(shè)定編號01,02,表1負(fù)責(zé)放氣時(shí)的氣壓讀數(shù),表2負(fù)責(zé)充氣。氣壓表實(shí)時(shí)監(jiān)測高壓管路的壓力值,實(shí)際上一秒最多可數(shù)據(jù)20次,PC機(jī)通過串口模塊實(shí)時(shí)向氣壓表發(fā)送命令“@01!”、“@02!”,通過MFC對話框的形式實(shí)時(shí)接收氣壓表返回的壓力值,經(jīng)過數(shù)據(jù)處理,得出壓力值變化的速度來閉環(huán)控制步進(jìn)電機(jī),使充放氣速度在一個(gè)安全高效的范圍。
          步進(jìn)電機(jī)模塊,直接發(fā)送程序指令來控制電機(jī)實(shí)現(xiàn)各個(gè)動作。電機(jī)步距角為1.8°/步,細(xì)分50時(shí),轉(zhuǎn)動一圈需要10 000個(gè)脈沖,在導(dǎo)軌上從原點(diǎn)至終點(diǎn)共需6.5圈65 000個(gè)脈沖。這里將平面直角坐標(biāo)系引入模塊中,將步進(jìn)電機(jī)的行程65 000個(gè)脈沖均分為100份,坐標(biāo)原點(diǎn)設(shè)為閥門完全關(guān)閉點(diǎn),坐標(biāo)100處閥門完全打開。在步進(jìn)電機(jī)控制中引入坐標(biāo)系,可以通過對坐標(biāo)點(diǎn)的標(biāo)定來定位電機(jī),有以下幾大好處:
          (1)利于閉環(huán)控制程序的編寫。閉環(huán)控制可用一個(gè)循環(huán)程序來實(shí)現(xiàn),有了坐標(biāo)系,就可以方便定義一個(gè)位置變量,以壓力變化快慢作為循環(huán)條件,位置變量作相應(yīng)的增減,即可控制電機(jī)的正反轉(zhuǎn),改變精密閥門的行程,調(diào)節(jié)閥門開度實(shí)現(xiàn)氣壓控制;
          (2)限制步進(jìn)電機(jī)的行程。步進(jìn)電機(jī)的活動范圍限制為坐標(biāo)0~100之間,在不可見系統(tǒng)中解決步進(jìn)電機(jī)失步碰撞問題,可以替代接近開關(guān)的作用;
          (3)實(shí)時(shí)查詢步進(jìn)電機(jī)的位置。查詢錐形活塞所處點(diǎn)的坐標(biāo),根據(jù)坐標(biāo)和閥門旋轉(zhuǎn)螺旋間距,就可以得出電機(jī)的位移,相當(dāng)于一個(gè)位移傳感器。
          串口模塊,在VC++2005對話框編輯框中添加ActiveX控件Microsoft Communication Control,給該控件命名并在對話框?qū)傩钥蚶镌O(shè)置相應(yīng)的參數(shù),即可以直接調(diào)用串口。
          1.2.3 數(shù)據(jù)處理模塊
          數(shù)據(jù)處理部分采用的是VC++和Matlab混合編程的方法,VC作為客戶端,利用其能夠簡單地同底層硬件資源進(jìn)行的優(yōu)點(diǎn),將數(shù)據(jù)讀入到內(nèi)存中,再將數(shù)據(jù)送到Matlab中進(jìn)行數(shù)據(jù)處理,通過調(diào)用Matlab下數(shù)字信號處理工具箱中的函數(shù)以及自己所寫的函數(shù)進(jìn)行分析。選用Matl-ab的C/C++編譯器mcc,這種混合編程方式將.m源文件轉(zhuǎn)化為C/C++等各種不同類型的源代碼,并在此基礎(chǔ)上根據(jù)應(yīng)用需要生成MEX文件、獨(dú)立可執(zhí)行應(yīng)用程序等文件類型,大大提高程序的運(yùn)行速度,以及代碼的執(zhí)行效率。由于氣壓表每秒數(shù)據(jù)20次,為了精確地實(shí)現(xiàn)閉環(huán)控制,把20組數(shù)據(jù)進(jìn)行多項(xiàng)式最小二乘法曲線擬合,建立第1s內(nèi)氣壓隨時(shí)間變化的函數(shù)模型:
          c.JPG
          在Matlab中調(diào)用回歸命令:A=polyfit(T,P,n),其中:T=O:O.05:1;P=[p0,p1,…,pn。]可以通過氣壓表的讀數(shù)得到;A=[an,…,a1,a0],是多項(xiàng)式(1)的系數(shù);n為多項(xiàng)式的次數(shù)。
          預(yù)測氣壓的變化速度:
          d.JPG
          多項(xiàng)式擬合數(shù)據(jù)的模型隨著階次n的選擇不同而不同。雖然n+1個(gè)數(shù)據(jù)點(diǎn)可以確定惟一的n階多項(xiàng)式,但實(shí)踐證明并不是階次越高擬合越好,有時(shí)會發(fā)生階次越高越不精確的情況。曲線擬合時(shí)應(yīng)該根據(jù)實(shí)際情況憑借經(jīng)驗(yàn)及觀察選擇擬合次數(shù),注意檢驗(yàn)結(jié)果,比如觀察曲線是否平滑、擬合誤差是否足夠小等,力求準(zhǔn)確全面地描述輸入數(shù)據(jù)之間的關(guān)系。由每秒的模型得出連續(xù)的氣壓模型函數(shù)和氣壓變化速度函數(shù),根據(jù)氣壓變化速度函數(shù)在各個(gè)時(shí)間點(diǎn)上的值來判斷步進(jìn)電機(jī)正轉(zhuǎn)還是反轉(zhuǎn)。數(shù)據(jù)處理模塊也是以類的形式封裝起來,供主函數(shù)調(diào)用。

          2 實(shí)驗(yàn)與分析
          氣體壓力閉環(huán)控制裝置已經(jīng)應(yīng)用于某型裝備故障檢測中,對高壓充氣速度進(jìn)行控制,在試驗(yàn)時(shí),裝置連接在管路中,通過對電機(jī)的控制實(shí)現(xiàn)對充氣速度的調(diào)節(jié),從而完成所需試驗(yàn)數(shù)據(jù)的。通過多次試驗(yàn),驗(yàn)證了系統(tǒng)的穩(wěn)定可靠性和高精度的控制充氣速度。

          3 結(jié)論
          氣體壓力閉環(huán)控制系統(tǒng)的設(shè)計(jì)在某型裝備故障檢測中已得到較好的實(shí)現(xiàn)。設(shè)計(jì)中無論是硬件還是軟件系統(tǒng)中都采用模塊化的設(shè)計(jì)方法,這使得系統(tǒng)擴(kuò)展起來比較方便,系統(tǒng)可移植性高,增加了系統(tǒng)的靈活性和可靠性,具有廣泛的適應(yīng)性。坐標(biāo)系引進(jìn)步進(jìn)電機(jī)行程的方法,可以成功解決步進(jìn)電機(jī)失步碰撞問題,能夠確保系統(tǒng)正常運(yùn)行。

          電接點(diǎn)壓力表相關(guān)文章:電接點(diǎn)壓力表原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: 采集 通信

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();