基于Linux的EtherCAT主站的研究
引言
随着网络技术的迅速发展,当今的工业现场总线技术均逐渐过渡到实时工业以太网阶段。如西门子公司的PROHBUS到PROFINET;博世力士乐公司的SERCOS?到SERCOSIII等。同时一些新兴的工业实时以太网技术也以其全新的起点和优越的性能脱颖而出。其中EtherCAT(Ethernetfor Control Automation Technology)技术(也称为以太网现场总线),便是其中较为突出的一个。现场总线技术的实现主要依赖于主站与从站两大部分,其中尤以主站技术最为复杂,同时也是控制系统中通讯部分的核心。从历史上看现场总线主站技术的演变经历了主动卡(如SERCOS一代卡)、被动卡(如SoftSERCANS卡)、软主站(不需要专门的硬件卡,如可支持Eme疋AT总线的TwinCAT和Codesys软件)。这使得运动控制器的开发对特殊硬件板卡的需求逐渐降低,直至彻底抛开,从而实现其开放性和灵活性。研究Linux下的EtherCAT主站系统在研究软主站的基础上又有两个意义:一是Linux操作系统为开源系统,在其基础上的任何软件方面的研究都可直至底层,为自主创新提供可能。二是Linux操作系统很容易移植到ARM处理器平台上,而ARM架构相对X86硬件系统具有诸多灵活性和开发性,方便国内厂商开发出基于自身硬件平台的高性能控制器。因而此项研究即有助于开发基于软主站的开放式运动控制器,同时可为研制我国自主的工业实时以太网标准提供借鉴,具有较强的实际意义。
1 Linux-FEtherCAT主站系统结构
Linux系统总体分为内核层与应用层。其中内核层运行系统的核心调度与驱动程序,内核层中的程序称为模块,实时性较高。应用层运行各种桌面程序和应用程序,实时性差。Linux系统下EtherCAT软主站系统结构如图1所示。
1)网络设备部分。EtherCAT软主站不使用特殊硬件,而是普通的网络设备(如PCI网卡)。内核层中含有网络设备模块,但为了实现EtherCAT协议,需要对普通嘲络设备驱动进行修改。
2)主站模块与应用程序。为了保证实时性的要求,EtherCAT主站模块与应用程序模块均在内核层。其中EtherCAT主站模块实现全部的协议解析、任务调度并为网络设备与应用程序提供函数接口。应用程序模块最终实现对各种自动化系统的控制,由用户根据具体的控制对象和控制要求进行编写。
3)EtherCAT工具。该程序提供了各种可以在Linux用户层运行的命令。可以直接实现对从站的访问和设置。如:设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。由于用户层无法直接访问内核层的数据,因此需要构造Linux字符设备。通过对字符设备的访问间接实现与EtherCAT主站模块的通汛。
图1主站系统结构
2数据帧的传输过程
数据帧的传输是EtherCAT主站模块的重要功能,是实现EtherCAT协议传输的基础。EtherCAT主站的工作主要分为三个阶段如图2所示。
图2主站线程工作状态
2.1孤儿阶段
当EtherCAT主站模块被加载到内核后,状态处于孤儿阶段,等待网络设备模块的加载与正常启动。
2.2空闲阶段
当存在可用的网络设备后,主站进入空闲阶段,并启动线程发送广播数据帧,对从站进行循环扫描。当扫描到可用从站,便对其进行配置。同时随时以扫描的方式监控总线上的变化。实现方法如图3(a)所示。主要过程分为接收数据帧、执行当前状态机(详见数据通讯管理的实现一节)、将数据帧添加至链表、发送数据帧链表中的全部数据。
2.3操作阶段
当有应用程序模块运行时,主站进入操作阶段。如图3(C)所示,应用程序通过调用ecrt_master_activate()函数,停止主站模块中运行的“空闲线程”,启动“操作线程”。该线程只调用了执行当前状态机的函数,如图3(b)所示,以便监控总线中的变化,而将原本主站模块执行的收发数据帧的函数放到了应用程序中,为实现实时控制提供条件。
图3空闲阶段与操作阶段程序流程
3 数据帧通讯管理的实现
主站实现通讯管理的核心是有限状态机(FMS)理论睁J。有限状态机又称为有限状态自动机或简称状态机,是表示有限个状态以及这些状态之间的转移和动作等行为的数学模型。这一数学模型具有输入与输出,输出不仅依赖于输入而且依赖于输入的历史情况。作为承担了主要数据管理工作的主站的工作内容,取决于用户的输入以及与从站的通讯状态,亦即通过分析用户的输入与接收到的来自从站的数据报文后再调用相应的函数。主站程序中包含的状态机有:主站状态机、从站扫描状态机、从站配置状态机、状态切换状态机(管理从站应用层的状态切换)、读写SII(从站信息)状态机、读写SDO(如COE协议中的非周期数据)等。主站状态机(如图4所示)又是实现其他
LinuxEtherCAT主站现场总线技 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)