CanOpen的SDO、PDO简单通信使用

CanOpen部分笔记:

CanOpen的一些简单的使用记录。为了简单明了,假设现在是用CAN盒子向使用CanOpen协议的设备通信(假设设备地址ID为0x01)。


SDO通信:

如果想要读取设备某个参数。则使用

在这里插入图片描述
此数据格式发送。

比如读取设备索引为0x60c1,子索引0x01的参数。则发送如下参数:
发送:0x601 40 c1 60 01 00 00 00 00
接收:0x581 43 c1 60 01 01 02 03 04
其中发送中的0x40表示读取数据,接收中的0x43表示接收到4个字节,即数据为0x04030201。

同理:0x4f表示参数响应为一个字节,0x4b表示参数响应为两个字节,0x47表示参数响应为三个字节,0x43表示参数响应为四个字节。

如果想要修改设备某个参数。则使用
在这里插入图片描述
其中2F表示的是写入一个字节。对于多个字节,则将2F更换为其他。比如2B表示写入两个字节,比如27表示写入三个字节,比如23表示写入四个字节。

比如向设备索引为0x60c1,子索引0x01写入0x123456。则发送如下参数:
发送:0x601 27 c1 60 01 56 34 12 00
接收:0x581 60 c1 60 01 00 00 00 00
其中发送中的0x60表示写入成功。


PDO通信:

1.Transmit - PDO (TPDO)

如果想要事件发生后接收到PDO上报相应的信息,则需要将索引映射到0x1a00等对象字典,并设置相应的通信参数0x1800等。

此举例将索引0x60c1、子索引0x01、字节32位映射到0x1a00。首先设置通信参数0x1800。参数如下:
发送:0x601 2f 00 18 02 ff 00 00 00   设置索引 1800,事件传输(ff)
发送:0x601 2f 00 18 05 0a 00 00 00  设置索引 1800,时间间隔10ms(0a)

设置完通信再去映射参数。参数如下:
发送:0x601 2f 00 1a 00 00 00 00 00   设置子索引禁用
发送:0x601 23 00 1a 01 20 01 c1 60  设置映射索引0x60c1,子索引01,大小0x20(32位)
发送:0x601 2f 00 1a 00 01 00 00 00   设置映射数量01

2.Receive - PDO (RPDO)

如果想要直接修改某一参数,则需要将索引映射到0x1600等对象字典,并设置相应的通信参数0x1400等。

此举例将索引0x60c1、子索引0x01、字节32位映射到0x1a00。首先设置通信参数0x1400。参数如下:
发送:0x601 2f 00 14 02 ff 00 00 00   设置索引 1800,事件传输(ff)

设置完通信再去映射参数。参数如下:
发送:0x601 2f 00 16 00 00 00 00 00   设置子索引禁用
发送:0x601 23 00 16 01 20 01 c1 60  设置映射索引0x60c1,子索引01,大小0x20(32位)
发送:0x601 2f 00 16 00 01 00 00 00   设置映射数量01

重点注意:要映射参数必须先将子索引禁用后才能映射,再设置映射数量。

图片都是网上截图的

3.使用(0x180、0x200等)

图片都是网上截图的

通过上面的操作,映射0x1a00后,设备发来的COB-ID是0x181,数据则为映射的索引下的值。同理,映射0x1600后,想要修改此索引下的值,则向设备发送的COB-ID是0x201,数据为想要更改的值。

  • 18
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值