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