CanOpen中報文ID與COB ID Node ID之間什麼關係?

時間 2021-06-02 02:38:41

1樓:BrickMover

這裡先介紹下基本知識,首先了解CANopen是基於CAN匯流排的應用層協議,在CAN中,報文ID分為11bit標準幀及29bit擴充套件幀,在CAN匯流排層(資料鏈路層),報文ID主要起到優先順序仲裁作用,報文ID越小在CAN匯流排中仲裁優先順序越高,在仲裁機制中則會被優先傳送,有興趣的同學可自行檢視CAN匯流排相關知識。另外,在某些MCU中,利用報文ID結合識別符號/掩碼暫存器可實現報文的篩選,以提高系統效率。CAN的知識就講到這裡了,下面講CANopen協議如何規定報文ID。

樓主的理解基本是正確的,Node-ID叫做裝置節點號,一般的,乙個CAN區域網中每個裝置都有乙個節點號,理論上,網路中最大能掛載0x7F個裝置。現市場中大部分伺服產品都只支援標準幀報文ID,在CANopen中,報文ID被劃分為4bit功能碼加7bit節點號,在CANopen的設計思想中,功能碼的存在不僅是為了區分報文型別(SDO/PDO/NMT/SYNC),也完全保留了優先順序仲裁機制,CiA301協議中規定了不同型別報文的COB-ID,對於實時性高的報文幀ID相對較小。

2樓:

COB-ID可以理解是CAN-ID。CANopen 將 CANbus 11 位元的 ID 分為 4 位元的功能碼及 7 位元的 CANopen 節點 ID。你的理解沒什麼問題。

舉個例子,0x1FF是乙個PDO的COB-ID,分解一下是0011 1111111,前4個是3,是功能碼,表示TPDO1。後7個是節點ID(Node ID),0x7F,127。

再來乙個。0x701,分解下,1110 0000001,前4個是14,功能碼,表示網路控制-錯誤控制。後7個是節點ID,1。

如何利用CANopen控制伺服電機?

少年牧心 前段時間搞機械臂控制的時候,CAN協議和CANopen協議都使用過,略懂一二,獻醜寫點自己的理解。CAN協議一般傳送八字節長度的短幀資料達到對節點的控制,你買的驅動器應該有廠家自己的協議,對照著相應指令,你去填充這八個位元組 包含節點號 指令型別 指令型別對應的資料,比如電機期望位置 速度...

如何看待陳思中報出圈?

Ceca Yang 在陳思的應援會群裡面,我看了下,目前我在四個成員的應援群,其中有2個今年直接放棄投票的。對陳思的喜歡是源於她去年的生日公演,在生日環節的那個小故事讓乙個近40歲的老頭的我竟然直接流淚。之後,我也進了這個應援會的群。我個人不喜歡用錢投票這個活動,但也給思思丟了一點錢,我不知道我會不...

高中報補習班有用嗎?

說豪的幸福呢 個人認為報輔導班還是很有必要的,但是要本著少而精的原則,不能把大量時間浪費在補課上,高年級補課建議還是以一對一為主,針對性的有重點的輔導,提公升效率。基本上一周一次就可以了,把這週遇到的問題都總結一下,然後利用週末一次性解決,如果不會的越來越多,堆積起來,以後提公升就困難了。 今年高二...