收藏 分享(赏)

POWERLINK实时以太网教程.pdf

上传人:weiwoduzun 文档编号:3580932 上传时间:2018-11-13 格式:PDF 页数:141 大小:4.17MB
下载 相关 举报
POWERLINK实时以太网教程.pdf_第1页
第1页 / 共141页
POWERLINK实时以太网教程.pdf_第2页
第2页 / 共141页
POWERLINK实时以太网教程.pdf_第3页
第3页 / 共141页
POWERLINK实时以太网教程.pdf_第4页
第4页 / 共141页
POWERLINK实时以太网教程.pdf_第5页
第5页 / 共141页
点击查看更多>>
资源描述

1、 POWERLINK 实时以太网教程 王谨秋王谨秋王谨秋王谨秋 2011.8 POWERLINK实时以太网教程 1 目目目 目 录录录 录 前前前 前 言言言 言 . 5 第一章第一章第一章第一章 现有的现有的现有的现有的 实时以太网实时以太网实时以太网实时以太网 的的的 的比较 比较比较比较 . 6 第二章第二章第二章第二章 POWERLINK 的原理和特点的原理和特点的原理和特点的原理和特点 . 8 2.1 POWERLINK是 IEC国际标准 .8 2.2 OSI模型 8 2.3 POWERLINK的物理层 .10 2.4 POWERLINK的数据链路层 .10 2.4.1 基于请求 /

2、应答模式 .11 2.4.2 PRC 模式 12 2.4.3 多路复用 . 13 2.4.4 异步阶段 . 14 2.5 POWERLINK的同步机 制 .14 2.6 POWERLINK数据帧的格式 .16 2.6.1 SoC 数据帧格式 17 2.6.2 Preq 数据帧格式 17 2.6.3 Pres 数据帧格式 18 2.6.4 SoA 数据帧格式 . 19 2.6.5 Asynd 数据帧格式 . 20 2.7 CANOPEN简介 20 2.8 XDD文件介绍 22 2.9 针对不同种类设备的 CANOPEN对象字典的规定 23 第三章第三章第三章第三章 POWERLINK 的性能及特

3、点的性能及特点的性能及特点的性能及特点 24 3.1 性能参数 .24 3.2 网络拓扑 .24 3.2.1 网络拓扑 . 24 3.2.2 节点的寻址 . 25 3.3 热插拔 .25 3.4 冗余 .26 3.4.1 多主冗余 . 26 3.4.2 双网冗余 . 27 3.4.3 环形冗余 . 28 3.5 交叉通信 .29 3.6 实时域与非实时域 .30 3.7 安全 -SAFETY31 第四章第四章第四章第四章 POWERLINK 源码介绍源码介绍源码介绍源码介绍 32 4.1 获得 POWERLINK源码 .32 4.2 POWERLINK源码概览 .33 4.3 POWERLIN

4、K API接口 33 4.3.1 AppCbEvent 33 POWERLINK实时以太网教程 2 4.3.2 AppCbSync(void) 34 4.3.3 EplApiExecNmtCommand() 34 4.3.4 对象字典的访问 . 35 4.3.5 源码中的 OD 35 4.4 编写 XDD文件 37 第五章第五章第五章第五章 网络配置网络配置网络配置网络配置 组建一个组建一个组建一个组建一个 POWERLINK 网络网络网络网络 39 5.1 从站发送配置之网络参数配置 ( 0X18XX) .40 5.2 从站发送配置之映射参数配置 ( 0X1A00) 40 5.3 从站接收配

5、置之网络参数配置 ( 0X14XX) .42 5.4 从站接收配置 之映射参数配置 ( 0X1600) .42 5.5 主站发送参数的配置过程 .44 5.6 手工组建 POWERLINK网络 .45 5.6.1 配置主站和每一个从站的网络参数和映射参数 45 5.6.2 用户自己定义一些变量 . 46 5.6.3 调用 EplApiLinkObject()将用户自定的变量和 Object 连接 47 5.6.4 在 AppCbSync(void)函数里编写自己的程序 47 5.7使用 OPENCONFIGURATOR组建 POWERLINK网络 .48 5.7.1 openCONFIGURA

