CANopen专有个子协议用来描述怎样去通过网络设置节点地址和波特率,就是CiA DSP-305,大伙都叫LSS协议,是Layer Setting Services的缩写,不太好翻译,也许可以翻译成底层设置服务协议吧。
属于主从式服务,类似于NMT的方式,占用2021(for master)和2020(for slave)两个标识符。CANopen网络中同时只能有一个节点能提供LSS Master服务,并且该节点同时也必须是NMT Master。网络上的其他节点都提供LSS Slave服务。
假设网络上除了主节点之外,其他节点都是无地址的,那么它根据什么去设置各节点地址呢?
答案是LSS地址,这跟节点的地址可不同,它理论上是全球唯一的,那么这个地址到底是什么呢?答案是对象字典1018H的内容,包括vendor-id(制造商ID)、product-code(产品码)、revision-number(修订码)和serial-number(序列号),这几个加起来就全球唯一了吧。一般要求LSS Master节点要预先知道网络上的各节点的LSS地址。
设置某个节点地址的步骤如下:
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后,所有的节点都必须保证以新的波特率监听网络。
至于LSS提供的LSS地址查询等功能这里就不介绍了。

最新文章

  1. Android仿快递 物流时间轴 的代码实现
  2. velocity学习记录
  3. IE6与W3C标准的盒模型差异
  4. 如何学习Javascript ?
  5. wl18xx wifi编译出现没有编译wlcore_sdio的情况
  6. js拉起或下载app
  7. thinkphp5.1 退出登陆操作
  8. TCP的客户端搭建
  9. flask 保存文件到 七牛云
  10. (常用)xml-pickle-shevel-json模块
  11. 【Python61--异常处理】
  12. Learning-Python【0】:Windows环境下Python2和Python3的安装
  13. linux就该这么学,第六天了
  14. 架构师成长之路6.5 DNS服务器搭建(添加记录、负载均衡、DNS视图)
  15. 错误/异常:java.io.FileNotFoundException: .\src\db.properties (系统找不到指定的路径。);的解决方法
  16. Linux基础命令---ping
  17. 内存和CPU资源控制
  18. Android 面试知识集2
  19. CCKS 2018 | 最佳论文:南京大学提出DSKG,将多层RNN用于知识图谱补全
  20. Holt-Winters模型原理分析

热门文章

  1. 求Read Depth
  2. [转]使用CallerMemberName简化InotifyPropertyChanged的实现
  3. 20155238 2016-2017-2 《Java程序设计》第四周学习总结
  4. 确定有限自动机 valid number
  5. 马尔可夫毯(Markov blanket)
  6. python基础学习1-装饰器及应用
  7. 洛谷 P1350 车的放置
  8. MTCNN(Multi-task convolutional neural networks)人脸对齐
  9. C#中如果类的扩展方法和类本身的方法签名相同,那么会优先调用类本身的方法
  10. spring cloud网关通过Zuul RateLimit 限流配置