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.