6、TOR 的安 装 49 5.7.2 openCONFIGURATOR 的使用 49 第六章第六章第六章第六章 POWERLINK 的实现的实现的实现的实现 . 57 6.1 基于 WINDOWS的实现 57 6.1.1 手动配置 Windows 主站和从站 . 57 6.1.2 设置从站的参数 . 60 6.1.3 用 openCONFIGURATOR 配置 Windows 主站和从站 . 63 6.2 基于 LINUX的 POWERLINK的实现 .64 6.2.1 Linux 的内核版本和实时补丁 64 6.2.2 Linux 的 POWERLINK 主从站程序应用 64 6.2.3 以太

7、网的驱动程序 . 64 6.2.4 Linux 的 demo 64 6.2.5 Linux 的编译选项 65 6.2.6 cmake 编译 . 65 6.3 基于 FPGA的实现 71 6.3.1 基于 FPGA 的 POWERLINK 的硬件架构 . 71 6.3.2 FPGA 只作为 POWERLINK 通信使用 . 72 6.3.3 POWERLINK 和用户的应用在同一个 FPGA 上 . 73 6.3.4 基于 FPGA 的系统架构 . 73 6.4 基于 ALTERA的 FPGA的实现 .74 6.4.1 所需软件和硬件 . 74 6.4.2 FPGA 程序的编译和下载 . 74

8、6.4.3 编译 Quartus 工程 75 6.4.4 编译 nios2 工程 : . 77 6.4.5 在 Eclipse 中运行 nios 程序 . 78 6.4.6 PC 主站程序的编译 87 POWERLINK实时以太网教程 3 6.5 基于 XILLINX的 FPGA的实现 88 6.5.1 所需软件和硬件 . 88 6.5.2 参考设计 . 88 6.5.3 硬件平台 . 89 6.5.4 应用程序 . 91 6.5.5 XPS 和 SDK 开发流程 . 92 Build the FPGA design 92 将设计导出至 SDK、编译软件 . 93 6.5.6 DEMO101

9、建立 MN. 102 建立 CN 104 下载 bitstream 和 application 104 启动 demo 105 6.5.7 对 the SPI flash 编程 106 如何结合 BITSTREAM 和 APPLICATION EXECUTABLE.107 第七章第七章第七章第七章 基于基于基于基于 FPGA 的的的 的 API 说明说明说明说明 109 7.1 基于 FPGA的 API的硬件说明 109 7.2 API的 DPRAM控制器描述 .110 7.3 异步发送缓冲区 ( AP发送命令给 PCP) 113 7.3.1 初始化命令 : 113 7.3.2 AP 启动 P

10、OWERLINK 协议栈命令 : .114 7.3.3 AP 读对象字典中的 object 值 115 7.3.4 AP 发送 object 写命令给 PCP.116 7.3.5 AP 向 PCP 发送命令 ,请求 PCP 返回 PDO 的描述信息 118 7.4 异步接收缓冲区 .121 7.4.1 PCP 向 AP 发送 object 读请求 . 121 7.4.2 PCP 向 AP 发送 object 写请求 . 121 7.5 TPDO BUFFER发送 PDO缓冲区 122 7.6 RPDO BUFFER接收 PDO缓冲区 122 7.7 API相关程序文件说明 123 7.8 AP

11、与 PCP通信的流程 124 7.9 AP一侧的并行接口的示例程序 125 7.10 FPGA( POWERLINK)程序说明 127 7.11 NIOS工程介绍 .129 第八章第八章第八章第八章 POWERLINK 通信诊断通信诊断通信诊断通信诊断 . 130 8.1 所需软件 WIRESHARK简介 130 8.2 WIRESHARK使用方法 130 8.2.1 下载及安装 . 130 8.2.2 网络连接 . 130 8.2.3 运行 wireshark 131 8.2.4 wireshark 数据分析 . 132 8.2.5 对各个从节点状态的诊断 . 133 8.2.6 wires

12、hark 过滤功能 . 135 POWERLINK实时以太网教程 4 第九章第九章第九章第九章 POWERLINK 通信错误处理通信错误处理通信错误处理通信错误处理 . 137 9.1 错误处理机制 .137 9.2 POWERLINK可能出现的错误 .137 9.3 各种错误对应的对象字典中的对象 .138 附附附 附 录录录 录 . 140 POWERLINK实时以太网教程 5 前前前 前 言言言 言 该教程适用于所有对 POWERLINK感兴趣的人群 。即使以前从未接触过 POWERLINK,仔细阅读并加以实践 ,也可以很快掌握 POWERLINK。 如果对此书有建议 ,可以发送邮件到

