q290879578 发表于 2024-3-30 10:22:45

CAN的多机通讯

新人一个,我这边的系统以前都是modbus一个主站多个从站,轮询做的。这两天在研究can,有几个问题不大明白,can发送器在发送的时候通过检查接收端的ACK确认能知道是否成功发送,那这样就不需要像modbus一样需要专门的数据应答了。对于多机系统,也不需要轮询,把mosbus里原来的主机过滤器配置成接收所有从机ID,从机过滤器配置成接收主机ID,那么主机和从机在有数据变化时发送就可以了,请问是这样子的吗

eric2013 发表于 2024-4-1 08:28:04

简单的使用,仅需做个消息回复超时等待,比如给从机发送命令返回100字节数据,如果超过10秒就认为超时了,不再等待。

q290879578 发表于 2024-4-1 08:36:58

为什么还要等消息回复呢?既然接收方已经有ACk显性位确认了,不是应该做些连续发送错误避免堵塞的程序就可以了吗

eric2013 发表于 2024-4-1 08:43:35

q290879578 发表于 2024-4-1 08:36
为什么还要等消息回复呢?既然接收方已经有ACk显性位确认了,不是应该做些连续发送错误避免堵塞的程序就可 ...
应答是本次发送出去的消息没问题。你还要等待从机返回100个字节,从机在规定的时间内不反馈怎么处理,思考下。

q290879578 发表于 2024-4-1 09:17:44

eric2013 发表于 2024-4-1 08:43
应答是本次发送出去的消息没问题。你还要等待从机返回100个字节,从机在规定的时间内不反馈怎么处理,思 ...

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

q290879578 发表于 2024-4-1 09:20:33

大家都是主机,没有像modbus的读/写都需要回复的流程了吧,谁有数据更新主动上报啊

eric2013 发表于 2024-4-1 09:36:09

q290879578 发表于 2024-4-1 09:17
如果按modbus的主从机逻辑是这样的,但是can他又不区分主从机,大家都是上报的格式,不需要等待回复了吧 ...
可以的,只是这种管理更加麻烦,涉及到的问题就更多了,比如有些从机长时间不回复了怎么处理,因为CAN有个多次发送错误离线的问题,针对这个问题,CANopen从机是通过发心跳包来判断从机是否离线,你可以参看下。

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


q290879578 发表于 2024-4-1 09:42:53

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

数据量大了实时性就降下,发送周期长些,谢谢指点
页: [1]
查看完整版本: CAN的多机通讯