HPM(先辑) ESC相关配置

HPM(先辑) ESC相关配置

原理图

使用官方HPM Pinmux Tool工具,进入ENET_PHY->ESC->勾选ENET_PHY

地址: HPM Pinmux Tool

生成代码如下:

c 复制代码
void init_pins(void)
{
    /* =========================================================================
     * 1. ESC0 SMI 管理总线 (MDC / MDIO)
     * ========================================================================= */
    HPM_IOC->PAD[IOC_PAD_PA30].FUNC_CTL = IOC_PA30_FUNC_CTL_ESC0_MDIO;
    HPM_IOC->PAD[IOC_PAD_PA31].FUNC_CTL = IOC_PA31_FUNC_CTL_ESC0_MDC;

    /* =========================================================================
     * 2. ESC0 硬件控制 / LED 指示灯输出
     * ========================================================================= */
    HPM_IOC->PAD[IOC_PAD_PA25].FUNC_CTL = IOC_PA25_FUNC_CTL_ESC0_CTR_0; /* ECAT_PHY1_LED1 */
    HPM_IOC->PAD[IOC_PAD_PA28].FUNC_CTL = IOC_PA28_FUNC_CTL_ESC0_CTR_1; /* ECAT_PHY0_LED1 */

    /* =========================================================================
     * 3. 内部 EPHY 模拟接口 (模拟输入/输出,设为 ANALOG_MASK 由物理层接管)
     * ========================================================================= */
    /* PHY1 物理层管脚 */
    HPM_IOC->PAD[IOC_PAD_PA16].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY1_RXN */
    HPM_IOC->PAD[IOC_PAD_PA17].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY1_RXP */
    HPM_IOC->PAD[IOC_PAD_PA18].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY1_TXN */
    HPM_IOC->PAD[IOC_PAD_PA19].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY1_TXP */
    HPM_IOC->PAD[IOC_PAD_PA24].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY1_RB 偏置电阻 */
    HPM_IOC->PAD[IOC_PAD_PA26].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY1_LED0 (硬件直驱) */

    /* PHY0 物理层管脚 */
    HPM_IOC->PAD[IOC_PAD_PA20].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY0_RXN */
    HPM_IOC->PAD[IOC_PAD_PA21].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY0_RXP */
    HPM_IOC->PAD[IOC_PAD_PA22].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY0_TXN */
    HPM_IOC->PAD[IOC_PAD_PA23].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY0_TXP */
    HPM_IOC->PAD[IOC_PAD_PA27].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY0_RB 偏置电阻 */
    HPM_IOC->PAD[IOC_PAD_PA29].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK; /* ECAT_PHY0_LED0 (硬件直驱) */

    /* =========================================================================
     * 4. 芯片内部 MAC <-> EPHY 虚拟互联总线: Port 0 (PV 虚拟引脚组)
     * ========================================================================= */
    HPM_IOC->PAD[IOC_PAD_PV00].FUNC_CTL = IOC_PV00_FUNC_CTL_ESC0_P0_RXDV;
    HPM_IOC->PAD[IOC_PAD_PV01].FUNC_CTL = IOC_PV01_FUNC_CTL_ESC0_P0_RXD_0;
    HPM_IOC->PAD[IOC_PAD_PV02].FUNC_CTL = IOC_PV02_FUNC_CTL_ESC0_P0_RXD_1;
    HPM_IOC->PAD[IOC_PAD_PV03].FUNC_CTL = IOC_PV03_FUNC_CTL_ESC0_P0_RXD_2;
    HPM_IOC->PAD[IOC_PAD_PV04].FUNC_CTL = IOC_PV04_FUNC_CTL_ESC0_P0_RXD_3;
    HPM_IOC->PAD[IOC_PAD_PV05].FUNC_CTL = IOC_PV05_FUNC_CTL_ESC0_P0_RXCK;
    HPM_IOC->PAD[IOC_PAD_PV06].FUNC_CTL = IOC_PV06_FUNC_CTL_ESC0_P0_TXCK;
    HPM_IOC->PAD[IOC_PAD_PV07].FUNC_CTL = IOC_PV07_FUNC_CTL_ESC0_P0_TXD_0;
    HPM_IOC->PAD[IOC_PAD_PV08].FUNC_CTL = IOC_PV08_FUNC_CTL_ESC0_P0_TXD_1;
    HPM_IOC->PAD[IOC_PAD_PV09].FUNC_CTL = IOC_PV09_FUNC_CTL_ESC0_P0_TXD_2;
    HPM_IOC->PAD[IOC_PAD_PV10].FUNC_CTL = IOC_PV10_FUNC_CTL_ESC0_P0_TXD_3;
    HPM_IOC->PAD[IOC_PAD_PV11].FUNC_CTL = IOC_PV11_FUNC_CTL_ESC0_P0_TXEN;
    HPM_IOC->PAD[IOC_PAD_PV12].FUNC_CTL = IOC_PV12_FUNC_CTL_GPIO_V_12;
    HPM_IOC->PAD[IOC_PAD_PV15].FUNC_CTL = IOC_PV15_FUNC_CTL_ESC0_P0_RXER;

    /* =========================================================================
     * 5. 芯片内部 MAC <-> EPHY 虚拟互联总线: Port 1 (PW 虚拟引脚组)
     * ========================================================================= */
    HPM_IOC->PAD[IOC_PAD_PW00].FUNC_CTL = IOC_PW00_FUNC_CTL_ESC0_P1_RXDV;
    HPM_IOC->PAD[IOC_PAD_PW01].FUNC_CTL = IOC_PW01_FUNC_CTL_ESC0_P1_RXD_0;
    HPM_IOC->PAD[IOC_PAD_PW02].FUNC_CTL = IOC_PW02_FUNC_CTL_ESC0_P1_RXD_1;
    HPM_IOC->PAD[IOC_PAD_PW03].FUNC_CTL = IOC_PW03_FUNC_CTL_ESC0_P1_RXD_2;
    HPM_IOC->PAD[IOC_PAD_PW04].FUNC_CTL = IOC_PW04_FUNC_CTL_ESC0_P1_RXD_3;
    HPM_IOC->PAD[IOC_PAD_PW05].FUNC_CTL = IOC_PW05_FUNC_CTL_ESC0_P1_RXCK;
    HPM_IOC->PAD[IOC_PAD_PW06].FUNC_CTL = IOC_PW06_FUNC_CTL_ESC0_P1_TXCK;
    HPM_IOC->PAD[IOC_PAD_PW07].FUNC_CTL = IOC_PW07_FUNC_CTL_ESC0_P1_TXD_0;
    HPM_IOC->PAD[IOC_PAD_PW08].FUNC_CTL = IOC_PW08_FUNC_CTL_ESC0_P1_TXD_1;
    HPM_IOC->PAD[IOC_PAD_PW09].FUNC_CTL = IOC_PW09_FUNC_CTL_ESC0_P1_TXD_2;
    HPM_IOC->PAD[IOC_PAD_PW10].FUNC_CTL = IOC_PW10_FUNC_CTL_ESC0_P1_TXD_3;
    HPM_IOC->PAD[IOC_PAD_PW11].FUNC_CTL = IOC_PW11_FUNC_CTL_ESC0_P1_TXEN;
    HPM_IOC->PAD[IOC_PAD_PW12].FUNC_CTL = IOC_PW12_FUNC_CTL_GPIO_W_12;
    HPM_IOC->PAD[IOC_PAD_PW15].FUNC_CTL = IOC_PW15_FUNC_CTL_ESC0_P1_RXER;
    HPM_IOC->PAD[IOC_PAD_PW20].FUNC_CTL = IOC_PW20_FUNC_CTL_ESC0_REFCK;
    HPM_IOC->PAD[IOC_PAD_PW21].FUNC_CTL = IOC_PW21_FUNC_CTL_ESC0_REFCK;
}

