劉曦 國網(wǎng)四川省電力公司信息通信公司
近年來,隨著我國計算機軟件及硬件技術(shù)的快速發(fā)展,以及集成電路技術(shù)的普遍應(yīng)用,兩者的有機結(jié)合技術(shù)也被廣泛行業(yè)技術(shù)人員探索性的應(yīng)用于提高和優(yōu)化分布式工業(yè)系統(tǒng)的控制,其技術(shù)結(jié)合呈現(xiàn)出的獨特技術(shù)優(yōu)勢使其在自動化工業(yè)領(lǐng)域得到高度認可。其中,CAN總線技術(shù)就是計算機技術(shù)和集成電路技術(shù)完美結(jié)合的成功技術(shù)之一,其在技術(shù)應(yīng)用上具備靈活性和可靠性等優(yōu)勢,具有廣闊的開發(fā)和應(yīng)用前景。
基于多主機控制器的串聯(lián)數(shù)據(jù)傳輸是CAN總線技術(shù)的顯著技術(shù)優(yōu)勢之一,其通常可以使用光纖電纜或雙絞線進行操作。如果某一節(jié)點從總線上發(fā)出數(shù)據(jù),其他節(jié)點就會以消息的方式收到傳輸?shù)臄?shù)據(jù),此外,通過不同的標識符來區(qū)分不同的消息,并且根據(jù)不同的標識符來劃分消息的優(yōu)先級。通常,相同的CAN總線系統(tǒng)使用唯一的識別符號。并迅速轉(zhuǎn)化為報文發(fā)送的狀態(tài)。在網(wǎng)站收到消息后,它會檢查以確定信息的值。
CAN協(xié)議具有以下特點:①多主控制的特點。通常總線傳輸是經(jīng)過的第一個節(jié)點可以獲得優(yōu)先傳輸權(quán)。不同節(jié)點信息的優(yōu)先級可以充分保證信息的真實性和有效性;②系統(tǒng)的靈活性。通常CAN總線協(xié)議可以通過不強行改變節(jié)點的方式來靈活地添加控制節(jié)點;③通信速度。通常,統(tǒng)一網(wǎng)絡(luò)的每個單元中存在相同的通信速度,并且不同的網(wǎng)絡(luò)單元具有不同的通信速度;④消息優(yōu)先判斷的特點。系統(tǒng)逐個比較不同節(jié)點的分組信息,判斷其中的獲勝節(jié)點,并發(fā)送消息信息;⑤遠程數(shù)據(jù)請求。通常,CAN總線協(xié)議可以基于不同節(jié)點間發(fā)送的數(shù)據(jù)請求,實時選擇性的向其他節(jié)點發(fā)送所需的數(shù)據(jù)信息;⑥錯誤檢測。CAN總線協(xié)議可以實現(xiàn)定期的錯誤自身檢測功能。⑦連接和傳輸距離。通常,在實際連接和傳輸中,為了提高總線系統(tǒng)的通信速度,應(yīng)盡可能減少可連接單元的數(shù)量。
通常,CAN總線通信過程可以基于諸如數(shù)據(jù)幀等不同類型的消息格式來執(zhí)行數(shù)據(jù)傳輸?shù)墓こ?。信息傳輸距離通常是影響通信時間的重要因素。通常通信過程中出現(xiàn)的數(shù)據(jù)累積和過載現(xiàn)象是由于CAN總線傳輸信息過多而導(dǎo)致,這顯然不利于數(shù)據(jù)的平平穩(wěn)傳輸。同時,工作人員可以根據(jù)需要;添加通信節(jié)點,而不更改節(jié)點應(yīng)用程序?qū)咏Y(jié)構(gòu)。此外,在總線操作期間也會由于一些其他因素的干擾而發(fā)生沖突現(xiàn)象,此時當總線空閑時,通信單元將發(fā)送消息,以解決沖突。
上位機(如PC主機),數(shù)據(jù)轉(zhuǎn)換器和現(xiàn)場節(jié)點通常是CAN總線系統(tǒng)的主要組成單元。主計算機通過數(shù)據(jù)轉(zhuǎn)換器連接到CAN總線。主節(jié)點由運行在主機上的LABVIEW編寫的監(jiān)控軟件實現(xiàn)。數(shù)據(jù)轉(zhuǎn)換器采用STM32連接到CAN總線系統(tǒng),主要是串行協(xié)議和CAN協(xié)議的橋接,并轉(zhuǎn)發(fā)接收的數(shù)據(jù)。每個節(jié)點不僅需要連接到對應(yīng)的目標功能儀表,還需要連接到CAN總線,并通過從CAN總線接收或發(fā)送數(shù)據(jù)。
(1)CAN總線的拓撲結(jié)構(gòu)
基于多個節(jié)點的分布式控制是CAN總線的拓撲結(jié)構(gòu)的基本原則,可保障CAN總線的可靠性,適合傳輸各種數(shù)據(jù)信息。
(2)CAN總線節(jié)點的硬件組成
CAN總線節(jié)點的硬件結(jié)構(gòu)通??梢裕孩賹AN總線控制器的MCU連接到CAN的收發(fā)器,并將其連接到CAN總線。②將控制器MCU連接到獨立的CAN控制器,然后連接CAN收發(fā)器以形成CAN總線的硬件結(jié)構(gòu)。兩種兩種類型的硬件結(jié)構(gòu)組成,無論采用何種解決方案,CAN收發(fā)器都是CAN總線的節(jié)點連接總線的必經(jīng)之路。
(3)STM32的CAN通信模塊
STM32的CAN通信模塊主要包含初始化模塊,正常工作模式,睡眠模式三種主要模塊。初始化模塊通?;谲浖脑O(shè)置來完成,而CAN模塊的初始化的啟動和退出通?;贑AN寄存器的設(shè)置來實現(xiàn)。一般情況下,在初始化模式下,CAN總線通信模塊無法接收和發(fā)送消息。基于STM32的CAN總線在模塊初始化后,將進入正常工作模式,并可以實現(xiàn)對傳輸信息的正常收發(fā)。但是,通信模塊的收發(fā)模塊功能模塊只能在總線空閑時執(zhí)行。但當基于STM32的CAN通信模塊處于睡眠模式時,對郵箱寄存器的訪問仍然可以通過軟件控制來實現(xiàn),即使在CAN通信模塊停止工作時。
(1)系統(tǒng)軟件的設(shè)計
微控制器作為CAN總線網(wǎng)絡(luò)中最重要的節(jié)點,其主要功能是可實現(xiàn)與其他節(jié)點的通信,最終實現(xiàn)信息共享。STM32是控制單元CAN通信的核心組件,其設(shè)置通?;趯TM32的初始化,此外還需要設(shè)置寄存器,波特率和中斷模式等參數(shù)。
(2)基于STM32的CAN總線系統(tǒng)的程序流程
整個程序的主要框架首先基于對STM32開發(fā)部分的初始化,然后設(shè)定要發(fā)送的CAN消息,以執(zhí)行程序的主循環(huán)模塊。之后,還要根據(jù)實施情況判斷CAN模塊是否可以根據(jù)實際情況發(fā)送或接受相關(guān)信息。如果能正常接收消息,則LED將亮起,反之亦然。
(3)CAN初始化程序設(shè)計
CAN初始化程序基于初始CAN模塊時鐘的設(shè)置,并通過上拉CAN模塊控制器輸入和輸出功能。通過對其啟用或中斷,以實現(xiàn)開啟或關(guān)閉自動重傳機制,通常清除數(shù)據(jù)寄存器,設(shè)置波特率,然后通過接受消息傳輸信號,通過設(shè)置寄存器的特定位,以退出初始化模式。
基于自動化控制領(lǐng)域CAN總線技術(shù)的廣泛應(yīng)用及其技術(shù)優(yōu)勢,本文首先概述了CAN總線的基本工作原理及其協(xié)議特點和通信過程,然后基于其系統(tǒng)的總體結(jié)構(gòu)設(shè)計,分別具體從硬件設(shè)計和軟件設(shè)計兩個方面系統(tǒng)地討論了基于STM32的CAN總線通信節(jié)點的設(shè)計方案,并以此詳細探討了一種基于STM32的CAN總線節(jié)點方案的設(shè)計流程。綜上所述,隨著嵌入式技術(shù)與CAN總線技術(shù)的聯(lián)合應(yīng)用的日趨增加,這無疑對克服傳統(tǒng)控制系統(tǒng)的局限性具有顯著優(yōu)勢,總之基于STM32的CAN總線通信節(jié)點設(shè)計研發(fā),有利于推動我國工業(yè)生產(chǎn)中自動控制系統(tǒng)的快速發(fā)展。