Articulo de referencia

CANopen

CANopen es una pila de protocolos de comunicación y una especificación de perfil de dispositivo para sistemas embebidos utilizados en automatización . En términos del modelo OSI...

CANopen es una pila de protocolos de comunicación y una especificación de perfil de dispositivo para sistemas embebidos utilizados en automatización . En términos del modelo OSI , CANopen implementa las capas superiores a la capa de red , incluida esta última. El estándar CANopen consta de un esquema de direccionamiento, varios protocolos de comunicación pequeños y una capa de aplicación definida por un perfil de dispositivo. Los protocolos de comunicación admiten la gestión de red, la monitorización de dispositivos y la comunicación entre nodos, incluyendo una capa de transporte simple para la segmentación/desegmentación de mensajes. El protocolo de nivel inferior que implementa las capas de enlace de datos y física suele ser CAN ( Controller Area Network ), aunque los dispositivos que utilizan otros medios de comunicación (como Ethernet Powerlink o EtherCAT ) también pueden implementar el perfil de dispositivo CANopen.

Los perfiles básicos de dispositivo y comunicación de CANopen se especifican en la especificación CiA 301 publicada por CAN in Automation .Los perfiles para dispositivos más especializados se construyen sobre este perfil básico y se especifican en numerosos otros estándares publicados por CAN in Automation, como CiA 401.para módulos de E/S y CiA 402para el control del movimiento.

Modelo de dispositivo

Todos los dispositivos CANopen deben implementar ciertas características estándar en su software de control.

  • Una unidad de comunicación implementa los protocolos para el envío de mensajes a los demás nodos de la red.
  • El arranque y el reinicio del dispositivo se controlan mediante una máquina de estados . Esta debe contener los estados Inicialización, Preoperacional, Operacional y Detenido. Las transiciones entre estados se realizan mediante el envío de un objeto de comunicación de gestión de red (NMT) al dispositivo.
  • El diccionario de objetos es una matriz de variables con un índice de 16 bits. Además, cada variable puede tener un subíndice de 8 bits. Las variables se pueden usar para configurar el dispositivo y reflejar su entorno, es decir, contienen datos de medición.
  • La aplicación ejecuta la función deseada del dispositivo una vez que la máquina de estados se ha configurado en el estado operativo. La aplicación se configura mediante variables en el diccionario de objetos y los datos se envían y reciben a través de la capa de comunicación.

Diccionario de objetos

Los dispositivos CANopen deben tener un diccionario de objetos, que se utiliza para la configuración y la comunicación con el dispositivo. Una entrada en el diccionario de objetos se define de la siguiente manera:

  • Índice , la dirección de 16 bits del objeto en el diccionario.
  • Nombre del objeto (tipo/tamaño del objeto), un tipo simbólico del objeto en la entrada, como una matriz, un registro o una variable simple.
  • Nombre , una cadena que describe la entrada
  • Tipo , indica el tipo de dato de la variable (o el tipo de dato de todas las variables de una matriz).
  • Atributo , que proporciona información sobre los derechos de acceso para esta entrada; puede ser lectura/escritura, solo lectura o solo escritura.
  • El campo Obligatorio/Opcional (M/O) define si un dispositivo que cumple con la especificación del dispositivo debe implementar este objeto o no.

Los tipos de datos básicos para los valores del diccionario de objetos, como booleanos , enteros y números de coma flotante, están definidos en el estándar (su tamaño en bits se almacena opcionalmente en la definición de tipo correspondiente, rango de índices 0x0001–0x001F), así como los tipos de datos compuestos, como cadenas, matrices y registros (definidos en el rango de índices 0x0040–0x025F). Los tipos de datos compuestos pueden tener subíndices de 8 bits; el valor en el subíndice 0 de una matriz o registro indica el número de elementos en la estructura de datos y es de tipo UNSIGNED8.

Por ejemplo, los parámetros de comunicación del dispositivo, estandarizados en el perfil básico del dispositivo CiA 301.se encuentran mapeados en el rango de índice 0x1000–0x1FFF ("área de perfil de comunicación"). Las primeras entradas en esta área son las siguientes:

