[CAN-bus/DeviceNet] 怎么能让某个节点进入错误状态?

[复制链接]
1815|4
 楼主| Allen_Zhang 发表于 2013-3-22 13:01 | 显示全部楼层 |阅读模式
想测试下错误状态下的程序处理。是不是我拔掉另外个节点的接线后,让这个节点不能成功发送消息,就算进入错误状态了?
airwill 发表于 2013-3-23 16:06 | 显示全部楼层
拔掉另外个节点的接线后, 各节点还是能发数据的, 只是被拔掉的节点检测不到应答(可能会自动重发)
另外, CAN 有多种错误, 想模拟产生它, 要用特别的办法

评分

参与人数 1威望 +1 收起 理由
Allen_Zhang + 1 很给力!

查看全部评分

 楼主| Allen_Zhang 发表于 2013-3-25 13:00 | 显示全部楼层
airwill 发表于 2013-3-23 16:06
拔掉另外个节点的接线后, 各节点还是能发数据的, 只是被拔掉的节点检测不到应答(可能会自动重发)
另外, CAN ...

嗯。是不是要让can进入三种错误状态,主动错误被动错误和总线故障,只有当位错误、格式错误、CRC错误等这几个错误累计了错误计数值到达一定程度才可以。
我将节点断开,只是让CAN一直在重发而得不到应答,不算错误状态?
其实我要实现的就是一个功能,当通讯中断的时候,要采取保护措施。就是不知道怎么判断这个通讯中断,看这样子,这个不能归于错误状态了。
有什么好的方法吗?
蚊子强 发表于 2013-3-25 17:47 | 显示全部楼层
一般帧发送完成之后都会产生中断,
可以在这个中断产生之后进行事件触发,然后在另一线程中设置超时时间对这个事件进行等待,
如果超时则认为是通信中断。
我能想到的就是这个办法了。
 楼主| Allen_Zhang 发表于 2013-3-27 16:31 | 显示全部楼层
蚊子强 发表于 2013-3-25 17:47
一般帧发送完成之后都会产生中断,
可以在这个中断产生之后进行事件触发,然后在另一线程中设置超时时间对 ...

现在我是 直接去读取 错误状态寄存器。
如果通信中断了,错误计数值会达到128,也就是进入被动错误状态。
然后错误状态寄存器里的被动错误状态位会被置位,从而判断通信中断了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

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