Skip to main content

Ejemplo: CANopen

Producto: CODESYS CANopen Manager SL

Este ejemplo trata sobre la interfaz de programación de la pila de comunicación del Maestro CANopen y el Esclavo CANopen. El proyecto contiene ejemplos de SDO, NMT, diagnósticos y la configuración dinámica de parámetros de comunicación (tasa de baudios, ID de red, ID de nodo) y muchos más.

Descripción

El proyecto contiene diferentes ejemplos para usar la interfaz de programación de la pila CANopen Master y CANopen Slave. Los temas que se manejan incluyen los siguientes:

  • SDO (acelerado, segmentado, bloque), acceso al diccionario de objetos

  • Gestión de red (NMT)

  • Diagnóstico (estado CANopen, EMCY)

  • Controlador de eventos para el diccionario de objetos y la máquina de estado del administrador CANopen

  • Reconfigurar: cambio dinámico de velocidad en baudios, ID de red e ID de nodo

  • Acceso a la configuración CAN a través de la biblioteca de diagnóstico del dispositivo

Información adicional

El proyecto incluye una pila CANopen Master y una CANopen Slave que se comunican entre sí a través de CANbus. Se necesitan dos interfaces CAN interconectadas para poner en marcha el proyecto. La forma más fácil de implementar esto es usar el CODESYS Control Win controlador y un adaptador USB-CAN de 2 canales, como PEAK PCAN-USB Pro o dos adaptadores de 1 canal.

Para que la comunicación funcione, el componente del sistema de tiempo de ejecución respectivo debe ingresarse en el archivo de configuración.

Para más información, ver: Configuración de tiempo de ejecución.

El proyecto también se puede operar en cualquier controlador con dos interfaces CAN mediante una actualización de dispositivo del PLC. El proyecto se divide en tres áreas:

CANbus Examples

  • ChangeBaudrate: Cambio dinámico de la tasa de baudios en modo runtime mediante reconfiguración

  • EnableDisableCANbus: Activación y desactivación dinámica de un CANbus en modo runtime mediante reconfiguración

  • GetCANbus: Búsqueda genérica de una instancia de CANbus diseñada por medio de la biblioteca de diagnóstico del dispositivo

CANopen Master examples

Diagnóstico

  • ReceiveEMCYFromAllDevicesExample: Recepción de mensajes de emergencia mediante CiA405.RECV_EMCY

  • ReceiveEMCYFromOneDeviceExample: Recepción de mensajes de emergencia para un dispositivo específico mediante CIA405.RECV_EMCY_DEV

  • GetCANopenKernelStateExample: Detección del estado del kernel CANopen mediante CIA405.GET_CANOPEN_KERNEL_STATE

  • GetStateExample: Detección del estado CANopen de un esclavo mediante CIA405.GET_STATE

Administración de redes

  • GetCANopenManagerNodeIDExample: Detección del ID de nodo CANopenManager mediante CiA405.

  • GET_CANOPEN_KERNEL_STATE: Envío de solicitudes de NMT mediante CIA405.NMT

SDO (transferencia de datos acíclicos)

  • ExpeditedReadExample: Lectura de un objeto <= 4 bytes a través de SDO (transferencia acelerada) mediante CiA405.SDO_READ4

  • ExpeditedWriteExample: Escritura de un objeto <= 4 bytes vía SDO (expedited transfer) mediante CIA405.SDO_WRITE4

  • SegmentedAndBlockReadExample: Lectura de un objeto de cualquier longitud vía SDO (transferencia segmentada o transferencia en bloques) mediante CiA405.SDO_READ_DATA

  • SegmentedAndBlockWriteExample: Escribir si un objeto de cualquier longitud a través de SDO (transferencia segmentada o transferencia en bloque) por medio de CiA405.SDO_WRITE_DATA

Funciones generales de la API

  • CANopenManagerAPI: Demuestra el uso de todos los métodos y propiedades de la instancia de CANopenManager

  • CANopenManagerEventHandler: Implementación ejemplar de un controlador de eventos CANopen

  • CANopenRemoteDeviceAPI: Demuestra el uso de todos los métodos y propiedades de una instancia de CANopenRemoteDevice

CANopen Slave examples

Diagnóstico

  • GetLocalDeviceInfoExample: Demuestra la lectura del estado CANopen así como la ID del nodo

Administración de redes

  • ChangeNodeIDExample: Cambio de ID de nodo en modo runtime

  • NMTExample: Cambio del estado CANopen local

Diccionario de objetos

  • ReadObjectExample1: Lectura de un objeto del diccionario de objetos local

  • ReadObjectExample2: Ejemplo alternativo de ReadObjectExample1

  • WriteObjectExample1: Escribir el valor de un objeto en el diccionario de objetos

  • WriteObjectExample2: Ejemplo alternativo de WriteObjectExample1

  • CountObjects: atravesar todos los objetos del diccionario de objetos por medio de _3SCSS.ObjectIterator

  • GetPDOInfo: ejemplo adicional de atravesar el diccionario de objetos

  • ObjectDictionaryEventHandler: Implementación ejemplar de un controlador de eventos de diccionario de objetos

Requisitos y restricciones del sistema

Sistema de programación

CODESYS Development System (versión 3.5.14.0 o superior)

Sistema de tiempo de ejecución

CODESYS Control Win (versión 3.5.14.0)

Componentes adicionales

Dos interfaces CAN

Aviso

_example_icon.png DESCARGAR Proyecto