基于Linux的EtherCAT主站的研究
状态机功能的基础,它的主要用途是:
1)监控总线上设备的变化。如:当有新的从站设备接入时,便对其进行扫描和配置。
2)监控从站应用层状态。若从站状态与要求不符便对其进行重新配置。
3)接收用户层的指令,进行状态的切换。
4)处理对SII和SDO等的请求操作。
4应用程序开发的流程
应用程序是用户针对自身控制系统的控制要求编写的控制程序模块,运行于内核层。包括对主站和从站的配置以及周期性实时运行的任务。在实时任务程序中实现主从站间通讯以及各种数控算法。
4.1主站和从站的配置
如图5所示,应用程序的module init()函数中首先要对主、从站的通讯进行配置。其中的几个关键技术与重要概念如下:
4.1.1数据域指针
数据域是EtherCAT过程数据(PDO)向程序中的数据结构的映射,它提供了用户程序对总线上各个从站进行数据访问的入口。当从站PDO入口注册成功后,不同从站都将获得一个属于自己的地址偏移量,用户可通过“数据域指针+地址偏移量”的方法对所需PDO进行读写操作。
4.1.2从站配置信息
主站对从站的扫描识别由四个参数决定:化名(保存在EEPROM中,可由主站修改)、位置(决定于从站在总线中连接的顺序)、厂商ID号和产品号。这些信息构成从站配置信息。
4.1.3从站同步管理信息
这一信息可从EEPROM中的SⅡ或者厂商提供的设备描述文件(即xml文件)获得。以Copley公司的Accelnet伺服驱动器为例,其设备描述文件的一部分为:
前4行信息表明该设备拥有4个同步管理通道。前两个为邮箱传输方式,用于COE协议的通讯,负责对SDO的传输。后两个为过程数据传输方式,负责对PDO的传输。其中StartAddress参数为物理起始地址,即该同步管理通道在双口RAM上的起始地址;ControlByte参数为控制字,包含了该通道的传输
图4主站状态机
方式、传输方向等信息。之后的三个参数规定了该通道的大小。第5行起开始定义RxPdo,与CANopen协议类似,EtherCAT的PDO也通过索引号和子索引号进行识别。将x1600_——x1607定义为RxPdo(接收PDO),在这8个接收PDO中安排被主站接收的参数。将x1A00_——x1A07定义为TxPdo(发送PDO),在这8个发送PDO中安排向主站发送的参数。由于该款Accelnet伺服驱动器支持COE,因此其原有的CAN总线中使用的参数可保持不变。图6表明将控制字x6040的0号子索引,长度为2个字节,映射到RxPd00中。应用程序将以上同步管理信息写入数据结构ec_sync_info_t中,作为ecrt slave config_pdos()的参数,通过调用该函数最终完成完整的PDO配置。
图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通过“数据域
LinuxEtherCAT主站现场总线技 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)