13、jinqiu.wangbr- 关于 POWERLINK的一些资料可以到如下网站下载 http:/www.ethernet- 或 http:/www.ethernet-powerlink.org POWERLINK 的源代码可以到如下网站下载 http:/ 如需 POWERLINK的开发套件以及 ALTERA 或者 XILLINX的开发板可发邮件至 jinqiu.wangbr-,或者致电 021-54644800-819。 如果读者有问题 ,可以加入 POWERLINK技术 QQ群 151181908 本教材所附带的源代码可以到 QQ群中下载 。 该版本为第一版 ,在第二版中 会增加基于 FPG

14、A 主站的实现方案 。 POWERLINK实时以太网教程 6 第一章第一章第一章第一章 现有的现有的现有的现有的 实时以太网实时以太网实时以太网实时以太网 的的的 的比较 比较比较比较 现场总线由来已久 ,几种出现较早 、应用较多的现场总线 ,如 CAN、 deviceNet、modBus、 RS485 等,这些总线速度慢 、每次传输的数据包小 。随着工业自动化由低速向高速、由低精度向高精度 、由集中式控制向分布式控制的发展 ,对现场总线的传输速度和数据量都提出了新的要求 。于是就有很多厂家提出了基于以太网技术来实现现场总线 ,由此 诞生了 POWERLINK、 EtherNet/IP、 Mo

15、dBusTCP、 ProfinetRT、 EtherCat、 MECHATROLINK 等这些 工业实时以太网的技术 。 目前 高速实时现场总线种类繁多 ,很多厂家都在推广自己的 总线协议 ,这些协议从性能上可分为两类 :高实时总线和低实时总线 。 高实时性的总线 : POWERLINK, EtherCat, MECHATROLINK。 POWERLINK 实际的实时性能 最高为 100us的循环周期 , EtherCat实际的实时性能最高为 250us的循环周期 (这里指的 是实际实时性能 ,而不是理论值 ,因为 EtherCat的宣传资料中的性能为理论值 )。 在这三种总线中 EtherC

16、at 和 MECHATROLINK 需要用专用的 ASIC 才能实现 ,之所以采用 ASIC芯片来实现是为了能够控制市场 ,使他们处于有利地位 。众所周知 ,工业自动化行业的厂家在 2009、 2010年取得了大丰收 ,很多公司的业绩翻了一倍 。他们不缺客户 、不愁订单 ,但是发愁芯片 ,由于很多芯片采购不到 ,而不得不丢掉很多客户 。提供 ASIC解决方案的公司 ,目的就是通过 ASIC来控制市场 、控制竞争对手 。 EtherCat 和 MECHATROLINK 只解决了数据链路层和物理层 ,而没有实现应用层 。用户买了 ASIC芯片 ,还不得不自己来实现应用层 (如 CANopen),这

17、需要花费用户很长时间 。此外不同用户实现的应用层往往不同 ,这就造成同样都是基于 EtherCat 的设备 ,却相互不能通信 。 POWERLINK是一个可以在普通以太网上实现的方案 ,无需 ASIC芯片 ,用户可以在各种平台上实现 POWERLINK,如 FPGA、 ARM、 x86CPU等,只要有以太网的地方 ,就可以实现 POWERLINK。 POWERLINK 公开了所有的源码 ,任何人都可以免费下载和使用 (就像 Linux)。POWERLINK的源码里包含了物理层 (标准以太网 )、 数据链路层 ( DLL)、 应用层 ( CANopen)三层 完整的代码 ,用户只需将 POWER

18、LINK 的程序在已有的硬件平台上编译运行 ,就可以POWERLINK实时以太网教程 7 在几分钟内实现 POWERLINK。 POWERLINK 是一个易于实现的 、高性能的 、不被任何人 垄断 的、真正的互连互通的平台 。 低实时性的总线 : EtherNet/IP, ModBusTCP, ProfinetRT。 这三种总线可以用普通的以太网实现 ,但是他们基本上是对 TCP/IP协议的修改或补充 ,没有从根本上解决实时的需求 。 而 POWERLINK完全丢掉了 TCP/IP,定义了一个精简的 、实时性极高的数据链路层协议,同时定义了 CANopen为应用层协议 。这样用户在实现了 PO

