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

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

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