如何設(shè)計(jì)基于DSP的分析儀器CAN網(wǎng)絡(luò)通信系統(tǒng)?
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
現(xiàn)代流程工業(yè)中,多組分分析儀器成為必不可少的環(huán)節(jié)。常用的在線分析儀器有工業(yè)色譜儀、光譜分析儀等。工業(yè)色譜儀在流程工業(yè)生產(chǎn)和環(huán)保領(lǐng)域得到廣泛應(yīng)用,但是其分析周期長,不易實(shí)現(xiàn)直接質(zhì)量控制;拉曼光譜分析儀分析周期短精度高,但是成本太高,所以尚未被推廣。因此,實(shí)驗(yàn)室研制開發(fā)了基于80C196和DSP的多組分氣體分析平臺(tái),通過不同傳感器的組合對(duì)樣品中不同組分進(jìn)行檢測,實(shí)現(xiàn)了分析周期短、精度高,成本低等目標(biāo)的統(tǒng)一。由于每臺(tái)組合式分析儀器一般只能分析2-4個(gè)組分,為了實(shí)現(xiàn)更多組分的測量,同時(shí)實(shí)現(xiàn)各個(gè)分析儀器之間或分析儀器與上位機(jī)之間信息的交互,這就有必要構(gòu)建基于多組分氣體分析平臺(tái)的CAN總線網(wǎng)絡(luò)。
CAN(Controll Area Network)是國際上應(yīng)用最廣泛的現(xiàn)場總線之一,使用了一種串行多控制方通信協(xié)議,可以有效地支持分布式實(shí)時(shí)控制,并且具有很高的安全性和高達(dá)1Mbps的通信速率。由于CAN具有多主站控制、無破壞性總線仲裁、可靠的檢錯(cuò)和重發(fā)機(jī)制以及故障節(jié)點(diǎn)的判斷和自動(dòng)脫離等等顯著優(yōu)點(diǎn),在富含噪聲和其他要求苛刻的環(huán)境中得到越來越廣泛的應(yīng)用,而且其應(yīng)用領(lǐng)域也在不斷的擴(kuò)大[1]。
1分析儀器網(wǎng)絡(luò)結(jié)構(gòu)
多組分氣體分析平臺(tái)基于過程分析儀器系統(tǒng)的物流和信息兩通道所需的基本共性功能,系統(tǒng)采用模塊化設(shè)計(jì)。各硬件模塊具有獨(dú)立結(jié)構(gòu),可適應(yīng)不同分析傳感器及其組合以及預(yù)處理裝置的選擇要求;軟件系統(tǒng)則為檢測信號(hào)的數(shù)據(jù)處理、儀器的自動(dòng)診斷、自動(dòng)標(biāo)定的操作控制以及為與DCS間的信息通信提供支持[2]。
分析平臺(tái)采用TMS320F2812作為處理器。TMS320F2812是TI公司推出的一款用于控制領(lǐng)域的高性能32位數(shù)字信號(hào)處理器,適用于實(shí)時(shí)數(shù)據(jù)處理,并集成了豐富的外設(shè),如片上12位模數(shù)轉(zhuǎn)換器(ADC)、SPI、eCAN等功能模塊,可以方便地進(jìn)行功能擴(kuò)展。平臺(tái)由數(shù)據(jù)采集模塊、控制模塊、開關(guān)量輸入輸出模塊、人機(jī)交互模塊以及通訊接口組成。
根據(jù)現(xiàn)場情況,通過不同傳感器的組合對(duì)樣品中不同組分進(jìn)行檢測,配合相應(yīng)的軟件實(shí)現(xiàn)不同的數(shù)據(jù)處理方法,構(gòu)成組合式分析儀器,每臺(tái)分析儀器可檢測2-4個(gè)組分。此處我們以兩臺(tái)分析儀器為例,每臺(tái)能檢測兩個(gè)組分,一臺(tái)檢測CO2和O2,另一臺(tái)檢測SO2和CO,與上位機(jī)一起構(gòu)建CAN通信網(wǎng)絡(luò)。
CAN網(wǎng)絡(luò)系統(tǒng)一般由上位機(jī)、CAN適配卡、若干節(jié)點(diǎn)以及CAN總線構(gòu)成。由于PC機(jī)上有多條擴(kuò)展槽,利用局域網(wǎng)絡(luò)通信卡,使得該系統(tǒng)很容易與其他生產(chǎn)管理部門聯(lián)網(wǎng),便于統(tǒng)一調(diào)度和管理;另外,選用PC機(jī)還可以充分利用現(xiàn)有的軟件工具和開發(fā)環(huán)境,方便快捷地設(shè)計(jì)功能豐富的計(jì)算機(jī)軟件,所以此處上位機(jī)我們選用通用PC機(jī)。
CAN適配卡我們選用的是北京科日新工控的KPCI-8110光隔非智能CAN總線通訊卡,符合ISO/ISO11898國際標(biāo)準(zhǔn),滿足2.0B(PeliCAN)兼容CAN2.0A通信協(xié)議,通訊距離最長達(dá)10km,傳輸速率最高達(dá)1Mbps?;诙嘟M分氣體分析平臺(tái)的組合式分析儀器做為CAN智能節(jié)點(diǎn)??偩€上的信息傳輸遵守CAN通信協(xié)議,通信介質(zhì)采用雙絞線即可。
系統(tǒng)總體結(jié)構(gòu)圖如下所示:
圖1 基于分析儀器的CAN網(wǎng)絡(luò)結(jié)構(gòu)圖
2 CAN總線通信協(xié)議
CAN技術(shù)規(guī)范版本2.0包括兩部分內(nèi)容:版本2.0A描述CAN技術(shù)規(guī)范1.2中定義的CAN報(bào)文格式;版本2.0B描述標(biāo)準(zhǔn)和擴(kuò)展格式兩種報(bào)文格式。為了同CAN技術(shù)規(guī)范2.0兼容,要求CAN執(zhí)行既同版本2.0A,也同版本2.0B兼容。
鑒于我們目前所要傳輸?shù)膬?nèi)容僅限于檢測結(jié)果,同時(shí)考慮到現(xiàn)場需要網(wǎng)絡(luò)中可能連接的智能節(jié)點(diǎn)的個(gè)數(shù),采用標(biāo)準(zhǔn)報(bào)文格式完全能夠滿足我們的要求。
CAN技術(shù)規(guī)范版本2.0B中,數(shù)據(jù)幀由7個(gè)不同的位場組成:即幀起始、仲裁場、控制場、數(shù)據(jù)場、CRC場、應(yīng)答場、幀結(jié)束。數(shù)據(jù)幀格式如下所示[3]:
圖2 CAN2.0B數(shù)據(jù)幀格式
分析儀器主控制器F2812 DSP片上共有32個(gè)郵箱,在SCC模式下0-15郵箱可用,在eCAN模式下,32個(gè)郵箱全部可用,而且與2407不同的是,F(xiàn)2812可以發(fā)送和存儲(chǔ)包括報(bào)文ID在內(nèi)的所有幀信息。所以我們只需對(duì)標(biāo)準(zhǔn)標(biāo)識(shí)符的位進(jìn)行分配,而不用定義數(shù)據(jù)字節(jié),即可滿足上位機(jī)和主節(jié)點(diǎn)識(shí)別幀來源和幀意義的要求。對(duì)標(biāo)準(zhǔn)標(biāo)識(shí)符的分配如下表所示:
表1 標(biāo)識(shí)符分配
3 通信程序設(shè)計(jì)
若想實(shí)現(xiàn)CAN網(wǎng)絡(luò)的正常通信,必須保證各通信節(jié)點(diǎn)的波特率和標(biāo)識(shí)符都定義得一致。由于KPCI-8110使用獨(dú)立的CAN控制器SJA1000,而智能節(jié)點(diǎn)多組分氣體分析平臺(tái)中使用微處理器DSP中內(nèi)置的CAN控制器,各自寄存器的定義和分配不盡相同,所以數(shù)據(jù)幀格式的定義方法也不一樣,在編寫初始化和通信程序時(shí)要特別注意寄存器的定義和分配。
3.1智能節(jié)點(diǎn)端
為了實(shí)現(xiàn)各個(gè)節(jié)點(diǎn)信息的同步,考慮把智能節(jié)點(diǎn)中的一個(gè)做為主節(jié)點(diǎn),其他節(jié)點(diǎn)做為從節(jié)點(diǎn)。主節(jié)點(diǎn)先收集所有從節(jié)點(diǎn)的數(shù)據(jù),再把所有的數(shù)據(jù)一起發(fā)送給上位機(jī)。
做為CAN網(wǎng)絡(luò)的智能節(jié)點(diǎn),組合式分析儀器采用內(nèi)置了CAN模塊的F2812做為微處理器,從硬件上來講,外接一個(gè)CAN收發(fā)器就可以方便地掛接到CAN總線上,從軟件設(shè)計(jì)上來講,由于F2812強(qiáng)大的寄存器功能,也可以很容易地實(shí)現(xiàn)CAN模塊的初始化以及信息的發(fā)送和接收。
智能節(jié)點(diǎn)的編程采用C語言與匯編語言相結(jié)合的方式,采用結(jié)構(gòu)化程序設(shè)計(jì)方案,可讀可移植性好。流程如圖3所示。程序設(shè)計(jì)的重點(diǎn)在于CAN模塊的初始化和中斷程序的調(diào)用。
圖3 智能節(jié)點(diǎn)程序流程圖
智能節(jié)點(diǎn)端CAN模塊初始化(流程圖如圖4所示[4])主要包括三個(gè)方面的內(nèi)容:波特率的配置、郵箱分配(包括郵箱方向、標(biāo)識(shí)符分配等)、中斷寄存器初始化。波特率和標(biāo)識(shí)符的分配非常重要,是CAN網(wǎng)絡(luò)通信成功的關(guān)鍵所在。F2812內(nèi)置CAN控制器使用位時(shí)序配置寄存器CANBTC中的BRP、TSEG1和TSEG2來設(shè)置波特率,計(jì)算公式為:SYSCLK/(BRP+1)×[(TSEG1reg+1)+(TSEG2reg+1)+1],此處我們采用的晶振頻率為30MHZ,系統(tǒng)倍頻為1/2,BRP=9,TSEG1=10,TSEG2=2,因此波特率為100Kbps。標(biāo)識(shí)符就根據(jù)表1的描述來確定。
圖4 智能節(jié)點(diǎn)CAN模塊初始化流程圖
中斷程序中主要對(duì)從節(jié)點(diǎn)傳送的數(shù)據(jù)進(jìn)行處理,然后轉(zhuǎn)存到主節(jié)點(diǎn)的發(fā)送郵箱中,等待發(fā)送給上位機(jī)。在進(jìn)行數(shù)據(jù)處理的時(shí)候要把接收郵箱中的數(shù)據(jù)賦給中間變量,處理完后再把中間變量的值賦給發(fā)送郵箱,這個(gè)過程中要注意借助指針來完成。如下所示:
Mailbox = &ECanaMboxes.MBOX0 + n; // n為郵箱號(hào)
receiveboxl = Mailbox->MDRL.all;
receiveboxh = Mailbox->MDRH.all;
3.2上位機(jī)端
PC機(jī)端主要完成對(duì)各分析平臺(tái)分析結(jié)果的采集、處理,采用適合快速開發(fā)的面向?qū)ο蟾呒?jí)語言VB來編寫。KPCI-8110CAN適配卡提供.dll驅(qū)動(dòng)和.lib庫函數(shù),通過在VB程序中調(diào)用相關(guān)的驅(qū)動(dòng)函數(shù)就可以實(shí)現(xiàn)CAN適配卡的配置和數(shù)據(jù)的讀寫。數(shù)據(jù)的處理主要完成對(duì)各組分檢測結(jié)果中干擾背景氣的去除以及單位換算等工作。
上位機(jī)在接收主節(jié)點(diǎn)傳送過來的數(shù)據(jù)時(shí),在SJA1000 CAN控制器采用單濾波器模式,只接收在界面中輸入的組分的數(shù)據(jù)。濾波規(guī)則為:驗(yàn)收代碼位(ACR.7-ACR.0)和信息識(shí)別碼(標(biāo)識(shí)符)的高8位(ID.10-ID.3)相等,且與驗(yàn)收屏蔽位(AMR.7-AMR.0)的相應(yīng)位相或?yàn)?[5]。例如,在上位機(jī)接收界面中輸入組分名“co2”,運(yùn)行程序時(shí)就會(huì)把“co2”對(duì)應(yīng)的一組驗(yàn)收代碼值和驗(yàn)收屏蔽值初始化為驗(yàn)收濾波器的預(yù)設(shè)值。為了具有通用性,把驗(yàn)收屏蔽碼設(shè)為ACR xor &HFF。
由于SJA1000CAN控制器每個(gè)地址存儲(chǔ)8位的數(shù)據(jù),而F2812內(nèi)置CAN控制器每個(gè)地址存儲(chǔ)16位的數(shù)據(jù)而且標(biāo)準(zhǔn)數(shù)據(jù)幀的標(biāo)識(shí)符也不是從字節(jié)的起始位開始的,所以定義標(biāo)識(shí)符的時(shí)候要按照不同控制器的要求來定義。例如F2812內(nèi)置CAN控制器定義數(shù)據(jù)幀標(biāo)識(shí)符為1144 0000(bit28-bit18為標(biāo)識(shí)符位),SJA1000獨(dú)立控制器對(duì)應(yīng)的標(biāo)識(shí)符應(yīng)為8A20(bit15-bit5為標(biāo)識(shí)符位)。.
下圖為自己開發(fā)的接收界面成功接收到數(shù)據(jù):
圖5 上位機(jī)接收界面
4 結(jié)論
該通信系統(tǒng)在試驗(yàn)中得到了良好的效果,滿足了多組分分析儀器的設(shè)計(jì)要求。數(shù)字化在線分析儀器作為網(wǎng)絡(luò)神經(jīng)元,有機(jī)地融入網(wǎng)絡(luò)系統(tǒng),實(shí)現(xiàn)信息實(shí)時(shí)傳輸、遠(yuǎn)程故障診斷是分析儀器的發(fā)展趨勢(shì),也是工業(yè)化和信息化的發(fā)展趨勢(shì)。