Tuve que hacerme esta pregunta hace unos diez años o más. El trabajo que debía hacerse era dar una segunda vida a la sala de control. Esto es así en toda la pared, que consiste en bombillas e interruptores con interruptores. Creo que no me equivocaré al suponer que los escudos han estado funcionando desde la aparición de las bombillas, ya que los interruptores para ese momento probablemente ya se conocían. Y el ansia de belleza, en general, llegó a personas de la antigüedad lejana.
Ahora muchos preferirán los paneles de visualización a los escudos. Pero si habrá una mayoría de fanáticos de las pantallas depende de muchas cosas desconocidas para nosotros. Pero ahora no se trata de eso.
Todos los que puedan hablar sobre el cableado eléctrico durante cinco minutos me dirán de inmediato que el escudo consiste en paneles planos en los que se colocan interruptores y bombillas, así como una caja con muchos cables. Después de todo, una bombilla sin cables solo es adecuada para romperla estúpidamente o, si vienes creativamente y enciendes tu imaginación, colócala en la boca con la mayor curiosidad y descubre rápidamente dónde está la sala de emergencias.
Eso fue todo, un montón de cables dejando la caja a los interruptores y bombillas, solo que las bombillas eran pequeñas. Al parecer, la nieta de la famosa bombilla Ilich.
Y ahora, recuerdo, miraba por la ventana, y allí está el siglo XXI. Por lo tanto, es necesario hacer todo de nuevo y de manera diferente. En lugar de bombillas: LED económicos. En lugar de cables - cableado. En lugar de un cajón, muchos, muchos cajones pequeños, controladores, por lo tanto.
Resultó que si cada controlador puede dar servicio a cuatro LED y dos interruptores, entonces esto se verá óptimo. Quiero decir, no tan aterrador. Y si el bus de alimentación y el bus de información pasan a través de todos los controladores, solo hay cuatro cables, entonces aparecerá una cierta gracia. También resultó que los controladores necesitarían 104 piezas. De una manera amigable, aquí sería necesario plantear y resolver el problema del vendedor ambulante. Y luego, tal vez, los controladores habrían gastado menos. Pero no estaba a la altura.
En ese momento ya sabía qué es CAN y el nivel de mi respeto por Bosch era mucho mayor que el de un chef de restaurante decente o una ama de casa ordenada. Y los fabricantes de automóviles BMW, estoy seguro, incluso fueron a visitar a los ingenieros de Bosch.
La Red de Área de Controladores, como dirían los extranjeros, en mi opinión, como solución técnica, surgió del deseo de hacer algo, finalmente, bien. No me esconderé, no sentirás todos los encantos de los resultados del trabajo de los ingenieros de inmediato cuando domines dos volúmenes del estándar, pero mucho después. Cuando hable con testigos presenciales, entreviste a testigos. Ahora hay más volúmenes, pero quizás pueda comenzar inmediatamente desde el tercero, porque ahora se llama CAN_FD. Sin embargo, déjame continuar.
Incluso antes de la colisión con el escudo, tuve que enfrentar las decisiones de ingeniería de otras personas sobre el uso de CAN, así como también cometer mis errores. Los errores generalmente aparecen entre leer las instrucciones y estudiar las descripciones. Bueno, eso solo la segunda vez se ven como un rastrillo.
Ahora unos pocos miles de palabras para el lector, que es tolerante con los nerds y no los considera enemigos.
CAN se puede instalar donde RS485 trabajó anteriormente en un cable de par trenzado. El par trenzado no es una condición indispensable, es simplemente conveniente compararlo. Usando un cable de par trenzado, a través de CAN, así como a través de RS485, puede enviar mensajes desde el controlador de control al esclavo y recibir una respuesta. La similitud es sorprendente, pero centrémonos mejor en las diferencias. Algunas de las diferencias pueden llevar un signo menos para algunos de los lectores. Pero les aconsejaría que no se molesten, sino que recuerden la ley de Lomonosov.
Gracias a la organización sincrónica del protocolo, la resolución de colisión en el bus se implementa en hardware, sobre la marcha, por así decirlo. A continuación se indica a qué conduce esto y qué le da al ingeniero inquieto.
Puede recibir un mensaje sin una solicitud.
No es necesario esperar hasta que la respuesta esté lista, puede preguntarle a alguien más en este momento.
El controlador esclavo también puede preguntar y obtener una respuesta.
Debido a la operación sincrónica, la longitud del bus CAN es inversamente proporcional a la velocidad de transmisión o algo así.
La velocidad máxima es de 1 MBaud (10 - en camino).
El remitente sabe que el mensaje no se ha distorsionado durante la transmisión inmediatamente después del último bit. Más precisamente, todos en el autobús lo saben.
Si el mensaje está distorsionado para uno, no todos cuentan el intento.
Si el mensaje se envió al bus, el suscriptor no lo recibirá solo a condición de que esté roto.
El número de controladores en el bus no debe exceder 127.
Los mensajes tienen una longitud limitada. Consisten en un identificador, un indicador de longitud en bytes y un bloque de datos, con exactamente tantos bytes como se indica. Hay algunos bits más de servicio, pero guardemos silencio sobre ellos, ya que el servicio debe ser discreto. El identificador puede tener un tamaño de 11 o 29 bits. Un bloque de datos puede contener de 0 a 8 bytes (64 - en el camino).
Para detalles, daré algunos números. Si desea trabajar a una velocidad de 1Mbaudio, entonces la longitud del bus no debe ser superior a 35 metros (algunos prefieren 40, es decir, más caliente). Si necesita transmitir algo a una distancia de 8 km, la velocidad no debe exceder los 5 kbaud. Por cierto, el lector tiene derecho a preguntar por qué kilobod y no kilobit. Porque no todos los baudios se convierten en bits. Algo asi.
¿Cómo puedo deshacerme de todos estos ingredientes de alto secreto? Aquellos que ven el juego de dados en todo recordarán de inmediato que hay algo tan maravilloso como CANopen y muchas más combinaciones y abreviaturas hermosas y que no hay nada para reinventar la rueda. Entonces, a menudo quiero responder: “¿No se parece a una bicicleta ese huevo frito de dos huevos, que muchos cocinan para el desayuno? ¿Por qué no ir a un servicio de comida y tomar una tortilla? Pero es mejor que me quede callado y continúe sin distraerme con los gritos de la audiencia.
En aquellos días, cuando aún no se habían inventado identificadores de 29 bits, solo había 11 bits. Algunos comenzaron a usarlo para meter el nombre (número) del tipo de datos deseado allí. Otros se utilizan como la dirección del controlador al que se accede. Ambos tenían sentido. Por ejemplo, puede preguntar esto:
- Y danos, querida, un castillo del año trece en un litro de papel.
Más o menos:
Envuélveme, por favor, lo que está escondido en tu estante inferior a la derecha.
Por cierto, en CAN este diseño también puede funcionar:
¡Mienten a todos! Y rápidamente pones todo de los estantes en mi bolso.
Pero este diseño a menudo no se usa, porque después hay que esperar un tiempo.
Espere hasta que todas las respuestas estén alineadas una por una y disponibles para el controlador solicitante. Ya hemos dejado la película, si eso.
En mi caso, estaría contento con la variante del identificador como dirección. De los 11 bits, se requerían 7, y quedaban 4 más para hacer que algunos mensajes sean más urgentes que otros, así como marcar algunos de los controladores como los principales.
Algunos inconvenientes migraron aquí desde RS485, a saber, las direcciones tenían que establecerse manualmente en cada controlador. Luego verifique y reinstale. Y quizás regrese al paso anterior y repita.
Afortunadamente, para entonces ya existían dos circunstancias.
Primero, ya apareció un identificador de 29 bits. Y la segunda es que muchos fabricantes de microcontroladores comenzaron a considerar la condición de que cada chip tiene su propio número único y bastante largo como una buena forma.
Ahora, en un identificador largo, 24 bits podrían asignarse de forma segura para una dirección única. Quedaron otros 5, para garantizar que los trenes diferían en urgencia, dirección (allí, de regreso), la presencia de un vagón restaurante y vagones con mayor comodidad.
Si deja de perder el tiempo y se pone serio, llame a los agentes de los controladores subordinados y al resto de los jefes, entonces puede crear una tabla. Ella se mostrará un poco más tarde.
Un poco más sobre abordar. Un número de chip único, como regla, ocupa una cantidad de bits muy superior a 24, por ejemplo, 96 con STM32FXXX. Por lo tanto, de alguna manera necesita obtener 24 de 96. Elegí la operación XOR. Puede elegir otra cosa, pero quedará un pequeño problema. Estas son coincidencias de dirección después de la reducción.
La probabilidad de este problema es extremadamente pequeña, pero lo es. Es solucionable, pero agrega trabajo a los instaladores. Aquí debe recordarse que los mensajes CAN pueden no contener datos en absoluto. Esto es útil para nosotros al decidir. Consiste en las siguientes acciones.
El controlador de control (jefe) envía una solicitud de difusión a la que todos los agentes deben responder (esta es una solicitud con una dirección cero). Los mensajes de respuesta con longitud de datos cero y direcciones coincidentes no se estropearán entre sí, sino que llegarán al jefe en forma de uno.
Ahora queda por calcular cuántas respuestas se han recibido y cuántas deberían ser. Si estos dos números coinciden, entonces todo está en orden. Si hay menos respuestas que los controladores, entonces hay una coincidencia de direcciones y hay trabajo para los ajustadores. Y si hay más respuestas que controladores, entonces debe pensar en una disertación, porque está al borde del descubrimiento.
Si el cambio en la longitud del mensaje se considera una variación de su significado, entonces puede obtener características adicionales, de las que hablaré más adelante si mi madre no llama para comer.
Otro punto interesante es que si usa identificadores cortos y largos al mismo tiempo, puede obtener, por ejemplo, direcciones de grupo o solicitudes de difusión parcial. Pero aún no profundizaremos.
Volvamos a la codificación del identificador.
Para fines de direccionamiento, se asignan 24 bits en el identificador extendido y seis en el identificador estándar. Se transmite una dirección con un valor de 0x000000 para el identificador extendido. Para un identificador estándar, también se considera que se transmite una dirección nula (sus 6 bits). Los cinco bits iniciales (altos) en los identificadores largos y cortos se denominan encabezado, afectan el significado del mensaje y se denotan con las letras NVADR:

