IgH Master 1.5.2 Documentation 中文版

本部分为IgH Master 1.5.2 Documentation 中文翻译


英文原文链接 :http://www.etherlab.org/en/ethercat/

原文链接:http://blog.csdn.net/woshidahuaidan2011

作者:


第一章 概况


EtherCat-1.5.2理论上适用任何实时性(rtai,xenomai)或者非实时性的内核(linux-2.6以上的版本),一方面考虑到在内核空间相比用户空间函数的延迟时间短且内核空间可直接操作网络硬件,另一方面,由于主站大多是周期工作,而周期工作的时间大多有内核定时器触发,因此作用在内核空间定时器将更准确。因此早期就把主站设计整合到内核空间。
EtherCat-1.5.2提供8139too、e100、e1000、e1000e、 r8169等几个本地化的网络驱动,使能这些驱动后,EtherCat-1.5.2将不会调用linux kernel内置的网络驱动,无中断直接操作硬件底层,因此实时性比较好;除此之外,EtherCat-1.5.2为了解决兼容性的问题,也支持通用的网卡驱动(linux kernel 自带的网络驱动),但是相比之下实时性没有EtherCat-1.5.2本土驱动好。
EtherCat master 代码提出的域的概念。域可以使过程数据根据不同的从站组或者任务周期进行分组发送。所以说在不同的任务周期可以处理多个的域,FMMU和同步管理单元将对每个域进行配置,从而自动计算过程数据的内存映射。
本驱动支持的功能有:

Ø  通过几个有限的状态机进行通信

  • 当从机拓扑改变主站自动重新扫描
  • 运行状态下可进行总线的监控,掉电自动重新配置

Ø  分布时钟的支持

  • 通过应用程序接口可配置从站的的DC参数
  • 可根据参考时钟同步(时间偏移和漂移补偿)分布式从站

Ø  支持CANopen over EtherCAT (CoE)

  • SDO的上传下载和信息服务
  • 从站可通过SDO进行配置
  • SDO可在应用层或者用户空间进行存取


Ø  此外还支持    EOE VOE FOE SOE

Ø  ethercat还提供了用户空间命令行工具

  • 可以查看主站,从站,域和总线配置的详细信息
  • 可设置主站的调试水平
  • 读写别名地址
  • 监听从站配置
  • 查看过程数据
  • SDO下载和上传,监听SDO字典
  • 通过FOE下载或者存储文件
  • SOE IDN访问
  • 访问从站寄存器
  • 访问从站SII
  • 控制应用层转台
  • 从现有的从站生成XML配置文件和C代码

Ø  为了调试监听虚拟出只读网络接口


上面简要介绍了主站模块的大部分功能,那么主站的构架图可以描述为:


IgH Master 1.5.2 Documentation 中文版_第1张图片

上面的图完整的描述出来主站的整个构架,对于主站驱动来说,一个驱动可生成多个主站,具体驱动加载方法为:

假如驱动只有一个主站,则为:

insmod ec_master main_devices=00:0E:0C:DA:A2:20

其中后面的为网卡的MAC地址

假如驱动要多个主站,则:

insmod ec_master main_devices=00:0E:0ncC:DA:A2:20,00:e0:81:71:d5:1c

当然加载驱动的时候还可以带上


1.1 主站运行阶段

由主站驱动提供的EtherCat主站可运行在如下图中几个阶段:
IgH Master 1.5.2 Documentation 中文版_第2张图片

图中可以看到,主站可运行在孤儿阶段、空间阶段和可操作阶段。

在孤儿阶段,主站等待以太网设备连接。

在空闲状态,主站已经连接了以太网设备,但是应用空间并没有对主站请求。在此阶段,主站会自动扫面从站总线并等待应用空间的操作。在此阶段,命令行工具可以访问总线,但是由于缺少总线配置,不能进行过程数据的交换。

在操作状态,主站被应用层请求,此时可对总线进行配置也可进行过程数据的交换。


主站通过过程数据对象(ProcessData Objects (PDOs))来获取从站的输入输出,PDO既可以通过SII从eeprom(一般存放的固定的PDOs数据)中读取,也可以使用COE进行配置PDOs。应用层可以在周期数据交换中注册一个PDOs条目,所有注册的PDOs条目之和通过逻辑寻址定义了过程数据映像(processdata image)。

通过创建域(Domains)可以方便的管理过程数据映像,,域允许分组PDO交换。域还负责管理pdo交换所需的数据报结构。域为数据交换过程是强制性的,所以至少有一个。因为如下原因提出了域的概念:

  • 每一帧最大传输EtherCat数据的大小受以太网数据帧大小的限制。其大小的值为以太网帧的最大值减去EtherCat数据报头的大小:1500-2-12-2=1484字节。假如过程数据映像的大小超过了1848字节,那么就需要将该数据映像分割成多个帧来传输。那么域将会自动的管理这类的问题。
  • l  有些数值像温度这样的PDOs数据值并不是频繁的变化的,所以高频率的交换这些变化缓慢的PDO信息将会造成带宽的浪费,创建多个不同的域对PDOs进行分组管理和不同周期数据交换可以解决这个问题。
