【EtherCAT分析】二、命令行工具分析


EtherCAT(Ethernet for Control Automation Technology)是一种高效的工业以太网技术,被广泛应用于自动化控制领域。在Linux系统上,可通过EtherCAT命令行工具对EtherCAT总线上的设备进行通信和配置,如扫描和识别EtherCAT设备、读取和写入设备的寄存器值、配置设备参数等。本文将详细介绍在Linux系统上使用EtherCAT的命令行指令。

1. 显示从站的信息:

	sudo ethercat slaves [ OPTIONS ]

此命令用于扫描和显示EtherCAT网络中的从站设备信息。
[ OPTIONS ]参数:

  • 无参数:默认显示所有从站的基本信息,每行显示一个从设备。

  • –alias -a < alias > 显示指定别名从站的信息。

  • –position -p < pos > 显示指定位置从站的信息。

  • –verbose -v 显示更详细的信息。

  • -v 或 --verbose:显示更详细的信息,包括每个从站的状态和配置。

例子:显示所有从站的基本信息

sudo ethercat slaves 

执行后显示:
0 0:0 PREOP + card-1
1 0:1 PREOP + card-2

以“1 0:1 PREOP + card-2”为例,其中:

  • 1:为EtherCAT总线上从站设备的物理位置或连接顺序,每个从站在EtherCAT网络中都有一个唯一的编号,从0开始递增。
  • 0:1:是从站的地址信息,通常表示从站的物理地址。它由两个部分组成:
    • 0:别名(Alias),别名用于对从站进行命名或重命名,以便更容易识别和管理。
    • 1:位置(Position),表示从站在总线上的相对位置。
  • PREOP:是从站的当前状态。EtherCAT从站状态包括:
    • INIT:初始化状态。
    • PREOP:预操作状态。
    • SAFEOP:安全操作状态。
    • OP:操作状态。
  • +:错误标志。'+'意味着没有错误,'E’表示扫描或配置失败。
  • card-2:这是从站的名称或描述。它可以是从站的型号、功能描述或用户自定义的标识,便于用户识别从站设备。

2.显示主站和以太网设备信息:

	sudo ethercat master [ OPTIONS ]
此命令显示当前EtherCAT主站的信息,包括状态和配置。

参数:

  • –master -m < indices > :indices为主站的索引。默认显示所有的设备信息;

例子:显示所有主机的设备信息(发送帧、接收帧、参考时钟、应用时间)

sudo ethercat master

注:需启动应用程序。

3.设置从站别名地址:

	sudo ethercat alias [ OPTIONS ] < ALIAS >

参数 [ OPTIONS ] :
- ​–alias -a < alias >: 匹配从站的别名
- --position -p < pos >:匹配从站的绝对位置
- --force -f: 匹配所有从站
**ALIAS:**必须为无符号的16位数字,0表示删除别名
**例子:**将EtherCAT总线上从站0的别名(默认为0)设置为0x2000

	sudo ethercat alias -p 0 0x2000

或:

	sudo ethercat alias --position 0 0x2000 

:必须有从站连接才能使用此命令。

4. 显示主站配置:

	sudo ethercat config [ OPTIONS ]

参数 [ OPTIONS ]:

  • –alias -a < alias >:匹配从站的别名
  • –position -p < pos >:匹配从站的绝对位置
  • –verbose -v:显示详细信息

**例子:**显示所有从站的详细配置信息

	sudo ethercat config 

执行后显示:0:1 0x0000003b/0x02010000 2 OP,其中:

  • 0:1:是从站的地址信息,通常表示从站的物理地址。它由两个部分组成:
    • 0:别名(Alias),别名用于对从站进行命名或重命名,以便更容易识别和管理。
    • 1:位置(Position),表示从站在总线上的相对位置。
  • 0x0000003b/0x02010000:设备标识信息,供应商ID为0x0000003b,产品代码为0x02010000。
  • 2:这是EtherCAT总线上的第2个从站。
  • OP:该从站当前操作状态。
    :必须启动应用程序才能使用此命令查看。

