硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3443|回复: 4
收起左侧

[有问必答] CANOPEN如何使用PDO发送结构体数据

[复制链接]

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2018-10-27 23:19:54 | 显示全部楼层 |阅读模式
如题,我以前移植了一个canopen协议栈,测试的时候我是用直接数组的方式来定义对象字典的,在定义TPDO1的时候映射到的是一个数组,数组有8个元素,每个元素1个字节。这样就可以一次发送8个字节。
现在要和其他的数据对接,别人给我的对象字典PDO映射的是一个很大的结构体。这个结构体远远超过了CAN一次可以发送8个字节的长度,我看了一下别人的文章,如果大家定义的是一样的结构体发送端和接收端就能得到一样的数据,这样实现了分帧来发送数据,这样就可以用一个PDO来发送很多数据。
但是我不明白这个机制,以及这里的对象字典怎么写。
麻烦硬汉哥有空的时候能帮忙看下,谢谢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2018-10-28 02:47:18 | 显示全部楼层
帮顶下,此贴三楼的坛友懂这个:

http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
 楼主| 发表于 2018-10-28 09:10:20 | 显示全部楼层
eric2013 发表于 2018-10-28 02:47
帮顶下,此贴三楼的坛友懂这个:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=89328&extra=p ...

谢谢硬汉哥
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
发表于 2018-11-27 20:03:38 | 显示全部楼层
本帖最后由 李邦 于 2018-11-27 20:05 编辑

这里主要具体的pdo协议定制了,比如pdo一次最多发送8字节:
1字节索引+1字节数据长度+4字节数据+2字节CRC校验
以这样的形式就可以分帧发送。
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
 楼主| 发表于 2018-11-28 13:29:29 | 显示全部楼层
李邦 发表于 2018-11-27 20:03
这里主要具体的pdo协议定制了,比如pdo一次最多发送8字节:
1字节索引+1字节数据长度+4字节数据+2字节CRC ...

这个尝试了,太麻烦。后来考虑是多弄几个PDO,或者用SDO来读。
请教您一个问题,我作为主机如何去消费从站的心跳报文。
我在1016设置了6个子指标,计划用来消费其他节点的心跳,这里可以设置时间,如果我只想消费2,4,6,8,10,12节点的心跳,应该怎么操作,是使用是在对象字典编辑好了之后,通过UNS8 masterRequestNodeState(CO_Data *d, UNS8 nodeId) 来一个个读取吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 04:06 , Processed in 0.226646 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表