2020-10-05

嵌入式单板上Ethercat调试

基于igh移植的Ethercat主站,调试方法有三种:一是使用igh提供的命令设置主机的调试级别,同时还可以借助igh提供的其它命令行工具,来获取主站和从站的状态,以及主站如何控制从站;二是使用Wireshark抓包,你可以组建一个局域网,通过交换机,把总线上的报文抓取到PC机上,然后对照ethercat的报文内容,对报文进行解析,从而定位问题;三是在单板上使用tcpdump命令,你可以把报文直接用该命令打印出来分析,如果报文比较多,建议保存到.cap后缀的文件中,放到PC机上进行分析,后续分析与使用Wireshark抓包工具获取的报文一样。下面详细介绍这三种调试方法:

1. 使用igh提供的命令设置主机的调试级别
调试级别(Debug Level)主模块还具有参数调试级别,可为所有主模块设置初始调试级别。
设置主站的调试级别,调试信息将输出在/var/log/syslog文件中。
命令:ethercat debug
其中可有以下情况:

  • 0 : 无任何调试信息输出
  • 1 : 输出部分调试信息
  • 2 : 输出所有的帧的内容(由于输出信息较多,请谨慎使用)
    例子:
    sudo ethercat debug 1
    解析:打开部分调试信息输出
    Syslog主模块将有关其状态和事件的信息输出到内核环形缓冲区。 这些也最终出现在系统日志中。 上面的模块加载命令应导致以下消息:
    在这里插入图片描述

主站日志输出带有EtherCAT前缀,这使搜索日志更加容易。
2. 使用Wireshark抓包
Wireshark是Windows下非常简单易用的抓包工具。但是我们也可以用到linux系统上,我们可以借助交换机,组建一个局域网。一台PC,带ethercat主站的嵌入式单板,交换机,带ethercat从站。这样就可以监视ethercat的通信。组网如下图所示:
在这里插入图片描述

3. tcpdump命令
Linux下很难找到一个好用的图形化抓包工具,如果你没有交换机,你可以使用tcpdump命令。我们可以用tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
在单板上移植好igh主站,执行/etc/init.d/ethercat start命令,启动主机,有如下的打印信息:

Starting EtherCAT master 1.5.2 [  968.194830] EtherCAT: Master driver 1.5.2 2eff7c993a63
[  968.200371] EtherCAT: 1 master waiting for devices.
[  968.215749] ec_generic: EtherCAT master generic Ethernet device module 1.5.2 2eff7c993a63
[  968.223995] EtherCAT: Accepting 7C:01:0A:04:5F:FA as main device for master 0.
[  968.231274] ec_generic: Binding socket to interface 3 (eth0).
[  968.269955] EtherCAT 0: Starting EtherCAT-IDLE thread.
[  968.275202] EtherCAT 0: Link state of ecm0 changed to UP.
 Done

从上面的打印信息,我们可以知道,主站已经启动成功了,系统马上报如下的错误:

:/# [  968.289984] EtherCAT WARNING 0: 1 datagram TIMED OUT!
[  969.289936] EtherCAT WARNING 0: 50 datagrams TIMED OUT!
  • 15
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值