2013-05-16 706 views
5

在閱讀了幾個CiA規範後,我仍然很難理解CANopen中的PDO映射,過程映像和過程數據交換。什麼是PDO映射?

我知道SDO用於操作前狀態下的配置設置,並具有協議開銷(因爲它可以傳輸超過8個字節的數據)。

在操作狀態,PDO的非常適合於輸入和處理數據的輸出。 PDO只能傳輸最多8個字節的數據。

還有就是具有功能碼和結點號11個比特的COB-ID。 由於節點號使用7位,所以最多可以有127個節點(對於CANopen 2.0A網絡)。

但有四個TPDOs`四個RPDO這是混淆了我。爲什麼你需要多個TPDO和RPDO?另外,我讀設備配置文件的地方可能會使用從6000h到6FFFh的條目來描述設備參數和設備功能,並且在此範圍內最多可以描述8個不同的設備。但網絡中可能有127個節點,那麼這個8設備是什麼?

回答

5

PDO是用於更有效和異步消息的消息類型。可以通過計時器發送PDO,以響應SYNC消息或響應事件(如數字輸入更改)。 CAN總線消息有效載荷的所有8個字節都可用於您的數據。這與只有4個字節可用的SDO(有塊傳輸的多消息SDO)相反。

的PDO只能一次傳輸8個字節,因爲這是一個CAN總線消息的最大傳輸大小。將此與SDO進行對比,其中必須發送命令字節和3字節地址,並保留最多4字節的信息。

默認情況下,設備有4個RPDO和4個TPDO分配。 4只是默認的PDO數量。更多可以安排,但你有責任爲他們創造「渠道」。這是選擇一個仲裁ID,並確保總線上沒有其他設備將使用該ID進行通話。您需要多個PDO,因爲:

  1. 消息具有不同的總線優先級。 0x180+$NODEID贏得總線仲裁過0x280+$NODEID
  2. 的PDO,同意對哪些數據將提前發送節點獲得他們的效率。這意味着他們沒有等待發送請求,也沒有說他們發送的數據像SDO一樣。
  3. PDO中的數據選擇不是非常動態的。通常必須將設備帶出操作狀態以更改PDO映射。在一些設備中,PDO映射是完全靜態的,根本不能改變。

TPDO是從設備傳輸的消息,而RPDO是接收到的消息並寫入設備對象字典。

對象字典定義了CANopen設備的接口。字典使用16位索引和8位子索引進行尋址。字典分成幾個範圍。 0x6000到0x6FFF是分配給Device Profile變量的索引範圍。設備配置文件爲更專門的設備類別提供標準化接口。

PDO映射是如何被包含在PDO的信息商定。 PDO映射是設備對象字典中的條目,與其他任何其他條目一樣。3字節的索引,子索引和參數大小以位爲單位編碼在UNSIGNED32中。

+0

我目前使用Xenus XTL來控制一些電機,並且似乎無法正確獲得PDO設置(總線上沒有發送pdos)。我的主要問題,以及我讀過的所有其他描述都缺乏,COBID映射是如何專門工作的?例如,如果我在一個節點上定義TPDO,COBID爲0x181,則主節點和其他節點上的所有RPDO也必須具有0x181的COBID或0x201的COBID,還是每個節點都解析節點ID超出了我看到在任何地方使用的0x180 + $ NODEID語法?謝謝! – daaxix

1

我喜歡考慮PDO(過程數據對象)類似於可以編程到CANopen節點中的功能。

最近,我想做一個指令,移動電機,並報告當前和編碼器的位置。我定義了一個包含三個SDO對象的PDO映射 - 移動(一個接收PDO)和兩個發送PDO(當前報告和編碼器報告)。

一旦它們被定義並保存到節點中,我就可以通過一個位置發送一個PDO命令並獲取當前位置。

注意只有在總線上發送SYNC命令時纔會執行PDO。然後,所有未執行PDO的節點都會對它們進行處理並同時進行響應。

我們使用它來使7臺電機同時移動(當設置SYNC時)。

+2

「請注意,只有在總線上發送SYNC命令時纔會執行PDO。我認爲你的意思只是針對你的特定情況。無需SYNC即可使用PDO。 –