tag 标签: canopen 通信对象 can源代码

相关博文
  • 热度 17
    2011-12-2 14:23
    2527 次阅读|
    0 个评论
    第四章 , 应用层 ,为重点章。   主要包含知识点  基本原理、通信对象、对象字典、网络管理系统、CAN标识符分配、节点ID分配 。 这篇笔记主要是先记录基本原理和通信对象。 4.1 基本原理 为了便于统一观察CANopen设备,我们引入一种基本的设备模型,其包含:通信单元、应用过程、对象字典。 通信单元由CAN收发器、CAN控制器和CANopen协议栈组成,协议栈中包括通信对象(PDO和SDO)和状态机。 对象字典是应用单元与通信单元之间的接口,实际上是设备的所有参数列表。 CANopen协议中定义了3种不同类型的通信关系:分别为主机-从机模型、客户端-服务端模型以及生产者-消费者模型。 主机-从机模型仅用于网络管理(NMT),每组主机-从机模型都需要一个CAN标识符。 客户端-服务器描述的是两个设备之间的通信关系。需要两个CAN标识符,只用于SDO通信。 生产者-消费者模型描述一个生产者和一个或多个消费者的一对多通信关系,只需要一个CAN标识符。   4.2 通信对象 CANopen应用层详细描述了各种不同类型的通信对象(COB),分4种类型: 过程数据对象(PDO) 服务数据对象(SDO) 预定义对象 网络管理对象   过程数据对象(PDO): 1.通信参数 通信参数用来描述PDO特性。通信参数按照定义好的地址保存在设备对象,用户可以通过服务数据对象对通信参数进行访问。 通信参数记录有5个可用的子条目:COB标识符、传输类型、禁止时间、事件计数器和同步初始值。前两项为必选。   2. PDO的CAN标识符 COB标识符(COB-ID)位于通信参数的子索引01h上,COB标识符是一个32位值,0~10位是CAN标准帧标识符。只有在预操作状态下才能对PDO的COB标识符进行访问。   3. PDO链路 如果使用生产者-消费者模型在不可编程的NMT从机之间直接进行数据交换,用户还必须为这些从机配置适当的CAN标识符,使生产者的CAN标识符和消费者的CAN标识符一致,这种方法叫做PDO链路。   4. PDO 的通信类型  PDO的通信类型有事件驱动、远程请求或轮询、同步传输。 事件驱动是当输入值发生改变的时候,数据立即被发送出去。 PDO通信参数索引02h为PDO 传输类型,其定义了触发TPDO传输或处理收到的RPDO的方法。 传输类型有 0 , 1~240 , 241~251 ,252 ,253 ,254、255 。书中的表4.2 PDO传输类型 “ × ” 表示选中的类型,而并非是不支持的意思。      5.禁止时间和事件计时器 禁止时间(子索引03h)的功能相当于PDO发送过滤器,在PDO输入数据第一次变化时,无等待地直接发送该PDO数据,之后PDO输入数据再发生变化时就不会立即触发PDO发送。禁止时间可以避免PDO占用全部总线带宽,从而妨碍发送最低优先级的PDO 。 子索引(05h)为异步PDO传输设置一个事件计时器。 子索引06h(同步初始值)定义了同步计数器的初始值,在传输同步信息时,同步计数器不断递增以进行同步。   6. PDO通信的优化 在优化中具有决定性意义的是保留足够的总线带宽可供其他功能使用。 需要注意PDO通信的优缺点,总线负载,“浪涌”的概念,其中总线负载是指多个循环范围内的CAN总线占有率的平均值。 另外,还有一个相当重要的PDO通信 参数---PDO映射参数。PDO映射参数包含指向PDO需要发送的过程数据的指针(利用索引和子索引表示)。那么说明索引与子索引的组合就是一个指针,应该可以这样理解。 PDO映射参数的子索引00h表示的是映射对象的数量。 所有映射过程参数的最大长度都不能超过8字节,分为静态PDO映射、可变PDO映射、动态PDO映射。其中静态PDO无法修改,可变PDO可以修改,不过要遵守修改方法。 而动态PDO映射是指设备处于操作状态时,对其进行PDO配置。   7. 复用PDO  MPDO融合了PDO和SDO的主要特性,其指定了地址(索引和子索引)的过程数据将通过一个独有的CAN消息以高速广播的方式传播。 (11.28) 其中有两个寻址方式,一个是源模式寻址,一个是目标模式寻址。主要应用领域一是通过传输过程数据地址实现传输任意数量的数据,无需设置PDO。二是群发消息。 优点:MPDO映射记录子索引值为255,而普通PDO在0~64之间。 缺点:需要更多的带宽。   总结一个:PDO是用来传输实时数据。   4.2.2 服务数据对象SDO CANopen 设备为用户提供了一种访问内部设备数据的标准途径,设备由一种固定的结构(对象字典)管理。对象字典的条目可以通过服务数据对象(SDO)来访问,由此需要成对的SDO服务器和客户端。SDO之间的数据交换通常都是由SDO客户端发起的,这好比是对象字典是在一间房子里面的管家,SDO服务器是门禁系统,SDO客户端是邮递员,当有邮递员来的时候,会发起门铃以告诉门禁要来送信(数据)。 SDO之间交换至少需要两个CAN报文才能实现,而且两个CAN报文的CAN标识符不能一样。一个CAN标识符为节点地址(有服务器的设备)+1536(600h)的CAN报文用于确定的协议信息。一个CAN标识符为节点地址(有服务器的设备)+1408(580h)的CAN报文来应答。 SDO传输有三个类型:加速SDO传输、分段SDO传输、块传输。 加速SDO传输适用于:传输数据不超过4字节,所以整个传输过程只需要2条CAN报文。传输效率为0.0625~0.25。 分段SDO传输适用于:超过4字节的传输数据。传输效率为0.218~0.432。 为了弥补这一不足,引入一种扩展SDO传输方式,效率更高,速度更快,传输量更大------块传输。其中块传输进行写操作和读操作有所不同,不过两者都要求有较高的缓冲能力,否则会发生溢出。在传输发生溢出时,写操作和读操作可以不需要重新发新之前发送过的块段,而是重新安排块大小以适合传输。块传输的效率为0.142~0.836。     4.2.3同步 在通过网络进行通信的应用中,发送和接收之间必须相互协调和同步。CANopen便引入同步对象。同步对象是指不含数据字节或只含有一个数据字节的CAN报文。 同步对象的CAN标识符为80h,用户可通过“循环周期”和“同步窗口长度”来对同步机制进行参数设置。循环周期是指同步对象通过总线发送的这段时间。同步PDO必须在同步对象发送完毕之后的同步时间窗口范围内发送。 同步对象只适用于已经工作在同步模式的PDO。如果只将发送方的TPDO配置成同步传输,且把接收方的RPDO定义为事件驱动,可以大大改变时间特性。 如果使用了同步计数器,还可以在PDO通信参数中配置同步初始值。   4.2.4 发送设备错误信号 CANopen 网络设备中出现的错误大致分为两类:一是通信错误,二是应用错误。其中紧急报文由标准化机制发送。紧急报文包含以下信息:紧急错误代码、索引1001h(错误寄存器)和协议或制造商定义信息。紧急错误代码中有不同的代码值,代表不同的错误。     广州虹科科技有限公司提供CANopen接口和CANopen源代码,了解更多有关CANopen信息,请联系我们: 广州虹科电子 http://www.hkaco.com  索取更多详细资料 陈工 020-38743030;3874 3032;3874 4528;38744538    cqy@hkaco.com  QQ:353987010