网站大量收购闲置独家精品文档,联系QQ:2885784924

现场总线控制系统(FCS)系列:Rockwell Automation DeviceNet_(6).DeviceNet通信协议.docx

现场总线控制系统(FCS)系列:Rockwell Automation DeviceNet_(6).DeviceNet通信协议.docx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE1

PAGE1

DeviceNet通信协议

1.DeviceNet概述

DeviceNet是一种基于CAN(ControllerAreaNetwork)技术的现场总线协议,由RockwellAutomation(原Allen-Bradley)开发。DeviceNet主要用于连接和通信工业自动化设备,如传感器、执行器、控制器等,实现设备之间的数据交换和控制。DeviceNet的设计旨在简化设备与控制系统之间的连接,提高系统的可靠性和灵活性,降低安装和维护成本。

1.1DeviceNet的特点

简单性:DeviceNet使用标准的CAN物理层和数据链路层,简化了网络的安装和配置。

低成本:由于使用标准的CAN技术,DeviceNet的硬件成本较低。

高可靠性:CAN技术具有良好的抗干扰能力,确保数据传输的可靠性。

灵活性:DeviceNet支持多种网络拓扑结构,如线型、星型和混合型。

开放性:DeviceNet是一个开放的标准,支持多个供应商的设备互操作。

1.2DeviceNet的应用场景

DeviceNet广泛应用于各种工业自动化场景,包括但不限于:

制造车间:连接各种传感器和执行器,实现设备状态监测和控制。

包装线:用于监控和控制包装线上的各种设备。

过程控制:在化工、制药等行业中,用于连接温度、压力等传感器和控制阀。

物流系统:用于自动化仓库中的设备通信。

2.DeviceNet网络结构

2.1物理层

DeviceNet的物理层基于ISO11898标准,使用差分信号传输,传输速率最高可达500kbps。物理层的连接方式主要有以下几种:

线型拓扑:设备通过一条主干电缆连接,适用于简单线性布局的设备。

星型拓扑:设备通过集线器连接到主干电缆,适用于复杂布局的设备。

混合型拓扑:结合线型和星型拓扑,适用于更复杂的设备布局。

2.2数据链路层

DeviceNet的数据链路层基于CAN2.0B协议,使用11位或29位的消息标识符(MessageID)来区分不同的消息类型和优先级。数据链路层的主要功能包括:

消息传输:负责数据的发送和接收。

错误检测:检测传输过程中的错误并进行纠正。

流量控制:管理网络中的数据流量,防止数据拥塞。

2.3应用层

DeviceNet的应用层定义了设备之间的通信协议和数据交换格式。主要包括以下内容:

节点地址:每个设备在网络中都有一个唯一的节点地址,范围从0到63。

对象字典:设备内部存储的数据对象集合,用于描述设备的功能和状态。

消息类型:包括显式消息、隐式消息和周期性消息。

连接管理:管理设备之间的连接状态和数据传输。

3.DeviceNet通信机制

3.1显式消息

显式消息(ExplicitMessage)是一种点对点的通信方式,用于请求和响应特定的数据。显式消息的格式包括消息头和消息数据,消息头包含源地址、目标地址和消息类型等信息。

3.1.1显式消息的发送与接收

//显式消息发送示例

voidsendExplicitMessage(uint8_tsourceAddress,uint8_tdestinationAddress,uint8_tmessageID,uint8_t*data,uint8_tlength){

//创建消息结构

CAN_MSGmsg;

msg.id=(sourceAddress8)|(destinationAddress3)|messageID;

msg.len=length;

for(inti=0;ilength;i++){

msg.data[i]=data[i];

}

//发送消息

canSendMsg(msg);

}

//显式消息接收示例

voidreceiveExplicitMessage(uint8_t*sourceAddress,uint8_t*destinationAddress,uint8_t*messageID,uint8_t*data,uint8_t*length){

//接收消息

CAN_MSGmsg;

if(canReceiveMsg(msg)){

*sourceAddress=(msg.id8)0x3F;

*destinationAddress=(msg.id3)0x3F;

*messageID=msg.id0x07;

*length=ms

您可能关注的文档

文档评论(0)

kkzhujl + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档