19、WERLINK的同时 ,也实现了 CANopen。 在纷繁的总线协议中 , POWERLINK将是实时以太网的未来 ,原因如下 : 1. POWERLINK是一项开源技术 ,开放性好 ,无需授权 ,无需购买 。 2. POWERLINK基于标准的以太网 ,无需专用的 ASIC芯片 ,有以太网的地方 ,就可以实现 POWERLINK,硬件平台多种多样 ( ARM, FPGA, DSP, X86 等), 不依赖于某一个公司 。 3. POWERLINK 速度快 ,支持 10M/100M/1000M 的以太网 。以太网技术进步 ,POWERLINK的技 术就会跟着进步 ,因为 POWERLINK是基

20、于标准以太网的 。 4. POWERLINK性能卓越 ,使用价格低廉的 FPGA(几美元 )来实现 POWERLINK,性能也能达到 100-200us的循环周期 。 5. POWERLINK支持标准的网络设备 ,如交换机 、 HUB等。支持所有以太网的拓扑结构 ,使得布线更自由 、更灵活 。 POWERLINK实时以太网教程 8 第二章第二章第二章第二章 POWERLINK 的原理和特点的原理和特点的原理和特点的原理和特点 2.1 POWERLINK是是是是IEC国际标准国际标准国际标准国际标准 POWERLINK是 IEC国际标准 ,同时也是中国的国家标准 。 通信描述通信描述通信描述通信

21、描述 : IEC61784-2 服务和协议服务和协议服务和协议服务和协议 : IEC61158-300 IEC61158-400 IEC61158-500 IEC61158-600 设备描述设备描述设备描述设备描述 : ISO15745-1 2.2 OSI模型模型模型模型 OSI是一个用于开放信息处理系统标准化的通信模型 ,它是当今许多通用无数据优先级传输协议的参考模型 。这个模型将数据传输的任务分为 7层,每层 (除了最底层 )建立在 另一层的 基础之上 。 POWERLINK实时以太网教程 9 图 2-1 POWERLINK是一个三层的通信网络 ,它规定了物理层 、数据链路层和应用层 。

22、图 2-2 POWERLINK实时以太网教程 10 2.3 POWERLINK的物理层的物理层的物理层的物理层 POWERLINK 的物理层采用标准的以太网 ,遵循 IEEE802.3 快速以太网 标准 。这意味着无论 POWERLINK的主站还是从站 ,都可以运行于标准的以太网之上 。这带来的好处是 : 1. 只要有以太网的地方就可以实现 POWERLINK,例如你的 PC 机上可以运行POWERLINK、一个带有以太网接口的 ARM可以运行 POWERLINK、一片 FPGA也可以运行 POWERLINK。 2. 以太网的技术进步 ,就会带来 POWERLINK的技术进步 。因为 POWE

23、RLINK是站在标准以太网的肩膀上 ,而标准的以太网是一个开放的 、全民的网络 ,在各个领域广泛应用 ,各行各业的人 不断地为以太网的升级而奋斗 。目前 POWERLINK 支持10M/100M/1000M的以太网 。只需在硬件驱动程序中做小小的改动 , POWERLINK就可以支持 10G的以太网 。 3. 实现成本低 。如果 用户 的产品以前是基于 ARM平台 ,一般 ARM芯片都会带有以太网 ,这样 用户 无须增加任何硬件 ,也无需增加任何成本 ,就可以在产品中集成POWERLINK,用户 所付出的只是把 POWERLINK 的程序集成到应用程序中 ,而POWERLINK的源程序又是开放

24、且免费的 。 用户 可以 购买普通的以太网控制芯片 ( MAC)来实现 POWERLINK的物理层 ,如果 用户想采用 FPGA的解决方案 , POWERLINK提供开放源码的 openMAC。这是一个用 VHDL语言实现的基于 FPGA 的 MAC,同时 POWERLINK 又提供了一个用 VHDL 语言实现的openHUB,支持 16个端口 。如果 用户 的网络需要做冗余 ,如双网 、环网 等,就可以直接在FPGA中实现 ,易于实现 且成本很低 。此外由于基于 FPGA的方案 ,从 MAC到数据链路层( DLL)的通信 , POWERLINK采用了 DMA,因此速度更快 。 2.4 POW