这段生成的代码整体上符合 HPM5E3Y 启用内置 EPHY 的路由逻辑,但有两处细节需要根据你的原理图进行手动调整。(可以不修改)

内置虚拟引脚与 FIXME 注释

● PVxx 与 PWxx 引脚:这是芯片内部 MAC(ESC0)与内置 EPHY 通信的虚拟数字走线。工具自动将 RX/TX 等信号映射到这些内部引脚上,属于正常且必要的配置,直接保留即可。

● FIXME (PV12 / PW12):这通常对应内置 PHY 的 Link/Interrupt 状态引脚。SDK 底层的 EPHY 驱动或 EtherCAT 协议栈会自行处理内部信号,可以直接忽略此警告注释,无需额外编写 GPIOM 代码。

模拟管脚 (ANALOG_MASK) 状态

● 正确的模拟引脚:代码将 PA16~PA23(网口差分信号)和 PA24、PA27(偏置电阻 RB)配置为 ANALOG_MASK 是完全正确的,这会让引脚交由内部模拟 PHY 模块直接接管。

● 错误的 LED 引脚:代码中误将 PA26 和 PA29 也配置成了 ANALOG_MASK。在的原理图中,它们分别对应 ECAT_PHY1_LED0 和 ECAT_PHY0_LED0。驱动 LED 需要数字高低电平,因此它们不能配置为模拟引脚。

