1 引言
can(control area network)即控制器局域網絡,它最初是由德國的bosch公司為汽車監測、控制系統而設計的。由于其高性能、高可靠性及獨特的設計,越來越受到人們的重視。目前,can總線是唯一已成為國際標準的,被公認為是幾種最有前途的現場總線之一。
can具有下列主要特性:
(1) 多主站依據優先權進行總線訪問;
(2) 無破壞性的基于優先權的仲裁;
(3) 借助接收濾波的多地址傳送;
(4) 遠程數據請求;
(5) 配置靈活性;
(6) 全系統數據兼容性;
(7) 錯誤檢測和出錯信息;
(8) 若丟失仲裁或由于出錯而遭破壞的幀可自動重發送;
(9) 暫時錯誤和永久性故障節點的判別以及故障節點的自動脫離。
考慮到can總線具有的這些優點,我們設計了基于can總線的雙容水箱水位控制系統。
2、系統的總體結構
雙容水箱試驗臺由雙容水箱、變頻器、水位傳感器、交流電機、水泵和配電盤構成。其中水位傳感器的作用是測量被控水箱的水位,水泵用來給供水水箱抽水。系統控制的目的就是使被控水箱的水位保持在給定值高度,當外加擾動或改變對象特性,能使水位恢復在給定值高度。
本系統是將普通的變送器、執行器和pc機改造成為具有can接口的智能節點,然后將它們通過總線有機的聯系在一起所形成的完整的控制系統。控制系統的總體結構 如圖1所示。
[align=center]