25、ERLINK的数据链路层的数据链路层的数据链路层的数据链路层 POWERLINK的数据链路层 :也就是 POWERLINK的核心 ,主要包括如下功能 : 1. 构建 /解析 数据桢 、对数据桢 定界 、网络 同步 、数据桢 收发顺序的控制 。 2. 传输过程中的流量控制 、差错检测 、对物理层的原始数据进行数据封装等 。 3. 实时通信的传输控制 。 4. 网络状态机 。 在 POWERLINK网络中 ,至少有一个设备做为主站 ( MN), 其他的设备做为从站 (CN)。POWERLINK实时以太网教程 11 每个从站设备都有唯一的节点号 ( NodeId), 该节点号是用来区分网络中的设备

26、,取值范围为 1-239。主站设备 ( MN)的节点号为 240,主站的作用是为了为协调各个从站 ,合理分配总线使用 权,避免冲突 ,实现实时通信 。 POWERLINK的实时通信机制 : POWERLINK有两种通信机制 ,基于请求 /应答模式和基于定时主动上报模式 ( PRC模式 )。 2.4.1 基于请求基于请求基于请求基于请求 /应答模式应答模式应答模式应答模式 图 2-3 该种模式主站 ( MN)轮询所有从站 ( CN)。 首先主站发送 Preq数据帧 ( PReqCN1)给1号从站 ,该数据帧是单播的 ,只有 1号节点接收 ,其他节点不接收 。在该数据帧中包含了主站 ( MN)要发

27、送给 1号从站的数据 。当 1号节点收到来自主站的 Preq数据帧 ,就会上报一个 Pres 数据帧 ( PresCN1),该数据帧是 广播的 ,除了主站可以接收到以外 ,网络中其他任何一个从节点都能收到 。主站 ( MN)与 1号从节点 (CN1)一来 ( Preq)、一往 ( Pres),就完成了一次信息交互 ;接下来 主站 ( MN)与 2 号从节点 (CN2)的信息交互 ,以此类推 ,将网络中所有的节点扫描一次 ,称为一个循环周期 。假定循环周期为 200us,那么网络中的每个设备每 200us就有一次收取 /发送数据的机会 ,而且不会与其他设备造成冲突 。 该种模式下的性能 :完成一

28、个站的通信所需要的时间 ,取决于物理层的传输速度和 需要传送 的数 据包大小 。 假定物理层为 100M 以太网 ,该种网络的传输速度为 12.5bytes/us,假定数据包大小为64bytes(每个 Preq和 Pres数据帧最大可传输 1490bytes的数据 ),那么完成一个站的通信所需要的时间 : T=Tpreq+Tgap+Tpres Tpreq:主站发送 Preq数据帧给从站 ,时间长度 为 64/12.5=5.12us POWERLINK实时以太网教程 12 Tpres:从站发送 Pres数据帧给主站 ,时间 长度 为 64/12.5=5.12us Tgap: Preq数据帧与 P

29、res数据帧之间的时间间隙 ,约为 2us 因此完成一个站的通信 ,总时间长度为 12.24=5.12+2+5.12 2.4.2 PRC 模式模式模式模式 图 2-4 在基于请求 -应答模式 ( PREQ-PRES)通信时 ,从节点什么时候上报自己的数据 ,取决于主站什么时候发生请求 ( PREQ)给它 。该种模式省掉了主站的 Preq数据帧 ,取而代之的是一个挨一个的 Pres。有人会问各个从站如何知道自己应该在什么 时候 上报数据 ?是否会出现两个或多个从站 同时 上报数据 ?这样岂不是发生了冲突 ? 该种模式下 , POWERLINK 主站在开始通信之前 ,会去配置从站的参 数,告诉每个

30、从站应该在循环周期的 哪一时刻上报 。举个例子 :假定我们有 3个从站 ,主站可以通过配置 ,让 1号从站在收到 PresMN后的第 5us上传 PresCN1数据帧 ,而 2号从站在收到 PresMN后的第 15us上传 PresCN2数据帧 ,而 3号从站在收到 PresMN后的第 22us上传 PresCN3数据帧。这样就避免了冲突 。因为 POWERLINK是基于时间槽的通信 ,而且 POWERLINK 支持1588分布式时钟协议 ,每个 POWERLINK节点都有一个时钟 ,因此 POWERLINK很方便实现这种通信模式 。 在该种模式下的性 能:完成一个站的通信所需要的时间 ,取决

