tokenpocket官方下载中文版|ethercat不能切换到op状态
tokenpocket官方下载中文版|ethercat不能切换到op状态
IGH(ethercat)命令行不能进入OP原因_stm32h743ethercat 进入op状态失败-CSDN博客
>IGH(ethercat)命令行不能进入OP原因_stm32h743ethercat 进入op状态失败-CSDN博客
IGH(ethercat)命令行不能进入OP原因
最新推荐文章于 2024-03-13 10:03:00 发布
leecheni
最新推荐文章于 2024-03-13 10:03:00 发布
阅读量4.7k
收藏
37
点赞数
2
分类专栏:
ethercat 开源主站IGH使用
文章标签:
p2p
linq
gnu
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiaoding_ding/article/details/121995075
版权
ethercat 开源主站IGH使用
专栏收录该内容
18 篇文章
27 订阅
订阅专栏
问题:在使用IGH操作清能德创伺服的时候,使用命名行ethercat states OP,该命令不能使从站进入OP模式,还会报错。
原因:经过反复测试后,发现是在第二步ethercat config中没有使主站获得伺服配置。
步骤1:需要编辑一个小程序,是主站获得伺服配置
sc_cooldrive=ecrt_master_slave_config(master,CoolDrivePos0,CoolDrive); 使主站获得伺服0配置 sc_cooldrive=ecrt_master_slave_config(master,CoolDrivePos1,CoolDrive); ; 使主站获得伺服1配置 //check_slave_config_states(); printf("master_reset,Retry configuring slaves.\n"); ecrt_master_reset(master); 重启主站 check_slave_config_states();
/** Retry configuring slaves. *重试配置从站 * Via this method, the application can tell the master to bring all slaves to * OP state. In general, this is not necessary, because it is automatically * done by the master. But with special slaves, that can be reconfigured by * the vendor during runtime, it can be useful. *通过这个方法,应用程序可以告诉主站将所有从站设置为OP状态。一般来说, *这是不必要的,因为它是由主程序自动完成的。但是对于特殊的从站(可以由供应商 *在运行时重新配置),它可能很有用。 */
//$CC test_noPDO.c -o ectest_noPDO -L /home/lee/igh-mc -lethercat
//scp ectest_noPDO root@192.168.58.1:/home/mc
#include "config_qn.h"
void check_master_state(void)
{
ec_master_state_t ms;
ecrt_master_state(master, &ms);
if (ms.slaves_responding != master_state.slaves_responding) {
printf("found %u slave(s).\n", ms.slaves_responding);
}
if (ms.al_states != master_state.al_states) {
printf("AL states: 0x%02X.\n", ms.al_states);
}
if (ms.link_up != master_state.link_up) {
printf("Link is %s.\n", ms.link_up ? "up" : "down");
}
master_state = ms;
}
/*****************************************************************************/
void check_slave_config_states(void)
{
ec_slave_config_state_t s;
ecrt_slave_config_state(sc_cooldrive, &s);
if (s.al_state != sc_cooldrive_state.al_state) {
printf("CoolDrive: State 0x%02X.\n", s.al_state);
}
if (s.online != sc_cooldrive_state.online) {
printf("CoolDrive: %s.\n", s.online ? "online" : "offline");
}
if (s.operational != sc_cooldrive_state.operational) {
printf("CoolDrive: %soperational.\n", s.operational ? "yes" : "Not ");
}
sc_cooldrive_state = s;
}
/*****************************************************************************/
void check_domain1_state(void)
{
ec_domain_state_t ds;
ecrt_domain_state(domainServoInput, &ds);
if (ds.working_counter != domainServoInput_state.working_counter) {
printf("Domain1: WC %u.\n", ds.working_counter);
}
if (ds.wc_state != domainServoInput_state.wc_state) {
printf("Domain1: State %u.\n", ds.wc_state);
}
domainServoInput_state = ds;
}
/*****************************************************************************/
int main(void)
{
master = ecrt_request_master(0);
if (!master) {
return -1;
}
printf("request_master sucess\n");
check_master_state();
//printf("config PDO\n");
sc_cooldrive=ecrt_master_slave_config(master,CoolDrivePos0,CoolDrive);
sc_cooldrive=ecrt_master_slave_config(master,CoolDrivePos1,CoolDrive);
//check_slave_config_states();
printf("master_reset,Retry configuring slaves.\n");
ecrt_master_reset(master);
check_slave_config_states();
pause();
printf("release_master\n");
ecrt_release_master(master);
return 0;
}
步骤2:交叉编译并传送到开发板
//$CC test_noPDO.c -o ectest_noPDO -L /home/lee/igh-mc -lethercat //scp ectest_noPDO root@192.168.58.1:/home/mc
步骤3:登录开发板运行
ssh root@192.168.58.1
cd /home/mc
./ectest_noPDO
步骤4:在开发板再登录一个窗口测试命令行
发现可以自由切换伺服从站的操作状态。
如果关掉ectest_noPDO,则ethercat config 命令没有内容。不能使用命令行ethercat states切换主站状态。
另外,config_qn.h中定义的变量可以参考igh1.5.2官方给的例子自己补充。 类似如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include"ecrt.h"
/****************************************************************************/
/** Task period in ns. */
#define PERIOD_NS (1000000)
#define MAX_SAFE_STACK (8 * 1024) /* The maximum stack size which is
guranteed safe to access without
faulting */
/****************************************************************************/
/* Constants */
#define NSEC_PER_SEC (1000000000)
#define FREQUENCY (NSEC_PER_SEC / PERIOD_NS)
/****************************************************************************/
// EtherCAT
static ec_master_t *master = NULL;
static ec_master_state_t master_state = {};
static ec_domain_t *domainServoInput = NULL;
static ec_domain_state_t domainServoInput_state = {};
static ec_domain_t *domainServoOutput = NULL;
static ec_domain_state_t domainServoOutput_state = {};
static uint8_t *domainOutput_pd = NULL;
static uint8_t *domainInput_pd = NULL;
static ec_slave_config_t *sc_cooldrive = NULL;
static ec_slave_config_state_t sc_cooldrive_state = {};
/****************************************************************************/
// process data
#define CoolDrivePos0 1, 0
#define CoolDrivePos1 2, 1
#define CoolDrive 0x00000748, 0x0000000a
// offsets for PDO entries
static unsigned int cntlwd1,cntlwd2,cntlwd3,cntlwd4;
static unsigned int tarpos1,tarpos2,tarpos3,tarpos4;
static unsigned int modper1,modper2,modper3,modper4;
static unsigned int DB1_1,DB1_2,DB1_3,DB1_4;
static unsigned int status1,status2,status3,status4;
static unsigned int actpos1,actpos2,actpos3,actpos4;
static unsigned int acttor1,acttor2,acttor3,acttor4;
static unsigned int moddis1,moddis2,moddis3,moddis4;
static unsigned int DB2_1,DB2_2,DB2_3,DB2_4;
static unsigned int errcode1,errcode2,errcode3,errcode4;
static unsigned int errflo1,errflo2,errflo3,errflo4;
static int cur_status;
static int cur_mode;
// process data
ec_pdo_entry_reg_t domainServoOutput_regs[] = {
{CoolDrivePos0, CoolDrive, 0x6040, 0x00, &cntlwd1, NULL},
{CoolDrivePos0, CoolDrive, 0x607a, 0x00, &tarpos1, NULL},
{CoolDrivePos0, CoolDrive, 0x6060, 0x00, &modper1, NULL},
{CoolDrivePos0, CoolDrive, 0x27fe, 0x00, &DB1_1, NULL},
{CoolDrivePos0, CoolDrive, 0x6840, 0x00, &cntlwd2, NULL},
{CoolDrivePos0, CoolDrive, 0x687a, 0x00, &tarpos2, NULL},
{CoolDrivePos0, CoolDrive, 0x6860, 0x00, &modper2, NULL},
{CoolDrivePos0, CoolDrive, 0x2ffe, 0x00, &DB1_2, NULL},
{CoolDrivePos1, CoolDrive, 0x6040, 0x00, &cntlwd3, NULL},
{CoolDrivePos1, CoolDrive, 0x607a, 0x00, &tarpos3, NULL},
{CoolDrivePos1, CoolDrive, 0x6060, 0x00, &modper3, NULL},
{CoolDrivePos1, CoolDrive, 0x27fe, 0x00, &DB1_3, NULL},
{CoolDrivePos1, CoolDrive, 0x6840, 0x00, &cntlwd4, NULL},
{CoolDrivePos1, CoolDrive, 0x687a, 0x00, &tarpos4, NULL},
{CoolDrivePos1, CoolDrive, 0x6860, 0x00, &modper4, NULL},
{CoolDrivePos1, CoolDrive, 0x2ffe, 0x00, &DB1_4, NULL},
{}
};
ec_pdo_entry_reg_t domainServoInput_regs[] = {
{CoolDrivePos0, CoolDrive, 0x6041, 0x00, &status1, NULL},
{CoolDrivePos0, CoolDrive, 0x6064, 0x00, &actpos1, NULL},
{CoolDrivePos0, CoolDrive, 0x6077, 0x00, &acttor1, NULL},
{CoolDrivePos0, CoolDrive, 0x6061, 0x00, &moddis1, NULL},
{CoolDrivePos0, CoolDrive, 0x27ff, 0x00, &DB2_1, NULL},
{CoolDrivePos0, CoolDrive, 0x603f, 0x00, &errcode1, NULL},
{CoolDrivePos0, CoolDrive, 0x60f4, 0x00, &errflo1, NULL},
{CoolDrivePos0, CoolDrive, 0x6841, 0x00, &status2, NULL},
{CoolDrivePos0, CoolDrive, 0x6864, 0x00, &actpos2, NULL},
{CoolDrivePos0, CoolDrive, 0x6877, 0x00, &acttor2, NULL},
{CoolDrivePos0, CoolDrive, 0x6861, 0x00, &moddis2, NULL},
{CoolDrivePos0, CoolDrive, 0x2fff, 0x00, &DB2_2, NULL},
{CoolDrivePos0, CoolDrive, 0x683f, 0x00, &errcode2, NULL},
{CoolDrivePos0, CoolDrive, 0x68f4, 0x00, &errflo2, NULL},
{CoolDrivePos1, CoolDrive, 0x6041, 0x00, &status3, NULL},
{CoolDrivePos1, CoolDrive, 0x6064, 0x00, &actpos3, NULL},
{CoolDrivePos1, CoolDrive, 0x6077, 0x00, &acttor3, NULL},
{CoolDrivePos1, CoolDrive, 0x6061, 0x00, &moddis3, NULL},
{CoolDrivePos1, CoolDrive, 0x27ff, 0x00, &DB2_3, NULL},
{CoolDrivePos1, CoolDrive, 0x603f, 0x00, &errcode3, NULL},
{CoolDrivePos1, CoolDrive, 0x60f4, 0x00, &errflo3, NULL},
{CoolDrivePos1, CoolDrive, 0x6841, 0x00, &status4, NULL},
{CoolDrivePos1, CoolDrive, 0x6864, 0x00, &actpos4, NULL},
{CoolDrivePos1, CoolDrive, 0x6877, 0x00, &acttor4, NULL},
{CoolDrivePos1, CoolDrive, 0x6861, 0x00, &moddis4, NULL},
{CoolDrivePos1, CoolDrive, 0x2fff, 0x00, &DB2_4, NULL},
{CoolDrivePos1, CoolDrive, 0x683f, 0x00, &errcode4, NULL},
{CoolDrivePos1, CoolDrive, 0x68f4, 0x00, &errflo4, NULL},
{}
};
/* Master 0, Slave 0, "CoolDrive RD"
* Vendor ID: 0x00000748
* Product code: 0x0000000a
* Revision number: 0x00000002
*/
ec_pdo_entry_info_t slave_0_pdo_entries[] = {
{0x6040, 0x00, 16},
{0x607a, 0x00, 32},
{0x6060, 0x00, 8},
{0x27fe, 0x00, 8},
{0x6840, 0x00, 16},
{0x687a, 0x00, 32},
{0x6860, 0x00, 8},
{0x2ffe, 0x00, 8},
{0x6041, 0x00, 16},
{0x6064, 0x00, 32},
{0x6077, 0x00, 16},
{0x6061, 0x00, 8},
{0x27ff, 0x00, 8},
{0x603f, 0x00, 16},
{0x60f4, 0x00, 32},
{0x6841, 0x00, 16},
{0x6864, 0x00, 32},
{0x6877, 0x00, 16},
{0x6861, 0x00, 8},
{0x2fff, 0x00, 8},
{0x683f, 0x00, 16},
{0x68f4, 0x00, 32},
};
ec_pdo_info_t slave_0_pdos[] = {
{0x1600, 4, slave_0_pdo_entries + 0},
{0x1610, 4, slave_0_pdo_entries + 4},
{0x1a00, 7, slave_0_pdo_entries + 8},
{0x1a10, 7, slave_0_pdo_entries + 15},
};
ec_sync_info_t slave_0_syncs[] = {
{0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
{1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
{2, EC_DIR_OUTPUT, 2, slave_0_pdos + 0, EC_WD_ENABLE},
{3, EC_DIR_INPUT, 2, slave_0_pdos + 2, EC_WD_DISABLE},
{0xff}
};
/* Master 0, Slave 1, "CoolDrive RD"
* Vendor ID: 0x00000748
* Product code: 0x0000000a
* Revision number: 0x00000002
*/
ec_pdo_entry_info_t slave_1_pdo_entries[] = {
{0x6040, 0x00, 16},
{0x607a, 0x00, 32},
{0x6060, 0x00, 8},
{0x27fe, 0x00, 8},
{0x6840, 0x00, 16},
{0x687a, 0x00, 32},
{0x6860, 0x00, 8},
{0x2ffe, 0x00, 8},
{0x6041, 0x00, 16},
{0x6064, 0x00, 32},
{0x6077, 0x00, 16},
{0x6061, 0x00, 8},
{0x27ff, 0x00, 8},
{0x603f, 0x00, 16},
{0x60f4, 0x00, 32},
{0x6841, 0x00, 16},
{0x6864, 0x00, 32},
{0x6877, 0x00, 16},
{0x6861, 0x00, 8},
{0x2fff, 0x00, 8},
{0x683f, 0x00, 16},
{0x68f4, 0x00, 32},
};
ec_pdo_info_t slave_1_pdos[] = {
{0x1600, 4, slave_1_pdo_entries + 0},
{0x1610, 4, slave_1_pdo_entries + 4},
{0x1a00, 7, slave_1_pdo_entries + 8},
{0x1a10, 7, slave_1_pdo_entries + 15},
};
ec_sync_info_t slave_1_syncs[] = {
{0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
{1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
{2, EC_DIR_OUTPUT, 2, slave_1_pdos + 0, EC_WD_ENABLE},
{3, EC_DIR_INPUT, 2, slave_1_pdos + 2, EC_WD_DISABLE},
{0xff}
};
/****************************************************************************/
/****************************************************************************/
/* Master 0, Slave 0, "ESTUN ProNet"
* Vendor ID: 0x0000060a
* Product code: 0x00000001
* Revision number: 0x00000001
*/
ec_pdo_entry_info_t estun_pdo_entries[] = {
//CoE CSP Mode (RX)
{0x6040, 0x00, 16}, /* Controlword */
{0x607a, 0x00, 32}, /* Target Position */
{0x6060, 0x00, 8}, /*modes of operation*/
{0x6098, 0x00, 8}, /*Homing method*/
{0x6099, 0x01, 32}, /*Speed during search for switch*/
{0x6099, 0x02, 32}, /*Speed during search for zero*/
{0x609a, 0x00, 32}, /*homing_acceleration*/
{0x607c, 0x00, 32}, /*home_offset*/
//CoE CSP Mode (TX)
{0x6041, 0x00, 16}, /* Statusword */
{0x6064, 0x00, 32}, /* Position actual value */
{0x6061, 0x00, 8}, /*modes of operation display*/
};
ec_pdo_info_t estun_pdos[] = {
{0x1600, 8, estun_pdo_entries + 0}, /* CoE CSP Mode (RX) */
{0x1a00, 3, estun_pdo_entries + 8}, /* CoE CSP Mode (TX) */
};
ec_sync_info_t estun_syncs[] = {
{0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
{1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
{2, EC_DIR_OUTPUT, 1, estun_pdos + 0, EC_WD_ENABLE},
{3, EC_DIR_INPUT, 1, estun_pdos + 1, EC_WD_DISABLE},
{0xff}
};
/****************************************************************************/
// Analog in --------------------------
static ec_pdo_entry_info_t el3102_pdo_entries[] = {
{0x3101, 1, 8}, // channel 1 status
{0x3101, 2, 16}, // channel 1 value
{0x3102, 1, 8}, // channel 2 status
{0x3102, 2, 16}, // channel 2 value
{0x6401, 1, 16}, // channel 1 value (alt.)
{0x6401, 2, 16} // channel 2 value (alt.)
};
static ec_pdo_info_t el3102_pdos[] = {
{0x1A00, 2, el3102_pdo_entries},
{0x1A01, 2, el3102_pdo_entries + 2}
};
static ec_sync_info_t el3102_syncs[] = {
{2, EC_DIR_OUTPUT},
{3, EC_DIR_INPUT, 2, el3102_pdos},
{0xff}
};
// Analog out -------------------------
static ec_pdo_entry_info_t el4102_pdo_entries[] = {
{0x3001, 1, 16}, // channel 1 value
{0x3002, 1, 16}, // channel 2 value
};
static ec_pdo_info_t el4102_pdos[] = {
{0x1600, 1, el4102_pdo_entries},
{0x1601, 1, el4102_pdo_entries + 1}
};
static ec_sync_info_t el4102_syncs[] = {
{2, EC_DIR_OUTPUT, 2, el4102_pdos},
{3, EC_DIR_INPUT},
{0xff}
};
// Digital out ------------------------
static ec_pdo_entry_info_t el2004_channels[] = {
{0x3001, 1, 1}, // Value 1
{0x3001, 2, 1}, // Value 2
{0x3001, 3, 1}, // Value 3
{0x3001, 4, 1} // Value 4
};
static ec_pdo_info_t el2004_pdos[] = {
{0x1600, 1, &el2004_channels[0]},
{0x1601, 1, &el2004_channels[1]},
{0x1602, 1, &el2004_channels[2]},
{0x1603, 1, &el2004_channels[3]}
};
static ec_sync_info_t el2004_syncs[] = {
{0, EC_DIR_OUTPUT, 4, el2004_pdos},
{1, EC_DIR_INPUT},
{0xff}
};
/*****************************************************************************/
优惠劵
leecheni
关注
关注
2
点赞
踩
37
收藏
觉得还不错?
一键收藏
打赏
知道了
4
评论
IGH(ethercat)命令行不能进入OP原因
解决命令行不能让伺服进入OP模式的问题。
复制链接
扫一扫
专栏目录
EtherCAT状态机详解
weixin_43956732的博客
06-04
7889
EtherCAT状态机详解canopen over ethercat参考模型网络状态机 EtherCAT State Machine
canopen over ethercat参考模型
从下图中可以看出,运行模型可以分为如下几层
1 商家软件运用层
2 基于CANopen DS402运用层
3 数据链路层
4 物理连接层
网络状态机 EtherCAT State Machine
网络状态机如下图所示
对应功能介绍:
...
在Qt中使用EtherCAT-SOEM的初始化中,状态机卡在PreOp->Save-Op过程中,出现State=0x12, Error=0x001e错误的解决办法
zeal_for_rov的博客
12-15
4067
1.在调试EtherCAT软件过程中,一直出现配置从站进不了Save_op状态,通过下函数检查从站状态:
//使用的从站编号为1 只有1个从站
ec_slave[1].state = EC_STATE_SAFE_OP;
ec_writestate(1); //设置到安全模式
ec_statecheck(1, EC_STATE_SAFE_OP, EC_TIMEOUTSTATE * 4);
printf("Slave %d State=0x%2.2x StatusCode=0x%4
4 条评论
您还未登录,请先
登录
后发表或查看评论
EtherCAT从站状态机分析:PREOP to SAFEOP过程
JavanChen的博客
11-15
1万+
/////////////////////////////////////////////////////////////////////////////////////////
/**
\return AL Status Code (see ecatslv.h ALSTATUSCODE_....)
\brief This function is called in case o...
Ethercat学习-电机调试问题总结
西澳峰的博客
03-10
3035
主站硬件:STM32F405+LAN8720A主站软件:SOEM。
TwinCAT无法进入OP,报错AL state 0x001a - Synchronization error
qq_31825529的博客
05-20
4740
既然是同步错误,那么无法进入OP的原因就是同步失败导致的了。官方手册给出的错误代码原因是网络抖动造成的从站同步信号丢失,说明TwinCAT设置的DC周期太短了,在当前主站性能和网络条件下无法实现,所以适当增加DC周期即可解决。如:从默认的2000us改为10000us
...
松下(Panasonic)伺服EtherCAT(IGH EtehrCAT Master)通信注意事项
热门推荐
Beliven的博客
04-12
2万+
本文使用的松下伺服为A6B系列, EtherCAT主站搭建方法为IGH EtherCAT Master第三方协议栈。
电源接线
很多人拿到新的设备不知道怎么接电源线,这里给一个简洁的说明。
普通交流电接L1和L3(不用区分火线和零线),然后L1C接到L1,L2C接到L3;
三相电接L1、L2和L3,然后L1C接到L1,L2C接到L3;
当然还要接地。
试运行
用miniUSB...
Igh-Ethercat-master:基于Igh EtherCAT主控松下和安川伺服电机
05-18
Igh-Ethercat大师
EtherCAT Master源代码
基于Igh EtherCAT主控松下和安川伺服电机
Epos4EtherCATSlaveInformation_EPOS4communication_EPOSEtherCAT通讯配
09-29
EPOS驱动器作为Slave的xml配置文件
twincat3.0关于实时网卡的设置
关注工业机器人应用
07-19
4554
1.还请检查一下伺服连接的网口的网卡是否是在demouseonly,还在在realtimecapable,即实时兼容模式。如下图示,则是不支持实时兼容,需要点击intel的网卡进行安装(install),一般直接点击install都可以升级到实时兼容的。2.很多电脑自带的网卡一般不支持,需要到倍福官网上找支持的网卡列表,买这个PCIE接口的网卡插到自己的电脑卡槽上。目前安装的Intel网卡仍然需要设置为实时性兼容的网卡。问题如果在驱动伺服不能进入OP模式,或者进入OP模式,会断开等原因。......
ethercat主站开发之-----一拖多驱动控制
hubeihualei的博客
08-03
459
ethercat伺服电机驱动怎么实现一托多控制
IgH_EtherCAT_Master移植过程.rar_dgs_igh ethercat详解_igh ethercat配置_ig
07-13
这是关于Igh开源主站如何移植到嵌入式linux系统当中,便于后续的开发。
IgH EtherCAT Master 1.5.2 Documentation
12-03
IgH EtherCAT Master 1.5.2 英文官方文档
ethercat linux 主站igh程序讲解
01-08
linux,ethercat 开源master igh 汇川伺服电机 igh流程讲解 英文论文Motion Control of 6-DOF Manipulator Based on EtherCAT 六轴机械臂开源控制
IGH移植步骤.rar_IgH_EtherCAT_JHY_SOEM ethercat移植_ethercat移植_igh ethe
07-13
Linux平台下EtherCAT主站移植相关操作,辅助开发测试参考
计算机视觉——P2PNet基于点估计的人群计数原理与C++模型推理
知来者逆的博客
03-09
1026
P2PNet提出了一个新的度量标准,称为密度归一化平均精度(nAP),以提供更全面和更精确的性能评估。腾讯优图团队在这个框架下设计了一个直观的解决方案,称为P2PNet,并且实现了state-of-the-art。
Kafka生产消费实战-JAVA
最新发布
Grady的博客
03-13
250
Kafka生产消费实战
Kubernetes kafka系列 | k8s部署kafka+zookeepe集群(可外部通信)
weixin_48711696的博客
03-13
239
【代码】Kubernetes kafka系列 | k8s部署kafka+zookeepe集群(可外部通信)
springboot 配置kafka批量消费,并发消费
梵法利亚的博客
03-08
483
但是,要特别需要注意的一个点是:并发量根据实际的分区数量决定,必须小于等于分区数,否则会有线程一直处于空闲状态。按照以上配置内容即可,可以达到kafka批量消费的能力。下面是创建4个分区的命令写法。
MQ高可用相关设置
Gabriel的博客
03-10
1150
消息丢失的三种情况消息在传入服务过程中丢失MQ收到消息,暂存内存中,还没消费,自己挂掉了,内存中的数据搞丢消费者消费到了这个消息,但还没来得及处理,就挂了,MQ以为消息已经被处理也就是生产者丢失消息、消息列表丢失消息、消费者丢失消息;
松下 igh ethercat
01-30
松下工业自动化系统公司开发的IGH EtherCAT是一种高性能的工业以太网通信协议。它采用了快速实时数据传输技术,具有低延迟和高稳定性的特点。IGH EtherCAT可以实现多种不同的设备之间的高速通信和数据交换,能够有效地提高工业自动化系统的运行效率和生产效益。
IGH EtherCAT采用了开放的标准协议和通信接口,可以实现设备之间的即插即用,简化系统的集成和维护。它还支持实时监控和远程控制,可以帮助用户实现智能化生产管理和远程维护。
作为一种先进的工业通信协议,IGH EtherCAT已经在众多行业中得到广泛的应用,包括汽车制造、机械制造、电子制造等领域。它可以满足复杂工业环境下的高速数据传输和实时控制需求,为企业提供了更加可靠和高效的自动化解决方案。
总的来说,IGH EtherCAT不仅具有高性能和稳定性,而且具有开放的标准接口和广泛的应用场景,可以为工业自动化系统的建设和应用带来更多的便利和价值。随着工业4.0和智能制造的发展,IGH EtherCAT必将在工业自动化领域发挥越来越重要的作用。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
leecheni
CSDN认证博客专家
CSDN认证企业博客
码龄14年
企业员工
50
原创
2万+
周排名
2万+
总排名
7万+
访问
等级
1125
积分
261
粉丝
132
获赞
34
评论
349
收藏
私信
关注
热门文章
gazebo打不开world的解决方法
12141
Python modbus_tk官方slave例子使用方法
6516
petercorke / robotics-toolbox-python简介
5513
IGH(ethercat)命令行不能进入OP原因
4765
twincat3.0关于实时网卡的设置
4551
分类专栏
机器人工艺包
付费
8篇
UR机器人使用
12篇
ethercat 开源主站IGH使用
18篇
最新评论
2D坐标系下的点的转换矩阵(平移、缩放、旋转、错切)
明月无猜:
旋转的公式写的不对,y'的求值公式应该为y' = (x - px) *sin(beta) + (y - py) cos(beta) + py;
petercorke / robotics-toolbox-python简介
weixin_40253730:
ikine_unc这个换成ikine_LM可以正常求解了
ubuntu kylin16.04 ERROR: Rosdep experienced an error: Could not detect OS
Surelon:
请问sudo: vim:找不到命令和cat: /etc/lsb-realse: 没有那个文件或目录是怎回事呢
ros2 UR10仿真包运行
leecheni:
这个你看一下,我另外一篇写的,你这个只是那个电脑性能不行,就是把电脑性能调高了就好了
ros2 UR10仿真包运行
najaena:
你好,请问 [1697620611.877378395] [spawner_force_torque_sensor_broadcaster]: Controller manager not available是什么错误呀?我也遇到了
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
UR机器人装箱姿态
kuka协作机器人LBR系列 issy15R930导入到ros2_rviz(带外观文件)
pyside6 两个页面互相跳转
2024年9篇
2023年29篇
2022年11篇
2021年9篇
2020年5篇
2019年3篇
2017年2篇
2015年1篇
目录
目录
分类专栏
机器人工艺包
付费
8篇
UR机器人使用
12篇
ethercat 开源主站IGH使用
18篇
目录
评论 4
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
leecheni
你的鼓励将是我创作的最大动力
¥1
¥2
¥4
¥6
¥10
¥20
扫码支付:¥1
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
EtherCAT设备协议详解二、EtherCAT状态机及配置流程-CSDN博客
>EtherCAT设备协议详解二、EtherCAT状态机及配置流程-CSDN博客
EtherCAT设备协议详解二、EtherCAT状态机及配置流程
EtherCat技术研究
已于 2022-12-16 15:00:21 修改
阅读量7.9k
收藏
81
点赞数
6
分类专栏:
EtherCAT
文章标签:
ethercat
于 2022-12-16 14:59:44 首次发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gufuguang/article/details/128342161
版权
EtherCAT
专栏收录该内容
13 篇文章
71 订阅
订阅专栏
EtherCAT状态机(ESM)
EtherCAT状态机定义了每个EtherCAT从站设备的分步设置,并指示了可用的功能。设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。状态请求、状态响应和错误响应通过 ESC AL 控制寄存器 (reg0x0120)、AL 状态寄存器 (reg0x0130) 和 AL 状态代码寄存器 (reg0x0134) 进行交换。ESM指定从机行为,而主机分别从机状态。下面的 ESM 描述概述了每个状态转换的基本操作:主设备发送的命令和连接设备的(本地)行为。
上图描述了从站从INIT到OP的过程。INIT到OP过程是不能出现状态跳跃的,回退过程可以出现状态跳跃。
下面介绍从INIT到OP的过程,也就是从站初始化到工作的过程。
1、INIT状态,从站上电处于INIT状态
主站可以读取从站的设备信息和做一些准备进入pre-op初始化的配置
(1)清除从站FMMU和SyncManagers配置
(2)设置从站的地址和mailbox信息
(3)如果使用DC、设置DC的传输延时和启动的偏移时间,并进行若干次的时钟同步
设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因
2、pre-op状态
(1)主站设置从站需要映射的pdo数据,配置好FMMU的映射
(2)如果使用DC需要配置DC的周期时间、启动时间、触发方式、及开始同步DC时钟
(3)第一步已经配置好pdo数据及映射关系,可以开始发送pdo数据
设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因
3、safe-op状态
pre-op状态已经把数据都配置完成了,在safe-op状态基本不需要再进行配置了
safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错
判断从站DC同步是否达到一个稳定值
DC同步稳定,从站也没有报错就可以申请进入op状态
4、OP状态
进入op状态后就可以对伺服进行运动控制
优惠劵
EtherCat技术研究
关注
关注
6
点赞
踩
81
收藏
觉得还不错?
一键收藏
知道了
9
评论
EtherCAT设备协议详解二、EtherCAT状态机及配置流程
设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因。设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因。safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错。DC同步稳定,从站也没有报错就可以申请进入op状态。
复制链接
扫一扫
专栏目录
详解EtherCAT主站协议栈-综合文档
05-22
详解EtherCAT主站协议栈
汇川 Ethercat 总线通讯
08-15
汇川 Ethercat 总线通讯模板,汇川H5U
9 条评论
您还未登录,请先
登录
后发表或查看评论
EtherCAT学习笔记:状态机(ESM)
weixin_38933763的博客
04-24
3561
ESM(EtherCAT State Machine)负责协调主站和从站应用程序在初始化和运行时的状态关系及转换;
从初始化状态至运行状态,必须按照“初始化->预运行->安全运行->运行”的顺序转化。
从运行状态逆向返回时可以越级转化;
EtherCAT必须支持四种状态和一种可选状态:
Init:初始化
Pre-Operational:预运行
Saft-Operational:...
Ethercat“BWR配置从站地址”报文分析(0x0010:0x0011)
geshifei的博客
12-23
507
涉及的从站寄存器:Configured Station Address (0x0010:0x0010)。使用场景举例:IgH启动后,通过“配置从站地址”报文将所有从站地址清零,然后通过APWR指令+“配置从站地址”报文,设置各个从站的地址。
倍福PLC通过EtherCAT总线控制伺服电机---(一)硬件配置篇
weixin_42728270的博客
12-04
1429
本文主要介绍倍福TC3如何配置EtherCAT伺服电机。后续两篇会介绍一下程序控制以及程序形成功能块去控制。
Ethercat协议详解.zip
05-12
Ethercat主站协议详解,对于想要开发主站的同学有很大帮助,便于理解主站源代码的相关作用。注:英文文档
1、Ethercat协议原理,应用层,数据链路层,物理层。
2、Ethercat从站寄存器说明
3、ET1200硬件详解
EtherCAT系统中一个从站断线其他从站正常运行的设置方法
08-08
EtherCAT系统中,由多个从站组成,如果某个从站断线,则造成其他从站停止工作,本文档讲述通过配置,使得各个从站之间是否断线不影响其他从站运行
工控协议解读之EtherCAT协议硬核分析(转自知乎“智能制造之家“)
qq_43599327的博客
09-07
7035
EtherCAT协议
Ethercat状态机转化(ESM)
qq_39854159的博客
10-08
1983
ESM状态机
四种应支持的状态机
●Init.
Pre-Operational.
Safe-Operational.
Operational.
一种可选的状态机
●Bootstrap.
其状态转化关系,如下图所示:
状态转化
本地管理服务
IP
开始邮箱通信
PI
停止邮箱通信
PS
开始输入更新
SP
停止输入更新
SO
开始输出更新
OS
停止输出更新
OP
停止输出更新,停止输入更新
SI
停止输出更新,停止邮箱通信
OI
停止输出更新,停止输入更新,
ethercat状态机
weixin_52720049的博客
11-24
627
在EtherCAT网络中,主站可以通过发送特定的EtherCAT命令将从站设备从预运行模式(PRE-OP)切换到安全运行模式(SAFE-OP),然后再切换到运行模式(OP)。向从站设备发送 "Operational" 命令:一旦主站准备好并安全运行参数配置完成,它可以向从站设备发送 "Operational"(运行)命令,以请求从站设备进入运行模式(OP)。从站进入运行模式:从站设备接收并解析主站发送的 "Operational" 命令后,将切换到运行模式,执行实际的应用操作。在PRE-OP状态下,
EtherCAT状态机控制和状态
風之逍遥的博客
09-05
8446
主机和从站状态转化规律如下:
(1)、主机控制从机状态转换,将目的状态写入从站AL控制位(0x0120.0~3);
(2)、从机读取新状态请求后,检查自身状态:
a:如果可以转化,则将新状态写入状态机实际状态位(0x0130.0~3);
b:如果不能转化,则不改变实际状态位,设置错误指示位(0x013.4),并...
EtherCAT协议栈代码详解
05-31
EtherCAT代码详解,ET9300,开发EtherCAT的的必备文档。
EtherCAT通信协议研究及实现.pdf
03-09
描述了现场总线技术的国内外发展现状,阐述 EtherCAT 的通信规范和总线实施 的“飞读飞写”技术、分布式时钟同步技术、WKC 和 CRC 校验等关键技术。
EtherCAT协议及软件框架.doc
04-15
自己开发EtherCAT从站整理的EtherCAT协议及软件结构文档,描述了EtherCAT相关的通信原理以及从站的设计,对开发EtherCAT从站设备有帮助
IgH配置EtherCAT流程
热门推荐
EtherCAT
01-22
1万+
IgH设置EtherCAT数据流程
在启动IgH协议栈后,协议栈会自动的把EtherCAT从站初始化到PREOP模式,从PREOP状态迁移到SAFEOP状态,需要设置PDO、DC等数据。以山洋电机为例数据设置流程如图 1.1所示:
图 1.1 PREOP状态迁移流程
IgH应用实现流程
1申请获取主栈
在配置数据之前首先获取一个主栈结构体,该结构和协议栈中的master对应。通过获取到的...
EtherCAT 同步模式
EtherCAT
12-27
7757
EtherCAT三种同步方式
自由运行模式 (Free Run:非同步运行)
自由运行模式通过应用程序控制器的本地计时器中断启动。本地周期从通信周期或主站周期独立出来单独运行。
SM2事件同步模式(Synchronous with SM2 Event)
由于从站的处理与SM2事件周期相对应,因此从站的处理保持与SM2事件同步。...
EtherCAT报文格式详解
EtherCAT
08-23
7268
1、EtherCAT报文组成
从图中抓的包可以看出EtherCAT报文分为三部分(1)、以太网帧头 (2)、EtherCAT帧头 (3)、EtherCAT数据 说明:KUNBUS TAP是实时抓包工具加的时间戳信息,报文的FCS也在里面
2、帧头解析
(1)、EtherCAT是基于以太网的所以头部首先是以太网帧头,包含目的和源MAC地址,EtherCAT帧类型固定为 0x88A4
(2)、EtherCAT帧头2字节,包含ECAT数据长度
3、ECAT数据解析
ECAT数据就是主...
EtherCAT 寻址模式详解
EtherCAT
08-24
5740
1、寻址模式
寻址模式就是在EtherCAT报文的地址数据写入不同的数据和CMD是相关的
模式
内容
描述
位置寻址 / 自增量寻址
位置
各从站位置递增,postion = 0 的从站被寻址
偏移地址
ESC内部寄存器或内存地址
节点寻址 / 固定地址寻址
地址
报文的站地址设置的站地址一致时,从站被寻址
偏移地址
ESC内部寄存器或内存地址
广播
位置
每个从站对位置加1(从站不使用该位置)
偏移地址
...
ethercat通信协议分析及实现
最新发布
01-27
EtherCAT是一种高性能实时以太网通信协议,能够快速传输实时数据,适用于工业控制系统和机器人领域。它采用了主从结构,通过在以太网帧中添加EtherCAT数据包实现实时数据传输。在EtherCAT网络中,主站会向从站发送数据包,从站接收数据并进行处理,然后原样返回给主站,整个过程极其高效。
要实现EtherCAT通信协议,首先需要了解其数据帧结构和通信流程。EtherCAT的数据帧包括了以太网头部、EtherCAT头部、数据包数据和CRC校验字段。在通信流程上,主站会定期向从站发送数据包,从站接收并处理数据后返回,主站再根据返回的数据进行相应的控制指令。
为了实现EtherCAT通信协议,需要使用专门的EtherCAT从站芯片,或者使用支持EtherCAT协议的工业控制器。其次,需要编写相关的程序代码,配置从站的通信参数和数据处理逻辑。通过正确的设置和编码,可以实现从站与主站之间的快速、稳定的实时通信。
此外,还需要对网络进行合理的布线和配置,确保EtherCAT网络的稳定性和实时性。这包括了选择合适的网络拓扑结构、使用高质量的网线和交换机,以及合理划分网络分段等措施。只有在网络环境良好的前提下,才能更好地实现EtherCAT通信协议。
总之,要实现EtherCAT通信协议,需要对其原理和通信流程有深入的理解,同时结合硬件和软件开发技术,合理布局网络环境,才能够达到稳定、高效的通信效果。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
EtherCat技术研究
CSDN认证博客专家
CSDN认证企业博客
码龄11年
暂无认证
84
原创
3万+
周排名
2万+
总排名
27万+
访问
等级
2392
积分
574
粉丝
168
获赞
261
评论
1119
收藏
私信
关注
热门文章
机内码、国际码、区位码换算
24861
各种ADC转换方式的优缺点
20211
IgH详解 一、概述
12652
IgH配置EtherCAT流程
12340
目前常用AD/DA芯片简介
7913
分类专栏
Linuxcnc-ethercat
1篇
IgH详解
23篇
arm_Linux
1篇
TCP/IP
1篇
S3C2440
18篇
EtherCAT
13篇
最新评论
IgH详解十二、IgH实现使用ENI文件配置从站(二)
EtherCat技术研究:
扫描跟兼容性关系不大,先要确保ethercat报文是否有正常收发
IgH详解二、主栈启动流程(二)
EtherCat技术研究:
要看你报文是否有超时,是否有丢包?用的实时网卡驱动吗?需要你根据自己环境去查
IgH详解十二、IgH实现使用ENI文件配置从站(二)
weixin_50007256:
大佬,我偶然会出现伺服和io的从站突然重启后扫描不上来的情况,重启前还是能扫描上来的,是因为兼容性的问题么。
IgH详解二、主栈启动流程(二)
weixin_50007256:
大佬,从站成功切到op之后,为了检测从站是否会断开,我判断ec_slave_config_state_t.online的值,出现有时候online为false的现象,但是从站状态一直是op,这是什么原因呢
IgH详解十、EtherCAT DC(4)主站做参考时钟和从站作参考时钟性能对比
records111:
大神你好,我想请教下你用从站作为参考时钟的话,主站的时钟是怎么被同步的呢,可以详细聊聊吗
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
倍福控制器搭建IgH环境
全志A40i PRREMPT-RT Linux平台搭建IgH环境
ubuntu 16.04 阿里软件源
2023年11篇
2022年18篇
2021年12篇
2019年3篇
2018年1篇
2015年2篇
2013年58篇
目录
目录
分类专栏
Linuxcnc-ethercat
1篇
IgH详解
23篇
arm_Linux
1篇
TCP/IP
1篇
S3C2440
18篇
EtherCAT
13篇
目录
评论 9
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
ethercat状态机-CSDN博客
>ethercat状态机-CSDN博客
ethercat状态机
RinHoo
已于 2023-12-21 19:01:18 修改
阅读量626
收藏
11
点赞数
7
文章标签:
笔记
于 2023-11-24 21:07:57 首次发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_52720049/article/details/134607007
版权
在EtherCAT网络中,从INIT(Initialization,初始化)状态切换到预运行模式(PRE-OP)需要完成一系列的配置步骤,以确保从站设备可以正常运行并与主站进行通信。以下是一些典型的配置信息和步骤,以完成INIT状态到PRE-OP状态的切换:
PDO配置:主站需要配置PDO(Process Data Object)以定义从站设备将要传输的数据以及传输的方式。这包括指定PDO的数量、映射的数据对象、PDO的传输周期等。 网络拓扑配置:主站需要配置网络拓扑,确定从站设备的物理连接和位置。这确保了数据可以正确地从主站传输到从站设备。 通信参数配置:包括网络速度、通信模式(半双工或全双工等)和其他通信参数的配置。 设备标识和地址分配:每个从站设备通常都有一个唯一的标识符,主站需要分配这些标识符,以便识别和寻址从站设备。 控制参数配置:如果需要,主站还可以配置从站设备的控制参数,如电机驱动器的速度和位置控制参数。 安全性和故障检测配置:在INIT状态中,也可以配置从站设备的安全性参数和故障检测机制,以确保设备在运行期间能够安全操作并检测到故障。 启动命令:主站通常会发送特定的启动命令或配置帧,要求从站设备执行配置。
一旦主站完成上述配置信息的发送和从站设备的接收和解析,从站设备可以进入PRE-OP状态。在PRE-OP状态下,设备准备好接受更多的配置和参数,以及从主站发送的进一步命令,以最终切换到SAFE-OP状态和运行模式(OP)。
请注意,确切的配置信息和步骤可能因设备和应用的不同而有所不同。因此,您应该参考设备制造商提供的文档和指南,以确保正确配置从站设备并顺利切换到预运行模式。
在EtherCAT网络中,主站可以通过发送特定的EtherCAT命令将从站设备从预运行模式(PRE-OP)切换到安全运行模式(SAFE-OP),然后再切换到运行模式(OP)。以下是主要的命令和步骤,用于将从站设备从PRE-OP模式切换到SAFE-OP模式:
配置从站参数:首先,主站需要配置从站设备的参数,包括PDO映射、同步周期等。这些参数通常在PRE-OP模式下配置。 向从站设备发送 "Initialize" 命令:主站向从站设备发送 "Initialize"(初始化)命令,以请求从站设备进入安全运行模式。该命令通常包含在主站发送的配置帧中。 从站进入SAFE-OP模式:从站设备接收并解析主站发送的 "Initialize" 命令后,会执行必要的初始化步骤和检查。如果一切正常,从站设备将切换到SAFE-OP模式。 配置安全运行参数:在SAFE-OP模式下,主站可以进一步配置安全运行参数,确保设备可以在安全模式下正常运行。 向从站设备发送 "Operational" 命令:一旦主站准备好并安全运行参数配置完成,它可以向从站设备发送 "Operational"(运行)命令,以请求从站设备进入运行模式(OP)。 从站进入运行模式:从站设备接收并解析主站发送的 "Operational" 命令后,将切换到运行模式,执行实际的应用操作。
需要注意的是,切换从PRE-OP到SAFE-OP再到OP模式的确切命令和过程可能会因设备和应用的不同而有所不同。通常,EtherCAT从站设备的生产商会提供详细的配置和操作指南,以确保正确配置和切换不同模式。这些步骤的目的是确保设备在不同的模式下能够按照预期的方式运行,并提供实时性和安全性。
在启动igh主站,而不运行应用程序,通常情况下,IGH主站设备会扫描并检测已连接的从站设备,识别它们的类型和标识符,并尝试自动配置从站设备的参数,以确保它们能够顺利运行。这包括设置PDO映射、同步周期、通信参数等。一旦自动配置完成,从站设备通常会进入预运行状态(PRE-OP),并准备好接受主站的进一步命令和配置。
优惠劵
RinHoo
关注
关注
7
点赞
踩
11
收藏
觉得还不错?
一键收藏
知道了
0
评论
ethercat状态机
在EtherCAT网络中,主站可以通过发送特定的EtherCAT命令将从站设备从预运行模式(PRE-OP)切换到安全运行模式(SAFE-OP),然后再切换到运行模式(OP)。向从站设备发送 "Operational" 命令:一旦主站准备好并安全运行参数配置完成,它可以向从站设备发送 "Operational"(运行)命令,以请求从站设备进入运行模式(OP)。从站进入运行模式:从站设备接收并解析主站发送的 "Operational" 命令后,将切换到运行模式,执行实际的应用操作。在PRE-OP状态下,
复制链接
扫一扫
倍福--EtherCAT诊断方法
weixin_41883890的博客
06-24
3948
在调试阶段可能会出现EtherCAT模块因接线、参数配置等问题而导致无法使用的情况。本文介绍Ethercat模块网络诊断和硬件排查的基本方法。1.1.2. EK1100 EtherCAT Link口状态显示
同样连接网口的灯也有状态显示,一般需要查看网口的灯是否在正常状态,LinK口的LED灯显示状态和意义如下所示:
1.1.3. EK1100 EtherCAT Run灯的含义
Run灯的变化是根据状态机进行变化的,EtherCAT状态机如下所示:
因此LED RUN灯颜色和状态意义如下所示:
EtherCAT设备协议详解二、EtherCAT状态机及配置流程
EtherCAT
12-16
7903
设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因。设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因。safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错。DC同步稳定,从站也没有报错就可以申请进入op状态。
参与评论
您还未登录,请先
登录
后发表或查看评论
EtherCAT学习笔记:状态机(ESM)
weixin_38933763的博客
04-24
3561
ESM(EtherCAT State Machine)负责协调主站和从站应用程序在初始化和运行时的状态关系及转换;
从初始化状态至运行状态,必须按照“初始化->预运行->安全运行->运行”的顺序转化。
从运行状态逆向返回时可以越级转化;
EtherCAT必须支持四种状态和一种可选状态:
Init:初始化
Pre-Operational:预运行
Saft-Operational:...
ethercat学习笔记1
08-08
代码的笔记放到第二章。1.8 松下的从站 PDO映射。6040h控制字这个控制字是用来控制伺服电机上使能的。6041状态字这个状态字读取伺服电机的状态。控制模式
基于FPGA的EtherCAT从站通信链路分析与验证
10-16
EtherCAT是工业控制领域广泛应用的现场总线之一,从站控制器ESC(EtherCAT Slave Controller)是从站模块实现EtherCAT协议数据通信的关键,对从站控制芯片实现自主可控是工业控制系统国产化研发的重要基础。基于EtherCAT通信协议及基本通信功能逻辑,设计了EBUS编码/解码、Auto-forwarder、Loop-back function关键通信节点的FPGA状态机,并通过解析各阶段数据状态变化,验证了各节点通信数据的正确性。实验结果表明,基于上述状态机的FPGA实现EtherCAT从站基本通信链路是完全可行的。
Soem-1个电机PP模式 界面显示目标位置达到状态-添加代码注释-CSDN - EtherCAT主站-SOEM专栏的源代码
01-10
Soem-1个电机PP模式 界面显示目标位置达到状态-添加代码注释-CSDN.zip
EtherCAT主站-SOEM专栏的源代码。
EtherCAT主站SOEM -- 17 --Qt-Soem控制电机走PP模式并且界面显示目标位置达到状态,这一篇博客的源代码,博客链接( 正在编写,2024.1.21发布, https )。
注意: 该项目源代码提供了 QT-SOEM 配置从站到OP状态,并且对1个EtherCAT从站 电机进行操作,操作1个电机走PP模式 界面显示目标位置达到状态,正转达到目标位置,反转达到目标位置,及停止。
源代码 主要功能:
获取网卡信息,绑定网卡,配置EtherCAT网络,等待从站进入OP状态,检查EtherCAT主站和从站状等等。
Soem主站识别到 几 个从站。
并且操作1个电机走PP模式 界面显示目标位置达到状态,正转达到目标位置,反转达到目标位置,及电机运行过程中停止。
Ethercat状态机转化(ESM)
qq_39854159的博客
10-08
1983
ESM状态机
四种应支持的状态机
●Init.
Pre-Operational.
Safe-Operational.
Operational.
一种可选的状态机
●Bootstrap.
其状态转化关系,如下图所示:
状态转化
本地管理服务
IP
开始邮箱通信
PI
停止邮箱通信
PS
开始输入更新
SP
停止输入更新
SO
开始输出更新
OS
停止输出更新
OP
停止输出更新,停止输入更新
SI
停止输出更新,停止邮箱通信
OI
停止输出更新,停止输入更新,
EtherCAT状态机控制和状态
風之逍遥的博客
09-05
8446
主机和从站状态转化规律如下:
(1)、主机控制从机状态转换,将目的状态写入从站AL控制位(0x0120.0~3);
(2)、从机读取新状态请求后,检查自身状态:
a:如果可以转化,则将新状态写入状态机实际状态位(0x0130.0~3);
b:如果不能转化,则不改变实际状态位,设置错误指示位(0x013.4),并...
Ethercat--基础架构与数据帧格式
qq_41931610的博客
04-20
1862
(过程数据对象):过程数据用来传输周期性的数据,PDO由三个数据缓冲区组成,类似于一个FIFO,从站写入第一个缓冲区,主站从第三个缓冲区读走。(服务数据对象):邮箱通信用来发送非周期性的数据,邮箱通信只有一个数据缓冲区,通信方式采用握手的机制确保主从之间的数据交互不丢失,而PDO由于采用FIFO的机制,可能会出现新值覆盖旧值或旧值被多次读走的情况。EtherCAT协议在应用层支持CANopen协议,因此支持CANopen协议的从站可以被运用在EtherCAT协议上。并且可以通过命令行工具加载或存储文件。
EtherCAT状态机详解
weixin_43956732的博客
06-04
7889
EtherCAT状态机详解canopen over ethercat参考模型网络状态机 EtherCAT State Machine
canopen over ethercat参考模型
从下图中可以看出,运行模型可以分为如下几层
1 商家软件运用层
2 基于CANopen DS402运用层
3 数据链路层
4 物理连接层
网络状态机 EtherCAT State Machine
网络状态机如下图所示
对应功能介绍:
...
Ethercat学习-电机调试问题总结
西澳峰的博客
03-10
3035
主站硬件:STM32F405+LAN8720A主站软件:SOEM。
IgH EtherCAT master-ethercatpack.7z
10-16
之前工作有接触到Ethercat 并学习实践了IghMaster库,现在不做这方面工作了把代码开源出来,希望对大家有用。
代码使用Source Insight 3.5编辑的,用其它编辑器可能会出现乱码。
压缩包中包含了
1.基于Ighmaster 1.5.2驱动Sanyo,泰科伺服电机做力矩模式运动的代码。包含电机使能/禁止使能,设置运行模式,控制模式,发送力矩控制命令,读取力矩反馈等功能。基于SDO方式实现的代码。
2. 基于Ighmaster 1.5.2 驱动Et100 Io板代码,基于PDO,SDO方式的Io控制及温湿度读取
3. 测试例子包括了介于原生驱动接口ioctl方式控制码和基于libethercat库的驱动代码。具体见源代码。
文档目录结构及简要说明
0.Ethercat调试记录.txt
自己调试Ethercat过程中碰到的问题及解决办法
1. libethercat\std 目录
编译Igh生成的ethecat库
2. libethercat\include
Igh Master Ethercat库包含的头文件
3. scripts/
自动生成从站信息的相关脚本文件,要生成从站信息,将该文件夹复制到开发板运行GenerateSlavesConfig.sh。
默认生成ec_common_configs_define.h和ec_common_configs_define.c文件,这两个文件会在libethercat\ec_common\ecat_common.c,libethercat\ec_common\ecat_common.h相关接口使用。
4. libethercat\ec_common
4.0
ec_common_configs_define.h
ec_common_configs_define.c
由脚本scripts/GenerateSlavesConfig.sh自动生成的从站信息,包括从站PDO,SDO设置等,更具体的可以参照scripts/README.txt
4.1
ecat_common.h
ecat_common.c
基于ibethercat\std 中的库的二次封装库,简化了PDO,SDO等操作
4.2
ecat_common_intermediate_interface.h
ecat_common_intermediate_interface.c
与具体厂商相关的接口库,基于ecat_common.c中接口的实现,不同设备修改这两个文件中的接口进行适配。
目前该文件实现的山羊电机接口。主要实现的PDO接口的电机状态查询,上电开机,关机,操作模式设置,力矩设置等接口,不同电机的类似接口可以参照该文件实现,接口作用见名知意。
封装接口的关键是对象字典的操作,根据手册设置对象字典即可,标准的Ethercat接口伺服电机一般来说对象字典定义基本是一样的,可能稍微有差别
5. 标准Igh Master接口的使用例子
mytest目录
mytest/test_torque_sanyo_ioctl
基于ioctl接口的sanyo电机测试例子
mytest/test_torque_tec_ioctl
基于ioctl接口的泰科电机电机测试例子
mytest/test_torque_tec_lib
基于libethercat\std库接口的电机测试例子
mytest/test_torque2
基于libethercat\std库接口的电机测试例子2
mytest/test_io_board
ET1100,IO板的测试例子
基于标准的Igh 库及iotcl接口可以参照该文件夹例子
6.二次封装接口库ecat_common_intermediate_interface.c的使用说明
使用步骤
(1)将编译生成的Igh库文件替换libethercat\std文件, 文件名可能要改成,或者不该也行,自己写Makefile时匹配库名称就行
(2)将 scripts/ 目录复制到开发运行GenerateSlavesConfig.sh脚本,将脚本生成的ec_common_configs_define.h ec_common_configs_define.h 复制到libethercat\ec_common 文件夹
(3)基于二次封装接口的电机一般操作参照demo.c
参照demo.c中的ethercat_init() 进行从站初始化
初始化后就可以调用ecat_common_intermediate_interface.c中接口对从站进行操作
比如
interpolation_2_ecat_set_slave_pwr_on()接口使能电机,
interpolation_2_ecat_set_slave_pwr_off() 关闭电机
interpolation_2_ecat_set_slave_target_pos() 设置目标位置,对应位置模式操作
其它接口作用见参照具体实现
7.关于轴操作的几点说明
(1)每个轴对应一个从站,由alias,position确定,一般来说从站不多时alias=0固定不变,对不同轴根据positon确定。
例如使能和关闭不同的轴
int interpolation_2_ecat_set_slave_pwr_on(MasterSpecifiedInfo_T *master_specified_info, int slave_pos);
int interpolation_2_ecat_set_slave_pwr_off(MasterSpecifiedInfo_T *master_specified_info, int slave_pos);
中slave_pos参数就对应不同的轴,slave_pos=0,axis1 slave_pos=1,axis2...
(2)设置不同轴的操作模式,位置,力矩,速度模式 可以参照这个接口
int interpolation_2_ecat_set_slave_operation_model(MasterSpecifiedInfo_T *master_specified_info, int slave_pos, unsigned char operation_model)
代码已经托管在云上,可以直接通过git下载:
https://gitee.com/wllw7176/MyEthercat-IGH-1.5.2.git
汇川 Ethercat 总线通讯
08-15
汇川 Ethercat 总线通讯模板,汇川H5U
EtherCAT之相知(状态机&字典)
u014311679的博客
05-31
2695
状态机
ethercat在建立主从连接时,需要通过一套逻辑状态机来完成,状态机的模型如下:
Init(初始化):在这个状态下,通过主机同步EtherCAT总线网路, 主机仅访问从设备的寄存器,但在应用层没有任何交互;
I TO P:
• 主机读取Eeprom的加载状态;
主机为邮箱交互方式配置SM通道(专属于邮箱通信的SM0和SM1通道);
• 主站设置AL Control寄存器申请转换为Pre...
EtherCAT使用与解析-主站状态机(idle->preop)
lswdcyy的博客
04-05
2699
当加载完毕ec_master主站模块和一个网络驱动模块后(如ec_generic),整个系统就创建一个线程用于指向空闲阶段函数(./master/master.c/ec_master_idle_thread()),在该函数中有一个过程就是执行主站状态机,也就是ec_fsm_master_exec()函数,具体实现模式就与主站中的ec_fsm_master_t类型结构有关,该类型的数据如下:
s...
IGH(ethercat)命令行不能进入OP原因
关注工业机器人应用
12-17
4773
解决命令行不能让伺服进入OP模式的问题。
EtherCAT IgH常用命令行使用记录
Rot_Tianers
05-07
1414
该命令显示主站和从站的信息,且其生成的PDO信息可以直接被应用层的ecrt_slave_config_pdos()函数调用。用来请求从站转换状态,可选参数有INIT、PREOP、BOOT、SAFEOP、OP。显示当前支持的命令行指令,当前总共提供了 28 个命令行指令。以文本信息输出总线上连接的所有从站设备连接拓扑图。显示当前主站和从站设备的连接状态和信息。显示当前从站设备的连接状态和信息。显示当前ighH主站的版本信息。
EtherCAT的实现和应用 - 从站软硬件设计
weiDev的博客
03-21
3577
EtherCAT的实现和应用 - 从站软硬件设计
DevOps本地搭建笔记(个人开发适用)
最新发布
py431382的博客
03-10
506
win11 + wsl2 + armbian(玩客云矿渣),构建个人cicd流水线,提高迭代效率。
EtherCAT state Machine
07-20
EtherCAT(Ethernet for Control Automation Technology)是一种用于实时控制系统的网络通信协议。EtherCAT状态机(EtherCAT State Machine)是指在EtherCAT网络中,用于描述各个设备(从站)状态转换和通信行为的模型或算法。
在EtherCAT网络中,每个设备都有一个状态机,用于管理设备之间的通信和协调操作。状态机定义了设备的状态以及在不同状态之间的转换条件和动作。通常,EtherCAT从站设备的状态机包括以下几个常见的状态:
1. 初始化(Init):设备初始状态,进行硬件初始化和配置。
2. 预运行(Pre-Operational):设备已经初始化并连接到EtherCAT网络,但还不能进行实际的数据交换。
3. 运行(Operational):设备进入正常工作状态,可以进行实时数据交换和控制操作。
4. 停止(Stopped):设备停止工作,停止数据交换和控制操作。
5. 错误(Error):设备发生错误或异常情况,需要处理和恢复。
通过状态机的状态转换和相应的动作,各个设备可以在EtherCAT网络中进行同步的数据交换和协调操作,实现实时控制系统的功能。
需要注意的是,具体的EtherCAT状态机实现可能会有一些差异,不同设备厂商或应用领域可能会有自己的状态定义和行为。因此,在使用EtherCAT网络时,需要根据具体设备的文档和规范来理解和实现相应的状态机逻辑。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
RinHoo
CSDN认证博客专家
CSDN认证企业博客
码龄3年
暂无认证
24
原创
126万+
周排名
6万+
总排名
8537
访问
等级
503
积分
100
粉丝
140
获赞
10
评论
129
收藏
私信
关注
热门文章
进程和线程,多线程示例
835
ethercat状态机
621
ros2 第一章ros2概述与环境搭建
437
ctrl+c触发sigint终端无限循环执行之后代码
408
一张图片的打印出来的实际尺寸是多少,通常说的显示器的分辨率具体是什么
346
分类专栏
文献
cpp
工业机器人
电机
ethercat
qt
ros
linux
最新评论
安装ubuntu22.04
CSDN-Ada助手:
恭喜你写了第18篇博客!安装ubuntu22.04这个主题确实是一个很有用的教程,对很多人来说都是非常有帮助的。希望你能继续保持创作的激情,分享更多有趣、实用的内容。或许下一步可以考虑分享一些关于ubuntu22.04的使用技巧和经验,或者是一些相关的软件推荐,让读者能够更好地利用这个系统。期待你的下一篇文章!
can总线
CSDN-Ada助手:
恭喜您撰写了关于“can总线”的博客!您对这一主题的深入探讨让我受益匪浅。希望您能继续保持创作的热情,不断分享您的专业知识和见解。或许下一步可以考虑分享一些实际案例或者对未来can总线发展的展望,这样会更加丰富您的博客内容。期待您的下一篇精彩文章!
canopen
CSDN-Ada助手:
恭喜您写了第16篇博客!看到您对CanOpen的深入探讨,我感到非常兴奋。在下一步的创作中,我建议您可以考虑结合实际案例或者具体的应用场景,让读者更容易理解和接受这些技术知识。期待您更多精彩的文章!
iso/osi
CSDN-Ada助手:
亲爱的博主,恭喜你写了第17篇博客!iso/osi是一个非常重要的话题,你的文章写得很详细,让我受益良多。希望你能继续保持创作的热情,不断分享自己的知识和见解。下一步,我建议你可以尝试结合实际案例,深入分析iso/osi在实际应用中的价值和意义,这样会更加生动和具有实践性。期待你的下一篇精彩文章!加油!
twincat2、3
CSDN-Ada助手:
恭喜您写了第9篇博客!您对twincat2、3的深入探讨让我受益匪浅。希望您能继续保持创作的热情,分享更多关于这方面的知识。或许下一步可以考虑结合实际案例,分享一些使用twincat2、3的经验和教训,这样更能帮助到大家。期待您的下一篇作品!
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
机械设计中最常用的3种材料——304不锈钢、45号钢和Q235
ros2 第一章ros2概述与环境搭建
ctrl+c触发sigint终端无限循环执行之后代码
2023年24篇
目录
目录
分类专栏
文献
cpp
工业机器人
电机
ethercat
qt
ros
linux
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
EtherCAT Diagnostics 诊断 - 知乎
EtherCAT Diagnostics 诊断 - 知乎首发于深入浅出之Beckhoff切换模式写文章登录/注册EtherCAT Diagnostics 诊断噜啦啦学而时习之,不易悦乎一、EtherCAT 错误是怎么检测到的?EtherCAT 通常具有“即扫即用”的特性,扫描网络、启动系统,所有组件就运行起来了。绝大多数情况下不需要设置任何参数。发现EtherCAT网络的通讯问题,典型的情况是因为以下原因:机器停止工作,或者控制项目 (PLC 程序, NC 任务…) 接收到的数据值明显与实测值不一致。示波器测到信号为True,而PLC变量值为False.在TwinCAT项目中显示了错误(典型的情况是在Master Online页面或者TwinCAT Logger)二、EtherCAT 网络中的错误类型能影响到EtherCAT网络的错误分为2大类:1.硬件错误物理介质中断:数据帧无法达到所有从站,或者根本不能回到主站。信息破坏: 数据帧到达网络中的所有从站并回到了主站,但有一些内容改变了。2.软件错误启动时从站达不到OP状态,因为来自主站的一个或多个初始化的命令被检测到不正确由于在操作过程中检测到错误,一个正常工作的从站突然脱离OP状态EtherCAT 分别从硬件和软件层面提供了丰富的诊断信息, 诊断信息可以按下图归类:三、周期性同步诊断周期性同步诊断 – Working CounterWorking Counter 是和过程数据(Process Data)一起的周期性送回主站的唯一诊断信息,所以这是最早能被主站和用户程序检测到的报警标记。一个EtherCAT数据帧中的每个数据报文都以一个16位的Working Counter (WKC)结尾,WKC 每经过一个数据报文中指定的从站就会递增,递增的原则如下:Read-only 命令(xRD): 如果从站内存可读,则 WKC+1.Write-only 命令(xWR): 如果从站内存可写,则 WKC+1.Read+Write 命令(xRW): 如果从站内存可读 WKC+1,可写则 WKC+2 (i.e. 如果读写都成功则 WKC+3).1.主站检查返回的每个数据报文的WKC值返回主站的数据报文中的WKC 当前值 = 预期值 →WKC 有效,数据报文中的输入数据转发给控制程序(PLC, NC, …)每个总线周期主站都会验证 Working Counter.返回主站的数据报文中的WKC 当前值 ≠ 预期值 →WKC 无效,数据报文中的输入数据被丢弃 (PLC/NC 使用旧的数据)本页是WKC验证有效的情况验证的结果就在每个同步单元Sync Unit的从站的WcState信息中标记,验证成功则WcState为0,验证失败则WcState为1这就是为什么一个同步单元Sync Unit会共享同一个WcState标记,而任一从站读写不成功都会导致整个数据报文都无效。读写不成功的原因:从站没有成功增加WKC,有可能因为物理上数据帧就没有到达,或者因为它不在OP状态,或者其它可能的原因。在最新版的TwinCAT 3.1中,可以把单个从站(左图)或者全部网络从站(右图)配置为:主站把 无效的输入数据全部置 0 而不是废弃之。这个功能更加危险,如果开发人员考虑不周,可能性会引起程序误动作。慎用!2.Working Counter 相关信息:很少能检测到具体是哪个或者哪些从站没有成功处理数据报文(数据报文中指定地址的从站没能成功增加数据报文的WKC)。不会报告错误原因(从站没有成功增加WKC,有可能因为物理上数据帧就没有到达,或者因为它不在OP状态,或者其它可能的原因)。WKC与数据帧同步到达,主站以最快的速度作出故障响应,立即向控制程序或者用户提供一个故障标记位。WKC的有效标记位通常还需要与硬件或者软件诊断信息同时使用,这些诊断信息可以 由主站发送命令读取回来,并帮助定位故障位置和故障原因。Working Counter 的主要目的是立即检测出通讯错误, (i.e. 为了主站快速做出反应), 而不是为了精准分析通讯错误四、Working Counter 和 Sync Units(WKC和同步单元)1.SyncUnits(同步单元) 把从站分为不同的组,每个组使用不同的数据报文,所以每个同步单元具有独立的 WKC。对于伺服驱动器,为了精确定位故障点,可以把每个伺服都设置为独立的同步单元。对于IO模块,可能把一个耦合器及所带的IO模块,配置为一个同步单元。为了优化的目的,Sync Unit 的配置是一个可选的步骤。关于如何分配同步单元,并没有一个黄金法则,因为这是由项目决定的:通常来讲,工作时紧密相关的从站应该分配到同一个同步单 元,而功能相对独立的从站应该放到独立的同步单元。2.在 TwinCAT中指定 SyncUnitTwinCAT为不同的Sync Units(同步单元)创建独立的数据报文,每个报文拥有自己 Working Counter 计数器五、硬件诊断1.硬件状态速览主站的 Online 页面,提供了诊断网络硬件问题的最佳方法系统上电时候可能产生硬件错误,并在TwinCAT中累加,而通常这些错误并不代表有问题。所以,查找可能的硬件问题时,建议清除程序启后的所有错误计数,这样才能监视到运行过程中 发生的实际错误次数。2.初步检查 – 拓朴错误VPRS = Vendor ID, Product Code, Revision Number, Serial Number: 网络启动时主站扫描到的拓朴结构与TwinCAT 配置文件的朴拓结构不符。此类错误的原因,可能只是简单地插错网线。3.初步检查 – 接地和屏蔽发生硬件错误时,建议必须检查EtherCAT网络设备是否共用同一个接地(因为不同接地之间的 环流可能导致数据损坏)。关于EtherCAT网络安装的更完整、全面的描述信息,请参考ETG文档 ETG.160 “EtherCAT Installation Guidelines” ,可以从ETG官网www.ethercat.org.下载。4.初步检查 – EBUS 电流每个 EL 模块都会消耗若干 EBUS 电流,硬件故障发生时,建议必须检查每个I/O组的可用Ebus电流。根据经验,EBUS耗电量大的模块,比如网关模块EL6xxx,在保证其EBUS供电足够的前提下,建议散放在耗电量小的模块( 比如普通DI/DO模块)之间,所以尽量不要几个网关模块挨在一起,也不要紧挨着控制器或者耦合器放置。这是从散热的角度考虑。电流消耗达到限值时,应插入一个 EL94xx 模块。EL9100电源模块不仅可以接入负载电源,还有散热的作用,是最便宜的发热量最小并且能传递EBUS的模块。相同价格的还有EL9186/EL9187等电位分接模块。5.Emergency Scan(紧急扫描)Emergency Scan (紧急扫描)操作,可以发送预定数量的探测数据帧,用于快速测试物理连接 (TwinCAT 应处在 Config Mode):Emergency Scan 能够快速检查EtherCAT网络的永久硬件问题 (设备、电缆或者接头损坏)。用Emergency Scan的方法很难检测到随机的/不定时的干扰,处理这种干扰,应该进行完整的error counter analysis (错误计数分析)。6.EtherCAT 端口的硬件诊断为了进行更深入的分析,从站提供了基于端口的(port-specific)硬件错误计数。EtherCAT 定义了端口号 0 to 3 (端口 0 总是输入口),而TwinCAT 中通常把这些端口依次叫做A 到 D (A 总是输入口),两种端口定义方式是等效的:Master的Online页面,可以在线看到CRC校验错误计数。大部分从站是两个数字,耦合器EK1100有3个数字,而分支模块EK1122则会有4个数字。7.Link Lost (连接丢失)错误计数器有时候两个EtherCAT从站之间的物理连接可能会完全中断:信号完全无法到达相邻的从站。Link loss(连接丢失),最有可能的原因是:电缆或接头损坏(电缆连接),接触弹片不够力或者氧化( Ebus连接)。一个或者几个从站掉电。一个端口上的物理连接中断,从站就会把该端口的 Link Lost Counter(连接丢失计数器) 加 1。Register 内存地址长度含 义0x03101 字节port 0 的连接丢失次数0x03111 字节port 1 的连接丢失次数0x03121 字节port 2 的连接丢失次数0x03131 字节port 3 的连接丢失次数物理连接的状态发生久性或暂时性的改变,在TwinCATLogger消息区中都会报告(并且保存在Windows Log 中)。8.Link/Activity (连接/活动)指示灯连接的永久中断很容易检查出来,不用分析连接丢失计数器( Link Lost Counters ),只需要简单查看主站的Online页面:9.无效帧(Invalid frame)错误计数器有时候,即使硬件信号到达了相邻的从站,接收到的信号却与最初发送的不一致:数据包发生损坏,最有可能的原因是:如果该错误计数零星增加,极可能是由于外部 EMC 干扰。如果该错误计数快速且稳步增加,极可能是由于设备损坏。一个端口上的数据帧破坏,从站就会把该端口的 InvalidFrameCounter(无效帧计数器)加 1。RX 错误计数器 和 CRC 校验错误计数器,都意味着硬件接收到的数据帧损坏,表征信息非常相近,但是二者分别是在从站架构的不同层面检测到的,其含义也略有不同。10.物理介质上的信号传输0和1的逻辑序列要在物理介质上传输,需要编码成预定义的电压/电流 电平(或者电平转换)。电流/电压 值的序列叫做 symbols(符号).基于特定的硬件编码标准,电流/电压值的可能序列并不是全都具有含义,这样就有了 有效符号和无效符号的分别。物理介质上符号是连续传输的,既在Ethernet数据帧内也在数据帧外(数据帧外的符号序列是为了让接收方及时检测到可能发生的连接丢失错误)通讯由符号序列组成携带着有含义的信息的符号序列,就是Ethernet 数据帧。两个Ethernet数据帧之间传输的符号序列,就是 数据帧间隔硬件错误分为两种类型,都在无效帧计数器中累计。RX Errors:个别符号错误 (被特定的硬件解码器识别为无效).在数据帧内部或者外部都可能发生(即使是在没有数据帧传输的时候,每个物理接口都会传输 idle 即表示空闲的符号)→ RX Error Counters (无效帧计数器的高字节)CRC Errors:整个数据帧的循环冗余校验(CRC)错误.在数据帧内发生 (只有Ethernet 数据帧才进行校验).→ CRC Error Counters (无效帧计数器的低字节)11.RX 和 CRC 错误的类比硬件通讯介质上的数据传输可以用标准的语言书写来打个比方:RX 和 CRC 错误 在解释上具有细微的差别,例如:CRC校验只检查数据帧(Frame)内语义是否正常,但并不能发现网络帧间隔的非法字符。RX校验所有字符是否非法。CRC 错误 – 什么情况下会检测出来?12.链接丢失(Lost Link)错误的简单监视在EtherCAT主站的Online页面可以监视到链接丢失(Link Lost)只要在主站的Advanced Setting中启用累加计数“Show Change Counters”即可:添加这些操作是不需要重启TwinCAT软件的此计数表示与从站的物理连接丢失的次数(1表示首次连接,>1表示在运行期间至少出现过1次 物理连接丢失)。在EtherCAT主站的Online页面可以监视到数据帧错误(Frame error)即从站的RX Error计数寄存器的低字节,错误计数如下:从站的Frame Error计数器中保存着自TwinCAT启动以来的累计出错次数,点击“Clear CRC”所有从站的CRC计数清零,并重新累计。13.怎样正确跟踪硬件错误计数为了追踪硬件错误计数,建议进行以下设置:在主站的Advanced Setting中 不要勾选 “Log CRC Counters” 标记。在Online视图中添加注册字 0x0300÷0x030A 和 0x0310÷0x0312。激活并重启 TwinCAT 配置:重启TwinCAT后,清空所有错误计数:TwinCAT 中,EtherCAT主站的 Online 页面总是以 word-oriented 的方式显示计数值。等待,直到错误补检测到:捕捉到的错误次数越多越好 (关闭项目或者重启TwinCAT就会清除计数,而最小化项目或者切换窗口则不会清除计数). 记录的值可以导出,以供进一步分析。错误计数采集完成后,记得应把 “Log CRC Counters” 重新勾选上。(TwinCAT 需要重启).14.怎样定位一个错误?为了从显示的CRC错误计数分析出网络中的故障点分布情况,建议:逻辑上沿着网络数据帧传播的方向确定从站端口执行CRC校验的顺序(根据 前述信息 previous information):根据前面确定的顺序检测第一个报告RX Error Counter >0 的端口:在网络中定位第一个报告RX Error的故障点:报告无效错误计数器不为零的第一个端口 → 极有可能就是故障点。15.在故障点采取什么措施?在上页定位到故障点 previously located 后,应进行以下操作 :检查与上个从站之间的连接电缆:EtherCAT网线的走向是否靠近电源线或者干扰源?是否自制电缆的接头做工很差?电缆的屏蔽层是否接地良好?检查故障点的站和前一个从站:是否供电不足 (供给本站的电流太小, 例如:EBUS 电流)?两个从站的接地点不是等电位?试着替换该从站和前一个从站,或者交换二者的顺序,以查看错误是跟随某个从站还 是出现在原先的位置。对于 EMC 干扰, 应该会导致 RX 和 CRC 错误都有增加 (即使二者增加的机率可能不同), 因为外部干扰不可能与通讯同步,于是在Ethernet 数据帧内部和外部都会破坏数据。完全不平衡的计数值 (RX错误很多,而没有CRC错误,或者很CRC错误而没有RX错误)可能意味着其中一个从站的内部硬件错误。16.深入了解 - CRC 错误的转发机制部分从站还额外支持 转发CRC错误计数器(Forwarded CRC Error Counters): 第1个检查出CRC错误的从站,其CRC 错误计数器(Register 0x0300)增加,第2个及之后再检查出CRC错误的从站则增加其转发CRC错误计数器(Register 0x0308)而CRC 错误计数器保持不变。并非所有从站都支持 转发CRC错误计数器(Forwarded CRC Error Counters) 功能 (该特性为可选项) ,所以该计数应视为补充信息: 有助于定位出错的第1个设备,但不是关键指标。17.深入了解 – 转发CRC错误的计数器TwinCAT 中, EtherCAT主站的 Online 页面总是以 word-oriented 的方式显示计数值,所以转发CRC错误计数器( Forwarded CRC Error Counter )的说明如下:18.主站错误计数此外,EtherCAT 主站 也提供硬件错误 计数:EtherCAT 主站支持两种不同的错误计数器 :Rx Errors: 与从站侧的 RX 错误计数器类似,由网卡统计符号错误的次数 (发生在数据帧内和数据帧外的错误).Lost 数据帧: 由于EtherCAT闭环在某处中断未能返回主站的数据帧和返回了但CRC校验错误的数据帧 TwinCAT 都视作丢失的“lost“。在TwinCAT中,如果丢失一个数据帧,则该数据帧包含的所有数据报文(Datagram,即Sync Unit同步单元)都会报Working Counter 错误,显示为所有从站的WcState为Invalid。分别考虑不同的数据帧类型:Cyclic: 周期性数据帧 发送要交换的过程数据( Process Data):Queued: 排队等候的数据帧,包括所有非周期性的数据帧: 邮箱 Mailbox, 状态机 State Machine, 注册字访问 Register access19.在线查看拓扑结构大部分硬件诊断信息,可以在 Topology View 界面监视Topology View 是个 ActiveX 插件,可以导出到任何独立于TwinCAT 开发环境的 Windows 应用。六、Software Diagnostics 软件诊断1.软件层面的错误 – EtherCAT 状态机软件层面的诊断信息,通常与EtherCAT 状态机操作有关: 一旦从站不能按主站要求进入正确的状态, 就会在从站的注册字(Register 0x0134)中报告AL状态代码(AL Status Code)。在 TwinCAT Logger 中也会显示状态机错误:TwinCAT 默认总是试图清除状态机错误,并且把所有从站切回OP状态。此时, 要在主站的Advanced Settings中取消选中该标记。2.状态机切换异常( Unexpected State Transitions )的简单监视在EtherCAT主站的Online页面可以监视从站状态机异常切换的次数,只要在主站的Advanced Setting中启用该计数即可显示:此计数表示与从站的状态机切换异常的次数(1表示首次切换,>1表示在运行期间至少出现过1 次状态切换异常)。3.EtherCAT 状态机错误的类型EtherCAT 状态机错误可以归为2个大类:初始化错误 (启动时从站不能进入OP状态): 状态机切换过程中,主站根据 ESI 文件的内容向从站发送初始化命令. 如果从站检测到一个或者几个 start-up 参数无效,就会拒绝相应的状态机切换。典型 的初始化错误:此时 Register 0x0134 的值显示为:0x0003 : Invalid Device Setup (BK1xxx上配置的KL模块顺序不正确)0x001D : Invalid Output Configuration (配置的输出过程数据无效)0x001E : Invalid Input Configuration (配置的输入过程数据无效)0x0035 : Invalid Sync Cycle Time (在 DC 模式中设置的Cycle Time不支持)运行时错误 (从站退出OP到更低级的状态): 配置正确的从站成功进入OP状态以后,在运行过程中检测到错误,并因此执行切换到更低级的状态。典型的运行时错误:此时 Register 0x0134 的值显示为:0x001A : Synchronization error (网络的抖动导致从站的同步丢失)0x001B : Sync manager watchdog (从站未接收到周期性数据的时间,持续超过了watchdog时间)0x002C : Fatal SYNC error (ESC 再未收到 SYNC 硬件中断)4.发生初始化错误 – 怎么办?从站的 ESI 文件应包含TwinCAT在网络中正确配置该从站所需要的全部信息。如果使用从ESI读取的默认设置来激活配置 (而不做任何手动修改), 从站应该能进入OP状态而不报错。如果发生了初始化错误:确保 ESI 文件复制到了 包含所有从站描述文件的TwinCAT统一路径(ESI 文件中的ProductCode 和 Revision Number 与CoE对象 0x1018 中显示的信息相匹配)。检查从站的默认设置是否改动过,如果改过就删除该从站再在TwinCAT配置中手动添加。(以恢复默认设置)对模块化的从站(For modular slaves) ,检查“Slots” 页面配置的模块与实际连接的模块在型号、数量、顺序上是否严格一致。对具有分布时钟同步功能的从站设备(For DC-Synchronous devices),检查主站的Jitter或者Sync Shift Time的设置是否会妨碍从站正确实现DC同步。如果是这种情况 ,只是检查并不能解决问题,必须联系从站的制造商。5.发生运行时错误 – 怎么办?从站成功进入OP状态以后,在运行时不会无故退出OP状态。如果发生了运行时错误:如果从站发生了 watchdog 错误,检查TwinCAT 软件任务 (PLC 程序, NC 任务, …)是否正确运行,因为在TwinCAT中总是由上述任务触发数据帧的周期性发送和接收。检查主站设备的Jitter表现(抖动范围)是否能证明发生了同步丢失。(最大的Jitter超过通讯周期的20-30%时,很容易发生同步错误)。检查是否发生了硬件错误,比如物理连接丢失,这种错误可能间接导致Watchdog动作,或 者同步丢失 ( 参考“物理层问题的硬件诊断 ”)。如果是这种情况 ,只是检查并不能解决问题,使用 Wireshark 进行追踪会是个有用的办法。6.保存和导出软件错误状态机错误保存在 Windows Log 中,可以导出,以便在即使TwinCAT Logger已经关闭或者不可用的时候,还可以进一步分析:7.历史诊断信息(Diagnose History Object)对于所有应用相关的错误,部分 CoE从站设备支持“历史诊断信息”功能 (Diagnosis History Object ) Register 0x10F3.如果从站支持该功能,TwinCAT 就会额外显示一个页面 “Diag History” :8.邮箱协议错误(Mailbox Protocol Errors)邮箱协议错误( Mailbox protocol errors )是一个指定类的一般性软件错误,它不是厂家自定义的,不影响 EtherCAT 状态机,不会阻止也不会导致意外的状态切换。仅当执行某个特定的邮箱协议所禁止的动作时,才会发生邮箱协议错误。在 ETG.1000.6 规范中,公布了每个邮箱协议支持的错误代码及描述信息。9.发生了邮箱协议错误(Mailbox Protocol Errors )– 怎么办?根据特定的邮箱协议,可能的错误原因是:•CoE-主站试图读写从站的对象字典(Object Dictionary)中并不存在的对象-主站试图对从站的某个“只读” 对象执行“写入”操作。-主站试图以“完全访问”的方式访问从站的某个对象,而从站并不支持该功能。•FoE-文件名错误 (例如, 缺少扩展名*.xxx).-从站需要密码, 但未被正确设置-文件大小超出了从站能接受的范围-从站不在 Bootstrap 状态•EoE-主站试图把从站的 IP-Add(Internal Use)ress 配置为末位为0的值(比如“x.y.z.0”),而EoE从站的Tcp/Ip 协议栈拒绝此设置。注意:•TwinCAT 仅在以下时段 读/写 CoE 参数: -在初始化阶段(Startup 命令) -CoE-Online 页面打开时•如果错误信息显示TwinCAT试图间歇性地读写CoE参数,很可能这是PLC程序的动作。七、TwinCAT PLC 中编写EtherCAT 诊断程序1.在PLC程序中系统地诊断 EtherCAT 状态对于EtherCAT 网络, TwinCAT 自动提供了大量诊断信息,可以在PLC程序中用于检测总线通讯的错误, 以便自动做出响应并报告给用户。用户总是倾向于在PLC程序中实现最少的EtherCAT诊断,因为这样有助于通讯错误发生时节约大量的操作时间。TwinCAT PLC 程序可以混合使用 2 种不同的诊断信息 :周期性信息 : 默认包含在EtherCAT网络的周期性过程映像数据中的 输入数据, 可以直接映射到相应的PLC输入变量 (AT %I*).非周期性信息 : PLC程序调用默认库文件(TcEtherCAT.lib)中指定的功能块,可以获取这些非周期性的EtherCAT诊断信息 。2.TwinCAT 中的周期性诊断信息注意:至少所有从站的 WcState 和 State 变量应链接到 PLC 程序,以便应用程序可以对 EtherCAT 进行最基本的诊断。3.周期性信息 - FrmXWcState 变量允许 PLC 检查每个报文的 Working Counter 信息:每个配置的Frame都具有一个16位的诊断变量 FrmXWcStateFrmXWcState 的每个位对应Frame中的特定报文如果对应报文的Working Counter错误,这个位就会变为TRUE4.周期性信息 - WcState 变量这是每个从站的过程数据中都具有一个布尔型变量如果报文的Working Counter 错误,报文中所有从站的WcState 变量都会被置位,所以,如果一个从站的 WcState = 1, 也并不表示它本身发生了错误。 (内部使用) 进一步的信息需要查看这些 WcState 为 1 的从站的16位状态变量 State5.周期性信息 - State 变量EtherCAT Master汇总从网络收集的诊断信息,周期性地更新State变量,对应几种错误情况:6.周期性信息 – State 变量状态变量报告的错误诊断信息如下:7.非周期性信息 – TcEtherCAT PLC Library在TC2和TC3的默认安装中都免费提供TcEtherCAT.lib库, 该库包含若干功能块,可以对EtherCAT网络进行非周期 性诊断Frame 分析CRC 分析从站识别配置从站的数量和列表实际从站的数量和列表该库原则上允许PLC程序自动读取在TwinCAT开发环境中 在线显示的所有信息。功能块FB_EcGetSlaveTopologyInfo功能块FB_EcGetSlaveTopologyInfo返回关于不同从站的端口如何相互连接的信息,以及(配置的)网络拓扑结 构的信息,(如果配置了热连接组,则它们将列在阵列的末尾)。功能块FB_EcGetConfSlaves功能块 TwinCAT 离线配置,知道 EtherCAT 网络包含哪些从站。功能块 FB_ecgetscannedsaves功能块 FB_ecgetscannedsaves 使 PLC 可 以 获 取EtherCAT网络在线检测的实际从站信息,以便和使用FB_EcGetConfSlaves 获得的离线配置的从站信息进行比较。功能块 FB_ecgetscannedsaves功能块FB_ecgetallslavercerrors可以周期性调用,以判断一个或多个从站是否报告CRC错误。这样就可以只对 这些出错的从站调用FB_ecgetslavecercerrorex,以获取进一步的故障信息。功能块FB_ecgetslavecercerrorex功能块 FB_ecgetslavecercerrorex 使 PLC 可 以 获 取EtherCAT主站记录的特定从站的CRC错误信息,这些信息与TwinCAT 开发环境中的 EtherCAT 监视界面显示的信息一致。功能块FB_EcMasterFrameStatistics功能块 FB_EcMasterFrameStatistics 使PLC可以获取EtherCAT主站检测到的Frame丢失等情况,这些信息与TwinCAT 开发环境中的 EtherCAT 监视界面显示的信息一致。功能块FB_EcGetAllSlaveAbnormalStateChanges功能块FB_EcGetAllSlaveAbnormalStateChanges,统计每个从站 从 OP 退至 SafeOP 的异常状态切换,但并不报告每次异常切换时相关的特定AL 状态码。功能块FB_EcGetLastProtErrInfo功能块 FB_EcGetLastProtErrInfo 允许覆盖上一次邮箱协议错误 Mailbox protocol error (例如, CoE协议的SDO退出代码).对同一从站的下一次正确邮箱访问会清除此前记录错误信息的内存区。八、附件:使用 Wireshark 进行诊断1.如果软件诊断还不够 – 使用 WiresharkWireshark 并不是用以取代TwinCAT中的诊断功能 。对于用户来说,应当在使用了其它诊断方法都无法找到故障点的时候,才使用这个“终极武器”。使用ET2000 可以在Wireshark中获得最好的捕捉效果为了执行 Wireshark 抓包,有多种不同的硬件配置。2.Wireshark 抓包的硬件配置 1不支持 Windows CE没有精确的时间戳3.Wireshark 抓包的硬件配置 2不支持 Windows CE有精确的时间戳4.Wireshark 抓包的硬件配置 3支持 Windows CE有精确的时间戳5.Wireshark 示例Wireshark 允许追踪每个 EtherCAT 数据帧的 list, structure and content of (在一轮捕捉过程中,每个数据帧会被捕获两次!).下图显示了捕获的一个周期性数据帧:6.Wireshark – 时间戳协议( 仅当使用ET2000时 )使用ET2000时,为了在Wireshark中获取到极为精确的时间戳(time-stamping)信息, 应当启用对ESL协议的解析功能。Wireshark Version 2 支持此功能。7.Wireshark – 时间戳协议( 仅当使用ET2000时 )…在早期的 Wireshark Version 1中操作如下:8.Wireshark – 显示时间的格式使用Wireshark追踪时,用户可以选择最合适的 时间信息 显示格式:9.Wireshark – 部分过滤选项(Filter Options)捕获的数据帧可以使用过滤功能,可用的过滤选项包括:仅捕获周期性数据帧(Cyclic Frame)Filter: (ecat.cmd == 0x0a) || (ecat.cmd == 0x0b) || (ecat.cmd == 0x0c)仅捕获邮箱通讯(mailbox communication)Filter: ecat_mailbox Filter: ecat_mailbox.coe Filter: ecat_mailbox.soe Filter: ecat_mailbox.foe Filter: ecat_mailbox.eoe仅访问特定的注册字或者注册字区间 (register or register range)Filter: ecat.ado == Ethercat状态机的实现教程 - 知乎首发于IT技术专栏切换模式写文章登录/注册Ethercat状态机的实现教程iiidd777IT技术分享及教程在主站内核代码执行过程中,总会出现各种情况,比如有些从站被人为的拔下或者从站之间的连接的网线断掉,为了保障主站可以正常的运行,主站必须时刻的检测网络拓扑的状态,因此需要运行一个主站状态机来完成上面提到的工作,其执行在主站状态的上下文中,其有如下几个阶段: Bus monitoring :监视总线的拓扑结构,假如拓扑改变,总线将重新扫描。 Bus monitoring:监控从站的应用层状态,假如检测的从站状态非理想状态,将会进行重新配置。 Request handling:应用层或者外部源请求处理。比如像SII或者SDO访问等要求需要主站异步处理。主站状态机就是在上面三个状态之间不断的转换,具体主要实现流程图如下:上图中只是列出比较重要的部分做出了介绍,主站驱动被加载之后就会不断执行此状态机。期间当检查到从站状态出错的时,还会启动从站状态检测状态机。同时,在执行过程中也会不断的检测是否出现错误及其是否需要退出本状态机。1.主站状态机主状态机在主线程的上下文中执行。 图5.2显示了其过渡图。 其目的是:总线监控:监视总线拓扑。如果更改,则对总线进行(重新)扫描。从站配置:监视从站的应用程序层状态。 如果从站未处于应有的状态,则将(重新)配置该从站。要求处理:处理请求(来自应用程序或来自外部源)。 请求是主机必须异步处理的工作,例如SII访问,SDO访问或类似操作。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信息将被重写。具体的执行流程图如下: 上图可以看出从站扫描状态机就是不断的读取从站的信息,以保障主站可以正常的工作。2.从机扫描状态机从机扫描状态机(如图5.3所示)引导着读取所需从机信息的过程。扫描过程包括以下步骤:节点地址:节点地址是为从站设置的,因此可以为随后的所有操作指定节点地址。AL状态:读取初始应用程序层状态。基本信息:基本信息(如支持的FMMU的数量)是从较低的物理内存中读取的。数据链接:读取有关物理端口的信息。SII大小:确定SII内容的大小以分配SII图像存储器。SII数据:SII内容将读入主站映像。PREOP如果从站支持CoE,则使用状态更改FSM(请参阅第5.6节)将其设置为PREOP状态,以启用邮箱通信并通过CoE读取PDO配置。PDO使用PDO读取FSM,通过CoE(如果支持)读取PDO(请参见5.8节)。 如果成功,则将覆盖来自SII的PDO信息(如果有)。3.从站配置状态机从机配置状态机(如图5.4所示)引导了配置从机并将其置于特定应用程序层状态的过程。初始化(INIT):状态更改FSM用于使从设备进入INIT状态。FMMU清除(FMMU Clearing):为避免从站对任何过程数据作出反应,将清除FMMU配置。 如果从站不支持FMMU,则跳过此状态。 如果INIT是请求的状态,则状态机完成。邮箱同步管理器配置(Mailbox Sync Manager Configuration):如果从属服务器支持邮箱通信,则将配置邮箱同步管理器。否则,将跳过此状态。预备(PREOP):状态更改FSM用于使从设备进入PREOP状态。 如果这是请求的状态,则状态机完成。SDO配置(SDO Configuration):如果附加了从站配置(请参阅第3.1节),并且应用程序提供了任何SDO配置,则将这些配置发送到从站。PDO配置(PDO Configuration):执行PDO配置状态机以应用所有必需的PDO配置。PDO Sync Manager配置:如果存在任何PDO同步管理器,则将对其进行配置。FMMU配置(FMMU Configuration):如果应用程序提供了FMMU配置(如果应用程序注册了PDO条目),则将应用它们。安全运行状态(SAFEOP):状态更改FSM用于使从设备进入SAFEOP状态。 如果这是请求的状态,则状态机完成。OP:状态更改FSM用于使从站进入OP状态。 如果这是请求的状态,则状态机完成。4.状态改变状态机状态更改状态机(如图5.5所示)引导了更改从站的应用程序层状态的过程。 这实现了状态和转换中所述。Start:通过“ AL控制请求”寄存器请求新的应用层状态Check for Response :一些从站需要一些时间来响应AL状态更改命令,并且一段时间不响应。对于这种情况,将再次发出命令,直到确认为止。Check AL Status:如果确认了AL状态更改数据报,则必须读出“ AL控制响应”寄存器,直到从机更改AL状态为止。AL Status Code:如果从站拒绝了状态更改命令,则可以从“ AL状态更改”寄存器中的“ AL状态代码”字段中读取原因Acknowledge State:如果状态更改不成功,则主机必须通过再次写入“ AL控制请求”寄存器来了解旧状态。Check Acknowledge:发送确认命令后,它必须再次读出“ AL控制响应”寄存器。“开始确认”状态是状态机的快捷方式,适用于以下情况:主机希望确认未请求的自发AL状态更改。5. SII状态机SII状态机(如图5.6所示)实现了通过Slave Information Interface中描述的Slave Information Interface读取或写入SII数据的过程。这是状态机的读取部分的工作方式:开始读取(Start Reading):读取请求和请求的字地址被写入SII属性。检查读取命令(Check Read Command):如果已确认SII读取请求命令,则将启动计时器。 发出一个数据报,该数据报读取状态和数据的SII属性。获取数据(Fetch Data):如果读取操作仍然很忙(通常将SII实现为EEPROM),则将再次读取状态。否则,数据将从数据报中复制。写入部分的工作原理几乎相似:开始写(Start Writing):将写请求,目标地址和数据字写入SII属性。检查写命令(Check Write Command):如果已确认SII写请求命令,则启动计时器。 发出一个数据报,该数据报从SII属性中读取写操作的状态。繁忙等待(Wait while Busy):如果写操作仍然很忙(由最小等待时间和忙标志的状态决定),则状态机将保持在此状态,以避免过早发出另一个写操作。6. PDO状态机PDO状态机是一组状态机,它们通过“对象访问”中描述的“ CoE通信区域”来读取或写入PDO分配和PDO映射。对于对象访问,使用基于EtherCAT的CANopen访问原语(请参见6.2节),因此从属服务器必须支持CoE邮箱协议。PDO读取FSM(PDO Reading FSM):该状态机(图5.7)旨在读取从站的完整PDO配置。它读取每个Sync Manager的PDO分配,并使用PDO Entry Reading FSM(图5.8)读取每个分配的PDO的映射。基本上,它会读取每个Sync Manager的PDO分配SDO的(0x1C1x)个元素,以确定为此同步管理器分配的PDO的数量,然后读取SDO的子索引以获取分配的PDO的索引。 读取PDO索引后,将执行PDO条目读取FSM,以读取PDO映射的PDO条目。PDO条目读取FSM(PDO Entry Reading FSM):此状态机(图5.8)读取PDO的PDO映射(PDO条目)。它通过先读取子索引零(元素数量)来确定映射的PDO条目的数量,从而读取给定PDO的相应映射SDO(0x1600 – 0x17ff或0x1a00 – 0x1bff)。 之后,读取每个子索引以获得映射的PDO条目索引,子索引和位大小。7. CANopen over EtherCAT (CoE)EtherCAT上的CANopen协议用于在应用程序级别配置从站并交换数据对象。SDO Download State Machine:应用SDO配置的最佳时间是在从站的PREOP状态期间,因为已经可以进行邮箱通信,并且从站的应用将从在后续SAFEOP状态下更新输入数据开始。 因此,SDO配置必须是从属配置状态机的一部分(请参阅第5.5节):它通过SDO下载状态机实现,该状态机在进入从属设备的SAFEOP状态之前执行。这样,可以确保每次重新配置从站时都应用SDO配置。SDO下载状态机的转换图如图6.2所示。START:CoE下载状态机的开始状态。 发送“ SDO下载正常请求”邮箱命令。→ REQUESTREQUEST:检查从站是否已收到CoE下载请求。 之后,发出邮箱检查命令并启动计时器。→ CHECKCHECK:如果没有邮箱数据可用,则检查计时器。•如果超时,则SDO下载将中止。→ ERROR•否则,将再次查询邮箱。→ CHECK如果邮箱包含新数据,则获取响应。→ RESPONSERESPONSE:如果无法获取邮箱响应,数据无效,接收到错误的协议或接收到“中止SDO传输请求”,则SDO下载将中止。→ ERROR如果收到“ SDO下载正常响应”确认,则说明SDO下载成功。→ ENDEND:SDO下载成功。ERROR:SDO下载由于错误而中止。发布于 2021-05-28 14:58EDA技术与FPGA工程实例开发(书籍)开放式 IEC 61131 控制系统设计(书籍)以太网(Ethernet)赞同 2添加评论分享喜欢收藏申请转载文章被以下专栏收录IT技术专栏IT技术分享 Ethercat解析之命令行工具的使用教程 - 知乎首发于IT技术专栏切换模式写文章登录/注册Ethercat解析之命令行工具的使用教程iiidd777IT技术分享及教程说明:EtherCAT为了方便用户空间对主站进行调试,因此提供一套用户空间使用的工具来设置从站参数,观察调试信息等等。正常情况下,每个主站的实例都会生成一个字符设备,名字为:/dev/EtherCATx。欲想深入了解其他命令,可通过执行ethercat –help命令来查看详细使用方法。下面具体的介绍了一下各参数及命令的使用,其中[ ]中为必选参数,< >为可选参数。1.1 设置别名地址命令:ethercat alias [ OPTIONS ] < ALIAS >参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对位置;* –force -f:匹配所有从站;例子:sudo ethercat alias –position 0 0x2000解析:将在bus总线上对应的从站0的别名(默认为0)为0x2000;注意:必须有从站连接才能使用此命令。1.2 显示总线配置命令:ethercat config [ OPTIONS ]参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对位置;* –verbose -v:显示详细信息;例子:sudo ethercat config -v解析:显示所有从站的详细配置信息。注意:必须启动应用程序才能使用此命令查看。1.3 以C语言的形式输出PDO信息说明:生成的PDO信息可以直接被应用层的ecrt_slave_config_pdos()函数调用。命令:ethercat cstruct [ OPTIONS ]参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对位置;例子:sudo ethercat cstruct -a 100解析:输出别名为100的从站的PDO信息。注意:必须有从站连接才能使用此命令。1.4 显示过程数据说明:输出二进制的过程数据。命令:ethercat data [ OPTIONS ]参数:* –domain -d :域的索引值,假如不填写参数则显示所有过程数据。例子:sudo ethercat data解析:显示所有PDO过程数据。注意:必须启动应用程序才能使用此命令查看。1.5 设置主站调试级别说明:设置主站的调试级别,调试信息将输出在/var/log/syslog文件中。命令:ethercat debug其中可有以下情况:* 0 : 无任何调试信息输出* 1 : 输出部分调试信息* 2 : 输出所有的帧的内容(由于输出信息较多,请谨慎使用)例子:sudo ethercat debug 1解析:打开部分调试信息输出1.6 配置域说明:显示域的信息。命令:ethercat domains [ OPTIONS ]参数:* –domain -d :根据索引号,匹配域;* –verbose -v:显示域的详细信息(FMMU和过程数据的信息);例子:① sudo ethercat domains执行后显示Domain0:LogBaseAddr 0x00000000, Size 12, WorkingCounter 0/3以上各字段的含义:* LogBaseAddr:逻辑寻址的逻辑基地址;* Size:域交换数据的字节数;* WorkingCounter:第一个数字是WKC的当前值,第二个数字是WKC的期望值;解析:显示域的基本信息。② sudo ethercat domains -v执行后显示Domain0:LogBaseAddr 0x00000000, Size 12, WorkingCounter 3/3SlaveConfig 0:0, SM2 (Output), LogAddr 0x00000000, Size 6 06 00 9d aa 00 00SlaveConfig 0:0, SM3 (Input), LogAddr 0x00000000, Size 6 31 0a 9d aa 00 00以上各字段的含义:* SlaveConfig:从机配置信息,主要包含别名和地址(绝对地址或相对地址);* SM2:同步管理器2;* LogAddr:FMMU映射的地址;* Size:映射地址的大小;* 数据位:十六进制显示的过程数据;解析:显示域的详细信息(FMMU和过程数据的信息)。注意:必须启动应用程序才能使用此命令查看。1.7 访问SDO说明:向从站写一条PDO条目。命令:ethercat download [ OPTIONS ]参数:⑴ 可选参数:* INDEX:16位无符整型的SDO索引;* SUBINDEX:8位无符整型的SDO子索引;* VALUE:需写入的SDO的值⑵ [ OPTIONS ]参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对位置;* –type -t :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例子:sudo ethercat download -t int16 -p 0 0x6060 00 08解析:向从站0的索引号为0x6060(16位),子索引号为00(8位)的地址写入PDO条目值”0x08“;1.8 访问SDO说明:向从站读取一个SDO条目。命令:ethercat upload [ OPTIONS ]参数:⑴ 可选参数:* INDEX:16位无符整型的SDO索引;* SUBINDEX:8位无符整型的SDO子索引;⑵ [ OPTIONS ]参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对位置;* –type -t :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例子:sudo ethercat upload -t int16 -p 0 0x6060 00解析:读取从站0中索引号为0x6060(16位),子索引号为00(8位)的SDO条目。注意:必须有从站连接才能使用此命令。1.9 输出EOE统计信息说明:显示EOE的统计信息,包括主站的发送率和接收率(Byte/s)。命令:ethercat eoe参数:无1.10 FOE通信⑴ 通过FOE读取从站的文件。命令:ethercat foe_read [ OPTIONS ]参数:① 可选参数* :为从站中的源文件;② [ OPTIONS ]参数* –output -file -o :为读取数据的存储文件,缺省的话数据将读取到stdout;* –alias:匹配从站的别名;* –position:匹配从站的绝对位置;⑵ 通过FOE向从站存储文件。命令:ethercat foe_write [ OPTIONS ]① 可选参数* :为要发送的文件(指定路径+文件名),也可以为” - “,表示从标准输入中读取文件;② [ OPTIONS ]参数* –output -file -o :为从站存储的目标文件名,假如不指定名字,则为主站发送 FILENAME的去掉路径的名字;* –alias:匹配从站的别名;* –position:匹配从站的绝对位置;1.11 创建一个拓扑图形说明:输出总线拓扑图。命令:ethercat graph [ OPTIONS ]例子:sudo ethercat graph | dot -Tsvg > ~/Desktop/bus.svg解析:将总线拓扑图输出到桌面。1.12 主站和以太网设备说明:显示主站和以太网设备信息。命令:ethercat master [ OPTIONS ]参数:* –master -m :indices为主站的索引。默认显示所有的设备信息;例子:sudo ethercat master解析:显示所有主机的设备信息(发送帧、接收帧、参考时钟、应用时间)。注意:欲想显示应用时间需启动应用程序。1.13 同步管理,PDOs,PDO条目说明:显示出同步管理器的参数和PDO任务和映射信息。命令:ethercat pdos [OPTIONS]参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对位置;* –skin -s :”skin”可选择”default“和”etherlab“;例子:sudo ethercat pdos -p 0 -s default执行后显示:SM2:PhysAddr 0x1400, DefaultSize 64, ControlRegister 0x34, Enable 1RxPDO 0x1600 “Receive PDO1 Mapping”PDO entry 0x6040:00, 16 bit, ” ”PDO entry 0x607a:00, 32 bit, ” “以上各字段的含义:⑴ 同步管理器信息* SM2:同步管理器2;* PhysAddr:物理地址开始地址;* DefaultSize:默认数据大小;* ControlRegister:控制寄存器;* Enable:使能字⑵ 显示PDO方向,索引值,PDO名字* RxPDO:代表从站发送数据的方向(从站接收数据);* 0x1600:PDO的索引值;* “Receive PDO1 Mapping”:PDO的名字;⑶ 显示PDO条目的索引和子索引(都是以16进制的形式现实的),显示位宽和描述* 0x6040:00 : 表示索引和子索引;* 16bit:表示该条目的位宽;* ” “:表示该位的描述;1.14 寄存器访问⑴ 获取对应从站寄存器的内容命令:ethercat reg_read [ OPTIONS ][ SIZE ]参数:① 可选参数* ADDRESS:16位无符号的寄存器地址;* SIZE:要读取的对应寄存器字节数(16位无符号值);[ SIZE ] + ADDRESS不能超过64K,假如type参数隐含要读取的字节数,则可以忽略掉[ SIZE ]参数;② [ OPTIONS ]参数* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对位置;* –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例子:sudo ethercat reg_read -p 6 -t sm32 0x092c解析:获取从站6的0x092C寄存器所存储的值。⑵ 将内容写入指定从站寄存器命令:ethercat reg_write [ OPTIONS ]参数:① 可选参数* ADDRESS:16位无符号的寄存器地址;* DATA:要写入寄存器的数据;假如制定了”type”数据类型,那么”DATA”根据指定的数据类型对数据进行解析;假如未指定”type”数据类型,则”DATA”可以为指定的文件或将”DATA”设置为” - “,表示从标准输入中获得数据;② [ OPTIONS ]参数* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对地址;* –type -t :匹配数据类型;* –emergency -e:以紧急的方式请求写入文件;例子:sudo ethercat reg_write -p 5 -t sm32 0x092c 200解析:向从站5的寄存器0x092c写入数据200。1.15 SDO字典说明:列出SDO字典(SDO信息和SDO条目信息)。命令:ethercat sdos [ OPTIONS ]参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对位置;* –quiet -q:只输出PDOs,不输出PDO条目信息;例子:sudo ethercat sdos执行后显示SDO 0x1000,”Device type”0x1000:0, r-r-r-, uint32, 32 bit, “Device type”12SDOs:SDO 0x1000,”Device type”* 0x1000:SDO索引值;* “Device type”:SDO名字;SDO条目:0x1000:0, r-r-r-, uint32, 32 bit, “Device type”* 0x1000:0:索引值及子索引值;* r-r-r-:表示访问权限;* uint32:表示该条目的数据类型;* 32bit:表示该条目的位宽;* “Device type”:对该条目的描述;1.16 SII访问⑴ 读取从站的SII内容命令:ethercat sii_read [OPTIONS]参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对位置;* –verbose -v:分类显示数据文本内容;例子:① sudo ethercat sii_read -p 0 -v解析:以分类数据文本形式显示sii的内容;② sudo ethercat sii_read -p 0 | hexdump解析:以16进制形式显示sii的内容;③ sudo ethercat sii_read -p 0 > Backup.bin解析:将sii的内容备份到Back.bin文件下;注意:必须有从站连接才能使用此命令。⑵ 向从站写入sii内容命令:ethercat sii_write [ OPTIONS ]参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对位置;* –force -f:不进行有效检查;例子:sudo ethercat sii_read -p 0 Backup.bin解析:将Backup.bin的内容写入从站0的SII中。注意:必须有从站连接才能使用此命令。1.17 显示从站的信息说明:显示总线上的从站的信息。命令:ethercat slaves [ OPTIONS ]参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对地址;* –verbose -v:显示从站的详细信息;例子:sudo ethercat slaves -v解析:显示所有从站的详细信息。1.18 SOE IDN访问说明:读取从站的SOE IDN。命令:ethercat soe_read [ OPTIONS ]参数:① 可选参数* DRIVE:驱动号【0 - 7】,缺省默认为0;* IDN:② [ OPTIONS ]参数* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对地址;* –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、sm641.19 请求应用层转换状态机说明:请求应用层转换状态。命令:ethercat states [ OPTIONS ]参数:⑴ 可选参数* STATE:可选的参数有INIT、PREOP、BOOT、SAFEOP、OP;⑵ [ OPTIONS ]参数* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对地址;例子:sudo ethercat states -p 0 OP解析:将从站0的状态切换为OP;注意:必须有从站连接才能使用此命令。1.20 显示主站版本说明:显示主张的版本。命令:ethercat version [ OPTIONS ]1.21 生成从站配置描述说明:生成从站信息描述文件。命令:ethercat xml [ OPTIONS ]参数:* –alias -a :匹配从站的别名;* –position -p :匹配从站的绝对地址;例子:sudo ethercat xml -p 0解析:生成从站0的从站信息描述文件并显示出来开启系统后,用户主要需要进行从站配置与PDO映射、域操作功能,然后就可以进行PDO交换了,当然,这个过程是基于主站状态机在后台完成了庞大的扫描工作后我们才得以进行这些操作的:1. 1.ec_master_t *ecrt_request_master(unsigned int master_index);2. 2.ec_domain_t *ecrt_master_create_domain(ec_master_t *master);3. 3.ec_slave_config_t *ecrt_master_slave_config(ec_master_t *master,uint16_t alias, uint16_t position, uint32_t vendor_id, uint32_t product_code);4. http://4.int ecrt_slave_config_reg_pdo_entry(ec_slave_config_t *sc,uint16_t index, uint8_t subindex,ec_domain_t *domain,unsigned int *bit_position);5. http://5.int ecrt_master_activate(ec_master_t *master);6. 6.uint8_t *ecrt_domain_data(ec_domain_t *domain);7. 7.void ecrt_domain_queue(ec_domain_t *domain);8. 8.void ecrt_master_send(ec_master_t *master);以上,就是配置PDO基本需要使用到的函数,当然,主站程序运行在内核空间,应用层需要一种方式实现对内核调用。通过open主站创建的字符设备/dev/EtherCAT就是这一目的。首先第一个函数ecrt_request_master(),负责打开字符设备文件,传入参数为使用主站索引(使用/etc/init.d/ethercat开启系统的时候可以一次性传入多个MAC地址从而开启多个主站,不同主站创建不同字符设备,如:/dev/EtherCAT0、/dev/EtherCAT1...),而这个索引就是用于开启对应的字符设备,从而使用不同的主站,使用open接口打开,然后返回文件描述符,该文件描述符用于ioctl调用对应主站功能。另外在申请到主站后就不在允许进行总线的重新扫描,固化了主站连接的从站链表,且设置从站状态当前申请状态为PREOP;第二个函数ecrt_master_create_domain()创建域,domain与PDO映射有密切联系,之后在说到主站激活的位置细谈这部分;至于这个函数具体内容就是直接在内核空间中创建一块ec_domain_t空间并将该空间连接到主站domains链表尾部;第三个函数ecrt_master_slave_config(),从站配置函数,说到从站配置函数,有个地方需要明确一下,那就是主站模块中的从站链表,他们之间的关系并不像我们想的那么紧密,首先,从站配置是应用层通过ecrt_master_slave_config()函数添加到主站的configs链表中的,而从站链表slaves则是通过ehtercat主站状态机通过扫描ethercat总线得到的,两者的共通之处就在于从站配置过程的alias、position、VID和PID,这些在主站扫描到的从站链表中都是有一份参数的,当应用层设置配置和主站扫描到的从站信息相匹配的时候,那就将从站与从站配置相联系(这时候会将主站扫描到的SII信息关于sync关联的PDO信息复制到从站配置中,也就是默认PDO配置);这样,就可以通过从站配置寻找到主站模块中从站配置信息,进而获取到从站信息。第四个函数ecrt_slave_config_reg_pdo_entry(),该函数是从站配置PDO函数,首先需要注意一点,那就是在主站正式激活之前,所有配置PDO相关的其实并没有相对应的空间申请操作,一切都是进行的计算,计算PDO需要多大空间,计算domains的逻辑位置,计算FMMU的逻辑位置,计算PDO的逻辑位置,直到主站正式激活,主站会根据自身已经申请的域链表domains,获取所有域需要的空间大小,而后对每个域进行逻辑地址分配,每个域中再对每个FMMU进行逻辑地址分配。这样。言归正传,继续该函数研究,首先了解一下接口:1. int ecrt_slave_config_reg_pdo_entry(ec_slave_config_t *sc,2. uint16_t index, /* 对象字典索引 */3. uint8_t subindex, /* 对象字典子索引 */4. ec_domain_t *domain, /* 使用的域 */5. unsigned int *bit_position)/* 一个Byte中的偏移量,当PDO映射逻辑地址不是完整的Byte时有用 */首先,通过从站应用层配置索引可以获取到主站的从站配置链表中对应的从站配置,而后根据配置目标domain的索引获取到主站的domains链表对应的域,这样就可以实现应用层的从站配置和domain切换到主站对应的从站配置和domain,然后进行pdo映射操作。另外每次进行PDO映射的时候,并不是只对设置的一个对象进行处理,而是直接将整个sync关联的PDO都进行批次化处理:具体操作如下1. 1.找到PDO对象所在的sync同步管理器;2. 2.找到PDO对象在该同步管理器中的相对起始地址,如果该起始地址并不是整Byte数据,那么启用bit_position,如果没有,进行报警;3. 3.进行FMMU配置计算(FMMU管理映射是以一个sync关联的所有PDO进行映射的,因此只要配置的PDO对象的domain和sync是同一个,那就说明已经配置过对应sync,因此也就没必要新建FMMU去配置映射PDO),这里有几个空间块关系和逻辑地址需要明确一下,先说空间块,在主站没有激活之前,各个domians是无关的,domain内部由多个FMMU组成,每个FMMU配置映射是基于sync关联的PDO得到的(且经过字节对齐处理);然后就是domian->data_size,这个量只表明当前需要的空间大小,那么这个量也可以看作下一个需要配置的FMMU的起始逻辑地址,而对于PDO的逻辑地址,则可以通过在变量sync关联PDO过程进行获取,也就是第二步完成的操作;所以,本质上来讲,PDO配置映射就是确定PDO的逻辑地址位置。第五个函数ecrt_master_activate(),该函数为主站正式激活的函数,该函数完成以下功能:1. 1.主站注册的domains链表整体大小计算:经过PDO注册映射之后,对主站中关联的每个domains都是相互独立的,并且每个domains都只是一个计算得到的值,其实并没有需要的空间申请,因此在主站激活的时候会将全部domians需要的空间进行统一申请。具体申请到的PDO映射逻辑空间存放在字符设备打开文件的priv指针处,关于字符设备的file->priv在字符设备打开eccdev_open的时候进行指定。然后按照主站连接的domains链表顺序对每个domian起始地址进行设置:主要是domain的逻辑起始地址,domain的大小,以及domain中的FMMU的逻辑地址重新设置,最终,domain和FMMU的逻辑起始地址都是在主站全部domains环境下的逻辑起始地址。为了进行PDO映射,在主站激活过程中还对每个domain需要的子报文进行空间申请。在计算子报文需要个数的时候,各个domain计算各自需要的子报文需要,这样就可以满足不同domain的PDO交换周期是可以单独设置的;在domain计算自己需要的子报文个数的时候,计算是以FMMU为一个基本单位进行计算的,每个子报文可承载的数据大小为1486Byte,然后根据一个子报文中FMMU的输入输出情况设置子报文类型,也就是EC_DATAGRAM_LRD类型子报文,EC_DATAGRAM_LRR类型子报文以及EC_DATAGRAM_LRW类型子报文。然后将这些子报文添加到domain的datagram_pairs链表中。当然,整体过程中,domain映射空间和子报文使用的数据空间都是同一段空间。2. 2.完成主站的domains域空间处理,之后就停止主站的空闲阶段线程(等待空闲阶段线程退出);3. 3.开启主站的操作阶段线程,该线程和空闲阶段线程相比不同之处就在于将主站子报文队列组合发送移动到用户手中进行处理。第六个函数ecrt_domain_data(),返回domain在逻辑空间的逻辑地址;第七个函数ecrt_domain_queue(),就是将对应domain空间使用的子报文排列到主站子报文发送链表中;第八个函数ecrt_master_send(),就是将主站的子报文发送链表的子报文进行发送(在发送过程中,默认的会将从站状态机子报文和主站状态机子报文进行排队发送);以上,就是应用层执行PDO映射的基本原理。EtherCAT igh源码的ecrt_slave_config_dc()函数的理解。ethercat总结一下自己对igh的ecrt_slave_config_dc()函数的理解。参考了igh的example里的“dc_user例程”。例程里有这样一处代码: // configure SYNC signals for this slave ecrt_slave_config_dc(sc, 0x0700, PERIOD_NS, 4400000, 0, 0); 在slave_config.c文件里可以查看到函数的定义: /** Configure distributed clocks. * * Sets the AssignActivate word and the cycle and shift times for the sync * signals. * * The AssignActivate word is vendor-specific and can be taken from the XML * device description file (Device -> Dc -> AssignActivate). Set this to zero, * if the slave shall be operated without distributed clocks (default). * * This method has to be called in non-realtime context before * ecrt_master_activate(). * * \attention The \a sync1_shift time is ignored. */ void ecrt_slave_config_dc( ec_slave_config_t *sc, /**< Slave configuration. */ uint16_t assign_activate, /**< AssignActivate word. */ uint32_t sync0_cycle, /**< SYNC0 cycle time [ns]. */ int32_t sync0_shift, /**< SYNC0 shift time [ns]. */ uint32_t sync1_cycle, /**< SYNC1 cycle time [ns]. */ int32_t sync1_shift /**< SYNC1 shift time [ns]. */ ); void ecrt_slave_config_dc(ec_slave_config_t *sc, uint16_t assign_activate, uint32_t sync0_cycle_time, int32_t sync0_shift_time, uint32_t sync1_cycle_time, int32_t sync1_shift_time) { ec_ioctl_config_t data; int ret; data.config_index = sc->index; data.dc_assign_activate = assign_activate; data.dc_sync[0].cycle_time = sync0_cycle_time; data.dc_sync[0].shift_time = sync0_shift_time; data.dc_sync[1].cycle_time = sync1_cycle_time; data.dc_sync[1].shift_time = sync1_shift_time; ret = ioctl(sc->master->fd, EC_IOCTL_SC_DC, &data); if (EC_IOCTL_IS_ERROR(ret)) { fprintf(stderr, "Failed to set DC parameters: %s\n", strerror(EC_IOCTL_ERRNO(ret))); } } 发布于 2021-05-28 14:38开放式 IEC 61131 控制系统设计(书籍)终端命令赞同 8添加评论分享喜欢收藏申请转载文章被以下专栏收录IT技术专栏IT技术分享 在Ethercat状态机转换到OP之前特定的LAN9252寄存器必须通过SPI接口初始化吗? - Microchip - 电子技术论坛 - 广受欢迎的专业电子论坛!
请 登录 后使用快捷导航没有帐号?注册 首页 论坛 设计作品 全志V85x硬件设计大赛作品精选第一期 全志V85x硬件设计大赛作品精选第二期 瑞萨RA4M2物联网网关设计挑战赛作品集 国民技术N32开源移植挑战赛作品精选 2022福建省大学生人工智能创意赛作品合集 OpenHarmony开发者成长计划学生挑战赛优秀作品 精选帖子 Banana Pi BPI-R3开源路由器启动及性能评测 【资源下载】英飞凌PSoC 6 RTT物联网开发板 【正点原子STM32精英V2开发板】HC-SR501红外人体感应 【沁恒CH32V208开发板试用】跳动的心脏-Systick 【鲁班猫创意氛围赛】现代化无线哨兵 【飞凌RK3588开发板试用】基于pyqt5的人脸识别 书籍评测 电子工程师必备丛书系列——电路板技能速成宝典 Proteus实战攻略:从简单电路到单片机电路的仿真 电子工程师必备丛书系列——九大系统电路识图宝典 OpenHarmony嵌入式系统原理与应用——基于RK2206芯片 深入理解微电子电路设计——数字电子技术及应用(原书第5版) 资深工程师十余年实战经验,PADS PCB设计指南 社区工程师专题 第一期:坚持兴趣成就嵌入式工程师 第二期:电子工程师需要在参赛中历练成长 第三期:创意源于生活,工具始于懒惰 第四期:工程师漫谈开发板评测的乐趣 第五期:硬件工程师的心路历程 第六期:宁精勿杂,在嵌入式领域做到优秀 版块 技术社区 FPGA开发者技术社区 RISC-V MCU技术社区 HarmonyOS技术社区 瑞芯微Rockchip开发者社区 OpenHarmony开源社区 RT-Thread嵌入式技术论坛 单片机及嵌入式 单片机/MCU论坛 ARM技术论坛 STM32/STM8技术论坛 RISC-V技术社区 FPGA|CPLD|ASIC论坛 DSP论坛 电源与无线技术 电源技术论坛 无线充电技术 WIFI技术 蓝牙技术 天线|RF射频|微波|雷达技术 EDA设计论坛 PCB设计论坛 DFM|可制造性设计论坛 Protel|AD|DXP论坛 PADS技术论坛 Allegro论坛 KiCad EDA 中文论坛 proteus论坛|仿真论坛 电路设计与测试 电路设计论坛 电子元器件论坛 LabVIEW论坛 Matlab论坛 传感技术 测试测量技术 DIY及创意 综合应用与活动 电机控制 发烧友官方/活动 模拟技术论坛 机器人论坛 USB论坛 音视频技术 综合技术交流 小组 厂商 先楫半导体HPMicro 其利天下技术小组 瑞萨单片机论坛 芯海科技论坛 飞凌嵌入式论坛 国民技术论坛 飞腾派开发者社区 创龙科技论坛 米尔电子 ADI技术论坛 技术 Linux论坛 单片机学习小组 嵌入式学习小组 电子行业动态 工程资源中心 电磁兼容设计与整改 物联网技术 汽车电子技术论坛 氮化镓技术社区 HiHope开发者社区 高校 东莞理工学院电子协会 西安电子科技大学西电实验室 深圳大学电子协会 桂林电子科技大学机电工程协会 湘潭大学电子科技协会 名人 张飞硬件学习小组 韦东山Linux嵌入式课程社区 黄工无刷电机学习 MILL小眼睛FPGA小组 龙哥 Labview 学习群 淘贴 开源硬件项目分享 开发板免费试用 沁恒微CH32V307试用合集 芯昇RISC-V开发板试用合集 乐鑫ESP32-C3试用合集 活动 设计大赛 瑞萨RA4M2物联网网关设计挑战赛 华秋电子x全志在线开源硬件设计大赛 RT-Thread 创新设计大赛 星核计划-高云FPGA开发者计划 OpenHarmony成长计划学生挑战赛 Altium 声源跟踪小车设计挑 国民技术N32开源移植挑战赛 开发板试用 瑞萨FPB-RA6E1快速原型板 米尔-STM32MP135开发板-入门级MPU设计平台 风火轮YY3568开发板免费体验 【新品试用】英飞凌PSoC 6 RTT开发板试用 小眼睛科技紫光盘古50K开发板 正点原子STM32战舰V4开发板 米尔-瑞萨RZ/G2L开发板免费试用 社区之星 杨永胜:兴趣加努力,嵌入式工程师最好的前进之路 谢小龙:五年嵌入式开发,一个“博大”+“精深”的老鸟 罗大信:从工程师到创始人,我的20年嵌入式经验 刘建华:如果不想虚度一生,那就学习一辈子 贺婷婷:不退则进,遇到问题面对它,你会登上新台阶 罗除博士:共同携手,助力鸿蒙生态冲破牢笼 官方活动 缤纷夏日,来电子发烧友体验送礼新花样! 每日打卡活动,赢取OH定制礼品 RISC-V MCU 技术社区打卡活动 【有奖打卡活动】2023年打卡计划 【书单评测】27本电子工程书籍 【书籍评测】PADS PCB设计指南 野火鲁班猫创意氛围赛作品精选集合 技术峰会/沙龙 2023 电子工程师大会暨第三届社区年度颁奖 开放原子开源基金会OH技术峰会 电子设计与制造技术研讨会 PCB设计与制造技术研讨会 2022 OH主题线下技术沙龙 2022开放原子全球开源峰会 专栏 技术原创 从编程到应用——从零开始学ARM 基于STM32设计的数码相册 基于DWC2的USB驱动开发-IAD描述符详解 基于CW32L083的线控器方案设计 RISC-V内核RC遥控车拆解:空心杯电机+2.4G跳频控制 最新资讯 SK海力士2023年HBM3营收增长5倍 夺得多项第一!问界M7冬测成绩大翻身 ASML 2023年末爆单,中国贡献营收翻倍 谁能打造最强车型?从OTA看车企的智能化之争有多激烈 首个石墨烯功能半导体面世,硅基的陌路? 视频 硬核科普 PCB制造工艺科普:孔铜厚度 电路知识大揭秘 稚晖君瀚文键盘原理拆解 国产30W 氮化镓快充拆解 开源DIY 基于Arduino的开源热风枪 基于ESP32的触摸小电视 最强T12一体化便携电烙铁 基于8266天气墨水屏 厂商精选 为昕PCB设计工具Mars之自动布线演示 【RK公开课】RK3588 ARVR开发简介 全志Tina多媒体系统简介 【华秋DFM】开短路分析 问答 年度榜单 2022年度TOP榜单——模拟技术论坛问答 2021年度TOP榜单——电路设计论坛问答 2021年度TOP榜单——电源技术论坛问答 2021年度TOP榜单——电机控制技术论坛问答 高手问答 电子老顽童带你看懂电路设计 资深产品硬件研发工程师,与你讨论电路设计! layout leader工程师任工谈PCB设计 与搞电源小哥一起揭秘电源设计那些难点 下载 电子书 电源技术知识总结 常用电源设计技巧图解 开关电源噪声-EMC(上) 开关电源噪声-EMC(下) 凡亿电路-PCB封装设计指导白皮书 精华资料 龙芯生态白皮书 中国物联网操作系统市场研究白皮书 AIGC(GPT-4)赋能通信行业应用白皮书 OPPO 《6G:极简多能 构建移动的世界》白皮书 智慧充电桩物联网技术白皮书 常用软件 Altium Designer21.9.2软件安装包下载 Cadence SPB OrCAD Allegro 17.4安装包及补丁下载 MATLAB 2020软件安装包下载 PADS 软件下载 LabVIEW 软件下载 学院 课程 直播 开发板购买 更多 电子发烧友 电子新闻 电子电路 技术文库 行业应用 电子标签 资料下载 电子元器件 技术研讨会 在线研讨会 特色服务 企业号 硬声APP 发烧友APP 产品库 积分商城 VIP会员 签到 经验 淘贴 华秋智造 PCB计价 SMT计价 元器件采购 BOM计价 Layout计价 钢网计价 PCB下单助手 工程师工具 PCB在线检查 华秋CAM datasheet查询 替代料查询 免费样品申请 在线计算工具 工程师专区 品牌厂商查询 华秋DFM 帖子 搜索历史 清空 搜索热词 帖子用户 发 帖 提问题 发经验 发资料 发讨论 发视频 草稿箱 登录/注册 完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善> 3天内不再提示 每日签到 发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》 电子发烧友论坛 › 小组 › > 厂商 > Microchip / 在Ethercat状态机转换到OP之前特定的LAN9252寄存器必须 ... [问答] 在Ethercat状态机转换到OP之前特定的LAN9252寄存器必须通过SPI接口初始化吗? 4942 寄存器 SPI 扫一扫,分享给好友 复制链接分享 链接复制成功,分享给好友 问答对人有帮助,内容完整,我也想知道答案 0 嗨,我自己用的是LAN9252-ADD-ON的eval板(NoBeckhoff板)。在Windows 10上使用Twincat 3在简单的数字IO模式下,我已经能够正确操作了。现在我想继续使用SPI接口模式。我可以重新编程LAN9252多个微芯片XML文件的EEPROM。而且,我的SPI接口工作得很好,我可以读LAN9252寄存器。但是,由于LAN9252不能从INIT状态转换到OP状态,因此我在取得进一步的进展上遇到了困难。错误信息表示在状态转换过程中超时。我的问题是:在Ethercat状态机转换到OP之前,是否有一些特定的LAN9252寄存器必须通过SPI接口初始化?干杯,戴维 以上来自于百度翻译
以下为原文
Hi,
I'm using the LAN9252-ADD-ON eval board by itself (No Beckhoff board).
I've been able to get correct operation in the simple Digital IO mode using Twincat 3 on Windows 10.
Now i"d like to proceed to SPI Interface mode. I can reprogram the EEPROM of the LAN9252 from
any of several Microchip xml files just fine. Also, my SPI interface works great and I can read LAN9252 registers.
However, I'm having trouble making further progress because the LAN9252 will not make the transition from the
INIT state to the OP state. The error message says that it times out during the state transition process.
My question is: Are there some specific LAN9252 registers that must be initialized via the SPI interface before the
Ethercat state machine will transition to OP?
Cheers,
David 0 2019-7-23 09:50:55 评论 淘帖0 邀请回答 您可以邀请以下用户,快速回答问题 × qun333 该类别下有 57 个回答。 邀请回答 技术发广告 该类别下有 56 个回答。 邀请回答 caoguiqun 该类别下有 56 个回答。 邀请回答 psw30 该类别下有 44 个回答。 邀请回答 伊丹姿子 该类别下有 41 个回答。 邀请回答 uwufwjrw 该类别下有 39 个回答。 邀请回答 hetao1111 该类别下有 38 个回答。 邀请回答 lc123617 该类别下有 35 个回答。 邀请回答 欧阳大大 该类别下有 32 个回答。 邀请回答 作死不止 该类别下有 31 个回答。 邀请回答 asd010 该类别下有 31 个回答。 邀请回答 60user92 该类别下有 29 个回答。 邀请回答 wy8719 该类别下有 29 个回答。 邀请回答 haikitty 该类别下有 28 个回答。 邀请回答 嘻嘻爱哈哈 该类别下有 28 个回答。 邀请回答 ju978779 该类别下有 28 个回答。 邀请回答 xiuzhen122 该类别下有 27 个回答。 邀请回答 pol666 该类别下有 27 个回答。 邀请回答 ueywyrsdfs 该类别下有 26 个回答。 邀请回答 lhly23 该类别下有 25 个回答。 邀请回答 举报 王晶 相关推荐 • SPI模式下的LAN9252 Ethercat从机不会进入OP状态 9290 • 如何使用LAN9252实现EtherCAT? 7633 • LAN9252没有SPI响应 5446 • 如何使用lan9252扩展模式? 3617 • PIC32+LAN9252是否支持FOE吗? 1556 • STM32CubeMX配置MCU外设的过程是怎样的 1716 • EtherCAT从站开发中,使用EVB-LAN9252-3Port跑官方的源码有错怎么解决? 4768 • ESC芯片LAN9252 IRQ线什么因素会导致IRQ引脚比正常操作早拉? 2862 • nRF24L01+初始化寄存器配置失败的原因是什么 1742 • 反馈节点初始化的问题! 4790 提交评论 3个回答 答案对人有帮助,有参考价值 0 你好,JWiens,我好像和您在LAN9252上有类似的问题。我想用EVB-LAN9252-Beckhoff-ADDON作为我们自己的FPGA模块的Addon-Card,首先实现以太网端口,然后实现Ethercat。我的问题是,无论我怎么努力,我都不能让EVB单独与您一起工作。r FPGA(没有连接到Ethercat-Master)。我试图在DigIO-Modus和SPI-Modus中运行它,但是两种方式我都不能访问寄存器。在开始时你有类似的问题吗?我需要做些什么来让界面运行吗?最佳马蒂亚斯 以上来自于百度翻译 以下为原文 Hello JWiens, it seems that i have similar problems as you had with the LAN9252. I´d like to use the EVB-LAN9252-Beckhoff-ADDON as an Addon-Card for our own FPGA-Modul to realize at first Ethernet-Ports and later Ethercat. My Problem is that what ever i try, i don´t get the EVB working alone with our FPGA(without connection to an Ethercat-Master). I tried to run it in DigIO-Modus and in SPI-Modus but both ways i don´t get access to the registers. Did you have similar problems at the beginning, is there anything i need to do to get the interfaces running? Best Regards Matthias 2019-7-23 10:09:01 评论 举报 陈鲜孰 提交评论 答案对人有帮助,有参考价值 0 你好,JWiens,你能分享你用来配置EEPROM的ESI文件吗?我们正在努力获得LAN9252 SPI模式从OIT状态进入OP状态。 以上来自于百度翻译 以下为原文 Hello JWiens, Can you please share the esi file that you have used to configure eeprom? We are working on getting lan9252 spi mode to go to op state from init state. 2019-7-23 10:21:14 评论 举报 王雷 提交评论 答案对人有帮助,有参考价值 0 你好,JWEN感谢您的有用的帖子-这有助于我们节省时间。我们的9252挖掘I/O板工作在EP模式下的ECAT奴隶。我们需要知道中断和同步主机设置。当我们使用FrdMK64作为主机微计算机来建立9252个挖掘I/O板(ECAT从属)时,你能分享一些想法吗? 以上来自于百度翻译 以下为原文 Hi jwiens Thanks for your useful post - this has helped us save hours. Our 9252 DIG I/O board works as eCAT slave on OP mode. We need to know the interrupt and sync master settings. As we are using FRDMK64 as host micro to set up 9252 DIG I/O board(eCAT slave), could you share some ideas. 2019-7-23 10:26:57 评论 举报 王雷 提交评论 只有小组成员才能发言,加入小组>> Microchip 284个成员聚集在这个小组 加入小组 精选推荐 能够在单个SPI接口上运行两个SPI设备吗? 4757 浏览 9 评论 和谐项目创建中的Java错误该怎么解决? 1802 浏览 8 评论 请问有没有办法通过UART闪存代码? 1718 浏览 10 评论 请问是否能把一个ADC值转换成两个字节用来设置PWM占空比? 2928 浏览 3 评论 请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压? 2036 浏览 5 评论 最新话题 PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因 SPI-MISO---ATSAMG55J19 bm64蓝牙模块更换后不能读写数据问题 IPECMD命令烧录AVR128DA48芯片,报找不到芯片错误 PIC33EP系列QEI模块初始化问题 热门话题 SPI-MISO---ATSAMG55J19 410浏览 1评论 KSZ8863MLL查找不到MAC地址,求解! 1094浏览 1评论 求助帖:MPLABX v6.00 + XC32 V4.00 貌似编译文件过多会无法编译 2339浏览 1评论 PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因 330浏览 0评论 bm64蓝牙模块更换后不能读写数据问题 245浏览 0评论 创建小组步骤 创建小组创建自己的地盘 个性设置精心打造小组空间 邀请好友邀请好友加入我的小组 小组升级小组积分升级赢得社区推荐 创建属于自己的小组 快速回复 返回顶部 返回列表 关注微信公众号 电子发烧友网 电子发烧友论坛 社区合作 刘勇 联系电话:15994832713 邮箱地址:liuyong@huaqiu.com 社区管理 elecfans短短 微信:elecfans_666 邮箱:users@hauqiu.com 返回 Microchip 回复 关闭 站长推荐 /6 【开源硬件项目分享】 本专辑集合了许多开源硬件项目分享给大家,欢迎大家一起来讨论和分享各自的开源项目!>> 立即预约 查看 » 【电子工程师软件设计全集】 汇聚了电子工程师常用设计软件,欢迎下载 查看 » 【线下会议】超热门电机主题会议! 此次电机控制先进技术研讨会,提供给广大电机工程师一个资讯和交流平台,帮助工程师提升工作技能。
2024电机控制先进技术研讨会>> 立即预约 查看 » 【社区活动集合】 电子发烧友活动、有奖活动一览 查看 » 【免费领取】 华秋电子将联合瑞芯微、凡亿重磅发布《RK3588 PCB设计指导白皮书》,免费下载! 查看 » 【2023年度电子工程师大会专题】 2023年度电子工程师大会专题包含演讲视频及PPT,欢迎工程师朋友观看下载!! 查看 » 小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 ) GMT+8, 2024-3-14 17:57 , Processed in 1.209353 second(s), Total 76, Slave 60 queries . Powered by 电子发烧友网 © 2015 bbs.elecfans.com 华秋(原“华强聚丰”): 电子发烧友 华秋开发 华秋电路(原"华强PCB") 华秋商城(原"华强芯城") 华秋智造 My ElecFans APP 网站地图 设计技术 可编程逻辑 电源/新能源 MEMS/传感技术 测量仪表 嵌入式技术 制造/封装 模拟技术 RF/无线 接口/总线/驱动 处理器/DSP EDA/IC设计 存储技术 光电显示 EMC/EMI设计 连接器 行业应用 LEDs 汽车电子 音视频及家电 通信网络 医疗电子 人工智能 虚拟现实 可穿戴设备 机器人 安全设备/系统 军用/航空电子 移动通信 工业控制 便携设备 触控感测 物联网 智能电网 区块链 新科技 特色内容 专栏推荐 学院 设计资源 设计技术 电子百科 电子视频 元器件知识 工具箱 VIP会员 社区 小组 论坛 问答 评测试用 企业服务 产品 资料 文章 方案 企业 供应链服务 硬件开发 华秋电路 华秋商城 华秋智造 nextPCB BOM配单 媒体服务 网站广告 在线研讨会 活动策划 新闻发布 新品发布 小测验 设计大赛 华秋 关于我们 投资关系 新闻动态 加入我们 联系我们 侵权投诉 社交网络 微博 移动端 发烧友APP 硬声APP WAP 联系我们 广告合作 王婉珠:wangwanzhu@elecfans.com 内容合作 黄晶晶:huangjingjing@elecfans.com 内容合作(海外) 张迎辉:mikezhang@elecfans.com 供应链服务 PCB/IC/PCBA 江良华:lanhu@huaqiu.com 投资合作 曾海银:zenghaiyin@huaqiu.com 社区合作 刘勇:liuyong@huaqiu.com 关注我们的微信 下载发烧友APP 电子发烧友观察 电子工程师社区 1-32层PCB打样·中小批量 元器件现货·全球代购·SmartBOM SMT贴片·PCBA加工 PCB&PCBA Manufacturing 华秋简介 企业动态 联系我们 企业文化 企业宣传片 加入我们 版权所有 © 深圳华秋电子有限公司 电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号 快速回复 返回顶部 返回列表 最新主题 推荐主题 热门主题 我的帖子 -技术社区 HarmonyOS技术社区 RISC-V MCU技术社区 FPGA开发者技术社区 -OpenHarmony开源社区 OpenHarmony开源社区 -嵌入式论坛 ARM技术论坛 STM32/STM8技术论坛 RT-Thread嵌入式技术论坛 单片机/MCU论坛 RISC-V技术论坛 瑞芯微Rockchip开发者社区 FPGA|CPLD|ASIC论坛 DSP论坛 -电路图及DIY 电路设计论坛 DIY及创意 电子元器件论坛 专家问答 -电源技术论坛 电源技术论坛 无线充电技术 -综合技术与应用 机器人论坛 USB论坛 电机控制 模拟技术 音视频技术 综合技术交流 上位机软件(C/Python/Java等) -无线通信论坛 WIFI技术 蓝牙技术 天线|RF射频|微波|雷达技术 -EDA设计论坛 PCB设计论坛 DigiPCBA论坛 Protel|AD|***论坛 PADS技术论坛 Allegro论坛 multisim论坛 proteus论坛|仿真论坛 KiCad EDA 中文论坛 DFM|可制造性设计论坛 -测试测量论坛 LabVIEW论坛 Matlab论坛 测试测量技术 传感技术 -招聘/交友/外包/交易/杂谈 项目外包 供需及二手交易 工程师杂谈|交友 招聘|求职|工程师职场 -官方社区 发烧友官方/活动 华秋商城 华秋电路 ———版块导航 SPI模式下的LAN9252 Ethercat从机不会进入OP状态 - Microchip - 电子技术论坛 - 广受欢迎的专业电子论坛!
请 登录 后使用快捷导航没有帐号?注册 首页 论坛 设计作品 全志V85x硬件设计大赛作品精选第一期 全志V85x硬件设计大赛作品精选第二期 瑞萨RA4M2物联网网关设计挑战赛作品集 国民技术N32开源移植挑战赛作品精选 2022福建省大学生人工智能创意赛作品合集 OpenHarmony开发者成长计划学生挑战赛优秀作品 精选帖子 Banana Pi BPI-R3开源路由器启动及性能评测 【资源下载】英飞凌PSoC 6 RTT物联网开发板 【正点原子STM32精英V2开发板】HC-SR501红外人体感应 【沁恒CH32V208开发板试用】跳动的心脏-Systick 【鲁班猫创意氛围赛】现代化无线哨兵 【飞凌RK3588开发板试用】基于pyqt5的人脸识别 书籍评测 电子工程师必备丛书系列——电路板技能速成宝典 Proteus实战攻略:从简单电路到单片机电路的仿真 电子工程师必备丛书系列——九大系统电路识图宝典 OpenHarmony嵌入式系统原理与应用——基于RK2206芯片 深入理解微电子电路设计——数字电子技术及应用(原书第5版) 资深工程师十余年实战经验,PADS PCB设计指南 社区工程师专题 第一期:坚持兴趣成就嵌入式工程师 第二期:电子工程师需要在参赛中历练成长 第三期:创意源于生活,工具始于懒惰 第四期:工程师漫谈开发板评测的乐趣 第五期:硬件工程师的心路历程 第六期:宁精勿杂,在嵌入式领域做到优秀 版块 技术社区 FPGA开发者技术社区 RISC-V MCU技术社区 HarmonyOS技术社区 瑞芯微Rockchip开发者社区 OpenHarmony开源社区 RT-Thread嵌入式技术论坛 单片机及嵌入式 单片机/MCU论坛 ARM技术论坛 STM32/STM8技术论坛 RISC-V技术社区 FPGA|CPLD|ASIC论坛 DSP论坛 电源与无线技术 电源技术论坛 无线充电技术 WIFI技术 蓝牙技术 天线|RF射频|微波|雷达技术 EDA设计论坛 PCB设计论坛 DFM|可制造性设计论坛 Protel|AD|DXP论坛 PADS技术论坛 Allegro论坛 KiCad EDA 中文论坛 proteus论坛|仿真论坛 电路设计与测试 电路设计论坛 电子元器件论坛 LabVIEW论坛 Matlab论坛 传感技术 测试测量技术 DIY及创意 综合应用与活动 电机控制 发烧友官方/活动 模拟技术论坛 机器人论坛 USB论坛 音视频技术 综合技术交流 小组 厂商 先楫半导体HPMicro 其利天下技术小组 瑞萨单片机论坛 芯海科技论坛 飞凌嵌入式论坛 国民技术论坛 飞腾派开发者社区 创龙科技论坛 米尔电子 ADI技术论坛 技术 Linux论坛 单片机学习小组 嵌入式学习小组 电子行业动态 工程资源中心 电磁兼容设计与整改 物联网技术 汽车电子技术论坛 氮化镓技术社区 HiHope开发者社区 高校 东莞理工学院电子协会 西安电子科技大学西电实验室 深圳大学电子协会 桂林电子科技大学机电工程协会 湘潭大学电子科技协会 名人 张飞硬件学习小组 韦东山Linux嵌入式课程社区 黄工无刷电机学习 MILL小眼睛FPGA小组 龙哥 Labview 学习群 淘贴 开源硬件项目分享 开发板免费试用 沁恒微CH32V307试用合集 芯昇RISC-V开发板试用合集 乐鑫ESP32-C3试用合集 活动 设计大赛 瑞萨RA4M2物联网网关设计挑战赛 华秋电子x全志在线开源硬件设计大赛 RT-Thread 创新设计大赛 星核计划-高云FPGA开发者计划 OpenHarmony成长计划学生挑战赛 Altium 声源跟踪小车设计挑 国民技术N32开源移植挑战赛 开发板试用 瑞萨FPB-RA6E1快速原型板 米尔-STM32MP135开发板-入门级MPU设计平台 风火轮YY3568开发板免费体验 【新品试用】英飞凌PSoC 6 RTT开发板试用 小眼睛科技紫光盘古50K开发板 正点原子STM32战舰V4开发板 米尔-瑞萨RZ/G2L开发板免费试用 社区之星 杨永胜:兴趣加努力,嵌入式工程师最好的前进之路 谢小龙:五年嵌入式开发,一个“博大”+“精深”的老鸟 罗大信:从工程师到创始人,我的20年嵌入式经验 刘建华:如果不想虚度一生,那就学习一辈子 贺婷婷:不退则进,遇到问题面对它,你会登上新台阶 罗除博士:共同携手,助力鸿蒙生态冲破牢笼 官方活动 缤纷夏日,来电子发烧友体验送礼新花样! 每日打卡活动,赢取OH定制礼品 RISC-V MCU 技术社区打卡活动 【有奖打卡活动】2023年打卡计划 【书单评测】27本电子工程书籍 【书籍评测】PADS PCB设计指南 野火鲁班猫创意氛围赛作品精选集合 技术峰会/沙龙 2023 电子工程师大会暨第三届社区年度颁奖 开放原子开源基金会OH技术峰会 电子设计与制造技术研讨会 PCB设计与制造技术研讨会 2022 OH主题线下技术沙龙 2022开放原子全球开源峰会 专栏 技术原创 从编程到应用——从零开始学ARM 基于STM32设计的数码相册 基于DWC2的USB驱动开发-IAD描述符详解 基于CW32L083的线控器方案设计 RISC-V内核RC遥控车拆解:空心杯电机+2.4G跳频控制 最新资讯 SK海力士2023年HBM3营收增长5倍 夺得多项第一!问界M7冬测成绩大翻身 ASML 2023年末爆单,中国贡献营收翻倍 谁能打造最强车型?从OTA看车企的智能化之争有多激烈 首个石墨烯功能半导体面世,硅基的陌路? 视频 硬核科普 PCB制造工艺科普:孔铜厚度 电路知识大揭秘 稚晖君瀚文键盘原理拆解 国产30W 氮化镓快充拆解 开源DIY 基于Arduino的开源热风枪 基于ESP32的触摸小电视 最强T12一体化便携电烙铁 基于8266天气墨水屏 厂商精选 为昕PCB设计工具Mars之自动布线演示 【RK公开课】RK3588 ARVR开发简介 全志Tina多媒体系统简介 【华秋DFM】开短路分析 问答 年度榜单 2022年度TOP榜单——模拟技术论坛问答 2021年度TOP榜单——电路设计论坛问答 2021年度TOP榜单——电源技术论坛问答 2021年度TOP榜单——电机控制技术论坛问答 高手问答 电子老顽童带你看懂电路设计 资深产品硬件研发工程师,与你讨论电路设计! layout leader工程师任工谈PCB设计 与搞电源小哥一起揭秘电源设计那些难点 下载 电子书 电源技术知识总结 常用电源设计技巧图解 开关电源噪声-EMC(上) 开关电源噪声-EMC(下) 凡亿电路-PCB封装设计指导白皮书 精华资料 龙芯生态白皮书 中国物联网操作系统市场研究白皮书 AIGC(GPT-4)赋能通信行业应用白皮书 OPPO 《6G:极简多能 构建移动的世界》白皮书 智慧充电桩物联网技术白皮书 常用软件 Altium Designer21.9.2软件安装包下载 Cadence SPB OrCAD Allegro 17.4安装包及补丁下载 MATLAB 2020软件安装包下载 PADS 软件下载 LabVIEW 软件下载 学院 课程 直播 开发板购买 更多 电子发烧友 电子新闻 电子电路 技术文库 行业应用 电子标签 资料下载 电子元器件 技术研讨会 在线研讨会 特色服务 企业号 硬声APP 发烧友APP 产品库 积分商城 VIP会员 签到 经验 淘贴 华秋智造 PCB计价 SMT计价 元器件采购 BOM计价 Layout计价 钢网计价 PCB下单助手 工程师工具 PCB在线检查 华秋CAM datasheet查询 替代料查询 免费样品申请 在线计算工具 工程师专区 品牌厂商查询 华秋DFM 帖子 搜索历史 清空 搜索热词 帖子用户 发 帖 提问题 发经验 发资料 发讨论 发视频 草稿箱 登录/注册 完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善> 3天内不再提示 每日签到 发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》 电子发烧友论坛 › 小组 › > 厂商 > Microchip / SPI模式下的LAN9252 Ethercat从机不会进入OP状态 ... [问答] SPI模式下的LAN9252 Ethercat从机不会进入OP状态 9289 SPI 扫一扫,分享给好友 复制链接分享 链接复制成功,分享给好友 问答对人有帮助,内容完整,我也想知道答案 0 您好,这里有微芯片EVB4-LAN9252-SPI MII RevB和嵌入式PC BECKHOFF CX1100-04 04的EDB4-LAN9252-SPI MII RevB。这个DeMoo板是正确配置的。嵌入式PC与EVB4-LAN9252的端口1(I/OUT)连接。配置数据DATAMICROCHEMB EVB-LAN9252-3PORT.XML被复制到目录C:/Twincat /IO/ECTCAT。我启动SW TWICAT 2,用这个配置的数据芯片EVB-LAN9252-3PORT.XML(& lt;配置数据& gt;800 e0cccc1313f000 0 000 08000和l/CONDATABAST & GT)进行扫描,成功地实现了EVB4-LAN9252的EPROM程序。从端口1(内/外)闪光灯的LED链接/行动,LED运行和LED链接/行动从端口2(出)关闭。然后LAN9252以太猫奴隶在SPI模式下工作,但不会进入OP状态。SW TWICAT中的错误描述为:inFoDATA状态0x2441& Gt;在“init”状态下的从属,初始化错误发生,从信号意外连接,通信端口B. Port B为PORT2(OUT)。我没有发现错误。我希望解决这个问题。 以上来自于百度翻译
以下为原文
Hello,
here I have the demoboard EVB4-LAN9252-SPI-MII REVB from Microchip and the embedded PC Beckhoff CX1100-0004. This demoboard is correctly configurated. The embedded PC is connected with the PORT 1 (IN/OUT) of EVB4-LAN9252. The config data Microchip EVB-LAN9252-3PORT.xml is copied to the directory c:/Twincat/io/Ethercat. I start the SW Twincat 2.0 , scan the device and program the EEPROM of the demoboard EVB4-LAN9252 directly with this config-data Microchip EVB-LAN9252-3PORT.xml (800E00CC8813f000000000800000) The EEPROM-programming is sucessfully. The LED LINK/ACT from PORT 1(IN/OUT) flashs, the LED RUN and LED LINK/ACT from PORT 2(OUT) are off. Then the LAN9252 Ethercat Slave works in SPI Mode, but will not enter OP state. The error in the SW Twincat describes: InfoData State 0x2841 -> Slave in 'INIT' state, Initialization error occured, Slave signals unexpected link, Communication port B. Port B is PORT2(OUT). I don't find the mistake. I hope to solve this problem. 0 2018-11-29 16:53:46 评论 淘帖0 邀请回答 您可以邀请以下用户,快速回答问题 × qun333 该类别下有 57 个回答。 邀请回答 技术发广告 该类别下有 56 个回答。 邀请回答 caoguiqun 该类别下有 56 个回答。 邀请回答 psw30 该类别下有 44 个回答。 邀请回答 伊丹姿子 该类别下有 41 个回答。 邀请回答 uwufwjrw 该类别下有 39 个回答。 邀请回答 hetao1111 该类别下有 38 个回答。 邀请回答 lc123617 该类别下有 35 个回答。 邀请回答 欧阳大大 该类别下有 32 个回答。 邀请回答 作死不止 该类别下有 31 个回答。 邀请回答 asd010 该类别下有 31 个回答。 邀请回答 60user92 该类别下有 29 个回答。 邀请回答 wy8719 该类别下有 29 个回答。 邀请回答 haikitty 该类别下有 28 个回答。 邀请回答 嘻嘻爱哈哈 该类别下有 28 个回答。 邀请回答 ju978779 该类别下有 28 个回答。 邀请回答 xiuzhen122 该类别下有 27 个回答。 邀请回答 pol666 该类别下有 27 个回答。 邀请回答 ueywyrsdfs 该类别下有 26 个回答。 邀请回答 lhly23 该类别下有 25 个回答。 邀请回答 举报 杨悟牛 相关推荐 • 在Ethercat状态机转换到OP之前特定的LAN9252寄存器必须通过SPI接口初始化吗? 4943 • 如何使用LAN9252实现EtherCAT? 7633 • 如何使用lan9252扩展模式? 3617 • LAN9252没有SPI响应 5446 • EtherCAT从站开发中,使用EVB-LAN9252-3Port跑官方的源码有错怎么解决? 4768 • ESC芯片LAN9252 IRQ线什么因素会导致IRQ引脚比正常操作早拉? 2862 • PIC32+LAN9252是否支持FOE吗? 1556 • STM32CubeMX配置MCU外设的过程是怎样的 1716 • HBI模式下的LAN9252以太猫从机增加输入对象失败该怎么办? 1382 • RTT studio导入MDK5工程无法编译是需要做什么配置吗? 638 提交评论 1个回答 答案对人有帮助,有参考价值 0 您好,当前:这里程序SC(从栈代码V5.11)是从处理器板PIC32 MX795F512L上运行的。PIC32 MX与CHIPLAN9252之间的通信工作正确,VIASPI。RT 0(I/OUT)闪存,LED运行,从端口1(OUT)的LED链路/动作是关闭的。配置:端口0和1连接到内部PHYS A和B。端口2连接到外部MII引脚。POT0(I/OUT)通过EtCCAT.PUT1(OUT)和POT2连接到嵌入式PC BEKKHOFF CX1100-004(用于LA)N9252-AddioBoad没有连接到EXTEN。文件在Twitter 2.0的结构窗口中列出:框1、BOX2和BOX3。BOX1和BOX2有错误的错误。框3在OP模式下正确工作。看到下面的一些图片。我不明白为什么在Twitter 2的结构窗口中存在框1和框2。我找不到这个错误。我怎样才能从结构窗口中移出框1和框2?我希望失去这个问题。端口0和1连接到内部PHS A和B。端口2连接到外部MII PIN。最好涉及GEWWB70。 以上来自于百度翻译 以下为原文 Hello, current: here the program SSC (slave stack code v5.11) is running on the processor PIC32MX795F512L from the demoboard. The communication between the PIC32MX and the chip LAN9252 works correctly via SPI. After the EEPROM-programming and device-sanning with Twincat2.0 was sucessfully. LED LINK/ACT from PORT 0(IN/OUT) flashs, the LED RUN is ON, and LED LINK/ACT from PORT 1(OUT) is OFF. Configation: Ports 0 and 1 are connected to internal PHYs A and B. Port 2 is connected to the external MII pins. PORT0(IN/OUT) is connected to the embedded PC BECKHOFF CX1100-0004 via ethercat. PORT1(OUT) and PORT2 (for LAN9252-ADD-ON board) are not connected to extern. The files was listed in the structur window from Twincat2.0: Box 1, Box2 and Box3. Box 1 and Box 2 have error INIT INIT_ERR. Box 3 works correctly in OP mode. See some pictures below. I don't understand why do exist Box 1 and box 2 in the structur window from twincat 2.0? I can not find this mistake. How can I remove Box 1 and Box 2 from the strucktur window? I hope to lose this problem. Ports 0 and 1 are connected to internal PHYs A and B. Port 2 is connected to the external MII pins. best regards GeWoBl70 Attached Image(s) 2018-11-29 17:13:03 评论 举报 h1654155275.5627 提交评论 只有小组成员才能发言,加入小组>> Microchip 284个成员聚集在这个小组 加入小组 精选推荐 能够在单个SPI接口上运行两个SPI设备吗? 4757 浏览 9 评论 和谐项目创建中的Java错误该怎么解决? 1802 浏览 8 评论 请问有没有办法通过UART闪存代码? 1718 浏览 10 评论 请问是否能把一个ADC值转换成两个字节用来设置PWM占空比? 2928 浏览 3 评论 请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压? 2036 浏览 5 评论 最新话题 PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因 SPI-MISO---ATSAMG55J19 bm64蓝牙模块更换后不能读写数据问题 IPECMD命令烧录AVR128DA48芯片,报找不到芯片错误 PIC33EP系列QEI模块初始化问题 热门话题 SPI-MISO---ATSAMG55J19 410浏览 1评论 KSZ8863MLL查找不到MAC地址,求解! 1094浏览 1评论 求助帖:MPLABX v6.00 + XC32 V4.00 貌似编译文件过多会无法编译 2339浏览 1评论 PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因 330浏览 0评论 bm64蓝牙模块更换后不能读写数据问题 245浏览 0评论 创建小组步骤 创建小组创建自己的地盘 个性设置精心打造小组空间 邀请好友邀请好友加入我的小组 小组升级小组积分升级赢得社区推荐 创建属于自己的小组 快速回复 返回顶部 返回列表 关注微信公众号 电子发烧友网 电子发烧友论坛 社区合作 刘勇 联系电话:15994832713 邮箱地址:liuyong@huaqiu.com 社区管理 elecfans短短 微信:elecfans_666 邮箱:users@hauqiu.com 返回 Microchip 回复 关闭 站长推荐 /6 【开源硬件项目分享】 本专辑集合了许多开源硬件项目分享给大家,欢迎大家一起来讨论和分享各自的开源项目!>> 立即预约 查看 » 【电子工程师软件设计全集】 汇聚了电子工程师常用设计软件,欢迎下载 查看 » 【线下会议】超热门电机主题会议! 此次电机控制先进技术研讨会,提供给广大电机工程师一个资讯和交流平台,帮助工程师提升工作技能。
2024电机控制先进技术研讨会>> 立即预约 查看 » 【社区活动集合】 电子发烧友活动、有奖活动一览 查看 » 【免费领取】 华秋电子将联合瑞芯微、凡亿重磅发布《RK3588 PCB设计指导白皮书》,免费下载! 查看 » 【2023年度电子工程师大会专题】 2023年度电子工程师大会专题包含演讲视频及PPT,欢迎工程师朋友观看下载!! 查看 » 小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 ) GMT+8, 2024-3-14 17:57 , Processed in 1.166873 second(s), Total 74, Slave 58 queries . Powered by 电子发烧友网 © 2015 bbs.elecfans.com 华秋(原“华强聚丰”): 电子发烧友 华秋开发 华秋电路(原"华强PCB") 华秋商城(原"华强芯城") 华秋智造 My ElecFans APP 网站地图 设计技术 可编程逻辑 电源/新能源 MEMS/传感技术 测量仪表 嵌入式技术 制造/封装 模拟技术 RF/无线 接口/总线/驱动 处理器/DSP EDA/IC设计 存储技术 光电显示 EMC/EMI设计 连接器 行业应用 LEDs 汽车电子 音视频及家电 通信网络 医疗电子 人工智能 虚拟现实 可穿戴设备 机器人 安全设备/系统 军用/航空电子 移动通信 工业控制 便携设备 触控感测 物联网 智能电网 区块链 新科技 特色内容 专栏推荐 学院 设计资源 设计技术 电子百科 电子视频 元器件知识 工具箱 VIP会员 社区 小组 论坛 问答 评测试用 企业服务 产品 资料 文章 方案 企业 供应链服务 硬件开发 华秋电路 华秋商城 华秋智造 nextPCB BOM配单 媒体服务 网站广告 在线研讨会 活动策划 新闻发布 新品发布 小测验 设计大赛 华秋 关于我们 投资关系 新闻动态 加入我们 联系我们 侵权投诉 社交网络 微博 移动端 发烧友APP 硬声APP WAP 联系我们 广告合作 王婉珠:wangwanzhu@elecfans.com 内容合作 黄晶晶:huangjingjing@elecfans.com 内容合作(海外) 张迎辉:mikezhang@elecfans.com 供应链服务 PCB/IC/PCBA 江良华:lanhu@huaqiu.com 投资合作 曾海银:zenghaiyin@huaqiu.com 社区合作 刘勇:liuyong@huaqiu.com 关注我们的微信 下载发烧友APP 电子发烧友观察 电子工程师社区 1-32层PCB打样·中小批量 元器件现货·全球代购·SmartBOM SMT贴片·PCBA加工 PCB&PCBA Manufacturing 华秋简介 企业动态 联系我们 企业文化 企业宣传片 加入我们 版权所有 © 深圳华秋电子有限公司 电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号 快速回复 返回顶部 返回列表 最新主题 推荐主题 热门主题 我的帖子 -技术社区 HarmonyOS技术社区 RISC-V MCU技术社区 FPGA开发者技术社区 -OpenHarmony开源社区 OpenHarmony开源社区 -嵌入式论坛 ARM技术论坛 STM32/STM8技术论坛 RT-Thread嵌入式技术论坛 单片机/MCU论坛 RISC-V技术论坛 瑞芯微Rockchip开发者社区 FPGA|CPLD|ASIC论坛 DSP论坛 -电路图及DIY 电路设计论坛 DIY及创意 电子元器件论坛 专家问答 -电源技术论坛 电源技术论坛 无线充电技术 -综合技术与应用 机器人论坛 USB论坛 电机控制 模拟技术 音视频技术 综合技术交流 上位机软件(C/Python/Java等) -无线通信论坛 WIFI技术 蓝牙技术 天线|RF射频|微波|雷达技术 -EDA设计论坛 PCB设计论坛 DigiPCBA论坛 Protel|AD|***论坛 PADS技术论坛 Allegro论坛 multisim论坛 proteus论坛|仿真论坛 KiCad EDA 中文论坛 DFM|可制造性设计论坛 -测试测量论坛 LabVIEW论坛 Matlab论坛 测试测量技术 传感技术 -招聘/交友/外包/交易/杂谈 项目外包 供需及二手交易 工程师杂谈|交友 招聘|求职|工程师职场 -官方社区 发烧友官方/活动 华秋商城 华秋电路 ———版块导航 EtherCAT使用与解析-主站状态机(idle->preop)_ethercat preop-CSDN博客 EtherCAT使用与解析-主站状态机(idle->preop) 最新推荐文章于 2023-12-22 20:31:26 发布 会笑的那双眼 最新推荐文章于 2023-12-22 20:31:26 发布 阅读量2.6k 收藏 8 点赞数 2 文章标签: ethercat 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/lswdcyy/article/details/105134276 版权 当加载完毕ec_master主站模块和一个网络驱动模块后(如ec_generic),整个系统就创建一个线程用于指向空闲阶段函数(./master/master.c/ec_master_idle_thread()),在该函数中有一个过程就是执行主站状态机,也就是ec_fsm_master_exec()函数,具体实现模式就与主站中的ec_fsm_master_t类型结构有关,该类型的数据如下: struct ec_fsm_master { ec_master_t *master; /**< master the FSM runs on 状态机的主站 */ ec_datagram_t *datagram; /**< datagram used in the state machine 状态机用到的数据 */ /* 数据报超时重发次数,一般设置为EC_FSM_RETRIES(3次) */ unsigned int retries; /**< retries on datagram timeout. */ /* 主站状态机执行函数,通过指定在不同状态下该指针指向不同函数实现,从而实现不同状态下的不同执行函数:空闲阶段: 先指向ec_fsm_master_state_start()函数实现对状态机的数据帧进行初始化,标志主机进入空闲阶段;然后再指向ec_fsm_master_state_broadcast()广播函数。*/ void (*state)(ec_fsm_master_t *); /**< master state function */ ec_device_index_t dev_idx; /**< Current device index (for scanning etc.). */ /* idle表示主站状态机处于空闲阶段,该量在本文件的c文件中ec_fsm_master_reset()初始化过程中初始化为0在加载完毕ec_generic网络驱动模块之后,网络设备驱动模块创建一个内核线程执行了主站的空闲阶段函数;在空闲阶段函数中调用了ec_fsm_master_state_start()函数,该函数中设置了该量为1,标志进入空闲阶段;ec_fsm_master_state_broadcast函数中,当状态机进行重新扫描的时候,会将该idle置0,对从站配置完成后又会将该位赋值为1 */ int idle; /**< state machine is in idle phase */ /* 当从站个数即拓扑结构被检测到发生变化的时候,会将该rescan_required量置1,在开始主站状态机开始进行就重新扫描的时候,会将该变量赋值为当前的jiffies */ unsigned long scan_jiffies; /**< beginning of slave scanning */ /* 用于存储上一周期的网络设备连接状态,从而可以和本周期网络连接状态进行组合判断网络连接的断开时刻和接上的哪一刻 */ uint8_t link_state[EC_MAX_NUM_DEVICES]; /**< Last link state for every device. */ /* 每个网络设备接收到从站响应个数,该数值在空闲阶段是通过发送EC_DATAGRAM_BRD子报文,然后接收到的子报文获取其WKC得到 */ unsigned int slaves_responding[EC_MAX_NUM_DEVICES]; /**< Number of responding slaves for every device. */ /* 当从站个数即拓扑结构被检测到发生变化的时候,会将该rescan_required量置1,在开始主站状态机开始进行就重新扫描的时候,会将该位置于0 */ unsigned int rescan_required; /**< A bus rescan is required. */ /* 每个设备响应从站的AL状态(AL状态寄存器) */ ec_slave_state_t slave_states[EC_MAX_NUM_DEVICES]; /**< AL states of responding slaves for every device. */ ec_slave_t *slave; /**< current slave */ ec_sii_write_request_t *sii_request; /**< SII write request */ off_t sii_index; /**< index to SII write request data */ ec_sdo_request_t *sdo_request; /**< SDO request to process. */ /* 各个不同的状态机,每个状态机都有对应的不同的源码文件,如fsm_coe对应源码实现为/master/fsm_coe.h和/master/fsm_coe.c文件中 */ ec_fsm_coe_t fsm_coe; /**< CoE state machine */ ec_fsm_soe_t fsm_soe; /**< SoE state machine */ ec_fsm_pdo_t fsm_pdo; /**< PDO configuration state machine. */ ec_fsm_change_t fsm_change; /**< State change state machine */ ec_fsm_slave_config_t fsm_slave_config; /**< slave state machine */ /* 从站扫描状态机,主站状态机中的子状态机 */ ec_fsm_slave_scan_t fsm_slave_scan; /**< slave state machine */ ec_fsm_sii_t fsm_sii; /**< SII state machine */ }; 查看完毕该结构体可以看到主站状态机中还存在一些子状态机,如fsm_coe,fsm_soe,fsm_pdo,fsm_change,fsm_slave_config,基本的模式就是主站状态机在需要执行子状态机的时候,会一直等待子状态机完成相应工作,然后再执行之后的程序转入下一状态。 那么继续看主站状态机,主站状态机的状态函数会在初始化的时候初始化到./master/fsm_master.c/ec_fsm_master_state_start()函数,该函数中会对状态机子报文进行填充,进行本周期的子报文数据发送,在此使用了BRD类型子报文(关于BRD子报文的作用可以查看这部分内容https://welsey.blog.csdn.net/article/details/105288222)进行数据发送,通过BRD类型子报文获取从站个数,然后进入下一个状态函数,也就是./master/fsm_master.c/ec_fsm_master_state_broadcast()中进行解析。由于使用的是BRD,对应的返回的子报文的WKC(WKC计算公式参考https://welsey.blog.csdn.net/article/details/105289253)也就是主站连接的从站的个数,这样通过判断与之前存储的从站个数时候一致就可以判断主站连接的从站有无变化,如果判断发生变化,那么就需要进行主站对从站的重新扫描过程。 1.首先调用ec_master_clear_slaves()函数清除主站连接的从站链表,而后以刚扫描完毕得到的从站个数进行从站空间申请,并将主站的从站链表指向该位置。之后做的工作就是为新申请的从站链表空间进行内容初始化,以及对从站寄存器的一些初始化。 2.从站的配置地址存储在0x0010~0x0011,先进行对从站配置地址的清除(就是直接使用BWR报文直接写入0x0000到该寄存器);之后的配置地址写入在之后的从站扫描子状态机中进行。然后就是写入0x0900寄存器,写入该寄存器会锁存写入时候的本地时间,该时间用来使用在DC过程。 3.执行从站扫描状态机,该状态机是主站状态机中的子状态机,主站会在ec_fsm_master_state_scan_slave()函数中等待该子状态机执行完毕,至于执行是否完毕的标准就是子状态机有无正常结束或者异常结束(通过两个无内容的状态函数实现)。 4.从站扫描子状态机:该状态机的类为./master/fsm_slave_scan.h/ec_fsm_slave_scan,具体内容如下: struct ec_fsm_slave_scan { ec_slave_t *slave; /**< Slave the FSM runs on. */ ec_datagram_t *datagram; /**< Datagram used in the state machine. */ ec_fsm_slave_config_t *fsm_slave_config; /**< Slave configuration state machine to use. */ ec_fsm_pdo_t *fsm_pdo; /**< PDO configuration state machine to use. */ unsigned int retries; /**< Retries on datagram timeout. */ void (*state)(ec_fsm_slave_scan_t *); /**< State function. */ uint16_t sii_offset; /**< SII offset in words. */ ec_fsm_sii_t fsm_sii; /**< SII state machine. */ }; 执行到该子状态机首先就是对从站的配置地址(0x0010~0x0011)的设置,由于最开始是从站变化导致的主站重新扫描,因此从站的配置地址是需要重新设置的,该设置地址是使用EC_DATAGRAM_APWR子报文进行设置的,自增式物理写入的方式,每个从站都会参与转发他,且每个从站对该子报文处理完毕后都会在APD位置+1,当那个从站检测到APD为0的时候,就会正式处理该子报文。因此该子报文类型适合于从站配置地址无效的情况下进行。 5.写入从站的配置地址后就可以使用配置寻址方式进行指定从站的寻址了。也就是EC_DATAGRAM_FPRD类型子报文。首先获取以下当前的从站状态(0x0130~0x0131)检测从站有无已知异常。如果没有就可以继续之后的获取从站基础信息。 6.ec_fsm_slave_scan_state_base()函数用于获取从站基础信息,主要包括FMMU个数、sync个数,FMMU是否支持位操作,从在哪是否支持DC,从站DC时间范围等信息。如果从站支持DC系统,那么就先进行DC的一些设置(关于EtherCAT的DC系统了解的还不是太透彻,之后正确了解后单独写一章)。 7.获取DL状态:DL也就Data link,表示数据链路状态。他在0x0110~0x0111寄存器中存放。分别针对从站4个端口有无连接,有无回路闭合和信号是否有检测到进行信息获取。 8.获取SII信息,SII信息存放在EEPROM中,且第一个SII信息存放在EEPROM的0x40位置,然后利用SII信息获取子状态机对SII信息进行获取(关于SII信息获取子状态机需要单独列一章),大体来说就是根据SII每个项的存储格式可以获取到最终存储SII信息占据的空间大小,而后根据该空间大小将所有的SII信息获取复制到内存中,之后再进行SII信息的提取解析(./master/fsm_slave_scan.c/ec_fsm_slave_scan_state_sii_data())。 9.提取完毕SII信息后,如果支持从站COE协议,那么就继续执行./master/fsm_slave_scan.c/ec_fsm_slave_scan_enter_preop()状态函数,该状态函数中启用了从站配置子状态机,该状态机器会进行从站状态转换过程中一系列配置设置以及设置从站状态向目标设置状态变更(关于从站配置子状态机需要单独列一章)。 10.大体上一个从站的由init状态转变向preop状态的流程如上,之后就是依次将主站连接的每个从站都执行一次上述流程。之后不断做从站的重新扫描。 优惠劵 会笑的那双眼 关注 关注 2 点赞 踩 8 收藏 觉得还不错? 一键收藏 知道了 1 评论 EtherCAT使用与解析-主站状态机(idle->preop) 当加载完毕ec_master主站模块和一个网络驱动模块后(如ec_generic),整个系统就创建一个线程用于指向空闲阶段函数(./master/master.c/ec_master_idle_thread()),在该函数中有一个过程就是执行主站状态机,也就是ec_fsm_master_exec()函数,具体实现模式就与主站中的ec_fsm_master_t类型结构有关,该类型的数据如下:s... 复制链接 扫一扫 EtherCAT主站SOEM -- 8 -- SOEM之 ec_slave 结构体详细分析 qq_50808730的博客 11-25 379 以上就是EtherCAT主站SOEM – 8 – SOEM之 ec_slave 结构体详细分析的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。 EtherCAT主站配置过程分析.xlsx 10-15 本文档分析了国内某ehtercat主站的启动过程。对启动过程中的每一个报文的作用进行了标注。部分标注如下: "DC过程: 1.主站写900,发一帧写的数据;只要是写900,每个口的会锁存接收时间; 2.主站读900 16byte:读区上一次写900数据帧时,锁存器的接受时间;有了锁存时间,就可以计算传导延时; 3.读取918 8byte,ECAT Processing Unit的接受时间,该时间减去主站系统时间,就是system time offset 4.将920 8byte中写入系统时间偏移,将928 4byte中写入传导延时。 5.周期性向910 8byte中写入新的时间。 同步时钟设置过程: 设置起始DC事件时间 990 8byte 启动同步时钟 从站芯片应该没有自己的mac地址;从站会接受所有的网卡数据。返回数据时,都是将主站的mac做了修改并返回。 " 1 条评论 您还未登录,请先 登录 后发表或查看评论 EtherCAT状态机----Kithara RTS Studying…… 12-12 5312 本文摘自Kithara RTS官网对EtherCAT状态机的介绍
The EtherCAT state machine
EtherCAT状态机 EtherCAT defines 5 different states BOOT, INIT, PREOP, SAFEOP and OP.These are identified by the Kithara constants KS_ECAT_ST Ethercat “BRD读从站状态”报文分析(0x0130:0x0131) geshifei的博客 12-22 418 涉及的从站寄存器:Register AL Status 0x0130:0x0131。 igh ethercat主站文档(中文翻译下) qq_43530144的博客 05-12 3588 此翻译主要是用翻译软件翻译,部分自己修改,若有不当之处,可以下方评论或私聊我提醒修改,若转载,请注明出处 这篇是5-9章内容,前四章链接 5状态机 EtherCAT主站的许多部分都实现为有限状态机(FSM)。 尽管这在某些方面导致了更高级别的复杂性,但也打开了许多新的可能性。 下面的短代码示例示例显示了如何读取所有从属状态,此外还说明了“顺序”编码的限制: ec_master_simple io()函数提供了一个简单的接口,用于同步发送单个数据报并接收result1。 在内部,它对指定的数据报进行排队,调 EtherCAT设备协议详解二、EtherCAT状态机及配置流程 EtherCAT 12-16 7904 设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因。设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因。safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错。DC同步稳定,从站也没有报错就可以申请进入op状态。 EtherCAT使用与解析-从站配置子状态机(init->preop) lswdcyy的博客 04-05 4588 从站配置的子状态机是./master/fsm_slave_config.h/ec_fsm_slave_config结构体 struct ec_fsm_slave_config { ec_datagram_t *datagram; /**< Datagram used in the state machine. */ ec_fsm_change_t *fsm_change... EtherCAT从站状态机分析:PREOP to SAFEOP过程 热门推荐 JavanChen的博客 11-15 1万+ /////////////////////////////////////////////////////////////////////////////////////////
/**
\return AL Status Code (see ecatslv.h ALSTATUSCODE_....)
\brief This function is called in case o... Ethercat解析(八)之主站运行阶段 absinjun的博客 08-11 3406 由主站驱动提供的EtherCAT主站可运行在如下图中几个阶段: 孤儿阶段:主站等待以太网连接。 空闲阶段:主站已经连接了以太网,但是应用空间没有对主站请求。在此阶段,主站会自动扫描从站总线并等待应用空间的操作。在此阶段,命令行工具可以访问总线,但是由于缺少总线配置,不能进行过程数据的交换。 可操作阶段:主站被应用层请求,此时可对总线进行配置也可进行过程数据的交换。 ... EtherCAT主站配置过程分析 01-15 固高主站+一个固高GTHD伺服驱动Ethercat通讯建立全过程分析 SOEM协议栈代码研读笔记(一) zhiyaormb的博客 08-20 3101 对EtherCAT开源协议栈SOEM的源代码进行分析和解读 Soem-1个电机PP模式 界面显示目标位置达到状态-添加代码注释-CSDN - EtherCAT主站-SOEM专栏的源代码 最新发布 01-10 获取网卡信息,绑定网卡,配置EtherCAT网络,等待从站进入OP状态,检查EtherCAT主站和从站状等等。 Soem主站识别到 几 个从站。 并且操作1个电机走PP模式 界面显示目标位置达到状态,正转达到目标位置,反转达到目标... Soem-1个电机转圈圈PV模式-添加代码注释-CSDN - EtherCAT主站-SOEM专栏的源代码 01-09 获取网卡信息,绑定网卡,配置EtherCAT网络,等待从站进入OP状态,检查EtherCAT主站和从站状等等。 Soem主站识别到 几 个从站。 并且对1个EtherCAT从站 电机进行操作,通过 PV模式 让 1个电机转圈圈,正反转及停止。 EtherCAT主站 - SOEM-master-1.4.zip 11-08 EtherCAT主站 - SOEM-master-1.4.zip 。 源代码。 Soem-跟从站通讯到OP状态-添加代码注释-CSDN - EtherCAT主站-SOEM专栏的源代码 01-09 Soem-跟从站通讯到OP状态-添加备注-CSDN.zip EtherCAT主站-SOEM专栏的源代码。...获取网卡信息,绑定网卡,配置EtherCAT网络,等待从站进入OP状态,检查EtherCAT主站和从站状等等。 Soem主站识别到 几 个从站。 soem-w5500-rpi:Raspberry pi的开源实时EtherCAT主站 02-05 soem-w5500-rpi:Raspberry pi的开源实时EtherCAT主站 EtherCAT主站芯片(ECM-XF)数据手册+参考原理图+使用说明 05-27 EtherCAT主站芯片(ECM-XF)数据手册+参考原理图+使用说明 要想自己打板玩一玩Ethercat的老哥们往这里看 Soem-1个IO模块输入IO显示及IO输出控制-添加代码注释-CSDN - EtherCAT主站-SOEM专栏的源代码 01-09 Soem-1个IO模块输入IO显示及IO输出控制-添加代码...获取网卡信息,绑定网卡,配置EtherCAT网络,等待从站进入OP状态,检查EtherCAT主站和从站状等。 对1个EtherCAT从站 IO模块进行操作,包括:IO输出控制,IO采集显示。 详解EtherCAT主站协议栈-综合文档 05-22 详解EtherCAT主站协议栈 ethercat主站ic: ecm-xf 08-09 EtherCAT主站IC(EtherCAT Master IC)是一种用于EtherCAT网络的集成电路。其中的一款常见的EtherCAT主站IC是ECM-XF。 ECM-XF是一种先进的EtherCAT主站IC,具有高性能和广泛的应用领域。它由一系列强大的处理器和通信接口组成,可以实现快速而可靠的EtherCAT通讯。作为EtherCAT网络的主控设备,ECM-XF具有协调和控制连接到网络的从站设备的能力。 ECM-XF具有丰富的功能和灵活的配置选项,可以满足各种不同的应用需求。其高性能的处理器能够处理大量的数据和任务,实现实时控制和监测。通信接口方面,ECM-XF支持多种通信协议和接口,如Ethernet、SPI、UART等,使其能够与各种外部设备进行快速而稳定的通讯。 ECM-XF广泛应用于各个领域的自动化控制系统中。例如工业机器人、自动化生产线、机械加工设备等。ECM-XF的高性能和稳定性,使其成为控制系统的核心部件,能够实现高精度的运动控制和数据传输。同时,ECM-XF还具有可靠的错误检测和纠正能力,能够保证系统的稳定性和安全性。 总而言之,ECM-XF是一款先进的EtherCAT主站IC,具有高性能和广泛的应用领域。它是EtherCAT网络中重要的控制设备,能够实现快速而可靠的通讯,并在各个自动化领域中发挥重要作用。 “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 会笑的那双眼 CSDN认证博客专家 CSDN认证企业博客 码龄9年 暂无认证 105 原创 2万+ 周排名 9万+ 总排名 14万+ 访问 等级 1953 积分 83 粉丝 61 获赞 52 评论 313 收藏 私信 关注 分类专栏 html5 8篇 css 11篇 c++ 7篇 程序技巧 1篇 test 1篇 软件工具使用 2篇 make 2篇 base_c_c++ 1篇 protobuf 1篇 git 1篇 nginx 2篇 markdown 1篇 开源库 1篇 线程池 2篇 vmware 1篇 tcp 5篇 websocket 1篇 http 1篇 linux内核 10篇 个人感悟 算法 1篇 STL源码 9篇 其他 1篇 EtherCAT_Linuxcnc 2篇 EtherCAT 11篇 库使用 1篇 linux qt 11篇 python 2篇 IIS 1篇 软件发布 1篇 清理c盘 1篇 架构 最新评论 EtherCAT使用与解析-ethercat空闲阶段函数解析 开启伯恩: ”这里还有个点就是在接收过程中需要进行多次接收“,这个多次接收,在进入op后,怎么处理? EtherCAT使用与解析-关于SDO与PDO关系 huangbojun2008: 1600,1800,1c00之类的都属于SDO吧? EtherCAT使用与解析-ethercat系统内核模块加载与初始化操作 无 过: 对,然后我下载回来了,十分感谢您,参考你的博客才能安装到最后一步的,感谢! EtherCAT使用与解析-ethercat系统内核模块加载与初始化操作 会笑的那双眼: 这个看样子就是缺内核模块了,是没执行安装吗?正常编译后应该有个安装过程的。 EtherCAT使用与解析-ethercat系统内核模块加载与初始化操作 会笑的那双眼: 不需要,那些是底层的东西,ethercat-master自己做的 您愿意向朋友推荐“博客详情页”吗? 强烈不推荐 不推荐 一般般 推荐 强烈推荐 提交 最新文章 css选择器 px_em_rem line-height 2023年22篇 2022年29篇 2021年22篇 2020年18篇 2018年14篇 目录 目录 分类专栏 html5 8篇 css 11篇 c++ 7篇 程序技巧 1篇 test 1篇 软件工具使用 2篇 make 2篇 base_c_c++ 1篇 protobuf 1篇 git 1篇 nginx 2篇 markdown 1篇 开源库 1篇 线程池 2篇 vmware 1篇 tcp 5篇 websocket 1篇 http 1篇 linux内核 10篇 个人感悟 算法 1篇 STL源码 9篇 其他 1篇 EtherCAT_Linuxcnc 2篇 EtherCAT 11篇 库使用 1篇 linux qt 11篇 python 2篇 IIS 1篇 软件发布 1篇 清理c盘 1篇 架构 目录 评论 1 被折叠的 条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 添加红包 祝福语 请填写红包祝福语或标题 红包数量 个 红包个数最小为10个 红包总金额 元 红包金额最低5元 余额支付 当前余额3.43元 前往充值 > 需支付:10.00元 取消 确定 下一步 知道了 成就一亿技术人! 领取后你会自动成为博主和红包主的粉丝 规则 hope_wisdom 发出的红包 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 余额充值 TwinCAT在init->pre op ->safe op->op模式切换时的error caode说明_倍福preop init_err-CSDN博客 TwinCAT在init->pre op ->safe op->op模式切换时的error caode说明 最新推荐文章于 2024-03-13 13:10:59 发布 周杰伦E 最新推荐文章于 2024-03-13 13:10:59 发布 阅读量4.7k 收藏 13 点赞数 1 分类专栏: EtherCAT 文章标签: 单片机 stm32 arm 嵌入式硬件 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_42915969/article/details/123898902 版权 EtherCAT 专栏收录该内容 1 篇文章 0 订阅 订阅专栏 TwinCAT在init->pre op ->safe op->op模式切换时的error caode说明 https://infosys.beckhoff.com/english.php?content=../content/1033/ethercatsystem/1072497163.html&id= 非常齐全,非常nice 好几次碰到切换模式出错的问题,根据故障码的说明去debug程序可以解决很多问题。 优惠劵 周杰伦E 关注 关注 1 点赞 踩 13 收藏 觉得还不错? 一键收藏 打赏 知道了 0 评论 TwinCAT在init->pre op ->safe op->op模式切换时的error caode说明 TwinCAT在模式切换时的error caode说明 复制链接 扫一扫 专栏目录 TwinCAT无法进入OP,报错AL state 0x001a - Synchronization error qq_31825529的博客 05-20 4740 既然是同步错误,那么无法进入OP的原因就是同步失败导致的了。官方手册给出的错误代码原因是网络抖动造成的从站同步信号丢失,说明TwinCAT设置的DC周期太短了,在当前主站性能和网络条件下无法实现,所以适当增加DC周期即可解决。如:从默认的2000us改为10000us ... Twin-Networks-for-Sequence-Generation:ICLR 2018再现性挑战 05-16 双网络顺序生成 ICLR 2018的PyTorch实施接受论文Twin Networks:Matching the Future for Sequence Generation 用于验证MSCOCO数据集上图像字幕的结果以及MNIST上逐像素生成的结果。 Reproducibility_Report.pdf中提供了论文分析和两个数据集的可再现性结果。 实现细节在ImageCaptioningCOCO和SequentialMNIST中提供。 引文 如果您认为此代码有用,请考虑引用作者的原始著作: @inproceedings{Serdyuk2017TwinNM, title={Twin Networks: Matching the Future for Sequence Generation}, author={Dmitriy Serdyuk and Nan Rosemary 参与评论 您还未登录,请先 登录 后发表或查看评论 丹弗斯驱动器在EtherCAT扫描中报错INIT ERROR原因分析 weixin_41883890的博客 07-20 1887 问题:丹弗斯这个伺服驱动是尾端了,后面没有接其他的东西,TwincAT扫描的时候报错 拓扑结构 原因分析:报错的含义是硬件初始化失败,一般是个体模块故障导致的。 解决方案:换了一个丹弗斯的通讯模块就好了,倍福的硬件和软件参数都没动。可能是原来那个模块坏了。 验证方式:换了一个备件好了,把之前那个再装上去就报错了,是驱动通讯卡的问题,换回原来那卡还是一样的问题。 经验总结:有OP又有INIT,这种状态不好判断问题,有备件的话优先考虑更换备件测试。, ... 倍福Hot Connect技术概览 sygydxfwd的博客 12-15 181 EtherCAT Hot Connect技术概览 TwinCAT IEC61131-3 编程 01-18 IEC(International Electrotechnical Commission)61131-3 是 IEC 61131国际标准的第三部分,是第一个为工业自动化控制 系统的软件设计提供标准化编程语言的国际标准。 Twincat 切换到配置模式蓝屏 07-19 Twincat 切换到配置模式蓝屏 EtherCAT从站状态机分析:PREOP to SAFEOP过程 热门推荐 JavanChen的博客 11-15 1万+ /////////////////////////////////////////////////////////////////////////////////////////
/**
\return AL Status Code (see ecatslv.h ALSTATUSCODE_....)
\brief This function is called in case o... TwinCat3学习问题 qq_44560838的博客 03-18 3012 1. 4115报错 运行①,重启电脑即可。 2. TwinCat图标为棕色,切换到运行模式报错。 此电脑 - 右键【管理】 - 【服务和应用程序】 - 【服务】 - 启动【TC3 system service】 启动服务后图标变为蓝色,此时为正常状态。 3. 声明变量时地址分配问题 关联I/O时需要分配地址,程序内部使用时不需要分配地址 4. 自定义控件,变量链接控件无效 在属性菜单中找到 Position 下的 Variable, 双击后在对话框中输入在Interface Editor 中实例化的 windows 11运行Twincat报错4132(0X1024) wan369282913的博客 06-21 1736 请参考此链接 EtherCAT IGH 命令行介绍 u014077947的博客 10-24 4088 EtherCAT IGH 命令行介绍 倍福--同步单元Sync Units的使用。 weixin_41883890的博客 06-24 977 在EtherCAT网络中,如果一个从站出现断开的情况,可能导致整个EtherCAT网络无法通信,即其它OP状态的从站也没办法进行输入输出了。这个可以使用多个同步单元的方式实现,即后面模块不在OP状态,前面的OP状态模块也能正常工作。本文讲解将EtherCAT模块分不同单元运行–Sync Units的使用。... TE13xx-TwinCAT-3-ScopeView-EN 11-09 TE13xx_TwinCAT_3_ScopeView_EN 倍福TwinCAT的ADS--DLL库使用手册.chm 04-27 倍福TwinCAT的ADS--DLL库使用手册 KUKA机器人倍福配置-Beckhoff_EtherCAT_XML 12-03 KUKA机器人倍福配置 beckhoff ethercat的device description文件 TwinCAT3 OPC-UA基础使用.pdf 03-23 TwinCAT3 OPC-UA基础使用 TwinCAT-PLC-Hydraulics-EN-draft.pdf 03-20 twincat2液压库资料 TwinCAT-BSD介绍.pdf 04-30 TwinCAT-BSD介绍 学习阶段单片机买esp32还是stm32? 无际单片机编程 03-07 1985 现在的趋势是,芯片厂不希望你把精力,浪费在研究他们芯片上,而是赶紧把产品开发出来,给我冲量(挣钱),只要你量管够,技术支持住在你们公司旁边都行,小公司做研发就比较惨了,供应商基本不理你。以前有个经理做一个项目,用到一颗芯片,不要说例程了,连资料都特么是日语的,只能靠自己的经验,去推测寄存器配置。如果现在哪款单片机,厂家想推出去,既没什么资料,又不提供外设例程,大概率推不动,除非价格,性能有特别的优势。随着不同的路段,不同的需求,再针对性去学习别的功能,慢慢就系统了,有些功能,车开到报废了也用不上。 基于单片机的Buck型变换器控制 最新发布 qq1744828575的博客 03-13 650 对于电子产品而言,必不可少的供电电源,随着人们对电子产品的安全性能要求越来越高,变相的对供电电源提出了新的机遇和挑战。Buck型变换器控制的研究一直是该领域重要的一方面,对于直流斩波电路而言,研究最多是压斩波电路。本文研究了一种基于单片机STM32F10ZET6的Buck型变换器控制,由主回路、控制回路以及超前滞后校正器三方面组成,控制回路用于输出指定的频率和占空比的数字PWM脉冲波;主回路主要涉及电阻、电容以及电感的性能参数的选择;超前滞后校正器主要用于使稳定输出电压的作用。 twincat2.11-2302 win10 09-06 Twincat2.11-2302是Beckhoff公司开发的一款实时控制软件,它用于工业自动化领域。Win10是微软公司开发的操作系统。 Twincat2.11-2302与Win10兼容,可以在Win10操作系统上安装和运行。安装Twincat2.11-2302之前,需要确保计算机满足软硬件要求。安装过程中需要按照官方的说明进行操作,选择适合的安装选项和路径。 安装完成后,可以使用Twincat2.11-2302进行实时控制应用的开发和调试。Twincat2.11-2302提供了丰富的功能和工具,可以方便地创建控制系统、配置和监控设备等。 Twincat2.11-2302支持多种编程语言,如IEC 61131-3标准下的ST、FBD、LD等。开发人员可以根据项目需求选择适合的编程语言进行开发。 通过Twincat2.11-2302,可以实现与硬件设备的通信、数据采集、数据处理和控制操作等。Twincat2.11-2302还支持实时监控和调试,可以实时查看控制系统的状态、采集数据并进行分析。 总结起来,Twincat2.11-2302是一款功能强大的实时控制软件,通过在Win10操作系统上安装和使用,可以实现工业自动化领域的控制应用开发和运行。 “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 周杰伦E CSDN认证博客专家 CSDN认证企业博客 码龄6年 暂无认证 1 原创 60万+ 周排名 41万+ 总排名 5304 访问 等级 18 积分 2 粉丝 1 获赞 0 评论 13 收藏 私信 关注 热门文章 TwinCAT在init->pre op ->safe op->op模式切换时的error caode说明 4731 分类专栏 EtherCAT 1篇 最新文章 2022年1篇 目录 目录 分类专栏 EtherCAT 1篇 目录 评论 被折叠的 条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 添加红包 祝福语 请填写红包祝福语或标题 红包数量 个 红包个数最小为10个 红包总金额 元 红包金额最低5元 余额支付 当前余额3.43元 前往充值 > 需支付:10.00元 取消 确定 下一步 知道了 成就一亿技术人! 领取后你会自动成为博主和红包主的粉丝 规则 hope_wisdom 发出的红包 打赏作者 周杰伦E 你的鼓励将是我创作的最大动力 ¥1 ¥2 ¥4 ¥6 ¥10 ¥20 扫码支付:¥1 获取中 扫码支付 您的余额不足,请更换扫码支付或充值 打赏作者 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 余额充值 EtherCAT Diagnostics 诊断 - 知乎首发于深入浅出之Beckhoff切换模式写文章登录/注册EtherCAT Diagnostics 诊断噜啦啦学而时习之,不易悦乎一、EtherCAT 错误是怎么检测到的?EtherCAT 通常具有“即扫即用”的特性,扫描网络、启动系统,所有组件就运行起来了。绝大多数情况下不需要设置任何参数。发现EtherCAT网络的通讯问题,典型的情况是因为以下原因:机器停止工作,或者控制项目 (PLC 程序, NC 任务…) 接收到的数据值明显与实测值不一致。示波器测到信号为True,而PLC变量值为False.在TwinCAT项目中显示了错误(典型的情况是在Master Online页面或者TwinCAT Logger)二、EtherCAT 网络中的错误类型能影响到EtherCAT网络的错误分为2大类:1.硬件错误物理介质中断:数据帧无法达到所有从站,或者根本不能回到主站。信息破坏: 数据帧到达网络中的所有从站并回到了主站,但有一些内容改变了。2.软件错误启动时从站达不到OP状态,因为来自主站的一个或多个初始化的命令被检测到不正确由于在操作过程中检测到错误,一个正常工作的从站突然脱离OP状态EtherCAT 分别从硬件和软件层面提供了丰富的诊断信息, 诊断信息可以按下图归类:三、周期性同步诊断周期性同步诊断 – Working CounterWorking Counter 是和过程数据(Process Data)一起的周期性送回主站的唯一诊断信息,所以这是最早能被主站和用户程序检测到的报警标记。一个EtherCAT数据帧中的每个数据报文都以一个16位的Working Counter (WKC)结尾,WKC 每经过一个数据报文中指定的从站就会递增,递增的原则如下:Read-only 命令(xRD): 如果从站内存可读,则 WKC+1.Write-only 命令(xWR): 如果从站内存可写,则 WKC+1.Read+Write 命令(xRW): 如果从站内存可读 WKC+1,可写则 WKC+2 (i.e. 如果读写都成功则 WKC+3).1.主站检查返回的每个数据报文的WKC值返回主站的数据报文中的WKC 当前值 = 预期值 →WKC 有效,数据报文中的输入数据转发给控制程序(PLC, NC, …)每个总线周期主站都会验证 Working Counter.返回主站的数据报文中的WKC 当前值 ≠ 预期值 →WKC 无效,数据报文中的输入数据被丢弃 (PLC/NC 使用旧的数据)本页是WKC验证有效的情况验证的结果就在每个同步单元Sync Unit的从站的WcState信息中标记,验证成功则WcState为0,验证失败则WcState为1这就是为什么一个同步单元Sync Unit会共享同一个WcState标记,而任一从站读写不成功都会导致整个数据报文都无效。读写不成功的原因:从站没有成功增加WKC,有可能因为物理上数据帧就没有到达,或者因为它不在OP状态,或者其它可能的原因。在最新版的TwinCAT 3.1中,可以把单个从站(左图)或者全部网络从站(右图)配置为:主站把 无效的输入数据全部置 0 而不是废弃之。这个功能更加危险,如果开发人员考虑不周,可能性会引起程序误动作。慎用!2.Working Counter 相关信息:很少能检测到具体是哪个或者哪些从站没有成功处理数据报文(数据报文中指定地址的从站没能成功增加数据报文的WKC)。不会报告错误原因(从站没有成功增加WKC,有可能因为物理上数据帧就没有到达,或者因为它不在OP状态,或者其它可能的原因)。WKC与数据帧同步到达,主站以最快的速度作出故障响应,立即向控制程序或者用户提供一个故障标记位。WKC的有效标记位通常还需要与硬件或者软件诊断信息同时使用,这些诊断信息可以 由主站发送命令读取回来,并帮助定位故障位置和故障原因。Working Counter 的主要目的是立即检测出通讯错误, (i.e. 为了主站快速做出反应), 而不是为了精准分析通讯错误四、Working Counter 和 Sync Units(WKC和同步单元)1.SyncUnits(同步单元) 把从站分为不同的组,每个组使用不同的数据报文,所以每个同步单元具有独立的 WKC。对于伺服驱动器,为了精确定位故障点,可以把每个伺服都设置为独立的同步单元。对于IO模块,可能把一个耦合器及所带的IO模块,配置为一个同步单元。为了优化的目的,Sync Unit 的配置是一个可选的步骤。关于如何分配同步单元,并没有一个黄金法则,因为这是由项目决定的:通常来讲,工作时紧密相关的从站应该分配到同一个同步单 元,而功能相对独立的从站应该放到独立的同步单元。2.在 TwinCAT中指定 SyncUnitTwinCAT为不同的Sync Units(同步单元)创建独立的数据报文,每个报文拥有自己 Working Counter 计数器五、硬件诊断1.硬件状态速览主站的 Online 页面,提供了诊断网络硬件问题的最佳方法系统上电时候可能产生硬件错误,并在TwinCAT中累加,而通常这些错误并不代表有问题。所以,查找可能的硬件问题时,建议清除程序启后的所有错误计数,这样才能监视到运行过程中 发生的实际错误次数。2.初步检查 – 拓朴错误VPRS = Vendor ID, Product Code, Revision Number, Serial Number: 网络启动时主站扫描到的拓朴结构与TwinCAT 配置文件的朴拓结构不符。此类错误的原因,可能只是简单地插错网线。3.初步检查 – 接地和屏蔽发生硬件错误时,建议必须检查EtherCAT网络设备是否共用同一个接地(因为不同接地之间的 环流可能导致数据损坏)。关于EtherCAT网络安装的更完整、全面的描述信息,请参考ETG文档 ETG.160 “EtherCAT Installation Guidelines” ,可以从ETG官网www.ethercat.org.下载。4.初步检查 – EBUS 电流每个 EL 模块都会消耗若干 EBUS 电流,硬件故障发生时,建议必须检查每个I/O组的可用Ebus电流。根据经验,EBUS耗电量大的模块,比如网关模块EL6xxx,在保证其EBUS供电足够的前提下,建议散放在耗电量小的模块( 比如普通DI/DO模块)之间,所以尽量不要几个网关模块挨在一起,也不要紧挨着控制器或者耦合器放置。这是从散热的角度考虑。电流消耗达到限值时,应插入一个 EL94xx 模块。EL9100电源模块不仅可以接入负载电源,还有散热的作用,是最便宜的发热量最小并且能传递EBUS的模块。相同价格的还有EL9186/EL9187等电位分接模块。5.Emergency Scan(紧急扫描)Emergency Scan (紧急扫描)操作,可以发送预定数量的探测数据帧,用于快速测试物理连接 (TwinCAT 应处在 Config Mode):Emergency Scan 能够快速检查EtherCAT网络的永久硬件问题 (设备、电缆或者接头损坏)。用Emergency Scan的方法很难检测到随机的/不定时的干扰,处理这种干扰,应该进行完整的error counter analysis (错误计数分析)。6.EtherCAT 端口的硬件诊断为了进行更深入的分析,从站提供了基于端口的(port-specific)硬件错误计数。EtherCAT 定义了端口号 0 to 3 (端口 0 总是输入口),而TwinCAT 中通常把这些端口依次叫做A 到 D (A 总是输入口),两种端口定义方式是等效的:Master的Online页面,可以在线看到CRC校验错误计数。大部分从站是两个数字,耦合器EK1100有3个数字,而分支模块EK1122则会有4个数字。7.Link Lost (连接丢失)错误计数器有时候两个EtherCAT从站之间的物理连接可能会完全中断:信号完全无法到达相邻的从站。Link loss(连接丢失),最有可能的原因是:电缆或接头损坏(电缆连接),接触弹片不够力或者氧化( Ebus连接)。一个或者几个从站掉电。一个端口上的物理连接中断,从站就会把该端口的 Link Lost Counter(连接丢失计数器) 加 1。Register 内存地址长度含 义0x03101 字节port 0 的连接丢失次数0x03111 字节port 1 的连接丢失次数0x03121 字节port 2 的连接丢失次数0x03131 字节port 3 的连接丢失次数物理连接的状态发生久性或暂时性的改变,在TwinCATLogger消息区中都会报告(并且保存在Windows Log 中)。8.Link/Activity (连接/活动)指示灯连接的永久中断很容易检查出来,不用分析连接丢失计数器( Link Lost Counters ),只需要简单查看主站的Online页面:9.无效帧(Invalid frame)错误计数器有时候,即使硬件信号到达了相邻的从站,接收到的信号却与最初发送的不一致:数据包发生损坏,最有可能的原因是:如果该错误计数零星增加,极可能是由于外部 EMC 干扰。如果该错误计数快速且稳步增加,极可能是由于设备损坏。一个端口上的数据帧破坏,从站就会把该端口的 InvalidFrameCounter(无效帧计数器)加 1。RX 错误计数器 和 CRC 校验错误计数器,都意味着硬件接收到的数据帧损坏,表征信息非常相近,但是二者分别是在从站架构的不同层面检测到的,其含义也略有不同。10.物理介质上的信号传输0和1的逻辑序列要在物理介质上传输,需要编码成预定义的电压/电流 电平(或者电平转换)。电流/电压 值的序列叫做 symbols(符号).基于特定的硬件编码标准,电流/电压值的可能序列并不是全都具有含义,这样就有了 有效符号和无效符号的分别。物理介质上符号是连续传输的,既在Ethernet数据帧内也在数据帧外(数据帧外的符号序列是为了让接收方及时检测到可能发生的连接丢失错误)通讯由符号序列组成携带着有含义的信息的符号序列,就是Ethernet 数据帧。两个Ethernet数据帧之间传输的符号序列,就是 数据帧间隔硬件错误分为两种类型,都在无效帧计数器中累计。RX Errors:个别符号错误 (被特定的硬件解码器识别为无效).在数据帧内部或者外部都可能发生(即使是在没有数据帧传输的时候,每个物理接口都会传输 idle 即表示空闲的符号)→ RX Error Counters (无效帧计数器的高字节)CRC Errors:整个数据帧的循环冗余校验(CRC)错误.在数据帧内发生 (只有Ethernet 数据帧才进行校验).→ CRC Error Counters (无效帧计数器的低字节)11.RX 和 CRC 错误的类比硬件通讯介质上的数据传输可以用标准的语言书写来打个比方:RX 和 CRC 错误 在解释上具有细微的差别,例如:CRC校验只检查数据帧(Frame)内语义是否正常,但并不能发现网络帧间隔的非法字符。RX校验所有字符是否非法。CRC 错误 – 什么情况下会检测出来?12.链接丢失(Lost Link)错误的简单监视在EtherCAT主站的Online页面可以监视到链接丢失(Link Lost)只要在主站的Advanced Setting中启用累加计数“Show Change Counters”即可:添加这些操作是不需要重启TwinCAT软件的此计数表示与从站的物理连接丢失的次数(1表示首次连接,>1表示在运行期间至少出现过1次 物理连接丢失)。在EtherCAT主站的Online页面可以监视到数据帧错误(Frame error)即从站的RX Error计数寄存器的低字节,错误计数如下:从站的Frame Error计数器中保存着自TwinCAT启动以来的累计出错次数,点击“Clear CRC”所有从站的CRC计数清零,并重新累计。13.怎样正确跟踪硬件错误计数为了追踪硬件错误计数,建议进行以下设置:在主站的Advanced Setting中 不要勾选 “Log CRC Counters” 标记。在Online视图中添加注册字 0x0300÷0x030A 和 0x0310÷0x0312。激活并重启 TwinCAT 配置:重启TwinCAT后,清空所有错误计数:TwinCAT 中,EtherCAT主站的 Online 页面总是以 word-oriented 的方式显示计数值。等待,直到错误补检测到:捕捉到的错误次数越多越好 (关闭项目或者重启TwinCAT就会清除计数,而最小化项目或者切换窗口则不会清除计数). 记录的值可以导出,以供进一步分析。错误计数采集完成后,记得应把 “Log CRC Counters” 重新勾选上。(TwinCAT 需要重启).14.怎样定位一个错误?为了从显示的CRC错误计数分析出网络中的故障点分布情况,建议:逻辑上沿着网络数据帧传播的方向确定从站端口执行CRC校验的顺序(根据 前述信息 previous information):根据前面确定的顺序检测第一个报告RX Error Counter >0 的端口:在网络中定位第一个报告RX Error的故障点:报告无效错误计数器不为零的第一个端口 → 极有可能就是故障点。15.在故障点采取什么措施?在上页定位到故障点 previously located 后,应进行以下操作 :检查与上个从站之间的连接电缆:EtherCAT网线的走向是否靠近电源线或者干扰源?是否自制电缆的接头做工很差?电缆的屏蔽层是否接地良好?检查故障点的站和前一个从站:是否供电不足 (供给本站的电流太小, 例如:EBUS 电流)?两个从站的接地点不是等电位?试着替换该从站和前一个从站,或者交换二者的顺序,以查看错误是跟随某个从站还 是出现在原先的位置。对于 EMC 干扰, 应该会导致 RX 和 CRC 错误都有增加 (即使二者增加的机率可能不同), 因为外部干扰不可能与通讯同步,于是在Ethernet 数据帧内部和外部都会破坏数据。完全不平衡的计数值 (RX错误很多,而没有CRC错误,或者很CRC错误而没有RX错误)可能意味着其中一个从站的内部硬件错误。16.深入了解 - CRC 错误的转发机制部分从站还额外支持 转发CRC错误计数器(Forwarded CRC Error Counters): 第1个检查出CRC错误的从站,其CRC 错误计数器(Register 0x0300)增加,第2个及之后再检查出CRC错误的从站则增加其转发CRC错误计数器(Register 0x0308)而CRC 错误计数器保持不变。并非所有从站都支持 转发CRC错误计数器(Forwarded CRC Error Counters) 功能 (该特性为可选项) ,所以该计数应视为补充信息: 有助于定位出错的第1个设备,但不是关键指标。17.深入了解 – 转发CRC错误的计数器TwinCAT 中, EtherCAT主站的 Online 页面总是以 word-oriented 的方式显示计数值,所以转发CRC错误计数器( Forwarded CRC Error Counter )的说明如下:18.主站错误计数此外,EtherCAT 主站 也提供硬件错误 计数:EtherCAT 主站支持两种不同的错误计数器 :Rx Errors: 与从站侧的 RX 错误计数器类似,由网卡统计符号错误的次数 (发生在数据帧内和数据帧外的错误).Lost 数据帧: 由于EtherCAT闭环在某处中断未能返回主站的数据帧和返回了但CRC校验错误的数据帧 TwinCAT 都视作丢失的“lost“。在TwinCAT中,如果丢失一个数据帧,则该数据帧包含的所有数据报文(Datagram,即Sync Unit同步单元)都会报Working Counter 错误,显示为所有从站的WcState为Invalid。分别考虑不同的数据帧类型:Cyclic: 周期性数据帧 发送要交换的过程数据( Process Data):Queued: 排队等候的数据帧,包括所有非周期性的数据帧: 邮箱 Mailbox, 状态机 State Machine, 注册字访问 Register access19.在线查看拓扑结构大部分硬件诊断信息,可以在 Topology View 界面监视Topology View 是个 ActiveX 插件,可以导出到任何独立于TwinCAT 开发环境的 Windows 应用。六、Software Diagnostics 软件诊断1.软件层面的错误 – EtherCAT 状态机软件层面的诊断信息,通常与EtherCAT 状态机操作有关: 一旦从站不能按主站要求进入正确的状态, 就会在从站的注册字(Register 0x0134)中报告AL状态代码(AL Status Code)。在 TwinCAT Logger 中也会显示状态机错误:TwinCAT 默认总是试图清除状态机错误,并且把所有从站切回OP状态。此时, 要在主站的Advanced Settings中取消选中该标记。2.状态机切换异常( Unexpected State Transitions )的简单监视在EtherCAT主站的Online页面可以监视从站状态机异常切换的次数,只要在主站的Advanced Setting中启用该计数即可显示:此计数表示与从站的状态机切换异常的次数(1表示首次切换,>1表示在运行期间至少出现过1 次状态切换异常)。3.EtherCAT 状态机错误的类型EtherCAT 状态机错误可以归为2个大类:初始化错误 (启动时从站不能进入OP状态): 状态机切换过程中,主站根据 ESI 文件的内容向从站发送初始化命令. 如果从站检测到一个或者几个 start-up 参数无效,就会拒绝相应的状态机切换。典型 的初始化错误:此时 Register 0x0134 的值显示为:0x0003 : Invalid Device Setup (BK1xxx上配置的KL模块顺序不正确)0x001D : Invalid Output Configuration (配置的输出过程数据无效)0x001E : Invalid Input Configuration (配置的输入过程数据无效)0x0035 : Invalid Sync Cycle Time (在 DC 模式中设置的Cycle Time不支持)运行时错误 (从站退出OP到更低级的状态): 配置正确的从站成功进入OP状态以后,在运行过程中检测到错误,并因此执行切换到更低级的状态。典型的运行时错误:此时 Register 0x0134 的值显示为:0x001A : Synchronization error (网络的抖动导致从站的同步丢失)0x001B : Sync manager watchdog (从站未接收到周期性数据的时间,持续超过了watchdog时间)0x002C : Fatal SYNC error (ESC 再未收到 SYNC 硬件中断)4.发生初始化错误 – 怎么办?从站的 ESI 文件应包含TwinCAT在网络中正确配置该从站所需要的全部信息。如果使用从ESI读取的默认设置来激活配置 (而不做任何手动修改), 从站应该能进入OP状态而不报错。如果发生了初始化错误:确保 ESI 文件复制到了 包含所有从站描述文件的TwinCAT统一路径(ESI 文件中的ProductCode 和 Revision Number 与CoE对象 0x1018 中显示的信息相匹配)。检查从站的默认设置是否改动过,如果改过就删除该从站再在TwinCAT配置中手动添加。(以恢复默认设置)对模块化的从站(For modular slaves) ,检查“Slots” 页面配置的模块与实际连接的模块在型号、数量、顺序上是否严格一致。对具有分布时钟同步功能的从站设备(For DC-Synchronous devices),检查主站的Jitter或者Sync Shift Time的设置是否会妨碍从站正确实现DC同步。如果是这种情况 ,只是检查并不能解决问题,必须联系从站的制造商。5.发生运行时错误 – 怎么办?从站成功进入OP状态以后,在运行时不会无故退出OP状态。如果发生了运行时错误:如果从站发生了 watchdog 错误,检查TwinCAT 软件任务 (PLC 程序, NC 任务, …)是否正确运行,因为在TwinCAT中总是由上述任务触发数据帧的周期性发送和接收。检查主站设备的Jitter表现(抖动范围)是否能证明发生了同步丢失。(最大的Jitter超过通讯周期的20-30%时,很容易发生同步错误)。检查是否发生了硬件错误,比如物理连接丢失,这种错误可能间接导致Watchdog动作,或 者同步丢失 ( 参考“物理层问题的硬件诊断 ”)。如果是这种情况 ,只是检查并不能解决问题,使用 Wireshark 进行追踪会是个有用的办法。6.保存和导出软件错误状态机错误保存在 Windows Log 中,可以导出,以便在即使TwinCAT Logger已经关闭或者不可用的时候,还可以进一步分析:7.历史诊断信息(Diagnose History Object)对于所有应用相关的错误,部分 CoE从站设备支持“历史诊断信息”功能 (Diagnosis History Object ) Register 0x10F3.如果从站支持该功能,TwinCAT 就会额外显示一个页面 “Diag History” :8.邮箱协议错误(Mailbox Protocol Errors)邮箱协议错误( Mailbox protocol errors )是一个指定类的一般性软件错误,它不是厂家自定义的,不影响 EtherCAT 状态机,不会阻止也不会导致意外的状态切换。仅当执行某个特定的邮箱协议所禁止的动作时,才会发生邮箱协议错误。在 ETG.1000.6 规范中,公布了每个邮箱协议支持的错误代码及描述信息。9.发生了邮箱协议错误(Mailbox Protocol Errors )– 怎么办?根据特定的邮箱协议,可能的错误原因是:•CoE-主站试图读写从站的对象字典(Object Dictionary)中并不存在的对象-主站试图对从站的某个“只读” 对象执行“写入”操作。-主站试图以“完全访问”的方式访问从站的某个对象,而从站并不支持该功能。•FoE-文件名错误 (例如, 缺少扩展名*.xxx).-从站需要密码, 但未被正确设置-文件大小超出了从站能接受的范围-从站不在 Bootstrap 状态•EoE-主站试图把从站的 IP-Add(Internal Use)ress 配置为末位为0的值(比如“x.y.z.0”),而EoE从站的Tcp/Ip 协议栈拒绝此设置。注意:•TwinCAT 仅在以下时段 读/写 CoE 参数: -在初始化阶段(Startup 命令) -CoE-Online 页面打开时•如果错误信息显示TwinCAT试图间歇性地读写CoE参数,很可能这是PLC程序的动作。七、TwinCAT PLC 中编写EtherCAT 诊断程序1.在PLC程序中系统地诊断 EtherCAT 状态对于EtherCAT 网络, TwinCAT 自动提供了大量诊断信息,可以在PLC程序中用于检测总线通讯的错误, 以便自动做出响应并报告给用户。用户总是倾向于在PLC程序中实现最少的EtherCAT诊断,因为这样有助于通讯错误发生时节约大量的操作时间。TwinCAT PLC 程序可以混合使用 2 种不同的诊断信息 :周期性信息 : 默认包含在EtherCAT网络的周期性过程映像数据中的 输入数据, 可以直接映射到相应的PLC输入变量 (AT %I*).非周期性信息 : PLC程序调用默认库文件(TcEtherCAT.lib)中指定的功能块,可以获取这些非周期性的EtherCAT诊断信息 。2.TwinCAT 中的周期性诊断信息注意:至少所有从站的 WcState 和 State 变量应链接到 PLC 程序,以便应用程序可以对 EtherCAT 进行最基本的诊断。3.周期性信息 - FrmXWcState 变量允许 PLC 检查每个报文的 Working Counter 信息:每个配置的Frame都具有一个16位的诊断变量 FrmXWcStateFrmXWcState 的每个位对应Frame中的特定报文如果对应报文的Working Counter错误,这个位就会变为TRUE4.周期性信息 - WcState 变量这是每个从站的过程数据中都具有一个布尔型变量如果报文的Working Counter 错误,报文中所有从站的WcState 变量都会被置位,所以,如果一个从站的 WcState = 1, 也并不表示它本身发生了错误。 (内部使用) 进一步的信息需要查看这些 WcState 为 1 的从站的16位状态变量 State5.周期性信息 - State 变量EtherCAT Master汇总从网络收集的诊断信息,周期性地更新State变量,对应几种错误情况:6.周期性信息 – State 变量状态变量报告的错误诊断信息如下:7.非周期性信息 – TcEtherCAT PLC Library在TC2和TC3的默认安装中都免费提供TcEtherCAT.lib库, 该库包含若干功能块,可以对EtherCAT网络进行非周期 性诊断Frame 分析CRC 分析从站识别配置从站的数量和列表实际从站的数量和列表该库原则上允许PLC程序自动读取在TwinCAT开发环境中 在线显示的所有信息。功能块FB_EcGetSlaveTopologyInfo功能块FB_EcGetSlaveTopologyInfo返回关于不同从站的端口如何相互连接的信息,以及(配置的)网络拓扑结 构的信息,(如果配置了热连接组,则它们将列在阵列的末尾)。功能块FB_EcGetConfSlaves功能块 TwinCAT 离线配置,知道 EtherCAT 网络包含哪些从站。功能块 FB_ecgetscannedsaves功能块 FB_ecgetscannedsaves 使 PLC 可 以 获 取EtherCAT网络在线检测的实际从站信息,以便和使用FB_EcGetConfSlaves 获得的离线配置的从站信息进行比较。功能块 FB_ecgetscannedsaves功能块FB_ecgetallslavercerrors可以周期性调用,以判断一个或多个从站是否报告CRC错误。这样就可以只对 这些出错的从站调用FB_ecgetslavecercerrorex,以获取进一步的故障信息。功能块FB_ecgetslavecercerrorex功能块 FB_ecgetslavecercerrorex 使 PLC 可 以 获 取EtherCAT主站记录的特定从站的CRC错误信息,这些信息与TwinCAT 开发环境中的 EtherCAT 监视界面显示的信息一致。功能块FB_EcMasterFrameStatistics功能块 FB_EcMasterFrameStatistics 使PLC可以获取EtherCAT主站检测到的Frame丢失等情况,这些信息与TwinCAT 开发环境中的 EtherCAT 监视界面显示的信息一致。功能块FB_EcGetAllSlaveAbnormalStateChanges功能块FB_EcGetAllSlaveAbnormalStateChanges,统计每个从站 从 OP 退至 SafeOP 的异常状态切换,但并不报告每次异常切换时相关的特定AL 状态码。功能块FB_EcGetLastProtErrInfo功能块 FB_EcGetLastProtErrInfo 允许覆盖上一次邮箱协议错误 Mailbox protocol error (例如, CoE协议的SDO退出代码).对同一从站的下一次正确邮箱访问会清除此前记录错误信息的内存区。八、附件:使用 Wireshark 进行诊断1.如果软件诊断还不够 – 使用 WiresharkWireshark 并不是用以取代TwinCAT中的诊断功能 。对于用户来说,应当在使用了其它诊断方法都无法找到故障点的时候,才使用这个“终极武器”。使用ET2000 可以在Wireshark中获得最好的捕捉效果为了执行 Wireshark 抓包,有多种不同的硬件配置。2.Wireshark 抓包的硬件配置 1不支持 Windows CE没有精确的时间戳3.Wireshark 抓包的硬件配置 2不支持 Windows CE有精确的时间戳4.Wireshark 抓包的硬件配置 3支持 Windows CE有精确的时间戳5.Wireshark 示例Wireshark 允许追踪每个 EtherCAT 数据帧的 list, structure and content of (在一轮捕捉过程中,每个数据帧会被捕获两次!).下图显示了捕获的一个周期性数据帧:6.Wireshark – 时间戳协议( 仅当使用ET2000时 )使用ET2000时,为了在Wireshark中获取到极为精确的时间戳(time-stamping)信息, 应当启用对ESL协议的解析功能。Wireshark Version 2 支持此功能。7.Wireshark – 时间戳协议( 仅当使用ET2000时 )…在早期的 Wireshark Version 1中操作如下:8.Wireshark – 显示时间的格式使用Wireshark追踪时,用户可以选择最合适的 时间信息 显示格式:9.Wireshark – 部分过滤选项(Filter Options)捕获的数据帧可以使用过滤功能,可用的过滤选项包括:仅捕获周期性数据帧(Cyclic Frame)Filter: (ecat.cmd == 0x0a) || (ecat.cmd == 0x0b) || (ecat.cmd == 0x0c)仅捕获邮箱通讯(mailbox communication)Filter: ecat_mailbox Filter: ecat_mailbox.coe Filter: ecat_mailbox.soe Filter: ecat_mailbox.foe Filter: ecat_mailbox.eoe仅访问特定的注册字或者注册字区间 (register or register range)Filter: ecat.ado == EtherCAT Diagnostics 诊断 - 知乎首发于深入浅出之Beckhoff切换模式写文章登录/注册EtherCAT Diagnostics 诊断噜啦啦学而时习之,不易悦乎一、EtherCAT 错误是怎么检测到的?EtherCAT 通常具有“即扫即用”的特性,扫描网络、启动系统,所有组件就运行起来了。绝大多数情况下不需要设置任何参数。发现EtherCAT网络的通讯问题,典型的情况是因为以下原因:机器停止工作,或者控制项目 (PLC 程序, NC 任务…) 接收到的数据值明显与实测值不一致。示波器测到信号为True,而PLC变量值为False.在TwinCAT项目中显示了错误(典型的情况是在Master Online页面或者TwinCAT Logger)二、EtherCAT 网络中的错误类型能影响到EtherCAT网络的错误分为2大类:1.硬件错误物理介质中断:数据帧无法达到所有从站,或者根本不能回到主站。信息破坏: 数据帧到达网络中的所有从站并回到了主站,但有一些内容改变了。2.软件错误启动时从站达不到OP状态,因为来自主站的一个或多个初始化的命令被检测到不正确由于在操作过程中检测到错误,一个正常工作的从站突然脱离OP状态EtherCAT 分别从硬件和软件层面提供了丰富的诊断信息, 诊断信息可以按下图归类:三、周期性同步诊断周期性同步诊断 – Working CounterWorking Counter 是和过程数据(Process Data)一起的周期性送回主站的唯一诊断信息,所以这是最早能被主站和用户程序检测到的报警标记。一个EtherCAT数据帧中的每个数据报文都以一个16位的Working Counter (WKC)结尾,WKC 每经过一个数据报文中指定的从站就会递增,递增的原则如下:Read-only 命令(xRD): 如果从站内存可读,则 WKC+1.Write-only 命令(xWR): 如果从站内存可写,则 WKC+1.Read+Write 命令(xRW): 如果从站内存可读 WKC+1,可写则 WKC+2 (i.e. 如果读写都成功则 WKC+3).1.主站检查返回的每个数据报文的WKC值返回主站的数据报文中的WKC 当前值 = 预期值 →WKC 有效,数据报文中的输入数据转发给控制程序(PLC, NC, …)每个总线周期主站都会验证 Working Counter.返回主站的数据报文中的WKC 当前值 ≠ 预期值 →WKC 无效,数据报文中的输入数据被丢弃 (PLC/NC 使用旧的数据)本页是WKC验证有效的情况验证的结果就在每个同步单元Sync Unit的从站的WcState信息中标记,验证成功则WcState为0,验证失败则WcState为1这就是为什么一个同步单元Sync Unit会共享同一个WcState标记,而任一从站读写不成功都会导致整个数据报文都无效。读写不成功的原因:从站没有成功增加WKC,有可能因为物理上数据帧就没有到达,或者因为它不在OP状态,或者其它可能的原因。在最新版的TwinCAT 3.1中,可以把单个从站(左图)或者全部网络从站(右图)配置为:主站把 无效的输入数据全部置 0 而不是废弃之。这个功能更加危险,如果开发人员考虑不周,可能性会引起程序误动作。慎用!2.Working Counter 相关信息:很少能检测到具体是哪个或者哪些从站没有成功处理数据报文(数据报文中指定地址的从站没能成功增加数据报文的WKC)。不会报告错误原因(从站没有成功增加WKC,有可能因为物理上数据帧就没有到达,或者因为它不在OP状态,或者其它可能的原因)。WKC与数据帧同步到达,主站以最快的速度作出故障响应,立即向控制程序或者用户提供一个故障标记位。WKC的有效标记位通常还需要与硬件或者软件诊断信息同时使用,这些诊断信息可以 由主站发送命令读取回来,并帮助定位故障位置和故障原因。Working Counter 的主要目的是立即检测出通讯错误, (i.e. 为了主站快速做出反应), 而不是为了精准分析通讯错误四、Working Counter 和 Sync Units(WKC和同步单元)1.SyncUnits(同步单元) 把从站分为不同的组,每个组使用不同的数据报文,所以每个同步单元具有独立的 WKC。对于伺服驱动器,为了精确定位故障点,可以把每个伺服都设置为独立的同步单元。对于IO模块,可能把一个耦合器及所带的IO模块,配置为一个同步单元。为了优化的目的,Sync Unit 的配置是一个可选的步骤。关于如何分配同步单元,并没有一个黄金法则,因为这是由项目决定的:通常来讲,工作时紧密相关的从站应该分配到同一个同步单 元,而功能相对独立的从站应该放到独立的同步单元。2.在 TwinCAT中指定 SyncUnitTwinCAT为不同的Sync Units(同步单元)创建独立的数据报文,每个报文拥有自己 Working Counter 计数器五、硬件诊断1.硬件状态速览主站的 Online 页面,提供了诊断网络硬件问题的最佳方法系统上电时候可能产生硬件错误,并在TwinCAT中累加,而通常这些错误并不代表有问题。所以,查找可能的硬件问题时,建议清除程序启后的所有错误计数,这样才能监视到运行过程中 发生的实际错误次数。2.初步检查 – 拓朴错误VPRS = Vendor ID, Product Code, Revision Number, Serial Number: 网络启动时主站扫描到的拓朴结构与TwinCAT 配置文件的朴拓结构不符。此类错误的原因,可能只是简单地插错网线。3.初步检查 – 接地和屏蔽发生硬件错误时,建议必须检查EtherCAT网络设备是否共用同一个接地(因为不同接地之间的 环流可能导致数据损坏)。关于EtherCAT网络安装的更完整、全面的描述信息,请参考ETG文档 ETG.160 “EtherCAT Installation Guidelines” ,可以从ETG官网www.ethercat.org.下载。4.初步检查 – EBUS 电流每个 EL 模块都会消耗若干 EBUS 电流,硬件故障发生时,建议必须检查每个I/O组的可用Ebus电流。根据经验,EBUS耗电量大的模块,比如网关模块EL6xxx,在保证其EBUS供电足够的前提下,建议散放在耗电量小的模块( 比如普通DI/DO模块)之间,所以尽量不要几个网关模块挨在一起,也不要紧挨着控制器或者耦合器放置。这是从散热的角度考虑。电流消耗达到限值时,应插入一个 EL94xx 模块。EL9100电源模块不仅可以接入负载电源,还有散热的作用,是最便宜的发热量最小并且能传递EBUS的模块。相同价格的还有EL9186/EL9187等电位分接模块。5.Emergency Scan(紧急扫描)Emergency Scan (紧急扫描)操作,可以发送预定数量的探测数据帧,用于快速测试物理连接 (TwinCAT 应处在 Config Mode):Emergency Scan 能够快速检查EtherCAT网络的永久硬件问题 (设备、电缆或者接头损坏)。用Emergency Scan的方法很难检测到随机的/不定时的干扰,处理这种干扰,应该进行完整的error counter analysis (错误计数分析)。6.EtherCAT 端口的硬件诊断为了进行更深入的分析,从站提供了基于端口的(port-specific)硬件错误计数。EtherCAT 定义了端口号 0 to 3 (端口 0 总是输入口),而TwinCAT 中通常把这些端口依次叫做A 到 D (A 总是输入口),两种端口定义方式是等效的:Master的Online页面,可以在线看到CRC校验错误计数。大部分从站是两个数字,耦合器EK1100有3个数字,而分支模块EK1122则会有4个数字。7.Link Lost (连接丢失)错误计数器有时候两个EtherCAT从站之间的物理连接可能会完全中断:信号完全无法到达相邻的从站。Link loss(连接丢失),最有可能的原因是:电缆或接头损坏(电缆连接),接触弹片不够力或者氧化( Ebus连接)。一个或者几个从站掉电。一个端口上的物理连接中断,从站就会把该端口的 Link Lost Counter(连接丢失计数器) 加 1。Register 内存地址长度含 义0x03101 字节port 0 的连接丢失次数0x03111 字节port 1 的连接丢失次数0x03121 字节port 2 的连接丢失次数0x03131 字节port 3 的连接丢失次数物理连接的状态发生久性或暂时性的改变,在TwinCATLogger消息区中都会报告(并且保存在Windows Log 中)。8.Link/Activity (连接/活动)指示灯连接的永久中断很容易检查出来,不用分析连接丢失计数器( Link Lost Counters ),只需要简单查看主站的Online页面:9.无效帧(Invalid frame)错误计数器有时候,即使硬件信号到达了相邻的从站,接收到的信号却与最初发送的不一致:数据包发生损坏,最有可能的原因是:如果该错误计数零星增加,极可能是由于外部 EMC 干扰。如果该错误计数快速且稳步增加,极可能是由于设备损坏。一个端口上的数据帧破坏,从站就会把该端口的 InvalidFrameCounter(无效帧计数器)加 1。RX 错误计数器 和 CRC 校验错误计数器,都意味着硬件接收到的数据帧损坏,表征信息非常相近,但是二者分别是在从站架构的不同层面检测到的,其含义也略有不同。10.物理介质上的信号传输0和1的逻辑序列要在物理介质上传输,需要编码成预定义的电压/电流 电平(或者电平转换)。电流/电压 值的序列叫做 symbols(符号).基于特定的硬件编码标准,电流/电压值的可能序列并不是全都具有含义,这样就有了 有效符号和无效符号的分别。物理介质上符号是连续传输的,既在Ethernet数据帧内也在数据帧外(数据帧外的符号序列是为了让接收方及时检测到可能发生的连接丢失错误)通讯由符号序列组成携带着有含义的信息的符号序列,就是Ethernet 数据帧。两个Ethernet数据帧之间传输的符号序列,就是 数据帧间隔硬件错误分为两种类型,都在无效帧计数器中累计。RX Errors:个别符号错误 (被特定的硬件解码器识别为无效).在数据帧内部或者外部都可能发生(即使是在没有数据帧传输的时候,每个物理接口都会传输 idle 即表示空闲的符号)→ RX Error Counters (无效帧计数器的高字节)CRC Errors:整个数据帧的循环冗余校验(CRC)错误.在数据帧内发生 (只有Ethernet 数据帧才进行校验).→ CRC Error Counters (无效帧计数器的低字节)11.RX 和 CRC 错误的类比硬件通讯介质上的数据传输可以用标准的语言书写来打个比方:RX 和 CRC 错误 在解释上具有细微的差别,例如:CRC校验只检查数据帧(Frame)内语义是否正常,但并不能发现网络帧间隔的非法字符。RX校验所有字符是否非法。CRC 错误 – 什么情况下会检测出来?12.链接丢失(Lost Link)错误的简单监视在EtherCAT主站的Online页面可以监视到链接丢失(Link Lost)只要在主站的Advanced Setting中启用累加计数“Show Change Counters”即可:添加这些操作是不需要重启TwinCAT软件的此计数表示与从站的物理连接丢失的次数(1表示首次连接,>1表示在运行期间至少出现过1次 物理连接丢失)。在EtherCAT主站的Online页面可以监视到数据帧错误(Frame error)即从站的RX Error计数寄存器的低字节,错误计数如下:从站的Frame Error计数器中保存着自TwinCAT启动以来的累计出错次数,点击“Clear CRC”所有从站的CRC计数清零,并重新累计。13.怎样正确跟踪硬件错误计数为了追踪硬件错误计数,建议进行以下设置:在主站的Advanced Setting中 不要勾选 “Log CRC Counters” 标记。在Online视图中添加注册字 0x0300÷0x030A 和 0x0310÷0x0312。激活并重启 TwinCAT 配置:重启TwinCAT后,清空所有错误计数:TwinCAT 中,EtherCAT主站的 Online 页面总是以 word-oriented 的方式显示计数值。等待,直到错误补检测到:捕捉到的错误次数越多越好 (关闭项目或者重启TwinCAT就会清除计数,而最小化项目或者切换窗口则不会清除计数). 记录的值可以导出,以供进一步分析。错误计数采集完成后,记得应把 “Log CRC Counters” 重新勾选上。(TwinCAT 需要重启).14.怎样定位一个错误?为了从显示的CRC错误计数分析出网络中的故障点分布情况,建议:逻辑上沿着网络数据帧传播的方向确定从站端口执行CRC校验的顺序(根据 前述信息 previous information):根据前面确定的顺序检测第一个报告RX Error Counter >0 的端口:在网络中定位第一个报告RX Error的故障点:报告无效错误计数器不为零的第一个端口 → 极有可能就是故障点。15.在故障点采取什么措施?在上页定位到故障点 previously located 后,应进行以下操作 :检查与上个从站之间的连接电缆:EtherCAT网线的走向是否靠近电源线或者干扰源?是否自制电缆的接头做工很差?电缆的屏蔽层是否接地良好?检查故障点的站和前一个从站:是否供电不足 (供给本站的电流太小, 例如:EBUS 电流)?两个从站的接地点不是等电位?试着替换该从站和前一个从站,或者交换二者的顺序,以查看错误是跟随某个从站还 是出现在原先的位置。对于 EMC 干扰, 应该会导致 RX 和 CRC 错误都有增加 (即使二者增加的机率可能不同), 因为外部干扰不可能与通讯同步,于是在Ethernet 数据帧内部和外部都会破坏数据。完全不平衡的计数值 (RX错误很多,而没有CRC错误,或者很CRC错误而没有RX错误)可能意味着其中一个从站的内部硬件错误。16.深入了解 - CRC 错误的转发机制部分从站还额外支持 转发CRC错误计数器(Forwarded CRC Error Counters): 第1个检查出CRC错误的从站,其CRC 错误计数器(Register 0x0300)增加,第2个及之后再检查出CRC错误的从站则增加其转发CRC错误计数器(Register 0x0308)而CRC 错误计数器保持不变。并非所有从站都支持 转发CRC错误计数器(Forwarded CRC Error Counters) 功能 (该特性为可选项) ,所以该计数应视为补充信息: 有助于定位出错的第1个设备,但不是关键指标。17.深入了解 – 转发CRC错误的计数器TwinCAT 中, EtherCAT主站的 Online 页面总是以 word-oriented 的方式显示计数值,所以转发CRC错误计数器( Forwarded CRC Error Counter )的说明如下:18.主站错误计数此外,EtherCAT 主站 也提供硬件错误 计数:EtherCAT 主站支持两种不同的错误计数器 :Rx Errors: 与从站侧的 RX 错误计数器类似,由网卡统计符号错误的次数 (发生在数据帧内和数据帧外的错误).Lost 数据帧: 由于EtherCAT闭环在某处中断未能返回主站的数据帧和返回了但CRC校验错误的数据帧 TwinCAT 都视作丢失的“lost“。在TwinCAT中,如果丢失一个数据帧,则该数据帧包含的所有数据报文(Datagram,即Sync Unit同步单元)都会报Working Counter 错误,显示为所有从站的WcState为Invalid。分别考虑不同的数据帧类型:Cyclic: 周期性数据帧 发送要交换的过程数据( Process Data):Queued: 排队等候的数据帧,包括所有非周期性的数据帧: 邮箱 Mailbox, 状态机 State Machine, 注册字访问 Register access19.在线查看拓扑结构大部分硬件诊断信息,可以在 Topology View 界面监视Topology View 是个 ActiveX 插件,可以导出到任何独立于TwinCAT 开发环境的 Windows 应用。六、Software Diagnostics 软件诊断1.软件层面的错误 – EtherCAT 状态机软件层面的诊断信息,通常与EtherCAT 状态机操作有关: 一旦从站不能按主站要求进入正确的状态, 就会在从站的注册字(Register 0x0134)中报告AL状态代码(AL Status Code)。在 TwinCAT Logger 中也会显示状态机错误:TwinCAT 默认总是试图清除状态机错误,并且把所有从站切回OP状态。此时, 要在主站的Advanced Settings中取消选中该标记。2.状态机切换异常( Unexpected State Transitions )的简单监视在EtherCAT主站的Online页面可以监视从站状态机异常切换的次数,只要在主站的Advanced Setting中启用该计数即可显示:此计数表示与从站的状态机切换异常的次数(1表示首次切换,>1表示在运行期间至少出现过1 次状态切换异常)。3.EtherCAT 状态机错误的类型EtherCAT 状态机错误可以归为2个大类:初始化错误 (启动时从站不能进入OP状态): 状态机切换过程中,主站根据 ESI 文件的内容向从站发送初始化命令. 如果从站检测到一个或者几个 start-up 参数无效,就会拒绝相应的状态机切换。典型 的初始化错误:此时 Register 0x0134 的值显示为:0x0003 : Invalid Device Setup (BK1xxx上配置的KL模块顺序不正确)0x001D : Invalid Output Configuration (配置的输出过程数据无效)0x001E : Invalid Input Configuration (配置的输入过程数据无效)0x0035 : Invalid Sync Cycle Time (在 DC 模式中设置的Cycle Time不支持)运行时错误 (从站退出OP到更低级的状态): 配置正确的从站成功进入OP状态以后,在运行过程中检测到错误,并因此执行切换到更低级的状态。典型的运行时错误:此时 Register 0x0134 的值显示为:0x001A : Synchronization error (网络的抖动导致从站的同步丢失)0x001B : Sync manager watchdog (从站未接收到周期性数据的时间,持续超过了watchdog时间)0x002C : Fatal SYNC error (ESC 再未收到 SYNC 硬件中断)4.发生初始化错误 – 怎么办?从站的 ESI 文件应包含TwinCAT在网络中正确配置该从站所需要的全部信息。如果使用从ESI读取的默认设置来激活配置 (而不做任何手动修改), 从站应该能进入OP状态而不报错。如果发生了初始化错误:确保 ESI 文件复制到了 包含所有从站描述文件的TwinCAT统一路径(ESI 文件中的ProductCode 和 Revision Number 与CoE对象 0x1018 中显示的信息相匹配)。检查从站的默认设置是否改动过,如果改过就删除该从站再在TwinCAT配置中手动添加。(以恢复默认设置)对模块化的从站(For modular slaves) ,检查“Slots” 页面配置的模块与实际连接的模块在型号、数量、顺序上是否严格一致。对具有分布时钟同步功能的从站设备(For DC-Synchronous devices),检查主站的Jitter或者Sync Shift Time的设置是否会妨碍从站正确实现DC同步。如果是这种情况 ,只是检查并不能解决问题,必须联系从站的制造商。5.发生运行时错误 – 怎么办?从站成功进入OP状态以后,在运行时不会无故退出OP状态。如果发生了运行时错误:如果从站发生了 watchdog 错误,检查TwinCAT 软件任务 (PLC 程序, NC 任务, …)是否正确运行,因为在TwinCAT中总是由上述任务触发数据帧的周期性发送和接收。检查主站设备的Jitter表现(抖动范围)是否能证明发生了同步丢失。(最大的Jitter超过通讯周期的20-30%时,很容易发生同步错误)。检查是否发生了硬件错误,比如物理连接丢失,这种错误可能间接导致Watchdog动作,或 者同步丢失 ( 参考“物理层问题的硬件诊断 ”)。如果是这种情况 ,只是检查并不能解决问题,使用 Wireshark 进行追踪会是个有用的办法。6.保存和导出软件错误状态机错误保存在 Windows Log 中,可以导出,以便在即使TwinCAT Logger已经关闭或者不可用的时候,还可以进一步分析:7.历史诊断信息(Diagnose History Object)对于所有应用相关的错误,部分 CoE从站设备支持“历史诊断信息”功能 (Diagnosis History Object ) Register 0x10F3.如果从站支持该功能,TwinCAT 就会额外显示一个页面 “Diag History” :8.邮箱协议错误(Mailbox Protocol Errors)邮箱协议错误( Mailbox protocol errors )是一个指定类的一般性软件错误,它不是厂家自定义的,不影响 EtherCAT 状态机,不会阻止也不会导致意外的状态切换。仅当执行某个特定的邮箱协议所禁止的动作时,才会发生邮箱协议错误。在 ETG.1000.6 规范中,公布了每个邮箱协议支持的错误代码及描述信息。9.发生了邮箱协议错误(Mailbox Protocol Errors )– 怎么办?根据特定的邮箱协议,可能的错误原因是:•CoE-主站试图读写从站的对象字典(Object Dictionary)中并不存在的对象-主站试图对从站的某个“只读” 对象执行“写入”操作。-主站试图以“完全访问”的方式访问从站的某个对象,而从站并不支持该功能。•FoE-文件名错误 (例如, 缺少扩展名*.xxx).-从站需要密码, 但未被正确设置-文件大小超出了从站能接受的范围-从站不在 Bootstrap 状态•EoE-主站试图把从站的 IP-Add(Internal Use)ress 配置为末位为0的值(比如“x.y.z.0”),而EoE从站的Tcp/Ip 协议栈拒绝此设置。注意:•TwinCAT 仅在以下时段 读/写 CoE 参数: -在初始化阶段(Startup 命令) -CoE-Online 页面打开时•如果错误信息显示TwinCAT试图间歇性地读写CoE参数,很可能这是PLC程序的动作。七、TwinCAT PLC 中编写EtherCAT 诊断程序1.在PLC程序中系统地诊断 EtherCAT 状态对于EtherCAT 网络, TwinCAT 自动提供了大量诊断信息,可以在PLC程序中用于检测总线通讯的错误, 以便自动做出响应并报告给用户。用户总是倾向于在PLC程序中实现最少的EtherCAT诊断,因为这样有助于通讯错误发生时节约大量的操作时间。TwinCAT PLC 程序可以混合使用 2 种不同的诊断信息 :周期性信息 : 默认包含在EtherCAT网络的周期性过程映像数据中的 输入数据, 可以直接映射到相应的PLC输入变量 (AT %I*).非周期性信息 : PLC程序调用默认库文件(TcEtherCAT.lib)中指定的功能块,可以获取这些非周期性的EtherCAT诊断信息 。2.TwinCAT 中的周期性诊断信息注意:至少所有从站的 WcState 和 State 变量应链接到 PLC 程序,以便应用程序可以对 EtherCAT 进行最基本的诊断。3.周期性信息 - FrmXWcState 变量允许 PLC 检查每个报文的 Working Counter 信息:每个配置的Frame都具有一个16位的诊断变量 FrmXWcStateFrmXWcState 的每个位对应Frame中的特定报文如果对应报文的Working Counter错误,这个位就会变为TRUE4.周期性信息 - WcState 变量这是每个从站的过程数据中都具有一个布尔型变量如果报文的Working Counter 错误,报文中所有从站的WcState 变量都会被置位,所以,如果一个从站的 WcState = 1, 也并不表示它本身发生了错误。 (内部使用) 进一步的信息需要查看这些 WcState 为 1 的从站的16位状态变量 State5.周期性信息 - State 变量EtherCAT Master汇总从网络收集的诊断信息,周期性地更新State变量,对应几种错误情况:6.周期性信息 – State 变量状态变量报告的错误诊断信息如下:7.非周期性信息 – TcEtherCAT PLC Library在TC2和TC3的默认安装中都免费提供TcEtherCAT.lib库, 该库包含若干功能块,可以对EtherCAT网络进行非周期 性诊断Frame 分析CRC 分析从站识别配置从站的数量和列表实际从站的数量和列表该库原则上允许PLC程序自动读取在TwinCAT开发环境中 在线显示的所有信息。功能块FB_EcGetSlaveTopologyInfo功能块FB_EcGetSlaveTopologyInfo返回关于不同从站的端口如何相互连接的信息,以及(配置的)网络拓扑结 构的信息,(如果配置了热连接组,则它们将列在阵列的末尾)。功能块FB_EcGetConfSlaves功能块 TwinCAT 离线配置,知道 EtherCAT 网络包含哪些从站。功能块 FB_ecgetscannedsaves功能块 FB_ecgetscannedsaves 使 PLC 可 以 获 取EtherCAT网络在线检测的实际从站信息,以便和使用FB_EcGetConfSlaves 获得的离线配置的从站信息进行比较。功能块 FB_ecgetscannedsaves功能块FB_ecgetallslavercerrors可以周期性调用,以判断一个或多个从站是否报告CRC错误。这样就可以只对 这些出错的从站调用FB_ecgetslavecercerrorex,以获取进一步的故障信息。功能块FB_ecgetslavecercerrorex功能块 FB_ecgetslavecercerrorex 使 PLC 可 以 获 取EtherCAT主站记录的特定从站的CRC错误信息,这些信息与TwinCAT 开发环境中的 EtherCAT 监视界面显示的信息一致。功能块FB_EcMasterFrameStatistics功能块 FB_EcMasterFrameStatistics 使PLC可以获取EtherCAT主站检测到的Frame丢失等情况,这些信息与TwinCAT 开发环境中的 EtherCAT 监视界面显示的信息一致。功能块FB_EcGetAllSlaveAbnormalStateChanges功能块FB_EcGetAllSlaveAbnormalStateChanges,统计每个从站 从 OP 退至 SafeOP 的异常状态切换,但并不报告每次异常切换时相关的特定AL 状态码。功能块FB_EcGetLastProtErrInfo功能块 FB_EcGetLastProtErrInfo 允许覆盖上一次邮箱协议错误 Mailbox protocol error (例如, CoE协议的SDO退出代码).对同一从站的下一次正确邮箱访问会清除此前记录错误信息的内存区。八、附件:使用 Wireshark 进行诊断1.如果软件诊断还不够 – 使用 WiresharkWireshark 并不是用以取代TwinCAT中的诊断功能 。对于用户来说,应当在使用了其它诊断方法都无法找到故障点的时候,才使用这个“终极武器”。使用ET2000 可以在Wireshark中获得最好的捕捉效果为了执行 Wireshark 抓包,有多种不同的硬件配置。2.Wireshark 抓包的硬件配置 1不支持 Windows CE没有精确的时间戳3.Wireshark 抓包的硬件配置 2不支持 Windows CE有精确的时间戳4.Wireshark 抓包的硬件配置 3支持 Windows CE有精确的时间戳5.Wireshark 示例Wireshark 允许追踪每个 EtherCAT 数据帧的 list, structure and content of (在一轮捕捉过程中,每个数据帧会被捕获两次!).下图显示了捕获的一个周期性数据帧:6.Wireshark – 时间戳协议( 仅当使用ET2000时 )使用ET2000时,为了在Wireshark中获取到极为精确的时间戳(time-stamping)信息, 应当启用对ESL协议的解析功能。Wireshark Version 2 支持此功能。7.Wireshark – 时间戳协议( 仅当使用ET2000时 )…在早期的 Wireshark Version 1中操作如下:8.Wireshark – 显示时间的格式使用Wireshark追踪时,用户可以选择最合适的 时间信息 显示格式:9.Wireshark – 部分过滤选项(Filter Options)捕获的数据帧可以使用过滤功能,可用的过滤选项包括:仅捕获周期性数据帧(Cyclic Frame)Filter: (ecat.cmd == 0x0a) || (ecat.cmd == 0x0b) || (ecat.cmd == 0x0c)仅捕获邮箱通讯(mailbox communication)Filter: ecat_mailbox Filter: ecat_mailbox.coe Filter: ecat_mailbox.soe Filter: ecat_mailbox.foe Filter: ecat_mailbox.eoe仅访问特定的注册字或者注册字区间 (register or register range)Filter: ecat.ado == EtherCAT Diagnostics 诊断 - 知乎首发于深入浅出之Beckhoff切换模式写文章登录/注册EtherCAT Diagnostics 诊断噜啦啦学而时习之,不易悦乎一、EtherCAT 错误是怎么检测到的?EtherCAT 通常具有“即扫即用”的特性,扫描网络、启动系统,所有组件就运行起来了。绝大多数情况下不需要设置任何参数。发现EtherCAT网络的通讯问题,典型的情况是因为以下原因:机器停止工作,或者控制项目 (PLC 程序, NC 任务…) 接收到的数据值明显与实测值不一致。示波器测到信号为True,而PLC变量值为False.在TwinCAT项目中显示了错误(典型的情况是在Master Online页面或者TwinCAT Logger)二、EtherCAT 网络中的错误类型能影响到EtherCAT网络的错误分为2大类:1.硬件错误物理介质中断:数据帧无法达到所有从站,或者根本不能回到主站。信息破坏: 数据帧到达网络中的所有从站并回到了主站,但有一些内容改变了。2.软件错误启动时从站达不到OP状态,因为来自主站的一个或多个初始化的命令被检测到不正确由于在操作过程中检测到错误,一个正常工作的从站突然脱离OP状态EtherCAT 分别从硬件和软件层面提供了丰富的诊断信息, 诊断信息可以按下图归类:三、周期性同步诊断周期性同步诊断 – Working CounterWorking Counter 是和过程数据(Process Data)一起的周期性送回主站的唯一诊断信息,所以这是最早能被主站和用户程序检测到的报警标记。一个EtherCAT数据帧中的每个数据报文都以一个16位的Working Counter (WKC)结尾,WKC 每经过一个数据报文中指定的从站就会递增,递增的原则如下:Read-only 命令(xRD): 如果从站内存可读,则 WKC+1.Write-only 命令(xWR): 如果从站内存可写,则 WKC+1.Read+Write 命令(xRW): 如果从站内存可读 WKC+1,可写则 WKC+2 (i.e. 如果读写都成功则 WKC+3).1.主站检查返回的每个数据报文的WKC值返回主站的数据报文中的WKC 当前值 = 预期值 →WKC 有效,数据报文中的输入数据转发给控制程序(PLC, NC, …)每个总线周期主站都会验证 Working Counter.返回主站的数据报文中的WKC 当前值 ≠ 预期值 →WKC 无效,数据报文中的输入数据被丢弃 (PLC/NC 使用旧的数据)本页是WKC验证有效的情况验证的结果就在每个同步单元Sync Unit的从站的WcState信息中标记,验证成功则WcState为0,验证失败则WcState为1这就是为什么一个同步单元Sync Unit会共享同一个WcState标记,而任一从站读写不成功都会导致整个数据报文都无效。读写不成功的原因:从站没有成功增加WKC,有可能因为物理上数据帧就没有到达,或者因为它不在OP状态,或者其它可能的原因。在最新版的TwinCAT 3.1中,可以把单个从站(左图)或者全部网络从站(右图)配置为:主站把 无效的输入数据全部置 0 而不是废弃之。这个功能更加危险,如果开发人员考虑不周,可能性会引起程序误动作。慎用!2.Working Counter 相关信息:很少能检测到具体是哪个或者哪些从站没有成功处理数据报文(数据报文中指定地址的从站没能成功增加数据报文的WKC)。不会报告错误原因(从站没有成功增加WKC,有可能因为物理上数据帧就没有到达,或者因为它不在OP状态,或者其它可能的原因)。WKC与数据帧同步到达,主站以最快的速度作出故障响应,立即向控制程序或者用户提供一个故障标记位。WKC的有效标记位通常还需要与硬件或者软件诊断信息同时使用,这些诊断信息可以 由主站发送命令读取回来,并帮助定位故障位置和故障原因。Working Counter 的主要目的是立即检测出通讯错误, (i.e. 为了主站快速做出反应), 而不是为了精准分析通讯错误四、Working Counter 和 Sync Units(WKC和同步单元)1.SyncUnits(同步单元) 把从站分为不同的组,每个组使用不同的数据报文,所以每个同步单元具有独立的 WKC。对于伺服驱动器,为了精确定位故障点,可以把每个伺服都设置为独立的同步单元。对于IO模块,可能把一个耦合器及所带的IO模块,配置为一个同步单元。为了优化的目的,Sync Unit 的配置是一个可选的步骤。关于如何分配同步单元,并没有一个黄金法则,因为这是由项目决定的:通常来讲,工作时紧密相关的从站应该分配到同一个同步单 元,而功能相对独立的从站应该放到独立的同步单元。2.在 TwinCAT中指定 SyncUnitTwinCAT为不同的Sync Units(同步单元)创建独立的数据报文,每个报文拥有自己 Working Counter 计数器五、硬件诊断1.硬件状态速览主站的 Online 页面,提供了诊断网络硬件问题的最佳方法系统上电时候可能产生硬件错误,并在TwinCAT中累加,而通常这些错误并不代表有问题。所以,查找可能的硬件问题时,建议清除程序启后的所有错误计数,这样才能监视到运行过程中 发生的实际错误次数。2.初步检查 – 拓朴错误VPRS = Vendor ID, Product Code, Revision Number, Serial Number: 网络启动时主站扫描到的拓朴结构与TwinCAT 配置文件的朴拓结构不符。此类错误的原因,可能只是简单地插错网线。3.初步检查 – 接地和屏蔽发生硬件错误时,建议必须检查EtherCAT网络设备是否共用同一个接地(因为不同接地之间的 环流可能导致数据损坏)。关于EtherCAT网络安装的更完整、全面的描述信息,请参考ETG文档 ETG.160 “EtherCAT Installation Guidelines” ,可以从ETG官网www.ethercat.org.下载。4.初步检查 – EBUS 电流每个 EL 模块都会消耗若干 EBUS 电流,硬件故障发生时,建议必须检查每个I/O组的可用Ebus电流。根据经验,EBUS耗电量大的模块,比如网关模块EL6xxx,在保证其EBUS供电足够的前提下,建议散放在耗电量小的模块( 比如普通DI/DO模块)之间,所以尽量不要几个网关模块挨在一起,也不要紧挨着控制器或者耦合器放置。这是从散热的角度考虑。电流消耗达到限值时,应插入一个 EL94xx 模块。EL9100电源模块不仅可以接入负载电源,还有散热的作用,是最便宜的发热量最小并且能传递EBUS的模块。相同价格的还有EL9186/EL9187等电位分接模块。5.Emergency Scan(紧急扫描)Emergency Scan (紧急扫描)操作,可以发送预定数量的探测数据帧,用于快速测试物理连接 (TwinCAT 应处在 Config Mode):Emergency Scan 能够快速检查EtherCAT网络的永久硬件问题 (设备、电缆或者接头损坏)。用Emergency Scan的方法很难检测到随机的/不定时的干扰,处理这种干扰,应该进行完整的error counter analysis (错误计数分析)。6.EtherCAT 端口的硬件诊断为了进行更深入的分析,从站提供了基于端口的(port-specific)硬件错误计数。EtherCAT 定义了端口号 0 to 3 (端口 0 总是输入口),而TwinCAT 中通常把这些端口依次叫做A 到 D (A 总是输入口),两种端口定义方式是等效的:Master的Online页面,可以在线看到CRC校验错误计数。大部分从站是两个数字,耦合器EK1100有3个数字,而分支模块EK1122则会有4个数字。7.Link Lost (连接丢失)错误计数器有时候两个EtherCAT从站之间的物理连接可能会完全中断:信号完全无法到达相邻的从站。Link loss(连接丢失),最有可能的原因是:电缆或接头损坏(电缆连接),接触弹片不够力或者氧化( Ebus连接)。一个或者几个从站掉电。一个端口上的物理连接中断,从站就会把该端口的 Link Lost Counter(连接丢失计数器) 加 1。Register 内存地址长度含 义0x03101 字节port 0 的连接丢失次数0x03111 字节port 1 的连接丢失次数0x03121 字节port 2 的连接丢失次数0x03131 字节port 3 的连接丢失次数物理连接的状态发生久性或暂时性的改变,在TwinCATLogger消息区中都会报告(并且保存在Windows Log 中)。8.Link/Activity (连接/活动)指示灯连接的永久中断很容易检查出来,不用分析连接丢失计数器( Link Lost Counters ),只需要简单查看主站的Online页面:9.无效帧(Invalid frame)错误计数器有时候,即使硬件信号到达了相邻的从站,接收到的信号却与最初发送的不一致:数据包发生损坏,最有可能的原因是:如果该错误计数零星增加,极可能是由于外部 EMC 干扰。如果该错误计数快速且稳步增加,极可能是由于设备损坏。一个端口上的数据帧破坏,从站就会把该端口的 InvalidFrameCounter(无效帧计数器)加 1。RX 错误计数器 和 CRC 校验错误计数器,都意味着硬件接收到的数据帧损坏,表征信息非常相近,但是二者分别是在从站架构的不同层面检测到的,其含义也略有不同。10.物理介质上的信号传输0和1的逻辑序列要在物理介质上传输,需要编码成预定义的电压/电流 电平(或者电平转换)。电流/电压 值的序列叫做 symbols(符号).基于特定的硬件编码标准,电流/电压值的可能序列并不是全都具有含义,这样就有了 有效符号和无效符号的分别。物理介质上符号是连续传输的,既在Ethernet数据帧内也在数据帧外(数据帧外的符号序列是为了让接收方及时检测到可能发生的连接丢失错误)通讯由符号序列组成携带着有含义的信息的符号序列,就是Ethernet 数据帧。两个Ethernet数据帧之间传输的符号序列,就是 数据帧间隔硬件错误分为两种类型,都在无效帧计数器中累计。RX Errors:个别符号错误 (被特定的硬件解码器识别为无效).在数据帧内部或者外部都可能发生(即使是在没有数据帧传输的时候,每个物理接口都会传输 idle 即表示空闲的符号)→ RX Error Counters (无效帧计数器的高字节)CRC Errors:整个数据帧的循环冗余校验(CRC)错误.在数据帧内发生 (只有Ethernet 数据帧才进行校验).→ CRC Error Counters (无效帧计数器的低字节)11.RX 和 CRC 错误的类比硬件通讯介质上的数据传输可以用标准的语言书写来打个比方:RX 和 CRC 错误 在解释上具有细微的差别,例如:CRC校验只检查数据帧(Frame)内语义是否正常,但并不能发现网络帧间隔的非法字符。RX校验所有字符是否非法。CRC 错误 – 什么情况下会检测出来?12.链接丢失(Lost Link)错误的简单监视在EtherCAT主站的Online页面可以监视到链接丢失(Link Lost)只要在主站的Advanced Setting中启用累加计数“Show Change Counters”即可:添加这些操作是不需要重启TwinCAT软件的此计数表示与从站的物理连接丢失的次数(1表示首次连接,>1表示在运行期间至少出现过1次 物理连接丢失)。在EtherCAT主站的Online页面可以监视到数据帧错误(Frame error)即从站的RX Error计数寄存器的低字节,错误计数如下:从站的Frame Error计数器中保存着自TwinCAT启动以来的累计出错次数,点击“Clear CRC”所有从站的CRC计数清零,并重新累计。13.怎样正确跟踪硬件错误计数为了追踪硬件错误计数,建议进行以下设置:在主站的Advanced Setting中 不要勾选 “Log CRC Counters” 标记。在Online视图中添加注册字 0x0300÷0x030A 和 0x0310÷0x0312。激活并重启 TwinCAT 配置:重启TwinCAT后,清空所有错误计数:TwinCAT 中,EtherCAT主站的 Online 页面总是以 word-oriented 的方式显示计数值。等待,直到错误补检测到:捕捉到的错误次数越多越好 (关闭项目或者重启TwinCAT就会清除计数,而最小化项目或者切换窗口则不会清除计数). 记录的值可以导出,以供进一步分析。错误计数采集完成后,记得应把 “Log CRC Counters” 重新勾选上。(TwinCAT 需要重启).14.怎样定位一个错误?为了从显示的CRC错误计数分析出网络中的故障点分布情况,建议:逻辑上沿着网络数据帧传播的方向确定从站端口执行CRC校验的顺序(根据 前述信息 previous information):根据前面确定的顺序检测第一个报告RX Error Counter >0 的端口:在网络中定位第一个报告RX Error的故障点:报告无效错误计数器不为零的第一个端口 → 极有可能就是故障点。15.在故障点采取什么措施?在上页定位到故障点 previously located 后,应进行以下操作 :检查与上个从站之间的连接电缆:EtherCAT网线的走向是否靠近电源线或者干扰源?是否自制电缆的接头做工很差?电缆的屏蔽层是否接地良好?检查故障点的站和前一个从站:是否供电不足 (供给本站的电流太小, 例如:EBUS 电流)?两个从站的接地点不是等电位?试着替换该从站和前一个从站,或者交换二者的顺序,以查看错误是跟随某个从站还 是出现在原先的位置。对于 EMC 干扰, 应该会导致 RX 和 CRC 错误都有增加 (即使二者增加的机率可能不同), 因为外部干扰不可能与通讯同步,于是在Ethernet 数据帧内部和外部都会破坏数据。完全不平衡的计数值 (RX错误很多,而没有CRC错误,或者很CRC错误而没有RX错误)可能意味着其中一个从站的内部硬件错误。16.深入了解 - CRC 错误的转发机制部分从站还额外支持 转发CRC错误计数器(Forwarded CRC Error Counters): 第1个检查出CRC错误的从站,其CRC 错误计数器(Register 0x0300)增加,第2个及之后再检查出CRC错误的从站则增加其转发CRC错误计数器(Register 0x0308)而CRC 错误计数器保持不变。并非所有从站都支持 转发CRC错误计数器(Forwarded CRC Error Counters) 功能 (该特性为可选项) ,所以该计数应视为补充信息: 有助于定位出错的第1个设备,但不是关键指标。17.深入了解 – 转发CRC错误的计数器TwinCAT 中, EtherCAT主站的 Online 页面总是以 word-oriented 的方式显示计数值,所以转发CRC错误计数器( Forwarded CRC Error Counter )的说明如下:18.主站错误计数此外,EtherCAT 主站 也提供硬件错误 计数:EtherCAT 主站支持两种不同的错误计数器 :Rx Errors: 与从站侧的 RX 错误计数器类似,由网卡统计符号错误的次数 (发生在数据帧内和数据帧外的错误).Lost 数据帧: 由于EtherCAT闭环在某处中断未能返回主站的数据帧和返回了但CRC校验错误的数据帧 TwinCAT 都视作丢失的“lost“。在TwinCAT中,如果丢失一个数据帧,则该数据帧包含的所有数据报文(Datagram,即Sync Unit同步单元)都会报Working Counter 错误,显示为所有从站的WcState为Invalid。分别考虑不同的数据帧类型:Cyclic: 周期性数据帧 发送要交换的过程数据( Process Data):Queued: 排队等候的数据帧,包括所有非周期性的数据帧: 邮箱 Mailbox, 状态机 State Machine, 注册字访问 Register access19.在线查看拓扑结构大部分硬件诊断信息,可以在 Topology View 界面监视Topology View 是个 ActiveX 插件,可以导出到任何独立于TwinCAT 开发环境的 Windows 应用。六、Software Diagnostics 软件诊断1.软件层面的错误 – EtherCAT 状态机软件层面的诊断信息,通常与EtherCAT 状态机操作有关: 一旦从站不能按主站要求进入正确的状态, 就会在从站的注册字(Register 0x0134)中报告AL状态代码(AL Status Code)。在 TwinCAT Logger 中也会显示状态机错误:TwinCAT 默认总是试图清除状态机错误,并且把所有从站切回OP状态。此时, 要在主站的Advanced Settings中取消选中该标记。2.状态机切换异常( Unexpected State Transitions )的简单监视在EtherCAT主站的Online页面可以监视从站状态机异常切换的次数,只要在主站的Advanced Setting中启用该计数即可显示:此计数表示与从站的状态机切换异常的次数(1表示首次切换,>1表示在运行期间至少出现过1 次状态切换异常)。3.EtherCAT 状态机错误的类型EtherCAT 状态机错误可以归为2个大类:初始化错误 (启动时从站不能进入OP状态): 状态机切换过程中,主站根据 ESI 文件的内容向从站发送初始化命令. 如果从站检测到一个或者几个 start-up 参数无效,就会拒绝相应的状态机切换。典型 的初始化错误:此时 Register 0x0134 的值显示为:0x0003 : Invalid Device Setup (BK1xxx上配置的KL模块顺序不正确)0x001D : Invalid Output Configuration (配置的输出过程数据无效)0x001E : Invalid Input Configuration (配置的输入过程数据无效)0x0035 : Invalid Sync Cycle Time (在 DC 模式中设置的Cycle Time不支持)运行时错误 (从站退出OP到更低级的状态): 配置正确的从站成功进入OP状态以后,在运行过程中检测到错误,并因此执行切换到更低级的状态。典型的运行时错误:此时 Register 0x0134 的值显示为:0x001A : Synchronization error (网络的抖动导致从站的同步丢失)0x001B : Sync manager watchdog (从站未接收到周期性数据的时间,持续超过了watchdog时间)0x002C : Fatal SYNC error (ESC 再未收到 SYNC 硬件中断)4.发生初始化错误 – 怎么办?从站的 ESI 文件应包含TwinCAT在网络中正确配置该从站所需要的全部信息。如果使用从ESI读取的默认设置来激活配置 (而不做任何手动修改), 从站应该能进入OP状态而不报错。如果发生了初始化错误:确保 ESI 文件复制到了 包含所有从站描述文件的TwinCAT统一路径(ESI 文件中的ProductCode 和 Revision Number 与CoE对象 0x1018 中显示的信息相匹配)。检查从站的默认设置是否改动过,如果改过就删除该从站再在TwinCAT配置中手动添加。(以恢复默认设置)对模块化的从站(For modular slaves) ,检查“Slots” 页面配置的模块与实际连接的模块在型号、数量、顺序上是否严格一致。对具有分布时钟同步功能的从站设备(For DC-Synchronous devices),检查主站的Jitter或者Sync Shift Time的设置是否会妨碍从站正确实现DC同步。如果是这种情况 ,只是检查并不能解决问题,必须联系从站的制造商。5.发生运行时错误 – 怎么办?从站成功进入OP状态以后,在运行时不会无故退出OP状态。如果发生了运行时错误:如果从站发生了 watchdog 错误,检查TwinCAT 软件任务 (PLC 程序, NC 任务, …)是否正确运行,因为在TwinCAT中总是由上述任务触发数据帧的周期性发送和接收。检查主站设备的Jitter表现(抖动范围)是否能证明发生了同步丢失。(最大的Jitter超过通讯周期的20-30%时,很容易发生同步错误)。检查是否发生了硬件错误,比如物理连接丢失,这种错误可能间接导致Watchdog动作,或 者同步丢失 ( 参考“物理层问题的硬件诊断 ”)。如果是这种情况 ,只是检查并不能解决问题,使用 Wireshark 进行追踪会是个有用的办法。6.保存和导出软件错误状态机错误保存在 Windows Log 中,可以导出,以便在即使TwinCAT Logger已经关闭或者不可用的时候,还可以进一步分析:7.历史诊断信息(Diagnose History Object)对于所有应用相关的错误,部分 CoE从站设备支持“历史诊断信息”功能 (Diagnosis History Object ) Register 0x10F3.如果从站支持该功能,TwinCAT 就会额外显示一个页面 “Diag History” :8.邮箱协议错误(Mailbox Protocol Errors)邮箱协议错误( Mailbox protocol errors )是一个指定类的一般性软件错误,它不是厂家自定义的,不影响 EtherCAT 状态机,不会阻止也不会导致意外的状态切换。仅当执行某个特定的邮箱协议所禁止的动作时,才会发生邮箱协议错误。在 ETG.1000.6 规范中,公布了每个邮箱协议支持的错误代码及描述信息。9.发生了邮箱协议错误(Mailbox Protocol Errors )– 怎么办?根据特定的邮箱协议,可能的错误原因是:•CoE-主站试图读写从站的对象字典(Object Dictionary)中并不存在的对象-主站试图对从站的某个“只读” 对象执行“写入”操作。-主站试图以“完全访问”的方式访问从站的某个对象,而从站并不支持该功能。•FoE-文件名错误 (例如, 缺少扩展名*.xxx).-从站需要密码, 但未被正确设置-文件大小超出了从站能接受的范围-从站不在 Bootstrap 状态•EoE-主站试图把从站的 IP-Add(Internal Use)ress 配置为末位为0的值(比如“x.y.z.0”),而EoE从站的Tcp/Ip 协议栈拒绝此设置。注意:•TwinCAT 仅在以下时段 读/写 CoE 参数: -在初始化阶段(Startup 命令) -CoE-Online 页面打开时•如果错误信息显示TwinCAT试图间歇性地读写CoE参数,很可能这是PLC程序的动作。七、TwinCAT PLC 中编写EtherCAT 诊断程序1.在PLC程序中系统地诊断 EtherCAT 状态对于EtherCAT 网络, TwinCAT 自动提供了大量诊断信息,可以在PLC程序中用于检测总线通讯的错误, 以便自动做出响应并报告给用户。用户总是倾向于在PLC程序中实现最少的EtherCAT诊断,因为这样有助于通讯错误发生时节约大量的操作时间。TwinCAT PLC 程序可以混合使用 2 种不同的诊断信息 :周期性信息 : 默认包含在EtherCAT网络的周期性过程映像数据中的 输入数据, 可以直接映射到相应的PLC输入变量 (AT %I*).非周期性信息 : PLC程序调用默认库文件(TcEtherCAT.lib)中指定的功能块,可以获取这些非周期性的EtherCAT诊断信息 。2.TwinCAT 中的周期性诊断信息注意:至少所有从站的 WcState 和 State 变量应链接到 PLC 程序,以便应用程序可以对 EtherCAT 进行最基本的诊断。3.周期性信息 - FrmXWcState 变量允许 PLC 检查每个报文的 Working Counter 信息:每个配置的Frame都具有一个16位的诊断变量 FrmXWcStateFrmXWcState 的每个位对应Frame中的特定报文如果对应报文的Working Counter错误,这个位就会变为TRUE4.周期性信息 - WcState 变量这是每个从站的过程数据中都具有一个布尔型变量如果报文的Working Counter 错误,报文中所有从站的WcState 变量都会被置位,所以,如果一个从站的 WcState = 1, 也并不表示它本身发生了错误。 (内部使用) 进一步的信息需要查看这些 WcState 为 1 的从站的16位状态变量 State5.周期性信息 - State 变量EtherCAT Master汇总从网络收集的诊断信息,周期性地更新State变量,对应几种错误情况:6.周期性信息 – State 变量状态变量报告的错误诊断信息如下:7.非周期性信息 – TcEtherCAT PLC Library在TC2和TC3的默认安装中都免费提供TcEtherCAT.lib库, 该库包含若干功能块,可以对EtherCAT网络进行非周期 性诊断Frame 分析CRC 分析从站识别配置从站的数量和列表实际从站的数量和列表该库原则上允许PLC程序自动读取在TwinCAT开发环境中 在线显示的所有信息。功能块FB_EcGetSlaveTopologyInfo功能块FB_EcGetSlaveTopologyInfo返回关于不同从站的端口如何相互连接的信息,以及(配置的)网络拓扑结 构的信息,(如果配置了热连接组,则它们将列在阵列的末尾)。功能块FB_EcGetConfSlaves功能块 TwinCAT 离线配置,知道 EtherCAT 网络包含哪些从站。功能块 FB_ecgetscannedsaves功能块 FB_ecgetscannedsaves 使 PLC 可 以 获 取EtherCAT网络在线检测的实际从站信息,以便和使用FB_EcGetConfSlaves 获得的离线配置的从站信息进行比较。功能块 FB_ecgetscannedsaves功能块FB_ecgetallslavercerrors可以周期性调用,以判断一个或多个从站是否报告CRC错误。这样就可以只对 这些出错的从站调用FB_ecgetslavecercerrorex,以获取进一步的故障信息。功能块FB_ecgetslavecercerrorex功能块 FB_ecgetslavecercerrorex 使 PLC 可 以 获 取EtherCAT主站记录的特定从站的CRC错误信息,这些信息与TwinCAT 开发环境中的 EtherCAT 监视界面显示的信息一致。功能块FB_EcMasterFrameStatistics功能块 FB_EcMasterFrameStatistics 使PLC可以获取EtherCAT主站检测到的Frame丢失等情况,这些信息与TwinCAT 开发环境中的 EtherCAT 监视界面显示的信息一致。功能块FB_EcGetAllSlaveAbnormalStateChanges功能块FB_EcGetAllSlaveAbnormalStateChanges,统计每个从站 从 OP 退至 SafeOP 的异常状态切换,但并不报告每次异常切换时相关的特定AL 状态码。功能块FB_EcGetLastProtErrInfo功能块 FB_EcGetLastProtErrInfo 允许覆盖上一次邮箱协议错误 Mailbox protocol error (例如, CoE协议的SDO退出代码).对同一从站的下一次正确邮箱访问会清除此前记录错误信息的内存区。八、附件:使用 Wireshark 进行诊断1.如果软件诊断还不够 – 使用 WiresharkWireshark 并不是用以取代TwinCAT中的诊断功能 。对于用户来说,应当在使用了其它诊断方法都无法找到故障点的时候,才使用这个“终极武器”。使用ET2000 可以在Wireshark中获得最好的捕捉效果为了执行 Wireshark 抓包,有多种不同的硬件配置。2.Wireshark 抓包的硬件配置 1不支持 Windows CE没有精确的时间戳3.Wireshark 抓包的硬件配置 2不支持 Windows CE有精确的时间戳4.Wireshark 抓包的硬件配置 3支持 Windows CE有精确的时间戳5.Wireshark 示例Wireshark 允许追踪每个 EtherCAT 数据帧的 list, structure and content of (在一轮捕捉过程中,每个数据帧会被捕获两次!).下图显示了捕获的一个周期性数据帧:6.Wireshark – 时间戳协议( 仅当使用ET2000时 )使用ET2000时,为了在Wireshark中获取到极为精确的时间戳(time-stamping)信息, 应当启用对ESL协议的解析功能。Wireshark Version 2 支持此功能。7.Wireshark – 时间戳协议( 仅当使用ET2000时 )…在早期的 Wireshark Version 1中操作如下:8.Wireshark – 显示时间的格式使用Wireshark追踪时,用户可以选择最合适的 时间信息 显示格式:9.Wireshark – 部分过滤选项(Filter Options)捕获的数据帧可以使用过滤功能,可用的过滤选项包括:仅捕获周期性数据帧(Cyclic Frame)Filter: (ecat.cmd == 0x0a) || (ecat.cmd == 0x0b) || (ecat.cmd == 0x0c)仅捕获邮箱通讯(mailbox communication)Filter: ecat_mailbox Filter: ecat_mailbox.coe Filter: ecat_mailbox.soe Filter: ecat_mailbox.foe Filter: ecat_mailbox.eoe仅访问特定的注册字或者注册字区间 (register or register range)Filter: ecat.ado == Ethercat状态机的实现教程 - 知乎首发于IT技术专栏切换模式写文章登录/注册Ethercat状态机的实现教程iiidd777IT技术分享及教程在主站内核代码执行过程中,总会出现各种情况,比如有些从站被人为的拔下或者从站之间的连接的网线断掉,为了保障主站可以正常的运行,主站必须时刻的检测网络拓扑的状态,因此需要运行一个主站状态机来完成上面提到的工作,其执行在主站状态的上下文中,其有如下几个阶段: Bus monitoring :监视总线的拓扑结构,假如拓扑改变,总线将重新扫描。 Bus monitoring:监控从站的应用层状态,假如检测的从站状态非理想状态,将会进行重新配置。 Request handling:应用层或者外部源请求处理。比如像SII或者SDO访问等要求需要主站异步处理。主站状态机就是在上面三个状态之间不断的转换,具体主要实现流程图如下:上图中只是列出比较重要的部分做出了介绍,主站驱动被加载之后就会不断执行此状态机。期间当检查到从站状态出错的时,还会启动从站状态检测状态机。同时,在执行过程中也会不断的检测是否出现错误及其是否需要退出本状态机。1.主站状态机主状态机在主线程的上下文中执行。 图5.2显示了其过渡图。 其目的是:总线监控:监视总线拓扑。如果更改,则对总线进行(重新)扫描。从站配置:监视从站的应用程序层状态。 如果从站未处于应有的状态,则将(重新)配置该从站。要求处理:处理请求(来自应用程序或来自外部源)。 请求是主机必须异步处理的工作,例如SII访问,SDO访问或类似操作。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信息将被重写。具体的执行流程图如下: 上图可以看出从站扫描状态机就是不断的读取从站的信息,以保障主站可以正常的工作。2.从机扫描状态机从机扫描状态机(如图5.3所示)引导着读取所需从机信息的过程。扫描过程包括以下步骤:节点地址:节点地址是为从站设置的,因此可以为随后的所有操作指定节点地址。AL状态:读取初始应用程序层状态。基本信息:基本信息(如支持的FMMU的数量)是从较低的物理内存中读取的。数据链接:读取有关物理端口的信息。SII大小:确定SII内容的大小以分配SII图像存储器。SII数据:SII内容将读入主站映像。PREOP如果从站支持CoE,则使用状态更改FSM(请参阅第5.6节)将其设置为PREOP状态,以启用邮箱通信并通过CoE读取PDO配置。PDO使用PDO读取FSM,通过CoE(如果支持)读取PDO(请参见5.8节)。 如果成功,则将覆盖来自SII的PDO信息(如果有)。3.从站配置状态机从机配置状态机(如图5.4所示)引导了配置从机并将其置于特定应用程序层状态的过程。初始化(INIT):状态更改FSM用于使从设备进入INIT状态。FMMU清除(FMMU Clearing):为避免从站对任何过程数据作出反应,将清除FMMU配置。 如果从站不支持FMMU,则跳过此状态。 如果INIT是请求的状态,则状态机完成。邮箱同步管理器配置(Mailbox Sync Manager Configuration):如果从属服务器支持邮箱通信,则将配置邮箱同步管理器。否则,将跳过此状态。预备(PREOP):状态更改FSM用于使从设备进入PREOP状态。 如果这是请求的状态,则状态机完成。SDO配置(SDO Configuration):如果附加了从站配置(请参阅第3.1节),并且应用程序提供了任何SDO配置,则将这些配置发送到从站。PDO配置(PDO Configuration):执行PDO配置状态机以应用所有必需的PDO配置。PDO Sync Manager配置:如果存在任何PDO同步管理器,则将对其进行配置。FMMU配置(FMMU Configuration):如果应用程序提供了FMMU配置(如果应用程序注册了PDO条目),则将应用它们。安全运行状态(SAFEOP):状态更改FSM用于使从设备进入SAFEOP状态。 如果这是请求的状态,则状态机完成。OP:状态更改FSM用于使从站进入OP状态。 如果这是请求的状态,则状态机完成。4.状态改变状态机状态更改状态机(如图5.5所示)引导了更改从站的应用程序层状态的过程。 这实现了状态和转换中所述。Start:通过“ AL控制请求”寄存器请求新的应用层状态Check for Response :一些从站需要一些时间来响应AL状态更改命令,并且一段时间不响应。对于这种情况,将再次发出命令,直到确认为止。Check AL Status:如果确认了AL状态更改数据报,则必须读出“ AL控制响应”寄存器,直到从机更改AL状态为止。AL Status Code:如果从站拒绝了状态更改命令,则可以从“ AL状态更改”寄存器中的“ AL状态代码”字段中读取原因Acknowledge State:如果状态更改不成功,则主机必须通过再次写入“ AL控制请求”寄存器来了解旧状态。Check Acknowledge:发送确认命令后,它必须再次读出“ AL控制响应”寄存器。“开始确认”状态是状态机的快捷方式,适用于以下情况:主机希望确认未请求的自发AL状态更改。5. SII状态机SII状态机(如图5.6所示)实现了通过Slave Information Interface中描述的Slave Information Interface读取或写入SII数据的过程。这是状态机的读取部分的工作方式:开始读取(Start Reading):读取请求和请求的字地址被写入SII属性。检查读取命令(Check Read Command):如果已确认SII读取请求命令,则将启动计时器。 发出一个数据报,该数据报读取状态和数据的SII属性。获取数据(Fetch Data):如果读取操作仍然很忙(通常将SII实现为EEPROM),则将再次读取状态。否则,数据将从数据报中复制。写入部分的工作原理几乎相似:开始写(Start Writing):将写请求,目标地址和数据字写入SII属性。检查写命令(Check Write Command):如果已确认SII写请求命令,则启动计时器。 发出一个数据报,该数据报从SII属性中读取写操作的状态。繁忙等待(Wait while Busy):如果写操作仍然很忙(由最小等待时间和忙标志的状态决定),则状态机将保持在此状态,以避免过早发出另一个写操作。6. PDO状态机PDO状态机是一组状态机,它们通过“对象访问”中描述的“ CoE通信区域”来读取或写入PDO分配和PDO映射。对于对象访问,使用基于EtherCAT的CANopen访问原语(请参见6.2节),因此从属服务器必须支持CoE邮箱协议。PDO读取FSM(PDO Reading FSM):该状态机(图5.7)旨在读取从站的完整PDO配置。它读取每个Sync Manager的PDO分配,并使用PDO Entry Reading FSM(图5.8)读取每个分配的PDO的映射。基本上,它会读取每个Sync Manager的PDO分配SDO的(0x1C1x)个元素,以确定为此同步管理器分配的PDO的数量,然后读取SDO的子索引以获取分配的PDO的索引。 读取PDO索引后,将执行PDO条目读取FSM,以读取PDO映射的PDO条目。PDO条目读取FSM(PDO Entry Reading FSM):此状态机(图5.8)读取PDO的PDO映射(PDO条目)。它通过先读取子索引零(元素数量)来确定映射的PDO条目的数量,从而读取给定PDO的相应映射SDO(0x1600 – 0x17ff或0x1a00 – 0x1bff)。 之后,读取每个子索引以获得映射的PDO条目索引,子索引和位大小。7. CANopen over EtherCAT (CoE)EtherCAT上的CANopen协议用于在应用程序级别配置从站并交换数据对象。SDO Download State Machine:应用SDO配置的最佳时间是在从站的PREOP状态期间,因为已经可以进行邮箱通信,并且从站的应用将从在后续SAFEOP状态下更新输入数据开始。 因此,SDO配置必须是从属配置状态机的一部分(请参阅第5.5节):它通过SDO下载状态机实现,该状态机在进入从属设备的SAFEOP状态之前执行。这样,可以确保每次重新配置从站时都应用SDO配置。SDO下载状态机的转换图如图6.2所示。START:CoE下载状态机的开始状态。 发送“ SDO下载正常请求”邮箱命令。→ REQUESTREQUEST:检查从站是否已收到CoE下载请求。 之后,发出邮箱检查命令并启动计时器。→ CHECKCHECK:如果没有邮箱数据可用,则检查计时器。•如果超时,则SDO下载将中止。→ ERROR•否则,将再次查询邮箱。→ CHECK如果邮箱包含新数据,则获取响应。→ RESPONSERESPONSE:如果无法获取邮箱响应,数据无效,接收到错误的协议或接收到“中止SDO传输请求”,则SDO下载将中止。→ ERROR如果收到“ SDO下载正常响应”确认,则说明SDO下载成功。→ ENDEND:SDO下载成功。ERROR:SDO下载由于错误而中止。发布于 2021-05-28 14:58EDA技术与FPGA工程实例开发(书籍)开放式 IEC 61131 控制系统设计(书籍)以太网(Ethernet)赞同 2添加评论分享喜欢收藏申请转载文章被以下专栏收录IT技术专栏IT技术分享
Ethercat解析之命令行工具的使用教程 - 知乎
在Ethercat状态机转换到OP之前特定的LAN9252寄存器必须通过SPI接口初始化吗? - Microchip - 电子技术论坛 - 广受欢迎的专业电子论坛!
SPI模式下的LAN9252 Ethercat从机不会进入OP状态 - Microchip - 电子技术论坛 - 广受欢迎的专业电子论坛!
EtherCAT使用与解析-主站状态机(idle->preop)_ethercat preop-CSDN博客
>TwinCAT在init->pre op ->safe op->op模式切换时的error caode说明_倍福preop init_err-CSDN博客
>EtherCAT Diagnostics 诊断 - 知乎