发新帖我要提问
12
返回列表
打印
[CAN-bus/DeviceNet]

最近开始看CANopen的资料

[复制链接]
楼主: John_light
手机看帖
扫描二维码
随时随地手机跟帖
21
john_light| | 2008-2-25 14:52 | 只看该作者 回帖奖励 |倒序浏览

谢谢 叶David

顺便翻页

最近穿插了看TCP/IP网络编程,因此稍微搁了一下。

使用特权

评论回复
22
john_light| | 2008-2-25 15:50 | 只看该作者

时间戳

CANopen时间戳


通常,时间戳对象代表的是午夜零点后的绝对毫秒数以及自1984年1月1日起的天数。它是长度为48的位序列(6字节)。

有时,要求苛刻的应用,特别在需要精确同步而减少传输率的大型网络中;可能有必要将本地(实时)时钟和准确的时钟同步在微秒级(microsecond)。

这通过利用可选的高分辨率同步协议来实现,该协议使用了特殊格式的时间戳报文来调整本地时钟的不可避免漂移的。

高分辨率时间戳以unsigned32来编码,分辨率为1微秒,这意味着该时间计数器每72分钟又重新计数。我们通过将高分辨率的时间戳(对象1013h)映射到一个PDO来配置它。

CANopen时间戳协议


时间戳对象实现为,发送设备作为生产者而接收设备作为该事件的消费者。

对于时间戳报文的标识符,建议采用256。

使用特权

评论回复
23
gotomy| | 2008-3-11 18:59 | 只看该作者

加油

使用特权

评论回复
24
john_light| | 2008-3-17 10:52 | 只看该作者

CANopen紧急事件对象

CANopen紧急事件对象


紧急事件报文由设备内部的严重错误情况的产生来触发,报文以高优先权从相关应用设备发送到其它设备。这使得它们适合于中断类型的错误警报。每个“错误事件”只允许发送一条紧急事件报文,也就是说紧急事件报文不允许重复。一旦某个设备不再发生新错误,就不允许它再发送紧急事件报文。

依靠CANopen通讯Profile定义的紧急事件错误代码,错误寄存器以及设备的特定附加信息均在设备profile中指定。

CANopen紧急事件协议


紧急事件对象是可选的。如果一个设备支持该对象,那么它必须至少支持两种错误代码 00xx(错误清除或没有错误)还有 11xx(一般错误)。

紧急事件对象含有8个数据字节而且它的传输是要确认的。

CANopen紧急事件错误代码

使用特权

评论回复
25
john_light| | 2008-3-17 11:14 | 只看该作者

CANopen网络管理(NMT)

CANopen网络管理(NMT)


CANopen网络管理是面向节点的,它遵循 主机/从机 结构。它需要网络中的一个设备完成NMT主机的功能,其它节点都是NMT从机。网络管理提供以下的功能组:针对想要参与分布应用的NMT从机初始化的模块控制服务、针对节点与网络通讯状态管理的错误控制服务以及针对网络中从各模块上传/下载配置数据的配置控制服务

一个NMT从机所表现的是负责该节点的NMT功能的那部分。NMT从机由它的模块ID来唯一标识。

CANopen NMT从机状态图


CANopen NMT从机设备实现了一个状态机,每个设备在上电与内部初始化后自动进入Pre-operational状态。在该状态下,可以通过SDO对节点进行配置或者参数化(例如利用配置工具),但不允许进行PDO通讯。

NMT主机设备可以将所有节点或者单独一个设备切换至或切换出Operational状态。通过将设备切换进Stopped状态来强制停止该设备进一步的PDO和SDO通讯,该状态能够用来完成确定的应用行为。这些行为的定义属于设备profile的范畴。

在Operational状态中,所有的通讯对象都被激活。可以通过SDO访问对象字典。然而执行状态或应用状态机也许要关闭或者只读取某些应用对象同时进行(例如某个对象可能含有在执行过程中不能改变的应用程序)[吐血了 - Implementation aspects or the application state machine however may require to switch off or to read only certain application objects whilst being operational (e.g. an object may contain the application program, which cannot be changed during execution).]。

CANopen NMT协议


CANopen网络管理提供以下五项服务,它们通过命令指定符[CS - Command Specifier]来区分:
* 启动远程节点 (CS = 1),
* 停止远程节点 (CS = 2),
* 进入Pre-Operational状态 (CS = 128),
* 复位节点 (CS = 129)和
* 复位通讯(CS = 130)。

通讯对象拥有标识符 = 0还有另外两个字节组成。Node-ID定义了报文的目的地,若为零则该协议寻址所有的NMT从机。

CANopen 初始化状态


初始化状态被划分为三个子状态,以使节点能够选择进行完全复位或者部分复位。在Reset Application子状态中,特定生产商profile区和标准设备profile区的参数都设置为它们的默认值。设备在设置上电值之后自动进入Reset Communication子状态。

在Reset Communication子状态中,通讯profile的参数均被设置为它们的上电值。

而后设备进入Initializing子状态,在该子状态中执行基本的初始化。设备在进入Pre-Operational状态之前发出Boot-up对象(4.0版本)。

上电值是最后保存的参数。如果设备不支持参数保存或者如果在复位之前接收到restore_default命令(对象1011h),那么上电值是根据通讯profile和设备profile而定的默认值。

CANopen 引导协议


该协议被NMT从机在Initializing状态后用来发出节点已进入Pre-Operational状态的信号。它和错误控制协议使用相同的标识符。

在通讯复位、应用复位以及从上电恢复后都同样发送引导报文。1字节的数据域采用固定值零。


准确的翻译需要对更多相关文档的进一步阅读,译文可能要多次修改……

使用特权

评论回复
26
hyhmh| | 2008-3-25 09:04 | 只看该作者

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

曾在一产品项目中,实施CANopen协议
感触:
  1)CANopen协议文档不符合国人的阅读习惯。
  2)CANopen协议实施中,作为系统集成商的责任更加重要。
  3)实现CANopen子节点的协议要求并不像想象中那么困难。(但国外通常使用现成的CANopen软件包)
  4)CANopen协议在真正的中文出版物还很少。

使用特权

评论回复
27
haibianfeng| | 2010-6-29 10:18 | 只看该作者
19# john_light


john_light  你好 你现在还做这块么

使用特权

评论回复
28
想实习去| | 2010-9-2 18:49 | 只看该作者
19# john_light


您好,现在我正好在做CAN方面的,貌似能用到CANopen协议,但是现在对这个东西不太懂,看来好几遍那个协议,希望能和您多交流,QQ:308739799

使用特权

评论回复
29
gangqun| | 2010-9-15 12:30 | 只看该作者
我也正在在做CANopen协议这块的,初学,大家可以交流交流。
我MSN:gangqun@hotamil.com.

使用特权

评论回复
30
SkyCode| | 2010-10-16 00:14 | 只看该作者
haotie

使用特权

评论回复
31
litop| | 2010-10-25 19:37 | 只看该作者
http://item.taobao.com/item.htm?id=6323791470


USBCAN-II,还CANOPEN解析.的东东

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则