CANopen是一种架构在CAN串行总线系统上的高层通讯协议,常被用于嵌入式系统与工业控制领域,包括电机控制、机器人制造、医疗、汽车等多个行业领域。本篇文章将主要介绍CANopen的LSS服务。
一. LSS概述
Layer setting service (LSS)是CANopen的设置服务与协议(CiA 305),是具有LSS主功能的CANopen设备通过CAN网络查询或更改CANopen设备上物理层、数据链路层和应用层的三个数据,包括Node_ID、波特率、LSS地址(1018h)。
每个LSS从站都有唯一的LSS地址,其中包含了四个32位子索引的1018h Identity object对象(具体可见CiA301规范)。LSS从站可以处于配置模式和等待模式,LSS主站负责在两个模式之间进行切换。
LSS协议的消息都是由8个字节组成,其中字节0始终包含服务的命令说明符(CS),同时LSS协议的两个CAN-ID分别为7E5和7E4。
- 7E5h:用于从 LSS 主站发送至 LSS 从站的消息(请求)。
- 7E4h:用于从 LSS 从站发送至 LSS 主站的消息(响应)。
二. LSS服务
LSS服务主要包括开关状态服务、配置服务、查询服务、识别服务,这里主要介绍开关状态服务和配置服务。
1. 开关状态服务
借助这个服务,LSS主站可以将LSS从站切换成配置模式或者等待模式,在配置模式下才能够对LSS从站设备进行节点ID和波特率的更改,这里主要用到命令符号CS=40h。通过这个服务可以将网络中的所有LSS从站切换为配置模式或者等待模式。
如果在整个CAN网络当中不想操作所有的LSS从站,那么也可以通过LSS地址中的参数来操作相应的设备,这个时候LSS主站会发送四条消息(如下图),之后相应的从站会切换到配置模式并发送确认。
2. 配置服务
通过配置服务,LSS主站可以更改并且存储(如果有必要的话)LSS从站节点ID和波特率。
1)配置节点服务
LSS主站向LSS从站发送新节点ID的消息,返回错误代码 00h:没有错误,01h:无效节点。
2)配置波特率服务
LSS主站向LSS从站发送新波特率的消息,返回错误代码 00h:没有错误,01h:波特率不支持,FFh:无效表索引
其中表索引与波特率的对应关系如下图
3)激活位计时参数服务
LSS 主站使用此命令同时激活网络中所有 LSS 从站的设定波特率,其中Switch delay的单位ms,确保在可能再次发送消息之前,网络中的所有 LSS 从站均具有相同的波特率。从每个 LSS 从站收到此消息之后,其中存储的时间即是允许等待的时间。只有这时才能接受新的波特率,还可以再次等待相同的时间;只有这时 LSS 从站才能再次发送消息。
4)保存配置服务
通过这一服务,LSS主站可以保存重新设定的节点ID和波特率;在执行这一服务的时候LSS主站必须确保网络中只有一个LSS从站处于配置模式。返回错误代码 00h:没有错误,02h:访问非易失存储器失败。
三、示例
目前有一个LSS从站的参数设置节点ID=40h,波特率=1000kBd,现在需要将参数修改如下节点ID=04h,波特率=500kBd。那么将进行以下报文命令操作:
7E5 | 04 01 00 00 00 00 00 00 将LSS从站切换至配置模式
7E5 | 5E 00 00 00 00 00 00 00 查询LSS从站的节点ID
7E4 | 5E 40 00 00 00 00 00 00 回复节点ID
7E5 | 11 04 00 00 00 00 00 00 将从站节点设置为04h
7E4 | 11 00 00 00 00 00 00 00 从站返回确认
7E5 | 13 00 02 00 00 00 00 00 将LSS从站波特率设置为500kBd
7E4 | 13 00 00 00 00 00 00 00 从站返回确认
7E5 | 17 00 00 00 00 00 00 00 LSS主站发送保存更改命令
7E4 | 17 00 00 00 00 00 00 00 LSS返回确认
7E5 | 04 00 00 00 00 00 00 00 将LSS从站切换至等待模式
705 | 00 控制器重启接受新参数