王金達 張勇 王德宇 趙振環 閆晗
摘 要:CANopen是開放的總線技術,廣泛應用于自動化生產各個領域,目前國內CANopen研究滯后,與國內的工業現場網絡化進程發展需求不符,本文的研究就是在這樣的背景下,開發具有通用特性的CANopen從站模塊。在對 CANopen 協議研究的基礎上,提出了基于STM32的嵌入式從站設計方案,并描述了其硬件與軟件的架構。
關鍵詞:CANopen;CANopen從站;嵌入式
引言
CANopen是建立在CAN總線的應用層協議,CAN總線是一種架構開放、廣播式的新一代網絡通信協議,是針對汽車電子系統中的數據交換而開發的控制局域網協議。由于其低成本、高可靠性、高傳輸速度原因,在工業控制領域得到廣泛應用。CAN接口芯片定義物理層和數據鏈路層,由于系統使用STM32作為系統主控制芯片,內部集成CAN接口芯片,在使用時接上CAN收發器即可。CAN網絡通信協議僅可以數據發送、接收、錯誤處理等底層數據傳輸問題,本身并不完整,對于應用層沒有規定相應的解析協議。為了提高CAN總線效率,實現更加復雜、快速、標準化的CAN通信協議,即CANopen協議。
CANopen是在CAL基礎上開發的,使用了CAL通訊和服務協議子集,提供了分布式控制系統的一種實現方案。CAL提供了所有的網絡管理服務和報文傳送協議,但沒有定義CMS對象的內容或正在通訊的對象的類型(只定義How,沒有定義What)。CANopen在保證網絡節點互用性的同時允許節點的功能隨意擴展。CANopen的核心概念是設備的對象字典,實現網絡管理報文NMT、數據對象SDO、過程數據對象PDO預定義報文或者特殊功能對象核心報文。
1 CANopen從站模塊設計
本文中CANopen從站模塊是采用ST公司的STM32運行在?COS II上來實現與主站CAN通訊,并具備對CANopen協議報文分析和打包的功能得以實現與主站之間的數據傳輸和處理。主站方面,應用高級應用程序開發軟件編制具備CANopen接口的人機交互界面,使用測試工具CANalyst-II 來實現主站的傳輸和調試。
2 CANopen從站硬件系統
本文中CANopen從站采用以STM32F103RET6為核心的硬件系統,主要負責CAN通訊與CANopen協議轉換功能,從站還具有輸入、輸出和通訊等功能。
由于微控制器芯片內嵌了完全兼容CAN2.0B的CAN總線控制器,因此硬件系統中的CAN接口電路得到了簡化,只需設計CAN總線收發器電路即可。設計中使用了外接隔離型CAN總線收發器,防止總線對從站的干擾,避免核心電路損壞。從站系統除了核心最小系統外,還有模擬量的輸入輸出、數字量輸入輸出、外存儲器、CAN接口、串口、JTAG接口和電源等子電路。硬件系統整體結構框圖如圖1所示。
圖1 硬件電路整體結構框圖
2.1 STM32最小系統
STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應用專門設計的ARM Cortex-M3內核。本系統采用STM32F103RET6做為系統主芯片,具有64K的片內RAM,512K的片內flash。系統時鐘頻率可工作在72MHz,若從flash執行代碼,STM32功耗僅36mA。STM32內部集成高性能外設,如1μs的雙12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻轉速度,內部具有8MHz的RC震蕩,可經過倍頻后直接作為系統時鐘。STM32提供了一個SysTick定時器,可以提供操作系統運行節拍。
2.2 CAN驅動器
CAN收發器(也就是協議控制器)的作用就是完成數據鏈路層組幀和生成物理層比特流,驅動器的作用是把控制器輸出的高低邏輯電平變成CAN總線的差分式電平。STM32內部有CAN收發器,所以,不用考慮該部分硬件設計。協議相關的內容基本都由協議控制器完成,軟件上只要配置需要的通信速率、幀ID以及發送的數據內容,然后通知收發器,讓它發送就可以。不需要從軟件上編寫協議。
2.3 串口模塊
MAX3232用于顯示系統調試相關信息,包括錯誤提示信息,接收數據信息,系統運行狀態。它是一款兼容RS232標準的芯片。由于電腦串口RS232電平是+10v~-10v,而一般的單片機應用系統的信號電壓是TTL電平0~+5v,MAX3232就是用來進行電平轉換的。
2.4 其他功能模塊
從站可以實現模AD和DA功能、數字量的輸入輸出模塊、存儲器模塊、串口功能,在STM32內部集成有多路AD和DA,可以很經濟和快捷的實現以上功能,利用內置的SPI和I2C可以連接外存儲器,實現數據的存儲,利用內置的UART模塊可以實現工業串口通訊。所以,在擴展必要的外部輔助電路接口以后,就可以實現以上幾個外設功能。
3 CANopen從站軟件系統
從站軟件系統采用C語言開發嵌入式操作系統?COS-II下的應用,實現與主站的CANopen接口通訊,同時對模擬量數據的采集和輸出、數字量信號的輸入輸出、串口通訊以及系統參數的存儲等功能也都一并實現;主站采用高級應用程序開發軟件開發具備CANopen接口的人機交互界面,實現對從站的控制。
根據系統結構,從站系統可以劃分為五大模塊:CANopen通信模塊、模擬量采集和輸出模塊、數字量輸入輸出模塊、存儲器模塊、串口模塊,系統設計的重點是CAN及CANopen的收發函數,以及在?滋COS-II下實現CANopen協議的對象字典和相應功能。在實現核心功能后,設計幾個外設功能模塊,提供采集、控制、通信、存儲功能,使系統更加完整和實用化備。軟件系統的工作流程如圖2所示。
圖2 軟件設計框圖
4 結束語
通過整體設計及調試,利用CANopen高層協議完成了從站與主站之間的數據傳輸以及STM32與各模塊之間的聯系,并且采用C語言開發嵌入式操作系統?COS-II下的應用來實現數據的采集處理,與主站進行通訊等相關內容,具有較好的系統框架,系統穩定性較好。設計完成的從站系統具有較好的通用性和實用性,市場前景較好。