转载:https://www.cnblogs.com/CiACAN/p/4929134.html
为什么SDO修改参数的命令字为2F、2B、23、27,还有的是22?这些值是怎么定义的?
答:
先看下图:
答案是:
数据的定义请看下图。
- 首先我们确定e的值:因为我们正常的SDO通讯都是使用的加速传送(最多传输4字节数据),所以e = 1
- 然后我们确定s的值:如果我们不指定数据长度,则s=0,否则s=1
- 然后我们确定n的值:根据e和s的值,如果我们不指定数据长度,则n无意义,n=0,那么命令字就等于
00100010
b,即0x22
如果指定数据长度,则s=1,这时候n有效,n表示数据部分无意义数据的字节数,注意是无意义的字节数。
如果我们只使用1个字节,则无意义字节数为3 (BYTE6-8)。n=11
b,那么命令字就等于00101111
,即0x2F(这里要注意SDO的数据格式,八个字节依次是:命令字(BYTE1),索引(BYTE2-3),子索引(BYTE4),数据(BYTE5-8))
同理,如果我们使用两个字节,则无意义字节数为2,(BYTE7-8),n=10
b。那么命令字就等于00101011
,即0x2B。
三个字节的0x27和四个字节的0x23,想必你一定能算出来吧。