对于域的个数,并没有数量上的限定,但是由于每个域要占用从站一个FMMU,所以域的个数将会受到从站FMMU个数的限定。

1.3 FMMU的配置

应用层为了交换数据而注册一个PDOs条目,每一个PDOs和其父类的FDOs都要占用从站物理空间内存中的一部分。为了保证同步访问,这片内存受同步管理器的保护。为了能使数据报访问对应的内存,要确保同步管理器要管理整个数据帧的映射区。否则同步管理器将无法管理数据报,所有的数据也无法进行交换。这就是整个同步内存单元必须列入过程数据映像的原因。比如,从站的一个特定的PDO条目依附于一个特定的域,那么必然有一个FMMU被配置成映射完整同步管理受保护的存储PDO条目的内存。假如同一个从站,同一个域,有第二个PDO条目需存储在存储上一条PDO条目的存储中时,因为这块内存已经是该域过程数据映像的一部分,所以FMMU将不会发生变化。假如上面所述的第二个PDO条目属于另外的同步管理单元,那么这个单元将完整的列入域的过程数据映像中。
下图显示了FMMU有物理内存映射到逻辑过程数据映像的配置原理:
IgH Master 1.5.2 Documentation 中文版_第3张图片


第二部分:应用接口

所谓应用接口就是驱动程序提供的一些应用函数或者数据接口供应用开发者调用进而对主从站进行相关的配置,以便主从站可以正常的工作。

2.1从站的配置

一般在程序的开始阶段,都要对从站进行配置以达到应用者的目的。首先应用开发者根据自己的需求创建一个配置从站的数据结构,然后将该数据结构跟实际的从站进行绑定,假如绑定成功后,从站就可按照应用者的配置进行相关的工作。

配置文件根据设定的从站在总线上面的位置、厂商ID和产品码与具体的从站进行绑定。对于从站在总线上的位置,驱动提供了别名和位置编码相结合的方式寻找对应的从站。别名和位置编码都是16位的数字,其存放在从站的EEPROM中,具体的含义是:

 

 

别名

 

 

位置

 

描述

 

0

0 - 65535

由于别名为0,因此其位置编码就是从站在总线上的绝对位置。

1 -65535

0 -65535

别名为非0值,此时,位置编码就是从站在总线上的相对别名的偏移量,从站的位置是别名的值+位置的值。

 

举个例子,比如总线上有如下几个从站,其信息为:

   编号

参数

Slave0

Slave1

Slave2

Slave3

Vendor

0X00000001

0X00000002

0X00000001

0X00000001

Product

0X00000001

0X00000004

0X00000002

0X00000002

Alias

0

0X1000

0X2000

0

其中假设连接顺序是Slave0------- Slave1-------Slave2------- Slave3

现假设有如下几个从站的配置:

   编号

参数

A

B

C

D

E

Alias

0

0

0x2000

0x3000

0x2000

Position

1

0

0

0

1

Vendor

0X00000002

0X00000001

0X00000001

0X00000001

0X00000001

Product

0X00000004

0X00000002

0X00000002

0X00000002

0X00000002

 

那么现在就从编号为A的配置依次说明配置到底跟那个从站进行绑定

  • 编号为A的别名为0表示其配置位置信息就是从站在总线上的绝对位置信息也就是对应的Slave1(因为Position为1),其次编号为A的配置的Vendor和Product业与Slave1一直,因此,编号为A的配置将会跟Slave1绑定起来。
  • l编号为B别名为0表示其配置位置信息就是从站在总线上的绝对位置信息也就是对应的Slave0(因为Position为0),但是由于编号为B的配置信息中的Product与Slave0不一致,所以编号为B的配置不能与Slave0绑定。
  • 编号为C别名为0x2000,所以此时Position为相对地址,所以其对应的是Slave2(Slave2是第一个Alias为0x2000的从站,默认情况下相对偏移量就是0)。其次编号为C的配置的Vendor和Product业与Slave2一致,因此,编号为C的配置将会跟Slave2绑定起来。
  • 编号为D别名为0x3000,没有任何一个从站的别名为0X3000,所以无法配对。
  • 编号为E别名为0x2000,所以此时Position为相对地址,所以其对应的是Slave3(Slave2是第一个Alias为0x2000的从站,默认情况下相对偏移量就是0。总线上,Slave3在Slave2后面,所以偏移地址为1)。其次编号为E的配置的Vendor和Product业与Slave3一致,因此,编号为C的配置将会跟Slave2绑定起来。


2.2主站共享访问

一般情况下,一个EtherCat驱动有多个实例,多个实例之间是通信可能会出现竞争,比如应用程要与从站进行数据交换的的同时,主站同时通过EOE请求与内核交换以太网数据。此时,主站在为每个实例共享资源的同时还要保证他们可以顺序访问。

由于主站本身无法知道应用层到底是使用那么锁机制(主要是实时系统跟普通的系统的锁机制不太一样),因此主站不会提供锁机制。那么他们之间如何访问方式为:EOE程序在访问之前会询问应用层是否也在访问,以免发生发文冲突。所以应用层可以通过适当的锁机制来保证多实例间的访问冲突。其原理可用下图来表示:
IgH Master 1.5.2 Documentation 中文版_第4张图片

2.3 分布时钟

IgH Master 1.5.2 Documentation 中文版_第5张图片

驱动代码中,同步时钟涉及到如下几个概念:

本地时钟:每一个支持DC的从站都有一个纳秒级分辨率的本地时钟寄存器。每次从机上电,则寄存器从0开始计时,这就意味着不同的从机因为上电开机的时间不同而本地时钟也会有差异,所以需要对从机的本地时钟对比参考时钟进行偏移补偿。再者,从机的时钟一般由时钟单元为参考,所以每个从机的时钟频率也会有极小的误差,但是由于这种极小的误差在长时间的工作中会累积,所以想要完全的时钟同步,也要对这种时钟漂移做出补偿。

应用时间:应用层为总线提供的基础时间,应用时间 有如下用途:

配置从站的时间偏移

为从站的同步脉冲发生器设定开始时间

为主站时钟同步参考时钟

偏移补偿:对于偏移补偿,每个从站都有偏移补偿寄存器 ,偏移补偿值加上从站本地时钟的初始值就是参考系统时钟的值,数学表达式为:

IgH Master 1.5.2 Documentation 中文版_第6张图片

  • 漂移补偿:所谓的漂移误差就是由于DC从站使用各自本地时钟源,它们的计时周期存在一定的漂移,这将导致时钟运行不同步。因为支持DC从站的一个特殊机制使得飘移补偿成为可能,这个机制就是当有一个写系统时间寄存器操作的时候,内部时间控制环路(internal time control loop)去比较写入时间(减去传输延迟,具体见下段)和当前的系统时间,比较的误差将作为时间控制寄存器的输入,依次来增加或减缓本地时钟,从而消除漂移误差。
  • 传输延迟:以太网帧在由从站到从站的传输过程中需要一些时间,假如不作处理,传输的这个时间将会不断的积累,最终可能达到毫秒级误差,因此我们必须在漂移补偿的时候将传输延迟考虑在内。支持DC的EtherCAT从站提供了一个测量传输延迟的方案:对于从站的四个端口都配有一个接收时间寄存器,大部分当数据帧到达每个从站后,从站都会分别保存每个端口接收到的以太网帧的时刻。主站通过读取记录的这个时间值来计算EtherCAT帧在从站之间和从站到参考时钟的传输延迟并把从站到参考时钟的传输延迟写入传输延迟寄存器中。通过这种方法,漂移补偿可以达到纳秒级同步
  • 检测同步:支持DC的从站提供了32为系统时间差寄存器(地址为0x092c),该寄存器以符号幅度码(sign-and-magnitude coding)的形式存放着本地时间与参考时钟之间的差值(纳秒级分辨率)。在linux中,可以使用命令行工具查看该寄存器的值,具体操作为:
$ watch -n0 "ethercat reg_read -p4 -tsm32 0x92c"
  • 同步信号:同步时钟仅仅是总线上同步事件的一个必要条件,每个支持DC从站有两个可编程同步事件,事件触发的同步信号以备供应用层调用。每个同步事件可根据应用要求既可以只触发一次也可以循环触发。编程同步信号是一种所谓的设置“AssignActivate”字和设置同步信号的周期和转变时间的问题。“AssignActivate“字的设置方式跟具体的从站有关,而且必须从XML文件中对描述从站对“AssignActivate“字的设置,在典型的同步信号的配置可以找到“OpModes、

第三章 状态机

在内核代码中,为了更有效的处理整个流程,主站模块在很多部分都用到了有限状态机( finite state machines (FSMs) ),虽然使用较多的状态机会导致程序应用更加的复杂,但是这给用户解决一些问题的提出了更多的可能性。
下面的简短的代码说明是如何读取所有的从站状态,并在下文说明了顺序编码的限制性:
• ec_datagram_brd ( datagram , 0x0130 , 2); //准备数据报
• if ( ec_master_simple_io (master , datagram ))
• return -1;
• slave_states = EC_READ_U8 ( datagram -> data ); // 处理数据报
上面的代码中,ec_datagram_brd()函数提供了一个同步发送数据和接受返回结果的一个简单的接口。在其函数内部,有一个数据报队列,然后再调用ec_master_send_datagrams()函数,该函数会将队列中的数据报以数据帧的形式发送出去,然后主动等待之前发送数据报的返回结果。
上面按照顺序逻辑实现的几行代码非常的简单,当主站只有一个实例的时候,这种方法也确实简单实用,但是当主站模块有多个实例而且多个实例要同步使用主站的时候,这种方法就暴露了其缺点:当主站发送完数据包等待从站返回数据时可能引起阻塞(因为多个实例之前存在着资源等方面的竞争)。为了解决这个问题必须替换掉之前的顺序模型,改用其他的方案。
假如多个从站想要同步发送接收数据报就必须顺序的访问主站。就目前的解决方案(顺序访问)来看,这将导致每一个实例会有一个不休眠的等待阶段(发送完数据后等待从站的回复)。这个等待阶段势必会浪费大量的时间,对于运行系统尤其是对于实时性系统,这会让人难以接受。
一个可能的解决方案是,所有的实例都依次的将他们的数据报放入队列,然后将控制权让给下一个实例而不是原地等待从站对数据报回复。最后,总线IO由下一个实例来完成的,这意味着所有排队的数据报都会被发送和接收。下一步骤将再次执行所有实例,然后处理其接收到的数据报,并发出新的数据报。
按照上面所述的,由于当一个实例当把控制权交给下一个实例的时候,该实例必须保持其状态。因此,此时理所当然的要用到有限状态机模型,下面将通过简短的代码说明状态机的应用:
// 状态 1
ec_datagram_brd ( datagram , 0x0130 , 2); //准备数据报
ec_master_queue (master , datagram ); // 数据报加入队列
next_state = state_2 ;
// s状态处理完毕
当所有的实例执行完当前的状态,并把数据报加入队列,这些数据报将会被发送,并得到回执。接下来将会执行下一个状态:
// 状态 2
if ( datagram -> state != EC_DGRAM_STATE_RECEIVED ) {
next_state = state_error ;
return; // 状态处理完成
}
slave_states = EC_READ_U8 ( datagram -> data ); // 数据数据报
// 状态处理完成

3.1主站状态机

在主站内核代码执行过程中,总会出现各种情况,比如有些从站被人为的拔下或者从站之间的连接的网线断掉,为了保障主站可以正常的运行,主站必须时刻的检测网络拓扑的状态,因此需要运行一个主站状态机来完成上面提到的工作,其执行在主站状态的上下文中,其有如下几个阶段:
 Bus monitoring :监视总线的拓扑结构,假如拓扑改变,总线将重新扫描。
 Bus monitoring:监控从站的应用层状态,假如检测的从站状态非理想状态,将会进行重新配置。
 Request handling:应用层或者外部源请求处理。比如像SII或者SDO访问等要求需要主站异步处理。
主站状态机就是在上面三个状态之间不断的转换,具体主要实现流程图如下:
IgH Master 1.5.2 Documentation 中文版_第7张图片
上图中只是列出比较重要的部分做出了介绍,主站驱动被加载之后就会不断执行此状态机。期间当检查到从站状态出错的时,还会启动从站状态检测状态机。同时,在执行过程中也会不断的检测是否出现错误及其是否需要退出本状态机。

3.2从站扫描状态机

主站为了方便的获取从站的信息,建立了从站扫描状态机,其主要有如下几个 步骤:
 Node Address :为从站设置的节点地址,有了节点地址才可以进行下面的工作。
 AL State :读取应用层的状态
 Base Information:从内存中读取一写基础信息(比如从站中FMMU的个数)。
 Data Link :从物理端口读取一些信息。
 SII Size SII:内容的大小,以便为SII申请映像内存。
 SII Data :从主站的SII映射内存中读取的SII数据。
 PREOP :假如其支持COE,PREOP 被设置成使用状态变化的FSM使能邮箱通信并通过COE进行PDO的读取。
 PDOs :通过COE读取PDOs,通过PDO读取FSM,假如读取成功,SII中的PDO信息将被重写。
具体的执行流程图如下:
IgH Master 1.5.2 Documentation 中文版_第8张图片

上图可以看出从站扫描状态机就是不断的读取从站的信息,以保障主站可以正常的工作。

3.3从站配置状态机

NIT:从站处于初始化阶段。
 FMMU Clearing :清除FMMU中的配置,以免过程数据对从站造成影响。假如从站不支持FFMU则直接跳过此状态。
 Mailbox Sync Manager Configuration:假如从站支持邮箱通信, 邮箱同步管理器将被配置,否则直接跳此状态。
 PREOP:此状态将会是从站处于预运行状态。
 SDO Configuration :在从站已经被配置情况下,在此阶段,应用层提供的SDO配置将会发送给从站。
 PDO Configuration :该阶段用来应用所有的必须的应用配置。
 TPDO Sync Manager Configuration:假如存在PDO同步管理器,则配置它。
 FMMU Configuration :如果应用层提供了FMMUs的配置(比如应用层申请一个PDO条目),则应用此配置。
 SAFEOP :使从站处于安全运行状态。
 OP:使从站处于运行状态。

