桂林理工大學(xué)博文管理學(xué)院 廣西 桂林 541006
在計算機軟硬件技術(shù)和集成電路工藝不斷發(fā)展的過程中,有關(guān)計算機的控制從傳統(tǒng)的模式化已經(jīng)逐漸發(fā)展成現(xiàn)場總線控制方式。這種技術(shù)的發(fā)展良好的推動了工業(yè)控制領(lǐng)域的進步,使工業(yè)控制技術(shù)的發(fā)展進入了新的時代。在這樣的背景下,CAN總線由于數(shù)據(jù)通信中的高效處理能力以及通信靈活性而逐漸受到推廣應(yīng)用。
基于STM32的CANopen通信網(wǎng)絡(luò)的實現(xiàn)主要是通過1個主控制節(jié)點和多個從節(jié)點,相互之間通過CAN總線進行連接,從而形成一個網(wǎng)絡(luò),通過CANopen協(xié)議來實現(xiàn)對系統(tǒng)運行和通信的整體管理。主控制節(jié)點和從節(jié)點的核心處理器都是使用STM32F107,用戶在使用時,能夠通過主控節(jié)點將控制命令發(fā)送到從節(jié)點,進而對整體系統(tǒng)進行控制。通過CAN總線,從節(jié)點接收到主控節(jié)點發(fā)送的指令,完成相應(yīng)的處理后發(fā)送有關(guān)指令到CANopen設(shè)備中,實現(xiàn)對其行為的控制。
在系統(tǒng)軟件設(shè)計中,代碼的編寫主要是在KEIL編譯環(huán)境中進行,這種軟件編譯環(huán)境中有多項目工作區(qū),能夠使操作項目得到簡化,而且具備實時監(jiān)控的管理系統(tǒng)。通過代碼編寫,能夠完成操作系統(tǒng)、系統(tǒng)功能以及CANopen協(xié)議的設(shè)計,在編寫代碼完成后,經(jīng)過編譯再下載到控制網(wǎng)絡(luò)的主從機控制芯片中。
2.1 對象字典 這主要是指有序的對象組,單個對象地址的尋找主要是通過16位的主索引和子索引值進行,CANopen的設(shè)備需要通過一個對象字典對其相關(guān)的參數(shù)進行描述,而這些對象集合起來就是對象字典。能夠?qū)π枰獙ふ业膬?nèi)容進行快速的查找,查找方法和查找目錄也需要設(shè)置,在C語言程序中進行定義。通過一個特定的數(shù)組將全部的對象目錄進行定義,包括所有對象的索引值、大小以及位置,用戶在查找時,通過對數(shù)組的掃描就可以很快查找到需要的內(nèi)容。
2.2 網(wǎng)絡(luò)管理對象NMT 網(wǎng)絡(luò)管理對象NMT最主要的功能是進行狀態(tài)監(jiān)測和網(wǎng)絡(luò)節(jié)點狀態(tài)控制。CANopen的從節(jié)點中都包含一個狀態(tài)機,主節(jié)點主要對其轉(zhuǎn)換進行有效控制,節(jié)點會在不同的狀態(tài)下實施相應(yīng)的任務(wù)。對CANopen的節(jié)點狀態(tài)程序給與了4種定義,系統(tǒng)在接通電源后,就能夠?qū)崿F(xiàn)自動跳轉(zhuǎn),待主節(jié)點發(fā)送狀態(tài)轉(zhuǎn)換的指令給從節(jié)點后,通過函數(shù)proceed NMT執(zhí)行相應(yīng)的命令,使有關(guān)功能模塊發(fā)揮作用。對于節(jié)點狀態(tài)監(jiān)測來講,主要包含節(jié)點監(jiān)控和心跳報文,具體執(zhí)行是通過從節(jié)點發(fā)送心跳報文到主節(jié)點,從而對從節(jié)點的運行狀態(tài)進行明確。系統(tǒng)初始化中,程序通過特定函數(shù)設(shè)置心跳報文的周期,然后從節(jié)點就進行周期性的發(fā)送,假設(shè)在規(guī)定的時間沒有接收到,就會自動通過執(zhí)行命令通知系統(tǒng)中的某節(jié)點問題,進而通過對應(yīng)措施進行解決。
2.3 過程數(shù)據(jù)對象PDO 這個的主要功能是傳輸實時短幀過程數(shù)據(jù),程序需要實現(xiàn)PDO的接收和發(fā)送相應(yīng)功能。在發(fā)送前,結(jié)合PDO的有關(guān)參數(shù)利用函數(shù)設(shè)置需要發(fā)送的報文,再通過特定函數(shù)將PDO報文發(fā)送到總線。如果是同步報文,程序會對函數(shù)進行調(diào)節(jié),使用調(diào)節(jié)函數(shù)將同步報文發(fā)送后再發(fā)送PDO報文。節(jié)點接收到PDO報文后,通過函數(shù)對其進行解析處理。
2.4 服務(wù)數(shù)據(jù)對象SDO 這個模塊的主要功能是對實時性要求較低、數(shù)據(jù)量大的低優(yōu)先級數(shù)據(jù)進行傳輸。傳輸?shù)姆绞绞欠?wù)器-用戶,SDO的服務(wù)器一般是從節(jié)點,而其用戶端是主節(jié)點,用戶端利用索引對服務(wù)器對象字典中的任何對象都可以進行訪問,從而完成下載、上傳數(shù)據(jù)。在程序中,通過特定的函數(shù),用戶端向服務(wù)器發(fā)送下載、上傳數(shù)據(jù)的請求,在服務(wù)器接收到請求后,通過函數(shù)解析SDO報文,判斷報文屬于服務(wù)協(xié)議中的哪一種,接著按照協(xié)議開展相應(yīng)的處理。
2.5 其他通信對象 通信對象的報文還包括緊急事件報文、同步報文以及Boot-up報文等,這些在程序中都有被定義。緊急事件報文是網(wǎng)絡(luò)管理NMT中的組成部分,如果節(jié)點發(fā)生突發(fā)緊急情況,比如過壓問題,就會通過相應(yīng)的函數(shù)發(fā)送緊急報文到總線中,其他的節(jié)點在接收到相應(yīng)的緊急報文后通過特定函數(shù)進行處理。同步報文主要是通過函數(shù)周期性的向同步消費者傳播,生產(chǎn)同步報文者接收到同步報文后使用調(diào)用函數(shù),將同步報文作為同步PDO報文對相應(yīng)參數(shù)進行處理。Boot-up報文主要是從節(jié)點在通電初始化后利用函數(shù)發(fā)送報文到主節(jié)點,使主節(jié)點做好準備狀態(tài)。
2.6 系統(tǒng)通信實現(xiàn) 對CANopen通信的正確性進行驗證,主要是通過截取STM32和PC機通信的CANopen報文,而這主要是通過CAN通信監(jiān)測軟件和CAN-USB轉(zhuǎn)換器來實現(xiàn)。通過分析通信報文可以得知,控制器的從站能夠?qū)χ髡镜腟DO報文進行響應(yīng),對PDO的數(shù)據(jù)也能進行傳輸處理,主站和從站之間能夠通過NMT管理良好的進行報文通信,對于系統(tǒng)中的相應(yīng)功能都可以很好的實現(xiàn),完成主從機CANopen通信。
綜上所述,CAN總線技術(shù)在如今工業(yè)控制領(lǐng)域的多個行業(yè)中得到了推廣應(yīng)用,本文通過以STM32為硬件平臺實現(xiàn)了CANopen協(xié)議通信,使設(shè)備之間的連接具有更好的通用性以及功能擴展性。在CAN總線不斷普及應(yīng)用的過程中,CANopen協(xié)議也在逐漸完善,在CANopen協(xié)議下,不同的CAN設(shè)備通信都有標準化的方式,提高了設(shè)備相互之間的可操作性。