CAN與CANOPEN在電機控制中的應用


一,CAN總線基礎知識:

        總線狀態總線有“顯性”和“隱性”兩個狀態,“顯性”對應邏輯“0”,“隱性”對應邏輯“1”。“顯性”狀態和“隱性”狀態相與的結果為“顯性”狀態,所以兩個節點同時分別發送“0”和“1”時,總線上呈現“0”。也就是說在總線上顯性電平具有優先權,只有所有的單元都輸出隱性電平,總線上才為隱性電平。另外在CAN總線的起止端都有一個120歐的終端電阻來做阻抗匹配,以減少回波。

CAN協議通過以下5種類型的幀進行:
數據幀
遠程幀
錯誤幀
過載幀
間隔幀

CAN報文發送優先權抉擇:

CAN 總線以報文為單位進行數據傳送,報文的優先級結合在11 位標識符中,具有最低二進制數的標識符有最高的優先級。這種優先級一旦在系統設計時被確立后就不能再被更改。總線讀取中的沖突可通過位仲裁解決。如圖2 所示,當幾個站同時發送報文時,站1 的報文標識符為011111;站2 的報文標識符為0100110;站3 的報文標識符為0100111。所有標識符都有相同的兩位01,直到第3 位進行比較時,站1 的報文被丟掉,因為它的第3 位為高,而其它兩個站的報文第3位為低。站2 和站3 報文的4、5、6 位相同,直到第7 位時,站3 的報文才被丟失。注意,總線中的信號持續跟蹤最后獲得總線讀取權的站的報文。在此例中,站2 的報文被跟蹤。這種非破壞性位仲裁方法的優點在於,在網絡最終確定哪一個站的報文被傳送以前,報文的起始部分已經在網絡上傳送了。所有未獲得總線讀取權的站都成為具有最高優先權報文的接收站,並且不會在總線再次空閑前發送報文。

CAN數據幀組成:

(1) 幀起始。 表示數據開的段幀起始。 

(2) 仲裁段。 表示該幀優先級的仲裁段。

(3) 控制段。 表示數據的字節及保留位控制段。 

(4) 數據段。 數據的內容,一幀可發送0~8個字節的數據段。

(5) CRC段。 檢查幀的傳輸錯誤段。

(6) ACK段。 表示確認正常接收的段。 

(7) 幀結束。 表示數據的段幀結束。

數據幀的構成如下圖所示:圖中D表示顯性電平,R表示顯性電平。 

       

         應答場(ACK)包括應答位和應答分隔符。發送站發送的這兩位均為隱性電平(邏輯1),這時正確接收報文的接收站發送主控電平(邏輯0)覆蓋它。用這種方法,發送站可以保證網絡中至少有一個站能正確接收到報文遠程幀由6 個場組成:幀起始、仲裁場、控制場、CRC 場、應答場和幀結束。遠程幀不存在數據場。遠程幀的RTR 位必須是隱位。DLC 的數據值是獨立的,它可以是0~8 中的任何數值,為對應數據幀的數據長度。

使用PMC007電機驅動器時 只需要發送ID和數據域即可,其他位置由硬件自動完成。

二,CANOPEN協議

CANPro 協議分析平台中的 CANopen 協議分析插件有兩種,一是 Block_CANopen,用於分析支持塊傳輸的 CANopen 協議報文,二是 CANopen,用於分析不支持塊傳輸的CANopen 協議報文。之所以作這樣的區分,是因為 CANopen 協議中的塊傳輸的報文是上下文相關的,要識別塊傳輸報文需要知道之前傳輸的報文信息,但是 CANPro 協議分析平台只針對當前的 CAN 幀進行分析,因此無法識別塊傳輸報文,而且只根據當前 CAN 幀判斷可能會將塊傳輸報文誤認為是其他的 SDO 報文。因此,對於支持塊傳輸的 CANopen 協議,在遇到 SDO 報文時,只顯示它的節點 ID 和數據域,不再判斷它是屬於 SDO 中具體的哪種類型。不支持塊傳輸的 CANopen 協議則會識別出 SDO 報文的具體類型。

下面對 Block_CANopen 協議中的每一類報文進行詳細介紹:
1、 NMT Error Control NMT 錯誤控制報文

