3.2 Implementaci´ on de un Stack
3.2.2 Capa de enlace de datos
3.2.2.1 Estructura del paquete
Antes de ver los servicios de la capa de enlace de datos, es importante mostrar la composici´on del paquete de EtherCAT a nivel de esta capa. En la Figura3.4se muestra el marco (frame, en Ingl´es) de un paquete EtherCAT.
Figura 3.4: Estructura de un paquete de EtherCAT. Tomada de [24] con fines acad´emicos
Dependiendo del tipo de paquete que se est´e utilizando, la informaci´on puede organizarse dentro del paquete utilizando bloques llamados DLPDU (Data Link Protocol Data Unit); tambi´en llamados datagramas. Cada datagrama contiene ´ordenes para pedir informaci´on a cada nodo. Sin embargo, como se ver´a m´as adelante, no es necesario utilizar varios datagramas para acceder a todos los esclavos. Como se ver´a m´as adelante, con los m´etodos de direccionamiento l´ogico se puede acceder a varios esclavos utilizando un solo datagrama.
En la estructura de la Figura3.4se puede observar que hay un encabezado de EtherCAT el cual contiene:
• 11 bits que indican la longitud de todos los datagramas del mensaje. • 1 bit reservado que debe tener siempre un valor de 0.
• 4 bits que indican el tipo de los mensajes de EtherCAT. En operaci´on normal, estos 4 bits representan un 1; es decir, en binario tiene un valor de 0001. Otros tipos de mensajes incluen mensajes de red y correos que utilizan el servicio de buz´on (mailbox) de la capa; estos mensajes no dividen el paquete de Ethernet en datagramas. Los mensajes de red configuran las variables de la red de EtheCAT. Mientras que los correos son utilizados para establecer comunicaci´on entre esclavos y entre dispositivos fuera del segmento. Cuando se describa la capa de aplicaci´on
se van a describir varios de estos servicios en detalle. En la tabla3.2se presentan los tipos de paquetes que utiliza EtherCAT.
ID Protocolo Descripci´on
0x01 Datagramas En este protocolo el paquete
se divide en secciones lla-
madas datagramas. Cada
datagrama contiene instruc- ciones que sirven para leer y/o escribir la memoria de los no- dos esclavos
0x04 Mailbox Es un protocolo utilizado para
comunicar nodos esclavos en- tre s´ı y para implementar ser- vicios de la capa de apli- caci´on orientados a transmi- tir archivos, transmitir men- sajes convencionales de una red Ethernet y enviar reportes de errores. En cada paquete solo es posible transportar un correo por lo que la utilizaci´on del paquete puede disminuir. Por esta raz´on, los Mailbox generalmente se utilizan en la configuraci´on de la red y en aplicaciones de comunicaci´on as´ıncrona.
0x05 Paquetes de red Son paquetes utilizados
para la configuraci´on de las
llamadas variables de red.
Estas variables se utilizan para diagnosticar y evaluar
el rendimiento de la red
EtherCAT. Un paquete de
red puede contener varias
variables de red.
Tabla 3.2: Tipos de paquetes utilizados por EtherCAT a nivel de la capa de enlace de datos
Cuando se utilizan datagramas, adem´as del encabezado de EtherCAT, el paquete con- tiene:
• Un encabezado est´andar de Ethernet que contiene la informaci´on de la Figura1.20. Las direcciones MAC de fuente y destino, por ejemplo, hacen parte de este en- cabezado, junto a un identificador del tipo de Ethernet que se est´a utilizando.
• Datagramas que contienen instrucciones de la capa de enlace de datos y la infor- maci´on necesaria para ejecutar esas instrucciones.
• Encabezados de datagrama (1 por cada datagrama) el cual contiene, entre otras cosas, la direcci´on del dispositivo esclavo que utiliza esa informaci´on y una direcci´on f´ısica. El uso de una direcci´on o de la otra depende del modo de direccionamiento que se utilice. Los segmentos (l´ıneas de EtherCAT, Figura 3.2) pueden utilizar alguna de estas direcciones o las 2 dependiendo del modo de direccionaamiento que se est´e utilizando para acceder a la informaci´on de los nodos esclavos.
• Un FCS (Frame Check Sequency) que sirve para verificar que no haya errores en el paquete. El FCS hace parte del encabezado est´andar de Ethernet y contiene el c´alculo del CRC (Chequeo de Redundancia C´ıclica). Cada vez que un paquete llega a un esclavo, ´este verifica si hay errores y calcula un nuevo FCS antes de retransmitirlo siempre y cuando el mensaje haya modificado el mensaje que lleg´o. En caso de detectar un error, el esclavo no lo corrige pero si informa al maestro que ocurri´o un error.
El encabezado del datagrama no solo contiene las direcciones de los nodos esclavos a los cuales se dirige cada instrucci´on sino que tambi´en contiene la instrucci´on a ejecutar y los par´ametros de la instrucci´on; hay una instrucci´on por cada datagrama. En la Figura3.5
se muestra la composici´on del encabezado de un datagrama.
Figura 3.5: Estructura de un datagrama de EtherCAT. Tomada de [25] con fines acad´emicos
Cada DLPDU o datagrama contiene:
• Un c´odigo para cada orden (CMD); m´as adelante se muestran las instrucciones. • La longitud de los datos del datagrama en n´umero de bytes (len); los datos se
• Un ´ındice (IDX) que sirve como identificador de la orden por parte del maestro. Es decir, el maestro utiliza un identificador para las ´ordenes que da con el objetivo de monitorearlas.
• Un campo de 32 bits para direcciones que tiene una direcci´on de incremento y una direcci´on de posici´on; el uso var´ıa dependiendo del tipo de direccionamiento como se ver´a m´as adelante.
• Las R y la C son campos reservados cuyo uso var´ıa dependiendo de la instrucci´on. • La M es el par´ametro NEXT que sirve para indicar el final del datagrama. Es decir, cuando est´a en 0 indica que en el paquete no hay m´as datagramas despu´es del datagrama que se est´a leyendo y cuando est´a 1 indica que hay m´as datagramas en el paquete.
• Un espacio llamado IRQ que est´a reservado y que es utilizado por algunas instruc- ciones para enmascarar eventos.
• Los datos del datagrama que deben seguir unas normas de codificaci´on definidas en el est´andar ETG.1001.4. Las normas definen los tipos de datos n´umericos y los tipos de caracteres, as´ı como la forma en que estos deben organizarse dentro del datagrama.
• Un WKC (Working Counter, 1 por cada datagrama) que se aumenta cada vez que un nodo accede a la informaci´on del DLPDU ya sea para leerla o modificarla; cuando se lee se incrementa suma 1 y cuando se escribe se suma 2 al contador. El maestro tiene presente cu´anto deber´ıa cambiar cada WKC, por lo que puede detectar errores si los valores de los WKC que retornan de los esclavos no coinciden con los registros del maestro.
El acceso a los nodos utilizando datagramas es el m´etodo m´as eficiente en t´erminos de utilizaci´on del ancho de banda ya que permite concatenar varias ´ordenes en un solo paquete; cuando se utiliza direccionamiento l´ogico se puede acceder a todos los nodos con un solo datagrama. Los paquetes que transmiten correos (Mailbox) generalmente utilizan un s´olo paquete por cada correo. Esto hace que su uso sea ineficiente a la hora de transmitir datos de proceso (datos asociados a la operaci´on normal del sistema de control). Sin embargo, al utilizar un paquete de Ethernet completo, los correos pueden transmitir una gran cantidad de informaci´on. Esto hace que se utilicen para transmitir archivos, paquetes TCP/IP y UDP/IP que pueden venir de redes de computadores convencionales; por ejemplo las redes a nivel Host en un sistema de control distribuido. En resumen, hay 3 tipos de paquetes de EtherCAT (Ver Tabla3.2) y uno de esos tipos, los datagramas, tienen 3 formas de direccionamiento que se ver´an a continuaci´on.