[CAN-bus/DeviceNet] 最近开始看CANopen的资料

[复制链接]
17490|30
john_light 发表于 2008-2-25 14:52 | 显示全部楼层

谢谢 叶David

顺便翻页<br /><br />最近穿插了看TCP/IP网络编程,因此稍微搁了一下。
john_light 发表于 2008-2-25 15:50 | 显示全部楼层

时间戳

<b>CANopen时间戳</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/time-stamp.gif"><br /><br />通常,时间戳对象代表的是午夜零点后的绝对毫秒数以及自1984年1月1日起的天数。它是长度为48的位序列(6字节)。<br /><br />有时,要求苛刻的应用,特别在需要精确同步而减少传输率的大型网络中;可能有必要将本地(实时)时钟和准确的时钟同步在微秒级(microsecond)。<br /><br />这通过利用可选的高分辨率同步协议来实现,该协议使用了特殊格式的时间戳报文来调整本地时钟的不可避免漂移的。<br /><br />高分辨率时间戳以unsigned32来编码,分辨率为1微秒,这意味着该时间计数器每72分钟又重新计数。我们通过将高分辨率的时间戳(对象1013h)映射到一个PDO来配置它。<br /><br /><b>CANopen时间戳协议</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/time-stamp/protocol.gif"><br /><br />时间戳对象实现为,发送设备作为生产者而接收设备作为该事件的消费者。<br /><br />对于时间戳报文的标识符,建议采用256。
gotomy 发表于 2008-3-11 18:59 | 显示全部楼层

加油

  
john_light 发表于 2008-3-17 10:52 | 显示全部楼层

CANopen紧急事件对象

<b>CANopen紧急事件对象</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/emergency-object.gif"><br /><br />紧急事件报文由设备内部的严重错误情况的产生来触发,报文以高优先权从相关应用设备发送到其它设备。这使得它们适合于中断类型的错误警报。每个“错误事件”只允许发送一条紧急事件报文,也就是说紧急事件报文不允许重复。一旦某个设备不再发生新错误,就不允许它再发送紧急事件报文。<br /><br />依靠CANopen通讯Profile定义的紧急事件错误代码,错误寄存器以及设备的特定附加信息均在设备profile中指定。<br /><br /><b>CANopen紧急事件协议</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/emergency/protocol.gif"><br /><br />紧急事件对象是可选的。如果一个设备支持该对象,那么它必须至少支持两种错误代码&nbsp;00xx(错误清除或没有错误)还有&nbsp;11xx(一般错误)。<br /><br />紧急事件对象含有8个数据字节而且它的传输是要确认的。<br /><br /><b>CANopen紧急事件错误代码</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/emergency/error-code.gif"><br />
john_light 发表于 2008-3-17 11:14 | 显示全部楼层

CANopen网络管理(NMT)

