导言
跟着网络技能的迅速发展,当今的工业现场总线技能均逐步过渡到实时工业以太网阶段。如西门子公司的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)所示,以便监控总线中的改变,而将原本主站模块履行的收发数据帧的函数放到了使用程序中,为完成实时操控供给条件。