【正文】
端軟件是在 linux 操作系統(tǒng)下編譯開發(fā)的,也是要運(yùn)行在 linux 32 位平臺(tái)上。 其中 d 是段選參數(shù),作用是顯示什么數(shù)字; w 是位選信號(hào),作用是在那一位上顯示。位選的電平邏輯可參考 38 譯碼器的真值表,在此不再贅述。 長治學(xué)院學(xué)士學(xué)位論文 15 向上位機(jī)發(fā)送的數(shù)據(jù)是源源不斷的發(fā)送上去,每秒鐘能發(fā)好幾次,上位機(jī)再選擇性的 接收數(shù)據(jù)并做出相應(yīng)的處理。 串口數(shù) 據(jù)發(fā)送模塊 串口數(shù)據(jù)發(fā)送模塊的主要功能是將溫度,壓力等數(shù)據(jù)用串口發(fā)送給上位機(jī),實(shí)現(xiàn)對儲(chǔ)油罐的遠(yuǎn)端檢測功能。 圖 DS18B20 的復(fù)位時(shí)序 長治學(xué)院學(xué)士學(xué)位論文 13 圖 DS18B20 的讀時(shí)序 DS18B20 的讀時(shí)序分為讀 0 時(shí)序和讀 1 時(shí)序兩個(gè)過程。 通常情況下我們采用的是 TO- 92 封裝的 DS18B20, 如 圖 。如果一段時(shí)間內(nèi)沒有收到從機(jī)的應(yīng)答信號(hào),則自動(dòng)認(rèn)為從機(jī)已正確接收到數(shù)據(jù),如圖 。 //AD0 模數(shù)轉(zhuǎn)換 0,將值賦給 p1 這個(gè)函數(shù)的作用是發(fā)送器件地址 0x90和控制字 0x00(A/D通道 0)讀取 A/D通道 0的值 ,具體的實(shí)現(xiàn)過程參照附錄中的源代碼部分。 D4 D5 是模擬量輸入選擇: 00 四路單獨(dú)輸入, 01 三路差分輸入, 10 為單端與差分配合輸入, 11 為模擬輸出允許有效。 總線操作時(shí),由器件地址、引腳地址、方向位組成的從地址為主控器發(fā)送的一個(gè)字節(jié)。 PCF8591 的功能包括多路模擬輸入、內(nèi)置跟蹤保持、 8bit 模數(shù)轉(zhuǎn)換和 8bit 數(shù)模轉(zhuǎn)換。所以我在設(shè)計(jì)過程中選擇了同樣能實(shí)現(xiàn)兩路模擬量檢測,且對硬件資源開銷極小的 PCF8591。兩傳感器之間的距離 h0 我們設(shè)置 1000mm,這個(gè)值的大小可以根據(jù)兩個(gè)傳感器的實(shí)際距離,在程序中手動(dòng)更改。 1 ρghP? (1) 20ρg(hh )P ? (2) 聯(lián)立 (1),(2)式 ,可以消除 ρ, h的計(jì)算公式 : 11 2 0 hPPPh? (3) 壓力不是基準(zhǔn)量,而是力和面積的導(dǎo)出量,故測量壓力的方法很多,在本系統(tǒng)中我們要 測量液體的壓力,所以選擇液體式壓力計(jì)。 成品油是一種混合物,各種規(guī)格的成品油密度不一致。 長治學(xué)院學(xué)士學(xué)位論文 5 : Qt是 面向?qū)ο?語言,易于擴(kuò)展,允許組件編程,對日后軟件的維護(hù),功能的擴(kuò)充提供了極大的方便,而且是一款完全開源免費(fèi)的軟件。 Delphi 的優(yōu)點(diǎn)是:不能隱式定義、結(jié)構(gòu)嚴(yán)格、方便快捷、運(yùn)行速度快、使用方便、可讀性高等。再者系統(tǒng)調(diào)試比較困難,無形中延長了開發(fā)周期,而且系統(tǒng)的穩(wěn)定性不高。 儲(chǔ)油罐實(shí)時(shí)計(jì)量:依據(jù)壓力值,計(jì)算出液位的高度和剩余百分比。系統(tǒng)應(yīng)能攜掛不同類型的傳感器,能夠測量多種參數(shù)。因此,研發(fā)出符合我國國情的油罐區(qū)安全監(jiān)測系統(tǒng),不僅可以保障石油庫區(qū)的安全生產(chǎn),而且將加快石油行業(yè)的現(xiàn)代化管理進(jìn)程。但國內(nèi)許多反應(yīng)罐、大型儲(chǔ)油罐、加油站的液位計(jì)量仍采用人工檢尺和分析化驗(yàn)的方法 ,其他參數(shù)的測定也沒有實(shí)行實(shí)時(shí)動(dòng)態(tài)測量 ,這樣易引發(fā)安全事故,無法為生產(chǎn)操作和管理決策提供準(zhǔn)確的依據(jù)。在設(shè)計(jì)初期,主要考慮了以下因素: ( 1)可靠性。 ( 5)操作維護(hù)方便性。系統(tǒng)主機(jī)和現(xiàn)場儀表之間通過 RS485 總線連接,儲(chǔ)油罐實(shí)時(shí)監(jiān)測和采集液位的核心是兩個(gè)壓力傳感器 。 通過對儲(chǔ)油罐實(shí)時(shí)監(jiān)測與計(jì)量管理設(shè)計(jì)目標(biāo)的論證,確定上位機(jī)主要實(shí)現(xiàn)以下功能: ( 1) 系統(tǒng)參數(shù)的修改 ( 2) 儲(chǔ)油罐實(shí)時(shí)監(jiān)測與計(jì)量 軟件開發(fā)工具論證 i. 下位機(jī)端: 方案一:使用匯編語言為單片機(jī)編寫程序。 優(yōu)點(diǎn)是 Qt 提供了強(qiáng)大的可視化編程能力 。大致的實(shí)現(xiàn)方法是由兩個(gè)壓力傳感器獲取到兩個(gè)壓力模擬量 , 經(jīng) A/D 轉(zhuǎn)換后以 I2C 數(shù)據(jù)形式發(fā)送到單片機(jī)中,單片機(jī)經(jīng)過一定的算數(shù)運(yùn)算后得到當(dāng)前液位與滿載 液位的高度比。 無論是常壓容器還是受壓容器,只要被測量的溶液為均勻液體即容器中液體處處密度相等,均可采差壓法來測量液位。將底端壓力值 P1 經(jīng)過物理量化就可以得到這個(gè)值。 我們就將兩個(gè)壓力值利用串口發(fā)送給上位機(jī),讓 PC 或 32 位的 ARM 嵌入式設(shè)備去計(jì)算,將結(jié)果輸出到軟件界面的相應(yīng)位置。C 總線接口。 要用 PCF8591 監(jiān)測兩個(gè)壓力模擬量,首先得確定 PCF8591 在 I2C 總線上的地址,其次要確定控制字節(jié)。 主控器發(fā)送的第二個(gè)字節(jié)是控制字節(jié),控制字節(jié)用于控制器件實(shí)現(xiàn)各種功能,如模擬信號(hào)由哪幾個(gè)通道輸入等。 D7 也是保留位 . 由此可知,當(dāng)單片機(jī)要監(jiān)測某一個(gè)壓力值時(shí),它的工作流程如下: ( 1) 單片機(jī)向 I2C 上發(fā)出一個(gè) 8 位的設(shè)備地址,這時(shí)的 D0 位(讀寫位)為 0,通知被控器件將要向其執(zhí)行寫操作,并等待應(yīng)答; ( 2) 收到應(yīng)答后,發(fā)送控制字節(jié),寫入被控器件的控制寄存器,等待應(yīng)答; ( 3) 收到應(yīng)答后,再發(fā)送一個(gè) 8 位的設(shè)備地址,這時(shí)的 D0(讀寫位)為 1,通知被控器件將要讀取它發(fā)送的數(shù)據(jù),等待應(yīng)答; ( 4) 收到應(yīng)答后,把總線的控制權(quán)交給被控器件,讀取它發(fā)送到總線上的數(shù)據(jù)。但是 STC89C516RD+單片機(jī)內(nèi)部沒有集成 I2C總線設(shè)備模塊 ,所以外圍的 I2C總線設(shè)備要實(shí)現(xiàn)與單片機(jī)的通信時(shí) ,必須要用軟件程序模擬出一個(gè) I2C 總線設(shè)備的時(shí)序電路 .這無疑增大了系統(tǒng)的開銷 ,也增大了開發(fā) 難度。 在本系統(tǒng)中我們更為關(guān)心的是用 I2C 總線來傳遞什么數(shù)據(jù),這些數(shù)據(jù)有什么意義,這就是一種操作 I2C 總線的策略,它與機(jī)制完全不相同,可由用戶自己來設(shè)定,從而讓I2C 總線上的不同設(shè)備實(shí)現(xiàn)不同的功能。DS18B20 有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。 圖 DS18B20 的寫時(shí)序 DS18B20 的寫時(shí)序仍然分為寫 0 時(shí)序和寫 1 時(shí)序兩個(gè)過程。 利用 MAX485 的主要原因是它的有效傳輸距離能達(dá)到 1500m,而普通 RS232 電平信號(hào)的有效距離最多也超不過 20m。用一定的方法將這些數(shù)據(jù)解析完畢后,我們就可以很清楚的理解他們的意思了,在 linux平臺(tái)的終端中,顯示解析后的數(shù)據(jù)如圖 : 圖 linux 平臺(tái)的終端 數(shù)據(jù) 長治學(xué)院學(xué)士學(xué)位論文 16 顯示模塊 顯示模塊的功能是:將各傳感器檢測到的值經(jīng)其他相應(yīng)功能模塊處理之后,以數(shù)值的形式顯示在數(shù)碼管上 。 可以這樣賦值 : P2^0 = X; 長治學(xué)院學(xué)士學(xué)位論文 17 P2^1= X; P2^2= X。 長治學(xué)院學(xué)士學(xué)位論文 18 4 系統(tǒng)設(shè)計(jì)之上位機(jī)部分 上位機(jī)可以是 x86 平臺(tái)的計(jì)算機(jī),也可以是 32 位 ARM 嵌入式設(shè)備。 選擇 linux操作系統(tǒng)的原因是它很穩(wěn)定,而且是免費(fèi)的,絕大多數(shù)大型 IT公司的服務(wù)器都采用的是 linux操作系統(tǒng),甚至就連微軟也采用了大量的 linux系統(tǒng)的服務(wù)器。 myComsetDataBits(DATA_8)。 } 長治學(xué)院學(xué)士學(xué)位論文 20 這種接收方式相當(dāng)于單片機(jī)的串口 工作 方式 2,就實(shí)現(xiàn)了 上位機(jī) 與下位機(jī)的串口通訊。 如果上位機(jī)除了監(jiān)測儲(chǔ)油罐外不做其他工作,完全可以用 ARM 嵌入式設(shè)備,無論是從環(huán)保,還是從經(jīng)濟(jì)的角度考慮都是最佳的選擇。 常見的錯(cuò)誤分為三種: ( 1) 語法錯(cuò)誤。當(dāng) 油罐編號(hào)超過4,界面中無數(shù)值顯示,符合要求 。 長治學(xué)院學(xué)士學(xué)位論文 29 參考文獻(xiàn) [1] 張毅剛 .單片機(jī)原理及應(yīng)用.北京:高等教育出版社, [2] 馮博琴、吳寧,微型計(jì)算機(jī)原理與接口技術(shù),清華大學(xué)出版社, [3] 杜春雷 .ARM 體系結(jié)構(gòu)與編 程 .北京: 清華大學(xué)出版社 , [4] 劉篤仁、韓保君 .傳感器原理及應(yīng)用技術(shù) .北京:機(jī)械工業(yè)出版社, [5] 成潔 .Linux窗口程序設(shè)計(jì) :Qt4 精彩實(shí)例分析 .北京: 清華大學(xué)出版社 , [6] 黃維通 .Visual C++面向?qū)ο笈c可視化程序設(shè)計(jì) (第 3 版 ).北京: 清華大學(xué)出版社 , [7] 劉篤仁、韓保君,傳感器原理及應(yīng)用技術(shù),北京:機(jī)械工業(yè)出版社, [8] 童詩白,模擬電子技術(shù)基礎(chǔ),北京:高等教育出版社, [9] 周航慈,單片機(jī)應(yīng)用程序設(shè)計(jì),北京:北京航空航天大學(xué)出版社, 長治學(xué)院學(xué)士學(xué)位論文 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 長治學(xué)院學(xué)士學(xué)位論文 31 附錄 下位機(jī)源代碼: 1 主函數(shù)代碼 include include void main() { uchar p,bai,shi,ge。 shi = (p%100)/10。 display (wdge, 8)。//儲(chǔ)油量函數(shù) void display (uchar ,uchar )。 /* 本應(yīng)該為: wei [8] = {0,1,2,3,4,5,6,7} 但是這樣 的話, wei[1]對應(yīng)的是第二個(gè)元素 , wei[0]才對應(yīng) 的是第一個(gè)元素 為了直觀方便起見,使 wei[1]對應(yīng)到選通第一個(gè)數(shù)碼管 的代碼 0x00(也即是數(shù)組中的 0)就在數(shù)組前面加了一個(gè) 空元素(可以為任意值),數(shù)組大小隨之增大一位。= 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(