問: 為什么SDO修改參數的命令字為2F、2B、23、27,還有的是22?這些值是怎么定義的?#
答:#
先看下圖:

答案是:
數據的定義請看下圖。
- 首先我們確定e的值:因為我們正常的SDO通訊都是使用的加速傳送(最多傳輸4字節數據),所以e = 1
- 然后我們確定s的值:如果我們不指定數據長度,則s=0,否則s=1
- 然后我們確定n的值:根據e和s的值,如果我們不指定數據長度,則n無意義,n=0,那么命令字就等於
00100010b,即0x22
如果指定數據長度,則s=1,這時候n有效,n表示數據部分無意義數據的字節數,注意是無意義的字節數。
如果我們只使用1個字節,則無意義字節數為3 (BYTE6-8)。n=11b,那么命令字就等於00101111,即0x2F(這里要注意SDO的數據格式,八個字節依次是:命令字(BYTE1),索引(BYTE2-3),子索引(BYTE4),數據(BYTE5-8))
同理,如果我們使用兩個字節,則無意義字節數為2,(BYTE7-8),n=10b。那么命令字就等於00101011,即0x2B。
三個字節的0x27和四個字節的0x23,想必你一定能算出來吧。