Por supuesto, para el panel de control, era necesario implementar solo una parte de este esquema. En el primer proyecto con un escudo (o en el escudo, ¿cómo?), Se usaron chips Cortex de NXP, y en los siguientes proyectos (había algunos) M0 de STMicroelectronics ya se usaron.
Algunas palabras sobre el uso de identificadores cortos. Esos seis bits que se asignan para el direccionamiento no se dirigen al controlador, sino al grupo. Al principio, este grupo tiene cero para todos. A continuación, se configuran los agentes, después de lo cual algunos o todos se convierten en miembros de su grupo. Ahora una solicitud al grupo, obtenemos las respuestas de los agentes que hemos recopilado en este grupo.
Ahora, un poco sobre lo que se agrega si interpreta mensajes con diferentes longitudes de datos de manera diferente. Por ejemplo, una consulta de longitud cero ayuda mucho al depurar, como se mencionó anteriormente. Una solicitud con una longitud de 3 sirve el espacio variable de 16384 bytes. Una solicitud con una longitud de 4 hace lo mismo, pero está destinada a un agente de puerta de enlace que sirve un bus CAN de segundo nivel. Este autobús puede estar compuesto por uno o dos agentes, pero a un par de kilómetros de distancia.
Del mismo modo, las consultas con longitudes de 5 y 6 están destinadas a un espacio de variables de dos bytes de tamaño 4194304. No se utilizan dos bits para el direccionamiento. Un bit controla la escritura-lectura. Otro señala un error.
A continuación, 7 y 8 sirven palabras de cuatro bytes. También hay 4.194.304.
Estos espacios son comunes a todos los agentes. Cada uno de ellos, dependiendo del propósito, usa solo un segmento del espacio de variables. El controlador para medir la temperatura en dos puntos se muestra en la foto. Esto es para depurar y probar.

Los controladores están conectados con un cable plano para 6 núcleos. Dual se utilizan para la alimentación. El chip de veinte pies es el STM32F042.
En el reverso está el MAX3051, un controlador CAN en el paquete SOT23-8.
Bueno, mamá llama para comer.