El microcontrolador 51 utiliza el protocolo de comunicación CAN bus ¡Urgente! ! ! ! ! ! ! ! ! !
/
CAN significa Controller Area Network, que fue propuesto por primera vez por la empresa alemana Bosch y es uno de los buses de campo más utilizados en el mundo. CAN se diseñó originalmente como una comunicación en el entorno automotriz para intercambiar información entre dispositivos de control electrónico automotriz para formar una red de control electrónico automotriz. Debido a su excelente rendimiento, confiabilidad extremadamente alta y bajo precio, se ha utilizado ampliamente en muchos campos, como el control de campos industriales y los instrumentos médicos [1][2].
El protocolo CAN se basa en el modelo de referencia de interconexión abierta de 7 capas OSI. Sin embargo, el protocolo CAN solo define las dos capas inferiores del modelo: la capa de enlace de datos y la capa física, que solo garantiza una transmisión de datos sin errores entre nodos. El protocolo de la capa de aplicación de CAN debe ser definido por los usuarios de CAN o adoptar protocolos estándar desarrollados por algunas organizaciones internacionales. Los más utilizados son DeviceNet y CANopen, que se utilizan ampliamente en los campos de control de procesos y control electromecánico, respectivamente. Sin embargo, estos protocolos generalmente tienen una estructura relativamente compleja y son más adecuados para aplicaciones en sistemas complejos a gran escala. En el proceso de desarrollo de un sistema de cargador de fuente de alimentación conmutada distribuida de alta frecuencia basado en bus CAN, el autor diseñó un protocolo de comunicación de alto nivel de bus CAN adecuado para sistemas de control pequeños.
2 Características de CAN [3]
CAN es un bus de comunicación en serie multimaestro. Las especificaciones de diseño básicas requieren una alta velocidad de bits, interferencias antielectromagnéticas y capacidad de detección. cualquier error en el autobús. Cuando la distancia de transmisión de la señal alcanza los 10 km, CAN aún puede proporcionar una velocidad de transmisión de datos de hasta 50 kbps.
CAN tiene características muy superiores:
(1) Menor costo y utilización del autobús extremadamente alta.
(2) La distancia de transmisión de datos puede ser de hasta 10 km; la velocidad de transmisión puede llegar a 1Mbps[7]
(3) Mecanismo confiable de manejo y detección de errores, la información enviada se puede retransmitir automáticamente si está dañada
(4) El nodo tiene la función de salir automáticamente del bus en caso de errores graves.
(5) El mensaje no contiene la dirección de origen ni la dirección de destino, y solo utiliza identificadores para indicar información de función y información prioritaria.
3 Especificaciones técnicas CAN
(1) Tipo de trama
En el bus CAN, existen cuatro tipos de trama diferentes [4][5]: p>
·Marco de datos (Marco de datos) El marco de datos contiene datos de la aplicación
·Marco remoto (Marco remoto) Al enviar un marco remoto, puede solicitar datos de la red e iniciar la transmisión por otros; nodos de recursos sus respectivos datos, la trama remota contiene 6 campos de bits diferentes: inicio de trama, campo de arbitraje, campo de control, campo CRC, campo de respuesta y final de trama. La polaridad implícita del bit RTR en el campo de arbitraje se expresa como una trama remota.
·Trama de error La trama de error puede informar el error de cada nodo y consta de dos campos diferentes. El primer campo es. la superposición de banderas de error proporcionadas por diferentes estaciones, y el segundo campo es el delimitador de error
·Trama de sobrecarga (Overload Frame) Si el nodo no está listo para recibir, transmitirá la trama de sobrecarga, que consiste en; de dos Se compone de diferentes campos, el primer campo es el indicador de sobrecarga y el segundo campo es el delimitador de sobrecarga.
(2) Estructura del marco de datos
El marco de datos consta de los siguientes 7 campos de bits diferentes: inicio del marco, campo de arbitraje, campo de control, campo de datos, campo CRC, campo de respuesta, final del cuadro. La estructura del marco estándar se muestra en la Tabla 1:
Tabla 1 Estructura del marco de datos [4]
·Inicio del marco: marca el comienzo del marco, que consta de un único marco dominante. bit, enviado cuando el bus está inactivo, provocando la sincronización en el bus.
·Campo de arbitraje: consta de un identificador de 11 bits (ID10-ID0) y un bit de solicitud de transmisión remota (RTR). El bit RTR es dominante para indicar que la trama es una trama de datos, y recesivo. indica que la trama es remota; los identificadores de trama se envían en orden de mayor a menor, y los primeros 7 bits (ID10-ID4) no pueden ser todos bits dominantes. El identificador ID se utiliza para describir el significado de los datos y no se utiliza para el direccionamiento de comunicaciones. La trama del bus CAN no tiene función de direccionamiento. El identificador también se utiliza para determinar la prioridad del mensaje. Cuanto menor sea el valor de ID, mayor será la prioridad. Cuando se compite por el bus, los mensajes con alta prioridad se envían primero y los mensajes con baja prioridad salen de la competencia. El algoritmo de competencia del bus CAN es muy eficiente y es una competencia no destructiva.
·Campo de control: Es el código de longitud de los datos (DLC3-DLC0), que indica el número de bytes de datos en el campo de datos, el cual no debe exceder los 8.
·Campo de datos: Consta de los datos a enviar. El número es igual al número de bytes establecidos en el campo de control. Se envía primero el bit más alto del primer byte. Su longitud no supera los 8 bytes en una trama estándar.
·Campo CRC: incluye la secuencia CRC (verificación de redundancia cíclica) (15 bits) y el delimitador CRC (1 bit recesivo), utilizado para la verificación de tramas.
l Campo de respuesta: consta de un espacio de respuesta y un delimitador de respuesta, *** dos bits; la estación emisora envía dos bits recesivos y la estación receptora envía un bit dominante en el espacio de respuesta. El delimitador de respuesta debe ser un bit recesivo.
·Fin de trama: consta de 7 bits recesivos.
4 Protocolo de alto nivel CAN personalizado
El protocolo de alto nivel de CAN también puede entenderse como un protocolo de capa de aplicación, que es un tipo de protocolo de nivel inferior existente (capa física y capa de enlace de datos) El protocolo implementado anteriormente. Dado que la estructura del sistema de carga es relativamente simple, la escala de la red también es relativamente pequeña. Por lo tanto, nosotros mismos desarrollamos un protocolo de comunicación de alto nivel simple y efectivo.
La especificación técnica CAN2.0A estipula que el marco de datos estándar tiene un identificador de 11 bits. Los usuarios pueden definir su propio significado e incluir la información requerida. En el sistema de carga, cada nodo tiene una dirección única y el código de dirección corresponde al módulo uno a uno. Se establece mediante el interruptor DIP y la transmisión de datos en el bus también se basa en la dirección. Dado que este sistema es de pequeña escala y tiene menos de 32 nodos, a cada módulo se le asigna un código de dirección de 5 dígitos. El código de dirección no debe repetirse en el mismo sistema. Es leído por un pin externo durante la inicialización del sistema. Defina los identificadores ID9-ID5 como la dirección de origen e ID4-ID0 como la dirección de destino. En este protocolo, la dirección de destino del módulo esclavo se completa con ceros, lo que indica que los datos son datos de transmisión y pueden ser recibidos por todos. Nodos. La dirección de destino en el módulo principal se basa en los requisitos. Determine la dirección del módulo de destino de comunicación. El formato de trama de datos de este protocolo de comunicación se detalla en la Tabla 2.
Tabla 2 Formato del marco de datos
En teoría, la dirección de origen y el rango de direcciones de destino son de 0 a 31, pero debido a las estipulaciones del protocolo CAN de que los primeros 7 bits del identificador no pueden ser todos ser bit dominante, por lo que la dirección de origen no puede ser 31. En este momento, solo hay 31 nodos reales (0 ~ 30). Por lo tanto, cada sistema contiene no más de 31 módulos. Por lo tanto, el rango de direcciones de origen y de destino se reduce a 0~30. Al mismo tiempo, la máquina de monitoreo superior también ocupa una dirección, por lo que no hay más de 30 módulos de energía en el sistema. Durante el diseño, las direcciones de los nodos se asignan de pequeña a grande según la prioridad de los nodos. El bit ID10 se define como el código de identificación del módulo principal. Este bit es recesivo para el módulo principal y dominante para el módulo esclavo para garantizar la prioridad de comunicación del módulo principal. El código de dirección del módulo determina la prioridad de envío de datos. Hay dos tipos de datos enviados por el módulo principal al bus: uno son datos de transmisión con todas las direcciones de destino llenas con 0; el otro son datos no transmitidos que contienen una dirección de destino específica.
En el protocolo, una trama de datos puede transmitir hasta 8 bytes, lo cual es suficiente para el sistema de control del cargador. Este sistema solo utiliza los primeros 5 bytes y los 3 bytes restantes están disponibles para uso extendido en el futuro. , por lo que la transmisión de múltiples cuadros no está definida.
El módulo esclavo envía datos al bus en forma de transmisión y al mismo tiempo recicla los datos que envía. Si detecta que los datos enviados no coinciden con los datos recibidos, los reenviará inmediatamente. el marco de datos anterior.
El orden en el que el módulo esclavo envía información está determinado por las instrucciones emitidas por el módulo maestro, para evitar que los módulos con menor prioridad nunca obtengan los derechos de comunicación del bus cuando la comunicación del bus está ocupada. El orden de envío de instrucciones está de acuerdo con el orden de las direcciones de cada módulo esclavo, es decir, el módulo esclavo con una dirección más baja recibe la instrucción primero y puede enviar su propio código de dirección y valores de muestreo de corriente y temperatura. Si ocurre un conflicto, el controlador CAN ajusta automáticamente el orden de envío de acuerdo con la prioridad del módulo. Hay un algoritmo de arbitraje de prioridad completo en el protocolo CAN subyacente, por lo que el protocolo de la capa de aplicación no necesita considerar tales problemas.
Para cada módulo, si no se recibe información de comunicación 1 segundo después del encendido, se enviará su propio código de dirección y temperatura y valor de muestreo actual de acuerdo con el retraso calculado. El cálculo del tiempo de retraso es [6]:
tdelay=T×ADD
Donde: tdelay- es el tiempo de retraso en el envío
T- es el tiempo de retraso; unidad Constante de tiempo de retardo, este valor se define de acuerdo con la velocidad de comunicación; puede tomar un período de 1 bit, que es de 10 μs cuando la velocidad en baudios es de 100 kHz
ADD: es el código de dirección del módulo.
El módulo principal es el módulo con ID10=0, por lo que tiene la máxima prioridad. Después de encenderlo, el módulo principal primero transmite su propio código de dirección, temperatura y valor de muestreo actual al bus, y luego envía instrucciones al esclavo en secuencia y espera la respuesta del esclavo. Si el host no recibe ninguna información de comunicación después de 1 segundo, considerará que el módulo tiene un error y emitirá una alarma. De manera similar, si el esclavo no recibe ninguna información de comunicación del host después de 1 segundo, se considerará que el host tiene un error. Según la prioridad de la dirección de origen, el módulo con la dirección más baja entre los módulos restantes actuará como maestro. módulo, y su ID10 se cambiará de 1 a 0 para obtener el derecho de comunicación más alto.
Cuando cada módulo detecta su propia falla, cortará la salida, cerrará la comunicación y emitirá una alarma al ordenador host, así como alarmas sonoras y luminosas.
5 Conclusión
El protocolo de comunicación CAN de alto nivel presentado en este artículo tiene una estructura simple, uso flexible, confiabilidad extremadamente alta y es relativamente fácil de implementar. Es muy adecuado para aplicaciones en sistemas de control pequeños con una pequeña cantidad de nodos, requisitos de alta confiabilidad de comunicación y estructuras de control simples, y tiene cierto valor práctico