Con las herramientas adecuadas, el contenido del diccionario de objetos de un dispositivo, basado en una hoja de datos electrónica (EDS), se puede personalizar en un archivo de configuración de dispositivo (DCF) para integrar el dispositivo en una red CANopen específica. Según CiA 306El formato del archivo EDS es el formato de archivo INI . Existe un formato de estilo XML próximo, que se describe en CiA 311..

Comunicación

Objetos de comunicación

El bus CAN , la capa de enlace de datos de CANopen, solo puede transmitir paquetes cortos que constan de un identificador de 11 bits, un bit de solicitud de transmisión remota (RTR) y de 0 a 8 bytes de datos. El estándar CANopen divide el identificador de trama CAN de 11 bits en un código de función de 4 bits y un  identificador de nodo CANopen de 7 bits. Esto limita el número de dispositivos en una red CANopen a 127 (el 0 está reservado para la difusión). Una extensión del estándar del bus CAN (CAN 2.0 B) permite identificadores de trama extendidos de 29 bits, pero en la práctica, las redes CANopen lo suficientemente grandes como para necesitar este rango de identificadores extendido son poco frecuentes.

En CANopen, el identificador de 11 bits de una trama CAN se conoce como identificador de objeto de comunicación (COB-ID). En caso de colisión de transmisión, el arbitraje del bus CAN permite que la trama con el identificador más pequeño se transmita primero y sin demora. El uso de un código bajo para funciones críticas en cuanto al tiempo garantiza la menor demora posible.

Contenido de una trama CANopen:

El marco de datos con un identificador de 11 bits también se denomina "formato de marco base".

La configuración predeterminada de CAN-ID ordena las tramas asignando un código de función (NMT, SYNC, EMCY, PDO, SDO...) a los primeros 4 bits, dando prioridad a las funciones críticas. Sin embargo, esta configuración puede personalizarse para fines específicos (excepto para NMT y SDO, necesarias para la comunicación básica).

El estándar reserva ciertos identificadores CAN para la gestión de red y las transferencias SDO. Algunos códigos de función e identificadores CAN deben asignarse a la funcionalidad estándar después de la inicialización del dispositivo, pero pueden configurarse para otros usos posteriormente.

Conjunto de conexiones predefinido

Para estructuras de red sencillas, CANopen admite una asignación predefinida de identificadores de mensajes.

Las direcciones de transmisión y recepción se dan desde el punto de vista del dispositivo. Por lo tanto, una consulta a un dispositivo en la red enviaría un 0x600+nodeid y recibiría como respuesta un 0x580+nodeid. [ 1 ]

Modelos de comunicación

En la mensajería entre nodos CANopen se utilizan diferentes tipos de modelos de comunicación.

En una relación maestro/esclavo , un nodo CANopen se designa como maestro, el cual envía o solicita datos a los esclavos. El protocolo NMT es un ejemplo de un modelo de comunicación maestro/esclavo.

En el protocolo SDO se implementa una relación cliente/servidor , donde el cliente SDO envía datos (el índice y el subíndice del diccionario de objetos) a un servidor SDO, que responde con uno o más paquetes SDO que contienen los datos solicitados (el contenido del diccionario de objetos en el índice especificado).

En los protocolos Heartbeat y Node Guarding se utiliza un modelo productor/consumidor . En el modelo push , el productor envía datos al consumidor sin una solicitud específica, mientras que en el modelo pull , el consumidor debe solicitar los datos al productor.

Protocolos

Protocolos de gestión de red (NMT)

Los protocolos NMT se utilizan para emitir comandos de cambio de estado de la máquina (por ejemplo, para iniciar y detener los dispositivos), detectar arranques de dispositivos remotos y condiciones de error.

