基于Windows的Powerlink主从站通信Word格式文档下载.docx
- 文档编号:20600799
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:23
- 大小:34.96KB
基于Windows的Powerlink主从站通信Word格式文档下载.docx
《基于Windows的Powerlink主从站通信Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于Windows的Powerlink主从站通信Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
行业的厂家在
2009、2010
年取得了大丰收,很多公司的业绩翻了一倍。
他们不缺客户、不
愁订单,但是发愁芯片,由于很多芯片采购不到,而不得不丢掉很多客户。
提供
解决
方案的公司,目的就是通过
来控制市场、控制竞争对手。
只解决了数据链路层和物理层,而没有实现应用层。
用
户买了
芯片,还不得不自己来实现应用层(如
CANopen),这需要花费用户很长时间。
此外不同用户实现的应用层往往不同,这就造成同样都是基于
的设备,却相互不
能通信。
是一个可以在普通以太网上实现的方案,无需
芯片,用户可以在各
种平台上实现
POWERLINK,如
FPGA、ARM、x86CPU
等,只要有以太网的地方,就可以
实现
POWERLINK。
公开了所有的源码,任何人都可以免费下载和使用(就像
Linux)。
的源码里包含了物理层(标准以太网)、数据链路层(DLL)、应用层(CANopen)
三层完整的代码,用户只需将
的程序在已有的硬件平台上编译运行,就可以
在几分钟内实现
是一个易于实现的、高性能的、不被任何人垄断的、真正的互连互通的
平台。
低实时性的总线:
EtherNet/IP,ModBusTCP,ProfinetRT。
这三种总线可以用普通的以太网实现,但是他们基本上是对
TCP/IP
协议的修改或补充,
没有从根本上解决实时的需求。
而
完全丢掉了
TCP/IP,定义了一个精简的、实时性极高的数据链路层协
议,同时定义了
CANopen
为应用层协议。
这样用户在实现了
的同时,也实现
CANopen。
在纷繁的总线协议中,POWERLINK
将是实时以太网的未来,原因如下:
1.POWERLINK
是一项开源技术,开放性好,无需授权,无需购买。
2.POWERLINK
基于标准的以太网,无需专用的
芯片,有以太网的地方,就可
以实现
POWERLINK,硬件平台多种多样(ARM,FPGA,DSP,X86
等),不依
赖于某一个公司。
3.POWERLINK
速度快,支持
10M/100M/1000M
的以太网。
以太网技术进步,
的技术就会跟着进步,因为
是基于标准以太网的。
4.POWERLINK
性能卓越,使用价格低廉的
FPGA(几美元)来实现
POWERLINK,
性能也能达到
100-200us
的循环周期。
5.POWERLINK
支持标准的网络设备,如交换机、HUB
等。
支持所有以太网的拓扑
结构,使得布线更自由、更灵活。
2.1
是
IEC
国际标准
国际标准,同时也是中国的国家标准。
通信描述:
IEC61784-2
服务和协议:
IEC61158-300
IEC61158-400
IEC61158-500
IEC61158-600
设备描述:
ISO15745-1
2.2
OSI
模型
是一个用于开放信息处理系统标准化的通信模型,它是当今许多通用无数据优先级
传输协议的参考模型。
这个模型将数据传输的任务分为
7
层,每层(除了最底层)建立在另
一层的基础之上。
是一个三层的通信网络,它规定了物理层、数据链路层和应用层。
2.3
的物理层
的物理层采用标准的以太网,遵循
IEEE802.3
快速以太网标准。
这意味
着无论
的主站还是从站,都可以运行于标准的以太网之上。
这带来的好处是:
1.只要有以太网的地方就可以实现
POWERLINK,例如你的
PC
机上可以运行
POWERLINK、一个带有以太网接口的
ARM
可以运行
POWERLINK、一片
FPGA
也可以运行
2.以太网的技术进步,就会带来
的技术进步。
因为
是站
在标准以太网的肩膀上,而标准的以太网是一个开放的、全民的网络,在各个领域
广泛应用,各行各业的人不断地为以太网的升级而奋斗。
目前
支持
只需在硬件驱动程序中做小小的改动,POWERLINK
就可以支持
10G
3.实现成本低。
如果用户的产品以前是基于
平台,一般
芯片都会带有以
太网,这样用户无须增加任何硬件,也无需增加任何成本,就可以在产品中集成
POWERLINK,用户所付出的只是把
的程序集成到应用程序中,而
的源程序又是开放且免费的。
用户可以购买普通的以太网控制芯片(MAC)来实现
的物理层,如果用
户想采用
FPGA
的解决方案,POWERLINK
提供开放源码的
openMAC。
这是一个用
VHDL
语言实现的基于
的
MAC,同时
又提供了一个用
VHDL
语言实现的
openHUB,支持
16
个端口。
如果用户的网络需要做冗余,如双网、环网等,就可以直接在
中实现,易于实现且成本很低。
此外由于基于
的方案,从
MAC
到数据链路层
(DLL)的通信,POWERLINK
采用了
DMA,因此速度更快。
2.4
的数据链路层
的数据链路层:
也就是
的核心,主要包括如下功能:
1.构建/解析数据桢、对数据桢定界、网络同步、数据桢收发顺序的控制。
2.传输过程中的流量控制、差错检测、对物理层的原始数据进行数据封装等。
3.实时通信的传输控制。
4.网络状态机。
在
网络中,至少有一个设备做为主站(MN),其他的设备做为从站(CN)。
每个从站设备都有唯一的节点号(NodeId),该节点号是用来区分网络中的设备,取值范围
为
1-239。
主站设备(MN)的节点号为
240,主站的作用是为了为协调各个从站,合理分配
总线使用权,避免冲突,实现实时通信。
的实时通信机制:
有两种通信机制,基于请求/应答模式和
基于定时主动上报模式(PRC
模式)。
2.4.1
基于请求/应答模式
该种模式主站(MN)轮询所有从站(CN)。
首先主站发送
Preq
数据帧(PReqCN1)给
1
号从站,该数据帧是单播的,只有
号节点接收,其他节点不接收。
在该数据帧中包含了
主站(MN)要发送给
号从站的数据。
当
号节点收到来自主站的
数据帧,就会上报
一个
Pres
数据帧(PresCN1),该数据帧是广播的,除了主站可以接收到以外,网络中其他
任何一个从节点都能收到。
主站(MN)与
号从节点(CN1)一来(Preq)、一往(Pres),就
完成了一次信息交互;
接下来主站(MN)与
2
号从节点(CN2)的信息交互,以此类推,将
网络中所有的节点扫描一次,称为一个循环周期。
假定循环周期为
200us,那么网络中的每
个设备每
200us
就有一次收取/发送数据的机会,而且不会与其他设备造成冲突。
该种模式下的性能:
完成一个站的通信所需要的时间,取决于物理层的传输速度和需要
传送的数据包大小。
假定物理层为
100M
以太网,该种网络的传输速度为
12.5bytes/us,假定数据包大小为
64bytes(每个
数据帧最大可传输
1490bytes
的数据),那么完成一个站的通信所
需要的时间:
T=Tpreq+Tgap+Tpres
Tpreq:
主站发送
数据帧给从站,时间长度为
64/12.5=5.12us
Tpres:
从站发送
数据帧给主站,时间长度为
Tgap:
数据帧与
数据帧之间的时间间隙,约为
2us
因此完成一个站的通信,总时间长度为
12.24=5.12+2+5.12
2.4.2
PRC
模式
在基于请求-应答模式(PREQ-PRES)通信时,从节点什么时候上报自己的数据,取
决于主站什么时候发生请求(PREQ)给它。
该种模式省掉了主站的
数据帧,取而代之
的是一个挨一个的
Pres。
有人会问各个从站如何知道自己应该在什么时候上报数据?
是否会
出现两个或多个从站同时上报数据?
这样岂不是发生了冲突?
该种模式下,POWERLINK
主站在开始通信之前,会去配置从站的参数,告诉每个从
站应该在循环周期的哪一时刻上报。
举个例子:
假定我们有
3
个从站,主站可以通过配置,
让
号从站在收到
PresMN
后的第
5us
上传
PresCN1
数据帧,而
后
的第
15us
PresCN2
22us
PresCN3
数据
帧。
这样就避免了冲突。
是基于时间槽的通信,而且
1588
分布式时钟协议,每个
节点都有一个时钟,因此
很方便实
现这种通信模式。
在该种模式下的性能:
完成一个站的通信所需要的时间,取决于物理层的传输速度和需
要传送的数据包大小。
12.5bytes/us。
假定数据包大小为
的数据)。
那么完成一个站的通信所
需要的时间
T=Tgap+Tpres
7.12=5.12+2
这种通信比基于请求/应答模式至少能提高
30%的效率。
模式的通信过程:
1.主站发生广播数据帧
PresMN,主站把多个从站需要的数据在该数据帧里打包,然
后以广播的方式发送出去,各个从站根据配置信息,从该数据帧中取走相应的数据。
该数据帧为标准的以太网数据帧,最大有效数据容量为
1490Bytes。
2.从站接受到
以后,根据主站配置的上报时间,来决定什么时候该上报
PresCN,当定时器到了上报时间,从站就以广播的方式上报
PresCN。
该数据帧包
含了主站以及其他从站需要的数据信息。
3.主站和从站是支持
模式,还是支持请求/应答模式,是由它自身的参数决定的。
可以通过参数设置,在一个周期内,让某些从节点采用
模式,而另外一些从
节点采用请求/应答模式。
这种搭配使得网络容量可以灵活搭配。
2.4.3
多路复用
在一个系统中,通常有多种不同类型的设备,如有伺服驱动器、I/O、传感器、仪表等。
不同种类的设备对通信周期和控制周期的要求往往不同。
假设现在有
种设备:
伺服驱动器、
I/O、传感器。
伺服的控制周期为
200us,而
I/O
的控制周期为
1ms,传感器却不定时的上传
数据。
面对如此应用,POWERLINK
如何来解决?
首先解决伺服的
1ms
的配置。
因为两种设备需要的循环周期不同,如果
将循环周期设为
200us,伺服没有问题,可是
却会由于通信过于频繁而反应不过来;
如
果将循环周期设为
1ms,那么伺服会由于控制周期太长,而达不到精度的要求。
采用多路复用来解决这个问题。
在这里,可以将循环周期设置为
200us,
将伺服配置成每个循环周期都参与通信,将
配置成每
N
个循环周期参与一次通信,N
是
一个参数,可以设置为任意整数(在这里
的值为
5)。
这样就可以达到伺服的通信周期为
200us,I/O
的通信周期为
200
x
5=1ms。
如下图所示,有
11
个节点要通信,其中
1、2、3
这三个节点每个循环周期都通信;
而
4、5、6、7、8、9、10、11
这
8
个节点为复用节点,这些节点每
个循环周期才通信一次。
这样就可以把快速设备和慢速设备经过合理配置达到系统最优。
2.4.4
异步阶段
以上提到了三种不同设备,伺服的控制周期为
1ms,传感
器却不定时的上传数据。
上一节讲述了快速设备(伺服)和慢速设备(I/O)的合理配置。
接下来讲如何配置不定时上传数据的设备(传感器),这种类型的设备称为异步设备。
一个完整的
周期分为两个阶段:
同步阶段和异步阶段。
同步阶段用来传输周期性通信的数据;
异步阶段用来传输那些非周期性的通信数据。
非
周期通信数据包括:
1.异步设备的通信数据,如这里所说的传感器;
2.一些设备偶尔需要传
送的参数,例如在某些应用场合伺服周期性传输位置数据,但可能偶尔传输一下扭矩或者温
度数据,这些非周期性传输的数据,
就叫异步数据。
这些异步数据会在通信周期的异步阶
段来传送。
从
SoC
数据帧开始到
SoA
数据帧的时间段为同步阶段,SoA
AsyncData
为异步阶段。
数据帧包含了请求哪个从站上报数据,而
数据帧为该从站上报的数据。
在每
个循环周期,只能有一个从节点上报异步数据,如果有多个从节点需要异步通信,那么需要
在多个周期内完。
2.5
的同步机制
支持
分布式时钟协议,每个循环周期的开始,主站都会广播一个
SoC
数据帧到网络上,该数据帧包含了两个重要信息:
网络的绝对时间和相对时间。
绝对时间信息:
年、月、日、时、分、秒、毫秒、微秒、纳秒。
如下所示:
相对时间信息:
从网络开始工作,到现在一共运行了多少
us。
数据帧有两个功能:
时钟同步和动作同步。
时钟同步:
网络中的节点需要有一个统一的网络时间
利用网络时间来同步网络中所有设备的分布式时钟,让网络中所有节点的时钟有一
个共同的基准。
主站(MN)在每个循环周期的开始将
数据帧广播到
网络上,该数据帧包含了网络时间信息,网上的各个从节点可以将这个时间作为统一的
网络时间。
动作同步:
网络中的节点需要同时去做一件事情
协议中有两种方法去触发一个同步的事件:
1.通过从节点自己的时
钟触发;
2.通过
数据帧触发。
这里主要讲通过
数据帧触发同步事件的原理。
数据链路层里,每当收到了
数据帧,会触发一个同步的回调
函数,用户可以将同步执行的程序写在该函数里,这样就可以执行同步动作。
举例来说,
假设有一个运动控制器,要控制
10
台伺服做同步运动,例如需要
台伺服同时启动。
每个循环周期,运动控制器(作为
的主站)将
台伺服所需要的新的位
置信息依次传给各个伺服。
每个伺服收到新数据的时间是不同的,第一个和最后一个得
到位置数据的时间可能会差
100
多
如果收到新数据,伺服就开始启动,那么就会
出现这种情况:
第一个伺服已经开始运转,而最后一个伺服还没有收到数据,这显然不
是我们想要的结果。
因此我们需要一个同步信号,使所有的伺服都得到新数据以后,同
时启动。
这个同步信号就是
SoC。
主站在上一个循环周期结束(即下一个循环周期开始)时广播一个
数据帧,基本
上所有的从站会同时收到这个数据帧。
该信号触发一个同步回调函数或者硬件中断,来处理
同步事件。
因为在
数据帧之前,每个从站都已经从主站(控制器)那里得到了新的位
置信息,因此
信号触发的同步事件中可以同时启动,运行到设定位置。
如果是星形拓扑,各个从站收到该信号的时间差取决于线缆的长度,电信号可以认为是
以光速在导线中传播,因此用户可以计算出该时间差。
可近似为
米为
3.3ns。
这个级别的
时间差基本上可以忽略。
如果你采用的是菊花链连接,那么没经过一级
hub
会有
40ns
的延迟,再加上线缆的延
迟,第一个从站和最后一个从站在接受到
信号的时间差可能会达到几百纳秒甚至微秒,
用户需要根据应用场合的需要来决定该延迟是否可以忽略,如果不可以忽略,POWERLINK
提供了测量机制,可以测出来相邻两个节点的传输延迟。
用户根据这些延迟时间给各个节点
做一个补偿,从而达到各个节点在同一时刻做同步事件。
综上,介绍完了
数据链路层的整个工作原理和过程。
三、总体实现方案流程
1.所需软件和硬件:
需要准备两台电脑,一台作为主站,一台作为从站;
操作系统为
WindowsXP;
需要安装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改为:
#defineNODEID0xF0//=>
MN,主站的nodeid为240即16进制的FO
6.定义一个变量(BYTEoutput8),与0X2000/01link起来。
POWERLINK实时以太网教程
59
在main.c中,将与0x2000/0x01连接的代码修改如下:
至此,我们就映射了一个object,并把他和我们自己定义的一个变量link起来。
接下来我们再映射一个object,用来接收数据。
7.接收的网络参数和映射参数:
我们注意到源码中有索引为0x2200的对象字典,可以将0x2200/02作为接收的objcet。
将0x1402作为接收1号节点的网络参数。
将0x1402/0x01的值设为1,即接收来自1
号节点的数据。
相应的映射参数为0x1602,将0x1602的参数设置为如下的值:
8.定义一个变量(BYTEinput8),与0X2200/02link起来。
60
在main.c中,在main.c中,将与0x2200/0x02连接的代码修改如下:
至此,我们映射了一个object,并把他和我们自己定义的一个变量link起来。
接下来
我们将AppCbSync修改如下,这段代码的意思是我们把主站要发给从站的数据不断的累加,
同时打印出来自从站的数据。
6.1.2设置从站的参数设设置置从从站站的的参参数数设置从站的参数
1.从站需要2个参数,一个参数用来接收来自主站的数据,另一个参数发送给主站。
首先确定我们要把哪个object作为发送给主站的参数,我们注
意到源码里有一个Object0X6000/01,可以将该object作为从站发送给主站的参数。
将0x1800/0x01的值设为0。
61
将0x1A00的参数设置为如下的值:
2.修改从站上的源程序。
打
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Windows Powerlink 主从 通信