一种实现Powerlink工业实时以太网通讯的主/从站卡的设计方法转让专利

申请号 : CN201810473629.6

文献号 : CN108833241B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 文长明文可项曦文储成君尹若嵬

申请人 : 中工科安科技有限公司文长明文可

摘要 :

本发明公开了一种实现Powerlink工业实时以太网通讯的主/从站卡的设计方法。所述主从/站卡能配置成Powerlink工业实时以太网通讯主站卡或者从站卡。主/从站卡在设计时,在FPGA内部构建Powerlink协议栈的内核层和MAC层,还构建CAL驱动,CAL驱动与内核层连接。主/从站卡使用时,把金手指插入上位机主板CAL母座中,上位机运行CAL接口驱动、Powerlink协议栈的用户层和应用程序。本发明通过在Powerlink协议栈内部设置高速串行差分信号CAL接口,在保证百兆以上高速率传输的同时,又能保证信号的稳定性,提高了通讯速率,缩短了循环周期,从而提高了通讯的实时性。

权利要求 :

1.一种实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其特征在于,设计Powerlink协议栈用户层,所述用户层包括控制器一、对象字典、中断产生器一、过程数据对象模块、服务数据对象模块、CAL接口一;

设计主/从站卡,所述主/从站卡包括Powerlink工业实时以太网通讯IP核,所述IP核包括内核层和MAC层,所述内核层包括CAL接口二、中断产生器二、同步数据缓存模块、异步数据缓存模块、控制器二;所述CAL接口一和所述CAL接口二构成CAL接口通讯;其中,所述用户层和所述内核层之间的接口被称作会话抽象层即CAL,所述CAL接口一对应的接口类型为PCIe interface,所述CAL接口二对应的接口类型为PCIe_to_EPL;所述用户层运行在管理设备的CPU上,所述IP核运行在FPGA上;

其中,所述主/从站卡设计为主站卡时,所述用户层和所述主/从站卡满足以下特征:

所述中断产生器一依据所述中断产生器二的触发产生中断,由此形成中断时序,所述中断时序中相邻两个中断的时间为一个Powerlink周期,所述Powerlink周期包括同步处理时间、异步处理时间和空闲时间;

所述控制器一接收一个Powerlink周期的控制信息集,所述控制信息集控制与所述主站相连的至少一个从站,所述控制信息集包括与所述至少一个从站相对应的至少一个控制信息;所述控制器一在接收所述中断之后,首先在所述同步处理时间内将所述控制信息中的需要同步处理的数据发送至所述过程数据对象模块,在所述异步处理时间内将所述控制信息中需要异步处理的数据发送至所述服务数据对象模块,而在空闲时间内不做处理;

所述对象字典依据CANopen协议辅助所述过程数据对象模块建立与所述同步数据缓存模块之间的同步数据通道,辅助所述服务数据对象模块建立与所述异步数据缓存模块之间的异步数据通道;

所述过程数据对象模块通过CAL接口依据所述同步数据通道将需要同步处理的数据发送至所述同步数据缓存模块,所述服务数据对象模块通过所述CAL接口依据所述异步数据通道将需要异步处理的数据发送至所述异步数据缓存模块;

所述控制器二按照Powerlink协议完成以下数据组帧:先在所述同步时间内把需要同步处理的数据组成Powerlink数据帧一,并将所述Powerlink数据帧一发送至所述MAC层,后在所述异步时间内把需要异步处理的数据组成Powerlink数据帧二,并将所述Powerlink数据帧二发送至所述MAC层;

所述中断产生器二在所述控制器二完成所述数据组帧后,且在当前Powerlink周期结束时触发所述中断产生器一。

2.如权利要求1所述的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其特征在于,在所述同步时间内,所述控制器二按照Powerlink协议把从所述MAC层接收的数据解帧出同步应答信息,并发送给所述同步数据缓存模块供所述控制器一读取;在所述异步时间内,所述控制器二按照Powerlink协议把从所述MAC层接收的数据解帧出异步应答信息,并发送给所述异步数据缓存模块供所述控制器一读取。

3.如权利要求1所述的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其特征在于,所述用户层还包括网络状态机,所述内核层还包括数据链路状态机、事件寄存器;

所述网络状态机用于管理Powerlink工业实时以太网的通讯状态,主站搜寻到至少一个从站且相应从站反馈应答信息时为网络活跃状态,所述通讯状态在网络活跃状态时,Powerlink工业实时以太网被激活;

所述数据链路状态机用于定义所述内核层的不同数据处理状态,使所述控制器二在不同的数据处理状态时处理相应的数据;

所述事件寄存器用于根据所述网络状态机和所述数据链路状态机的不同状态,记录相应事件并存储。

4.如权利要求1所述的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其特征在于,设有所述用户层的管理设备和设有所述IP核的主站卡构成主站的核心部件,所述主站在通讯时的通讯方法为:所述管理设备上应用程序的控制信息会依次通过用户层、CAL接口一、CAL接口二、内核层、MAC层、Powerlink网络接口输出到与从站连接的工控设备,实现对所述工控设备的控制。

5.如权利要求4所述的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其特征在于,在Powerlink通讯轮询阶段,所述从站反馈应答信息给所述主站。

6.一种实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其特征在于,设计Powerlink协议栈用户层,所述用户层包括控制器一、对象字典、中断产生器一、过程数据对象模块、服务数据对象模块、CAL接口一;

设计主/从站卡,所述主/从站卡包括Powerlink工业实时以太网通讯IP核,所述IP核包括内核层和MAC层,所述内核层包括CAL接口二、中断产生器二、同步数据缓存模块、异步数据缓存模块、控制器二;所述CAL接口一和所述CAL接口二构成CAL接口通讯;其中,所述用户层和所述内核层之间的接口被称作会话抽象层即CAL,所述CAL接口一对应的接口类型为PCIe interface,所述CAL接口二对应的接口类型为PCIe_to_EPL;所述用户层运行在管理设备的CPU上,所述IP核运行在FPGA上;

其中,所述主/从站卡设计为从站卡时,所述用户层和所述主/从站卡满足以下特征:

所述MAC层先接收来自主站的Powerlink同步数据触发帧Soc后,触发所述中断产生器二产生中断触发信息;所述中断产生器一依据所述中断产生器二的中断触发信号产生中断,所述中断代表一个Powerlink周期开始;所述控制器一根据所述中断触发同步数据通道,所述同步数据通道为:所述过程数据对象模块在所述对象字典依据CANopen协议的辅助下,建立的与所述同步数据缓存模块之间的通道;

所述MAC层再接收来自主站的Powerlink同步数据,所述控制器二对所述同步数据依照Powerlink协议进行解码提取需要同步传输的Powerlink数据帧;所述同步数据缓存模块将所述需要同步传输的Powerlink数据帧,通过CAL接口依据所述同步数据通道发送至所述过程数据对象模块,供所述控制器一调取;

所述MAC层之后接收来自主站的Powerlink异步数据触发帧Soa,所述控制器二根据所述Powerlink异步数据触发帧Soa触发异步数据通道,所述异步数据通道为:所述服务数据对象模块在所述对象字典依据CANopen协议的辅助下,建立的与所述异步数据缓存模块之间的通道;

所述MAC层再接收来自主站的Powerlink异步数据,所述控制器二对所述异步数据依照Powerlink协议进行解码提取需要异步传输的Powerlink数据帧;所述异步数据缓存模块将所述需要异步传输的Powerlink数据帧,通过所述CAL接口依据所述异步数据通道发送至所述服务数据对象模块,供所述控制器一调取。

