【正文】
端軟件是在 linux 操作系統(tǒng)下編譯開發(fā)的,也是要運行在 linux 32 位平臺上。 其中 d 是段選參數,作用是顯示什么數字; w 是位選信號,作用是在那一位上顯示。位選的電平邏輯可參考 38 譯碼器的真值表,在此不再贅述。 長治學院學士學位論文 15 向上位機發(fā)送的數據是源源不斷的發(fā)送上去,每秒鐘能發(fā)好幾次,上位機再選擇性的 接收數據并做出相應的處理。 串口數 據發(fā)送模塊 串口數據發(fā)送模塊的主要功能是將溫度,壓力等數據用串口發(fā)送給上位機,實現對儲油罐的遠端檢測功能。 圖 DS18B20 的復位時序 長治學院學士學位論文 13 圖 DS18B20 的讀時序 DS18B20 的讀時序分為讀 0 時序和讀 1 時序兩個過程。 通常情況下我們采用的是 TO- 92 封裝的 DS18B20, 如 圖 。如果一段時間內沒有收到從機的應答信號,則自動認為從機已正確接收到數據,如圖 。 //AD0 模數轉換 0,將值賦給 p1 這個函數的作用是發(fā)送器件地址 0x90和控制字 0x00(A/D通道 0)讀取 A/D通道 0的值 ,具體的實現過程參照附錄中的源代碼部分。 D4 D5 是模擬量輸入選擇: 00 四路單獨輸入, 01 三路差分輸入, 10 為單端與差分配合輸入, 11 為模擬輸出允許有效。 總線操作時,由器件地址、引腳地址、方向位組成的從地址為主控器發(fā)送的一個字節(jié)。 PCF8591 的功能包括多路模擬輸入、內置跟蹤保持、 8bit 模數轉換和 8bit 數模轉換。所以我在設計過程中選擇了同樣能實現兩路模擬量檢測,且對硬件資源開銷極小的 PCF8591。兩傳感器之間的距離 h0 我們設置 1000mm,這個值的大小可以根據兩個傳感器的實際距離,在程序中手動更改。 1 ρghP? (1) 20ρg(hh )P ? (2) 聯(lián)立 (1),(2)式 ,可以消除 ρ, h的計算公式 : 11 2 0 hPPPh? (3) 壓力不是基準量,而是力和面積的導出量,故測量壓力的方法很多,在本系統(tǒng)中我們要 測量液體的壓力,所以選擇液體式壓力計。 成品油是一種混合物,各種規(guī)格的成品油密度不一致。 長治學院學士學位論文 5 : Qt是 面向對象 語言,易于擴展,允許組件編程,對日后軟件的維護,功能的擴充提供了極大的方便,而且是一款完全開源免費的軟件。 Delphi 的優(yōu)點是:不能隱式定義、結構嚴格、方便快捷、運行速度快、使用方便、可讀性高等。再者系統(tǒng)調試比較困難,無形中延長了開發(fā)周期,而且系統(tǒng)的穩(wěn)定性不高。 儲油罐實時計量:依據壓力值,計算出液位的高度和剩余百分比。系統(tǒng)應能攜掛不同類型的傳感器,能夠測量多種參數。因此,研發(fā)出符合我國國情的油罐區(qū)安全監(jiān)測系統(tǒng),不僅可以保障石油庫區(qū)的安全生產,而且將加快石油行業(yè)的現代化管理進程。但國內許多反應罐、大型儲油罐、加油站的液位計量仍采用人工檢尺和分析化驗的方法 ,其他參數的測定也沒有實行實時動態(tài)測量 ,這樣易引發(fā)安全事故,無法為生產操作和管理決策提供準確的依據。在設計初期,主要考慮了以下因素: ( 1)可靠性。 ( 5)操作維護方便性。系統(tǒng)主機和現場儀表之間通過 RS485 總線連接,儲油罐實時監(jiān)測和采集液位的核心是兩個壓力傳感器 。 通過對儲油罐實時監(jiān)測與計量管理設計目標的論證,確定上位機主要實現以下功能: ( 1) 系統(tǒng)參數的修改 ( 2) 儲油罐實時監(jiān)測與計量 軟件開發(fā)工具論證 i. 下位機端: 方案一:使用匯編語言為單片機編寫程序。 優(yōu)點是 Qt 提供了強大的可視化編程能力 。大致的實現方法是由兩個壓力傳感器獲取到兩個壓力模擬量 , 經 A/D 轉換后以 I2C 數據形式發(fā)送到單片機中,單片機經過一定的算數運算后得到當前液位與滿載 液位的高度比。 無論是常壓容器還是受壓容器,只要被測量的溶液為均勻液體即容器中液體處處密度相等,均可采差壓法來測量液位。將底端壓力值 P1 經過物理量化就可以得到這個值。 我們就將兩個壓力值利用串口發(fā)送給上位機,讓 PC 或 32 位的 ARM 嵌入式設備去計算,將結果輸出到軟件界面的相應位置。C 總線接口。 要用 PCF8591 監(jiān)測兩個壓力模擬量,首先得確定 PCF8591 在 I2C 總線上的地址,其次要確定控制字節(jié)。 主控器發(fā)送的第二個字節(jié)是控制字節(jié),控制字節(jié)用于控制器件實現各種功能,如模擬信號由哪幾個通道輸入等。 D7 也是保留位 . 由此可知,當單片機要監(jiān)測某一個壓力值時,它的工作流程如下: ( 1) 單片機向 I2C 上發(fā)出一個 8 位的設備地址,這時的 D0 位(讀寫位)為 0,通知被控器件將要向其執(zhí)行寫操作,并等待應答; ( 2) 收到應答后,發(fā)送控制字節(jié),寫入被控器件的控制寄存器,等待應答; ( 3) 收到應答后,再發(fā)送一個 8 位的設備地址,這時的 D0(讀寫位)為 1,通知被控器件將要讀取它發(fā)送的數據,等待應答; ( 4) 收到應答后,把總線的控制權交給被控器件,讀取它發(fā)送到總線上的數據。但是 STC89C516RD+單片機內部沒有集成 I2C總線設備模塊 ,所以外圍的 I2C總線設備要實現與單片機的通信時 ,必須要用軟件程序模擬出一個 I2C 總線設備的時序電路 .這無疑增大了系統(tǒng)的開銷 ,也增大了開發(fā) 難度。 在本系統(tǒng)中我們更為關心的是用 I2C 總線來傳遞什么數據,這些數據有什么意義,這就是一種操作 I2C 總線的策略,它與機制完全不相同,可由用戶自己來設定,從而讓I2C 總線上的不同設備實現不同的功能。DS18B20 有嚴格的通信協(xié)議來保證各位數據傳輸的正確性和完整性。 圖 DS18B20 的寫時序 DS18B20 的寫時序仍然分為寫 0 時序和寫 1 時序兩個過程。 利用 MAX485 的主要原因是它的有效傳輸距離能達到 1500m,而普通 RS232 電平信號的有效距離最多也超不過 20m。用一定的方法將這些數據解析完畢后,我們就可以很清楚的理解他們的意思了,在 linux平臺的終端中,顯示解析后的數據如圖 : 圖 linux 平臺的終端 數據 長治學院學士學位論文 16 顯示模塊 顯示模塊的功能是:將各傳感器檢測到的值經其他相應功能模塊處理之后,以數值的形式顯示在數碼管上 。 可以這樣賦值 : P2^0 = X; 長治學院學士學位論文 17 P2^1= X; P2^2= X。 長治學院學士學位論文 18 4 系統(tǒng)設計之上位機部分 上位機可以是 x86 平臺的計算機,也可以是 32 位 ARM 嵌入式設備。 選擇 linux操作系統(tǒng)的原因是它很穩(wěn)定,而且是免費的,絕大多數大型 IT公司的服務器都采用的是 linux操作系統(tǒng),甚至就連微軟也采用了大量的 linux系統(tǒng)的服務器。 myComsetDataBits(DATA_8)。 } 長治學院學士學位論文 20 這種接收方式相當于單片機的串口 工作 方式 2,就實現了 上位機 與下位機的串口通訊。 如果上位機除了監(jiān)測儲油罐外不做其他工作,完全可以用 ARM 嵌入式設備,無論是從環(huán)保,還是從經濟的角度考慮都是最佳的選擇。 常見的錯誤分為三種: ( 1) 語法錯誤。當 油罐編號超過4,界面中無數值顯示,符合要求 。 長治學院學士學位論文 29 參考文獻 [1] 張毅剛 .單片機原理及應用.北京:高等教育出版社, [2] 馮博琴、吳寧,微型計算機原理與接口技術,清華大學出版社, [3] 杜春雷 .ARM 體系結構與編 程 .北京: 清華大學出版社 , [4] 劉篤仁、韓保君 .傳感器原理及應用技術 .北京:機械工業(yè)出版社, [5] 成潔 .Linux窗口程序設計 :Qt4 精彩實例分析 .北京: 清華大學出版社 , [6] 黃維通 .Visual C++面向對象與可視化程序設計 (第 3 版 ).北京: 清華大學出版社 , [7] 劉篤仁、韓保君,傳感器原理及應用技術,北京:機械工業(yè)出版社, [8] 童詩白,模擬電子技術基礎,北京:高等教育出版社, [9] 周航慈,單片機應用程序設計,北京:北京航空航天大學出版社, 長治學院學士學位論文 30 The Realtime Monitoring System of Oil Storage Tank Name:Zhang Guoyan Instructor: Zhang Zhenhong Zhang Yi Abstract: As China has a rich oil resource, so there are many oil refining enterprises in China, naturally, the oil storage tank has been important equipment to storage oil. At the same time, the liquid level of oil storage tank great affect the inventory management and economic operation of factories. However, the liquid level measurement of many responses cans, large oil tank, and gas stations is still using artificial examining and the methods of analysis and assay, and the measurement of other parameters is also has not an execute realtime dynamic measurement. This situation makes accidents happen easily, and can’t provide a accurate basis for the productive operation and management decision of factories. This system in terms of the problems above uses the monolithic technology and sensor technology to measure the temperature and pressure of oil, and makes it shows the oil capacity and temperature value. It also uses the serial port to sent data to PC, so that there is a more concise calculation and statistics. Thus, the system can provide a technical support for the safety of industrial production. Key Words: Tanks, liquid level, a monitoring system 長治學院學士學位論文 31 附錄 下位機源代碼: 1 主函數代碼 include include void main() { uchar p,bai,shi,ge。 shi = (p%100)/10。 display (wdge, 8)。//儲油量函數 void display (uchar ,uchar )。 /* 本應該為: wei [8] = {0,1,2,3,4,5,6,7} 但是這樣 的話, wei[1]對應的是第二個元素 , wei[0]才對應 的是第一個元素 為了直觀方便起見,使 wei[1]對應到選通第一個數碼管 的代碼 0x00(也即是數組中的 0)就在數組前面加了一個 空元素(可以為任意值),數組大小隨之增大一位。= 0xf8。x++)。 TH1 = 0xFd。 PCON = 0x00。 } TI = 0。 DQ = 0。 DQ = 0。 delay(5)。 } delay(6)。 write_bit(temp)。 write_byte(read_EEROM)。 void write_bit(