Soy relativamente nuevo en CAN Bus y he estado investigando un nuevo sistema que tenemos que desarrollar para monitorear un compresor móvil. Este compresor se remolca detrás de un camión o, a veces, se deja en el sitio del proyecto. Siendo nuevo en CAN Bus, estoy tratando de averiguar cuál de los estándares CAN se ajustaría mejor al requisito: ¿OBD-II o CANopen? Los datos del compresor (móvil) deben registrarse y publicarse en la nube. El compresor móvil tiene una ECU a bordo. De mi estudio sobre el bus CAN durante los últimos días, tengo cierta comprensión de SAE J1939, OBD-II y CANopen. El primero específico para maquinaria pesada, autobuses, camiones, etc. El OBD-II para aplicaciones principalmente de automoción. Y el CANopen para aplicaciones industriales. Todavía estoy tratando de elegir entre OBD-II y CANopen. Los datos que se recopilan del compresor/ECU no son mucho: son principalmente las lecturas de temperatura, presión y nivel de aceite, y probablemente se envían una vez cada pocos segundos, excepto por cualquier falla del compresor que deba transmitirse más rápido. Cualquier sugerencia sería de gran ayuda. ¿CAN v2.0 A/B a 125 Kbps o algo así? Estoy investigando desde todos los ángulos posibles antes de tomar una decisión y unas pocas palabras de alguien con experiencia pueden ayudar mucho. Gracias una vez más. Por favor, avíseme si se necesita más información.
Para mí, estás pensando demasiado en esto. En general, RS232, CAN y LIN son solo las interfaces que permiten transferir bytes entre dispositivos, pero no definen cómo interpretar esos bytes. Ahí es donde entran en juego OBD-II, CANopen, etc. Esos son estándares con bastantes especificaciones y requieren mucho conocimiento y tiempo de programación en ambos lados. Entonces, implementarlos también es una cuestión de costos. (Y no estoy seguro si necesita licencias para desarrollar el software CANopen/ODB-II)
Como escribió, la ECU aún no tiene ninguna capacidad CAN, solo tiene el hardware y necesita ser programada. Y su dispositivo aún no ha implementado ninguna funcionalidad CAN.
También es cuestionable si realmente necesita CAN y no puede cambiar a RS232. Sí, carece de la confiabilidad de las líneas de señal diferencial, pero si su dispositivo se coloca cerca de la ECU, esto no importa. Y carece de la alta calidad de datos debido a la suma de verificación integrada, pero puede implementar su propia suma de verificación y transmitirla como datos normales. Ah, y RS232 es solo para dos dispositivos, no es un bus. Pero no necesitas esa función, ¿verdad? Un gran beneficio es que una interfaz RS232 para una PC cuesta unos cuantos dólares en comparación con una interfaz CAN, y puede escribir fácilmente algún software para emular su dispositivo o la ECU, sin tener que lidiar con bibliotecas especiales.
Entonces, implementaría mi propio protocolo simple, algo así:
Mando T<CR><LF>
a pedir temperatura, y la ecu responde con T<temperatureHighbyte><temperatureLowbyte><CRC-checksum><CR><LF>
. Usted lee hasta el <CR><LF>
, calcula la suma de verificación usted mismo y la compara con la enviada. Si son iguales, recibió el mensaje correctamente y puede enviar el valor de temperatura recibido.
Tendrá una solución funcional de esta manera, incluso antes de tener una primera comprensión más profunda de CANopen y similares.
stevecorredor
RW
RW
stevecorredor
RW
usuario28910
RW