過程分析儀器CAN網(wǎng)絡通信設計
引言
現(xiàn)代流程工業(yè)的過程控制中,分析檢測具有在線、多組分、實時檢測的特點,對分析儀器在穩(wěn)定、可靠、快速、準確等方面有著嚴格的要求。而廣泛使用的工業(yè)色譜儀采用色譜分離原理,分析周期長達數(shù)分鐘至數(shù)十分鐘,難以實現(xiàn)過程的直接質(zhì)量控制。過程拉曼光譜儀和激光調(diào)制光譜儀等新技術目前價格昂貴,關鍵技術尚在研究階段,難以普及。利用技術成熟的單檢測器單組分過程分析儀器,通過分析傳感器組合技術和嵌入式計算機技術,實現(xiàn)多組分實時檢測和建立簡便快捷的分析儀器通信網(wǎng)絡系統(tǒng)已成為近期國內(nèi)外分析儀器研發(fā)的熱點之一。
基于單片機(80C196)或微處理器(DSP、ARM 等)的多組分氣體分析儀采用功能強大的CPU,可實時快速測定各種燃燒設備的各項熱工參數(shù)。根據(jù)測量數(shù)據(jù),通過自動調(diào)節(jié)裝置調(diào)整風量,保持適當?shù)目諝猓剂媳?,使燃料系統(tǒng)達到最佳運行狀態(tài),以獲得最高的燃燒效率和最低的燃料消耗。儀器還可以測定CO、SO2、NO、NO2、煙氣黑度等參數(shù),并配有液晶屏、鍵盤等外設。
CAN(Controll Area Network)是國際上應用最廣泛的現(xiàn)場總線之一,使用了一種串行多控制方通信協(xié)議,可以有效地支持分布式實時控制,并且具有很高的安全性和高達1Mbps的通信速率。
一個包含PC 機和n-1(n≤110)個智能節(jié)點的CAN 總線網(wǎng)絡結構圖如圖1 所示。
圖1 n 個節(jié)點的CAN 網(wǎng)絡結構圖
信息的傳輸采用CAN 通信協(xié)議,傳輸介質(zhì)采用雙絞線,如果需要進一步提高系統(tǒng)的抗干擾能力,還可以在控制器和傳輸介質(zhì)之間加接光電隔離,電源采用DC-DC 變換器等措施。
1 分析儀器CAN 網(wǎng)絡應用層協(xié)議的制定
CAN 的國際標準中只定義了物理層和數(shù)據(jù)鏈路層的規(guī)范,由于本項目構建的CAN 總線網(wǎng)絡節(jié)點數(shù)目不多,所有節(jié)點都由項目組自行設計,不需要與國際標準設備進行接口,所以,這里根據(jù)本項目的具體情況,制定了一個簡易的CAN 應用層協(xié)議。
根據(jù)廠方要求,網(wǎng)絡初步規(guī)劃應至少可容納16 個節(jié)點。上位機收集各分析儀器的信息,包括氣體組分分析含量、出錯信息和被測氣體的一些參數(shù),如溫度、壓力、流量等,也返回一些控制信息給智能節(jié)點。在每個分析周期從節(jié)點的氣體組分分析結果送往主節(jié)點,主節(jié)點待收到所有待測組分含量后,將所有信息一并送往上位機。網(wǎng)絡中的任一臺分析儀器均可做為主節(jié)點或從節(jié)點,甚至在沒有上位機的情況下也可以做為上位機。
在CAN 系統(tǒng)中,以11 位(標準幀)或29 位(擴展幀)的標識符來標識數(shù)據(jù)的含義,標識符決定了信息的優(yōu)先權和等待時間,同時也影響信息濾波的適用性。因而,合理、高效的信息標識符ID 分配方案是充分發(fā)揮CAN 總線性能的前提條件。
分析儀器主控制器之一F2812 DSP 片上共有32 個郵箱,在SCC 模式下0-15 郵箱可用,在eCAN 模式下,32 個郵箱全部可用,可以很方便地實現(xiàn)主節(jié)點對從節(jié)點信息的接收和存儲。故推薦采用主控制器為F2812 的分析儀器作為該網(wǎng)絡中的主節(jié)點,選擇eCAN 模式,使用標準標識符(11 位),對其進行如表1 所示的靜態(tài)分配策略,即可滿足上位機和主節(jié)點識別幀來源和幀意義的要求。
2 網(wǎng)絡通信程序
2.1 上位機端初始化
上位機端主要完成對各分析平臺分析結果的采集、顯示,使用PC 機加CAN 通訊卡KPCI-8110。KPCI-8110 上集成了獨立的CAN 控制器SJA1000。SJA1000 用于移動目標和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡控制(CAN),在使用前要先對其進行初始化。
上位機顯示界面采用適合快速開發(fā)的可視化面向?qū)ο蟾呒壵Z言VB 來編寫。KPCI-8110CAN 適配卡提供.dll 驅(qū)動和.lib 庫函數(shù),通過在VB 程序中調(diào)用相關的驅(qū)動函數(shù)就可以實現(xiàn)CAN 適配卡的配置和數(shù)據(jù)的讀寫。
上位機端接收數(shù)據(jù)的流程如圖2 所示。
圖2 上位機接口函數(shù)使用流程圖
數(shù)據(jù)接收到上位機之后保存在一個大容量的內(nèi)存緩沖池內(nèi),用戶只需實時通過函數(shù)CAN_ReadDataNum(mindex) 查詢緩沖池內(nèi)的數(shù)據(jù)量, 再通過函數(shù)CAN_ReadBlockData(mindex,num,obyte)及時讀走保存即可。其中obyte 為接收數(shù)據(jù)起始指針。
CAN_ClearBlock(mindex,num,obyte)為清空從obyte 指針開始的緩沖池空間。
注意:由于SJA1000 CAN 控制器每個地址存儲8 位數(shù)據(jù),而F2812 內(nèi)置CAN 控制器每個地址存儲16 位數(shù)據(jù),而且標準數(shù)據(jù)幀的標識符也不是從字節(jié)的起始位開始的,所以定義標識符的時候要按照不同控制器的要求來定義。例如F2812 內(nèi)置CAN 控制器定義數(shù)據(jù)幀標識符為344 0000(bit28-bit18 為標識符位),SJA1000 獨立控制器對應的標識符應為1A20(bit15-bit5 為標識符位)。2.2 分析儀器CAN 網(wǎng)絡通信程序設計
智能節(jié)點分析儀器端的編程采用 C 語言與匯編語言相結合的方式,采用結構化程序設計方案,可讀可移植性好。流程如圖3 和4 所示。
圖3 分析儀器主節(jié)點程序流程圖
主節(jié)點在接收到從節(jié)點傳送過來的數(shù)據(jù)后,在接收成功引起的中斷處理程序中對數(shù)據(jù)進行處理,然后轉(zhuǎn)存到主節(jié)點的發(fā)送郵箱中,等待發(fā)送給上位機。在進行數(shù)據(jù)處理的時候要把接收郵箱中的數(shù)據(jù)賦給中間變量,處理完后再把中間變量的值賦給發(fā)送郵箱,這個過程中要注意借助指針來完成。如下所示:
Mailbox = &ECanaMboxes.MBOX0 + n; // n 為郵箱號
receiveboxl = Mailbox->MDRL.all;
receiveboxh = Mailbox->MDRH.all;
圖4 分析儀器從節(jié)點程序流程圖
3 實驗結果及分析
使用 KPCI-8110 的測試程序向分析儀器周期發(fā)送一幀數(shù)據(jù)時,查看測試程序和分析儀器存儲器可以看出,分析儀器端正確地接收到PC 發(fā)送來的數(shù)據(jù),CAN 網(wǎng)絡運行良好。圖5為自己開發(fā)的接收界面試驗狀態(tài)下成功接收到數(shù)據(jù),分析儀器網(wǎng)絡分析周期為20s,發(fā)送速率為100Kbps。
圖5 上位機接收界面
在對節(jié)點和上位機的通信進行試驗的時候發(fā)現(xiàn),在單獨使用eCAN 模塊發(fā)送和接收數(shù)據(jù)時,通信情況良好,發(fā)送和接收的幀數(shù)相同。
需要注意的是,在運行DSP 多組分氣體分析平臺的整個軟件程序時,在較短時間內(nèi)要以較大速率發(fā)送大批量數(shù)據(jù),故將A/D 采樣之后的數(shù)據(jù)濾波和處理部分放在主程序中執(zhí)行,盡可能減少A/D 中斷服務子程序的處理時間,這樣就可以減少對CAN 發(fā)送中斷程序的影響。
經(jīng)實驗證明,以上分析和判斷是正確的,網(wǎng)絡通信狀況良好,無丟幀現(xiàn)象。
4 總結
該網(wǎng)絡通信系統(tǒng)在試驗中得到了良好的效果,滿足了多組分分析儀器的設計要求。