CANopen LSS服务解析

背景

最近有一个网关类型的开发项目需要用到canopen的LSS服务,鉴于这方面的参考资料比较少,故而记录之。

从功能上说,canopen的LSS服务是用于配置canopen节点的Node-ID和波特率的。canopen节点ID在01h到7Fh范围内有效;FFh的节点ID标识一个“未配置节点ID”设备。如果一个节点的ID为FFh,那么就需要使用LSS服务,由主站配置节点ID。

目标

通过LSS服务配置canopen 从站的 NodeID和波特率

方法
  • 参考CiA 305 Layer setting services(LSS) and protocols
  • 参考 CanFestival中的 TestMasterSlaveLSS 例程
过程

LSS配置过程中,主从站的操作和响应如下:

① 主站知道从站的LSS地址(VendorID,ProductCode,Revision Number,Serial Number),但是不知道从站是否具有有效的NodeID和波特率。
② 主站通过“LSS identify non-configured remote slave”服务来确认总线上是否存在无效配置的节点,如果有则进行后续的操作,如果没有则进行第⑩步。
③ 主站通过“LSS identify remote slave”服务,指定特定的LSS地址,来确认总线上是否存在相同LSS地址的从站节点,如果有则进行后续的操作。
④ 主站通过“Switch state selective”服务,指定特定的LSS地址,将具有相同LSS地址的从站节点的状态切换为“LSS configuration”状态。
⑤ 主站通过“Configure node-ID”服务,来配置从站的node-ID。
⑥ 主站通过“Configure bit timing parameters”服务,来配置从站的波特率。
⑦ 主站通过“Store configuration”服务,向从站发出通知,要求从站将配置保存在非易失存储中。
⑧ 主站通过“Switch state global”服务,将所有从站配置为“LSS waiting”状态。
⑨ 重复②操作,如果仍有未配置的节点,改变LSS地址来匹配节点,改变赋值的node-ID;如果所以节点均配置完毕,则跳到⑩。
⑩ 所有无效配置的节点均配置完毕。通过“Switch state global”,将所有从站配置为“LSS configuration”状态。通过“Activate bit timing parameters”服务,指定周期延时,激活所有节点的波特率参数。
⑪主站通过“Switch state global”服务,将所有从站配置为“LSS waiting”状态。
⑫主站通过NMT服务中的“NMT_Reset_Comunication”,重启所有的从站节点。

分析

(1)在CAN总线具有多个从站的情况下,主站是如何区分不同的从站的?
主站需要知道从站的LSS地址,并通过LSS地址来区分不同的从站。LSS地址即VendorID,ProductCode,Revision Number,Serial Number构成的唯一标识符,定义在对象字典的0x1018中。
对象字典
(2)主站在分配Node-ID时遵循怎么样的规律?
在主站编程中可以自定义Node-ID分配的规律,例如每个从站节点Node-ID加1,或者加2。

(3)主站如何保证将Node-ID分配到指定的从站?
主站在确定从站的LSS地址之后,会将该从站设置为配置模式,而其他从站均在等待模式。即便主站是通过广播的方式配置Node-ID,但由于只有一个从站是在配置模式下,因此仍然能够保证Node-ID分配到指定的从站。

(4)从站如何能够选择性地将自己的模式设置为配置模式?
主站依次广播LSS地址中四个字段消息(0x01~0x04),从站收到消息会查询自己的对象字典,检查信息是否一致,如果四个字段均一致,从站则会将自己的状态设置为配置状态。

结果

通过“Inquire node-ID ”服务可以查询从站的Node-ID,的确为主站所设置的Node-ID。

结论

基于LSS服务完成了从节点的波特率和Node-ID的设置。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值