第三节 KPA EtherCAT主站简介和移植
3.1 主站硬件简介
从理论上讲,任何带有一个或以上标准以太网接口的硬件设备都可以运行EtherCAT主站。只是不同的硬件平台,CPU,网卡,操作系统不同,能达到的EtherCAT性能也不同。但为了保证实时性,一般会建议采用实时性能更好的网卡,比如X86方案的I1210、Pro1000、Pro100等;ARM方案则选ARM厂家优化后的网卡;FPGA则可以用KPA另外做好优化的FPGA的IPcore再外挂实时网卡实现。
在本例中,采用的是X86的硬件平台,CPU型号为Intel(R)Core(TM) i7-3840QMProcessor,该型号四核八线程,主频2.80GHz,睿频3.80GHz,缓存8M SmartCache,总线速度5GT/s DMT。
具体介绍请参考链接:
http://ark.intel.com/zh-cn/products/70846/Intel-Core-i7-3840QM-Processor-8M-Cache-up-to-3_80-GHz?q=i7-3840QM
网卡型号是Intel(R) 82579LM Gigabit Network Connection。该网卡是Intel官方出品的一款通用级别的网卡,最高速达到千兆,兼容百兆/千兆网口。如果使用的是Intel的I210系列的网卡,那么性能会更上一层楼。具体介绍请参考链接:
http://ark.intel.com/zh-cn/products/47620/Intel-82579LM-Gigabit-Ethernet-PHY
为了连接EtherCAT网络配置诊断工具KPAStudio,本例中的主站还外置了一块普通的USB网卡。
主站硬件框架如图6所示。
图6 主站硬件框架图
3.2 主站软件简介
KPA EtherCAT主站是几乎满足目前所有用户主站开发要求的一款主站方案,提供了多种不同硬件平台和OS的现成开发包,支持SoC(ARM+FPGA)/ARM/X86 /PowerPC等主流硬件平台,支持Linux(Xenomai/RT-preempt)/ Windows(INtime/RTX)/ QNX/ Ucos/ Vxworks等。
在本例中,采用的是硬件平台是X86,操作系统为Linux3.8.13(带Xenomai2.6.3实时补丁)。
KPA EtherCAT主站结构框架如图7所示。
KPA主站协议栈采用模块化的架构,可以实现每个特殊的项目应用。它使得主站可以自由扩展以适应不同大小的应用程序、可以移植不同的操作系统和各种各样的硬件平台。每个模块可以单独定制化或者二次开发,而且不会破坏其他模块的完整性。
图7 KPAEtherCAT主站结构框架图
KPA EtherCAT Master各模块简介:
Application:用户的应用程序,通过调用主站API函数实现EtherCAT功能,如启动/停止主站,配置主站,更新过程数据(PI)等。
ApplicationLayer:应用层负责连接用户应用程序和EtherCAT主站协议栈。一来提供丰富易用的API函数,用户无需详细协议栈内容,只需调用API函数即可实现EtherCAT完全功能。二来提供RPC Server,该服务器可用于连接网络配置工具KPA Studio。KPA Studio可以远程调试主站,功能包括:配置EtherCAT网络,扫描拓扑结构,设置从站地址和EEPROM信息,显示报文数据和曲线图,网络故障诊断和建议等等。
MailboxModule:EtherCAT邮箱通信模块利用不同的协议处理服务数据对象(SDP),完成其数据传输以及数据交换。支持CoE,FoE,EoE,SoE,VoE,AoE等邮箱服务。
Process ImageModule:Process Image简称PI,过程数据模块,负责处理所有的实时过程数据,它的地址是由EtherCAT network information (ENI) 文件提出的,ENI文件可由配置工具KPAStudio自动生成。
DistributionClock:分布时钟模块,实现分布时钟功能,使得所有的EtherCAT设备(包括主站和从站)总是能够共享相同的EtherCAT系统时钟。
Master threads:主站线程,共三个处理循环,用于初始化EtherCAT帧并传送给帧调度(frame scheduler),其中包括PI更新循环(HI),邮箱通信循环(NR),自恢复与诊断循环(LO)。
所有要求硬实时的任务都必须在HI(PI update cycle)中完成。HI在这三个主站进程中拥有最高的优先级。
NR用于邮箱数据处理。NR的优先级比HI低,但比LO要高。
LO用于改变从站状态,监控,自恢复和诊断。LO并不像HI和NR那样对时序要求非常严格,所以它的优先级是最低的。
Process task(external task):实现各种控制逻辑的回调函数。每一次更新PI时(即HI进程)都会调用一次Process task。
FrameSchedule Module:帧调度模块,根据帧的优先级把帧转发给EtherCAT网络驱动。
OSAL:操作系统抽象层模块,包含与操作系统相关的功能函数的包装,比如处理线程、计时器、互斥量等。
EtherCAT可以支持很多功能,ETG1500定义了Class A和Class B两种主站类型。其外,KPA还支持一些拓展功能比如:
Data- and Frame-Logger(记录数据和报文)
Access Rights(设置不同的访问权限)
Multi Master(多主站,冗余)
Cable Redundancy (线缆冗余)
Hot-Connect(热插拔)
其他...
3.3 主站EtherCAT移植
主站的EtherCAT移植主要可分为两部分,一部分是操作环境的搭建,另一部分是EtherCAT开发包的编译运行。相应的移植步骤如下:
1)从http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.13.tar.gz下载
Linux3.8.13内核源代码,放到Ubuntu电脑中,并解压。
2)从http://xenomai.org/downloads/xenomai/stable/xenomai-2.6.3.tar.bz2下载
Xenomai2.6.3实时补丁源代码,放到Ubuntu电脑中,并解压。
3)打开Linux控制台,进入路径/xenomai-2.6.3/scripts,运行prepare-kernel.sh脚本文件,把路径/xenomai-2.6.3/ksrc/arch/x86/patches下的补丁文件ipipe-core-3.8.13-x86-4.patch打到Linux3.8.13的内核源码中,指令如图8所示。
图8 Linux内核打Xenomai补丁
4)进入Linux-3.8.13的路径,执行make menuconfig,根据自己的需求进行内核功能裁剪,保存退出在当前路径下会自动生成.config文件(该文件为隐藏文件),如图9所示。
图9 配置Linux内核
5)进入Xenomai-2.6.3路径下,安装Xenomai库文件到X86电脑上,指令为:
./configure –prefix=xenomai库存放的路径/xenomaimake install
| [tr][/tr][tr][/tr][tr][/tr][tr][/tr] 如图10,即把Xenomai库安装到路径/home/q123/test/xenomai下。
图10 安装Xenomai库
6)回到Linux-3.8.13路径下,编译内核,在上层路径下自动生成内核安装包。指令如图11,12。
图11 编译Linux内核
图12 生成内核安装包
再运行指令安装内核:
sudo dpkg -ilinux-image-3.8.13-21072016_2jq.001_i386.deb | [tr][/tr][tr][/tr][tr][/tr][tr][/tr] 7)最后,重启X86电脑,并用重新安装的内核启动。
至此,环境搭建的部分已经完成,接下来只是安装实时网卡驱动,编译开发包即可。
8)从http://www.rtnet.org/download.html下载实时网卡驱动rtnet-0.9.13.tar.bz2,在Ubuntu电脑上解压。
9)进入rtnet-0.9.13路径下,配置网卡驱动,指令如下(红色部分为网卡型号):
./configure--enable-rtmac --enable-rtpacket --prefix=/usr/rtnet--enable-e1000e--enable-loopback |
然后执行
makemake install
modprobee1000e(插入网卡,e100e是本例中用到的网卡型号)
| [tr][/tr][tr][/tr][tr][/tr][tr][/tr]
10)下载从KPA申请到试用包后,在Ubuntu电脑上解压,解压得到的内容如图13,其中01_XXXX至17_XXXX命名的是18个样例工程。
图13 KPAEtherCAT主站开发包内容
11)进入MDK_Trial_Xenomai_U_xenomai-2.6_x86_64_v1.5.56202.0/platform/toolchain,找到Makefile.config,打开并修改编译器路径,Xenomai库路径等。如果路径不对,开发包将无法正常编译。如图14。
图14Makefile.config文件修改
12)Makefile.config文件修改后,进入各个样例工程,可进行make编译样例工程。
|