硬汉嵌入式论坛

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

CAN OPEN通讯实际使用问题

[复制链接]

2

主题

0

回帖

12

积分

新手上路

积分
12
发表于 2018-9-6 22:31:10 | 显示全部楼层 |阅读模式
背景:使用CANOPEN协议的手柄,没有技术协议,想通过can软件(kvaser)一边操作一边读取其can信息;
问题:硬件能连接上,且出现706+05h(operational状态);但不发送节点的PDO信息;
          请问,我是不是得给PDO1和PDO2进行配置?配置它的node id和传输类型、发布时间等?配置他的通讯参数和映射参数?
          请问是在pre-operational中配置还是在operational状态下配置?谢谢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2018-9-7 01:30:46 | 显示全部楼层
给楼主帮顶下,canopen还没有研究过。
回复

使用道具 举报

3

主题

43

回帖

52

积分

初级会员

积分
52
发表于 2018-10-8 10:28:20 | 显示全部楼层
手柄可能是一个CANopen从站,从站可以默认配置好PDO收发数据,也可以由主站对从站配置,如果没有PDO的数据发送可能从站默认不发送数据,需要主站进行配置,或者从站没有进入操作模式,未进入操作模式不能收发PDO,可以使用SDO进行读写或者配置。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2018-10-10 20:16:27 | 显示全部楼层
lhb292 发表于 2018-10-8 10:28
手柄可能是一个CANopen从站,从站可以默认配置好PDO收发数据,也可以由主站对从站配置,如果没有PDO的数据 ...

你好!
       我最近在学习canopen的canfestival,按照网上的移植方法移植到安富莱的429板子上,做的从机,心跳1017h中心跳时间设置为0x03B8,也就是想1S发送一次心跳。
      我给板子上电后,板子发送boot-up,然后进入pre-operational状态,板子1S发送一次心跳,数据为7F,表示正处在pre-operational状态。
      我通过can分析仪发送nmt,发送cob-id=000,数据data[0]=0x01,data[1]=node-id后,板子进入operational状态,但是此时发送的心跳是错误的,并不是1S发送一次数据为05的心跳,
     请问这是什么原因造成的?
TIM图片20181010201410.png
回复

使用道具 举报

3

主题

43

回帖

52

积分

初级会员

积分
52
发表于 2018-10-11 09:08:47 | 显示全部楼层
05h表示已经入操作状态
QQ截图20181011090738.png
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2018-10-28 09:12:12 | 显示全部楼层
lhb292 发表于 2018-10-8 10:28
手柄可能是一个CANopen从站,从站可以默认配置好PDO收发数据,也可以由主站对从站配置,如果没有PDO的数据 ...

请教您一个问题。
我以前移植了一个canopen协议栈,测试的时候我是用直接数组的方式来定义对象字典的,在定义TPDO1的时候映射到的是一个数组,数组有8个元素,每个元素1个字节。这样就可以一次发送8个字节。
现在要和其他的数据对接,别人给我的对象字典PDO映射的是一个很大的结构体。这个结构体远远超过了CAN一次可以发送8个字节的长度,我看了一下别人的文章,如果大家定义的是一样的结构体发送端和接收端就能得到一样的数据,这样实现了分帧来发送数据,这样就可以用一个PDO来发送很多数据。
但是我不明白这个机制,以及这里的对象字典怎么写。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 06:31 , Processed in 0.172388 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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