修正方案 请在代码中直接删除以下两行:

c 复制代码
HPM_IOC->PAD[IOC_PAD_PA29].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;
HPM_IOC->PAD[IOC_PAD_PA26].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;

全部代码如下:

c 复制代码
void init_pins(void)
{
    /* 1. ESC 硬件外设与总线引脚 */
    HPM_IOC->PAD[IOC_PAD_PA31].FUNC_CTL = IOC_PA31_FUNC_CTL_ESC0_MDC;
    HPM_IOC->PAD[IOC_PAD_PA30].FUNC_CTL = IOC_PA30_FUNC_CTL_ESC0_MDIO;
    HPM_IOC->PAD[IOC_PAD_PA25].FUNC_CTL = IOC_PA25_FUNC_CTL_ESC0_CTR_0;  /* ECAT_PHY1_LED1 (保持硬件控制) */
    HPM_IOC->PAD[IOC_PAD_PA28].FUNC_CTL = IOC_PA28_FUNC_CTL_ESC0_CTR_1;  /* ECAT_PHY0_LED1 (保持硬件控制) */

    /* 2. LED0 控制引脚 (从 ANALOG 修正为 GPIO 模式) */
    HPM_IOC->PAD[IOC_PAD_PA26].FUNC_CTL = IOC_PA26_FUNC_CTL_GPIO_A_26;  /* ECAT_PHY1_LED0 */
    HPM_IOC->PAD[IOC_PAD_PA29].FUNC_CTL = IOC_PA29_FUNC_CTL_GPIO_A_29;  /* ECAT_PHY0_LED0 */

    /* 3. 内置 EPHY 模拟引脚与偏置电阻引脚 */
    HPM_IOC->PAD[IOC_PAD_PA16].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;  /* ECAT_PHY1_RXN */
    HPM_IOC->PAD[IOC_PAD_PA17].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;  /* ECAT_PHY1_RXP */
    HPM_IOC->PAD[IOC_PAD_PA18].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;  /* ECAT_PHY1_TXN */
    HPM_IOC->PAD[IOC_PAD_PA19].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;  /* ECAT_PHY1_TXP */
    HPM_IOC->PAD[IOC_PAD_PA20].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;  /* ECAT_PHY0_RXN */
    HPM_IOC->PAD[IOC_PAD_PA21].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;  /* ECAT_PHY0_RXP */
    HPM_IOC->PAD[IOC_PAD_PA22].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;  /* ECAT_PHY0_TXN */
    HPM_IOC->PAD[IOC_PAD_PA23].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;  /* ECAT_PHY0_TXP */
    HPM_IOC->PAD[IOC_PAD_PA24].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;  /* ECAT_PHY1_RB 偏置电阻 */
    HPM_IOC->PAD[IOC_PAD_PA27].FUNC_CTL = IOC_PAD_FUNC_CTL_ANALOG_MASK;  /* ECAT_PHY0_RB 偏置电阻 */

    /* 4. 芯片内部 MAC-EPHY 数字走线 (PV/PW 虚拟引脚,保持系统默认映射) */
    HPM_IOC->PAD[IOC_PAD_PV00].FUNC_CTL = IOC_PV00_FUNC_CTL_ESC0_P0_RXDV;
    HPM_IOC->PAD[IOC_PAD_PV01].FUNC_CTL = IOC_PV01_FUNC_CTL_ESC0_P0_RXD_0;
    HPM_IOC->PAD[IOC_PAD_PV02].FUNC_CTL = IOC_PV02_FUNC_CTL_ESC0_P0_RXD_1;
    HPM_IOC->PAD[IOC_PAD_PV03].FUNC_CTL = IOC_PV03_FUNC_CTL_ESC0_P0_RXD_2;
    HPM_IOC->PAD[IOC_PAD_PV04].FUNC_CTL = IOC_PV04_FUNC_CTL_ESC0_P0_RXD_3;
    HPM_IOC->PAD[IOC_PAD_PV05].FUNC_CTL = IOC_PV05_FUNC_CTL_ESC0_P0_RXCK;
    HPM_IOC->PAD[IOC_PAD_PV06].FUNC_CTL = IOC_PV06_FUNC_CTL_ESC0_P0_TXCK;
    HPM_IOC->PAD[IOC_PAD_PV07].FUNC_CTL = IOC_PV07_FUNC_CTL_ESC0_P0_TXD_0;
    HPM_IOC->PAD[IOC_PAD_PV08].FUNC_CTL = IOC_PV08_FUNC_CTL_ESC0_P0_TXD_1;
    HPM_IOC->PAD[IOC_PAD_PV09].FUNC_CTL = IOC_PV09_FUNC_CTL_ESC0_P0_TXD_2;
    HPM_IOC->PAD[IOC_PAD_PV10].FUNC_CTL = IOC_PV10_FUNC_CTL_ESC0_P0_TXD_3;
    HPM_IOC->PAD[IOC_PAD_PV11].FUNC_CTL = IOC_PV11_FUNC_CTL_ESC0_P0_TXEN;
    HPM_IOC->PAD[IOC_PAD_PV12].FUNC_CTL = IOC_PV12_FUNC_CTL_GPIO_V_12;
    HPM_IOC->PAD[IOC_PAD_PV15].FUNC_CTL = IOC_PV15_FUNC_CTL_ESC0_P0_RXER;

    HPM_IOC->PAD[IOC_PAD_PW00].FUNC_CTL = IOC_PW00_FUNC_CTL_ESC0_P1_RXDV;
    HPM_IOC->PAD[IOC_PAD_PW01].FUNC_CTL = IOC_PW01_FUNC_CTL_ESC0_P1_RXD_0;
    HPM_IOC->PAD[IOC_PAD_PW02].FUNC_CTL = IOC_PW02_FUNC_CTL_ESC0_P1_RXD_1;
    HPM_IOC->PAD[IOC_PAD_PW03].FUNC_CTL = IOC_PW03_FUNC_CTL_ESC0_P1_RXD_2;
    HPM_IOC->PAD[IOC_PAD_PW04].FUNC_CTL = IOC_PW04_FUNC_CTL_ESC0_P1_RXD_3;
    HPM_IOC->PAD[IOC_PAD_PW05].FUNC_CTL = IOC_PW05_FUNC_CTL_ESC0_P1_RXCK;
    HPM_IOC->PAD[IOC_PAD_PW06].FUNC_CTL = IOC_PW06_FUNC_CTL_ESC0_P1_TXCK;
    HPM_IOC->PAD[IOC_PAD_PW07].FUNC_CTL = IOC_PW07_FUNC_CTL_ESC0_P1_TXD_0;
    HPM_IOC->PAD[IOC_PAD_PW08].FUNC_CTL = IOC_PW08_FUNC_CTL_ESC0_P1_TXD_1;
    HPM_IOC->PAD[IOC_PAD_PW09].FUNC_CTL = IOC_PW09_FUNC_CTL_ESC0_P1_TXD_2;
    HPM_IOC->PAD[IOC_PAD_PW10].FUNC_CTL = IOC_PW10_FUNC_CTL_ESC0_P1_TXD_3;
    HPM_IOC->PAD[IOC_PAD_PW11].FUNC_CTL = IOC_PW11_FUNC_CTL_ESC0_P1_TXEN;
    HPM_IOC->PAD[IOC_PAD_PW12].FUNC_CTL = IOC_PW12_FUNC_CTL_GPIO_W_12;
    HPM_IOC->PAD[IOC_PAD_PW15].FUNC_CTL = IOC_PW15_FUNC_CTL_ESC0_P1_RXER;
    HPM_IOC->PAD[IOC_PAD_PW20].FUNC_CTL = IOC_PW20_FUNC_CTL_ESC0_REFCK;
    HPM_IOC->PAD[IOC_PAD_PW21].FUNC_CTL = IOC_PW21_FUNC_CTL_ESC0_REFCK;
}

