硬汉嵌入式论坛

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

[有问必答] CAN的多机通讯

[复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2024-3-30 10:22:45 | 显示全部楼层 |阅读模式
新人一个,我这边的系统以前都是modbus一个主站多个从站,轮询做的。这两天在研究can,有几个问题不大明白,can发送器在发送的时候通过检查接收端的ACK确认能知道是否成功发送,那这样就不需要像modbus一样需要专门的数据应答了。对于多机系统,也不需要轮询,把mosbus里原来的主机过滤器配置成接收所有从机ID,从机过滤器配置成接收主机ID,那么主机和从机在有数据变化时发送就可以了,请问是这样子的吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2024-4-1 08:28:04 | 显示全部楼层
简单的使用,仅需做个消息回复超时等待,比如给从机发送命令返回100字节数据,如果超过10秒就认为超时了,不再等待。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2024-4-1 08:36:58 | 显示全部楼层
为什么还要等消息回复呢?既然接收方已经有ACk显性位确认了,不是应该做些连续发送错误避免堵塞的程序就可以了吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2024-4-1 08:43:35 | 显示全部楼层
q290879578 发表于 2024-4-1 08:36
为什么还要等消息回复呢?既然接收方已经有ACk显性位确认了,不是应该做些连续发送错误避免堵塞的程序就可 ...

应答是本次发送出去的消息没问题。你还要等待从机返回100个字节,从机在规定的时间内不反馈怎么处理,思考下。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2024-4-1 09:17:44 | 显示全部楼层
eric2013 发表于 2024-4-1 08:43
应答是本次发送出去的消息没问题。你还要等待从机返回100个字节,从机在规定的时间内不反馈怎么处理,思 ...

如果按modbus的主从机逻辑是这样的,但是can他又不区分主从机,大家都是上报的格式,不需要等待回复了吧?
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2024-4-1 09:20:33 | 显示全部楼层
大家都是主机,没有像modbus的读/写都需要回复的流程了吧,谁有数据更新主动上报啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2024-4-1 09:36:09 | 显示全部楼层
q290879578 发表于 2024-4-1 09:17
如果按modbus的主从机逻辑是这样的,但是can他又不区分主从机,大家都是上报的格式,不需要等待回复了吧 ...

可以的,只是这种管理更加麻烦,涉及到的问题就更多了,比如有些从机长时间不回复了怎么处理,因为CAN有个多次发送错误离线的问题,针对这个问题,CANopen从机是通过发心跳包来判断从机是否离线,你可以参看下。

我建议你自己弄10个机子实际做个Demo测试下,测试中发现问题解决问题。从而让自己有一个全新的认识,效果更好。


回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2024-4-1 09:42:53 | 显示全部楼层
eric2013 发表于 2024-4-1 09:36
可以的,只是这种管理更加麻烦,涉及到的问题就更多了,比如有些从机长时间不回复了怎么处理,因为CAN有 ...

数据量大了实时性就降下,发送周期长些,谢谢指点
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 09:46 , Processed in 0.193371 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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