Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3121600
  • 博文数量: 396
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4209
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-04 13:04
文章分类

全部博文(396)

文章存档

2022年(1)

2021年(2)

2020年(8)

2019年(24)

2018年(135)

2017年(158)

2016年(68)

我的朋友

分类: 嵌入式

2017-04-05 10:39:36

从今天开始学习CANopen的DS301通讯规范,踏上研究CANopen的征程。

        翻开文档目录,主要讲解了定义和缩写、模型、物理层、数据链路层、以及应用层以及实现CANopen的一些建议,那么从最基本的看起。

        前面的跳过直接看第五章定义和缩写,其中

        ARQ:自动重复请求

        CAN:控制器现场局域网

        COB:通讯对象,CAN网络中的传输单元,最大有2048个通讯单元,这里至的是11位的ID.

        LLC:逻辑链路控制

        MAC:媒体介入控制

        NMT:网络管理

        PDO:过程数据对象

        RPDO:接收PDO

        TPDO:发送PDO

        STNC:同步对象

        基本的缩写就是这么多了,如果以后还有的再另外说明。

        第六章讲了几个模型,包括参考模型、设备模型以及通信模型。

      (1)CANopen既然属于应用层协议,其主要目的就是把应用层按照一定逻辑划分为不同的服务对象。

      (2)设备模型包括通讯对象、对象字典以及应用对象一个完整的CANopen设备模型可以用下图来描述:



      其中对于一个设备最重要的描述就是对象字典,规定了网络中一系列的接口,通过16bit的索引值进行索引,如下图所示:


      对象字典,简而言之,就是包含所有对象的参数包括简单的数据类型char ,int,float,string……,由简单的数据类型组成的复杂数据类型以及制造商制定的数据类型与设备参数等。

      有了这些对象的定义,就可以把一些配置参数放到对象字典中去了,canopen采用了两级索引的方式,第一级16bit可以对所有的入口进行寻址,对于特定的入口采用8bit子索引的方式,比如去索引char、int、float等,用于访问具体对象。

      (3)通信模型

       Canopen中不同对象以及服务是怎么通信的呢?DS103协议规定的通信模型支持同步方式以及异步方式。所谓同步方式就是使用SYNC同步对象,主站周期定时的广播发送SYNC对象,从设备在特定的时间内给出响应,如果从站没有响应说明从站出现异常。这个时间参数可通过SDO修改,优先级仅次于NMT,不携带任何数据。异步模式就是可以任意时间传输的消息。

       主站和从站通信采取的模型有哪些呢?

       归纳起来主要有四种:

       ①非应答方式。顾名思义,有问无答,属于不可靠的通信方式。

       ②应答方式。主机发送数据请求,从站收到后进行应答,这是最常见也是大部分串行通讯广泛采用的通讯方式。

       ③服务器/客户端方式。这个模型中采取了应答方式,不同的是主站和从站都可以上传数据。

       ④生产者/消费者Pull/Push模型。这个模型就更具有通用性了,有一个生产者,可以有多个消费者,适用于实际控制系统局域网。其中Push模型可以理解为推挤模型,把生产者仓库生产的产品推向市场——所有消费者都是可以收到的,这个属于生产者的主动行为,属于推广型产品,做一个比喻,比如小米手机,自己设计了产品再向市场推广。Pull模型可以理解为拉进模型,生产者根据市场上的要求进行生产,生产以后把产品发送给虽有消费者,比如客户按一定需求定制的产品,比如政府定制采购等。

阅读(1335) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~