CAN总线仲裁中碰到的奇怪问题 点击:1222 | 回复:5



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2002-08-08 17:02:00
楼主
我在CAN总线进行三节点通信中碰到一个奇怪问题,向各位高手求助: 用节点A和节点B发送,节点C接收,节点A发送的ID符为0000,节点B发送的ID符为 001B,按CAN协议规定,根据ID符的大小来决定优先权.我在调试中发现节点C两个报文都能接收到,但是先接收到ID符为001B的报文,(三个节点用同一电源供电用一个开关上电,两节点的发送程序除了ID符改动外,别的都一样,发送数据帧;发送节点采用全比较验收方式,禁止接收彼此的报文;接收节点全屏蔽验收方式,允许接收一切报文;单个节点发送接收情况正确)。当时我怀疑与ID编码有关。可是奇怪的是当我把发送程序交换下载到节点A和节点B中时,即节点A发送ID符OO1B,节点B发送ID符0000,节点C却先收到ID符为0000的报文。我尝试发送ID符为其他的报文,发现总是节点B发送的报文先被接收。我调换了几个节点,比如用A做接收,B和C来发送,情况也类似,老是某个节点的报文先被接收,而不管ID符有何变化。由于本人第一次接触总线仲裁问题,所以碰到如此奇怪的问题很伤脑筋,盼有经验的高手指点迷津。 本人EMAIL ADDRESS:mcm_zelri@sina.com



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2002-08-02 12:49:00
1楼
所有程序都别变,只把发送的ID互换一下,看效果如何。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2002-08-02 21:08:00
2楼
送程序都一样,除了ID符不同,我交换了发送程序也就把ID符给交换了。效果就是上面说的很奇怪的现象。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2002-08-07 14:18:00
3楼
那就是你不能保证两个同时发,B节点要快一些。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2002-08-07 14:47:00
4楼
请问工控之新手,我如何保证两个节点同时发呢?

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2002-08-08 17:02:00
5楼
涉及到你的软件和硬件,除非两个节点的所有软硬件都绝对一样,但这是不太可能的。

热门招聘
相关主题

官方公众号

智造工程师