引言
目前我國北方許多城市已經或者即將進行熱網改造工程,將傳統的分散供熱改造為集中供熱。
由于CAN總線相比其它現場總線技術具有眾多優點,因此在工業中的應用越來越廣泛。本文基于該總線技術針對熱網監控系統開發的現場控制和通信的子系統,能安全可靠地實現現場數據采集、閉環控制及數據傳輸。鑒于篇幅,本文重點介紹CAN網絡通信部分的設計與實現。
系統結構及其硬件構成
系統結構
熱網監控系統主要由上位機和現場控制器組成,總體結構如圖1所示。
熱網監控系統是在一次設備(傳感器、變送器、各種執行機構)的基礎上完成對熱網的監測與控制,通過調節熱管網的供水流量、供水溫度、供水壓力,來保證熱網安全、可靠、高效、穩定的運行。根據上述要求,本系統在保證系統可靠工作和降低成本的條件下,考慮到通用性、實時性和可擴展性等方面的因素,采用了主要由上位計算機系統和現場控制器構成的系統結構。
系統工作過程如下:上位機首先初始化CAN網卡,設置網卡工作模式、接收碼、接收掩碼和波特率,然后進入運行狀態,在適當條件下與現場控制器進行通信。現場控制器主要完成現場數據的采集與處理和現場設備的控制等功能,并以查詢或中斷方式與主機進行通信。
圖2 現場控制器的結構框圖
上位機
上位機采用工控機,負責對整個系統進行管理。上位機通過CAN網卡與現場控制器通信,同時通過局域網或者公共電話交換網與整個工廠或者公司的計算機信息網絡進行連接,實現信息共享。上位機具有組態、數據采集、參數設置、遠程控制、流程顯示、數據存儲、趨勢顯示、報表打印以及通信等功能。
圖3 CAN網絡通信接口單元電路
CAN網卡
CAN網卡是負責CAN總線與上位機之間數據交換的功能模塊。CAN網卡上存在兩個方向的數據交換:CAN網卡與上位機之間的數據交換(通過雙端口RAM實現)以及CAN網卡與CAN總線之間的數據交換(由微處理器通過訪問CAN控制器的接收緩沖區以及發送緩沖區來實現)。CAN網卡上的CAN控制器選用的是PHILIPS公司的SJA1000芯片。
圖4 通用定時器周期中斷服務程序
現場控制器
現場控制器的結構框圖如圖2所示。
該現場控制器具有14路模擬量輸入端口、2路模擬量輸出端口、4路開關量輸入端口、4路開關量輸出端口以及時鐘接口、數據存儲接口、液晶顯示接口、網絡通信接口、報警輸出接口等。本系統采用了TI公司的帶有10位ADC和CAN控制器的DSP芯片TMS320LF2407A作為CPU。
網絡通信接口單元是用來對CAN總線進行讀寫訪問的部分控制電路。當需要發送數據時,CPU將數據交給網絡接口單元電路,由網絡接口單元電路進行數據格式轉換、串并轉換和信號形式轉換,并將數據按照CAN協議信號形式發送到CAN總線上。當CAN總線上有數據時,它負責從CAN總線上讀取數據。首先通過幀過濾功能判斷是否接收此幀,若接收,則通過與發送相反的過程,將數據交給CPU。
表1 標識符分配方案
網絡通信接口單元主要由TMS320LF2407A片內的CAN控制器及CAN收發器PCA82C250組成。CAN控制器負責對數據的格式進行轉換,承擔網絡通訊的控制任務。CAN收發器PCA82C250是CAN控制器和物理總線間的接口,負責信號的電平及形式轉換,可以提供對總線的差動發送能力和對CAN控制器的差動接收能力。為防止CAN總線上的干擾進入板卡,本系統采用光電隔離器件6N137來實現收發雙向隔離。網絡通信接口單元具體電路如圖3所示。
CAN通信軟件設計與實現
CAN遵從OSI模型,按照OSI基準模型,CAN結構劃分為兩層:數據鏈路層和物理層。然而,在實際應用中,即使只是實現簡單的基于CAN的分布式系統,僅有物理層和數據鏈路層也是遠遠不夠的。比如對于傳輸長度超過8個字節的數據塊、帶有握手協議的數據傳輸過程、標識符分配以及通過網絡管理節點等功能就不能實現。
因此需要在這兩層之外附加一層來支持應用過程,即應用層。這一層功能對應OSI基準模型中的上五層,主要完成網絡層和傳輸層的工作,提供接口,使得通信模塊和具體應用模塊分離。針對熱網監控系統,應用層協議需要通信雙方具體協商制定。
CAN通信應用層協議
現場控制器軟件設計中與上位機的通信是最關鍵的部分之一。針對熱網監控系統,使用現場總線CAN網絡技術,制定了CAN應用層協議。應用層完成的主要工作有:標識符分配、多報文數據包的處理、報文發送與接收等。
標識符分配方案
TMS320LF2407A支持CAN 2.0B協議,本系統通信的信息幀采用擴展幀,具有29位標識符,標識符分配方案如表1所示。
其中,DIR表示方向。DIR=0時,表示主站向從站發送數據;DIR=1時,表示從站向主站發送數據。TYPE為報文幀類型。當TYPE.2=0時,表示點對點發送;當TYPE.2=l時,表示廣播發送。當TYPE~TYPE.0Xb時,表示單幀報文;TYPE.1~TYPE.0=11b時,表示非結束多幀報文;TYPE.1~TYPE.0=10b時,表示結束多幀報文。另外還有目標地址和源地址各七位,命令符八位。命令符是用來標識上位機對現場控制器的控制命令,或現場控制器對上位機的上傳命令。
報文的處理
本設計對CAN通信中的報文處理做了以下規定:
單報文:單報文由標識符中的數據類型TYPE.1決定,當其為0時表示為單報文,此時待傳送的數據不超過8個字節,數據段中為實際傳送的數據。
多報文的首幀和中間幀:多報文的首幀和中間幀由TYPE.1~TYPE.0決定,當其為11b時表示為非結束多報文,即為多報文的首幀和中間幀,此時待傳送的數據超過8個字節,數據段中第1個字節為索引項,后7個字節為傳送的數據。
多報文的尾幀:多報文的尾幀由TYPE.1~TYPE.0決定,當其為10b時表示為結束多報文,即為多報文的尾幀,此時規定該幀中數據長度為2個字節,數據段中第1個字節為索引項,第2個字節為待傳送數據的總長度,單位為字節。
CAN通信初始化
CAN通信初始化主要是設置CAN的通信參數,包括配置位定時器和初始化郵箱兩部分。需要初始化的寄存器有:位配置寄存器2、位配置寄存器1、標識符寄存器、控制寄存器、局部屏蔽寄存器等。需要注意的是,只有當全局狀態寄存器中的改變配置使能位為高時,才能配置位定時器;當主控制器中的改變配置請求位為1,即CAN控制器處于復位工作方式時,才能配置標識符寄存器、控制寄存器和數據域。在訪問位配置寄存器時,由于其內容決定波特率的數值,位配置寄存器的初始化字必須依據系統中各CAN控制器的晶振頻率而設定。
數據發送
信息從CAN控制器發送到CAN總線是由CAN控制器自動完成的。發送程序只需把要發送的信息幀送到相關的CAN寄存器,啟動發送命令即可。數據發送采用通用定時器周期中斷,定時發送已采集的數據到上位機,實現數據的存儲,以便用戶查詢。由于采集到的數據超過8個字節,所以需對數據包進行分片構造報文。通用定時器周期中斷服務程序如圖4所示。
數據接收
信息從CAN總線到CAN接收郵箱是由CAN控制器自動完成的,數據接收采用郵箱中斷。在中斷服務程序中讀取接收到的數據,對接收到的數據進行解碼,并置位相應標志位。在主程序循環中查詢標志位,當檢測到標志位被置位時,則進入相應處理程序,同時對標志位清零。
結語
應用層協議是CAN網絡應用的關鍵,因此該系統中的重點工作是在現場控制器與上位機之間的通信中,使用現場總線CAN網絡技術,制定了用戶層通信協議。而且本系統已經完成了在實驗室階段的調試工作,通信部分能夠正常工作。本文介紹的CAN 通信設計具有很強的通用性,其成果可以應用在很多數據采集的場合。
責任編輯:gt
-
控制器
+關注
關注
112文章
16444瀏覽量
179027 -
計算機
+關注
關注
19文章
7534瀏覽量
88444 -
總線
+關注
關注
10文章
2900瀏覽量
88286
發布評論請先 登錄
相關推薦
評論