CANopen之 LSS Node-ID节点管理
1.区分CAN-ID和节点ID
- 在CANopen中,CAN-ID是通信的标识符,范围不同,对应的应用不同。
- 而节点ID是设备的身份ID,在NMT网络管理中,用到CS(Command Spefifier指令说明符)+Node-ID的对网络中的节点进行管理。
- SDO通道具有2个CAN标识符,其中发送方向的标识符为“580+Node-ID”,接收方向的为"600h+节点ID";
2.节点ID的分配
- 在项目中涉及主站的开发, 其中很重要的一点是对节点的管理。由于Slave节点无法用DIP开关的方式去配置节点(密封性的需求),所以只能使用动态节点分配的方法。这里就涉及到LSS协议。
- 使用动态分配方法的目的,就是要明确的标识一个CANopen Slave设备,因此,该设备至少具备2个基本的特征参数,一个是制造商ID,另一个是序列号,这2个参数都一个通过对象1018h来设置。
- 这里先买个关子,为什么至少具备2个基本的特征参数?
3.层设置服务LSS
LSS的全称是Layer Setting Service,层设置服务。
3.1 服务内容
- 配置Node-ID
- 配置CAN网络的传输速率
3.2 LSS用到的CAN-ID
- 7E4 = 2020d --------- Repsonse from LSS slave(CANopen Slave Device)
- 7E5 = 2021d --------- Response from LSS master(CANopen Master/configuration tool)
- 两条报文的总长度总是为8字节。第一个字节通常为识别符,用来识别所涉及的指令或状态信息
3.3 LSS的寻址模式
- 点对点
- 广播通信模式
3.4 LSS状态切换
具有LSS功能但没有有效Node-ID的CANopen Slave设备,在上电之后会进入LSS等待状态。
LSS状态机与NMT(Network managerment)网络管理之间其实没有什么联系。仅仅由LSS主机控制(即使设备处于NMT停止状态时)。
代码(hex) | 功能 |
---|---|
04h | 进入LSS等待状态 |
11h | 配置新的节点ID |
13h | 配置新的位速率 |
15h | 启动新的为速率 |
17h | 保存LSS配置 |
3.5 点对点配置(Point to Point)
下面是一个设置Node-ID的例子。
假设出厂默认Node-ID :127d = 7Fh
现在想要配置Node-ID : 05d = 05h
此处只有一个LSS从机。
该节点模式用到了LSS中的LSS switch mode global 命令。
LSS swtich mode global 命令包含上述的等待(waiting), 配置(configuration)。
- 000h 80 7F: 该指令为NMT网络管理,push Node-127 to Pre-opeartional state
- 7E5h 04 01 00 00 00 00 00 00: 配置模式
- 7E5h 11 05 00 00 00 00 00 00: 配置新的节点Node-ID为05
- 7E4h 11 00 00 00 00 00 00 00: Slave节点反馈:配置成功
- 7E5h 17 00 00 00 00 00 00 00: 保存LSS配置
- 7E4h 17 00 00 00 00 00 00 00: Slave节点反馈:配置成功
- 000h 81 7F: NMT指令:重启Node-ID 127(Application Reset)
- 705h 00: NMT指令:Boot-up message, 进入Pre-opertional(进入NMT预操作阶段)
- 注意: 新的节点地址在复位该节点后生效(valid after a reset of the device)或者是Power Up重启.
3.5.1 切换全局状态
该协议用于执行‘Switch Mode Global’服务
3.5.2 配置节点地址(Node-ID)协议
3.5.2 存储配置协议
该协议用于执行‘Store Configured Parameters’服务
3.6 多节点配置(Multipe Node Address)
上述描述的当网络中只有一个节点的情况,可以使用LSS Switch State Global协议进行状态切换和配置。但是多Slave节点的情况下,情况较复杂一些。LSS switch mode selective命令来选择配置模式。
3.6.1 LSS地址
记得在通用通信对象(General communication objects)中的1018h
Index索 | Object对象 | Name名字 |
---|---|---|
1018h | RECORD记录 | Identity Object厂商ID标识对象 |
1018h子索引 | 项目 | 含义 | 位数 |
---|---|---|---|
sub-idx 1 | Vendor-ID | 厂商ID | 32 |
sub-idx 2 | Product Code | 产品代码 | 32 |
sub-idx 3 | Revision Version | 软件版本 | 32 |
sub-idx 4 | Serial Number | 序列号 | 32 |
在多Slave编址时,我们需要依靠这些信息标识没每一个设备。这个地址相当于信封上的邮寄地址一样,邮寄地址中包含姓名(Vendor-ID),街道(Product Code), 地址(Software Version), 门牌号(Serival Number)。至于收件人是否居住在在哪个楼层不重要。这里楼层就相当于CANopen设备的Node-ID。
用户可以通过上述4个32位的值获得一个128位密钥,该密钥即可以理解为LSS地址。
3.6.2 切换选中节点状态协议
该协议用于执行‘Switch Mode Selective’服务
上图所示为LSS主机和LSS从机之间的Switch Mode Selective协议。只有当4个传输参数与LSS从机一致时,才进行肯定应答。 厂商ID由CiA统一分配和管理,其他参数由设备制造商分配。
当选中某个Node后,接下来的配置过程就和之前的配置节点报文一样。如下所示。
3.7 LSS地址查询协议
该协议用于执行“Inquire LSS Address Service”服务。
既然上面要对网络中的某个CANopen Slave节点编址,那么CANopen Master需要记住每个节点的LSS地址,从而才能在对某个Slave进行编址时通过LSS Address进行选择。
- 1
- 2