1 引言
網絡化控制系統(tǒng)是控制系統(tǒng)的發(fā)展趨勢和研究熱點,現(xiàn)場總線控制系統(tǒng)作為網絡化系統(tǒng)的重要組成部分,近年來在實際的控制系統(tǒng)中得到了廣泛的應用。CAN(Con- troller Area Network)總線作為一種容錯性強、可靠性高、布線簡單且成本低廉的現(xiàn)場總線倍受用戶欽睞,在國內CAN總線已經得到了廣泛應用。目前國內廣泛應用的獨立CAN控制器SJA1000因存在如地址、數(shù)據總線的分時復用常導致接口效率低下;接收、發(fā)送緩沖區(qū)的個數(shù)太少,導致數(shù)據吞吐率不高;幀屏蔽和過濾器的設置不夠靈活,不能滿足同時需要更多屏蔽和過濾條件的要求等。
ARM芯片S3C2410是一種高集成度,高性價比的嵌入式處理芯片,已成功用于工控設備上。然而其美中不足的是沒有集成CAN控制器,使其在工控產品中的應用中受到了一定的阻礙。為了解決這一問題,同時考慮到盡可能降低硬件電路的復雜性,保證CAN總線通訊的穩(wěn)定性和效率,采用帶SPI接口的獨立CAN控制器MCP2515來給S3C2410擴展CAN接口。下面以自行開發(fā)的人機界面(HMI,Human Machine Interface)中CAN總線通訊接口設計為例進行說明。
2 CAN總線接口硬件設計
下面先簡要介紹相關控制器芯片,后對CAN接口硬件設計作詳細說明。
2.1 ARM芯片S3C2410和CAN控制器MCP2515簡介
S3C2410是三星公司設計的32位RISC嵌入式處理器。該芯片基于ARM920T內核,采用五級流水線和哈佛結構,提供1.1MIPS/MHz的性能。為了減少應用系統(tǒng)設計的成本,S3C2410集成了眾多的常用資源,如:LCD控制器、SDRAM控制器、一個觸摸屏接口、兩個SPI接口等,內核最高工作頻率可達266MHz。
獨立CAN控制器MCP2515靈活的中斷能力、接收幀屏蔽和過濾、幀優(yōu)先級設定等特性使其能夠很好的對信息進行管理,減輕了處理器的負擔和軟件設計的復雜度。其獨特功能如下:
?。?) 有標準幀和擴展幀兩種數(shù)據幀可供選擇,每個幀的數(shù)據字段長度可為0-8字節(jié),標準幀數(shù)據段的前兩個字節(jié)可單獨過濾;
?。?) 內含3個發(fā)送緩沖器和2個接收緩沖器,并且其優(yōu)先級可編程設定;
?。?) 內含6個29字節(jié)的接收過濾器和2個29字節(jié)的接收屏蔽器;
?。?) 具有Loop-Back(自環(huán)檢測)模式;支持更高層的協(xié)議,如DeviceNet、SAEJ1939;
2.2 硬件接口設計
S3C2410的SPI接口兼容SPI V2.11協(xié)議,可支持查詢、中斷和DMA三種數(shù)據傳送模式。MCP2515連接到S3C2410的SPI0口,其相互連接關系如圖1所示。
圖1 PROFIBUS 網絡特性
?。?) 本接口設計不使用TXnRTS、RXnBF等5個引腳,使用了總中斷引腳INT,因此在軟件設計的時候不使能發(fā)送請求和接收完畢中斷對應功能引腳,且在本設計中該引腳也不作其它用途,處理器在響應總中斷后,通過SPI接口訪問MCP2515內部相應寄存器來確定具體的中斷事件,并對其作出處理。
(2) 為了隔離總線上的干擾信號,提高系統(tǒng)的可靠性,CAN控制器與CAN收發(fā)器之間采用了光隔。光隔的兩邊應該采用獨立的供電電源,不可與系統(tǒng)的其他部分直接共地。
(3) 在CANH和CANL之間使用了兩個等值電阻(R410、R411)和旁路電容(C408)來提高EME(Electro Magnatic Emission)性能,減少該部分對系統(tǒng)其他部分的干擾。
?。?) MCP2515在初始上電、復位以及從休眠模式喚醒后最初的128 OSC時鐘周期內,OST(振蕩啟動定時器)保持復位狀態(tài)。應注意在OST超時前不應對SPI進行操作。
?。?) RX是為減少EMI(Electro Magnatic Interference)而設計的。CANH、CANL的轉換率與RX上流經的電流成正比。
3 CAN總線接口軟件設計
CAN總線軟件接口為應用層訪問CAN控制器—MCP2515提供了一個便捷的“通道”,該“通道”屏蔽了CAN控制器工作的實現(xiàn)細節(jié),使得應用層面向通信是透明的。該接口通過SPI接口通信來實現(xiàn)對CAN控制器的操作。它們之間的相互關系如圖2所示。
圖2 濾池就地控制單元硬件結構圖
3.1 CAN接口軟件實現(xiàn)
S3C2410的SPI可以工作在四種模式,但是MCP2515的SPI接口只支持其中的兩種。因此應該將S3C2410的SPI接口配置為MCP2515支持的模式工作。從圖1中可以看出S3C2410的SPI應該配置為正常模式的中斷方式,具體配置操作請見參考文獻[2]。
S3C2410-SPI的單個字節(jié)讀、寫函數(shù)實現(xiàn)如下:
unsigned char ReadSPI( void )
{
SPRDAT0 = 0x00; // 初始化SPI總線
while ( !REDY );
// 判斷接收數(shù)據是否完成
return ( SPRDAT0 );
// 獲取接收到的數(shù)據
}
unsigned char WriteSPI( unsigned char data )
{
SPRDAT0 = data; // 寫數(shù)據到發(fā)送緩沖區(qū)
if ( DCOL ) return ( -1 );
// 判斷是否發(fā)生沖突,發(fā)生沖突則返回錯誤標準
else while( !REDY );
// 否則等待數(shù)據發(fā)送完成
return ( 0 ); // 返回發(fā)送成功標準
}
對MCP2515的讀寫函數(shù)原型如下:
void Mcp_Read( unsigned char Addr, unsigned char *ReadData, unsigned char Length );
void Mcp_Write( unsigned char Addr, unsigned char *WriteData, unsigned char Length );
Addr:要讀寫區(qū)域的首地址;
ReadData/WriteData:讀取數(shù)據存放區(qū)、寫出數(shù)據緩沖區(qū)首地址;
Length:要讀、寫數(shù)據的字節(jié)數(shù)。
其它對MCP2515的操作在此不一一列舉,請見參考文獻[3]。
3.2 CAN總線數(shù)據收發(fā)軟件設計
本設計采用外部中斷1響應MCP2515的總中斷,并且配置控制器始終處于喚醒模式,發(fā)送器工作在正常模式,使能接收、發(fā)送、錯誤中斷。中斷方式處理CAN總線數(shù)據收發(fā)的流程如圖3,分別從發(fā)送處理、接收處理、錯誤處理三個部分加以說明。
圖3 中斷方式實現(xiàn)CAN總線數(shù)據收發(fā)流程圖
?。?) 發(fā)送處理
在兩種情況會下被執(zhí)行,其一發(fā)送中斷響應中,如果當前有發(fā)送任務,通過發(fā)送緩沖區(qū)記錄標志確定空的發(fā)生緩沖區(qū)并向其中填發(fā)送幀,然后啟動發(fā)送;其二在接收中斷響應中,在接收處理完后如果有發(fā)送任務且有發(fā)送緩沖區(qū)空,會處理發(fā)送任務。在兩處處理發(fā)送主要是考慮有多個發(fā)送、接收緩沖區(qū)可用,可以提高通信效率。
?。?) 接收處理
需要根據ICOD的值來確定當前是那個接收緩沖區(qū)的數(shù)據準備好,可以讀取。接收幀處理過程中首先讀取幀的ID值,確定當前幀的數(shù)據是那個節(jié)點發(fā)送來的,并據此把幀中數(shù)據字段的數(shù)據存放相應的位置。
?。?) 錯誤處理
引起錯誤處理的原因很多,并且都產生錯誤中斷,需要訪問錯誤標志寄存器來確定具體錯誤類型,并據此作相應的處理。
此外,圖3中更新發(fā)送緩沖區(qū)使用記錄是為了在發(fā)送和接收中斷響應中可以據此清楚發(fā)送緩沖區(qū)的使用情況,確定當前是否可以做發(fā)送處理。
4 測試與應用
將以上設計方案應用到自主開發(fā)的HMI(結構框圖如圖4,虛線框中為擴展的CAN總線接口框圖)實驗板上,同時與黃石市科威自控有限公司開發(fā)的混合型PLC(EASY-M0808R-A44NB)、通用型PLC(EASY-M2416R)、運動控制器(EASY-KP3-M0506R)進行通信測試,其中HMI作主站,其他設備作從站。測試環(huán)境中有電機頻繁啟停和不間斷繼電器開閉干擾,其他測試條件和參數(shù)見如附表:
附表 CAN接口測試記錄表
在測試記錄程序中記錄了通訊速率為500Kbps,運行到6時31分42秒時出現(xiàn)了一次通信“死機”,隨后系統(tǒng)調用自恢復程序重新配置軟硬件參數(shù),6時31分43秒重啟通信,通信恢復正常。其他測試條件下沒有出現(xiàn)“死機”的情況。該測試結果說明采用這種方法設計的CAN接口完全能夠滿足工業(yè)現(xiàn)場網絡通訊的要求。
圖4 HMI系統(tǒng)結構圖
5 結束語
采用ARM芯片S3C2410集成的SPI接口擴展的CAN總線接口,在不改變CAN總線自身的特點的前提下,使得PCB布線簡單,增強了系統(tǒng)的可靠性;為擴展接口找到了一個便捷的方法。在自主開發(fā)的HMI中采用該設計方案實現(xiàn)CAN總線接口的擴展,并且在實際應用和測試中證明了該方案的正確性和可靠性。
評論