王公堂,于國棟
(山東師范大學物理與電子科學學院,山東濟南250014)
隨著城市化建設的快速發展,智能住宅小區不斷涌現,小區中生產和供應熱水的太陽能集熱熱水工程設備多、分散安裝在各個樓頂,通常管理人員需要上到樓頂才能實現控制和管理,十分不便。遠程測控系統能夠對生產和供應熱水的設備進行遠程測控,降低管理成本,管理方便。
一般測控網絡多采用RS-485作為現場總線[1],但由于其存在著傳輸距離小于1 km、通訊失敗率高的局限性,決定了RS-485不適合小區范圍里5 km以內的通訊。與RS-485相比,CAN總線[2]是一種有效支持分布式的串行通信網絡,實時性強,可靠性高,抗干擾能力強。CAN總線在傳輸距離小于40 m時,最大傳輸速率可達到1 MB/s,當傳輸距離為10 km時,目前CAN總線仍可提供高達5 kB/s的數據傳輸速率。因此,采用CAN總線來設計遠程水溫水位測控系統,具有明顯的實用價值和現實意義。
測控系統主要由上位機和N個測控節點組成。上位機核心為PIC18F458單片機,通過CAN總線與測控節點通信,顯示各測控節點采集的水溫、水位數據,并完成功能設置,把設置好的溫差循環參數和供水參數等數據傳送給測控節點。測控節點也是以PIC18F458為主控器,完成數據采集和控制執行。系統總體結構框圖如圖1所示。

圖1 系統總體結構框圖Fig.1 General structure diagram of system
測控節點整體結構框圖如圖2所示。測控節點在設計上采用了模塊化結構,由PIC微處理器、水溫水位采集模塊、繼電器控制模塊、CAN通訊模塊和實時時鐘模塊組成,可根據具體情況只選用其中的部分模塊。

圖2 測控節點結構框圖Fig.2 Structure diagram of control node
目前,有兩種CAN總線器件可以選擇。一種是片內集成CAN的微控制器,如8XC591/2、MC68376等,另一種是獨立的CAN控制器,如SJA1000、82C200等,但是獨立的CAN控制芯片需要外接一個微處理器才能運行。本設計選用的是Microchip公司的帶有片內CAN控制器的PIC18F458微處理器,這樣大大簡化了節點的硬件電路設計,減少了程序的復雜程度,系統的可靠性高。而且該微處理器內置10位A/D轉換模塊,可直接實現8通道模擬信號的A/D轉換,自帶256 B的E2PROM,可以實現數據的掉電保護,滿足測控節點的設計要求。
溫度測量選用NTC熱敏電阻器作測溫傳感器,每路測溫電路完全相同,都是用一個阻值固定的電阻與一個熱敏電阻串聯,對5 V電源電壓分壓,利用熱敏電阻上的壓降隨溫度變化而變化實現溫度的測量[3]。當選用玻璃封裝精度為50 kΩ±0.5%,B值為4 050 k±1%的NTC熱敏電阻,阻值固定的電阻選用精度為20 kΩ±0.5%的金屬膜電阻時,不需進行線性補償,經PIC自帶的10位A/D轉換器轉換后,直接查表獲得水溫值,精度可達±1℃。
水位測量采用非對稱式多諧振蕩器電路[4],先把水位傳感器RW的電阻大小轉換為振蕩信號的頻率高低。振蕩器電路由74HC04、C1、R5、R6、R7和水位傳感器的電阻RW組成,振蕩頻率為f=1/[2.2(R5+R6+RW)C1],如圖3所示。采用捕捉法測量振蕩信號的頻率。振蕩信號由RC2輸入單片機,利用CCP對上升沿進行捕捉,每次捕捉都記錄下TMR1中的值,根據相鄰兩次上升沿時TMR1的值計算得振蕩頻率[5],誤差可控制在1 Hz以內。

圖3 水位測量電路Fig.3 Circuit diagram of water level measurement
繼電器控制模塊電路如圖4。繼電器控制模塊由RD7輸出來控制繼電器的開關。通過光耦TLP521來隔離,增強繼電器的穩定性,光耦輸入端使用單片機電源VCC,輸出端為直流+5 V電源供電,有效地減少了電源間的互相干擾。繼電器可能會長時間工作在通電狀態,且電流較大。如果直接用光偶的輸出端來驅動繼電器,會降低光偶的使用壽命,甚至燒壞光耦,因此,在光耦輸出端加入三極管8050驅動電路,由三極管直接驅動光耦。