(1)、Node ID 從節點的 ID 標識
(2)、Node Status 節點狀態信息
2、 Node Guarding Request 節點保護請求報文,用於獲取從節點狀態
(1)、Node ID 從節點的 ID 標識
3、 NMT Module Control NMT 模塊控制報文
(1)、NMT Command NMT 命令標識
(2)、Node ID 從節點的 ID 標識
4、 SYNC 同步報文
5、 EMCY 緊急錯誤報文
(1)、Error Code 緊急報文的錯誤碼
(2)、Error Register 緊急報文的錯誤寄存器
(3)、Manufacturer Specific 廠商自定義的錯誤碼
6、 TIME 時間報文
(1)、Time Stamp 時間報文中的時間戳信息,已解析為時間
7、 PDO PDO 報文
(1)、PDO Object PDO 通訊對象
(2)、Node ID 從節點的 ID 標識
(3)、PDO Data PDO 對象數據
8、 Remote PDO 遠程 PDO 報文,用於請求 PDO 傳輸
(1)、PDO Object PDO 通訊對象
(2)、Node ID 從節點的 ID 標識
9、 SDO SDO 報文
(1)、SDO Object SDO 通訊對象
(2)、Node ID 從節點的 ID 標識
(3)、Data Field SDO 對象數據

CANopen 協議對 SDO 報文的解釋與 Block_CANopen 不同,其他類型的報文定義都相同,
這里不再贅述,CANopen 協議中定義的各種 SDO 報文如下:

1、Initiate SDO Download Request 初始化 SDO 下載請求報文
(1)、Node ID 從節點的 ID 標識
(2)、Object Index 對象索引值
(3)、Object Sub-index 對象子索引值
(4)、Transfer Type 指示傳輸類型為快速傳輸還是一般的分段傳輸
(5)、Size Indicator 指示報文是否標識了傳輸量
(6)、Bytes Not Data 數據域中無效的字節數,只有快速傳輸才有效
(7)、Bytes Downloaded 下載的數據字節數,只有分段傳輸才有效
(8)、SDO Data SDO 數據域,只有快速傳輸才有效
2、Initiate SDO Download Response 初始化 SDO 下載響應報文
(1)、Node ID 從節點的 ID 標識
(2)、Object Index 對象索引值
(3)、Object Sub-index 對象子索引值
3、Download SDO Segment Request SDO 分段下載請求報文
(1)、Node ID 從節點的 ID 標識
(2)、Toggle Bit 觸發位
(3)、Whether More Segments 標識是否最后一個分段
(4)、Bytes Not Data 數據域中無效的字節數
(5)、SDO Data SDO 數據域

4、Download SDO Segment Response SDO 分段下載響應報文
(1)、Node ID 從節點的 ID 標識
(2)、Toggle Bit 觸發位
5、Initiate SDO Upload Request 初始化 SDO 上傳請求報文
(1)、Node ID 從節點的 ID 標識
(2)、Object Index 對象索引值
(3)、Object Sub-index 對象子索引值
6、Initiate SDO Upload Response 初始化 SDO 上傳響應報文
(1)、Node ID 從節點的 ID 標識
(2)、Object Index 對象索引值
(3)、Object Sub-index 對象子索引值
(4)、Transfer Type 指示傳輸類型為快速傳輸還是一般的分段傳輸
(5)、Size Indicator 指示報文是否標識了傳輸量
(6)、Bytes Not Data 數據域中無效的字節數,只有快速傳輸才有效
(7)、Bytes Downloaded 上傳的數據字節數,只有分段傳輸才有效
(8)、SDO Data SDO 數據域,只有快速傳輸才有效
7、Upload SDO Segment Request SDO 分段上傳請求報文
(1)、Node ID 從節點的 ID 標識
(2)、Toggle Bit 觸發位
8、Upload SDO Segment Response SDO 分段上傳響應報文
(1)、Node ID 從節點的 ID 標識
(2)、Toggle Bit 觸發位
(3)、Whether More Segments 標識是否最后一個分段
(4)、Bytes Not Data 數據域中無效的字節數
(5)、SDO Data SDO 數據域
9、Abort SDO Transfer SDO 傳輸中止報文
(1)、SDO Object SDO 通訊對象(是 Server 還是 Client)
(2)、Node ID 從節點的 ID 標識
(3)、Object Index 對象索引值
(4)、Object Sub-index 對象子索引值
(5)、Abort Code 中止代碼,表示傳輸中止的原因

三,CAN總線控制電機時常用的硬件

USB-CAN  以太網-CAN  NI9082 PMC007電機驅動器

四,CAN總線開發時常用軟件介紹

CANOPEN等協議分析平台 CAN pro

通用測試軟件 CAN test

分析儀通訊軟件 ECANtool

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM