1、功能说明EtherCAT从站模块需要支持自定义设置从站节点地址的功能即通过8位拨码开关进行设置2、功能探索从Microchip的ESC芯片LAN9252的数据手册上找到了和从站节点地址以下简称站地址相关的内核CSR寄存器其中已配置站寄存器只能通过主站ECAT类型为R/W进行写操作从站PDI类型为RO只能读操作已配置站别名寄存器只能通过从站PDI类型为R/W进行写操作主站ECAT类型为RO只能读操作实际仿真操作了一下从站确实可以正常读到已配置站寄存器的值即通过主站可以进行站地址的设置站地址占两字节范围为1~65535然后查找ETG2000等资料也找到了相关信息也就是说从站可以通过设置已配置站别名寄存器的值来实现自定义站地址的功能主要代码如下当然如果要想使用激活已配置站寄存器的使用先要将DL控制寄存器的bit24位设置为1而该位默认处于Deactive未激活状态且只能通过主站对其进行设置。综上来看要想实现自定义站地址的功能主要涉及的ESC寄存器主要包括DL控制寄存器和已配置站别名寄存器。然后与专业人士沟通和了解后得到更多信息即还需要设置站别名信息另外还需要勾选“Check Identification”勾选之后EtherCAT界面就可以显示地址信息然后通过Wireshark抓包上电初始化运行时也会看到地址信息也说明功能操作成功。这个地址数据必须要和从站按照拨码开关的值写入已配置站别名寄存器的数据一样否则运行会报错3、功能开发在从站的程序开发上相对比较简单只要在每次上电EtherCAT协议栈初始化的时候通过MCU读取一下拨码开关的设置值并将设置值通过SPI总线写入ESC芯片的已配置站别名寄存器就可以主要代码如下所示复制#define ESC_SLAVE_ALIAS_ADDRESS_OFFSET? ?? ?? ? 0x21571dd863a3e8b2e9627a389db8b65b65d25794_value();? ?? ???UINT16 ecatAddr2 0;? ?? ???HW_EscWriteWord(ecatAddr1, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???HW_EscReadWord(ecatAddr2, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???if(ecatAddr1 ! ecatAddr2)? ?? ???{? ?? ?? ?? ?//add error hadnle? ?? ???}在主站配置上如果是使用TwinCAT软件可以参考前文的配置描述。如果是使用codesys软件则可以按照以下方法进行配置假设我们将8位拨码开关的值设置为10101010即十进制170十六进制0x21571dd863a3e8b2e9627a389db8b65b65d25794镆欢ㄒ裙囱 翱裳〉摹保裨蚺渲貌僮鞑换嵘В?然后需要将配置地址写入EEPROM进行保存运行后可操作写入后重启生效。4、功能验证重新上电后在codesys里面执行扫描操作就可以看到此模块显示的别名地址为170即所配置的从站地址且此时模块可以进入OP正常运行“实际地址”一栏里面才会显示正确的站地址然后我把此模块的地址手动修改为其他值再运行测试此时模块就无法进入OP运行异常了“实际地址”一栏也无法显示正确地址170了至此自定义从站节点地址的功能开发调试及验证完毕。1、功能说明EtherCAT从站模块需要支持自定义设置从站节点地址的功能即通过8位拨码开关进行设置2、功能探索从Microchip的ESC芯片LAN9252的数据手册上找到了和从站节点地址以下简称站地址相关的内核CSR寄存器其中已配置站寄存器只能通过主站ECAT类型为R/W进行写操作从站PDI类型为RO只能读操作已配置站别名寄存器只能通过从站PDI类型为R/W进行写操作主站ECAT类型为RO只能读操作实际仿真操作了一下从站确实可以正常读到已配置站寄存器的值即通过主站可以进行站地址的设置站地址占两字节范围为1~65535然后查找ETG2000等资料也找到了相关信息也就是说从站可以通过设置已配置站别名寄存器的值来实现自定义站地址的功能主要代码如下当然如果要想使用激活已配置站寄存器的使用先要将DL控制寄存器的bit24位设置为1而该位默认处于Deactive未激活状态且只能通过主站对其进行设置。综上来看要想实现自定义站地址的功能主要涉及的ESC寄存器主要包括DL控制寄存器和已配置站别名寄存器。然后与专业人士沟通和了解后得到更多信息即还需要设置站别名信息另外还需要勾选“Check Identification”勾选之后EtherCAT界面就可以显示地址信息然后通过Wireshark抓包上电初始化运行时也会看到地址信息也说明功能操作成功。这个地址数据必须要和从站按照拨码开关的值写入已配置站别名寄存器的数据一样否则运行会报错3、功能开发在从站的程序开发上相对比较简单只要在每次上电EtherCAT协议栈初始化的时候通过MCU读取一下拨码开关的设置值并将设置值通过SPI总线写入ESC芯片的已配置站别名寄存器就可以主要代码如下所示复制#define ESC_SLAVE_ALIAS_ADDRESS_OFFSET? ?? ?? ? 0x21571dd863a3e8b2e9627a389db8b65b65d25794_value();? ?? ???UINT16 ecatAddr2 0;? ?? ???HW_EscWriteWord(ecatAddr1, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???HW_EscReadWord(ecatAddr2, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???if(ecatAddr1 ! ecatAddr2)? ?? ???{? ?? ?? ?? ?//add error hadnle? ?? ???}在主站配置上如果是使用TwinCAT软件可以参考前文的配置描述。如果是使用codesys软件则可以按照以下方法进行配置假设我们将8位拨码开关的值设置为10101010即十进制170十六进制0x21571dd863a3e8b2e9627a389db8b65b65d25794镆欢ㄒ裙囱 翱裳〉摹保裨蚺渲貌僮鞑换嵘В?然后需要将配置地址写入EEPROM进行保存运行后可操作写入后重启生效。4、功能验证重新上电后在codesys里面执行扫描操作就可以看到此模块显示的别名地址为170即所配置的从站地址且此时模块可以进入OP正常运行“实际地址”一栏里面才会显示正确的站地址然后我把此模块的地址手动修改为其他值再运行测试此时模块就无法进入OP运行异常了“实际地址”一栏也无法显示正确地址170了至此自定义从站节点地址的功能开发调试及验证完毕。1、功能说明EtherCAT从站模块需要支持自定义设置从站节点地址的功能即通过8位拨码开关进行设置2、功能探索从Microchip的ESC芯片LAN9252的数据手册上找到了和从站节点地址以下简称站地址相关的内核CSR寄存器其中已配置站寄存器只能通过主站ECAT类型为R/W进行写操作从站PDI类型为RO只能读操作已配置站别名寄存器只能通过从站PDI类型为R/W进行写操作主站ECAT类型为RO只能读操作实际仿真操作了一下从站确实可以正常读到已配置站寄存器的值即通过主站可以进行站地址的设置站地址占两字节范围为1~65535然后查找ETG2000等资料也找到了相关信息也就是说从站可以通过设置已配置站别名寄存器的值来实现自定义站地址的功能主要代码如下当然如果要想使用激活已配置站寄存器的使用先要将DL控制寄存器的bit24位设置为1而该位默认处于Deactive未激活状态且只能通过主站对其进行设置。综上来看要想实现自定义站地址的功能主要涉及的ESC寄存器主要包括DL控制寄存器和已配置站别名寄存器。然后与专业人士沟通和了解后得到更多信息即还需要设置站别名信息另外还需要勾选“Check Identification”勾选之后EtherCAT界面就可以显示地址信息然后通过Wireshark抓包上电初始化运行时也会看到地址信息也说明功能操作成功。这个地址数据必须要和从站按照拨码开关的值写入已配置站别名寄存器的数据一样否则运行会报错3、功能开发在从站的程序开发上相对比较简单只要在每次上电EtherCAT协议栈初始化的时候通过MCU读取一下拨码开关的设置值并将设置值通过SPI总线写入ESC芯片的已配置站别名寄存器就可以主要代码如下所示复制#define ESC_SLAVE_ALIAS_ADDRESS_OFFSET? ?? ?? ? 0x21571dd863a3e8b2e9627a389db8b65b65d25794_value();? ?? ???UINT16 ecatAddr2 0;? ?? ???HW_EscWriteWord(ecatAddr1, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???HW_EscReadWord(ecatAddr2, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???if(ecatAddr1 ! ecatAddr2)? ?? ???{? ?? ?? ?? ?//add error hadnle? ?? ???}在主站配置上如果是使用TwinCAT软件可以参考前文的配置描述。如果是使用codesys软件则可以按照以下方法进行配置假设我们将8位拨码开关的值设置为10101010即十进制170十六进制0x21571dd863a3e8b2e9627a389db8b65b65d25794镆欢ㄒ裙囱 翱裳〉摹保裨蚺渲貌僮鞑换嵘В?然后需要将配置地址写入EEPROM进行保存运行后可操作写入后重启生效。4、功能验证重新上电后在codesys里面执行扫描操作就可以看到此模块显示的别名地址为170即所配置的从站地址且此时模块可以进入OP正常运行“实际地址”一栏里面才会显示正确的站地址然后我把此模块的地址手动修改为其他值再运行测试此时模块就无法进入OP运行异常了“实际地址”一栏也无法显示正确地址170了至此自定义从站节点地址的功能开发调试及验证完毕。1、功能说明EtherCAT从站模块需要支持自定义设置从站节点地址的功能即通过8位拨码开关进行设置2、功能探索从Microchip的ESC芯片LAN9252的数据手册上找到了和从站节点地址以下简称站地址相关的内核CSR寄存器其中已配置站寄存器只能通过主站ECAT类型为R/W进行写操作从站PDI类型为RO只能读操作已配置站别名寄存器只能通过从站PDI类型为R/W进行写操作主站ECAT类型为RO只能读操作实际仿真操作了一下从站确实可以正常读到已配置站寄存器的值即通过主站可以进行站地址的设置站地址占两字节范围为1~65535然后查找ETG2000等资料也找到了相关信息也就是说从站可以通过设置已配置站别名寄存器的值来实现自定义站地址的功能主要代码如下当然如果要想使用激活已配置站寄存器的使用先要将DL控制寄存器的bit24位设置为1而该位默认处于Deactive未激活状态且只能通过主站对其进行设置。综上来看要想实现自定义站地址的功能主要涉及的ESC寄存器主要包括DL控制寄存器和已配置站别名寄存器。然后与专业人士沟通和了解后得到更多信息即还需要设置站别名信息另外还需要勾选“Check Identification”勾选之后EtherCAT界面就可以显示地址信息然后通过Wireshark抓包上电初始化运行时也会看到地址信息也说明功能操作成功。这个地址数据必须要和从站按照拨码开关的值写入已配置站别名寄存器的数据一样否则运行会报错3、功能开发在从站的程序开发上相对比较简单只要在每次上电EtherCAT协议栈初始化的时候通过MCU读取一下拨码开关的设置值并将设置值通过SPI总线写入ESC芯片的已配置站别名寄存器就可以主要代码如下所示复制#define ESC_SLAVE_ALIAS_ADDRESS_OFFSET? ?? ?? ? 0x21571dd863a3e8b2e9627a389db8b65b65d25794_value();? ?? ???UINT16 ecatAddr2 0;? ?? ???HW_EscWriteWord(ecatAddr1, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???HW_EscReadWord(ecatAddr2, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???if(ecatAddr1 ! ecatAddr2)? ?? ???{? ?? ?? ?? ?//add error hadnle? ?? ???}在主站配置上如果是使用TwinCAT软件可以参考前文的配置描述。如果是使用codesys软件则可以按照以下方法进行配置假设我们将8位拨码开关的值设置为10101010即十进制170十六进制0x21571dd863a3e8b2e9627a389db8b65b65d25794镆欢ㄒ裙囱 翱裳〉摹保裨蚺渲貌僮鞑换嵘В?然后需要将配置地址写入EEPROM进行保存运行后可操作写入后重启生效。4、功能验证重新上电后在codesys里面执行扫描操作就可以看到此模块显示的别名地址为170即所配置的从站地址且此时模块可以进入OP正常运行“实际地址”一栏里面才会显示正确的站地址然后我把此模块的地址手动修改为其他值再运行测试此时模块就无法进入OP运行异常了“实际地址”一栏也无法显示正确地址170了至此自定义从站节点地址的功能开发调试及验证完毕。1、功能说明EtherCAT从站模块需要支持自定义设置从站节点地址的功能即通过8位拨码开关进行设置2、功能探索从Microchip的ESC芯片LAN9252的数据手册上找到了和从站节点地址以下简称站地址相关的内核CSR寄存器其中已配置站寄存器只能通过主站ECAT类型为R/W进行写操作从站PDI类型为RO只能读操作已配置站别名寄存器只能通过从站PDI类型为R/W进行写操作主站ECAT类型为RO只能读操作实际仿真操作了一下从站确实可以正常读到已配置站寄存器的值即通过主站可以进行站地址的设置站地址占两字节范围为1~65535然后查找ETG2000等资料也找到了相关信息也就是说从站可以通过设置已配置站别名寄存器的值来实现自定义站地址的功能主要代码如下当然如果要想使用激活已配置站寄存器的使用先要将DL控制寄存器的bit24位设置为1而该位默认处于Deactive未激活状态且只能通过主站对其进行设置。综上来看要想实现自定义站地址的功能主要涉及的ESC寄存器主要包括DL控制寄存器和已配置站别名寄存器。然后与专业人士沟通和了解后得到更多信息即还需要设置站别名信息另外还需要勾选“Check Identification”勾选之后EtherCAT界面就可以显示地址信息然后通过Wireshark抓包上电初始化运行时也会看到地址信息也说明功能操作成功。这个地址数据必须要和从站按照拨码开关的值写入已配置站别名寄存器的数据一样否则运行会报错3、功能开发在从站的程序开发上相对比较简单只要在每次上电EtherCAT协议栈初始化的时候通过MCU读取一下拨码开关的设置值并将设置值通过SPI总线写入ESC芯片的已配置站别名寄存器就可以主要代码如下所示复制#define ESC_SLAVE_ALIAS_ADDRESS_OFFSET? ?? ?? ? 0x21571dd863a3e8b2e9627a389db8b65b65d25794_value();? ?? ???UINT16 ecatAddr2 0;? ?? ???HW_EscWriteWord(ecatAddr1, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???HW_EscReadWord(ecatAddr2, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???if(ecatAddr1 ! ecatAddr2)? ?? ???{? ?? ?? ?? ?//add error hadnle? ?? ???}在主站配置上如果是使用TwinCAT软件可以参考前文的配置描述。如果是使用codesys软件则可以按照以下方法进行配置假设我们将8位拨码开关的值设置为10101010即十进制170十六进制0x21571dd863a3e8b2e9627a389db8b65b65d25794镆欢ㄒ裙囱 翱裳〉摹保裨蚺渲貌僮鞑换嵘В?然后需要将配置地址写入EEPROM进行保存运行后可操作写入后重启生效。4、功能验证重新上电后在codesys里面执行扫描操作就可以看到此模块显示的别名地址为170即所配置的从站地址且此时模块可以进入OP正常运行“实际地址”一栏里面才会显示正确的站地址然后我把此模块的地址手动修改为其他值再运行测试此时模块就无法进入OP运行异常了“实际地址”一栏也无法显示正确地址170了至此自定义从站节点地址的功能开发调试及验证完毕。1、功能说明EtherCAT从站模块需要支持自定义设置从站节点地址的功能即通过8位拨码开关进行设置2、功能探索从Microchip的ESC芯片LAN9252的数据手册上找到了和从站节点地址以下简称站地址相关的内核CSR寄存器其中已配置站寄存器只能通过主站ECAT类型为R/W进行写操作从站PDI类型为RO只能读操作已配置站别名寄存器只能通过从站PDI类型为R/W进行写操作主站ECAT类型为RO只能读操作实际仿真操作了一下从站确实可以正常读到已配置站寄存器的值即通过主站可以进行站地址的设置站地址占两字节范围为1~65535然后查找ETG2000等资料也找到了相关信息也就是说从站可以通过设置已配置站别名寄存器的值来实现自定义站地址的功能主要代码如下当然如果要想使用激活已配置站寄存器的使用先要将DL控制寄存器的bit24位设置为1而该位默认处于Deactive未激活状态且只能通过主站对其进行设置。综上来看要想实现自定义站地址的功能主要涉及的ESC寄存器主要包括DL控制寄存器和已配置站别名寄存器。然后与专业人士沟通和了解后得到更多信息即还需要设置站别名信息另外还需要勾选“Check Identification”勾选之后EtherCAT界面就可以显示地址信息然后通过Wireshark抓包上电初始化运行时也会看到地址信息也说明功能操作成功。这个地址数据必须要和从站按照拨码开关的值写入已配置站别名寄存器的数据一样否则运行会报错3、功能开发在从站的程序开发上相对比较简单只要在每次上电EtherCAT协议栈初始化的时候通过MCU读取一下拨码开关的设置值并将设置值通过SPI总线写入ESC芯片的已配置站别名寄存器就可以主要代码如下所示复制#define ESC_SLAVE_ALIAS_ADDRESS_OFFSET? ?? ?? ? 0x21571dd863a3e8b2e9627a389db8b65b65d25794_value();? ?? ???UINT16 ecatAddr2 0;? ?? ???HW_EscWriteWord(ecatAddr1, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???HW_EscReadWord(ecatAddr2, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???if(ecatAddr1 ! ecatAddr2)? ?? ???{? ?? ?? ?? ?//add error hadnle? ?? ???}在主站配置上如果是使用TwinCAT软件可以参考前文的配置描述。如果是使用codesys软件则可以按照以下方法进行配置假设我们将8位拨码开关的值设置为10101010即十进制170十六进制0x21571dd863a3e8b2e9627a389db8b65b65d25794镆欢ㄒ裙囱 翱裳〉摹保裨蚺渲貌僮鞑换嵘В?然后需要将配置地址写入EEPROM进行保存运行后可操作写入后重启生效。4、功能验证重新上电后在codesys里面执行扫描操作就可以看到此模块显示的别名地址为170即所配置的从站地址且此时模块可以进入OP正常运行“实际地址”一栏里面才会显示正确的站地址然后我把此模块的地址手动修改为其他值再运行测试此时模块就无法进入OP运行异常了“实际地址”一栏也无法显示正确地址170了至此自定义从站节点地址的功能开发调试及验证完毕。1、功能说明EtherCAT从站模块需要支持自定义设置从站节点地址的功能即通过8位拨码开关进行设置2、功能探索从Microchip的ESC芯片LAN9252的数据手册上找到了和从站节点地址以下简称站地址相关的内核CSR寄存器其中已配置站寄存器只能通过主站ECAT类型为R/W进行写操作从站PDI类型为RO只能读操作已配置站别名寄存器只能通过从站PDI类型为R/W进行写操作主站ECAT类型为RO只能读操作实际仿真操作了一下从站确实可以正常读到已配置站寄存器的值即通过主站可以进行站地址的设置站地址占两字节范围为1~65535然后查找ETG2000等资料也找到了相关信息也就是说从站可以通过设置已配置站别名寄存器的值来实现自定义站地址的功能主要代码如下当然如果要想使用激活已配置站寄存器的使用先要将DL控制寄存器的bit24位设置为1而该位默认处于Deactive未激活状态且只能通过主站对其进行设置。综上来看要想实现自定义站地址的功能主要涉及的ESC寄存器主要包括DL控制寄存器和已配置站别名寄存器。然后与专业人士沟通和了解后得到更多信息即还需要设置站别名信息另外还需要勾选“Check Identification”勾选之后EtherCAT界面就可以显示地址信息然后通过Wireshark抓包上电初始化运行时也会看到地址信息也说明功能操作成功。这个地址数据必须要和从站按照拨码开关的值写入已配置站别名寄存器的数据一样否则运行会报错3、功能开发在从站的程序开发上相对比较简单只要在每次上电EtherCAT协议栈初始化的时候通过MCU读取一下拨码开关的设置值并将设置值通过SPI总线写入ESC芯片的已配置站别名寄存器就可以主要代码如下所示复制#define ESC_SLAVE_ALIAS_ADDRESS_OFFSET? ?? ?? ? 0x21571dd863a3e8b2e9627a389db8b65b65d25794_value();? ?? ???UINT16 ecatAddr2 0;? ?? ???HW_EscWriteWord(ecatAddr1, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???HW_EscReadWord(ecatAddr2, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???if(ecatAddr1 ! ecatAddr2)? ?? ???{? ?? ?? ?? ?//add error hadnle? ?? ???}在主站配置上如果是使用TwinCAT软件可以参考前文的配置描述。如果是使用codesys软件则可以按照以下方法进行配置假设我们将8位拨码开关的值设置为10101010即十进制170十六进制0x21571dd863a3e8b2e9627a389db8b65b65d25794镆欢ㄒ裙囱 翱裳〉摹保裨蚺渲貌僮鞑换嵘В?然后需要将配置地址写入EEPROM进行保存运行后可操作写入后重启生效。4、功能验证重新上电后在codesys里面执行扫描操作就可以看到此模块显示的别名地址为170即所配置的从站地址且此时模块可以进入OP正常运行“实际地址”一栏里面才会显示正确的站地址然后我把此模块的地址手动修改为其他值再运行测试此时模块就无法进入OP运行异常了“实际地址”一栏也无法显示正确地址170了至此自定义从站节点地址的功能开发调试及验证完毕。1、功能说明EtherCAT从站模块需要支持自定义设置从站节点地址的功能即通过8位拨码开关进行设置2、功能探索从Microchip的ESC芯片LAN9252的数据手册上找到了和从站节点地址以下简称站地址相关的内核CSR寄存器其中已配置站寄存器只能通过主站ECAT类型为R/W进行写操作从站PDI类型为RO只能读操作已配置站别名寄存器只能通过从站PDI类型为R/W进行写操作主站ECAT类型为RO只能读操作实际仿真操作了一下从站确实可以正常读到已配置站寄存器的值即通过主站可以进行站地址的设置站地址占两字节范围为1~65535然后查找ETG2000等资料也找到了相关信息也就是说从站可以通过设置已配置站别名寄存器的值来实现自定义站地址的功能主要代码如下当然如果要想使用激活已配置站寄存器的使用先要将DL控制寄存器的bit24位设置为1而该位默认处于Deactive未激活状态且只能通过主站对其进行设置。综上来看要想实现自定义站地址的功能主要涉及的ESC寄存器主要包括DL控制寄存器和已配置站别名寄存器。然后与专业人士沟通和了解后得到更多信息即还需要设置站别名信息另外还需要勾选“Check Identification”勾选之后EtherCAT界面就可以显示地址信息然后通过Wireshark抓包上电初始化运行时也会看到地址信息也说明功能操作成功。这个地址数据必须要和从站按照拨码开关的值写入已配置站别名寄存器的数据一样否则运行会报错3、功能开发在从站的程序开发上相对比较简单只要在每次上电EtherCAT协议栈初始化的时候通过MCU读取一下拨码开关的设置值并将设置值通过SPI总线写入ESC芯片的已配置站别名寄存器就可以主要代码如下所示复制#define ESC_SLAVE_ALIAS_ADDRESS_OFFSET? ?? ?? ? 0x21571dd863a3e8b2e9627a389db8b65b65d25794_value();? ?? ???UINT16 ecatAddr2 0;? ?? ???HW_EscWriteWord(ecatAddr1, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???HW_EscReadWord(ecatAddr2, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???if(ecatAddr1 ! ecatAddr2)? ?? ???{? ?? ?? ?? ?//add error hadnle? ?? ???}在主站配置上如果是使用TwinCAT软件可以参考前文的配置描述。如果是使用codesys软件则可以按照以下方法进行配置假设我们将8位拨码开关的值设置为10101010即十进制170十六进制0x21571dd863a3e8b2e9627a389db8b65b65d25794镆欢ㄒ裙囱 翱裳〉摹保裨蚺渲貌僮鞑换嵘В?然后需要将配置地址写入EEPROM进行保存运行后可操作写入后重启生效。4、功能验证重新上电后在codesys里面执行扫描操作就可以看到此模块显示的别名地址为170即所配置的从站地址且此时模块可以进入OP正常运行“实际地址”一栏里面才会显示正确的站地址然后我把此模块的地址手动修改为其他值再运行测试此时模块就无法进入OP运行异常了“实际地址”一栏也无法显示正确地址170了至此自定义从站节点地址的功能开发调试及验证完毕。1、功能说明EtherCAT从站模块需要支持自定义设置从站节点地址的功能即通过8位拨码开关进行设置2、功能探索从Microchip的ESC芯片LAN9252的数据手册上找到了和从站节点地址以下简称站地址相关的内核CSR寄存器其中已配置站寄存器只能通过主站ECAT类型为R/W进行写操作从站PDI类型为RO只能读操作已配置站别名寄存器只能通过从站PDI类型为R/W进行写操作主站ECAT类型为RO只能读操作实际仿真操作了一下从站确实可以正常读到已配置站寄存器的值即通过主站可以进行站地址的设置站地址占两字节范围为1~65535然后查找ETG2000等资料也找到了相关信息也就是说从站可以通过设置已配置站别名寄存器的值来实现自定义站地址的功能主要代码如下当然如果要想使用激活已配置站寄存器的使用先要将DL控制寄存器的bit24位设置为1而该位默认处于Deactive未激活状态且只能通过主站对其进行设置。综上来看要想实现自定义站地址的功能主要涉及的ESC寄存器主要包括DL控制寄存器和已配置站别名寄存器。然后与专业人士沟通和了解后得到更多信息即还需要设置站别名信息另外还需要勾选“Check Identification”勾选之后EtherCAT界面就可以显示地址信息然后通过Wireshark抓包上电初始化运行时也会看到地址信息也说明功能操作成功。这个地址数据必须要和从站按照拨码开关的值写入已配置站别名寄存器的数据一样否则运行会报错3、功能开发在从站的程序开发上相对比较简单只要在每次上电EtherCAT协议栈初始化的时候通过MCU读取一下拨码开关的设置值并将设置值通过SPI总线写入ESC芯片的已配置站别名寄存器就可以主要代码如下所示复制#define ESC_SLAVE_ALIAS_ADDRESS_OFFSET? ?? ?? ? 0x21571dd863a3e8b2e9627a389db8b65b65d25794_value();? ?? ???UINT16 ecatAddr2 0;? ?? ???HW_EscWriteWord(ecatAddr1, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???HW_EscReadWord(ecatAddr2, ESC_SLAVE_ALIAS_ADDRESS_OFFSET);? ?? ???if(ecatAddr1 ! ecatAddr2)? ?? ???{? ?? ?? ?? ?//add error hadnle? ?? ???}在主站配置上如果是使用TwinCAT软件可以参考前文的配置描述。如果是使用codesys软件则可以按照以下方法进行配置假设我们将8位拨码开关的值设置为10101010即十进制170十六进制0x21571dd863a3e8b2e9627a389db8b65b65d25794镆欢ㄒ裙囱 翱裳〉摹保裨蚺渲貌僮鞑换嵘В?然后需要将配置地址写入EEPROM进行保存运行后可操作写入后重启生效。4、功能验证重新上电后在codesys里面执行扫描操作就可以看到此模块显示的别名地址为170即所配置的从站地址且此时模块可以进入OP正常运行“实际地址”一栏里面才会显示正确的站地址然后我把此模块的地址手动修改为其他值再运行测试此时模块就无法进入OP运行异常了“实际地址”一栏也无法显示正确地址170了至此自定义从站节点地址的功能开发调试及验证完毕。添加链接描述编程的节奏