31、于物理层的传输速度和 需要传送 的数据包大小 。 假定物理层为 100M 以太网 ,该种网络的传输速度为 12.5bytes/us。假定数据包大小为64bytes(每个 Preq和 Pres数据帧最大可传输 1490bytes的数据 )。 那么完成一个站的通信所需要的时间 T=Tgap+Tpres POWERLINK实时以太网教程 13 Tpres:从站发送 Pres数据帧给主站 ,时间长度为 64/12.5=5.12us Tgap: Preq数据帧与 Pres数据帧之间的时间间隙 ,约为 2us 因此完成一个站的通信 ,总时间长度为 7.12=5.12+2 这种通信比基于请求 /应答模式至少

32、能提高 30%的效率 。 PRC模式 的通信过程 : 1. 主站发生广播数据帧 PresMN,主站把多个从站需要的数据在该数据帧里 打包 ,然后以广播的方式发送出去 ,各个从站根据配置信息 ,从该数据帧中取走相应的数据 。该数据帧为标准的以太网数据帧 ,最大有效数据容量为 1490Bytes。 2. 从站接受到 PresMN 以后 ,根据主站配置的上报时间 ,来决定什么时候 该上报PresCN,当定时器到了上报时间 ,从站就 以广播的方式 上报 PresCN。该数据帧包含了主站以及其他从站需要的数据信息 。 3. 主站和从站是支 持 PRC模式 ,还是支持请求 /应答模式 ,是由 它自身的参数

33、决定的 。可以通过参数设置 ,在一个周期内 ,让某些从节点采用 PRC 模式 ,而另外 一些从节点采用请求 /应答 模式 。这种搭配使得网络容量可以灵活搭配 。 2.4.3 多路复用多路复用多路复用多路复用 在一个系统中 ,通常有多种不同类型的设备 ,如有伺服驱动器 、 I/O、传感器 、仪表等 。不同种类的设备对通信周期和控制周期的要求往往 不同 。假设 现在有 3种设备 :伺服驱动器 、I/O、传感器 。伺服的控制周期为 200us,而 I/O的控制周期为 1ms,传感器却不定时的上传数据 。面对如此应用 , POWERLINK如何 来解决 ? 首先解决伺服的 200us和 I/O的 1m

34、s的配置 。因为两 种设备需要的循环周期不同 ,如果将循环周期设为 200us,伺服没有问题 ,可是 I/O 却会由于通信过于频繁而反应不过来 ;如果将 循环周期设为 1ms,那么伺服会由于控制周期太长 ,而达不到精度的要求 。 POWERLINK采用多路复用来解决这个问题 。在这里 ,可以将循环周期设置为 200us,将伺服 配置成 每个循环周期都参与通信 ,将 I/O配置成 每 N个循环周期参与一次通信 , N是一个参数 ,可以设置为任意整数 (在这里 N 的值为 5)。 这样就可以达到 伺服的通信周期为200us, I/O的通信周期为 200 x 5=1ms。 如下图所示 ,有 11个节

35、点要通信 ,其中 1、 2、 3这三个节点每个循环周期都通信 ;而4、 5、 6、 7、 8、 9、 10、 11这 8个节点 为复用节点 ,这些节点每 3个循环周期才通信一次 。 这样就可以把快速设备和慢速设备经过合理配置达到系统最优 。 POWERLINK实时以太网教程 14 图 2-5 2.4.4 异步阶段异步阶段异步阶段异步阶段 以上提到 了三种不同设备 ,伺服的控制周期为 200us,而 I/O 的控制周期为 1ms,传感器却不定时的上传数据 。上一节讲述了快速 设备 (伺服 )和慢速 设备 ( I/O)的合理配置 。接下来讲如何配置不定时 上传数据的设备 (传感器 ), 这种类型的

36、设备 称为异步设备 。 一个完整的 POWERLINK周期分为两个阶段 :同步阶段和异步阶段 。 同步阶段 用来传输周期性通信的数据 ;异步阶段 用来传输那些非周期性的通信数据 。非周期通信数据包括 : 1.异步设备 的通信数据 ,如这里所说的传感器 ; 2.一些设备偶尔需要传送的参数 ,例如 在某些应用场合伺服周期性传输位置数据 ,但可能偶尔传输一下扭矩或者温度数据 ,这些非周期性传输的数据 , 就叫异步数据 。这些异步数据会在通信周期的异步阶段来传送 。 从 SoC数据帧开 始到 SoA数据帧的时间段为同步阶段 , SoA和 AsyncData为异步阶段 。SoA数据帧包含了请求哪个从站上

