zoukankan      html  css  js  c++  java
  • [CANopen] SDO的命令字

    问: 为什么SDO修改参数的命令字为2F、2B、23、27,还有的是22?这些值是怎么定义的?#

    答:#

    先看下图:

    答案是:

    数据的定义请看下图。

    1. 首先我们确定e的值:因为我们正常的SDO通讯都是使用的加速传送(最多传输4字节数据),所以e = 1
    2. 然后我们确定s的值:如果我们不指定数据长度,则s=0,否则s=1
    3. 然后我们确定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,想必你一定能算出来吧。
  • 相关阅读:
    CodeForces 834C
    HDU 6048
    HDU 6052
    HDU 6036
    HDU 6042
    HDU 2614 Beat(DFS)
    UESTC 1272 Final Pan's prime numbers(乱搞)
    HDU 2064 汉诺塔III(递归)
    HDU 2102 A计划(DFS)
    HDU 1069 I Think I Need a Houseboat(模拟)
  • 原文地址:https://www.cnblogs.com/CiACAN/p/4929134.html
Copyright © 2011-2022 走看看