基于Windows的Powerlink主从站通信.doc
《基于Windows的Powerlink主从站通信.doc》由会员分享,可在线阅读,更多相关《基于Windows的Powerlink主从站通信.doc(21页珍藏版)》请在咨信网上搜索。
基于Windows的Powerlink主从站通信 一、设计任务(要求) 二、总体方案 三、硬件原理图 四、软件框图 五、设计总结 六、 参考文献 一、设计任务(要求) 1、设计要求 两人一组,一人作为主站(MN),一人作为从站(CN),实现Windows下的Powerlink主从站通信,在两台PC的控制台分别显示 MN:姓名和学号 CN:姓名和学号 2、课程设计任务及工作量的要求 根据任务书要求,完成以下设计任务: 1. 参考学习《Powerlink实现以太网教程》相关部分,学习怎样修改openPowerlink源代码,怎样使用openConfigurator配置从站网络参数和映射参数 2. 掌握Powerlink工作原理 2.在Windows系统下安装Visual Studio 2008,编译openPowerlink开源代码 3. 利用开源配置工具openConfigurator配置网络参数和映射参数,将产生的mnobd.cdc和xap.h文件放置正确的目录下 4. 根据配置参数,修改源代码相关部分,,重新编译源代码,完成主从站通信功能,并在控制台显示各自的姓名和学号 5. 通过wireshark进行功能演示。 二、 Powerlink工作原理 现场总线由来已久,几种出现较早、应用较多的现场总线,如 CAN、deviceNet、 modBus、RS485 等,这些总线速度慢、每次传输的数据包小。随着工业自动化由低速向高 速、由低精度向高精度、由集中式控制向分布式控制的发展,对现场总线的传输速度和数据 量都提出了新的要求。于是就有很多厂家提出了基于以太网技术来实现现场总线,由此诞生 了 POWERLINK、EtherNet/IP、ModBusTCP、ProfinetRT、EtherCat、MECHATROLINK 等 这些工业实时以太网的技术。 目前高速实时现场总线种类繁多,很多厂家都在推广自己的总线协议,这些协议从性能 上可分为两类:高实时总线和低实时总线。 高实时性的总线:POWERLINK,EtherCat,MECHATROLINK。POWERLINK 实际的 实时性能最高为 100us 的循环周期,EtherCat 实际的实时性能最高为 250us 的循环周期(这 里指的是实际实时性能,而不是理论值,因为 EtherCat 的宣传资料中的性能为理论值)。 在这三种总线中 EtherCat 和 MECHATROLINK 需要用专用的 ASIC 才能实现,之所以 采用 ASIC 芯片来实现是为了能够控制市场,使他们处于有利地位。众所周知,工业自动化 行业的厂家在 2009、2010 年取得了大丰收,很多公司的业绩翻了一倍。他们不缺客户、不 愁订单,但是发愁芯片,由于很多芯片采购不到,而不得不丢掉很多客户。提供 ASIC 解决 方案的公司,目的就是通过 ASIC 来控制市场、控制竞争对手。 EtherCat 和 MECHATROLINK 只解决了数据链路层和物理层,而没有实现应用层。用 户买了 ASIC 芯片,还不得不自己来实现应用层(如 CANopen),这需要花费用户很长时间。 此外不同用户实现的应用层往往不同,这就造成同样都是基于 EtherCat 的设备,却相互不 能通信。 POWERLINK 是一个可以在普通以太网上实现的方案,无需 ASIC 芯片,用户可以在各 种平台上实现 POWERLINK,如 FPGA、ARM、x86CPU 等,只要有以太网的地方,就可以 实现 POWERLINK。 POWERLINK 公开了所有的源码,任何人都可以免费下载和使用(就像 Linux)。 POWERLINK 的源码里包含了物理层(标准以太网)、数据链路层(DLL)、应用层(CANopen) 三层完整的代码,用户只需将 POWERLINK 的程序在已有的硬件平台上编译运行,就可以 在几分钟内实现 POWERLINK。 POWERLINK 是一个易于实现的、高性能的、不被任何人垄断的、真正的互连互通的 平台。 低实时性的总线:EtherNet/IP,ModBusTCP,ProfinetRT。 这三种总线可以用普通的以太网实现,但是他们基本上是对 TCP/IP 协议的修改或补充, 没有从根本上解决实时的需求。 而 POWERLINK 完全丢掉了 TCP/IP,定义了一个精简的、实时性极高的数据链路层协 议,同时定义了 CANopen 为应用层协议。这样用户在实现了 POWERLINK 的同时,也实现 了 CANopen。 在纷繁的总线协议中,POWERLINK 将是实时以太网的未来,原因如下: 1. POWERLINK 是一项开源技术,开放性好,无需授权,无需购买。 2. POWERLINK 基于标准的以太网,无需专用的 ASIC 芯片,有以太网的地方,就可 以实现 POWERLINK,硬件平台多种多样(ARM,FPGA,DSP,X86 等),不依 赖于某一个公司。 3. POWERLINK 速度快,支持 10M/100M/1000M 的以太网。以太网技术进步, POWERLINK 的技术就会跟着进步,因为 POWERLINK 是基于标准以太网的。 4. POWERLINK 性能卓越,使用价格低廉的 FPGA(几美元)来实现 POWERLINK, 性能也能达到 100-200us 的循环周期。 5. POWERLINK 支持标准的网络设备,如交换机、HUB 等。支持所有以太网的拓扑 结构,使得布线更自由、更灵活。 2.1 POWERLINK 是 IEC 国际标准 POWERLINK 是 IEC 国际标准,同时也是中国的国家标准。 通信描述: IEC61784-2 服务和协议: IEC61158-300 IEC61158-400 IEC61158-500 IEC61158-600 设备描述: ISO15745-1 2.2 OSI 模型 OSI 是一个用于开放信息处理系统标准化的通信模型,它是当今许多通用无数据优先级 传输协议的参考模型。这个模型将数据传输的任务分为 7 层,每层(除了最底层)建立在另 一层的基础之上。 POWERLINK 是一个三层的通信网络,它规定了物理层、数据链路层和应用层。 2.3 POWERLINK 的物理层 POWERLINK 的物理层采用标准的以太网,遵循 IEEE802.3 快速以太网标准。这意味 着无论 POWERLINK 的主站还是从站,都可以运行于标准的以太网之上。这带来的好处是: 1. 只要有以太网的地方就可以实现 POWERLINK,例如你的 PC 机上可以运行 POWERLINK、一个带有以太网接口的 ARM 可以运行 POWERLINK、一片 FPGA 也可以运行 POWERLINK。 2. 以太网的技术进步,就会带来 POWERLINK 的技术进步。因为 POWERLINK 是站 在标准以太网的肩膀上,而标准的以太网是一个开放的、全民的网络,在各个领域 广泛应用,各行各业的人不断地为以太网的升级而奋斗。目前 POWERLINK 支持 10M/100M/1000M 的以太网。只需在硬件驱动程序中做小小的改动,POWERLINK 就可以支持 10G 的以太网。 3. 实现成本低。如果用户的产品以前是基于 ARM 平台,一般 ARM 芯片都会带有以 太网,这样用户无须增加任何硬件,也无需增加任何成本,就可以在产品中集成 POWERLINK,用户所付出的只是把 POWERLINK 的程序集成到应用程序中,而 POWERLINK 的源程序又是开放且免费的。 用户可以购买普通的以太网控制芯片(MAC)来实现 POWERLINK 的物理层,如果用 户想采用 FPGA 的解决方案,POWERLINK 提供开放源码的 openMAC。这是一个用 VHDL 语言实现的基于 FPGA 的 MAC,同时 POWERLINK 又提供了一个用 VHDL 语言实现的 openHUB,支持 16 个端口。如果用户的网络需要做冗余,如双网、环网等,就可以直接在 FPGA 中实现,易于实现且成本很低。此外由于基于 FPGA 的方案,从 MAC 到数据链路层 (DLL)的通信,POWERLINK 采用了 DMA,因此速度更快。 2.4 POWERLINK 的数据链路层 POWERLINK 的数据链路层:也就是 POWERLINK 的核心,主要包括如下功能: 1. 构建/解析数据桢、对数据桢定界、网络同步、数据桢收发顺序的控制。 2. 传输过程中的流量控制、差错检测、对物理层的原始数据进行数据封装等。 3. 实时通信的传输控制。 4. 网络状态机。 在 POWERLINK 网络中,至少有一个设备做为主站(MN),其他的设备做为从站(CN)。 每个从站设备都有唯一的节点号(NodeId),该节点号是用来区分网络中的设备,取值范围 为 1-239。主站设备(MN)的节点号为 240,主站的作用是为了为协调各个从站,合理分配 总线使用权,避免冲突,实现实时通信。 POWERLINK 的实时通信机制:POWERLINK 有两种通信机制,基于请求/应答模式和 基于定时主动上报模式(PRC 模式)。 2.4.1 基于请求/应答模式 该种模式主站(MN)轮询所有从站(CN)。首先主站发送 Preq 数据帧(PReqCN1)给 1 号从站,该数据帧是单播的,只有 1 号节点接收,其他节点不接收。在该数据帧中包含了 主站(MN)要发送给 1 号从站的数据。当 1 号节点收到来自主站的 Preq 数据帧,就会上报 一个 Pres 数据帧(PresCN1),该数据帧是广播的,除了主站可以接收到以外,网络中其他 任何一个从节点都能收到。主站(MN)与 1 号从节点(CN1)一来(Preq)、一往(Pres),就 完成了一次信息交互;接下来主站(MN)与 2 号从节点(CN2)的信息交互,以此类推,将 网络中所有的节点扫描一次,称为一个循环周期。假定循环周期为 200us,那么网络中的每 个设备每 200us 就有一次收取/发送数据的机会,而且不会与其他设备造成冲突。 该种模式下的性能:完成一个站的通信所需要的时间,取决于物理层的传输速度和需要 传送的数据包大小。 假定物理层为 100M 以太网,该种网络的传输速度为 12.5bytes/us,假定数据包大小为 64bytes(每个 Preq 和 Pres 数据帧最大可传输 1490bytes 的数据),那么完成一个站的通信所 需要的时间:T=Tpreq+Tgap+Tpres Tpreq:主站发送 Preq 数据帧给从站,时间长度为 64/12.5=5.12us Tpres:从站发送 Pres 数据帧给主站,时间长度为 64/12.5=5.12us Tgap:Preq 数据帧与 Pres 数据帧之间的时间间隙,约为 2us 因此完成一个站的通信,总时间长度为 12.24=5.12+2+5.12 2.4.2 PRC 模式 在基于请求-应答模式(PREQ-PRES)通信时,从节点什么时候上报自己的数据,取 决于主站什么时候发生请求(PREQ)给它。该种模式省掉了主站的 Preq 数据帧,取而代之 的是一个挨一个的 Pres。有人会问各个从站如何知道自己应该在什么时候上报数据?是否会 出现两个或多个从站同时上报数据?这样岂不是发生了冲突? 该种模式下,POWERLINK 主站在开始通信之前,会去配置从站的参数,告诉每个从 站应该在循环周期的哪一时刻上报。举个例子:假定我们有 3 个从站,主站可以通过配置, 让 1 号从站在收到 PresMN 后的第 5us 上传 PresCN1 数据帧,而 2 号从站在收到 PresMN 后 的第 15us 上传 PresCN2 数据帧,而 3 号从站在收到 PresMN 后的第 22us 上传 PresCN3 数据 帧。这样就避免了冲突。因为 POWERLINK 是基于时间槽的通信,而且 POWERLINK 支持 1588 分布式时钟协议,每个 POWERLINK 节点都有一个时钟,因此 POWERLINK 很方便实 现这种通信模式。 在该种模式下的性能:完成一个站的通信所需要的时间,取决于物理层的传输速度和需 要传送的数据包大小。 假定物理层为 100M 以太网,该种网络的传输速度为 12.5bytes/us。假定数据包大小为 64bytes(每个 Preq 和 Pres 数据帧最大可传输 1490bytes 的数据)。那么完成一个站的通信所 需要的时间 T=Tgap+Tpres Tpres:从站发送 Pres 数据帧给主站,时间长度为 64/12.5=5.12us Tgap:Preq 数据帧与 Pres 数据帧之间的时间间隙,约为 2us 因此完成一个站的通信,总时间长度为 7.12=5.12+2 这种通信比基于请求/应答模式至少能提高 30%的效率。 PRC 模式的通信过程: 1. 主站发生广播数据帧 PresMN,主站把多个从站需要的数据在该数据帧里打包,然 后以广播的方式发送出去,各个从站根据配置信息,从该数据帧中取走相应的数据。 该数据帧为标准的以太网数据帧,最大有效数据容量为 1490Bytes。 2. 从站接受到 PresMN 以后,根据主站配置的上报时间,来决定什么时候该上报 PresCN,当定时器到了上报时间,从站就以广播的方式上报 PresCN。该数据帧包 含了主站以及其他从站需要的数据信息。 3. 主站和从站是支持 PRC 模式,还是支持请求/应答模式,是由它自身的参数决定的。 可以通过参数设置,在一个周期内,让某些从节点采用 PRC 模式,而另外一些从 节点采用请求/应答模式。这种搭配使得网络容量可以灵活搭配。 2.4.3 多路复用 在一个系统中,通常有多种不同类型的设备,如有伺服驱动器、I/O、传感器、仪表等。 不同种类的设备对通信周期和控制周期的要求往往不同。假设现在有 3 种设备:伺服驱动器、 I/O、传感器。伺服的控制周期为 200us,而 I/O 的控制周期为 1ms,传感器却不定时的上传 数据。面对如此应用,POWERLINK 如何来解决? 首先解决伺服的 200us 和 I/O 的 1ms 的配置。因为两种设备需要的循环周期不同,如果 将循环周期设为 200us,伺服没有问题,可是 I/O 却会由于通信过于频繁而反应不过来;如 果将循环周期设为 1ms,那么伺服会由于控制周期太长,而达不到精度的要求。 POWERLINK 采用多路复用来解决这个问题。在这里,可以将循环周期设置为 200us, 将伺服配置成每个循环周期都参与通信,将 I/O 配置成每 N 个循环周期参与一次通信,N 是 一个参数,可以设置为任意整数(在这里 N 的值为 5)。这样就可以达到伺服的通信周期为 200us,I/O 的通信周期为 200 x 5=1ms。 如下图所示,有 11 个节点要通信,其中 1、2、3 这三个节点每个循环周期都通信;而 4、5、6、7、8、9、10、11 这 8 个节点为复用节点,这些节点每 3 个循环周期才通信一次。 这样就可以把快速设备和慢速设备经过合理配置达到系统最优。 2.4.4 异步阶段 以上提到了三种不同设备,伺服的控制周期为 200us,而 I/O 的控制周期为 1ms,传感 器却不定时的上传数据。上一节讲述了快速设备(伺服)和慢速设备(I/O)的合理配置。 接下来讲如何配置不定时上传数据的设备(传感器),这种类型的设备称为异步设备。 一个完整的 POWERLINK 周期分为两个阶段:同步阶段和异步阶段。 同步阶段用来传输周期性通信的数据;异步阶段用来传输那些非周期性的通信数据。非 周期通信数据包括:1.异步设备的通信数据,如这里所说的传感器;2.一些设备偶尔需要传 送的参数,例如在某些应用场合伺服周期性传输位置数据,但可能偶尔传输一下扭矩或者温 度数据,这些非周期性传输的数据, 就叫异步数据。这些异步数据会在通信周期的异步阶 段来传送。 从 SoC 数据帧开始到 SoA 数据帧的时间段为同步阶段,SoA 和 AsyncData 为异步阶段。 SoA 数据帧包含了请求哪个从站上报数据,而 AsyncData 数据帧为该从站上报的数据。在每 个循环周期,只能有一个从节点上报异步数据,如果有多个从节点需要异步通信,那么需要 在多个周期内完。 2.5 POWERLINK 的同步机制 POWERLINK 支持 1588 分布式时钟协议,每个循环周期的开始,主站都会广播一个 SoC 数据帧到网络上,该数据帧包含了两个重要信息:网络的绝对时间和相对时间。 绝对时间信息:年、月、日、时、分、秒、毫秒、微秒、纳秒。如下所示: 相对时间信息:从网络开始工作,到现在一共运行了多少 us。 SoC 数据帧有两个功能:时钟同步和动作同步。 时钟同步:网络中的节点需要有一个统一的网络时间 利用网络时间来同步网络中所有设备的分布式时钟,让网络中所有节点的时钟有一 个共同的基准。POWERLINK 主站(MN)在每个循环周期的开始将 SoC 数据帧广播到 网络上,该数据帧包含了网络时间信息,网上的各个从节点可以将这个时间作为统一的 网络时间。 动作同步:网络中的节点需要同时去做一件事情 在 POWERLINK 协议中有两种方法去触发一个同步的事件:1.通过从节点自己的时 钟触发;2.通过 SoC 数据帧触发。这里主要讲通过 SoC 数据帧触发同步事件的原理。 在 POWERLINK 数据链路层里,每当收到了 SoC 数据帧,会触发一个同步的回调 函数,用户可以将同步执行的程序写在该函数里,这样就可以执行同步动作。举例来说, 假设有一个运动控制器,要控制 10 台伺服做同步运动,例如需要 10 台伺服同时启动。 每个循环周期,运动控制器(作为 POWERLINK 的主站)将 10 台伺服所需要的新的位 置信息依次传给各个伺服。每个伺服收到新数据的时间是不同的,第一个和最后一个得 到位置数据的时间可能会差 100 多 us。如果收到新数据,伺服就开始启动,那么就会 出现这种情况:第一个伺服已经开始运转,而最后一个伺服还没有收到数据,这显然不 是我们想要的结果。因此我们需要一个同步信号,使所有的伺服都得到新数据以后,同 时启动。这个同步信号就是 SoC。 主站在上一个循环周期结束(即下一个循环周期开始)时广播一个 SoC 数据帧,基本 上所有的从站会同时收到这个数据帧。该信号触发一个同步回调函数或者硬件中断,来处理 同步事件。因为在 SoC 数据帧之前,每个从站都已经从主站(控制器)那里得到了新的位 置信息,因此 SoC 信号触发的同步事件中可以同时启动,运行到设定位置。 如果是星形拓扑,各个从站收到该信号的时间差取决于线缆的长度,电信号可以认为是 以光速在导线中传播,因此用户可以计算出该时间差。可近似为 1 米为 3.3ns。这个级别的 时间差基本上可以忽略。 如果你采用的是菊花链连接,那么没经过一级 hub 会有 40ns 的延迟,再加上线缆的延 迟,第一个从站和最后一个从站在接受到 SoC 信号的时间差可能会达到几百纳秒甚至微秒, 用户需要根据应用场合的需要来决定该延迟是否可以忽略,如果不可以忽略,POWERLINK 提供了测量机制,可以测出来相邻两个节点的传输延迟。用户根据这些延迟时间给各个节点 做一个补偿,从而达到各个节点在同一时刻做同步事件。 综上,介绍完了 POWERLINK 数据链路层的整个工作原理和过程。 三、 总体实现方案流程 1. 所需软件和硬件:需要准备两台电脑,一台作为主站,一台作为从站;操作系统为 Windows XP; 需要安装 VS2008 开发环境;需要安装 WinPcap 或者 Wireshark。 2. 将 POWERLINK 的源码分拷贝到要作为主站和从站的电脑上,随便选哪台电脑 做主站都可以,主站和从站上的程序有所不同。 3. 打开主站\Examples\X86\Windows\VC9\demo_pcap 下的工程,使用 VS2008 打开, 此外为了能在Windows上运行openPOWERLINK,你需要安装winpcap或wireshark 软件,因为 openPOWERLINK 将 pcaplib 作为网卡驱动程序。 4. 修改主站上的网络参数和映射参数,假定我们要通信 2 个参数,一个参数是主站发 送给从站,另一个是主站接收来自从站的数据。打开 objdict.h 文件。首先确定要把 哪 个 object 作 为 主 站 发 送 给 从 站 的 参 数 , 我 们 注 意 到 源 码 里 有 一 个 Object0X2000/01,可以将该 object 作为主站发送给从站的参数。 因此我们配置发送的网络参数和映射参数: 将 0x1801/0x01 的值设为 1,即发送数据给 1 号节点: 将 0x1A01 的参数设置为如下的值: 5. 修改主站上的源程序。打开 demo_main.c 文件,将 NODEID 改为: #define NODEID 0xF0 //=>MN,主站的 nodeid 为 240 即 16 进制的 FO 6. 定义一个变量(BYTE output8),与 0X2000/01 link 起来。 POWERLINK 实时以太网教程 59 在 main.c 中,将与 0x2000/0x01 连接的代码修改如下: 至此,我们就映射了一个 object,并把他和我们自己定义的一个变量 link 起来。 接下来我们再映射一个 object,用来接收数据。 7. 接收的网络参数和映射参数: 我们注意到源码中有索引为 0x2200 的对象字典,可以将 0x2200/02 作为接收的 objcet。 将 0x1402 作为接收 1 号节点的网络参数。将 0x1402/0x01 的值设为 1,即接收来自 1 号节点的数据。 相应的映射参数为 0x1602,将 0x1602 的参数设置为如下的值: 8. 定义一个变量(BYTE input8),与 0X2200/02 link 起来。 POWERLINK 实时以太网教程 60 在 main.c 中,在 main.c 中,将与 0x2200/0x02 连接的代码修改如下: 至此,我们映射了一个 object,并把他和我们自己定义的一个变量 link 起来。接下来 我们将 AppCbSync 修改如下,这段代码的意思是我们把主站要发给从站的数据不断的累加, 同时打印出来自从站的数据。 6.1.2 设置从站的参数 设设置置从从站站的的参参数数 设置从站的参数 1. 从站需要 2 个参数,一个参数用来接收来自主站的数据,另一个参数发送给主站。 打开 objdict.h 文件。首先确定我们要把哪个 object 作为发送给主站的参数,我们注 意到源码里有一个 Object0X6000/01,可以将该 object 作为从站发送给主站的参数。 因此我们配置发送的网络参数和映射参数: 将 0x1800/0x01 的值设为 0。 POWERLINK 实时以太网教程 61 将 0x1A00 的参数设置为如下的值: 2. 修改从站上的源程序。打开 demo_main.c 文件,将 NODEID 改为: #define NODEID 0x01 //=>从站的 nodeid 取值范围 1-239 3. 定义一个变量(BYTE output8),与 0X6000/01link 起来。 在 main.c 中,将与 0x6000/0x01 连接的代码修改如下: ObdSize=sizeof(output8); uiVarEntries=1; EplRet=EplApiLinkObject(0x6000,&output8,&uiVarEntries,&ObdSize,0x01); if(EplRet!=kEplSuccessful) { Goto ExitShutdown; } 至此,我们就映射了一个 object,并把他和我们自己定义的一个变量 link 起来。接下来 我们再映射一个 object,用来接收数据。 4. 接收的网络参数和映射参数。 我们注意到源码中有索引为 0x6200 的对象字典,可以将 006200/01 作为接收的 objcet。 POWERLINK 实时以太网教程 62 将 0x1400 作为接收来自主站的网络参数。将 0x1400/0x01 的值设为 0。 相应的映射参数为 0x1600,将 0x1600/01 的参数设置为如下的值: 5. 定义一个变量(BYTE input8),与 0X6200/01link 起来。 在 main.c 中,将与 0x6200/0x01 连接的代码修改如下: ObdSize=sizeof(input8); uiVarEntries=1; EplRet=EplApiLinkObject(0x6200,&input8,&uiVarEntries,&ObdSize,0x01); if(EplRet!=kEplSuccessful) { goto ExitShutdown; } 接下来我们将 AppCbSync 修改如下,这段代码的意思是我们把从站要发给主站的数据 不断的累加 10,同时打印出来自主站的数据。 完成上述步骤,我们就完成了主站和从站的配置。先将两台电脑用网线连接起来,接下 POWERLINK 实时以太网教程 63 来将从站先运行起来,最后再把主站运行起来。 当把主站或从站运行起来时,出现如下界面来选择使用哪个网口作为 POWERLINK 口。 在这里我使用第三个网口(MarvellYukonEthernetController),因此我输入 3,然后回车。 1. 所需软件和硬件:需要准备两台电脑,一台作为主站,一台作为从站;操作系统为 Windows XP; 需要安装 VS2008 开发环境;需要安装 WinPcap 或者 Wireshark。 2. 将 POWERLINK 的源码分别拷贝到要作为主站和从站的电脑上,随便选哪台电脑 做主站都可以,主站和从站上的程序有所不同。 3. 打开主站\Examples\X86\Windows\VC9\demo_pcap 下的工程,使用 VS2008 打开, 此外为了能在 Windows 上运行 openPOWERLINK,你需要安装 winpcap 或 wireshark 软件,因为 openPOWERLINK 将 pcaplib 作为网卡驱动程序。 用 openCONFIGURATOR 配置 Windows 主站和从站 1. 使用这种方法配置网络,从站需要一个 XDD 文件,该文件与从站的对象字典相匹 配(即与从站的 objdict.h 定义的对象字典匹配),例子中从站使用的 objdict.h 文件 在目录\ObjDicts\Api_CN 下,而相应的 XDD 文件在\ObjDicts 目录下,名称为 0000003F_openPOWERLINK_demo_CN.xdd。 2. 使用 openCONFIGURATOR 配置网络,比较简单,参考第五章第七节 5-7 使用 openCONFIGURATOR 组建 POWERLINK 网络。将生成的 monbd.cdc 和 xap.h 这两 个文件拷贝到主站源代码的 Examples\X86\Windows\VC8\demo_cfm_pcap 目录下。 3. 用 VS 打开主站 Examples\X86\Windows\VC8\demo_cfm_pcap 的工程,然后打开 demo_main.c,在 AppCbSync(void)函数中,AppProcessImageIn_g 变量的类型是 xap.h 中定义的数据结构 PI_IN 的类型,AppProcessImageOut_g 变量的类型是 xap.h 中定 义的数据结构 PI_OUT 的类型.这两个变量自动被映射到主站相应的 Object 上,使 用者可以直接使用,而无需 link 操作。注意,这里 AppProcessImageIn_g 是指主站 输出给从站的数据,而 AppProcessImageOut_g 是指主站接收的来自从站的数据。 4. 从站程序的修改:将从站 objdict.h 文件中的所有映射参数的值都设为 0,因为主站 会来配置这些参数的值。只是从站的 object 与用户自己定义的变量的 link,还需要 使用者自己来调用 EplApiLinkObject()来连接。 4.1 获得 POWERLINK 源码 从 下载 POWERLINK 源码。目前的最新版 本为 V1.7.1,下载解压后你会看到如下目录。 图 4-1 Documentation:文档的目录,其中包含了源代码中一些重要函数、数据结构的说 明,还有关于 POWERLINK 在 Linux 下如何编译的说明。 EplStack:POWERLINK 协议栈的.C 文件,这里包含了数据链路层和 CANopen 的 源码。 Include:包含了 POWERLINK 协议栈的.h 文件,这个文件夹和 EplStack 文件夹匹 配。 ObjDicts:CANopen 对象字典的源程序,用户需要根据自己要实现的设备修改对 象字典。 Edrv:因为 POWERLINK 可运行于多种不同的软件平台和硬件平台,和不同的平 台打交道,就需要有不同的驱动程序,这个文件夹包含了一些常用平台的驱动,如 ARM,8139,82573,FPGA 等平台的驱动程序,如果你想要将 POWERLINK 移植 到一个新的平台,可以参考这里的例子,修改驱动程序即可。 Examples:这里是重点,包含了一些常用平台的例子,你可以直接运行,评估 POWERLINK。如基于 Windows 的、Linux 的、FPGA 的、ARM 的。 32 4.2 POWERLINK 源码概览 图 4-2 软件架构 从下至上,软件分别分为以太网驱动模块、数据链路层模块、对象字典、SDO 模块、 网络管理 NMT 模块已经 API 模块。 4.3 POWERLINK API 接口 这个是用户的应用程序与 POWERLINK 协议栈的接口。用户实现 POWERLINK 时,不 需要修改协议栈里面的内容。因为这部分内容是标准的,如果用户修改了,可能会导致最终 的协议不遵守 POWERLINK 标准。用户根据自己需要调用 API 的一些函数。其中比较重要 的函数有如下几个: 4.3.1 AppCbEvent 这个函数是协议栈的回调函数。当协议栈内部发生状态变化、特定事件、以及一些错误 等,协议栈自动调用此函数。如果用户需要根据协议栈的状态或者事件做特殊处理,就可以 把处理程序写在这里。例如当检查到该节点从网络上脱离开,需要将该设备安全停机。对于 33 这种应用,用户可以在该回调函数中,检查网络事件,当发现有链接丢失的 event 时,就执 行一段安全停机的程序。 4.3.2 AppCbSync(void) 同步回调函数。该函数是协议栈的回调函数,当协议栈收到 SoC 数据帧,就会触发执 行该函数。因为 SoC 数据帧是广播的,网络中的所有节点基本上同时收到该数据帧,因此 网络中的所有节点会同时触发执行各自的同步回调函数。因为 SoC 是每个循环周期开始时 都会发送,因此该函数每个循环周期都会被调用。用户可以将需要周期性处理的程序写在该 回调函数中,例如周期性的把接收的新数据取走,把要发送的数据赋予新的值,或者周期性 的控制等。 4.3.3 EplApiExecNmtCommand() 用户可以使用该函数发送一些网络命令,来控制协议栈的一些状态变化,或者触发一 些事件,目前支持如下命令参数: 例如执行 EplApiExecNmtCommand(kEplNmtEventSwReset);会使协议栈进入软件 Reset 状态,使整个协议栈重新启动。具- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Windows Powerlink 主从 通信
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【pc****0】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【pc****0】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【pc****0】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【pc****0】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文