Seleccionar una capa de red sobre el bus CAN

10

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

mjh2007
fuente

Respuestas:

7

Definitivamente querrás elegir una capa de red estándar. He visto algunos casos en los que las personas han implementado los suyos, 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 las redes con un dispositivo incorporado, y eso le ahorrará un tiempo y dinero preciosos al final.

Estoy familiarizado con CANopen, por lo que pondré un poco de explicación aquí y podría ayudarlo a decidir si esa es la forma en que desea ir. Si no se ajusta a lo que necesita hacer, miraría otra cosa.

CANopen está muy centrado en los datos. Todos los nodos esclavos CANopen (cosas que controlas 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 necesitas leer / escribir para hacer tu 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 cronometrados a través del mecanismo PDO (objeto de datos de productor). El inicio, el apagado y el restablecimiento, y la detección de mal funcionamiento de los latidos / nodos se proporcionan desde los servicios NMT, así como un servicio de asignación de ID de nodo (si desea usarlo). Para implementar un dispositivo usando una biblioteca CANOpen incorporada, básicamente configura un diccionario de objetos, configura PDO para enviar / recibir periódicamente actualizaciones de datos, y escriba el 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. Lea este libro para más información.

J. Polfer
fuente
El libro habla sobre una implementación de CANopen llamada MicroCANopen. ¿Qué implementación de CANopen utilizas?
mjh2007
1
@ mjh2007: creamos el nuestro, ya que era necesario usarlo junto con otro protocolo.
J. Polfer
"CANOpen" -> "CANopen"
Peter Mortensen
7

Escribo código para acceder al bus CAN en automóviles GM, que utiliza una capa de red principalmente 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.

Brad Hein
fuente
77
Hay tanto OpenCAN como CANOpen? aiggh! nombre horrible.
Jason S
1
@ Jason, culpo a Microsoft.
Kortuk
5

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

Biblioteca J1939

DeviceNet ™ Group 2 Slave Firmware para PIC18 con CAN

Puedo abrir

Cada uno tiene un código y una hoja de datos básica que le permite saber lo que necesita para implementarlos.

Kortuk
fuente
1
En realidad uso Microchip, así que es muy útil. ¡Gracias!
mjh2007
1
Esos son todos para el pic18. Parece que con CANopen tienes un maestro que modifica la configuración de los demás, para la mayoría de lo que incluye mi uso de canbus, esto encaja perfectamente.
Kortuk
¿Utiliza la biblioteca Microchip para implementar CANopen?
mjh2007
1
En el proceso de implementación, es un proceso lento porque requiere que muchas personas diferentes se comprometan para que yo haga un cambio en el sistema. Lo actualizaré cuando se implemente, si eso ayuda.
Kortuk
1
@ mjh2007, dejé de trabajar para el procesador y los estudiantes que asumieron el control decidieron que muchos de ellos no habían utilizado el hardware anterior y compraron algo con lo que se sintieran más cómodos. Una vez más, no hay progreso en ese proyecto de profesores, pero eso sucede cuando un profesor no sabe lo que está sucediendo y simplemente permite que las personas cambien todo una vez al año.
Kortuk