微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > DeviceNet总线应用层协议的实现

DeviceNet总线应用层协议的实现

时间:05-09 来源:互联网 点击:

1 DeviceNet简介

  DeviceNet(设备网)是20世纪90年代中期发展起来的一种基于CAN技术的开放型,低成本、高性能的通信网络,目前已成为底层现场总线标准之一。在DeviceNet现场总线体系中属于设备级的总线协议,在协议的分层结构中,它只包括ISO开放系统七层模型结构中三层,即物理层、数据链路层和应用层。

  DeviceNet是基于CAN总线实现的现场总线协议,因此它的许多特性完全沿袭于CAN,是一种无冲突的载波侦听总线协议。这样的协议在载波侦听方面与以太网是一样的,它的特别之处是:当总线上的多个节点在侦听到总线空闲时,同时向总线发送数据。

  在CAN总线中,被传送的每一帧数据的优先级是由位于帧头的标识来决定,因此它们首先发送的是各自的标识数据。此时,只要有一个节点发送了位数据“0”,那么总线上的所有节点监听到的总线状态就是“0”;相反,只有当同时发送数据的节点所发送的位数据为“1”时,总线的状态才为“1”。因此,当某个节点侦听到网络空闲,开始发送标识数据以后,如果此节点在发送标识数据段的过程中,侦听到的总线状态与它自身所发送的数据位不一致,则此节点会认为有其他节点也在发送数据,总线处于竞争状态,而且其他节点的发送数据具有更高的优先级,最终此节点停止发送数据,节点返回至总线监听状态。

  在目前的CAN2.0版本中,标识数据可以是11位或29位,DeviceNet只支持11位的标识,能够产生2032种不同的标识。在总线中,为了保证在并发情况下数据传输的一致性,不同的节点所发送数据的标识是不同的,这样才不会发生同时有多个节点传输各自的整个数据帧而产生冲突的情况。

  DeviceNet协议制定规范来确定每个DeviceNet节点数据帧标识的分配,其中对于应用极为普遍的M/S网络,DeviceNet协议制定了一套预先定义好的CAN数据帧的标识分配方案。

2 DeviceNet应用层协议

  DeviceNet的应用层协议是用面向对象的方法来进行描述。它对协议本身所应完成功能进行了抽象和定义,把协议功能划分为多个模块,每个模块抽象出它所具有的属性、完成的任务和与其他模块的接口,然后把这个模块对象化。DeviceNet应用层协议的对象模型如图1所示:整个协议的结构是由对象为基本组成单元;对象之间通过数据交换相互联系。图中用对象之间的连线来表示这些联系,下面对这些对象的功能作简要介绍。非连接通讯对象是用于处理以本设备为目的地址的非连接数据包,它是这个设备与外部设备建立连接通讯的起始点。连接通讯对象的功能与非连接通讯对象的功能相对应,是完成对连接数据包的处理。路由对象对从上述2个通讯对象传来的数据包,根据数据包所指示的目的对象地址或此数据包所完成的功能,把收到的数据分发到相应的对象。数据汇集对象把本设备所需传输的数据集合在一起,组成本设备预先定义的数据格式以便传输;而对于收到的数据,按照一定的格式,抽取相应的数据发送给指定的对象。参数对象、设备身份对象和DeviceNet对象是对设备中的诸多参数的归类、封装,完成的功能比较简单。应用对象是针对具体设备完成复杂功能的对象,例如在DeviceNet的协议规范中,除了定义了基本的模拟量和数字量应用对象外,对于软启动器有软启动应用对象,对于位置控制器有位置控制器应用对象等,而且像这样定义的特定应用设备的对象还会随着DeviceNet设备的发展而不断增多。

3 DeviceNet应用层协议实现

  在实际的DeviceNet产品应用中,目前都是M/S结构的协议实现,而且应用中最为普遍的是运用对CAN的标识进行预先定义分配的方式来实现DeviceNet网络。以下介绍DeviceNet协议的实现。Redstation是DeviceNet的从设备,是一种智能开关设备,功能较为简单,整个设备的应用层对象由4个数字量输入和2个数字量输出组成,通过预定义CAN标识来完成数据帧的传送。

3.1 硬件部分

  此设备的硬件部分主要由MCS51单片机8031,CAN控制器SJA1000,8 kb动态存储器6264,64kb EPROM27512,CAN总线驱动器82c51以及相应的外围电路组成,其原理图如图2所示。实际电路中还必须有相应的锁存器、电源保护电路、看门狗电路和设置节点地址及波特率的拨码开关等电路单元。

3.2 应用层协议部分

  DeviceNet协议中,应用层协议的实现是通过编制程序来完成。此设备是基于单片机系统的,在实现过程中采用单片机的C语言。

DeviceNet应用层协议是通过面向对象的方式加以描述的,其中对于协议中的各个对象都详细定义了它们的属性、数据类型等基本信息;而且通过事件触发方式来具体定义了各个对象的行为:因此在实现过程中,完全可以按照面向对

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top