如何設計基于DSP的分析儀器CAN網絡通信系統?
圖3 智能節點程序流程圖
本文引用地址:http://www.j9360.com/article/201808/385076.htm智能節點端CAN模塊初始化(流程圖如圖4所示[4])主要包括三個方面的內容:波特率的配置、郵箱分配(包括郵箱方向、標識符分配等)、中斷寄存器初始化。波特率和標識符的分配非常重要,是CAN網絡通信成功的關鍵所在。F2812內置CAN控制器使用位時序配置寄存器CANBTC中的BRP、TSEG1和TSEG2來設置波特率,計算公式為:SYSCLK/(BRP+1)×[(TSEG1reg+1)+(TSEG2reg+1)+1],此處我們采用的晶振頻率為30MHZ,系統倍頻為1/2,BRP=9,TSEG1=10,TSEG2=2,因此波特率為100Kbps。標識符就根據表1的描述來確定。

圖4 智能節點CAN模塊初始化流程圖
中斷程序中主要對從節點傳送的數據進行處理,然后轉存到主節點的發送郵箱中,等待發送給上位機。在進行數據處理的時候要把接收郵箱中的數據賦給中間變量,處理完后再把中間變量的值賦給發送郵箱,這個過程中要注意借助指針來完成。如下所示:
Mailbox = ECanaMboxes.MBOX0 + n; // n為郵箱號
receiveboxl = Mailbox->MDRL.all;
receiveboxh = Mailbox->MDRH.all;
3.2上位機端
PC機端主要完成對各分析平臺分析結果的采集、處理,采用適合快速開發的面向對象高級語言VB來編寫。KPCI-8110CAN適配卡提供.dll驅動和.lib庫函數,通過在VB程序中調用相關的驅動函數就可以實現CAN適配卡的配置和數據的讀寫。數據的處理主要完成對各組分檢測結果中干擾背景氣的去除以及單位換算等工作。
上位機在接收主節點傳送過來的數據時,在SJA1000 CAN控制器采用單濾波器模式,只接收在界面中輸入的組分的數據。濾波規則為:驗收代碼位(ACR.7-ACR.0)和信息識別碼(標識符)的高8位(ID.10-ID.3)相等,且與驗收屏蔽位(AMR.7-AMR.0)的相應位相或為1[5]。例如,在上位機接收界面中輸入組分名“co2”,運行程序時就會把“co2”對應的一組驗收代碼值和驗收屏蔽值初始化為驗收濾波器的預設值。為了具有通用性,把驗收屏蔽碼設為ACR xor HFF。
由于SJA1000CAN控制器每個地址存儲8位的數據,而F2812內置CAN控制器每個地址存儲16位的數據而且標準數據幀的標識符也不是從字節的起始位開始的,所以定義標識符的時候要按照不同控制器的要求來定義。例如F2812內置CAN控制器定義數據幀標識符為1144 0000(bit28-bit18為標識符位),SJA1000獨立控制器對應的標識符應為8A20(bit15-bit5為標識符位)。.
下圖為自己開發的接收界面成功接收到數據:

圖5 上位機接收界面
4 結論
該通信系統在試驗中得到了良好的效果,滿足了多組分分析儀器的設計要求。數字化在線分析儀器作為網絡神經元,有機地融入網絡系統,實現信息實時傳輸、遠程故障診斷是分析儀器的發展趨勢,也是工業化和信息化的發展趨勢。
評論