37、报数据 ,而 AsyncData数据帧为该从站上报的数据 。在每个循环周期 ,只能有一个从节点上报异步数据 ,如果有多个从节点需要异步通信 ,那么需要在多个周期内完 。 2.5 POWERLINK的同步机制的同步机制的同步机制的同步机制 POWERLINK支持 1588分布式时钟协议 ,每个循环周期的开始 ,主站都会广播一个 SoC数据帧到网络上 ,该数据帧包含了两个重要信息 :网络的绝对时间和相对时间 。 POWERLINK实时以太网教程 15 绝对时间信息 :年、月、日、时、分、秒、毫秒 、微秒 、纳秒。如下所示 : 相对时间信息 :从网络开始工作 ,到现在一共运行了多少 us。 SoC数

38、据帧有两个功能 :时钟同步和动作同步 。 时钟同步 :网络中的节点需要有一个统一的网络时间 利用网络时间来同步网络中所有设备的分布式时钟 ,让网络中所有节点的时钟有一个共同的基准 。 POWERLINK主站 ( MN)在每个循环周期的开始将 SoC数据帧广播到网络上 ,该数据帧包含了网络时间信息 ,网上的各个从节点可以将这个时间作为统一的网络时间 。 动作同步 :网络中的节点需要同时去做一件事情 在 POWERLINK协议中有两种方法去触发一个 同步的事件 : 1.通过从节点自己的时钟触发 ;2.通过 SoC数据帧触发 。这里主要讲通过 SoC数据帧触发同步事件的原理 。 在 POWERLIN

39、K 数据链路层里 ,每当 收到了 SoC 数据帧 ,会触发一个 同步的回调函数 ,用户可以将同步执行的程序写 在该函数里 ,这样就可以执行同步动作 。举例来说 ,假设 有一个运动控制器 ,要控制 10台伺服做 同步运动 ,例如需要 10台伺服同时启动 。每个循环周期 ,运动控制器 (作为 POWERLINK的主站 )将 10台伺服所需要的新的位置信息依次 传给各个伺服 。每个伺服收到新数据的时间是不同的 ,第一个和最后一个得到位置数据的时间可能会差 100 多 us。如果收到新数据 ,伺服就开始启动 ,那么就会出现这种情况 :第一个伺服已经开始运转 ,而最后一个伺服还没有收到数据 ,这显然不是

40、我们想要的结果 。因此我们需要一个同步信号 ,使所有的伺服都得到新数据以后 ,同时启动 。这个同步信号就是 SoC。 图 2-6 主站在上一个循环周期结束 (即下一个循环周期开始 )时广播一个 SoC 数据帧 ,基本上所有的从站会同时收到这个数据帧 。该信号触发一个同步回调函数或者硬件中断 ,来处理MN SoC 伺服 2 SoC SoC SoC 伺服 1 伺服 10 POWERLINK实时以太网教程 16 同步事件 。因为在 SoC 数据帧 之前 ,每个从站都已经从主站 (控制器 )那里得到了新的位置信息 ,因此 SoC信号触发的同步事件中可以同时启动 ,运行到设定位置 。 如果是星形拓扑 ,

41、各个从站收到该信号的时间差取决于线缆的长度 ,电信号可以认为是以光速在导线中传播 ,因此用户可以计算出该时间差 。可近似为 1 米为 3.3ns。这个级别的时间差基本上可以忽略 。 如果你采用的是菊花链连接 ,那么没经过一级 hub会有 40ns 的延迟 ,再加上线缆的延迟,第一个从站和最后一个从站在接受到 SoC信号的时间差可能会达到几百纳秒甚至微秒 ,用户 需要根据应用场合的需要来决定 该延迟是否可 以忽略 ,如果不可以忽略 , POWERLINK提供了测量机制 ,可以测出来相邻两个节点的传输延迟 。用户根据这些延迟时间给各个节点做一个补偿 ,从而达到各个节点在同一时刻做同步事件 。 综上

42、 ,介绍完了 POWERLINK 数据链路层的整个工作原理和过程 。下面介绍各种数据帧的格式 。 2.6 POWERLINK数据帧的格式数据帧的格式数据帧的格式数据帧的格式 POWERLINK通信一共有 5中数据帧 : SoC、 Preq、 Pres、 SoA、 AsyncData。 图 2-7 POWERLINK的数据桢嵌在 标准的以太网数据桢的数据段 中。因此 POWERLINK数据包具有标 准的以太网数据帧的帧头和帧尾 。如上图从第 14字节到第 n字节为 POWERLINK数据帧信息 ,而 0至 13字节是标准以太网的帧头 。 POWERLINK有五种不同的 数据帧 。 POWERLI

