1.一种基于AM335X的EtherCat主站控制系统,其特征在于,包括如下:EtherCat主站,包括标准的以太网通信控制芯片,物理层芯片PHY,隔离变压器和RJ45连接器插座模块,其中,通信控制芯片用于负责以太网数据链路层MAC;物理层芯片PHY实现数据编码、译码和收发,与通信控制芯片通过媒体独立接口交互数据;物理层芯片PHY通过隔离变压器与RJ45连接器插座模块连接,其中隔离变压器用于隔离信号;
EtherCat从站,包括物理层器件,从站控制芯片和从站控制微处理器,物理层器件用于构成硬件组成,从站控制芯片用于处理EtherCat数据帧,进行数据链路层中数据的提取和插入,完成EtherCat主站与从站本地应用的数据交换;从站控制微处理器采样设备的数据,写入从站控制芯片,通过总线与EtherCat主站通信,并通过从站控制芯片读取EtherCat主站发送的控制数据,实现设备控制;
EtherCat主站发送下行报文到总线,通过每个EtherCat从站时,各个EtherCat从站从数据帧中抽取数据或将数据插入到数据帧,并传输到下个EtherCat从站;上行报文为从EtherCat从站发送至EtherCat主站;
EtherCat主站控制系统在以AM335X为核心的系统板上移植Linux操作系统,并结合开源软件SOEM和IgH对EtherCat的移植,使AM335X的其中一个网口工作在EtherCat模式,并根据PDO映射关系,对映射的内存空间进行相应从站的访问与控制;另一个网口进行TCP/UDP通信,接入局域网进行远程控制;
系统还包括总线内存管理单元,所述总线内存管理单元用于EtherCat报文的逻辑寻址,将从站控制微处理器的物理存储地址映射到网段内的逻辑地址,实现数据交换时的寻址过程;
总线内存管理单元由EtherCat主站进行配置,且在总线初始化过程中,通过配置文件发送给EtherCat从站设备,在EtherCat主站系统中,当数据帧通过EtherCat从站节点时,若报文是逻辑寻址方式,则该EtherCat从站通过总线内存管理单元检查是否有数据匹配,若有,将物理存储空间中的输入型数据插入到EtherCat子报文数据区的相应位置,同时从EtherCat子报文数据区的相应位置抽出输出性数据到物理存储空间;
系统还包括:EtherCat状态机;
EtherCat状态机用于负责协调EtherCat主站和EtherCat从站在初始化和运行时的状态关系;
所述状态关系包括初始化状态,预运行状态,安全运行状态,运行状态;
初始化状态:EtherCat主站和EtherCat从站应用层建立通信关系,但无直接的数据交换,在此状态下完成初始化工作,包括:从站控制芯片的配置寄存器,配置邮箱通道参数预运行状态:使用邮箱通信方式,不能采用过程数据通信,此状态下,EtherCat主站通过邮箱通信方式和EtherCat从站交换应用程序的初始化操作和参数;
安全运行状态:此状态下,EtherCat从站应用程序从总线读入数据,但不能把信号输出到总线上,采用邮箱通信和部分过程数据通信;
运行状态:此状态下,EtherCat主站收发数据帧,EtherCat主站应用程序解析数据包获取EtherCat从站过程数据,EtherCat从站应用程序从总线上读取输入数据,并产生输出信号到总线,实现过程数据的上行和下载,其中,每个EtherCat主站程序包括两个步骤:配置阶段和周期运行阶段;
配置阶段:
(1)请求一个主站,运行主站程序:首先请求一个主站,调用函数ecrt_request_master(),返回一个指向ec_master_t结构类型的主站指针,后续通过该指针来实现主站的相关操作;
(2)创建过程数据域:调用函数ecrt_request_creat_domain(),返回一个指向ec_domain_t结构类型的数据域指针,后续通过该指针来实现数据域的相关操作;
(3)获取从站配置:对于每个从站来说,调用函数ec_master_slave_config(),获得一个指向ec_slave_config_t结构类型的当前从站配置指针,不同的从站调用函数时,传递的参数不同,这些的参数从一个XML文件格式的从站信息描述文档中获得,简称xml文档;
(4)注册过程数据到数据域中:进行过程数据通信,将希望获得的过程数据信息注册到相关数据域中,只有注册了才能获得,不注册的过程数据,体现在数据报文中,无论是主站还是从站都不会处理,在这之前定义变量时,就要把过程数据信息存放在相关数组中,该数组以空结构终止,调用函数ec_domain_reg_pdo_entry_list()的时候将第(2)步的数据域指针和这个数组指针传递到参数内;
(5)激活主站:调用函数ec_master_acticate(),传递第(1)步获得的主站指针作为参数;
(6)获取过程数据域地址指针:主站处理过的过程数据都会存放在一个地址空间中,称之为过程数据域地址,调用函数ec_domain_data(),传递第(2)步获得的数据域指针,返回一个指向该地址空间的指针;
(7)执行周期运行函数:结束配置过程之后,设置一个定时器,配合信号函数的使用执行周期性任务cyclic_tsak(),即进入了周期运行阶段;
周期运行阶段:
(1)主站直接从硬件获取数据帧报文并处理:调用函数ec_master_receive(),传递主站指针作为参数,完成报文解析过程;
(2)检查数据域报文状态:调用函数ec_domain_process(),传递数据域指针作为参数,检查工作计数器是否与预期一致;
(3)读写过程数据相关函数:直接对内存进行操作,针对存放过程数据中的过程数据域地址进行读写;
(4)发送数据域报文:将数据域所有报文插入到主站报文序列,调用ec_domain_queue(),传递数据域指针作为参数;
(5)发送主站报文:将主站所有报文发送到传输序列,调用ec_master_send(),传递主站指针作为参数,返回值为发送报文的长度;EtherCat报文结构包括:报文头,数据字段和此条报文的工作计数器,所述报文头包括命令、索引、地址区、报文数据区长度、保留位、后续报文标志以及状态位;
系统还包括:系统时钟和本地时钟;
所述系统时钟是分布时钟对EtherCat主站控制系统的整个系统计时,用于同步EtherCat主站和EtherCat从站;
所述本地时钟包括主时钟和从时钟,主时钟和各从时钟独立运行。