还有其他的感觉没啥意思,不想翻译了。。。。。。。。。。。

第五章 命令行工具的使用

EtherCAT为了方面用户空间对主站进行调试,因此提供一套用户空间使用的工具用来设置从站参数,观察调试信息等等。
正常情况下,每个主站的实例都有生成一个字符设备,名字为:/dev/EtherCATx, 其中 x ∈ {0 . . . n}为主站实例的索引。
下面具体的介绍一下各参数的使用,下面的命令的解析可以通过执行ethercat –help命令来查看,其中 [ ]中为必选参数 < >为可选参数,具体如下:

5.1设置别名地址

形式为:
ethercat alias [ OPTIONS ]
写入从机的别名地址
其中, 对于 [ OPTIONS ]可以是如下的操作参数:
 --alias -a
 -- position -p
 --force –f 确认写入多个从站别名

 --alias 表示重新设置别名,后面的参数可为16位无符整形的数,设置为0表示移除别名地址;
 --position -p别是写入从站位置地址;
 --force –f表示确认写入多个多个从站的别名。
注:写入的数字可以是10进制,8进制或者16进制。

5.2显示总线配置

ethercat config [ OPTIONS ]

假如[ OPTIONS ]没有写参数—verbose的话,那么将会每一行显示一个从站配置。
比如:
1001:0 0x0000003b /0 x02010000 3 OP
 1001 :从站的别名
 0:从站相对地址
 0x0000003b :从站的厂商ID
 0 x02010000 : 从站的产品码
 3 :该配置绑定对应从站在总线上的绝对地址,假如该配置没有对应 的从站,则显示为“-“。
 OP :该配置绑定对应从站应用层状态,假如该配置没有对应的从站, 则显示为“-“。

假如[ OPTIONS ]有写参数—verbose的话,那么除了显示上面的配置外,还会显示出对应从站的PDOs和SDOs。
接下看看一下下面的参数的含义:
这条命令既然是显示配置参数,那么后面的[ OPTIONS ]肯定是指定显示安格从站的配置。具体可分为以下几种情况:
 假如既没有写--alias 也没有写 – position参数,那么将会显示所有的从站。
 假如只写– position,则默认—alias为0 (也就是使用position对应的绝对地址)
 假如只写—alias,那么所有为该别名地址的从站的配置都将被显示。
 假如使用了--alias 和 – position,那么只显示一个匹配的从站配置(别名+相对地址)

[ OPTIONS ]具体的设置形式为:
 --alias -a
 position -p
 verbose -v 显示详细信息.

注:写入的数字可以是10进制,8进制或者16进制。

5.3 以c语言的形式输出PDO信息

格式为:
ethercat cstruct [ OPTIONS ]

生成的PDO信息可以直接被应用层的ecrt_slave_config_pdos ()函数调用。

[ OPTIONS ]具体的设置形式为:
 --alias -a 具体含义参考5.2
 position -p

注:写入的数字可以是10进制,8进制或者16进制。

5.4 显示过程数据

ethercat data [ OPTIONS ]
输出二进制域的过程数据。

[ OPTIONS ]可使用的参数:
-- domain -d 为域的索引值(为正数) ,假如不写[ OPTIONS ]则显示所有用的过程数据。

注:写入的数字可以是10进制,8进制或者16进制。

5.6 设置主站调试等级

ethercat debug

设置主站的调试等级,调试信息将输出在syslog文件中。

其中的可有以下情况:
0 :无任何调试信息输出
1 :输出部分调试信息
2 :输出所有的帧的内容 ( 由于输出信息比较多,建议谨慎使用).

注:写入的数字可以是10进制,8进制或者16进制。

5.7 配置域

形式为:
ethercat domains [ OPTIONS ]
假如[ OPTIONS ]没有使用—verbose参数,则接下来每行显示一个域的信息。比如:
Domain0 : LogBaseAddr 0 x00000000 , Size 6, WorkingCounter 0/1

下面解释下上面数字的含义:
 LogBaseAddr 后面是逻辑寻址的逻辑基地址
 Size 域的交换数据的字节数
 WorkingCounter 工作计数器的数值,第一个数字是WKC的当前值,第二个数字是期 望WKC的值

假如[ OPTIONS ]使用—verbose参数,那么于域有关的从站配置参数、FMMU配置参数和当前的过程数据都会显示出来。比如:
Domain1 : LogBaseAddr 0 x00000006 , Size 6, WorkingCounter 0/1
SlaveConfig 1001:0 , SM3 ( Input ), LogAddr 0 x00000006 , Size 6
00 00 00 00 00 00
下面介绍各参数含义:
 LogBaseAddr 、Size 和WorkingCounter 上同。
 SlaveConfig 从站的配置,分别是从站的别名和相对地址(别名非0)或绝对地址(别名为0)
 SM3 表示使用的是同步管理器3
 LogAddr 是FMMU映射地址的基地址
 Size 为映射地址的大小
 00 00 00数据位十六进制显示的过程数据