43、NK实时以太网教程 17 2.6.1 SoC 数据帧格式数据帧格式数据帧格式数据帧格式 图 2-8 2.6.2 Preq 数据帧格式数据帧格式数据帧格式数据帧格式 图 2-9 POWERLINK实时以太网教程 18 2.6.3 Pres 数据帧格式数据帧格式数据帧格式数据帧格式 图 2-10 图 2-11 POWERLINK实时以太网教程 19 2.6.4 SoA 数据帧格式数据帧格式数据帧格式数据帧格式 图 2-12 POWERLINK实时以太网教程 20 2.6.5 Asynd 数据帧格式数据帧格式数据帧格式数据帧格式 图 2-13 2.7 CANopen简介简介简介简介 POWERLIN

44、K的应用层遵循 CANopen标准 。 CANopen是一个 应用层协议 。他为应用程序提供了一个统一的接口 ,使得 不同的设备与应用程序之间有统一的访问方式 。 CANopen协议有三个主要部分 : PDO, SDO和对象字典 OD。 PDO :过程数据对象 可以理解为在通信过程中 ,需要周期性 、实时传输的数据 。 SDO :服务数据对象 可以理解为在通信过程中 ,非周期性传输 、实时性要求不高的数据 ,例如网络配置命令 ,偶尔要传输的数据等 。 OD :对象字典 什么是对象字典 ?对象字典就是很多对象的集合 。那么 什么又是 对象呢 ?一个对象可以理解为一个参数 。假设有 一个设 备,该

45、设备有很多参数 。 CANopen 通过给每个参数一个编号来区分参数 ,这个编号就叫做索引 ( Index),这个索引用一个 16bits的数字 表示 。如果这个参数又包含了很多子参数 ,那么 CANopen 又会给这些子参数分别分配一个子索引( SubIndex),用一个 8bits的数字来表示 。因此一个索引和一个子索引就能明确的标示出一个参数 。 POWERLINK实时以太网教程 21 一个参数除了具有索引和子索引信息外 ,还应该有参数的数据类型 ( 8bits还是 16bits?有符号还是无符号 ?), 还需要有访问类型 (可读的还是可写的 ,还是可读写的 ?), 还有默认值等 等。因

46、此一个参数需要有很多属性来描述他 ,所以一个参数也就成了一个对象 object,所有对象的集合就构成了对象字典 ( object dictionary)。 在一次实际应用中 ,需要周期性传输的对象 ,就叫过程数据对象 -PDO ; 非周期性传输的对象 ,就叫服务数据对象 -SDO。 对于 CANopen的设备 ,通信实际上就是把自己的一些 Oject发送出去 , 并从其他节点接收数据存入对象字典中的 Object。 首先我们讲述如何发送数据 : 一个设备要向外发送数据 ,他首先需要知道发送哪些数据 (即 Object,在这里做如下约定: index/subIndex 来确定一个 Object)

47、。有可能主站需要该设备的 2100/01, 2100/02, 2100/03这三个参数 ,而某个从站需要他的 3200/01, 3200/02, 3200/03这三个参数 .该设备 如何把这六个参数发送出去 ?方法有两个 : 1. 组一个数据包 ,在该数据包中包含索引 、子索引 、目标地址 、参数值 等信息 。这样接收方可以根据这些信息 ,很方便的解析收到的数据包 。这种通信方式的问题在于 ,如果该设备有 6个参数要传输 ,那么他每次传输一个 ,一共需要传输 6次,系统的效率太低 。如果这些参数偶尔被传输 ( SDO), 那么用户可以接受 。如果这些参数被周期性传输 ( PDO), 那么这 6个参数需要 6个循环周期才能传完 ,而且每次都要重复传输索引和子索引的信息 ,造成了浪费 。是否可以将这 6个参数打成一个数据包一次发送出去 ?答案是肯定的 。 2. 我们可以把 6个参数打包在一起 ,然后以广播的方式发送出去 ,接收方根据自己的需要从数据包中取出自己想要的数据 。假设组成的 数据包如下图所示 ,在数据包里依次存放 2100/01, 2100/02, 2100/03, 3200/01, 3200/02, 3200/03 这 6 个参数的值。 接下来

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报