新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于Linux的EtherCAT主站的研究

基于Linux的EtherCAT主站的研究

作者: 时间:2016-12-21 来源:网络 收藏

图5应用程序对主从站的配置流程

图6从站同步管理信息

4.1.4 SDO配置

SDO是COE协议的非周期数据传输方式(邮箱传输方式)。通过SDO可实现参数的设置与读取。为了能够在周期任务程序中直接对某个参数进行操作,应用程序需要在配置阶段创建一个针对该参数的SDO请求,并设置请求超时的时间。

4.2周期任务的实现

4.2.1实时性的实现

应用程序需要一个高实时性的定时器,定时调用周期任务。在不采用RTLinux和RTAI等实时内核的情况下,为了保证高的实时性可以采用内核定时器。其使用方法如下:

1)在应用程序模块初始化阶段初始化内核定时器

static struct timer_list timer)//定义一个定时器列表

init_fimer(&timer);//初始化一个内核定时器节点

timer.function=cyclic_task;/挂载周期性函数

timer.expires=jiffies+10;//设置定时中断的时间

add timer(&timer);//激活内核定时器节点

2)在周期任务函数cyclic_task中重启定时器

timer.expires+=HZ,1000;//设置定时中断的时间

add_timer(&timer);//激活内核定时器节点

其中jiffies为系统自启动到当前时刻为止系统时钟产生的滴答数。timer.expires为定时中断启动的预期时刻,以滴答数为单位。宏定义HZ记录了系统时钟所要求的可编程定时器产生滴答数的频率。其值可在内核配置选项CONFIG_HZ选配。最大值则决定于硬件特性。假设HZ为1000则(2)中定时中断的时间为1毫秒。由于cyclic_task函数被挂载在timer.function上,因此每到该内核定时器节点达到预设定的中断时间便进行中断调用,而调用cyclic_task函数中又再次预设定了timer的中断时间,故而形成周期为1毫秒的周期性任务。

4.2.2周期任务中的工作

如图3(C)所示,周期任务用于通过主站实时发送和获取从站的信息,并对信息进行实时的处理,如逻辑控制中逻辑运算和运动控制中的各种算法。处理的信息包括过程数据对象PDO和邮箱传输方式的数据对象(如COE中的SDO)。其中PDO通过“数据域指针+地址偏移量”方式直接读写;SDO访问方法(以读SDO为例)如下:


5实验与结论

图7为研究基于Linux的EtherCAT主站的实验平台。IPC(工业级计算机)主频为1.2G,运行linux系统为Fedora 8。ARM开发板采用PAX270,运行linux-2.6.9内核,交叉编译器为arrn—linux—gcc-3.4.3。EtherCAT从站设备包括Beckhoff公司出品的EK1100和Copley公司的Accelnet伺服驱动器。在此平台的基础上开发出了基于ARM的嵌入式运动控制器。由于ARM中Linux内核版本较低,周期任务的最快速度目前为10ms。若直接采用IPC进行控制,则速度可达1ms。


上一页 1 2 3 下一页

评论


技术专区

关闭