圖4 繼電器控制電路Fig.4 Control circuit of Relay
2.4.1 C AN通訊模塊的硬件設計
CAN通訊模塊的硬件電路如圖5。設計中使用CAN總線收發器82C250,它是CAN控制器與物理總線間的接口,可以提供對總線的差動發送和接受能力,與ISO11898標準完全兼容,并具有抗瞬間干擾、保護總線的能力。PIC18F458自帶CAN控制器,82C250并不是必須使用的器件,但82C250有較強驅動能力,可支持多達110個節點,并能延長通訊距離,滿足對多個測控節點遠程通訊的設計要求。為了進一步提高系統的可靠性和抗干擾能力,在CAN控制器和CAN收發器之間采用高速光耦6N137進行隔離。

圖5 CAN通訊電路Fig.5 Communication circuit of CAN
整個測控系統的CAN總線長度在5 km以內,因此將82C250的第8腳直接接地,使82C250工作在高速模式,來減少延時增加總線長度。這種模式的總線輸出信號用盡可能快的速度切換,因此一般要求使用屏蔽雙絞線電纜來防止可能的擾動。
2.4.2 C AN通訊模塊的軟件設計
CAN通信模塊的軟件主要由初始化程序、發送程序、接收程序3部分組成。其中初始化程序是實現通信的關鍵,它主要用來完成CAN控制器工作方式的選擇,即對PIC18F458中CAN控制器控制段中的寄存器進行設置[6],包括方向控制寄存器設置,CAN控制寄存器設置,接收驗收濾波寄存器和濾波屏蔽寄存器設置,設置發送數據幀類型、標識符、數據長度。PIC自帶的CAN控制器必須進入設置模式才能進行初始化,CAN控制器初始化程序流程如圖6所示。

圖6 CAN初始化程序流程圖Fig.6 Flow chart of CAN Initialization
測控節點與CAN總線之間的數據交換是通過發送程序和接收程序實現的。上位機通過定期的訪問來獲取測控節點的數據,而不是實時傳送,從而減輕了總線負擔。這也是分布式控制方法相對于集中控制方法的一個優點。測控節點一般不主動發起通訊,但如果測控節點出現異常,會主動發起CAN通訊向上位機報錯。
測控節點具有依據時間來進行控制的功能,這里選用串行日歷時鐘芯片PCF8563。PIC18F458自帶I2C控制器,可方便的實現與PCF8563高速穩定的通訊,簡化了編程過程。為了防止在意外掉電后需要對PCF8563進行重新設置,加入了3.6 V后備電源。
上位機主要由CAN通信、鍵盤輸入、LCD顯示等幾個模塊組成。上位機的CAN通訊模塊與測控節點一樣,這里主要介紹LCD顯示模塊。在LCD顯示中,將每一界面顯示的內容分為靜態內容和動態內容兩部分。靜態內容是在同一界面中不用實時更新的部分,只需寫入一次LCD模塊即可。動態內容為界面中需要實時更新的數據。為此,設計了兩個對應的顯示模塊。靜態內容顯示模塊,只在進入某一界面時才調用,如果界面沒有切換,僅調用一次。動態顯示模塊,一直隨程序的運行而被調用,不斷更新所顯示的數據。這樣的設計大大減少單片機與LCD模塊的通訊數據量,既能實時更新數據,又能提高系統的穩定性。
基于CAN總線的遠程水溫水位測控系統以PIC18F458為主控制芯片,采用CAN總線技術,當通信距離為5 km時,仍可提供10 kB/s的通訊速率,并且通訊穩定,較好地解決了現代化小區對水溫水位的遠程測控問題。在軟/硬件設計中均采用了模塊化的結構,靈活性高和適用性好。在太陽能熱水工程快速普及居民小區的今天,該系統具有良好的應用前景。
[1]張修太,馬金元,翟亞芳,等.基于RS485的溫度采集系統設計[J].微計算機信息,2010,26(10):102-104.
ZHANG Xiu-tai,MA Jin-yuan,ZHAI Ya-fang,et al.The design of the temperature acquisition system based on RS485[J].Microcomputer Information,2010,26(10):102-104.
[2]饒運濤,鄒繼軍,鄭勇蕓.現場總線CAN原理與應用[M].北京:北京航空航天大學出版社,2003.
[3]任國興,王曉影,杜立彬.基于AD7799的熱敏電阻高精度測溫系統[J].電子設計工程,2010,18(11):82-84.
REN Guo-xing,WANG Xiao-ying,DU Li-bin.Design of high precision thermistor temperature measurement system based on AD7799[J].Electronic Design Engineering,2010,18(11):82-84.
[4]閻石.數字電子技術基礎[M].北京:高等教育出版社,2006:480-483.
[5]李海濤,儀維,吳筱堅,等.PIC單片機應用開發典型模塊[M].北京:人民郵電出版社,2007:28-38.
[6]劉和平,劉釗,鄭群英,等.PIC18Fxxx單片機程序設計及應用[M].北京:北京航空航天大學出版社,2005.