欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    基于Windows的Powerlink主从站通信.doc

    • 资源ID:2395322       资源大小:790KB        全文页数:21页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于Windows的Powerlink主从站通信.doc

    基于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-300IEC61158-400IEC61158-500IEC61158-600设备描述:ISO15745-12.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+TpresTpreq:主站发送 Preq 数据帧给从站,时间长度为 64/12.5=5.12usTpres:从站发送 Pres 数据帧给主站,时间长度为 64/12.5=5.12usTgap:Preq 数据帧与 Pres 数据帧之间的时间间隙,约为 2us因此完成一个站的通信,总时间长度为 12.24=5.12+2+5.122.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+TpresTpres:从站发送 Pres 数据帧给主站,时间长度为 64/12.5=5.12usTgap: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. 打开主站ExamplesX86WindowsVC9demo_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.打开主站ExamplesX86WindowsVC9demo_pcap 下的工程,使用 VS2008 打开,此外为了能在 Windows 上运行 openPOWERLINK,你需要安装 winpcap 或 wireshark软件,因为 openPOWERLINK 将 pcaplib 作为网卡驱动程序。用 openCONFIGURATOR 配置 Windows 主站和从站1.使用这种方法配置网络,从站需要一个 XDD 文件,该文件与从站的对象字典相匹配(即与从站的 objdict.h 定义的对象字典匹配),例子中从站使用的 objdict.h 文件在目录ObjDictsApi_CN 下,而相应的 XDD 文件在ObjDicts 目录下,名称为0000003F_openPOWERLINK_demo_CN.xdd。2.使用 openCONFIGURATOR 配置网络,比较简单,参考第五章第七节 5-7 使用openCONFIGURATOR 组建 POWERLINK 网络。将生成的 monbd.cdc 和 xap.h 这两个文件拷贝到主站源代码的 ExamplesX86WindowsVC8demo_cfm_pcap 目录下。3.用 VS 打开主站 ExamplesX86WindowsVC8demo_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-1Documentation:文档的目录,其中包含了源代码中一些重要函数、数据结构的说明,还有关于 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 的。324.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状态,使整个协议栈重新启动。具

    注意事项

    本文(基于Windows的Powerlink主从站通信.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开