Hemos mejorado la librería Ethernet para permitir la configuración de los modos de operación del puerto.
Instalación
La librería de Ethernet mejorada esta disponible en la versión 1.1.45 del paquete de placas de M-Duino y la versión 2.3.0 del paquete de placas de ESP32 PLC.
Para instalar el paquete de placas, sigue los pasos de este blog:
Cómo instalar las placas de Industrial Shields en Arduino IDE
Si tienes la librería Ethernet de Arduino instalada en Documentos/Arduino/libraries, Arduino IDE podría optar por usar esa en lugar de la de Industrial Shields.
Uso
Por defecto, el Ethernet está configurado para ser totalmente compatible y con la auto-negociación habilitada, pero se puede cambiar llamando al método PHYconf:
Ethernet.PHYconf(PHY::H100);
Estos son todos los modos de operación que puedes elegir:
Bits | Descripción | |
PHY::H10 | 000 | 10BT Half-duplex, sin Auto-negociación |
PHY::F10 | 001 | 10BT Full-duplex, sin Auto-negociación |
PHY::H100 | 010 | 100BT Half-duplex, sin Auto-negociación |
PHY::F100 | 011 | 100BT Full-duplex, sin Auto-negociación |
PHY::H100Auto | 100 | 100BT Half-duplex, con Auto-negociación |
PHY::Off | 110 | Apagado |
PHY::All | 111 | Compatible con todo, con Auto-negociación |
Los bits enumerados arriba representan los bits en las posiciones 5, 4 y 3 del registro PHYCFGR.
Puedes comprobar el modo actual del Ethernet usando el método PHYget:
Ethernet.PHYget();
Esto devolverá el valor actual del registro PHYCFGR en decimal. Para comprobar el valor de los bits 5, 4 y 3 habrá que convertir el valor a binario.
Tiempo de respuesta medido
Hemos hecho unas cuantas pruebas para medir el tiempo de respuesta del puerto Ethernet, aqui estan los resultados:
Mínimo | Media | Máximo | |
14IOS 100BT | 0.661 ms | 1.101 ms | 1.575 ms |
14IOS 10BT | 0.999 ms | 1.831 ms | 2.531 ms |
ESP32 100BT | 0.355 ms | 0.982 ms | 1.449 ms |
ESP32 10BT | 0.976 ms | 1.713 ms | 7.789 ms |
M-Duino 100BT | 0.375 ms | 0.995 ms | 1.792 ms |
M-Duino 10BT | 0.747 ms | 1.772 ms | 8.835 ms |

Librería Ethernet mejorada para M-Duino y ESP32 PLC