[STM32F1] 接收到同一个命令

[复制链接]
571|14
 楼主| chuxh 发表于 2020-5-10 13:39 | 显示全部楼层 |阅读模式
can总线重发机制会不会导致另一个节点重复接收到同一个命令?
zwll 发表于 2020-5-10 13:43 | 显示全部楼层
什么意思?不是很明白你说的什么,能再解释一下这个现象吗
 楼主| chuxh 发表于 2020-5-10 13:46 | 显示全部楼层
节点a发送一个命令给另一个节点b,节点b收到命令后返回ack,由于干扰导致ack没有被a节点收到,之后a节点重发这个命令,由于can总线发出的帧不带序列号,节点b无法识别此帧是不是重发帧,所以这个命令就被b执行了两次。
stly 发表于 2020-5-10 13:49 | 显示全部楼层
这就需要在应用层做好相关校验算法了,所以说实现功能是很容易的,可靠性、稳定性、纠错性等都需要自己设计算法去处理。对于CAN来说,它本身的硬件标准机制就涉及很多校验,理论上应用层不需做校验都可以正常使用,恶劣环境除外。
renyaq 发表于 2020-5-10 13:52 | 显示全部楼层

理论上应用层不需做校验都可以正常使用

物理层已经做好了
 楼主| chuxh 发表于 2020-5-10 13:57 | 显示全部楼层
好像连canopen都没有相应的处理
llljh 发表于 2020-5-10 14:00 | 显示全部楼层
一般情况下 在应用层协议中。会有明确规定。不准许发送增量和切换类型的指令帧。就是为了防止类似重发指令带来的歧义结果。
dingy 发表于 2020-5-10 14:04 | 显示全部楼层
类似重发帧。是否重新参与总线竞争。如果是这样重发帧。有可能被延迟一帧到多帧发送。
pengf 发表于 2020-5-10 14:06 | 显示全部楼层
这样在应用层剔除该多发的重复帧就更困难了。
supernan 发表于 2020-5-10 14:13 | 显示全部楼层
嗯,因为你很难区分它是重复发送帧还是新发帧了。
llljh 发表于 2020-5-10 14:16 | 显示全部楼层

是应用层不
yinxiangh 发表于 2020-5-10 14:19 | 显示全部楼层

我感觉会收到
zyf部长 发表于 2020-5-10 14:23 | 显示全部楼层
这个我也搞不明白 如果是你操作寄存器控制的 我感觉可能不会收到
ousj 发表于 2020-5-10 14:26 | 显示全部楼层

不会,重发也是有地址指向的。
 楼主| chuxh 发表于 2020-5-10 14:39 | 显示全部楼层
嗯,我再好好缕一缕吧,有了好消息及时通知大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

936

主题

11296

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部