7.如权利要求6所述的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其特征在于,在所述同步时间内,所述控制器一接收同步传输的Powerlink数据帧后按照Powerlink协议发出同步应答信息,并发送给所述同步数据缓存模块供所述控制器二读取,所述控制器二跟Powerlink协议规定对所述同步应答信息编码成同步应答帧,由所述MAC层发送;在所述异步时间内,所述控制器一接收异步传输的Powerlink数据帧后,按照Powerlink协议发出异步应答信息,并发送给所述异步数据缓存模块供所述控制器二读取,所述控制器二跟Powerlink协议规定对所述异步应答信息编码成异步应答帧,由所述MAC层发送。

8.如权利要求6所述的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其特征在于,设有所述用户层的工控设备和设有所述IP核的从站卡构成从站的核心部件,所述从站在通讯时的通讯方法为:主站传递的控制信息会依次通过从站卡的Powerlink网络接口、MAC层、内核层、CAL接口二、CAL接口一、用户层,使工控设备最终按照接收到的控制信息执行指定动作。

9.如权利要求8所述的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其特征在于,在Powerlink通讯轮询阶段,所述工控设备反馈应答信息给管理设备。

说明书 :

一种实现Powerlink工业实时以太网通讯的主/从站卡的设计

方法

技术领域

[0001] 本发明涉及工业现场总线技术领域的一种工业实时以太网通讯设备的设计方法,具体为一种实现Powerlink工业实时以太网通讯的主/从站卡的设计方法。

背景技术

[0002] open Powerlink资源包中常使用CPU+FPGA组合实现Powerlink主站或从站。open Powerlink资源包中公开了一种利用open MAC(Hub)和open Powerlink Application stack设计实现Powerlink主站或从站的方法。
[0003] 图1为现有open Powerlink模型图,open Powerlink协议栈=用户层+会话抽象层+内核层+MAC层。除了MAC层通过硬件描述语言编程实现并运行于FPGA上之外,其余各层均通过计算机高级语言编程实现并运行于上位机CPU上(这里,作为上位机的CPU可以是不同的芯片,也可以是同一颗芯片里的不同的CPU核心)。
[0004] 用户层负责控制,内核层负责通信,两层之间的接口被称作会话抽象层CAL(communication Abstraction Layer)。图1的CAL是并行通讯。
[0005] 用户层包含事件处理模块、对象字典、网络状态机、时间同步模块、错误处理模块、过程数据对象PDO及服务数据对象SDO。
[0006] 内核层包含事件处理模块、网络状态机、时间同步模块、错误处理模块、过程数据对象PDO、数据链路DLL(Data Link Layer)状态机、周期驱动、高精度时钟硬件及以太网驱动,其中PDO负责同步事件处理,SDO负责异步事件处理。
[0007] 用户层依据CANopen协议在该层中的对象字典中索引,并将用户层端PDO一一映射到内核层端PDO,作为通信必要条件,两层之间的事件处理模块,时间同步模块、错误处理模块等都通过CAL层一一对应。位于内核层的DLL状态机作为通信核心负责根据当前网络状态决定自身状态以处理Powerlink数据帧的收发和数据帧内容的编解码,其中Powerlink数据帧由Powerlink网口经open Hub转发到open MAC解析,才输入内核层网络驱动以触发DLL状态机跳转。周期驱动依据高精度时钟硬件来定义系统绝对时间供DLL状态机和时间同步模块参考。时间同步模块产生中断,用来决定Powerlink通信周期,其中分同步阶段、异步阶段和空闲阶段。协议栈通过调整以上三阶段时间来保证Powerlink总的通信周期时间固定,以达到实时控制的目的。
[0008] open Powerlink资源包是一种入门级的实现Powerlink工业实时以太网通讯的协议栈,如果利用open Powerlink资源包设计实现Powerlink工业实时以太网通讯和进行产品设计,是无法实现以“以太网Powerlink通信行规规范”(GB/T27960-2016)规定的技术指标的。其存在如下缺点:信号传输抖动大,传输速率慢,循环周期长,同时需要采用多个芯片,设计复杂,这样就造成了Powerlink工业实时以太网通讯响应慢,传输不稳定,通讯成本高等问题。

发明内容

[0009] 针对现有技术的不足,本发明提供了一种实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,该卡可以配置或直接制造成为主站,也可以配置或直接制造成为从站,直接制造意为出厂时的制造和配置状态。
[0010] 该卡具有PCIe通讯接口界面(PCIe金手指),当该卡PCIe金手指插入上位机(PC机或其它工控设备)主板上的PCIe通讯接口界面后(PCIe母座),当配置为主站时,该卡+上位机的组合就构成了一个双网口的Powerlink工业实时以太网主站控制器,可以通过网络拓扑,接入其它的Powerlink工业实时以太网从站设备;当配置为从站时,该卡+上位机的组合就构成了一个双网口的Powerlink工业实时以太网从站设备,可以通过网络拓扑,与其它的Powerlink工业实时以太网从站设备共同接入Powerlink通讯网络。
[0011] 本发明采用以下技术方案实现:一种实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,设计Powerlink协议栈用户层,所述用户层包括控制器一、对象字典、中断产生器一、过程数据对象模块、服务数据对象模块、CAL接口一;设计主/从站卡,所述主/从站卡包括Powerlink工业实时以太网通讯IP核,所述IP核包括内核层和MAC层,所述内核层包括CAL接口二、中断产生器二、同步数据缓存模块、异步数据缓存模块、控制器二;所述CAL接口一和所述CAL接口二构成CAL接口通讯;
[0012] 其中,所述主/从站卡设计为主站卡时,所述用户层和所述主/从站卡满足以下特征:
[0013] 所述中断产生器一依据所述中断产生器二的触发产生中断,由此形成中断时序,所述中断时序中相邻两个中断的时间为一个Powerlink周期,所述Powerlink周期包括同步处理时间、异步处理时间和空闲时间;
[0014] 所述控制器一接收一个Powerlink周期的控制信息集,所述控制信息集控制与所述主站相连的至少一个从站,所述控制信息集包括与所述至少一个从站相对应的至少一个控制信息;所述控制器一在接收所述中断之后,首先在所述同步处理时间内将所述控制信息中的需要同步处理的数据发送至所述过程数据对象模块,在所述异步处理时间内将所述控制信息中需要异步处理的数据发送至所述服务数据对象模块,而在空闲时间内不做处理;
[0015] 所述对象字典依据CANopen协议辅助所述过程数据对象模块建立与所述同步数据缓存模块之间的同步数据通道,辅助所述服务数据对象模块建立与所述异步数据缓存模块之间的异步数据通道;
[0016] 所述过程数据对象模块通过CAL接口依据所述同步数据通道将需要同步处理的数据发送至所述同步数据缓存模块,所述服务数据对象模块通过所述CAL接口依据所述异步数据通道将需要异步处理的数据发送至所述异步数据缓存模块;
[0017] 所述控制器二按照Powerlink协议完成以下数据组帧:先在所述同步时间内把需要同步处理的数据组成Powerlink数据帧一,并将所述Powerlink数据帧一发送至所述MAC层,后在所述异步时间内把需要异步处理的数据组成Powerlink数据帧二,并将所述Powerlink数据帧二发送至所述MAC层;
[0018] 所述中断产生器二在所述控制器二完成所述数据组帧后,且在当前Powerlink周期结束时触发所述中断产生器一。
[0019] 本发明还提供另一种实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其区别在于,所述主/从站卡设计为从站卡时,所述用户层和所述主/从站卡满足以下特征:
[0020] 所述MAC层先接收来自主站的Powerlink同步数据触发帧Soc后,触发所述中断产生器二产生中断触发信号;所述中断产生器一依据所述中断产生器二的中断触发信号产生中断,所述中断代表一个Powerlink周期开始;所述控制器一根据所述中断触发同步数据通道,所述同步数据通道为:所述过程数据对象模块在所述对象字典依据CANopen协议的辅助下,建立的与所述同步数据缓存模块之间的通道;
[0021] 所述MAC层再接收来自主站的Powerlink同步数据,所述控制器二对所述同步数据依照Powerlink协议进行解码提取需要同步传输的Powerlink数据帧;所述同步数据缓存模块将所述需要同步传输的Powerlink数据帧,通过CAL接口依据所述同步数据通道发送至所述过程数据对象模块,供所述控制器一调取;
[0022] 所述MAC层之后接收来自主站的Powerlink异步数据触发帧Soa,所述控制器二根据所述Powerlink异步数据触发帧Soa触发异步数据通道,所述异步数据通道为:所述服务数据对象模块在所述对象字典依据CANopen协议的辅助下,建立的与所述异步数据缓存模块之间的通道;
[0023] 所述MAC层再接收来自主站的Powerlink异步数据,所述控制器二对所述异步数据依照Powerlink协议进行解码提取需要异步传输的Powerlink数据帧;所述异步数据缓存模块将所述需要异步传输的Powerlink数据帧,通过所述CAL接口依据所述异步数据通道发送至所述服务数据对象模块,供所述控制器一调取。
[0024] 与现有技术相比,本发明提的主/从站卡的设计方法,具备以下有益效果。
[0025] 1.本发明的主/从站卡的设计方法,通过设置高速串行差分信号接口PCIe作为协议栈CAL接口,在保证百兆以上高速率传输的同时,又能保证信号的稳定性,提高了通讯速率,缩短了循环周期,从而提高了通讯的实时性。
[0026] 2.本发明的主/从站卡的设计方法,通过设置单芯片FPGA并合理利用上位机CPU,简化了通讯装置,从而降低了通讯的费用,节省了成本。
[0027] 3.本发明的主/从站卡的设计方法,通过采用握手信号加二级缓存的方式和采用异步FIFO缓存TLP数据包的方式,消除了亚稳态,降低了延迟,保证了数据的同步性。

