DeviceNet网络波特率的自动检测 点击:1967 | 回复:3



awa405

    
  • 精华:4帖
  • 求助:0帖
  • 帖子:17帖 | 63回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2002年12月13日
发表于:2003-01-20 15:19:00
楼主
DeviceNet网络允许的波特率共有三种:500K、250K、125K。在设备联入网络之前,需要用户根据当前网络的要求选择一种工作波特率。为了满足设备热插拔的要求,很多接入设备除了提供波特率的人工设置之外,还必须具备波特率自动检测的功能。 根据CAN总线的特点,每一个网络上的节点对接收到的报文都具有自动应答机制,根据接收到的信息正确与否发出应答信息和出错信息。在设备联入CAN网络后,根据网络通信安全的要求,在没有得到波特率的正确设置前,不允许发送任何的信息,也就是说,接入节点必须具有“只听”功能。DeviceNet是基于CAN总线的协议规范,要实现接入设备的波特率自动检测,也必须使通讯接口在波特率没有确认前处于“只听”模式。 很多DeviceNet通讯接口在设计上都是采用CAN协议芯片或者内嵌式的CAN接口,为了实现其“只听”功能,可以在其发送接口与总线驱动芯片之间加上一级或门。也有一些CAN协议芯片内部具有“只听”功能,例如Philip的CAN控制芯片SJA1000,在其扩展CAN功能中就有对应的模式寄存器,可以在不增加其他外部电路的情况下完成“只听”模式的设置。 波特率的自动检测,是通过对网络信息的侦听来实现的,也就是说,网络上首先要具有正确传输的报文信息,接入设备才有可能识别出网络的波特率信息。 首先,需要保证接入设备在网络上电前已经加入网络。这时,当上电时,根据DeviceNet网络协议,每一个从站节点都会有自检和应答信息,这给自动波特率检测提供了较好的时机。 根据这一结论,还可以假想出波特率自动检测的比较极端的情况,那就是“孤立节点”的情况,网络上只有接入设备本身这一个节点,这时候网络上没有传输信息,也就无法侦听和识别波特率,这种情况下只有等待,直到有另一节点加入或者主站设备主动发送有效信息。



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-01-17 15:28:00
1楼
虽然已经把这功能做到节点里去了 但我觉得DeviceNet只有三种可用波特率,帮要不要这个功能也无所谓 最好是CAN芯片做得像SPC3一样自动可以识别总线波特率。那只在组态的时候对master进行设定就可以了(主/从方式时),对等连接时,先入为主,后上线的使用前面已经使用的波特率。

awa405

  • 精华:4帖
  • 求助:0帖
  • 帖子:17帖 | 63回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2002年12月13日
发表于:2003-01-20 08:49:00
2楼
谢谢远方的指点。DeviceNet的波特率选择很大程度上依赖于用户的选择。自动波特率的功能只能对于特殊的设备,例如:repeater、通讯适配器等等。我比较赞同你对于波特率芯片内部硬识别的看法,不过现在还没有听到关于此方面的介绍。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-01-20 15:19:00
3楼
我想之所以CAN芯片没有自动波特率识别的功能是由它自身特点决定的,CAN芯片不是为DeviceNet而设计,CAN BUS的波特率可以任意指定,如果CAN芯片要采用扫描的方法自动识别波特几乎是不可能的,所以,除非专门为DeviceNet的开发设计相应的芯片,不然想依靠CAN不太可能。

热门招聘
相关主题

官方公众号

智造工程师