El protocolo de control del módulo es utilizado por el maestro NMT para cambiar el estado de los dispositivos. El COB-ID de la trama CAN de este protocolo siempre es 0, lo que significa que tiene un código de función 0 y  un ID de nodo 0, lo que implica que todos los nodos de la red procesarán este mensaje. El  ID de nodo real al que se dirige el comando se indica en la parte de datos del mensaje (en el segundo byte). Este también puede ser 0, lo que significa que todos los dispositivos del bus deben pasar al estado indicado.

El protocolo Heartbeat se utiliza para monitorizar los nodos de la red y verificar que están activos. Un productor de Heartbeat (normalmente un dispositivo esclavo) envía periódicamente un mensaje con el código de función binario 1110 y su  ID de nodo (COB-ID19 = 0x700 +  ID de nodo). La parte de datos de la trama contiene un byte que indica el estado del nodo. El consumidor de Heartbeat lee estos mensajes. Si los mensajes no llegan dentro de un límite de tiempo determinado (definido en el diccionario de objetos de los dispositivos), el consumidor puede tomar medidas, como reiniciar el dispositivo o indicar un error. El formato de la trama es:

Los dispositivos CANopen deben realizar la transición del estado Inicializando al estado Preoperacional automáticamente durante el arranque. Cuando se produce esta transición, se envía un único mensaje de latido al bus. Este es el protocolo de arranque .

Existe un protocolo de respuesta/replicación (modelo pull), denominado protección de nodos, para la monitorización de esclavos.

Protocolo de objeto de datos de servicio (SDO)

El protocolo SDO se utiliza para configurar y leer valores del diccionario de objetos de un dispositivo remoto. El dispositivo cuyo diccionario de objetos se consulta es el servidor SDO, y el dispositivo que accede al dispositivo remoto es el cliente SDO. La comunicación siempre la inicia el cliente SDO. En la terminología de CANopen, la comunicación se visualiza desde el servidor SDO, de modo que una lectura del diccionario de objetos resulta en una carga SDO y una escritura en una entrada del diccionario es una descarga SDO.

Dado que los valores del diccionario de objetos pueden superar el límite de ocho bytes de una trama CAN, el protocolo SDO implementa la segmentación y dessegmentación de mensajes más largos. En realidad, existen dos protocolos: descarga/carga SDO y descarga/carga de bloques SDO. La transferencia de bloques SDO es una incorporación reciente al estándar, que permite transferir grandes cantidades de datos con una sobrecarga de protocolo ligeramente menor.

Los COB-ID de los mensajes de transferencia SDO correspondientes, tanto del cliente al servidor como del servidor al cliente, se pueden configurar en el diccionario de objetos. Se pueden configurar hasta 128 servidores SDO en el diccionario de objetos, en las direcciones 0x1200 - 0x127F. De manera similar, las conexiones de cliente SDO del dispositivo se pueden configurar con variables en las direcciones 0x1280 - 0x12FF. Sin embargo, el conjunto de conexiones predefinido define un canal SDO que se puede usar incluso justo después del arranque (en el estado preoperacional) para configurar el dispositivo. Los COB-ID de este canal son 0x600 +  ID de nodo para la recepción y 0x580 +  ID de nodo para la transmisión.

Para iniciar una descarga, el cliente SDO envía los siguientes datos en un mensaje CAN con el COB-ID 'receive' del canal SDO.

  • ccs es el especificador de comando del cliente para la transferencia SDO. Este valor es 0 para la descarga de un segmento SDO, 1 para iniciar la descarga, 2 para iniciar la carga, 3 para la carga de un segmento SDO, 4 para abortar una transferencia SDO, 5 para la carga de un bloque SDO y 6 para la descarga de un bloque SDO.
  • n es el número de bytes en la parte de datos del mensaje que no contienen datos, válido solo si e y s están definidos.
  • Si está activado, el bit e indica una transferencia acelerada, es decir, todos los datos intercambiados están contenidos en el mensaje. Si este bit está desactivado, la transferencia es segmentada, lo que significa que los datos no caben en un solo mensaje y se utilizan varios.
  • Si se establece, s indica que el tamaño de los datos se especifica en n (si se establece e) o en la parte de datos del mensaje.
  • El índice es el índice del diccionario de objetos de los datos a los que se va a acceder, codificado en little endian.
  • subíndice es el subíndice de la variable del diccionario de objetos
  • Los datos contienen la información que se va a cargar en caso de una transferencia acelerada (e está configurado), o el tamaño de los datos que se van a cargar (s está configurado, e no está configurado), a menudo codificados en little endian.