board.h配置修改如下:

c 复制代码
/* EtherCAT definitions */
/* ECAT PORT0 must support */
#define BOARD_ECAT_SUPPORT_PORT1 (1)
#define BOARD_ECAT_SUPPORT_PORT2 (0) /*hlp 1 require expansion board */

#define BOARD_ECAT_SUPPORT_RUN_ERROR_LED (0) /* board not supports RUN/ERROR led */

/* invert esc port link signal, require low level for linkup */
#define BOARD_ECAT_PORT0_LINK_INVERT false  /* depend on hardware */
#define BOARD_ECAT_PORT1_LINK_INVERT false /* depend on hardware */
#define BOARD_ECAT_PORT2_LINK_INVERT false /* depend on hardware */

#define BOARD_ECAT_PHY0_RESET_GPIO            HPM_GPIO0
#define BOARD_ECAT_PHY0_RESET_GPIO_PORT_INDEX GPIO_DO_GPIOV //GPIO_DO_GPIOB
#define BOARD_ECAT_PHY0_RESET_PIN_INDEX       (12)          //24

#define BOARD_ECAT_PHY1_RESET_GPIO            HPM_GPIO0
#define BOARD_ECAT_PHY1_RESET_GPIO_PORT_INDEX GPIO_DO_GPIOW  //GPIO_DO_GPIOB
#define BOARD_ECAT_PHY1_RESET_PIN_INDEX       (12)           //24