5. 设置主站调试级别

	sudo ethercat debug < LEVEL >

设置主站的调试级别,调试信息将输出在/var/log/syslog文件中。
LEVEL调试级别:

  • 0 : 无任何调试信息输出
  • 1 : 输出部分调试信息
  • 2 : 输出所有的帧的内容(由于输出信息较多,请谨慎使用)

6. 显示过程数据

	sudo ethercat data [ OPTIONS ]

输出二进制的过程数据,多个域数据连接在一起。
[ OPTIONS ]参数:

  • –domain -d < index >:域的索引值,假如不填写参数则显示所有过程数据。

**例子:**显示所有PDO过程数据

	sudo ethercat data

注意:必须启动应用程序才能使用此命令查看。

7. 显示域的信息

sudo ethercat domains [ OPTIONS ]

参数:
- –domain -d < index >:根据索引号,匹配域;
- –verbose -v:显示域的详细信息(FMMU和过程数据的信息);

#### (1)显示域的基本信息
```bash
sudo ethercat domains

执行后显示:Domain0:LogBaseAddr 0x00000000, Size 6, WorkingCounter 0/1
其中:

  • LogBaseAddr:逻辑寻址的逻辑基地址;
  • Size:域交换数据的字节数;
  • WorkingCounter:第一个数字是WKC的当前值,第二个数字是WKC的期望值;
(2)显示域的详细信息(FMMU和过程数据的信息)
sudo ethercat domains -v

执行后显示:

Domain1:LogBaseAddr 0x00000006, Size 6, WorkingCounter 0/3 SlaveConfig 0:0, SM2 (Output), LogAddr 0x00000000, Size 6 06 00 95 33 00 00 SlaveConfig 0:0, SM3 (Input), LogAddr 0x00000006, Size 6 11 01 95 33 00 00

以上各字段的含义:

  • SlaveConfig:从机配置信息,主要包含别名和地址(绝对地址或相对地址);
  • SM2:同步管理器2;
  • LogAddr:FMMU映射的地址;
  • Size:映射地址的大小;
  • 数据位:十六进制显示的过程数据;

注意:必须启动应用程序才能使用此命令查看。

8. SDO数据通信

8.1 向从站写一条SDO条目

sudo ethercat download [ OPTIONS ] < INDEX > < SUBINDEX > < VALUE >

参数:
⑴ 必选参数:

  • INDEX:16位无符整型的SDO索引;
  • SUBINDEX:8位无符整型的SDO子索引;
  • VALUE:需写入的SDO的值,必须对应SDO的数据类型

⑵ [ OPTIONS ]参数:

  • –alias -a < alias >:匹配从站的别名;
  • –position -p < pos >:匹配从站的绝对位置;
  • –type -t < type> :SDO条目的数据类型;

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
例子:向从站0的索引号为0x6070(16位),子索引号为01(8位)的地址写入SDO条目值”0x05“

sudo ethercat download -t int16 -p 0 0x6070 01 05

注意:必须有从站连接才能使用此命令。

8.2 向从站读取一个SDO条目

ethercat upload [ OPTIONS ]  < INDEX > < SUBINDEX >

参数:
⑴ 可选参数:

  • INDEX:16位无符整型的SDO索引;
  • SUBINDEX:8位无符整型的SDO子索引;

⑵ [ OPTIONS ]参数:

  • –alias -a < alias >:匹配从站的别名;
  • –position -p < pos >:匹配从站的绝对位置;
  • –type -t < type> :SDO条目的数据类型;

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

例子:读取从站0中索引号为0x6070(16位),子索引号为03(8位)的SDO条目

sudo ethercat upload -t int16 -p 0 0x6070 03

注意:必须有从站连接才能使用此命令。

8.3列出SDO字典(SDO信息和SDO条目信息)。

sudo ethercat sdos [ OPTIONS ]

参数:

  • –alias -a :匹配从站的别名;
  • –position -p :匹配从站的绝对位置;
  • –quiet -q:只输出PDOs,不输出PDO条目信息;

例子:

sudo ethercat sdos

执行后显示
SDO 0x1018,”Identity object” 0x1018:01, rwrwrw, uint32, 32 bit, “Vendor id”
其中:

  • SDO 0x1018,”Identity object”
    • 0x1018:SDO索引值;
    • “Identity object”:SDO名字;
  • SDO条目:0x1018:01, rwrwrw, uint32, 32 bit, “Vendor id“
    • 0x1018:01:索引值及子索引值;
    • rwrwrw:表示访问权限,“r”可读,“w”可写,“-”未指定;
    • uint32:表示该条目的数据类型;
    • 32bit:表示该条目的位宽;
    • “Vendor id“:对该条目的描述;

9. PDO数据通信

9.1 显示出同步管理器的参数、PDO分配和映射信息。

ethercat pdos [OPTIONS]

参数:

  • –alias -a < alias > :匹配从站的别名;
  • –position -p < pos >:匹配从站的绝对位置;
  • –skin -s < skin >:”skin”可选择”default“和”etherlab“;

例子:

sudo ethercat pdos -p 0 -s default 

执行后显示:
SM3: PhysAddr 0x1100, DefaultSize 0, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 "Channel1"
PDO entry 0x3101:01, 8 bit, "Status"

以上各字段的含义:
⑴ 同步管理器信息

  • SM3:同步管理器3;
  • PhysAddr:物理地址开始地址;
  • DefaultSize:默认数据大小;
  • ControlRegister:控制寄存器;
    -Enable:使能字

⑵ 显示PDO方向,索引值,PDO名字

  • TxPDO:代表从站的数据方向(从站发送数据);
  • 0x1a00:PDO的索引值;
  • “Channel1”:PDO的名字;

⑶ 显示PDO条目的索引和子索引(都是以16进制的形式现实的),显示位宽和描述

  • 0x3101:01 : 表示索引和子索引;
  • 8 bit:表示该条目的位宽;
  • ” Status“:表示该位的描述;

9.3 用C语言生成PDO信息

	sudo ethercat cstruct [ OPTIONS ]

输出的c代码可以直接与ecrt_slave_config_pdos()函数一起使用。
参数:

  • –alias -a < alias >:匹配从站的别名
  • –position -p :匹配从站的绝对位置

**例子:**输出别名为1234的从站的PDO信息

	sudo ethercat cstruct -a 1234

:必须有从站连接才能使用此命令。

10. 寄存器读写操作

10.1 读取寄存器数据:

	sudo ethercat reg_read  [ OPTIONS ] < ADDRESS > [ SIZE ]

参数:

  • ADDRESS:16位无符号的寄存器地址;

  • SIZE:要读取的对应寄存器字节数(16位无符号值);[ SIZE ] + ADDRESS不能超过64K,假如type参数隐含要读取的字节数,则可以忽略掉[ SIZE ]参数;

  • [ OPTIONS ]参数

    • –alias -a < alias > :匹配从站的别名;
    • –position -p :匹配从站的绝对位置;
    • –type -t < 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

例子:获取从站5的0x092C寄存器所存储的值

sudo ethercat reg_read -p 5 -t sm32 0x092c

10.2 写入寄存器:

	sudo ethercat reg_write [ OPTIONS ] <Address> <DATA>

参数:
① 可选参数

  • Address:16位无符号的寄存器地址;
  • DATA:要写入寄存器的数据;假如制定了”type”数据类型,那么”DATA”根据指定的数据类型对数据进行解析;假如未指定”type”数据类型,则”DATA”可以为指定的文件或将”DATA”设置为” - “,表示从标准输入中获得数据;

② [ OPTIONS ]参数

  • –alias -a :匹配从站的别名;
  • –position -p :匹配从站的绝对地址;
  • –type -t :匹配数据类型;
  • –emergency -e:以紧急的方式请求写入文件;
    **例子:**向从站5的寄存器0x0953写入数据100
	sudo ethercat reg_write -p 5 -t sm32 0x0953 100

11. 输出EOE统计信息

sudo ethercat eoe

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

12. FOE通信

12.1 通过FOE读取从站的文件

sudo ethercat foe_read [ OPTIONS ] < SOURCEFILE >

参数:
① 必选参数
SOURCEFILE :为从站中的源文件名称;

② [ OPTIONS ]参数

  • –output -file -o < file > :本地输出文件名,”-“(默认)则数据将读取到stdout;
  • –alias -a < alias >:匹配从站的别名;
  • –position -p < pos >:匹配从站的绝对位置;

12.2 通过FOE向从站存储文件。

sudo ethercat foe_write [ OPTIONS ] < FILENAME >

① 必选参数

  • FILENAME:为要发送的文件路径(指定路径+文件名)货” - “。” - “表示从stdin中读取数据,且必须指定–output -file选项;

② [ OPTIONS ]参数

  • –output -file -o < file > :为从站存储的目标文件名,假如不指定名字,则为主站发送 FILENAME的去掉路径的名字;
  • –alias -a < alias >:匹配从站的别名;
  • –position -p < pos >:匹配从站的绝对位置;

13. 输出EtherCAT总线拓扑图形

ethercat graph [ OPTIONS ]

输出总线拓扑图。
**例子:**将总线拓扑图输出到桌面

sudo ethercat graph | dot -Tsvg > ~/Desktop/bus.svg

14. SII访问

14.1 读取从站的SII内容

sudo ethercat sii_read [OPTIONS]

参数:

  • –alias -a < alias >:匹配从站的别名;
  • –position -p < pos >:匹配从站的绝对位置;
  • –verbose -v:分类显示数据文本内容;

注意:必须有从站连接才能使用此命令。
例子:
① 以分类数据文本形式显示sii的内容

sudo ethercat sii_read -p 0 -v

② 以16进制形式显示sii的内容

sudo ethercat sii_read -p 0 | hexdump

③ 将sii的内容备份到Back.bin文件下

sudo ethercat sii_read -p 0 > Backup.bin

14.2 向从站写入sii内容

sudo ethercat sii_write [ OPTIONS ] < FILENAME >
  • FILENAME:为要发送的文件路径(指定路径+文件名)货” - “。” - “表示从stdin中读取数据,且必须指定–output -file选项;
  • [ OPTIONS ] 参数:
    • –alias -a < alias >:匹配从站的别名;
    • –position -p < pos >:匹配从站的绝对位置;
    • –force -f:覆盖有效性检查;

例子:将Backup.bin的内容写入从站0的SII中

sudo ethercat sii_read -p 0 Backup.bin

注意:必须有从站连接才能使用此命令。

15. 请求应用层状态机进行状态跳转

sudo thercat states [ OPTIONS ] < STATE >

参数:
⑴ 必选参数

  • STATE:可选的参数有“INIT”、“PREOP”、“BOOT”、“SAFEOP”、“OP”;

⑵ [ OPTIONS ]参数

  • –alias -a < alias >:匹配从站的别名;
  • –position -p < pos >:匹配从站的绝对位置;

例子:将从站0的状态切换为OP

sudo ethercat states -p 0 OP

注意:必须有从站连接才能使用此命令。

16. 显示主站版本

sudo thercat version [ OPTIONS ]

17. 生成从站配置描述

sudo thercat xml [ OPTIONS ]

参数:

  • –alias -a :匹配从站的别名;
  • –position -p :匹配从站的绝对地址;

例子:生成从站0的从站信息描述文件并显示出来

sudo ethercat xml -p 0

总结

本文介绍了一些常用的命令行指令,这些命令行指令可以帮助你有效地配置和管理EtherCAT网络。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dtge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值