[ OPTIONS ]可使用的参数:
 domain -d 为域的索引值(为正数) ,假如不写[ OPTIONS ]则显示所有用的域。
 -- verbose –v 显示FFMU和过程数据的信息

注:写入的数字可以是10进制,8进制或者16进制。

5.8 访问SDO

ethercat download [ OPTIONS ]
[ OPTIONS ]
向从站写入一条PDO条目。
运行该命令必须指定目标从站。

默认情况下,SDO条目的数据类型是从SDO字典里获取的。当然也可以通过—tpye参数指定其类型。假如从站不支持SDO服务或者SDO步子啊对象字典里面,则必须使用—type指定其类型。
上述的type可使用的类型包括:
bool ,
int8 , int16 , int32 , int64 ,
uint8 , uint16 , uint32 , uint64 ,
float , double ,
string , octet_string , unicode_string .
对于sign -and - magnitude coding有:
sm8 , sm16 , sm32 , sm64

具体的可选参数含义为:
 INDEX 16位无符整型的SDO索引
 SUBINDEX 8位无符整型的SDO子索引
 VALUE 需写入的SDO的值(必须符合SDO条目的类型),使用“-“读取标准输入的值

[ OPTIONS ]可填入的数值:
 --alias -a
 position -p
 --type -t SDO条目的数据类型


ethercat upload [ OPTIONS ]

向从站读取一个SDO条目
该命令的存在的参数含义同上。

5.9 输出EOE统计信息

ethercat eoe
显示EOE的统计信息,包括主站
的发送率和接受率(Byte/s)。


5.10 FOE通信

ethercat foe_read [ OPTIONS ]
通过FOE读取从站的文件
运行该命令必须指定目标从站。

其中:
为从站中源文件的名字。
[ OPTIONS ]有以下可选项
 --output - file -o 为读取数据的存储文件,缺省的话读取的数据放到stdout
 --alias -a
 position -p



ethercat foe_write [ OPTIONS ]
通过FOE向从站存储文件
运行该命令必须指定目标从站。

其中:
可为要发送的文件(制定路径+名字),也可以为“-“,假如参数为”-“则从标准输入中读取文件。
[ OPTIONS ]有以下可选项
 --output - file -o 为从站存储的目标文件名,假如不指定名字,则为主站发送的去掉路径后的名字。
 --alias -a
 position -p

5.11创建一个拓扑图形

