freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

儲油罐實(shí)時監(jiān)測系統(tǒng)的設(shè)計與實(shí)現(xiàn)-免費(fèi)閱讀

2025-08-12 19:37 上一頁面

下一頁面
  

【正文】 return temp。 write_byte(jump_ROM)。 i8。 receive_data = 0。 i++)。 deceive_ready = DQ。 for(i=0。 TR1 = 1。 //初始化串口 SBUF = i。 3 串口發(fā)送模塊代碼 /******************************************************************** * 文件名 : 串口發(fā)送 .c * 描述 : 該文件實(shí)現(xiàn)通過串口把數(shù)據(jù)從單片機(jī)發(fā)送到電腦, 。 for(j=0。 duan = 1。 //上端壓力返回函數(shù) unsigned char pdow()。 //儲油罐編號 , 在 文件里定義賦值 COM_Out(wd)。 display (ge,3)。 wd = wendu()。 ( 3) 本系統(tǒng)中采用的數(shù)學(xué)模型不適合計算球狀等不規(guī)則形狀的儲油罐。 ( 3)邏輯錯誤。 程序運(yùn)行中的錯誤 在設(shè)計好程序代碼后,就要進(jìn)行錯誤處理與調(diào)試。 ARM 嵌入式設(shè)備端軟件 軟件運(yùn)行平臺: Linux for ARM 32 位 軟件開發(fā)平臺: Red Hat Enterprise Linux 5 armlinuxgcc Qt for linux 其實(shí)無論是 PC 上還是嵌入式設(shè)備上,源代碼都是一致的,只不過編譯的軟件不一樣。 myComsetTimeout(10)。 化界面文件。以下將簡單對這兩種方式做一簡要的說明。 /*將位選信號放進(jìn) P2 口的低三位,只改 變 P2 口低三位的值,不影響其他位 */ 顯示模塊的程序代碼中對外提供一個接口: display(d , w)函數(shù)。 38 譯碼器輸入端接單片機(jī) 三端, 8 個輸出端分別接 8 位數(shù)碼管上的位選信號。 串口發(fā)送的數(shù)據(jù)順序是: 0x00, 0xff,油罐編號,溫度,底端壓力,上端壓力; 其中 0x00,和 0xff是數(shù)據(jù)校驗(yàn)標(biāo)志,當(dāng)上位機(jī)收到一個數(shù)組后,先判斷第一位是 0x00,且第二位是 0xff后,就知道從第三位開始就是編號,溫度,壓力這些有效數(shù)據(jù)了,因?yàn)槭孪戎罃?shù)據(jù)長度,就不用結(jié)束標(biāo)志位了。 對 DS18B20 的整體操作如下: ; ROM 指令: 0xcc; : 0x44; ; ROM 指令: 0xcc; : 0xbe; ; ; 最后將讀到的溫度數(shù)據(jù)以十進(jìn)制的表示方法返回給主調(diào)函數(shù)。數(shù)據(jù)和命令的傳輸都是低位在先。 DS18B20 溫度差傳感器是一個數(shù)字傳感器,這就省去了 A/D 轉(zhuǎn)換的麻煩,在硬件電路上只有一根數(shù)據(jù)線,占用硬件資源很少,硬件上的節(jié)約同樣需要軟件來補(bǔ)償,這就注定了操作 DS18B20 的繁瑣性。數(shù)據(jù)傳送時,先傳送最高位( MSB),每一個被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有 9 位)。 //ISendByte 是數(shù)據(jù)發(fā)送函數(shù) p1=IRcvByte(0x91)。 D3 是保留位。總線地址的最后一位為方向位,當(dāng)主控器件對 A/D器件進(jìn)行讀操作時為 1,進(jìn)行寫操作時為 0。C 總線以串行的方式進(jìn)行傳輸。 (2). A/D 轉(zhuǎn)換部分 本系統(tǒng)要對兩個模擬壓力量進(jìn)行監(jiān)測,如果使用傳統(tǒng)的 8 位并行 A/D 轉(zhuǎn)換器件,光數(shù)據(jù)口就會占據(jù) 16 個 I/O 口,對于一個只有 4 組 8 位 I/O 口的單片機(jī)來說,這種硬 件上的開銷實(shí)在比較大。 根據(jù)式( 3)計算當(dāng)前液位高度 h時,用到的壓力值都是比值關(guān)系,所以無須計算出確切的物理壓力量來。由此可以推出當(dāng)前液位的壓力差也就是底端的壓力值 。如圖 所示, 其中 P1, P2 是底端和上端的壓力值。 方案比較 i. 下位機(jī)端: 顯然,用 C 語言開發(fā)下位機(jī)程序有 可讀性強(qiáng)、易于編程、代碼量低的優(yōu)點(diǎn),而且 可以降低開發(fā)難度與 開發(fā) 周期。 ii. 上位機(jī)端: 方案一: 使用 Delphi 作為開發(fā)工具, Delphi 是著名的 Borland 公司開發(fā)的可視化軟件開發(fā) 工具。 兩種硬件 方案論證 結(jié)合兩種硬件方案,采用的硬件結(jié)構(gòu)有所不同,方案 2 用單片機(jī)作為硬件系統(tǒng),顯然電路復(fù)雜,可靠性較低,而且無法向上位機(jī)發(fā)送數(shù)據(jù),實(shí)現(xiàn)遠(yuǎn)端監(jiān)測。 2. 儲油罐實(shí)時監(jiān)測與計量 儲油罐狀態(tài)實(shí)時監(jiān)測:儲油罐液位等參數(shù)的實(shí)時監(jiān)測。 ( 3)兼容性。而國內(nèi)研制的系統(tǒng)大多計算精度低、穩(wěn)定性和可靠性差。 本系統(tǒng)針對上述問題,采用相應(yīng)的傳感器采集儲油罐內(nèi)的溫度和壓力,并通過單片機(jī)將儲油量、溫度值顯示出來;同時利用串口將各項(xiàng)數(shù)據(jù)發(fā)送給上位機(jī),從而進(jìn)行更精確的計算與統(tǒng)計。系統(tǒng)運(yùn)行安全可靠,性能穩(wěn)定,可以在惡劣環(huán)境長期連續(xù)工作。在軟件方面,要求人機(jī)界面友好, 操作簡便;在硬件方面,要求維護(hù)檢修方便。 整個系統(tǒng)的工作流程大致如下:壓力傳感器從儲油罐終端采集到數(shù)據(jù) , 經(jīng)單片機(jī)處理( A/D 轉(zhuǎn)換) 后 顯示到現(xiàn)場端的數(shù)碼管上,同時通過串口傳輸給上位機(jī),實(shí)現(xiàn)遠(yuǎn)端監(jiān)測,連入計算機(jī),計算機(jī)顯示并保存上傳的液位數(shù)據(jù),并可以通過管理軟件對數(shù)據(jù)來進(jìn)行后續(xù)處理。特點(diǎn)是執(zhí) 行效率高。編程語言是 C++,是面向?qū)ο蟮恼Z言,功能強(qiáng)大。其中涉及到的內(nèi)容有 I2C 總線驅(qū)動, A/D 轉(zhuǎn)換,數(shù)學(xué)建模等內(nèi)容。 壓差法的 計算的思路是 : 壓差比 = 液面高度比 圖 儲油罐數(shù) 學(xué)模型 兩個傳感器之間的相對高度 h0是事先設(shè)定且固定的 ,也就是說底端的壓力值 P1減去上端的壓力值 P2,就是這段液位的壓差 。 需要說的一點(diǎn) , P1 和 P2 是兩個模擬壓力量 , 經(jīng) 8 位的 A/D 轉(zhuǎn)化器轉(zhuǎn)換后得到的數(shù)字值。 但是在下位機(jī)端,單片機(jī)計算乘除運(yùn)算比較吃力,而且精確度相當(dāng)差。 PCF8591 的 3 個地址引腳A0, A1 和 A2 可用于硬件地址編程,允許在同個 I178。 PCF8591 采用典型的 I2C 總線接口尋址方法,即總線地址由器件地址、引腳地址和方向位共同組成??刂谱止?jié)存放于控制寄存器中的格式如圖 所示: 長治學(xué)院學(xué)士學(xué)位論文 9 圖 控制寄存器格式 其中: D0 D1 兩位是 A/D 通道編號: 00 通道 0, 01 通道 1, 10 通道 2, 11 通道 3;在本系統(tǒng)中利用 A/D 通道 0 和 A/D 通道 1。 將這個過程結(jié)合到本系統(tǒng)中, PCF8591 的器件地址為 1001,引腳地址為 000,寫操作時方向位為 0,即 0x90,讀操作時方向位為 1,即 0x91。可是用 I2C 總線傳輸數(shù)據(jù)只需占用主控器件的兩個引腳 ,就能傳輸 8 個外圍器件的數(shù)據(jù) ,相當(dāng)節(jié)省硬件資源 .所以綜合利弊 ,本系統(tǒng)采用 I2C總線設(shè)備來傳輸壓力值數(shù)據(jù) . 它的工作原理如下: I2C 總線設(shè)備由一條數(shù)據(jù)總線 SDA 和一條時鐘總線 SCL與中控器件相連 , I2C 總線進(jìn)行數(shù)據(jù)傳送時,時鐘信號為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時鐘線上的信號為低電平期間,且高電平狀態(tài)維持一定的時間(一般為 5 微秒)以后,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化(如圖 ) 。在本系統(tǒng)中,這種策略體現(xiàn)在對 A/D 轉(zhuǎn)換芯片PCF8591 的操作上,詳細(xì)內(nèi)容在上文中介紹到了。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序,如圖 所示。 對于 DS18B20 寫 0 時序和寫 1 時序的要求不同,當(dāng)要寫 0 時序時,單總線要被拉低至少 60us,保證 DS18B20 能夠在 15us 到 45us 之間能夠正確地采樣 IO 總線上的 “0”電平,當(dāng)要寫 1 時序時,單總線被拉低之后,在 15us 之內(nèi)就得釋放單總線 。在一個大型的煉油廠,儲油罐與上位機(jī)的距離不可能在 20m之內(nèi), RS232 電平無法滿足長距離傳輸數(shù)據(jù)的功能。相對而言,顯示模塊在本系統(tǒng)中是一個比較簡單的模塊,硬件上由一個八位的八段數(shù)碼管、一個 38 譯碼器( 74H138)和一個鎖存器( 74H373)構(gòu)成 ,如圖 所示。 但這種賦值方式在這三個端口值不斷變化的情況下,較為繁瑣,所以利用 C 語言按位與,按位或,左右位移等方法較為簡便,例如: P2 amp。一般對幾十個儲油罐進(jìn)行監(jiān)測,系統(tǒng)的資源消耗不會很大,也可以說是輕而易舉一件事兒。作為工業(yè)監(jiān)測的設(shè)備,穩(wěn)定性是相當(dāng)重要的,通常情況下 linux操作系統(tǒng)開機(jī)一年都不會出現(xiàn)任何問題,完全能滿足連續(xù)監(jiān)測的任務(wù)。 myComsetParity(PAR_NONE)。軟件開啟 界 面 與 軟件 界 面 如圖 和 所示: 圖 軟件開啟界面 圖 操作界面 長治學(xué)院學(xué)士學(xué)位論文 21 這是一個簡單的監(jiān)測界面,出于實(shí)驗(yàn)和整體界面布局美觀的考慮,暫時只設(shè)計了對四個儲油罐監(jiān)測的位置,若用于工業(yè)監(jiān)測時,在程序中很容易增加幾十個監(jiān)測位置。 長治學(xué)院學(xué)士學(xué)位論文 23 5 系統(tǒng)調(diào)試 調(diào)試計劃 1.審查設(shè)計方案,檢查是否有涉及方向的錯誤。這種錯誤在編譯時有提示,通常是變量定義錯誤,或語法結(jié)構(gòu)錯誤。 圖 錯誤數(shù)據(jù)調(diào)試結(jié)果 長治學(xué)院學(xué)士學(xué)位論文 28 6 總結(jié)分析 經(jīng)過兩個多月的奮斗,畢業(yè)設(shè)計終于順利完成了,但是仍有許多不足之處,需要在以后的學(xué)習(xí)和實(shí)踐過程中改進(jìn),比如說: ( 1) 由于本人水平有限,加之時間較倉 促,多次嘗試在系統(tǒng)中添加數(shù)據(jù)庫,添加統(tǒng)計功能,遺憾的是均未能成功,但是面向?qū)ο蟮?Qt 圖形編輯軟件完全支持這些功能,在以后的學(xué)習(xí)過程中可以添加進(jìn)去。 uchar x。 ge = p%10。 COM_Out(0x00)。//顯示函數(shù) void COM_Out(uchar i)。 */ uchar code duantable[10] = {0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}。/*給 P2 口賦位選值前,先將 p2 與( 1111 1000)邏輯與, // 將 P2^0,P2^1,P2^2 清零,從而不影響其他位原來的電平 */ P2 |= weitable[w]。 } /*顯示一個數(shù)字的時候,調(diào)用 display()即可, 格式: display(段 ,位 )。 TL1 = 0xFd。 SCON = 0x50。 //TI 清零 } /******************************************************************** 長治學(xué)院學(xué)士學(xué)位論文 36 * 文件名 : * 描述 : 該文件實(shí)現(xiàn)了用溫度傳感器件 DS18B20 對溫度的采集 ***********************************************************************/ include include define uchar unsigned char define uint unsigned int define jump_ROM 0xCC //總線上只有一個器件, 0xcc 表示不對 ROM 編碼做出反 應(yīng) define start 0x44 //收到只個指令后芯片做一次溫度轉(zhuǎn)換 define read_EEROM 0xBE sbit DQ = P2^3。 delay(29)。 DQ = 1。 DQ=1。 } return(receive_data)。 delay(5)。 TMPL = read_byte()。 unsigned char read_bit(void)。 write_byte(jump_ROM)。 0x01。 i++) { if(read_bit()) { receive_data = receive_data + (m i)。 if(bitval==1) DQ=1。 //返回 DQ 的電平狀態(tài) } /******************************************************************** * 名稱 : read_bit() ***********************************************************************/ uchar read_bit(void) { 長治學(xué)院學(xué)士學(xué)位論文 37 uchar i。 } /******************************************************************** * 名稱
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1