<b>CANopen网络管理(NMT)</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/network-management.gif"><br /><br />CANopen网络管理是面向节点的,它遵循&nbsp;主机/从机&nbsp;结构。它需要网络中的一个设备完成NMT主机的功能,其它节点都是NMT从机。网络管理提供以下的功能组:针对想要参与分布应用的NMT从机初始化的<b>模块控制服务</b>、针对节点与网络通讯状态管理的<b>错误控制服务</b>以及针对网络中从各模块上传/下载配置数据的<b>配置控制服务</b>。<br /><br />一个NMT从机所表现的是负责该节点的NMT功能的那部分。NMT从机由它的模块ID来唯一标识。<br /><br /><b>CANopen&nbsp;NMT从机状态图</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/network-management/slave-state-diagram.gif"><br /><br />CANopen&nbsp;NMT从机设备实现了一个状态机,每个设备在上电与内部初始化后自动进入Pre-operational状态。在该状态下,可以通过SDO对节点进行配置或者参数化(例如利用配置工具),但不允许进行PDO通讯。<br /><br />NMT主机设备可以将所有节点或者单独一个设备切换至或切换出Operational状态。通过将设备切换进Stopped状态来强制停止该设备进一步的PDO和SDO通讯,该状态能够用来完成确定的应用行为。这些行为的定义属于设备profile的范畴。<br /><br />在Operational状态中,所有的通讯对象都被激活。可以通过SDO访问<b>对象字典</b>。然而执行状态或应用状态机也许要关闭或者只读取某些应用对象同时进行(例如某个对象可能含有在执行过程中不能改变的应用程序)[吐血了&nbsp;-&nbsp;Implementation&nbsp;aspects&nbsp;or&nbsp;the&nbsp;application&nbsp;state&nbsp;machine&nbsp;however&nbsp;may&nbsp;require&nbsp;to&nbsp;switch&nbsp;off&nbsp;or&nbsp;to&nbsp;read&nbsp;only&nbsp;certain&nbsp;application&nbsp;objects&nbsp;whilst&nbsp;being&nbsp;operational&nbsp;(e.g.&nbsp;an&nbsp;object&nbsp;may&nbsp;contain&nbsp;the&nbsp;application&nbsp;program,&nbsp;which&nbsp;cannot&nbsp;be&nbsp;changed&nbsp;during&nbsp;execution).]。<br /><br /><b>CANopen&nbsp;NMT协议</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/network-management/protocol.gif"><br /><br />CANopen网络管理提供以下五项服务,它们通过<b>命令指定符</b>[CS&nbsp;-&nbsp;Command&nbsp;Specifier]来区分:<br />*&nbsp;启动远程节点&nbsp;(CS&nbsp;=&nbsp;1),<br />*&nbsp;停止远程节点&nbsp;(CS&nbsp;=&nbsp;2),<br />*&nbsp;进入Pre-Operational状态&nbsp;(CS&nbsp;=&nbsp;128),<br />*&nbsp;复位节点&nbsp;(CS&nbsp;=&nbsp;129)和<br />*&nbsp;复位通讯(CS&nbsp;=&nbsp;130)。<br /><br />通讯对象拥有标识符&nbsp;=&nbsp;0还有另外两个字节组成。Node-ID定义了报文的目的地,若为零则该协议寻址所有的NMT从机。<br /><br /><b>CANopen&nbsp;初始化状态</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/network-management/initialization-state.gif"><br /><br />初始化状态被划分为三个子状态,以使节点能够选择进行完全复位或者部分复位。在Reset&nbsp;Application子状态中,特定生产商profile区和标准设备profile区的参数都设置为它们的默认值。设备在设置上电值之后自动进入Reset&nbsp;Communication子状态。<br /><br />在Reset&nbsp;Communication子状态中,通讯profile的参数均被设置为它们的上电值。<br /><br />而后设备进入Initializing子状态,在该子状态中执行基本的初始化。设备在进入Pre-Operational状态之前发出Boot-up对象(4.0版本)。<br /><br />上电值是最后保存的参数。如果设备不支持参数保存或者如果在复位之前接收到restore_default命令(对象1011h),那么上电值是根据通讯profile和设备profile而定的默认值。<br /><br /><b>CANopen&nbsp;引导协议</b><br /><img src="http://www.softing.com/home/images/ia/products/can-bus/more-can-open/network-management/bootup-protocol.gif"><br /><br />该协议被NMT从机在Initializing状态后用来发出节点已进入Pre-Operational状态的信号。它和错误控制协议使用相同的标识符。<br /><br />在通讯复位、应用复位以及从上电恢复后都同样发送引导报文。1字节的数据域采用固定值零。<br /><hr><br />准确的翻译需要对更多相关文档的进一步阅读,译文可能要多次修改……
hyhmh 发表于 2008-3-25 09:04 | 显示全部楼层

建议:有开发需要的同行多加联系

曾在一产品项目中,实施CANopen协议<br />感触:<br />&nbsp;&nbsp;1)CANopen协议文档不符合国人的阅读习惯。<br />&nbsp;&nbsp;2)CANopen协议实施中,作为系统集成商的责任更加重要。<br />&nbsp;&nbsp;3)实现CANopen子节点的协议要求并不像想象中那么困难。(但国外通常使用现成的CANopen软件包)<br />&nbsp;&nbsp;4)CANopen协议在真正的中文出版物还很少。
haibianfeng 发表于 2010-6-29 10:18 | 显示全部楼层
19# john_light


john_light  你好 你现在还做这块么
想实习去 发表于 2010-9-2 18:49 | 显示全部楼层
19# john_light


您好,现在我正好在做CAN方面的,貌似能用到CANopen协议,但是现在对这个东西不太懂,看来好几遍那个协议,希望能和您多交流,QQ:308739799
gangqun 发表于 2010-9-15 12:30 | 显示全部楼层
我也正在在做CANopen协议这块的,初学,大家可以交流交流。
我MSN:gangqun@hotamil.com.
SkyCode 发表于 2010-10-16 00:14 | 显示全部楼层
litop 发表于 2010-10-25 19:37 | 显示全部楼层
http://item.taobao.com/item.htm?id=6323791470


USBCAN-II,还CANOPEN解析.的东东
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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