附图说明

[0028] 图1为现有open Powerlink模型图;
[0029] 图2为本发明Powerlink主/从站卡的模型图;
[0030] 图3为本发明的Powerlink主/从站卡的结构示意图;
[0031] 图4为本发明的Powerlink主/从站卡及上位机的内部功能模块框图;
[0032] 图5为本发明的Powerlink主站HDL模块框图;
[0033] 图6为本发明的PCIe读写过程中数据在FPGA内部的走向流程图;
[0034] 图7为本发明的握手信号在接收引擎中的状态跳转图;
[0035] 图8为本发明的握手信号在发送引擎中的状态跳转图;
[0036] 图9为本发明的异步FIFO读写控制的状态转移图;
[0037] 图10为应用本发明的Powerlink主/从站卡实现的三轴伺服驱动系统组网示意图;
[0038] 图11为应用本发明的Powerlink主/从站卡完成通讯的系统循环周期示意图;
[0039] 图12为本应用发明的Powerlink主/从站卡完成通讯的中断信号抖动波形图。

具体实施方式

[0040] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0041] 实施例1
[0042] 请参阅图2,本发明的Powerlink主/从站卡模型图,与图1对照,本发明在设计和实现Powerlink工业实时以太网通讯的主/从站卡时,Powerlink工业实时以太网通讯模型由用户层+Powerlink工业实时以太网通讯IP核(以下简称IP核)组成,其中IP核=内核层+MAC层,并且通过各自层内的CAL接口实现用户层与IP核的通讯,用户层内包含CAL接口——PCIe interface,IP核内包含CAL接口——PCIe_to_EPL。图2所示的CAL接口是高速串行通讯接口。为了保证同步通讯,在IP核中设计了同步数据缓存和异步数据缓存软件模块。
[0043] IP核的事件寄存器模块依据网络状态机状态和数据链路DLL状态机状态定义Powerlink通讯中所发生事件并寄存,用以决定上述状态机状态是否跳转,并指导数据收发及编解码模块工作。
[0044] IP核的数据收发及编解码模块负责接收Mac转发过来的Powerlink数据帧并且解码然后将重要通讯数据依据网络状态及数据链路状态决定向何处转发。在收到用户层数据后,数据收发及解析模块会依据网络状态及数据链路状态决定将数据插入对应类型Powerlink数据帧以完成组帧编码,并向MAC转发。
[0045] 用户层依据CANopen协议在该层中的对象字典中索引,并将用户层端PDO通过CAL一一映射到IP核内核层的同步数据缓存/异步数据缓存。
[0046] 如图2,本发明的Powerlink工业实时以太网通讯的主/从站卡用户层运行在上位机CPU上,一般由高级计算机语言编程实现;本发明的IP核运行在FPGA上,由接近机器语言的硬件描述语言编程实现和仿真。
[0047] 本实施例的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,请参阅图3及图4,需要设计Powerlink协议栈用户层,设计主/从站卡,所述主/从站卡设计为主站卡时,所述用户层和所述主/从站卡满足相应特征,所述主/从站卡设计为从站卡时,所述用户层和所述主/从站卡也要满足相应特征。
[0048] 设计Powerlink协议栈用户层,所述用户层包括控制器一、对象字典、中断产生器一、过程数据对象模块、服务数据对象模块、CAL接口一。
[0049] 设计主/从站卡,所述主/从站卡包括Powerlink工业实时以太网通讯IP核,所述IP核包括内核层和MAC层,所述内核层包括CAL接口二、中断产生器二、同步数据缓存模块、异步数据缓存模块、控制器二;所述CAL接口一和所述CAL接口二构成CAL接口通讯。
[0050] 其中,所述主/从站卡设计为主站卡时,所述用户层运行在管理设备的CPU上,所述IP核运行在FPGA上。所述用户层和所述主/从站卡满足以下特征。
[0051] 所述中断产生器一依据所述中断产生器二的触发产生中断,由此形成中断时序,所述中断时序中相邻两个中断的时间为一个Powerlink周期,所述Powerlink周期包括同步处理时间、异步处理时间和空闲时间;
[0052] 所述控制器一接收一个Powerlink周期的控制信息集,所述控制信息集控制与所述主站相连的至少一个从站,所述控制信息集包括与所述至少一个从站相对应的至少一个控制信息;所述控制器一在接收所述中断之后,首先在所述同步处理时间内将所述控制信息中的需要同步处理的数据发送至所述过程数据对象模块,在所述异步处理时间内将所述控制信息中需要异步处理的数据发送至所述服务数据对象模块,而在空闲时间内不做处理;
[0053] 所述对象字典依据CANopen协议辅助所述过程数据对象模块建立与所述同步数据缓存模块之间的同步数据通道,辅助所述服务数据对象模块建立与所述异步数据缓存模块之间的异步数据通道;
[0054] 所述过程数据对象模块通过CAL接口依据所述同步数据通道将需要同步处理的数据发送至所述同步数据缓存模块,所述服务数据对象模块通过所述CAL接口依据所述异步数据通道将需要异步处理的数据发送至所述异步数据缓存模块;
[0055] 所述控制器二按照Powerlink协议完成以下数据组帧:先在所述同步时间内把需要同步处理的数据组成Powerlink数据帧一,并将所述Powerlink数据帧一发送至所述MAC层,后在所述异步时间内把需要异步处理的数据组成Powerlink数据帧二,并将所述Powerlink数据帧二发送至所述MAC层;
[0056] 所述中断产生器二在所述控制器二完成所述数据组帧后,且在当前[0057] Powerlink周期结束时触发所述中断产生器一。
[0058] 其中,在所述同步时间内,所述控制器二按照Powerlink协议把从所述MAC层接收的数据解帧出同步应答信息,并发送给所述同步数据缓存模块供所述控制器一读取;在所述异步时间内,所述控制器二按照Powerlink协议把从所述MAC层接收的数据解帧出异步应答信息,并发送给所述异步数据缓存模块供所述控制器一读取。
[0059] 所述用户层还可包括网络状态机,所述内核层还包括数据链路状态机、事件寄存器。所述网络状态机用于管理Powerlink工业实时以太网的通讯状态,主站搜寻到至少一个从站且相应从站反馈应答信息时为网络活跃状态,所述通讯状态在网络活跃状态时,Powerlink工业实时以太网被激活。所述数据链路状态机用于定义所述内核层的不同数据处理状态,使所述控制器二在不同的数据处理状态时处理相应的数据。所述事件寄存器用于根据所述网络状态机和所述数据链路状态机的不同状态,记录相应事件并存储。
[0060] 设有所述用户层的管理设备和设有所述IP核的主站卡构成主站的核心部件,所述主站在通讯时的通讯方法为:所述管理设备上应用程序的控制信息会依次通过用户层、CAL接口一、CAL接口二、内核层、MAC层、Powerlink网络接口输出到与从站连接的工控设备,实现对所述工控设备的控制。在Powerlink通讯轮询阶段,所述从站反馈应答信息给所述主站。
[0061] 所述主/从站卡设计为从站卡时,所述用户层运行在工控设备的CPU上,所述IP核运行在FPGA上。所述用户层和所述主/从站卡满足以下特征。
[0062] 所述MAC层先接收来自主站的Powerlink同步数据触发帧Soc后,触发所述中断产生器二产生中断触发信号;所述中断产生器一依据所述中断产生器二的中断触发信号产生中断,所述中断代表一个Powerlink周期开始;所述控制器一根据所述中断触发同步数据通道,所述同步数据通道为:所述过程数据对象模块在所述对象字典依据CANopen协议的辅助下,建立的与所述同步数据缓存模块之间的通道。
[0063] 所述MAC层再接收来自主站的Powerlink同步数据,所述控制器二对所述同步数据依照Powerlink协议进行解码提取需要同步传输的Powerlink数据帧;所述同步数据缓存模块将所述需要同步传输的Powerlink数据帧,通过CAL接口依据所述同步数据通道发送至所述过程数据对象模块,供所述控制器一调取。
[0064] 所述MAC层之后接收来自主站的Powerlink异步数据触发帧Soa,所述控制器二根据所述Powerlink异步数据触发帧Soa触发异步数据通道,所述异步数据通道为:所述服务数据对象模块在所述对象字典依据CANopen协议的辅助下,建立的与所述异步数据缓存模块之间的通道。
[0065] 所述MAC层再接收来自主站的Powerlink异步数据,所述控制器二对所述异步数据依照Powerlink协议进行解码提取需要异步传输的Powerlink数据帧;所述异步数据缓存模块将所述需要异步传输的Powerlink数据帧,通过所述CAL接口依据所述异步数据通道发送至所述服务数据对象模块,供所述控制器一调取。
[0066] 在所述同步时间内,所述控制器一接收同步传输的Powerlink数据帧后按照Powerlink协议发出同步应答信息,并发送给所述同步数据缓存模块供所述控制器二读取,所述控制器二跟Powerlink协议规定对所述同步应答信息编码成同步应答帧,由所述MAC层发送;在所述异步时间内,所述控制器一接收异步传输的Powerlink数据帧后,按照Powerlink协议发出异步应答信息,并发送给所述异步数据缓存模块供所述控制器二读取,所述控制器二跟Powerlink协议规定对所述异步应答信息编码成异步应答帧,由所述MAC层发送。
[0067] 设有所述用户层的工控设备和设有所述IP核的从站卡构成从站的核心部件,所述从站在通讯时的通讯方法为:主站传递的控制信息会依次通过从站卡的Powerlink网络接口、MAC层、内核层、CAL接口二、CAL接口一、用户层,使工控设备最终按照接收到的控制信息执行指定动作。在Powerlink通讯轮询阶段,所述工控设备反馈应答信息给管理设备。
[0068] 实施例2
[0069] 针对实施例1的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,其功能结构及设计方法如下。
[0070] 步骤1:该卡的主要控制芯片由FPGA构成,其它主要电子元器件有:电源管理芯片、网络收发器物理层PHY、FLASH芯片、DDR3内存、时钟芯片等。
[0071] 如,选取支持PCIe高速串行接口的FPGA芯片,利用硬件描述语言在所述FPGA内部构建Powerlink协议栈(主/从站)的内核层和Mac层。
[0072] Powerlink主/从站的内核层采用HDL硬件描述语言实现是技术关键。主站内核层主要为主站核心,其中包含有数据发送和接收缓冲模块、中断生成模块、定时器模块、主站DLL状态机模块、主站NMT状态机模块、MAC模块、PHY芯片管理模块以及其它寄存器模块。从站内核层主要为从站核心,模块内部包含有数据发送和接收缓冲模块、中断生成模块、定时器模块、从站DLL状态机模块、从站NMT状态机模块、MAC模块、PHY芯片管理模块以及其它寄存器模块。其核心为DLL状态机模块和NMT状态机模块。Powerlink主/从站的MAC层负责连接所述FPGA与负责与百兆Powerlink网络接口的物理层芯片。
[0073] 步骤2:FPGA芯片有支持PCIe高速串行接口。利用硬件描述语言在所述FPGA内部构建Powerlink协议栈(主/从站)的内核层和MAC层。
[0074] 步骤3:在步骤1所述的FPGA中继续使用硬件描述语言构建PCIe驱动,并与步骤2所述Powerlink协议栈内核层正确连接。
[0075] 在PCIe单DW(Double Word)读写时,在每4个DW的TLP数据包里读写一个有效DW数据。在基于上述基础的PCIe多DW读写时,可以采用握手信号加二级缓存的方式以消除亚稳态,还可以采用异步FIFO缓存TLP数据包的方式将延迟锁定在TLP包与包之间。以上两种方式都需在数据读写时单独设置读写等待状态作为数据缓存状态。下文中,将对握手信号的使用时的状态跳转以及异步FIFO内的状态跳转设置进行重点介绍,这是本发明的重点保护技术之一。
[0076] 将内存访问模块的rd_en_i信号添加为读使能,将内存访问模块的rd_addr_i信号和wr_add_i信号均升级为16位;内存访问模块的rd_be_i信号使用全部数据,内存访问模块的wr_be_i信号使用低四位数据。
[0077] 步骤4:写该Powerlink主/从站卡插入设备——上位机的CAL驱动:PCIe接口驱动和Powerlink协议栈(主/从站)的用户层和用户应用程序。
[0078] 在卡+上位机组合中,可使用计算机高级语言(比如C语言)编写并实现的上位机PCIe接口驱动。上位机通过访问设备驱动中对应的虚拟地址,来访问对应的物理地址,以此达到访问该接口的目的。
[0079] 在卡+上位机组合中,可使用计算机高级语言(比如C语言)编写并实现Powerlink协议栈(主/从站)的用户层和用户应用程序。
[0080] 步骤5(a):进一步地,该卡+上位机的组合连接并配置为主站后,上位机CPU上应用程序的控制信息会依次通过该上位机CPU上的Powerlink协议栈用户层、上位机CPU端PCIe接口、卡FPGA端PCIe接口、卡FPGA上的Powerlink协议栈内核层、卡FPGA上的Powerlink协议栈MAC层、卡FPGA端Powerlink网络接口输出到其它Powerlink从站设备,实现对所述Powerlink从站的控制。
[0081] 步骤5(b):进一步地,该卡+上位机的组合连接并配置为从站后,在准备与所述从站通信的其它Powerlink主站设备上应用程序的控制信息会依次通过所述Powerlink从站设备——卡FPGA端Powerlink网络接口、卡FPGA上的Powerlink协议栈MAC层、卡FPGA上的Powerlink协议栈内核层、卡FPGA端PCIe接口、上位机CPU端PCIe接口、上位机CPU上的Powerlink协议栈用户层,所述从站设备最终按照接收到的控制信息执行指定动作。另外,在Powerlink通讯轮询阶段,从站设备也可反馈应答信息给主站设备。
[0082] 无论该卡配置成主站还是从站,卡FPGA内可设有转换模块,转换模块连接相应的PCIe接口与相应的FPGA的内核层;转换模块包括PCIe控制器和转换接口;PCIe控制器用于接收和解码来自相应的PCIe接口的PCIe数据帧,并将解码后的数据通过转换接口传输至相应的FPGA搭建的内核层。
[0083] 无论该卡配置成主站还是从站,卡FPGA的内核层均设置相应的PCIe驱动IP核、相应的AXI总线、相应的接收引擎、相应的内存访问模块、相应的发送引擎;并且,卡FPGA的内核层接收的数据均依次通过相应的PCIe驱动IP核、相应的AXI总线、相应的接收引擎传输至相应的内存访问模块并将数据转化成Powerlink数据帧,再通过相应的发送引擎、相应的AXI总线、相应的PCIe驱动IP核输出。
[0084] 无论该卡配置成主站还是从站,将内存访问模块的rd_en_i信号添加为读使能,将内存访问模块的rd_addr_i信号和wr_add_i信号均升级为16位;内存访问模块的rd_be_i信号使用全部数据,内存访问模块的wr_be_i信号使用低四位数据。
[0085] 配置为主站时,其在一个通讯周期内按协议栈规定的方式产生帧序列,并监听从站反应;从站监听一个周期内接受的帧的顺序,并按协议栈规定的方式进行反馈。
[0086] 卡+上位机的组合中,运行于上位机的PCIe接口驱动和Powerlink协议栈(主/从站)的用户层和用户应用程序使用计算机高级语言(比如C语言)编写并实现;运行于卡FPGA上的Powerlink协议栈的内核层和MAC层均采用HDL硬件描述语言编写并实现。
[0087] 在PCIe多DW读写时,采用握手信号加二级缓存的方式以消除亚稳态。并采用异步FIFO缓存TLP数据包的方式将延迟锁定在TLP包与包之间。
[0088] 无论该卡配置成主站还是从站,卡FPGA内设置MSI_GEN模块,MSI_GEN模块用于向PCIe提供中断;在接收POWERLINK中断时,MSI_GEN模块将计数周期为1ms的中断提供给PCIe,通过异步FIFO的缓存,将每个TLP连接起来,使得中断信号不产生干扰。
[0089] 实施例3
[0090] 针对实施例1的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,提供了如下详细的方案。
[0091] 一、方案分析
[0092] (一)、方案架构
[0093] 该方案中的Powerlink主/从站卡结构如图3所示,Powerlink主/从站卡及上位机的内部功能模块框图如图4所示。卡FPGA中通过逻辑代码完成Powerlink协议栈的内核层和MAC层,再通过PCIe接口与上位机的CPU相连,上位机运行着Powerlink协议栈用户层代码。主站卡通过PCIe金手指连到PC机中插接网卡的PCIe母座,然后上位机可使用该板卡的两个Powerlink以太网接口与其它Powerlink从站设备实现通信,并可利用上位机上的用户层应用软件对Powerlink从站设备实现应用控制。
[0094] 当该卡PCIe金手指插入上位机主板上的PCIe母座后,当配置为主站时,该卡+上位机的组合就构成了一个双网口的Powerlink工业实时以太网主站控制器,可以通过网络拓扑,接入其它的Powerlink工业实时以太网从站设备;当配置为从站时,该卡+上位机的组合就构成了一个双网口的Powerlink工业实时以太网从站设备,可以通过网络拓扑,与其它的Powerlink工业实时以太网从站设备共同接入Powerlink通讯网络。
[0095] (二)、硬件选型参考
[0096] FPGA的主芯片可选用当前任何主流厂商生产的FPGA,如Lattice公司的ECP3系列、Altera公司的Cyclone IV GX系列、Xilinx公司的SPartan 6T系列甚至是ZYNQ系列等。
[0097] 该方案使用FPGA运行Powerlink内核层C语言代码,使用PC机的CPU运行用户层硬件描述语言代码。根据以上需求,以Xilinx公司芯片为例,FPGA可选用Xilinx Spartan 6xc6slx25t芯片,并且无需使用片外存储器。
[0098] 二、具体实现
[0099] (一)、通信模型
[0100] Powerlink工业实时以太网是基于普通商业以太网基础之上发展而来的,而Powerlink通信模型也是根据标准的OSI模型开发而来的,只不过它只有三层:应用层、数据链路层和物理层。
[0101] 该方案可以使用HDL硬件描述语言实现Powerlink内核层(Powerlink Kernel Layer),使用C语言实现其用户层(Powerlink User Layer),物理层使用普通以太网的对应配置即可,无需作特别更改。下面将从通信模型的角度阐述该方案的具体实现原理。
[0102] 如图4实线部分所示,此版本的主/从站卡中的FPGA只负责运行Powerlink协议栈内核层及PCIe驱动,无需片外存储器。以主站卡为例,如图4所示,虚线部分描述的PC机作为上位机,用来运行运动控制APP及Powerlink协议栈用户层代码。Powerlink用户层和Powerlink内核层通过PCIe接口进行通讯。实线部分描述的FPGA负责运行Powerlink内核层及MAC层Verilog代码。运动控制信息由PC机通过PCIe数据帧传输到FPGA,被PCIe_EP_Ctrl模块(转换模块)解码,再由PCIe_to_EPL接口(转换接口)传递到内核层,再打包成Powerlink数据帧由Powerlink网口传输给其它Powerlink受控节点(从站),最终完成对从站应用(如伺服驱动器)的实时控制。
[0103] (二)、CAL接口
[0104] Powerlink协议栈用户层和内核层之间的数据交互需要通过特定的CAL接口来实现。本发明的主从/站卡使用基于PCIe总线的PCIe_to_EPL接口。
[0105] 上位机的网卡接口通常为PCI或PCIe接口,本发明设计的Powerlink主从/站卡,在Powerlink协议栈的基础上添加PCIe这类高速串行驱动,可以方便Powerlink主从/站卡与上位机对接。在卡+上位机的组合中,CAL接口是双方都存在的,卡FPGA中,该CAL接口名称是PCIe_to_EPL,PCIe_to_EPL接口主要负责连接Verilog HDL代码编写的Powerlink内核层和PCIe_EP_Ctrl这个PCIe控制器。上位机中,该CAL接口名称是PCIe interface。上位机CPU上应用程序的控制信息会依次通过上位机CPU上的Powerlink协议栈用户层、上位机CPU端PCIe interface。
[0106] (1)、Powerlink协议栈HDL模块接口(以下描述均发生在卡+上位机的组合的卡FPGA中,不再重复声明)
[0107] 1)主站核心
[0108] 如图5所示为Powerlink HDL部分,即内核层的主站模块框图,其内部包含有数据发送和接收缓冲模块、中断生成模块、定时器模块、主站DLL状态机模块、主站NMT状态机模块、Mac模块、PHY芯片管理模块以及其它寄存器模块。其核心为DLL状态机模块和NMT状态机模块,除去需要接到外部网口的信号,其它需要连接到PCIe的信号如下表(表1)所示:
[0109]信号名 位宽(Bit) 输入/输出(FPGA) 功能
iHostRead 1 InPut Powerlink读使能
iHostWrite 1 InPut Powerlink写使能
iHostByteenable 4 InPut 字节使能
iHostAddress 16 InPut Powerlink地址信号
oHostData 32 OutPut 输出数据
iHostData 32 InPut 输入数据
oHostWaitRequest 1 OutPut 读、写应答
[0110] 表1New_Powerlink_MN_IP_Interface列表
[0111] Powerlink主站在一个周期内按协议栈规定的方式产生帧序列,并监视从站的反应。
[0112] 2)从站核心
[0113] Powerlink从站内核层的模块内部包含有数据发送和接收缓冲模块、中断生成模块、定时器模块、从站DLL状态机模块、从站NMT状态机模块、Mac模块、PHY芯片管理模块以及其它寄存器模块。其核心为DLL状态机模块和NMT状态机模块。Powerlink从站监视一个周期内接收的帧的顺序,并按协议栈规定的方式作出反应。
[0114] (2)、PCIe内存访问
[0115] 请参阅图6,图6是PCIe读写过程中数据在FPGA内部的走向。左下角为PCIe驱动IP核,右侧PCIe APP包含接收和发送引擎以及内存访问模块,它们都通过AXI总线交互数据,最终再通过串行差分信号线传递出FPGA。
[0116] 其中,PCIe通讯可选32/64位数据线,Powerlink通讯可选8/16/32位数据线,因此为了便于统一,二者均选择32位数据线。
[0117] 内存访问模块是PCIe APP的数据交互核心,数据经过接收引擎解析,判断对内存的读写,然后做出相应动作。读完数据后将数据和握手信号给出,送给接收引擎和发送引擎,并且写完数据就把握手信号发送给接收引擎和发送引擎。
[0118] 在数据到达被选择的RAM存储时,从指定RAM读出数据。如果能把此时的读写信号与表2中所示的信号按时序正确连接,即可完成PCIe到Power link的读写。
[0119]信号名 位宽(Bit) 输入/输出(内存) 功能
rd_addr_i 11 InPut 读地址
rd_be_i 4 InPut 读字节使能
rd_data_o 32 OutPut 读数据
wr_addr_i 11 InPut 写地址
wr_be_i 8 InPut 写字节使能
wr_data_i 32 InPut 写数据
wr_en_i 1 InPut 写使能
wr_busy_o 1 OutPut 写忙信号
[0120] 表2PIO_EP_MEM_ACCESS_Interface列表
[0121] 在此时缺少读使能信号,表示读使能一直有效,但我们需要一个可控的读使能。因此,rd_en_i信号被添加为读使能。
[0122] 原本的地址信号位宽不够匹配Powerlink寻址位宽,需要增加。由PCIe协议可知,TLP包第二个DW的第2到31位都可当做有效地址信号,因此rd_addr_i信号和wr_add_i信号被升级为16位,在接收时直接由AXI总线传来的m_axis_rx_tdata的第2到15位给出,再加地位两个0。在发送时由于只发送低6位有效地址,因此不需修改。具体如何选择读写地址,由读写使能决定。
[0123] rd_be_i信号使用全部数据,wr_be_i信号使用低四位数据,字节使能的选择也由读写使能决定。
[0124] (3)、PCIe多DW读写及跨时钟域同步
[0125] 单DW(Double Word)读写时,在每4个DW的TLP数据包里读写一个有效DW数据。这样做的好处是,每读写完一个有效DW,就进入等待状态,在下一次读写信号到来时,通信状态已经到下一个TLP包了,因此不需要做时钟同步。但这样做会使得数据访问效率低下,并且Powerlink数据帧最小为36个字节,最大超过1Kb。目前这种读写模式显然是不满足大容量数据传输的,因此多DW读写才能满足要求。
[0126] 多DW读写即是在判断出写DW长度之后,重复写有效DW的操作。但此时会带来数据同步的问题,PCIe的用户时钟为62.5M,数据访问都是参考这个时钟,而Powerlink协议栈的时钟却是50M。若想将二者同步,快时钟必须等待慢时钟。技术上可采用以下两种方法,一是采用握手信号加二级缓存的方式,消除亚稳态;二是采用DC_FIFO(异步FIFO)缓存TLP数据包的方式将延迟锁定在TLP包与包之间。下面将在PCIe的DW读写基础之上从以上两个方面描述多DW读写原理。
[0127] 1)、握手信号
[0128] 请参阅图7以及图8,在接口两端的每两个对接信号都采用消除亚稳态做法的前提下,本方案中还为内存读写一共准备了两对握手信号:Wr_busy_o、Wr_comPl_o输出给接收引擎(如图7);Rd_busy_o、Rd_comPl_o输出给发送引擎(如图8)。信号描述如下表(表3)所示:
[0129]握手信号名 位宽 说明
Wr_busy_o 1 写忙信号,表示写过程正在进行
Wr_comPl_o 1 写完成信号
Rd_busy_o 1 读忙信号,表示读过程正在进行
Rd_comPl_o 1 读完成信号
[0130] 表3握手信号列表
[0131] 其中,在图7中,对状态跳转条件的具体说明如下:
[0132] ●S_1:PIO_32_RX_RST_STATE,初始状态,表示接收复位状态。此状态下会检测接收到的TLP包类型,若为S_2中的类型,并且检测到Req_len_o信号值为1,则跳转至S_4状态;若接收到的TLP包为S_3中的类型,并且检测到Req_len_o信号值为1,则也跳转至S_4状态;
若以上条件均不满足,则继续保持在S_1状态。
[0133] ●S_2:PIO_32_RX_MEM_WR32_FMT_TYPE,TLP数据包类型之一,表示32位写存储器状态。若跳转条件Req_len_o不满足时,会自动跳转回S_1状态等待。
[0134] ●S_3:PIO_32_RX_IO_WR32_FMT_TYPE,TLP数据包类型之一,表示32位写IO状态。若跳转条件Req_len_o不满足时,会自动跳转回S_1状态等待。●S_4:PIO_32_RX_IO_MEM_WR32_DW1,接收TLP包第一个DW。此状态下若检测到m_axis_rx_tvalid信号和m_axis_rx_tready信号同时有效,则跳转至S_5状态;若以上条件不满足,则继续保持在S_4状态。
[0135] ●S_5:PIO_32_RX_IO_MEM_WR32_DW2,接收TLP包第二个DW。此状态下若检测到m_axis_rx_tvalid信号和m_axis_rx_tready信号同时有效,则跳转至S_6状态;若以上条件不满足,则继续保持在S_5状态。
[0136] ●S_6:PIO_32_RX_IO_MEM_WR32_DW3,接收TLP包第三个DW。此状态下若检测到Wr_busy_i信号有效,并且写完成信号Wr_comPle_i无效,则跳转至S_8状态;若检测到Wr_busy_i信号无效,则跳转至S_7状态;若以上条件均不满足,则继续保持在S_6状态。
[0137] ●S_7:PIO_32_RX_WR32_WRITE,写状态。此状态下若检测到Wr_comPle_i信号有效,并且m_axis_rx_ready信号有效,则跳转回S_6状态;若检测到Wr_comPle_i信号有效,并且m_axis_rx_ready信号无效,则跳转至S_9状态;多检测到Wr_comPle_i信号无效,则继续保持在S_7状态;若以上条件均不满足,则跳转至S_8状态。
[0138] ●S_8:PIO_32_RX_WR32_WAIT,写等待状态。此状态下若检测到Wr_busy_i信号继续有效,则继续保持在S_8状态;否则,跳转至S_7状态。
[0139] ●S_9:PIO_32_RX_WAIT_STATE,表示接收等待状态,等待载有有效数据的DW。此状态下若检测到tlP_tyPe为wr,并且wr_busy_i信号无效时,则跳转回S_1状态;若检测到tlP_tyPe为rd,并且comPl_done_i信号有效时,则跳转回S_1状态;以上条件均不满足时,则继续保持在S_9状态。
[0140] 在图8中,对状态跳转条件的具体说明如下:
[0141] ●S_10:PIO_32_TX_RST_STATE,初始状态,表示发送复位状态。此状态下若检测到Req_comPl_q信号有效,并且req_comPl_with_data_q信号无效时,表明要发送的TLP包为S_11中的类型,接着状态跳转至S_13;若检测到Req_comPl_q信号有效,并且req_comPl_with_data_q信号有效时,表明要发送的TLP包为S_12中的类型,接着状态跳转至S_13;若以上条件均不满足,则继续保持在S_10状态。
[0142] ●S_11:PIO_32_CPL_FMT_TYPE,TLP数据包类型之一,由S_10状态选择。●S_12:PIO_32_CPLD_FMT_TYPE,TLP数据包类型之一,由S_10状态选择。●S_13:PIO_32_TX_CPL_CPLD_DW1,发送第一个DW。此状态下若检测到S_axis_tx_tready信号有效,则跳转至S_14状态。若不满足以上条件,则继续保持在S_13状态。
[0143] ●S_14:PIO_32_TX_CPL_CPLD_DW2,发送第二个DW。此状态下若检测到S_axis_tx_tready信号继续有效,并且cPl_w_data信号无效,则跳转至S_17状态;若检测到S_axis_tx_tready信号继续有效,并且cPl_w_data信号也有效,同时rd_busy_i信号也有效,则跳转至S_16状态;若检测到S_axis_tx_tready信号继续有效,并且cPl_w_data信号也有效,但是rd_busy_i信号无效,则跳转至S_15状态;若以上条件均不满足,则继续保持在S_14状态。
[0144] ●S_15:PIO_32_TX_DATA_READ,读状态。此状态下若检测到读完成信号Rd_comPle_i有效,则跳转至S_17状态;否则,继续保持在S_15状态。
[0145] ●S_16:PIO_32_TX_DATA_WAIT,读等待状态。此状态下若检测到Rd_busy_i信号有效,则跳转至S_15状态;否则,继续保持在S_16状态。
[0146] ●S_17:PIO_32_TX_CPLD_DW3,发送第三个DW。此状态下若检测到S_axis_tx_tready信号有效,并且Re_len_i的值等于1或者length_cnt的计数值等于req_len_i,则跳转至S_18状态;若检测到S_axis_tx_tready信号有效,并且Re_len_i的值不等于1或者length_cnt的计数值不等于req_len_i,并且rd_busy_i信号无效时,则跳转回S_15状态;若检测到S_axis_tx_tready信号有效,并且Re_len_i的值不等于1或者length_cnt的计数值不等于req_len_i,并且rd_busy_i信号有效时,则跳转回S_16状态;若以上条件均不满足,则继续保持在S_17状态。
[0147] ●S_18:PIO_32_TX_WAIT_STATE,表示发送等待状态。此状态下若检测到S_axis_tx_tready信号继续有效,则跳转回S_10状态;否则,继续保持在S_18状态。
[0148] 2)、异步FIFO
[0149] FIFO(First In First Out)因为拥有数据“先进先出”的特点,在FPGA逻辑中被广泛用作数据缓存模块。
[0150] 请参阅图9,除实行第一种同步方法外,还可以采用第二种将延时从每两个DW之间改到每两个TLP包之间的方法。用来缓存TLP包的模块为双时钟FIFO,也叫异步FIFO。这样的处理方式也是可以更方便添加PCIe的MSI中断,同时为保证数据同步准确性做准备。本方案中添加两个异步FIFO,分别负责读写Powerlink数据,反向来看即写读PCIe数据。设定FIFO位宽为32,深度为1KB。此时内存读写访问直接在FIFO中进行,接收和发送引擎也无需再设置等待状态。如图9所示为异步FIFO读写控制状态转移图。
[0151] ●S_19:STATE_RST,初始状态,表示读写复位状态。此状态下若检测到读命令rd_cmd有效,则跳转到S_22状态;若检测到写命令有效,并且读FIFO不空,即Rd_fifo_emPty_i信号无效时,则跳转到S_20状态;以上条件都不满足,则继续保持在S_19状态等待。
[0152] ●S_20:RD_FIFO_WR_PLK,读FIFO写Powerlink状态。此状态下若检测到DW计数器数值DwCnt与req_len_i的值相等时,并且检测到iHostAck有效或DwCnt的值为1时,则跳转到S_21状态;以上条件都不满足,则继续保持在S_20状态。
[0153] ●S_21:RD_FIFO_WR_PLK_END,读FIFO写Powerlink结束状态。此状态下若检测到写命令信号无效,并且检测到oHostWrite信号有效或者iHostAck信号有效,则跳转回S_19状态;以上条件都不满足,则继续保持在S_21状态。
[0154] ●S_22:WR_FIFO_RD_PLK,写FIFO读Powerlink状态。此状态下若检测到DW计数器数值DwCnt与req_len_i的值相等时,并且iHostAck信号和oHostRead信号同时有效时,则跳转到S_23状态;以上条件都不满足,则继续保持在S_22状态。
[0155] ●S_23:WR_FIFO_RD_PLK_END,写FIFO读Powerlink结束状态。此状态下若检测到读命令信号rd_cmd无效,则跳转回S_19状态;否则继续保持在S_23状态。
[0156] (三)、中断机制
[0157] MSI中断其实是PCIe独有的中断方式,因为在第一种方案的主站卡中,Powerlink协议栈内核层和用户层需要通信,而周期控制的方式就是使用中断。针对PCIe可在本方案的基础上单独添加MSI_GEN模块,内部只需对如下表(表4)所示的信号配置进行正确配置即可。
[0158]
[0159]
[0160] 表4MSI_GEN模块信号
[0161] 此时接收Powerlink中断,然后在MSI_GEN模块中提供了计数周期为1ms的中断给PCIe,通过异步FIFO的缓存,很好地将每个TLP连接起来,使得中断信号不产生干扰。
[0162] (四)、平台驱动
[0163] Powerlink协议栈用户层通过target.c访问接口设备。若存在操作系统,则直接访问对应的设备在该操作系统下的驱动;若没有操作系统,则直接访问该设备。协议栈用户层C语言代码可以在很多不同架构的CPU运行,可以是STM32,X86或者ARM等硬核,甚至是FPGA中搭建的软核,如Xilinx的Microblaze(ARM架构的软核CPU)。
[0164] 此处以带有Windows操作系统及英特尔x86处理器的PC机平台为例。此时需写好windows下对应的PCIe驱动,即可通过访问驱动来访问PCIe主/从站卡设备。上位机通过访问设备驱动中对应的虚拟地址,来访问对应的物理地址,以此达到访问该接口的目的。
[0165] 本实施例设计出的实现Powerlink工业实时以太网通讯的主/从站卡,其能进行二选一的设计:设计成Powerlink工业实时以太网通讯的主站卡,或设计成Powerlink工业实时以太网通讯的从站卡;所述主/从站卡设计为主站卡时,连接主站设备,所述主/从站卡设计为从站卡时,连接从站设备,所述主站卡通过Powerlink网络接口连接所述从站卡。
[0166] 所述主/从站卡采用支持PCIe高速串行接口的FPGA,在所述FPGA内部构建Powerlink协议栈的内核层和MAC层,还构建PCIe接口驱动,所述PCIe接口驱动与所述Powerlink协议栈的内核层连接。
[0167] 所述主站设备和所述从站设备均采用支持PCIe高速串行接口的CPU,在所述CPU内部实现PCIe接口驱动,还实现Powerlink协议栈的用户层和应用程序。
[0168] 所述主/从站卡设计为主站卡时,在带有所述FPGA的主站卡与带有所述CPU的主站设备通过PCIe接口连接后,所述主站设备的CPU上的应用程序的控制信息会依次通过所述主站设备的CPU上的用户层、PCIe接口,所述主站卡的FPGA的PCIe接口、内核层、MAC层、Powerlink网络接口输出到所述从站卡,通过所述从站卡控制与所述从站卡连接的从站设备。
[0169] 所述主/从站卡作为从站卡使用时,在带有所述FPGA的从站卡与带有所述CPU的从站设备通过PCIe接口连接后,在准备与所述从站卡通信的主站卡上的控制信息会依次通过所述从站卡的FPGA的Powerlink网络接口、MAC层、内核层、PCIe接口,所述从站设备的CPU的PCIe接口、用户层,所述从站设备最终按照接收到的控制信息执行指定动作。
[0170] 三、应用调试
[0171] (一)、驱动三轴伺服的demo
[0172] 在实际应用中会使用上位机或数控主板作为通讯主站,连接PLC或伺服驱动等从站设备进行生产实践。如图10所示,其为应用Powerlink主/从站卡实现的三轴伺服驱动系统组网示意图,图中还标识出了Powerlink主/从站之间采用Preq/Pres轮询应答模式通信的原理。主站MN通过Preq数据帧向各个从站轮询,从站以各自的Pres数据帧响应,表示要参与此周期同步通信。
[0173] (二)、最小循环周期及抖动
[0174] 最小循环周期及抖动是工业实时以太网通讯的重要指标,如图11所示,系统最小循环周期达到200us,并且此时的抖动已经非常小,信号相对趋于稳定。
[0175] 如图12所示,其系统的中断信号抖动波形图,此时的抖动已被降低到了1us左右。
[0176] 综上所述,该设计方案体现了一种带高速接口的Powerlink工业实时以太网通讯协议栈的实现思路,同时研发出该方案对应的CAL接口PCIe_to_EPL也很好地完成了协议栈用户层和内核层的交互。该方法实现的主/从站卡性能优越,单芯片解决方案相对更为便捷,用户可根据实际需求并参考该方法中的建议对软硬件作微调。
[0177] 本发明的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法,通过设置高速串行差分信号接口PCIe,在保证百兆以上高速率传输的同时,又能保证信号的稳定性,提高了通讯速率,缩短了循环周期,从而提高了通讯的实时性。本发明通过采用握手信号加二级缓存的方式和采用异步FIFO缓存TLP数据包的方式,消除了亚稳态,降低了延迟,保证了数据的同步性。
[0178] 实施例4
[0179] 用实施例1的实现Powerlink工业实时以太网通讯的主/从站卡的设计方法实现的Powerlink主/从站在通讯中具备稳定、快速和成本低等优点,解决了Powerlink工业实时以太网通讯响应慢,传输不稳定,通讯成本高的问题。
[0180] 实施例4的实现Powerlink工业实时以太网通讯的主/从站卡,其采用FPGA实现,在FPGA内设计Powerlink工业实时以太网通讯IP核,所述IP核包括内核层和MAC层,所述内核层包括CAL接口二、中断产生器二、同步数据缓存模块、异步数据缓存模块、控制器二;所述CAL接口一和所述CAL接口二构成CAL接口通讯。其中,所述主/从站卡设计为主站卡时,所述主站卡连接管理设备,在所述管理设备的CPU上设计Powerlink协议栈用户层,所述用户层包括控制器一、对象字典、中断产生器一、过程数据对象模块、服务数据对象模块、CAL接口一。
[0181] 所述用户层和所述主/从站卡满足以下特征:
[0182] 所述中断产生器一依据所述中断产生器二的触发产生中断,由此形成中断时序,所述中断时序中相邻两个中断的时间为一个Powerlink周期,所述Powerlink周期包括同步处理时间、异步处理时间和空闲时间;
[0183] 所述控制器一接收一个Powerlink周期的控制信息集,所述控制信息集控制与所述主站相连的至少一个从站,所述控制信息集包括与所述至少一个从站相对应的至少一个控制信息;所述控制器一在接收所述中断之后,首先在所述同步处理时间内将所述控制信息中的需要同步处理的数据发送至所述过程数据对象模块,在所述异步处理时间内将所述控制信息中需要异步处理的数据发送至所述服务数据对象模块,而在空闲时间内不做处理;
[0184] 所述对象字典依据CANopen协议辅助所述过程数据对象模块建立与所述同步数据缓存模块之间的同步数据通道,辅助所述服务数据对象模块建立与所述异步数据缓存模块之间的异步数据通道;
[0185] 所述过程数据对象模块通过CAL接口依据所述同步数据通道将需要同步处理的数据发送至所述同步数据缓存模块,所述服务数据对象模块通过所述CAL接口依据所述异步数据通道将需要异步处理的数据发送至所述异步数据缓存模块;
[0186] 所述控制器二按照Powerlink协议完成以下数据组帧:先在所述同步时间内把需要同步处理的数据组成Powerlink数据帧一,并将所述Powerlink数据帧一发送至所述MAC层,后在所述异步时间内把需要异步处理的数据组成Powerlink数据帧二,并将所述Powerlink数据帧二发送至所述MAC层;
[0187] 所述中断产生器二在所述控制器二完成所述数据组帧后,且在当前Powerlink周期结束时触发所述中断产生器一。
[0188] 其中,所述主/从站卡设计为从站卡时,所述从站卡连接工控设备,在所述工控设备的CPU上设计Powerlink协议栈用户层。
[0189] 所述用户层和所述主/从站卡满足以下特征:
[0190] 所述MAC层先接收来自主站的Powerlink同步数据触发帧Soc后,触发所述中断产生器二产生中断触发信号;所述中断产生器一依据所述中断产生器二的中断触发信号产生中断,所述中断代表一个Powerlink周期开始;所述控制器一根据所述中断触发同步数据通道,所述同步数据通道为:所述过程数据对象模块在所述对象字典依据CANopen协议的辅助下,建立的与所述同步数据缓存模块之间的通道;
[0191] 所述MAC层再接收来自主站的Powerlink同步数据,所述控制器二对所述同步数据依照Powerlink协议进行解码提取需要同步传输的Powerlink数据帧;所述同步数据缓存模块将所述需要同步传输的Powerlink数据帧,通过CAL接口依据所述同步数据通道发送至所述过程数据对象模块,供所述控制器一调取;
[0192] 所述MAC层之后接收来自主站的Powerlink异步数据触发帧Soa,所述控制器二根据所述Powerlink异步数据触发帧Soa触发异步数据通道,所述异步数据通道为:所述服务数据对象模块在所述对象字典依据CANopen协议的辅助下,建立的与所述异步数据缓存模块之间的通道;
[0193] 所述MAC层再接收来自主站的Powerlink异步数据,所述控制器二对所述异步数据依照Powerlink协议进行解码提取需要异步传输的Powerlink数据帧;所述异步数据缓存模块将所述需要异步传输的Powerlink数据帧,通过所述CAL接口依据所述异步数据通道发送至所述服务数据对象模块,供所述控制器一调取。
[0194] 本实施例的实现Powerlink工业实时以太网通讯的主/从站卡,其能进行二选一的设计:设计成Powerlink工业实时以太网通讯的主站卡,或设计成Powerlink工业实时以太网通讯的从站卡;所述主/从站卡设计为主站卡时,连接主站设备,所述主/从站卡设计为从站卡时,连接从站设备,所述主站卡通过Powerlink网络接口连接所述从站卡。
[0195] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。