ethercatgraph [ OPTIONS ]
输出总线拓扑图
最后输出是依靠doc工具(位于Graphviz工具包里)输出的图形,(doc 工具可参考http :// www . graphviz . org /doc / info / lang . html ),因此使用如下命令可以看到总线图形拓扑图:
ethercat graph |dot -Tsvg > bus . svg
关于doc的更详细的说明可以参考其说明文档。


5.12主站和以太网设备


ethercat master [ OPTIONS ]
显示主站和以太网设备信息。
[ OPTIONS ]可使用如下选择:
-- master-m 其中indices为主站的索引,可以是一个具体的值也可以为一个范围,例如:1 ,4 ,5 ,7 -9。默认情况下显示所有的设备信息。


5.13同步管理,PDOs,PDO条目


ethercat pdos [OPTIONS ]
显示出同步管理器的参数和PDO任务和映射信息。

假如[ OPTIONS ]没有指定参数,使用默认的—skin参数,将会显示下列三层信息:

n 同步管理器:显示包含同步管理器的信息:索引、物理地址开始地址、默认数据大小、控制寄存器和使能字,例如:
SM3 : PhysAddr 0x1100 , DefaultSize 0, ControlRegister 0x20, Enable 1
上面的信息可以看出,索引为3,物理开始地址为0x1100,默认大小为0,控制寄存器为0x20,使能。

n 访问PDOs:显示的信息包括PDO方向,十六进制表示的索引值,PDO的名字。比如:
TxPDO 0x1a00 "Channel1 "
其中开头的为“Tx“或者“Rx”,这都是相对于从站端口来说的,比如TxPDO 表示PDOs有从站端口向外发送。0X1a00表示该PDO的索引值,后面的是pdo的名字。

n PDO条目映射:将显示出PDO条目的索引和子索引(都是以16进制的形式现实的),并显示出改为的位宽和描述,比如:
PDO entry 0x3101 :01 , 8 bit ," Status "
其中,0x3101 :01表示索引和子索引,8 bit表示该条目的位宽,后面是对该位的描述。

注:这些显示的PDO任务或者映射信息,既可以源于SII也可以是COE的通信区域。

[ OPTIONS ]可有如下的参数:
n --alias -a
n position -p
n --skin -s 可以选择" default " 和 " etherlab ".

5.14 寄存器访问


ethercat reg_read [ OPTIONS ]
[ SIZE ]
读取对应从站寄存器的内容

该命令要求针对特定的从站。
对于其中的参数:
16位无符号的寄存器地址
[ SIZE ] 16位无符号的值表示要读取对应寄存器的字节数。[ SIZE ] +
不能超过64K.。假如右面的type参数隐含要读取的字节数,则可以忽略掉[ SIZE ]参数。
具体的可选参数含义为:
[ OPTIONS ]可填入的数值:
n --alias -a
n position -p
n --type -t 数据类型

上述的type可使用的类型包括:
bool ,
int8 , int16 , int32 , int64 ,
uint8 , uint16 , uint32 , uint64 ,
float , double ,
string , octet_string , unicode_string .
对于sign -and - magnitude coding有:
sm8 , sm16 , sm32 , sm64


ethercat reg_write [ OPTIONS ]
写入指定从站寄存器的值

该命令要求针对特定的从站。
n
16位无符号的寄存器地址
n 这里是要写入寄存器的数据,具体的要看—type参数指定的参数类型:假如—type没有指定数据类型, 是一个带有路径的文件(文件内存放着要写入的数据)或者 设置为“-“,此时表示从标准输入中获得数据。假如—type指定了其数据类型,那么 将根据指定的数据类型对数据进行解析。

[ OPTIONS ]可填入的数值:
n --alias -a
n position -p
n --type -t 数据类型
n emergency -e 以紧急事件的方式请求
上述的type可使用的类型包括:
bool ,
int8 , int16 ,int32 , int64 ,
uint8 , uint16 ,uint32 , uint64 ,
float , double ,
string ,octet_string , unicode_string .
对于sign -and - magnitude coding有:
sm8 , sm16 ,sm32 , sm64

5.15 SDO字典


ethercat sdos [OPTIONS ]
列出SDO字典

列出的SDO字典为两层,分别为SDO信息和SDO条目信息:

SDOs:包含SDO的索引值(16进制表示)和名字,比如:
SDO 0x1018 ," Identity object "
其中 0x1018为索引,"Identity object "为名字。

SDO条目:包括SDO索引和SDO条目子索引(均以16进制表示)、访问权,数据类型、数据位宽度和数据描述。例如:
0 x1018 :01, rwrwrw , uint32 , 32 bit , " Vendorid"
解释如下:0 x1018 :01 表示SDO的索引和子索引;rwrwrw表示访问权限。这个访问权限分别是针对应用层在预运行状态、安装运行状态和运行状态。‘r‘表示该条目可读,‘w‘表示该条目可写。假如对访问权限不太确切,则使用“-”代替;uint32制定了该条目的数据类型;32 bit指出了其位宽;" Vendor id"是对该条目的描述。

[OPTIONS ]可填入的数值:
n --alias -a
n position -p
n --quiet -q 表示只输出PDOs,不输出PDO条目信息。


5.16 SII访问


可以直接读写从站的SII的内容的设计是由于一下几种原因:ifconfig eth0192.168.1.102
n SII的数据格式在不断的扩展,未来可能会添加更多的类别。只有能读写访问SII,内存里完整的内容才可以很容易的备份和刷新。
n 有些SII数据必须改变(比如从站的别名),所以必须可以对SII进行读写访问。
n 只有可以读取SII数据,用户空间才可以对分类数据进行解析

ethercatsii_read [ OPTIONS ]
读取从站的SII的内容
这条命令必须针对特定的从站。

假如没有—verbose参数,那么仅以二进制的形式输出SII的内容。假如使用—verbose参数则以文本的形式输出数据内容并以SII不同的类分开显示。

[OPTIONS ]可填入的数值:
n --alias -a
n position -p
n -- verbose –v 按照不同类的名字显示数据文本内容。

由于该命令读到的数二进制形式,一般我们习惯使用16进制的数据,所以习惯的使用hexdump命令将数据转化为16进制,比如:
$ ethercatsii read --position 3 | hexdump
0000000 0103 0000 0000 0000 0000 0000 0000 008 c
0000010 0002 0000 3052 07 f0 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
...
假如想备份一下SII读取的内容,可以使用:
$ ethercat siiread --position 3 > sii-of-slave3.bin

上面介绍的是读取SII数据,接下来介绍写入SII数据:
ethercatsii_write [ OPTIONS ]
向从站写入SII内容
这条命令必须针对特定的从站。

必须是带有完整路径的文件且需包含有正数。假如设置成“-”则从标准输入中读取数据。

[OPTIONS ]可填入的数值:
n --alias -a
n position -p
n --force -f 不进行有效性检查。一般情况下,要对文件中的内容的有效性和完整性进行检测,当时有-f参数后不再进行检测。

给出一个实际写入SII的实例:
# ethercat siiwrite --position 3 sii-of-slave3.bin
上面的命令会把sii-of-slave3.bin绝对地址为3的从站的SII中,由于没有添加-f参数,所以会检测数据的有效性和完整性,因此下载可能需要几秒的时间。


5.17 显示从站的信息


ethercatslaves [ OPTIONS ]
显示总线上的从站的信息。

假如该命令没有使用—verbose参数,则每个下面每行显示一个从站信息。例如:
1 5555:0 PREOP + EL3162 2C. Ana. Input 0 -10V
依次解释上面数据的含义:
n 1表示:从站在总线上面的绝对地址。
n 5555:0 冒号前为从站的别名(假如不存在为0),假如从站别名不为0,则冒号后为从站的相对地址。
n PREOP 为当前应用层的运行状态
n + 为错误标志位,“+”表示不存在错误,“E”表示存在扫描或者配置错误。
n 后面的为SII的名字厂商ID,产品号等信息(数据均16进制)

假如使用--verbose参数,则会输出一些详细的信息。

关于存在的参数的选择:
上面很多地方也有提到有关存在的选择,这里详细说明一下对于--alias 和 – position参数不同的组合的含义:
n 假如既没有--alias 参数也没有 –position参数,则所有的从站都被选择。
n 假如只有– position参数,则参数的数值为从站在总线上面的绝对地址。
n 假如只有—alias参数,则从设置—alias的从站到下一个设置不同于本次alias从站之间的从站都将被选择,比如,现有顺序连接的A、B、C、D、E、F、G、H的八个从站,假设B从站的别名为0x1122,C、D、E都没有设置别名(或者别名为0),从站F别名为0x2211,假如选择的参数只有—alias=0x1122,则被选中的从站有BCDE。
n 假如既有—alias还有--position参数,则position为别名地址的偏移地址,比如,排序还是上面的排序,假如设定的参数为-a=0x1122 –p=2,则被选中从站D。

[ OPTIONS ]可填入的数值:
n --alias -a
n position -p
n verbose –v 显示从站的详细信息。

假如执行如下命令:
$ ethercat slaves
则可显示为:
0 0:0 PREOP + EK1100 Ethernet Kopplerklemme (2A E-Bus)
1 5555:0 PREOP + EL3162 2K. Ana. Eingang 0 -10V
2 5555:1 PREOP + EL4102 2K. Ana. Ausgang 0 -10V
3 5555:2 PREOP + EL2004 4K. Dig. Ausgang 24V, 0,5A


5.18 SOE IDN访问


ethercatsoe_read [ OPTIONS ]
ethercatsoe_read [ OPTIONS ]
读取从站的SOE IDN。
此命令必须设定特定的从站。

对于必选参数,解释如下:
l 驱动号(0---7),假如省略,则默认为0
l 为一个像’P -0 -150’ 字符串或者是16无符号数字。对于后者,则每一个位的具体含义为:

15
14-12
11-0
含义
分类
参数设置
数据区
数值
0:标准数据
1:过程数据
0-7共8可选参数
0-----4096-1

[ OPTIONS ]可填入的数值:
n --alias -a
n position -p
n --type -t 数据类型,根据提供的IDN找到位置,然后根据type指定的类型读取数据,假如没没得则读取原生16进制字节。

上述的type可使用的类型包括:
bool ,
int8 ,int16 , int32 , int64 ,
uint8 ,uint16 , uint32 , uint64 ,
float ,double ,
string ,octet_string , unicode_string .
对于sign -and - magnitude coding有:
sm8 , sm16, sm32 , sm64

上面介绍的数读取数据,假如想要写入数据则使用如下命令:
ethercat soe_write [OPTIONS ]
ethercat soe_write [ OPTIONS ]
写入的参数的含义与上面读取数据参数的含义相同,只不多对了一个必选参数:
是指要写入的数值,该数值是根据—type指定的类型定义的。


5.19 请求应用层转换状态机


ethercat states [OPTIONS ]
请求应用层转换状态
可选的参数有:’INIT ’, ’PREOP ’, ’BOOT ’, ’SAFEOP’, 或者 ’OP ’

[OPTIONS ]可填入的数值:
n --alias -a
n position -p

5.20 显示主站版本


ethercat version[ OPTIONS ]
显示主站的版本

5.21 生成从站配置描述文件XML


ethercat xml [ OPTIONS ]
生成从站信息描述文件

注:PDO信息既可以源于SII,也可以源于COE通信区域。对于支持PDO任务和映射的配置,将输出最新的配置

[ OPTIONS ]可填入的数值:
n --alias -a
n position -p

英文原文链接 :http://www.etherlab.org/en/ethercat/
原文链接:http://blog.csdn.net/woshidahuaidan2011
作者:[email protected]


你可能感兴趣的:(IGH,ethercat)