基于RS-485總線的數據采集系統
1.1 系統整體框圖
本文引用地址:http://www.104case.com/article/201611/318903.htm系統實質上是一個集散控制系統,更準確地說是一個遠程數據采集系統,系統概念設計圖如圖1所示,系統整體框架圖如圖2所示。
1.2 系統模塊設計
1.2.1 信號獲取模塊
系統采集大壩壩內各個方位的形變,這種形變反映出各個方位的壓力值。選用NZS - 25系列差阻式應變計,它是一種大量程大應變計,適用于大壩及其他混凝土建筑物內部、鋼結構等的應變量測量。它與一般壓力傳感器的結構不同,是通過測量比值而得到壓力值,其基本結構如圖3所示。

圖3中,R1、R2為敏感電阻,其基準電阻值為40Ω,在其沒有受壓時,2個電阻的阻值都不會發生變化,但是當受到外界作用的壓力時,R1的電阻值會隨著受到壓力的不同而發生變化阻值保持不變,這樣R1和R2上的壓降不同,通過2次測量分別得到R1、R2上的壓降,再通過程序計算出它們的比值,就可以反映壓力的變化。
1.2.2 信號放大模塊
系統采用的壓力傳感器輸出的電壓信號為mV級,電壓信號過小,不能直接進行A/D轉換,因此要對其進行放大,以達到轉換器的要求。選用專用儀表放大器AD620芯片。此芯片內部采用差動輸入,共模抑制比高,差模輸入阻抗大,增益高,精度也非常好,且外部接口簡單。AD620放大器向A/D轉換器提供的模擬輸入電壓為-2~2V,滿足A/D轉換器的要求。
1.2.3 A/D轉換模塊
轉換模塊選用ICL7135芯片,其典型配置如圖4所示。
ICL7135的時鐘由下位單片機的ALE端提供,因為下位機在P0、P2口沒有擴展外圍程序存儲器和數據存儲器,因此端提供的時鐘頻率為系統時鐘頻率的1/12;此外,由于前級放大部分采用AD620,它是雙電源供電,所以ICL7135也是雙電源供電,且他們的電源要求相同。ICL7135和下位單片機的連接采用串行連接,如圖5所示。

1.2.4 電源模塊
由于系統下位機位于大壩現場,電源無法從現場取得,必須由上位機提供,因此電源解決方案如圖6所示。
在主節點部分,通過總電源處理模塊,將交流220V轉換為直流12V,上位機的電源由自身的5V穩壓模塊提供,通過總電源線將12V直流輸送到下位機,下位機及其外圍器件所需的電源都由下位機的電源模塊提供,個別器件所需的特殊電壓,由專用模塊獲得。
1.2.5 通信模塊
總線采用雙絞線差分傳輸方式,可連接成半雙工和全雙工方式,最遠傳輸距離為112km。系統數據通信采用半雙工通信方式,即整個網絡中任一時刻只能由一個節點成為主節點,處于發送狀態,并向總線發送數據,其他的節點都必須處于接收狀態,如果2個或2個以上節點同時向總線發送數據,將導致所有發送方發送數據失敗,因此通信網一般采取主從式即主節點控制整個網絡的通信時序,使總線上的各節點分時使用總線,解決總線數據傳輸的沖突。
總線驅動芯片選用RS - 485接口芯片SN75LBC184,它采用單一電源,電壓為3~515V時都能正常工作。與普通的芯片相比,它不但能抗雷電的沖擊,而且能承受高達的靜電放電沖擊,片內集成4個瞬時過壓保護管,可承受高達的瞬態脈沖電壓,因此它能顯著提高防止雷電損壞器件的可靠性。對一些環境比較惡劣的現場,可直接與傳輸線相接,而不需要任何外加保護元件。該芯片還有一個獨特的設計,當輸入端開路時,其輸出為高電平,這樣可保證接收器輸入端電纜有開路故障時,不影響系統的正常工作。另外它的輸入阻抗為RS - 485標準輸入阻抗的2倍(≥24kΩ),故可以在總線上連接64個收發器。芯片內部設計了限斜率驅動,使輸出信號邊沿不會過陡,使傳輸線上不會產生過多的高頻分量,從而有效扼制電磁干擾??偩€驅動芯片和單片機的連接采用間接連接,如圖7所示。
1.2.6 數據存儲模塊
該模塊用來存儲下位機傳過來的壓力數據。系統對數據存儲器的基本要求是存儲容量要大,掉電數據不容易丟失,能保存較長時間,易于擴展容量?;谝陨弦螅x用了遵循總線串行擴展技術的24C256。單片機和24C256之間的數據交換完全遵照IIC總線的規定,即單片機作為主機,24C256作為從機,所有操作都是由SDA和SCL 2個腳位的狀態(共有4個狀態:開始、停止、數據和應答)來確定。24C256和單片機的連接圖如圖8所示。
1.2.7 時鐘模塊
采用實時時鐘芯片DS12C887為系統產生時間基準,它和單片機的連接如圖9所示??僧斪鲉纹瑱C的外部RAM處理,通過P0口對DS12C887進行操作,通過其中斷引腳IRQ向單片機發出中斷,使單片機讀出時間。
2 軟件設計
系統軟件框圖如圖10所示。一級目錄分為上位機程序、通信程序和下位機程序;二級目錄分為數據采集程序模塊、模擬多路開關控制程序模塊、數據處理程序模塊、下位機通信程序模塊、上位機通信程序模塊、顯示程序模塊、存儲程序模塊、時鐘程序模塊以及鍵盤控制模塊。每個二級程序模塊又由更小的函數組成,這樣的設計方法容易修改和測試。

3 結語
軟件程序設計按照自頂向下的原則,按功能模塊化劃分采用C語言編程實現各模塊功能,以子程序的形式進行封裝對外部提供規定的接口,再按照系統流程要求進行模塊組合最后實現整個系統。
評論