引 言
在工業(yè)控制中,為了保證系統(tǒng)的可靠運(yùn)行,需要檢測(cè)周圍的環(huán)境變量(如溫度、氣壓、濕度等)。通常的做法是將分布在各處的傳感器采集到的信號(hào)通過各自的線路連接到監(jiān)控中心,這種方式在有效地完成檢測(cè)任務(wù)的同時(shí)也造成了線路資源的極大浪費(fèi)。因此,提出了簡(jiǎn)化線路布局的要求。CAN(控制器局域網(wǎng))是串行通信協(xié)議,能有效支持高安全等級(jí)的分布實(shí)時(shí)控制,同時(shí)在理論上,CAN總線網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)近乎沒有限制?;诖?,本設(shè)計(jì)將一種基于數(shù)字信號(hào)控制器的CAN總線數(shù)據(jù)采集系統(tǒng)作為一個(gè)CAN節(jié)點(diǎn),每一個(gè)需要監(jiān)控的區(qū)域放置一個(gè)CAN節(jié)點(diǎn),各個(gè)節(jié)點(diǎn)通過CAN總線與監(jiān)控中心實(shí)施通信。系統(tǒng)總體框圖如圖1所示。
1 硬件構(gòu)成
該數(shù)據(jù)采集系統(tǒng)由兩部分構(gòu)成:控制部分,包括前端信號(hào)的抗混疊濾波器和用于信號(hào)采集的12位模數(shù)轉(zhuǎn)換器;CAN總線接口電路部分,由MCP2515 CAN協(xié)議控制器和MCP2551高速CAN收發(fā)器構(gòu)成。系統(tǒng)接3路信號(hào),TEM、PRE、RH分別為溫度、氣壓、相對(duì)濕度。
1.1 控制部分
dsPIC30F3013是Microchip公司生產(chǎn)的傳感器系列數(shù)字信號(hào)控制器。該控制器采用16位(數(shù)據(jù))改良的哈佛結(jié)構(gòu),并帶有增強(qiáng)型指令集,包含對(duì)DSP的有力支持。工作速度最高可達(dá)30MIPS,內(nèi)部集成10通道12位模數(shù)轉(zhuǎn)換器,最大轉(zhuǎn)換速度為200 ksps。
工控系統(tǒng)中,由于各類噪聲的存在,需要在信號(hào)采集端加上抗混疊濾波電路,如圖2所示。
抗混疊使用Sallen Key二階低通濾波器。由于環(huán)境變量均為緩變量,濾波器帶寬設(shè)置為30 Hz。電路中R1、R2、C1、C2的值確定了抗混疊濾波器的特征頻率f0,同時(shí)也保證了在10 ksps模數(shù)轉(zhuǎn)換速率下12位的分辨率。為了使在整個(gè)通帶范圍內(nèi)信號(hào)均能很好地通過,需要調(diào)整Sallen Key濾波器的品質(zhì)因數(shù)Q。Q值由式(1)決定:
Sallen Key濾波器的幅頻特性顯示,當(dāng)品質(zhì)因數(shù)在0.7~0.9之間時(shí),頻率特性達(dá)到最佳。本Q值選定為0.8。
使用dsPIC30F3013的12位ADC模塊進(jìn)行數(shù)據(jù)采集。對(duì)3路環(huán)境信號(hào)進(jìn)行循環(huán)掃描,每完成12個(gè)采樣/轉(zhuǎn)換過程產(chǎn)生一個(gè)中斷。中斷過程中完成4次平均值數(shù)字濾波及相應(yīng)參數(shù)的格式調(diào)整,然后,通過SPI接口傳送到CAN協(xié)議控制器。
1.2 CAN總線接口電路部分
CAN總線接口電路如圖3所示。
CAN協(xié)議控制器采用Microchip公司生產(chǎn)的MCP2515。MCP2515是帶有SPI接口的獨(dú)立CAN控制器,它完全支持CAN V2.0B技術(shù)規(guī)范,通信速率為1 Mb/s,包括2個(gè)接收緩沖器、6個(gè)29位驗(yàn)收濾波寄存器、2個(gè)29位驗(yàn)收屏蔽寄存器、3個(gè)具有優(yōu)先級(jí)設(shè)定及發(fā)送中止的發(fā)送緩沖器、高速SPI接口(10 MHz)。
MCP2515與MCU的接口可以靈活配置??赏ㄟ^引腳(如TXORTS)與MCU的數(shù)字I/O腳直接相連,利用數(shù)字I/O的讀寫功能控制MCP2515 的狀態(tài);也可以直接使用MCP2515的SPI指令集來實(shí)現(xiàn)所有的功能。用于控制MCP2515的SPI指令集如表1所列。
dsPIC30F3013通過SPI接口與MCP2515進(jìn)行通信,dsPIC30F3013的SPI模塊工作在主控模式,MCP2515工作在從動(dòng)模式。dsPIC30F3013通過調(diào)用SPI指令來訪問MCP2515的內(nèi)部寄存器。
MCP2551是一個(gè)可容錯(cuò)的高速CAN收發(fā)器,它完全符合ISO-11898標(biāo)準(zhǔn),包括能滿足24 V電壓要求。它的工作速率可高達(dá)1 Mb/s。
2 軟件設(shè)計(jì)
dsPIC30F3013作為控制核心,它承擔(dān)著數(shù)據(jù)采集處理和CAN通信的任務(wù)。數(shù)據(jù)采集部分的工作流程如圖4所示。
dsPIC30F3013的12位ADC模塊包含一塊ADCBUFO至ADCBUFF的16字雙口只讀緩沖區(qū),對(duì)ADC轉(zhuǎn)換結(jié)果進(jìn)行緩沖。本應(yīng)用采樣3路信號(hào),并用掃描輸入,經(jīng)過12次ADC轉(zhuǎn)換后,每次轉(zhuǎn)換的數(shù)據(jù)依次寫入ADCBUF0至ADCBUFB。即代號(hào)為0、3、6、9的AD-CBUF中存放的是同一個(gè)信號(hào)的不同時(shí)間的采樣值,將這4個(gè)緩沖器的結(jié)果相加,然后再右移2位,即可實(shí)現(xiàn)該信號(hào)的4次平均值數(shù)字濾波。其他兩個(gè)信號(hào)存放在與之相關(guān)的 ADCBUF中,處理方法與此相同。
MCP2515的SPI接口支持0,0和1,1運(yùn)行模式。外部數(shù)據(jù)和命令通過SI引腳傳送到器件中,且數(shù)據(jù)在SCK時(shí)鐘信號(hào)的上升沿傳送進(jìn)去,在SCK的下降沿通過SO引腳傳送出去。CS片選引腳設(shè)置為低電平后,MCP2515希望收到的第一個(gè)字節(jié)是指令/命令字節(jié),這就要求在調(diào)用一個(gè)命令時(shí),要先把CS 引腳拉升為高電平然后再降低為低電平。使用裝載TX緩沖器指令,取消了一般寫命令所需的8位地址,只需選擇地址指針設(shè)置的6個(gè)地址之一,便可快速地將數(shù)據(jù)寫入發(fā)送緩沖器。
下面以MCP2515的裝載TX緩沖器為例來說明數(shù)據(jù)的發(fā)送過程。裝載TX緩沖器的時(shí)序如圖5所示。本應(yīng)用有3路信號(hào),每一路信號(hào)都要求精確到小數(shù)點(diǎn)后2 位,所以經(jīng)過處理后的數(shù)據(jù)格式使用浮點(diǎn)型。一個(gè)浮點(diǎn)數(shù)需要占用4字節(jié),為了使監(jiān)控中心易于管理,用包含4字節(jié)數(shù)據(jù)長(zhǎng)度的標(biāo)準(zhǔn)數(shù)據(jù)幀來發(fā)送數(shù)據(jù)?,F(xiàn)以裝載 TX緩沖器0為例說明一次數(shù)據(jù)發(fā)送操作,如圖6所示。
dsPIC30F3013的SPI模塊在數(shù)據(jù)發(fā)送和接收時(shí)有8位和16位兩種工作模式可選。MCP2515的SPI指令、內(nèi)部寄存器地址及數(shù)據(jù)都是8位的,所以在初始化SPI模塊時(shí),清零MODE16(SPI1CON<10>),將通信數(shù)據(jù)配置為8位寬度。
結(jié) 語
本文介紹了一種以Microchip公司dsPIC30F3013為控制核心,以MCP2515為CAN控制器和以MCP2551作為CAN收發(fā)器的數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)與傳感器組成一個(gè)CAN節(jié)點(diǎn),有效地改善了工控系統(tǒng)中監(jiān)控部分線路布局范圍廣、布線凌亂、抗干擾能力差的現(xiàn)狀,同時(shí),使整個(gè)監(jiān)控系統(tǒng)更易于擴(kuò)展。實(shí)踐證明,這種設(shè)計(jì)是可靠的、高性能的。只是系統(tǒng)工作在多雷電地區(qū)時(shí),可能會(huì)發(fā)生雷擊事故,在后續(xù)設(shè)計(jì)中會(huì)使用高速光電耦合器在CAN控制器與 CAN收發(fā)器之間做隔離。