CANopen SDO浅析

[复制链接]
查看40420 | 回复0 | 2024-3-15 09:45:33 | 显示全部楼层 |阅读模式
SDO主要用于CANopen主站对从站设备的参数进行读写操作。服务确认是SDO的最大的特点,为每个消息生产一个应答,确保数据传输的准确性。

        SDO通讯是基于客户端服务器模型,通常CANopen主节点作为客户端,从节点作为SDO服务器。SDO请求和应答报文包含8 字节数据。其通讯原则非常单一,客户端发送COB-ID为600+Node-ID的报文,其中Node-ID为服务器的节点地址,数据长度为8个字节;服务器成功接收后,回应COB-ID为580+Node-ID的报文。

SDO 有两种传送机制:

快速传送(Expedited transfer):最多传输4字节数据

分段传送(Segmented transfer):传输大于4字节数据

下面重点介绍常见的快速SDO协议:



以施耐德ATV71变频器为例,节点地址为4,加速斜坡时间(ACC)地址为16#203C:16#02,发送读ACC请求,返回数值1000(16#03E8):



发送写ACC请求,写的数值为16#03E8,返回命令符为16#60,表示成功应答



注意CANopen报文,低字节在前,高字节靠后。

如果返回命令符为80H,则字节4到7就包含32位中止码,具体含义如下表:


        对于普通用户而言,掌握如何通过CANopen主站访问从站设备的对象字典即可。施耐德Unity Pro和Somachine平台,硬件组态中服务数据对象的配置和程序中的SDO_Read、SDO_Write、PLCopen等功能块基本上都属于SDO通讯。

        下面举例通过USB-CAN上位机软件发送SDO报文控制施耐德Lexium 32伺服实现速度模式的运行,方便大家进一步了解SDO报文结构。



16#6060:00 控制模式 8位

16#6083:00 加速时间 32位

16#6084:00 减速时间 32位

16#6040:00 控制字  16位

16#60FF:00 目标速度 32位

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则