Protocolo de objeto de datos de proceso (PDO)

El protocolo Process Data Object (PDO) se utiliza para procesar datos en tiempo real entre distintos nodos. Se pueden transferir hasta 8 bytes (64 bits) de datos por cada PDO, ya sea desde o hacia el dispositivo. Un PDO puede contener varias entradas en el diccionario de objetos, y los objetos dentro de un PDO son configurables mediante las entradas del diccionario de objetos de asignación y de parámetros.

Existen dos tipos de PDO: de transmisión y de recepción (TPDO y RPDO). El primero se utiliza para datos provenientes del dispositivo (el dispositivo es productor de datos) y el segundo para datos enviados al dispositivo (el dispositivo es consumidor de datos); es decir, con RPDO se pueden enviar datos al dispositivo y con TPDO se pueden leer datos del dispositivo. En el conjunto de conexiones predefinido, hay identificadores disponibles para cuatro TPDO y cuatro RPDO. Con la configuración, es posible configurar hasta 512 PDO.

Los PDO se pueden enviar de forma síncrona o asíncrona. Los PDO síncronos se envían después del mensaje SYNC, mientras que los asíncronos se envían tras un activador interno o externo. Por ejemplo, puede solicitar a un dispositivo que transmita un TPDO con los datos necesarios enviando un TPDO vacío con el indicador RTR (si el dispositivo está configurado para aceptar solicitudes de TPDO).

Con los RPDO, por ejemplo, puede iniciar dos dispositivos simultáneamente. Solo necesita asignar el mismo RPDO a dos o más dispositivos diferentes y asegurarse de que esos RPDO estén asignados con el mismo COB-ID.

Protocolo de objeto de sincronización (SYNC)

El productor de sincronización proporciona la señal de sincronización al consumidor de sincronización. Cuando el consumidor de sincronización recibe la señal, comienza a realizar sus tareas síncronas.

En general, la fijación del tiempo de transmisión de los mensajes PDO síncronos, junto con la periodicidad de transmisión del objeto Sync, garantiza que los dispositivos sensores puedan organizarse para muestrear las variables del proceso y que los dispositivos actuadores puedan aplicar su actuación de forma coordinada.

El identificador del objeto Sync está disponible en el índice 1005h.

Protocolo de objeto de marca de tiempo (TIME)

Normalmente, el objeto Time-Stamp representa una hora como un campo de 6 bytes: un recuento de milisegundos después de la medianoche (como máximo 27 bits, almacenados en un campo de 32 bits) y un número de días sin signo de 16 bits desde el 1 de enero de 1984. (Esto provocará un desbordamiento el 7 de junio de 2163).

Algunas aplicaciones críticas en cuanto al tiempo, especialmente en redes extensas con velocidades de transmisión reducidas, requieren una sincronización muy precisa; puede ser necesario sincronizar los relojes locales con una precisión del orden de microsegundos. Esto se logra mediante el protocolo de sincronización de alta resolución opcional, que emplea un formato especial de mensaje de marca de tiempo para compensar la inevitable desviación de los relojes locales.

La marca de tiempo de alta resolución está codificada como unsigned32 con una resolución de 1 microsegundo, lo que significa que el contador de tiempo se reinicia cada 72 minutos. Se configura mapeando la marca de tiempo de alta resolución (objeto 1013h) a un PDO.

Protocolo de Objeto de Emergencia (EMCY)

