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ónEnableDisableCANbus
: Activación y desactivación dinámica de un CANbus en modo runtime mediante reconfiguraciónGetCANbus
: 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 medianteCiA405.RECV_EMCY
ReceiveEMCYFromOneDeviceExample
: Recepción de mensajes de emergencia para un dispositivo específico medianteCIA405.RECV_EMCY_DEV
GetCANopenKernelStateExample
: Detección del estado del kernel CANopen medianteCIA405.GET_CANOPEN_KERNEL_STATE
GetStateExample
: Detección del estado CANopen de un esclavo medianteCIA405.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) medianteCiA405.SDO_READ4
ExpeditedWriteExample
: Escritura de un objeto <= 4 bytes vía SDO (expedited transfer) medianteCIA405.SDO_WRITE4
SegmentedAndBlockReadExample
: Lectura de un objeto de cualquier longitud vía SDO (transferencia segmentada o transferencia en bloques) medianteCiA405.SDO_READ_DATA
SegmentedAndBlockWriteExample
: Escribir si un objeto de cualquier longitud a través de SDO (transferencia segmentada o transferencia en bloque) por medio deCiA405.SDO_WRITE_DATA
Funciones generales de la API
CANopenManagerAPI
: Demuestra el uso de todos los métodos y propiedades de la instancia de CANopenManagerCANopenManagerEventHandler
: Implementación ejemplar de un controlador de eventos CANopenCANopenRemoteDeviceAPI
: 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 runtimeNMTExample
: Cambio del estado CANopen local
Diccionario de objetos
ReadObjectExample1
: Lectura de un objeto del diccionario de objetos localReadObjectExample2
: Ejemplo alternativo deReadObjectExample1
WriteObjectExample1
: Escribir el valor de un objeto en el diccionario de objetosWriteObjectExample2
: Ejemplo alternativo deWriteObjectExample1
CountObjects
: atravesar todos los objetos del diccionario de objetos por medio de_3SCSS.ObjectIterator
GetPDOInfo
: ejemplo adicional de atravesar el diccionario de objetosObjectDictionaryEventHandler
: 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
DESCARGAR Proyecto