日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CANopen笔记1

發布時間:2025/1/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CANopen笔记1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  CAN現場總線只定義了OSI網絡模型的第一層(物理層) 和第二層(數據鏈路層) ,而這兩層一般已被CAN硬件完全實現了。由于沒有規定應用層,本身并不完整,需要一個高層協議來定義CAN報文中的11/29位標識符和8字節數據的使用。而且,隨著CAN總線的廣泛應用,國內外很多公司都開發出使用CAN總線的控制設備,為了使各種CAN設備可以互相兼容,需要一個開放的、標準化的高層協議來實現各種CAN設備進行標準的、統一的通訊。

  CANopen協議的子協議——實時伺服驅動和運動控制協議(CiA DSP402)是專門針對驅動裝置和運動控制裝置等運動控制系統的協議規范,該協議定義了伺服驅動器、變頻器和步進式電機控制器的功能特性,它還指定了多種操作模式和相應的組態參數。CANopen協議的特點尤其是 DSP402 子協議的針對性決定了其適用于分布式運動控制系統。CANopen協議目前還沒有開放的協議源代碼,用戶使用該協議時可以選擇購買或者根據自己的需求進行編程實現。

  • CANopen和CAN報文關系

  CAN 報文由7個不同的位域組成,而CANopen就是規定其中的仲裁域(11 位標識符) 和數據域(8 字節數據) 的使用情況

  • 術語

  COB —— 通訊對象,在 CAN 網絡上的一個傳輸單元。Communication object; a CAN message

  SDO ——?服務數據對象,一種COB。主要用來在設備之間傳輸大的低優先級數據,典型的是用來配置CANopen網絡上的設備。?

  PDO ——?進程數據對象,一種COB。用來傳輸實時數據,比如控制命令、給定值和實際值。

  EDS?——?電子數據表。 EDS 文件包含關于節點及其對象字典的信息。

  NMT ——?網絡管理。它負責CAN 網絡上的初始化、配置和故障處理。

  OD ?—— 對象字典。對象字典是所有數據結構的集合,這些數據涉及設備的應用程序、通信以及狀態機,對象字典利用對象來描述CANopen設備的全部功能。對象字典位于通信層和用戶層之間,它的作用主要是為用戶提供服務接口。

  • COB-ID

  CANopen 是一個基于 CAN (控制局域網)串行總線系統和 CAL( CAN 應用層)的高層協議。?CANopen 的核心概念是設備對象字典( OD: Object Dictionary),CANopen 通訊通過對象字典( OD)能夠訪問驅動器的所有參數。

  COB-ID(通訊對象標識符)分配:

  The type of COB transmitted is indicated in the arbitration field of the message, and thereby?determines its priority. 注意:PDO/SDO 的發送/接受是由( slave)CAN節點方觀察的。即要發送SDO數據幀給設備(如驅動器),COB應為SDO-Receive類型。

  • SDO

  SDO 用來訪問一個設備的對象字典。訪問者被稱作客戶 (client),對象字典被訪問且提供所請求服務的 CANopen 設備別稱作服務器(server)。客戶端的 CAN 報文和服務器的應答CAN 報文長度為8個字節(注意不是所有的數據字節都包含有效信息,不夠8字節的要補0)。SDO主要用于CANopen主站對從節點的參數配置。服務確認是SDO的最大的特點,為每個消息都生成一個應答,確保數據傳輸的準確性。When using SDOs, it is important to remember that:?An SDO has a lower priority than a PDO;An SDO session is not complete until it is confirmed.

  SDO的通訊原則很簡單,發送方(客戶端)發送CAN-ID為600h+Node-ID的報文,其中Node-ID為接收方(服務器)的節點地址,數據長度均為8字節;接收方(服務器)成功接收后,回應CAN-ID為580h+Node-ID的報文。這里的Node-ID依然是接收方(服務器)的節點地址,數據長度均為8字節。如下圖所示。

?

  SDO 有 2 種傳送機制:

1. 快速傳送(Expedited transfer) : ? 最多傳輸 4 字節數據
2. 分段傳送(Segmented transfer): 傳輸數據長度大于 4 字節

  最常用最常見的SDO協議是快速SDO,所謂快速,就是1次來回就搞定。前提是讀取和寫入的值不能大于32位。通過快速SDO,可以直接對CANopen節點的對象字典中的值進行讀取和修改,所以在做參數配置之外,也經常作為關鍵性數據傳輸之用。比如CANopen控制機器人的電機轉動角度時,就使用SDO來傳輸,保證可靠到達。當需要傳輸的值超過32位時,就不能使用快速SDO傳輸。必須使用普通SDO進行分幀傳輸。在應用中較少用到,一般用于CANopen節點的程序固件升級,或者做網關轉換MVB總線之類數據最大可達256位的應用。

  讀指令的詳細信息參考DS-301協議中的Chapter4.3 Initiate SDO Upload Protocol;寫指令參考Initiate SDO Download Protocol.

  比如讀取設備對象字典0x1000處的內容(假設為32位數據0x00020192),發送的數據格式如下:

  返回數據格式如下:

  下面是寫指令的例子(假設設備節點地址為1,COB-ID = 功能碼 + 節點地址),在對象字典0x607F處寫入數據0x50000。0x22為SDO命令,具體代表的意思要參考DS301手冊

====================================================================================================================

注意:CANopen使用的是小端模式,即低位字節在前,高位字節在后!

錯誤報文代碼參考Abort SDO Transfer Protocol章節

?

參考:

http://www.zlg.cn/can/article/detail/id/753.html

http://www.cnblogs.com/winshton/p/4897163.html

總結

以上是生活随笔為你收集整理的CANopen笔记1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。