CANOpen层配置服务报文


LSS提供查询和改变CANopen模块底层参数的功能,LSS Slave用于某个CANopen模块,LSS Master处理整个CAN网络。
LSS功能占用两个接口,占用2021(for master)和2020(for slave)两个标识符。属于主从式服务,类似于NMT的方式,CANopen网络中同时只能有一个节点能提供LSS Master服务,并且该节点同时也必须是NMT Master。网络上的其他节点都提供LSS Slave服务。
LSS地址跟节点的地址不同,它理论上是全球唯一的,包括vendor-id(制造商ID)、product-code(产品码)、revision-number(修订码)和serial-number(序列号),LSS地址由CANopen身份对象(1018H)标识。一般要求LSS Master节点要预先知道网络上的各节点的LSS地址。
LSS服务可以按功能划分为三部分:
    切换状态服务(switch mode services)为LSS Master和LSS Slave的逻辑连接提供途径。用来改变LSS Slave的状态。
        切换全局状态:该服务用于网络上所有LSS Slave节点在可操作状态和配置状态之间切换。
        切换选中状态:该服务切换属性与LSS_address相等的LSS地址节点进入配置状态。

    配置服务(configuration services)用来配置LSS Slave的底层参数。该服务仅在配置状态可用。
        配置节点地址:通过该服务LSS Master节点配置一个LSS Slave节点的NMT-address。
        配置位定时参数:通过设置位定时参数服务,LSS Master节点将新的位定时参数设到LSS Slave中。
        激活位定时参数:通过该服务激活LSS Master由配置位定时参数服务所设置的位定时参数。
        存储配置参数:存储配置参数服务实际上是用于将配置参数存入非易失性存储器。

    查询服务(inquiry services)为LSS Maste确定底层参数提供途径。该服务仅在配置状态可用。
        查询LSS地址:该服务允许确定一个在配置状态下的LSS Slave节点的LSS-address参数。
        查询NMT地址:该服务允许确定一个在配置状态下的LSS Slave节点的NMT-address参数。

    身份识别服务(identification services)。
        LSS识别远程Slave节点:LSS Master请求所有LSS Slave节点,LSS地址和LSS_Address_sel一致,给主机发送LSS Identify Slave服务标识自己。
         LSS标识Slave:在使用LSS Identify Remote Slaves服务后,LSS Slave表明匹配本地LSS地址的LSS_Address_sel一致,给主机发送标识自己。

设置某个节点地址的步骤如下:
1. 通过LSS地址去将希望设置ID的节点切换到配置状态(相当于NMT的停止状态),当然是通过LSS服务(Switch Mode Selective)。
2. 然后通过’Configure Node-ID’服务设置其节点地址。
3. 置该节点到可操作状态。
设置网络波特率的步骤如下:
1. 将网络上所有LSS Slave切换到配置状态,通过‘switch Mode Global’服务实现。
2. 通过’Configure Bit Timing Parameters’服务将波特率广播到每个节点中。
3. 通过‘Activate Bit Timing Parameters’服务激活新设置。将整个网络波特率切换为新设置。
4. 置网络切换回可操作状态。
这里要注意:在‘Activate Bit Timing Parameters’服务中有个switch_delay参数,该参数指定相等长度的两个延迟周期长度,是为了避免总线上出现不同的位定时参数(波特率)。每个节点在收到命令后’switch_delay’毫秒后应用新的位定时参数。在应用新参数后,节点在第二个’switch_delay’毫秒定时到之前不发送任何报文。
各节点处理位定时激活命令需要的时间可能不同,而且激活命令之前的的报文可能还在节点的接收队列中。意思就是某个节点在处理延时的过程中可能还会以旧的波特率来传输CAN报文。因此swith_delay要比网络上任何一个节点的处理时间都要长,这样才能避免一个节点已经改变了波特率,而另一个节点还在以旧的波特率工作。在第一次经过switch_delay指定的时间长度后,每个节点必须在第二个switch_delay期间完成到新波特率的切换。因而在经过了第二个switch_delay后,所有的节点都必须保证以新的波特率监听网络。

猜你喜欢

转载自blog.csdn.net/lushoumin/article/details/80817672