#define BOARD_ECAT_PHY2_RESET_GPIO            HPM_GPIO0
#define BOARD_ECAT_PHY2_RESET_GPIO_PORT_INDEX GPIO_DO_GPIOB
#define BOARD_ECAT_PHY2_RESET_PIN_INDEX       (24)
#define BOARD_ECAT_PHY_RESET_LEVEL            (0)

#define BOARD_ECAT_IN1_GPIO            HPM_GPIO0
#define BOARD_ECAT_IN1_GPIO_PORT_INDEX GPIO_DO_GPIOD
#define BOARD_ECAT_IN1_GPIO_PIN_INDEX  (6U)

#define BOARD_ECAT_IN2_GPIO            HPM_GPIO0
#define BOARD_ECAT_IN2_GPIO_PORT_INDEX GPIO_DO_GPIOD
#define BOARD_ECAT_IN2_GPIO_PIN_INDEX  (12U)

#define BOARD_ECAT_OUT1_GPIO            HPM_GPIO0
#define BOARD_ECAT_OUT1_GPIO_PORT_INDEX GPIO_DO_GPIOC
#define BOARD_ECAT_OUT1_GPIO_PIN_INDEX  (24U)

#define BOARD_ECAT_OUT2_GPIO            HPM_GPIO0
#define BOARD_ECAT_OUT2_GPIO_PORT_INDEX GPIO_DO_GPIOC
#define BOARD_ECAT_OUT2_GPIO_PIN_INDEX  (23)

#define BOARD_ECAT_OUT_ON_LEVEL (1)