圖1 雙容水箱控制系統的總體結構圖[/align]
系統的網絡拓撲采用總線式結構,可以分為兩層:現場控制層和過程監控層。
2.1 現場控制層
現場控制層為系統的底層,由帶有can接口的變送器或執行器構成,它們之間通過can總線進行通信,完成全部的控制工作。它的基本工作過程如下所述:變送器將被調量的值變換為標準信號,該信號在can接口內完成a/d轉換、數字濾波等處理,然后將變換所得的數字信號通過總線傳送到相應的can接口。在該節點內將信號接收后,根據所選擇的控制算法(pid或模糊控制)進行運算,之后將運算結果進行d/a變換,再將模擬信號通過放大處理去驅動執行器。這樣整個控制系統就可以按照一定的控制規律構成一個完整的閉環控制系統。
2.2 過程監控層
過程監控層是現場控制層的上一層,接收由該層傳輸上來的所需的生產過程的數據,以及向該層發送操作命令,以便運行人員對整個生產過程進行監控。過程監控層的上面可與以太網相連,以便管理層可以直接快速的獲得來自生產一線的數據,這也充分的體現了現場總線全數字化的優點。
過程監控層主要由兩部分構成:can適配器和上位機。其中can適配器一端和總線相連, 完成和can總線的通信;另一端和上位機連接, 完成和上位機的通信。它的主要功能是將上位機的操作信號和控制參數傳送給指定的can網絡節點, 同時, 將節點的數據傳輸給上位機做進一步處理。本系統通過rs232串行口和上位機交換數據。這種方法雖然傳輸速度低, 但結構簡單、易于實現、價格低廉。
3、系統的硬件設計
由系統總體結構圖(圖1)可見,系統硬件主要包括3個can智能站:can通信適配器(#3 can智能站)、智能傳感器節點(#1 can智能站)和智能執行器節點(#2 can智能站)。各個智能站的設計相似,下面以智能傳感器節點為例進行介紹。其硬件結構圖如圖2所示。
[align=center]

圖2 智能傳感器節點的硬件結構圖[/align]
這里要重點介紹的是can通信電路。這部分電路主要由can的協議芯片sja1000、can的收發芯片82c250和光電隔離電路構成。
(1) can控制器
can控制器是can通信的核心芯片,主要功能是實現can總線協議和與微處理器接口。本文的can控制器采用philips的sja1000,它是一個獨立的can控制器,支持can2.0b協議,可以實現can總線物理層和數據鏈路層的所有功能。sja1000有兩種工作模式可以選擇,basiccan 模式和pelican模式。本次設計中采用pelican模式,它在basiccan 模式的基礎有如下的擴展:可讀/寫訪問的錯誤計數器,可編程的錯誤報警限制,最近一次錯誤代碼寄存器,對每一個can 總線錯誤的中斷,支持熱插拔,具有只聽模式,可單次發送等。這些增加的功能對系統優化和錯誤診斷非常重要。
(2) can收發器
can收發器采用pca82c250,它是can控制器和物理總線的接口,可以提高總線驅動干擾能力,增加通信抗干擾能力,并可保護sja1000免遭破壞。它可以支持多達110個節點,并能在1mbps的傳輸速率下工作于惡劣的工作條件下。82c250提供對總線的差動發送能力和對can控制器的差動接收能力,其差分接收器共模抑制比寬,抗電磁干擾能力強。它內部有總線保護電路和限流電路,并具有低電流待機工作方式和降低射頻干擾的斜率控制。
(3) 光電耦合器
光電耦合器是為了將網絡和系統內部隔離起來,以提高其抗干擾性能。can通信部分的硬件電路圖如圖3所示。
[align=center]

圖3 can通信電路原理圖[/align]
4 系統的軟件設計
基于can總線的測控系統的軟件分為下位機部分和上位機部分,下位機軟件完成采集、控制、數據傳輸等功能,采用模塊化設計方法,主要包括以下幾個模塊:通用can通信模塊、控制算法模塊、rs232通信模塊、數據采集和輸出模塊、自檢和故障處理模塊。上位機軟件主要是完成監控畫面的組態和與適配卡的通信。
軟件的編寫根據不同的情況采用不同的語言。單片機部分采用c51語言編寫,使用keil c51集成開發環境。組態軟件采用“組態王6.5”,它是目前比較流行的一種用于建立工控對象人機接口的智能軟件包,支持microsoft windows95/98/nt中文操作系統,可以很方便的開發出功能完善、界面友好的組態軟件。上位機的通信和調度軟件采用高級語言visual basic 6.0編寫,它支持面向對象的程序設計,有豐富的控件資源,可以大量節約開發的時間。
下面詳細介紹can通信模塊和上位機通信程序的設計。
4.1 通用can通信模塊的設計
通用can通信模塊的功能是完成can控制器的初始化設置;控制各節點之間的數據交換;檢測各個節點和總線的狀態;進行故障處理。其程序流程圖如圖4所示。
[align=center]

圖4 通信模塊主程序流程圖[/align]
1) can控制器的初始化設置
can控制器的初始化主要是完成sja1000的初始化設置,是設計的一個重點,也是一個難點。sja1000在系統上電、硬件復位或主控制器發出復位命令后需進行初始化,以設定它的工作模式、通信速率、輸出控制方式、標識符和屏蔽格式等重要參數。
(2) 數據發送、接收子模塊
數據發送、接收子模塊主要是控制各個節點數據的發送和接收,數據從can控制器sja1000發送到can總線是由can控制器自動完成的。
·發送程序只需把包裝好的數據送到can的發送緩沖區,然后啟動發送命令即可。發送程序可采用查詢方式或中斷方式。由于查詢方式比較簡單,這里不作介紹。而對于中斷方式,發送程序分為兩部分:一是主程序,二是中斷服務程序。主程序主要用于控制信息的發送及當發送緩沖區滿時,把要發送的信息暫存到臨時存儲區;中斷發送程序負責把臨時存儲區中的暫存信息發送出去。信息從can總線到can接收緩沖區是由can控制器自動完成的。
·接收程序只需從接收緩沖區讀取要接收的信息即可。接收程序也可采用查詢方式或中斷方式,兩者的繁簡程度相當。
4.2 上位機通信程序的設計
上位機的軟件設計主要包括兩部分內容:監控界面軟件的設計和與適配器通信軟件的設計。監控界面采用“組態王”軟件包,對于不同的系統應用再進行二次開發,通信程序采用vb編寫。上位機的通信程序相當于一個接口轉換程序,一面和適配器的rs232口進行數據交換;另一面和組態王進行數據交換,如圖5所示。
[align=center]

圖5 上位機通信程序功能示意圖[/align]
vb和適配卡的通信是通過rs232協議完成的,應用vb的通信控件mscomm可以很方便的實現。vb和組態王的通信是動態數據交換(dde)實現的。
5 結束語
現場總線由于具有數字式串行網絡的高可靠性,又是一種低成本的計算機網絡,因此倍受人們青睞,已被廣泛應用到各種測量、控制系統中。can總線是現場總線技術中發展較快的一種現場總線,與其他總線相比,總線的數據通訊具有獨特的可靠性、實時性和靈活性等技術特點,是有效支持分布式控制或實時控制的串行通訊網絡,且易于用戶進行二次開發工作,因此,越來越受到各工業廠家的重視并成為公認的最有發展前途的現場總線之一。
本文介紹的基于can總線雙容水箱水位控制系統已經在武漢大學動機學院系統實驗室得到了成功的應用,實驗證明該系統運行穩定,控制實時性良好。
參考文獻
[1] 鄔寬明. can總線原理和應用系統設計[m]. 北京:北京航空航天大學出版社,1996.
[2] 馬忠梅等. 單片機的c語言應用程序設計[m]. 北京:北京航空航天大學出版社,2003.
[3] data sheet sja1000[z]. philips semiconductors.