吳 瓊
(廣東理工學院 廣東 肇慶 526100)
隨著單片微機控制技術、微電子技術和數字通信技術的發展,研制具有通信功能的控制模塊受到相關學者的普遍關注。單片機具有實時性強的控制特點,但其相互之間的通信能力較差,傳輸速率低,易受干擾影響等。近年來,現場總線通信由于具有全數字、雙向、多站的通信特點,在工業控制領域得到了廣泛應用。相比于其他總線通信,CAN現場總線在進行多機之間的通信時有明顯的優勢,各極之間用于通信的線路連接會比運用邏輯門組成的同步信號發生電路更加簡潔[1],且CAN總線通信具有極高的可靠性、數據傳輸速率高、傳輸距離長、實時性強等優點,特別適合工業現場監控設備的互聯。因此,本文提出了基于dsPIC芯片和CAN總線的控制模塊設計,使控制模塊其在具有強大控制功能的同時,具有機間通信的功能。相關實驗驗證了控制模塊之間通信的有效及可靠性。
CAN總線是用于過程控制和現場設備互聯的串行通信網絡,相比于其他通信電路,CAN通信在控制應用具有以下優點[2]:
(1)可以多主方式工作,CAN總線上的任意節點均可以在任意時刻主動地向CAN總線上的其他節點發送信息。
(2)CAN總線上傳輸的報文幀可以設置成不同的優先級,滿足不同的實時要求。有利于在控制過程中自動確定動作相序,無需增加相序檢測模塊。
(3)通信速率高,硬件電路簡單,只要每個節點引出兩路通道連至總線上即可通信,布線簡單,擴展靈活。
單片機之間通過CAN通信模塊采用SPI通信標準進行通信,通信的硬件部分與單片機的連接是通過SPI的SCK、SO、SI、CS四個引腳,通信的軟件部分均在單片機中編寫,從單片機中發出指令、地址和數據,傳至通信模塊,通信模塊中的兩個芯片起到轉換信號的作用,其中CAN控制器將單片機的SPI協議轉換為CAN總線適用的協議——CAN報文幀,CAN收發器則把CAN控制器發出的報文幀轉換成差分信號送到兩條信號線CAN_H和CAN_L,這兩條信號線便組成了CAN總線,CAN_H與CAN_L靜態時均為2.5V左右,此時狀態表示為邏輯1,也可以稱做隱形;用CAN_H比CAN_L高表示邏輯0,稱為顯性,此時通常電壓值為CAN_H=3.5V和CAN_L=1.5V。總線與CAN收發器之間的這種差分信號是可以雙向傳遞的,即一條雙絞線就可以實現總線上各個節點之間的接收與發送,這一特點便是CAN總線通信接線簡單,擴展性強的原因。
通信模塊主要由CAN控制器與CAN收發器組成。CAN控制器與單片機的CAN接口直接相連,用于將預收發的信息轉化成CAN規范的CAN幀,再通過CAN收發器在總線上交換信息。CAN收發器與CAN控制器直接相連,它將CAN控制器的邏輯電平轉換為CAN總線上的差分電平,在兩條有差分電壓的總線電纜上傳輸數據。
在多種CAN控制器中,MCP2510是Microchip公司推出的一款獨立的CAN協議控制器,是為簡化連接CAN總線的應用而開發的。MCP2510與MCU的連接是通過SPI接口來實現的,通過使用標準SPI讀寫命令對寄存器所有讀寫操作,從而放寬了MCU的選擇范圍,使得所有單片機都有接入的可能。
MCP2551是一個可容錯的高速CAN器件,同樣來自Microchip公司,可作為CAN協議控制器和物理總線接口。MCP2551可為CAN協議控制器提供差分收發能力。CAN系統上的每個節點都必須有一個類似器件,把CAN控制器生成的數字信號轉化成為適合總線傳輸(差分輸出)的信號。
CAN總線通信電路的連接如圖1,控制器電路的連線如圖2。
(1)IC芯片的連接方法:作為一個MCP2510的小系統,其3、4、5、6、10、11引腳均可以空置。當對整個通信系統的實時性要求不太高時,第12引腳(CAN中斷引腳)可以懸空。(2)MCP2551的第8引腳決定了該芯片的工作模式,高速模式可以通過與VSS相連來實現(功耗較大),斜率控制模式即在第8引腳和地之間接47K的電阻,這種模式可以通過限制CANH和CANL的上升下降時間來進一步減少EMI。(3)CS、SO、SI、SCK引腳連接到處理器MCU的SPI引腳上。單片機就通過這四個引腳控制MCP2510執行相應的讀寫操作。(4)MCP2551采用了一些安全和抗干擾措施:MCP2551的CANH和CANL引腳各自通過一個22歐的電阻與CAN總線相連,電阻可起到一定的限流作用,保護MCP2551免受過流的沖擊。

圖1 CAN總線通信電路連接圖

圖2 控制器電路
通信模塊的實物圖如圖3所示,由于通信模塊與控制器的連接只用到了單片機SPI的四個引腳,因此兩個單極接觸器用兩個單片機的最小系統代替即可測試通信功能。通信電路板上的兩個CAN芯片的控制完全由單片機dsPIC實現,所以程序也是C語言形式的,而且燒寫至單片機中即可,在MPLAB上編譯成功后開始進行硬件軟件的結合。為了驗證雙極之間的通信效果,用1開發板發送數據,2開發板接收數據。1板通過CAN總線發送一連串數組給2板,2板在確認到正確接收到1板的所有數組后,使其一個引腳置高電平,通過此方法來測試整個通信系統硬軟件設計是否合理,能否通過CAN總線實現基本的發送與接收功能。

圖3 通信模塊實物連接圖
用實驗對CAN總線通信的收發過程進行驗證,結果表明:在兩個單片機之間設計的CAN協議可以準確穩定地接收和發送報文,以CAN總線傳遞同步信號,實時性強,布線簡單,大大增強了單片機的擴展能力
[1]牛躍聽.CAN總線嵌入式開發[M].北京航空航天大學出版社,2012.
[2]王黎明,夏立,劭英,閆曉玲.CAN現場總線系統的設計與應用.北京:電子工業出版社,2008.