1寫在前面
上一章節提供的例程是標準、數據幀格式的傳輸例程,結合前面理論知識,相信你根據參考例程可以實現遠程幀及其他類型的數據傳輸。
前面教程講述內容為CAN總線協議,屬于底層硬件相關的一些內容。從本文開始,將正式講述CANOpen協議。
CANOpen協議是基于CAN總線的上一層軟件協議。該教程前面內容是建立底層通信,只有在底層通信成功基礎上,才能實現上一層的通信協議。
提示:CANOpen協議內容很多,有許多內容都是一些抽象的概念。所以,有一些內容相對較難理解,隨著慢慢深入即可消除那些疑慮。
2
CANopen協議總述
CANopen 是一個基于 CAN 串行總線的網絡傳輸系統的應用層協議,遵循 ISO/OSI 標準模型。
網絡中不同的設備通過對象字典或者對象來相互交換數據,其中,主節點可以通過過程數據對象 (PDO) 或者服務數據對象 (SDO) 來獲取或者修改其它節點對象字典列表中的數據。
CANOpen協議主要內容分為三大塊,如下圖CANopen 的設備模型。
CANOpen協議從大方向的劃分,就如上圖所示三大塊。但是,這三大塊里面的內容就牽涉到許多......
初學者可以以上圖模型為中心,再結合實際例程理解CANOpen協議的各種抽象概念。
下面章節將進一步講述模型中三大塊內容的一些概念,初學者能理解盡量理解,不能理解可以先做了解即可。
3
通信對象
CANopen協議中常用的通信對象包含如下幾點:
1) 網絡管理對象(NMT)
網絡管理對象包括 Boot-up 消息, Heartbeat 協議及 NMT 消息,基于主從通信模式, NMT 用于管理和監控網絡中的各個節點,主要實現三種功能:節點狀態控制、錯誤控制和節點啟動。
2) 服務數據對象 (SDO)
包括接收 SDO(R-SDO) 和發送 SDO(T-SDO)。
通過使用索引和子索引, SDO 使客戶機能夠訪問設備對象字典中的項。
SDO 通過 CAL 中多元域的 CMS 對象來實現,允許傳送任何長度的數據,當數據超過 4 個字節時分拆成幾個報文。
協議是確認服務類型,為每個消息生成一個應答。 SDO 請求和應答報文總是包含 8 個字節。
3) 過程數據對象(PDO)
包括接收 PDO(RPDO) 和發送 PDO(TPDO)。
用來傳輸實時數據,數據從一個創建者傳到一個或多個接收者。數據傳送限制在 1 到 8 個字節。
每個 CANopen 設備包含 8 個缺省的 PDO 通道, 4 個發送 PDO 通道和 4 個接收 PDO 通道。
PDO 包含同步和異步兩種傳輸方式,由該 PDO 對應的通信參數決定。
PDO 消息的內容是預定義的,由該 PDO 對應的映射參數決定。
4) 同步對象 (SYNC)
同步對象是由 CANopen 主站周期性地廣播到 CAN 總線的報文,用來實現基本的網絡時鐘信號,每個設備可以根據自己的配置,決定是否使用該事件來跟其它網絡設備進行同步通信。
5) 緊急報文 (EMCY)
設備內部通信故障或者應用故障錯誤時發送的報文。
4
對象字典
對象字典是設備規范中最重要的部分。它是一組參數和變量的有序集合,包含了設備描述及設備網絡狀態的所有參數。
通過網絡可以采用有序的預定義的方式來訪問的一組對象。這里就牽涉到定義對象字典的生成問題,后面我會講述關于對象字典生成工具相關內容。
CANopen 協議采用了帶有 16 位索引和 8 位子索引的對象字典。你可以理解為一本漢語字典,我們需要查找里面的某個漢子(可以理解定義的某個數據),我們就會從拼音或筆畫(索引)進去找到對應位置。
CANOpen 協議對象字典主索引如下圖,這只是一個主要的索引。其實還能細分下去,這里不過多講述,后續會進一步講述。
5
應用
應用這一塊的內容包含應用程序、設備子協議實現。可以從CANopen 的設備模型明白,對外就是IO接口,也就是供我們調用的接口。
應用這一塊包含CANOpen協議上層的內容,可以簡單理解封裝的一些供用戶讀寫操作的函數。
應用這一塊內容在后面結合實例分析會牽涉,初學者可以簡單了解有這么一塊,且知道這一塊在CANOpen協議中大致的作用即可。
-
CAN
+關注
關注
57文章
2717瀏覽量
463377 -
CANopen
+關注
關注
8文章
249瀏覽量
43546 -
NMT
+關注
關注
0文章
7瀏覽量
3626
發布評論請先 登錄
相關推薦
評論