现场总线CANopen学习总结笔记三---基本原理和通信对象
主要包含知识点
这篇笔记主要是先记录基本原理和通信对象。
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通信参数索引02h为PDO
传输类型有
禁止时间(子索引03h)的功能相当于PDO发送过滤器,在PDO输入数据第一次变化时,无等待地直接发送该PDO数据,之后PDO输入数据再发生变化时就不会立即触发PDO发送。禁止时间可以避免PDO占用全部总线带宽,从而妨碍发送最低优先级的PDO
子索引(05h)为异步PDO传输设置一个事件计时器。
子索引06h(同步初始值)定义了同步计数器的初始值,在传输同步信息时,同步计数器不断递增以进行同步。
6.PDO通信的优化
在优化中具有决定性意义的是保留足够的总线带宽可供其他功能使用。
需要注意PDO通信的优缺点,总线负载,“浪涌”的概念,其中总线负载是指多个循环范围内的CAN总线占有率的平均值。
另外,还有一个相当重要的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
CANopen
SDO之间交换至少需要两个CAN报文
现场总线CANopen通信对 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)