Los mensajes de emergencia se activan al producirse un error interno grave en un dispositivo y se transmiten desde la aplicación afectada a los demás dispositivos con alta prioridad. Esto los hace idóneos para alertas de error de tipo interrupción. Un telegrama de emergencia solo puede enviarse una vez por evento de error; es decir, los mensajes de emergencia no deben repetirse. Mientras no se produzcan nuevos errores en un dispositivo, no es necesario enviar más mensajes de emergencia. Mediante los códigos de error de emergencia definidos en el perfil de comunicación CANopen, el registro de errores y la información adicional específica del dispositivo se especifican en los perfiles de dispositivo.

Inicialización

Ejemplo de registro de comunicaciones entre un maestro y dos esclavos transductores de presión configurados con ID 1 y  ID de nodo 2.

Hoja de datos electrónica

La Hoja de Datos Electrónica (EDS, por sus siglas en inglés) es un formato de archivo, definido en CiA306, que describe el comportamiento de comunicación y las entradas del diccionario de objetos de un dispositivo. Esto permite que herramientas como las de servicio, configuración y desarrollo, entre otras, gestionen los dispositivos correctamente.

Estos archivos EDS son obligatorios para superar la prueba de conformidad CiA CANopen.

Desde finales de 2007, en CiA311 se define un nuevo formato basado en XML llamado XDD. XDD cumple con la norma ISO 15745.

Glosario de términos de CANopen

  • PDO : Objeto de datos de proceso - Entradas y salidas. Valores de tipo velocidad de rotación, voltaje, frecuencia, corriente eléctrica, etc.
  • SDO : Objeto de datos de servicio: configuración, posiblemente  ID de nodo, velocidad de transmisión, desplazamiento, ganancia, etc.
  • COB-ID : Identificador de objeto de comunicación
  • ID CAN : Identificador CAN. Este es el identificador de mensaje CAN de 11 bits que se encuentra al principio de cada mensaje CAN en el bus.
  • EDS : Hoja de datos electrónica. Se trata de un archivo con formato INI o XML.
  • DCF : Archivo de configuración del dispositivo. Se trata de un archivo EDS modificado con ajustes para  el ID del nodo y la velocidad de transmisión.

Véase también

Referencias

  1. ^ Especificación de la capa de aplicación CANopen CiA 301, descargable gratuitamente desdeCAN in Automation
  2. ^ Especificación de la hoja de datos electrónicos (EDS) CiA 306 CANopen
  3. ^ Especificación CiA 311 CANopen XML-EDS
  4. ^ Conjunto de conexiones predefinidas de CANopen Basics
  5. ^ CiA 401 Especificación del perfil de dispositivo CANopen para módulos de E/S genéricos, descargable gratuitamente desdeCAN in Automation
  6. ^ Perfil de dispositivo CANopen CiA 402 para controladores de movimiento y variadores (igual que IEC 61800-7-201/301)
  1. "SDO - Service Data Objects - CanOpen" . ByteMe . Consultado el 7 de junio de 2023 .
  • Orígenes de CANopen - Proyecto Esprit ASPIC 1993 (Bosch, Universidad de Newcastle, Universidad de Ciencias Aplicadas de Reutlingen)
  • Acerca de CANopen (canopensolutions.com)
  • Introducción al protocolo CANopen (microcontrol.net)
  • Uso de identificadores en redes CANopen
  • CanFestival: un marco multiplataforma CANopen de código abierto.
  • CanOpenNode: un marco de trabajo CANopen de código abierto para microcontroladores y Linux.
  • Lely CANopen: una biblioteca CANopen de código abierto para maestros y esclavos.
  • openCANopen - Un maestro de CANopen de código abierto
  • Proyecto CANopen Stack: una pila CANopen de código abierto y flexible para microcontroladores.
  • CANopen para Python
  • Boletín informativo de CAN: Información sobre CAN, CANopen y J1939
  • Páginas educativas de CANopen
  • Introducción a los fundamentos de CANopen (en www.canopen-solutions.com)
  • Wiki de la comunidad CANopen-Lift
  • CANeds: Editor gratuito de archivos EDA y XDD
  • Portal en línea de CAN en Automatización
  • CANopen - Capa de aplicación y perfil de comunicación general
Obtenido de " https://en.wikipedia.org/w/index.php?title=CANopen&oldid=1360917677 "