Seleccionando una capa de red a través del bus CAN

10

Estoy planeando usar CAN bus en una aplicación de automatización industrial, sin embargo, me cuesta mucho decidir cómo implementar la capa de red. ¿Alguien aquí tiene alguna recomendación sobre un protocolo de capa superior para usar sobre CAN que proporcione pautas sobre cómo asignar identificaciones de mensajes y cómo dar formato a paquetes de datos? ¿Debo desarrollar mi propia capa de red propietaria o implementar un estándar existente como CANopen?

    
pregunta mjh2007

3 respuestas

7

Definitivamente querrá elegir una capa de red estándar. He visto algunos casos en los que las personas se han dado a conocer, y con frecuencia el protocolo es ineficiente, y al final es una pérdida de tiempo. Una capa de red probada proporciona una funcionalidad básica para resolver la mayoría de los problemas que probablemente enfrentará en la red con un dispositivo integrado, y eso le ahorrará un tiempo y dinero valioso al final.

Estoy familiarizado con CANopen, así que pondré una pequeña explicación aquí y podría ayudarlo a decidir si esa es la forma en que quiere ir. Si no se ajusta a lo que necesitas hacer, buscaría otra cosa.

CANopen está muy centrado en los datos. Todos los nodos esclavos CANopen (las cosas que controla desde un nodo maestro, como sensores o controladores de motor) proporcionan un diccionario que contiene todos los datos de configuración, control y adquisición de datos que necesita leer / escribir para realizar su trabajo. Luego puede leer / escribir estos objetos individualmente a través del mecanismo SDO (objeto de datos de servicio), o leer / escribir estos objetos periódicamente en transmisiones de mensajes CAN temporizados a través del mecanismo PDO (objeto de datos del productor). Los servicios de NMT, así como un servicio de asignación de ID de nodo (si desea usarlo) proporcionan servicios de inicio, apagado, reinicio y detección de latido / funcionamiento incorrecto del nodo. Para implementar un dispositivo utilizando una biblioteca CANOpen incorporada, básicamente configura un diccionario de objetos, configura PDO para enviar / recibir actualizaciones de datos periódicamente y escribe un código de usuario que se comporta en función de esas entradas de datos. Hay otras cosas que ofrece CANopen, pero esa es la mayor parte de ellas. Lee este libro para obtener más información.

    
respondido por el J. Polfer
7

Escribo un código para acceder al bus CAN en automóviles GM, que utilizan una capa de red mayoritariamente propietaria. ¿Has mirado en OpenCAN? Elegiría un estándar abierto como CANOpen o incluso OpenCAN. Realmente depende del nivel de control y flexibilidad que desee en su entorno de automatización.

    
respondido por el Brad Hein
5

Ha habido grandes respuestas. No sé qué micro usas, pero aquí hay enlaces a información del microchip.

J1939 library

DeviceNet ™ Group 2 Slave Firmware para PIC18 con CAN

CANopen

Cada uno tiene un código y una hoja de datos básica que te permite saber qué necesitas para implementarlos.

    
respondido por el Kortuk

Lea otras preguntas en las etiquetas