/**
 * Macro Definitions Must Match Pin Configuration in pinmux.c
 *
 * The `BOARD_ECAT_NMII_LINKn_CTRL_INDEX` macro must equal
 * the `y` value in the pin's `IOC_PXxx_FUNC_CTL_ESC0_CTR_y` function assignment.
 *
 * Example:
 *  - Signal:    ECAT_NMII_LINK0
 *  - Pin:       PC20
 *  - pinmux.c:  `IOC_PC20_FUNC_CTL_ESC0_CTR_2` // Note the value '2'
 *  - Macro:     `#define BOARD_ECAT_NMII_LINK0_CTRL_INDEX 2` // Must also be '2'
 */
#define BOARD_ECAT_NMII_LINK0_CTRL_INDEX 1           //2
#define BOARD_ECAT_NMII_LINK1_CTRL_INDEX 0           //5
#define BOARD_ECAT_NMII_LINK2_CTRL_INDEX 6

/* ECAT PHY address definition */
#define BOARD_ECAT_PHY_ADDR_OFFSET (0U)             //1
#define BOARD_ECAT_PORT0_PHY_ADDR  (0U) /* actual PHY address = BOARD_ECAT_PHY_ADDR_OFFSET + BOARD_ECAT_PORT0_PHY_ADDR */
#define BOARD_ECAT_PORT1_PHY_ADDR  (1U) /* actual PHY address = BOARD_ECAT_PHY_ADDR_OFFSET + BOARD_ECAT_PORT1_PHY_ADDR */
#define BOARD_ECAT_PORT2_PHY_ADDR  (2U) /* actual PHY address = BOARD_ECAT_PHY_ADDR_OFFSET + BOARD_ECAT_PORT2_PHY_ADDR */

#define BOARD_EEPROM_I2C_BASE     HPM_I2C0
/* Abstract eeprom id definition */
#define BOARD_EEPROM_ABSTRACT_ID E2P_DEVICE_AT24C128

/* the address of ecat flash emulate eeprom component in flash */
#define BOARD_ECAT_FLASH_EMULATE_EEPROM_ADDR (0x80000) /* offset 512K */

我是用的SDK版本为V1.11。

修改以上配置后就可以正常运行了,剩下的安装官方的步骤(新建工程,烧录xml文件,Scan等操作即可)

相关推荐
szxinmai主板定制专家4 天前
Zynq MPSoC半导体高精度运动控制方案|FPGA硬件插补实现亚微米级伺服实时控制
人工智能·嵌入式硬件·fpga开发·zynq·运动控制·ethercat
Funcience18 天前
基于FCE1100 ASIC芯片(替代ET1100)的调试开发板:多配置接口,支持功能定制
ethercat·工业以太网
ARM|X86+FPGA工业主板厂家21 天前
AI视觉跟随运动控制实战|RK3588 NPU检测+FPGA EtherCAT多轴联动精准跟随方案,适用于半导体视觉对位等
人工智能·fpga开发·硬件工程·ethercat·实时系统
星恒讯工业路由器1 个月前
三大工业以太网协议选型对比
网络·物联网·ethercat·profinet·ethernet/ip·工业以太网协议
nh75271 个月前
(一)HPM自定义工程创建实操
单片机·risc-v·hpm·先楫
sibo_yzm1 个月前
ECE-583快速打通欧姆龙PLC与Modbus TCP客户端连接
tcp/ip·modbus tcp·工业通信·光伏·ethercat·工业网关·上海泗博
沐多2 个月前
【原创】如何利用网卡TSN硬件特性实现EtherCAT 确定性发帧与 DC 同步?
ethercat·实时性能
沂水弦音2 个月前
软控 EI 系列模块优势与竞品对比分析:面向 EtherCAT 分布式 I/O 的工程选型视角
分布式·制造·工业自动化·ethercat·io模块
北京盟通科技官方账号2 个月前
NVIDIA Jetson 全球生态链分析:acontis(代表产品EC-Master)在机器人 EtherCAT 赛道的硬核价值
人工智能·机器人·ethercat·技术原理·盟通科技·ec-master·acontis