1 Introducción
La comunicación de equipos industriales generalmente involucra una amplia variedad de productos de hardware y software, así como protocolos utilizados para conectar plataformas informáticas estándar (computadoras personales o estaciones de trabajo) a dispositivos de automatización industrial. En consecuencia, la mayoría de los dispositivos de automatización están diseñados para ejecutar comandos seriales simples que son compatibles con los puertos seriales estándar que se encuentran en las computadoras personales o en tarjetas de puerto serial adicionales. RS-232 es actualmente la interfaz serie más utilizada en los sectores de PC y comunicaciones industriales. RS-232 se define como un estándar-de un solo extremo diseñado para ampliar las distancias de comunicación en comunicaciones en serie de baja velocidad. Debido a que RS-232 comparte una señal común a tierra entre el transmisor y el receptor, no puede utilizar señales diferenciales; de lo contrario, el ruido de modo común se acoplaría al sistema de señal. El estándar RS-232 especifica una distancia máxima de sólo 15 m y una velocidad máxima de transmisión de señal de 20 kbit/s.
CAN, abreviatura de "Controller Area Network", es uno de los buses de campo más utilizados a nivel internacional. Una única red compuesta de buses CAN está limitada por las características eléctricas del hardware de la red. Como bus de comunicación serie multi-maestro, las especificaciones de diseño básicas de CAN requieren altas velocidades de bits y una fuerte resistencia a la interferencia electromagnética, así como la capacidad de detectar cualquier error que ocurra en el bus de comunicación. Incluso cuando la distancia de transmisión de la señal alcanza los 10 km, CAN aún puede proporcionar velocidades de transmisión de datos de hasta 50 kbit/s. La Tabla 1 muestra la relación entre la distancia máxima de transmisión entre dos nodos cualesquiera en un bus CAN y sus velocidades de bits.
Distancia máxima entre dos nodos cualesquiera en una configuración triangular en un sistema de bus CAN
Velocidad de bits/kbps 1000 500 250 125 100
Distancia máxima/m 40 130 270 530 620
Velocidad de bits (kbps) 50 20 10 5
Distancia máxima (m) 1300 3300 6700 10000
Como puede verse, el bus CAN es un bus serie superior al RS-232 en términos de rendimiento, adaptabilidad, flexibilidad y confiabilidad en tiempo real. Cuando dos dispositivos serie están ubicados muy separados y no se pueden conectar directamente a través de RS-232, RS-232 se puede convertir a CAN para lograr la interconexión de red de los dispositivos serie a través del bus CAN.
Sin embargo, RS-232 y CAN difieren significativamente en términos de niveles de voltaje y formatos de trama. Específicamente:
El estándar RS-232 utiliza lógica negativa, definiendo cualquier nivel de voltaje entre +3V y +15V como un "0" lógico y cualquier nivel de voltaje entre -3V y -15V como un "1" lógico. Las señales CAN, por el contrario, se transmiten mediante tensión diferencial. Las dos líneas de señal se denominan "CAN_H" y "CAN_L". En estado estático, ambos tienen aproximadamente 2,5 V; este estado se representa como un "1" lógico y también se lo denomina "recesivo". Cuando CAN_H es mayor que CAN_L, representa un "0" lógico, conocido como "dominante". En el estado dominante, los valores de voltaje típicos son: CAN_H=3.5V, CAN_L=1.5V;
El formato de trama para el puerto serie RS-232 es: un bit de inicio, ocho bits de datos, un noveno bit programable (que sirve como bit de dirección/datos tanto para la transmisión como para la recepción) y un bit de parada. El formato de trama de datos CAN consta de: encabezado de trama + ID + datos (que se pueden dividir en dos formatos: tramas estándar y tramas extendidas).
Por lo tanto, el diseño requiere un microcontrolador para realizar conversiones como conversiones de nivel y formato de cuadro. El proceso de conversión se muestra en la Figura 1.
2 Diseño de hardware para la conversión de RS-232 a CAN
Al diseñar el dispositivo de conversión de RS-232-a-CAN, se utiliza el microcontrolador AT89C52 como microprocesador; El SJA1000 se utiliza como microcontrolador CAN. El SJA1000 integra las funciones de capa física y capa de enlace de datos del protocolo CAN y puede manejar pasivamente el encuadre de datos de comunicación; El AT82C250 sirve como interfaz entre el controlador CAN y el bus físico, proporcionando capacidad de transmisión diferencial para el bus y capacidad de recepción diferencial para el controlador CAN. Se pueden seleccionar tres modos de funcionamiento diferentes (alta-velocidad, control de pendiente y espera) a través del pin 3 del AT82C250. Cuando el pin 3 está conectado a tierra, el dispositivo funciona en modo de alta velocidad; el aislamiento óptico de alta velocidad se implementa utilizando el 6N137, que evita interferencias de señales externas; El MAX232 se utiliza para convertir señales de 232 niveles a niveles TTL para el chip de interfaz del microcontrolador. Para obtener detalles específicos del circuito de interfaz de hardware, consulte los recursos relevantes para el SJA1000; Aquí no se proporcionan más explicaciones. Sin embargo, cabe señalar los siguientes puntos.
(1) Se conecta una resistencia de 120 Ω en ambos extremos del bus CAN para igualar la impedancia del bus, mejorando así la inmunidad a las interferencias y la confiabilidad de la comunicación de datos. En la práctica, sin embargo, es suficiente garantizar que la resistencia de derivación entre "CAN_H" y "CAN_L" en la red CAN sea de 60 Ω.
(2) El pin 20 (RX1) del SJA1000 se puede conectar a tierra cuando no esté en uso (consulte el diseño del software para conocer el motivo específico); cuando se combina con la configuración del bit CDR.6, esto puede aumentar significativamente la longitud del bus.
(3) El método de conexión de los pines TX0 y TX1 determina el nivel de la salida en serie. Consulte la configuración en el Registro de control de salida (OCR) para obtener detalles específicos.
(4) Se conecta una resistencia de pendiente entre el pin RS del AT82C250 y tierra. El valor de resistencia se puede ajustar adecuadamente en función de la velocidad de comunicación del bus, que normalmente oscila entre 16 kΩ y 140 kΩ.
(5) El MAX232 requiere cuatro condensadores electrolíticos-C1, C2, C3 y C4, que también se utilizan para la conversión de energía interna. Todos tienen una clasificación de 1 μF/25 V; Se recomiendan condensadores de tantalio y deben colocarse lo más cerca posible del chip. Se debe conectar un condensador de desacoplamiento de 0,1 μF entre la fuente de alimentación VCC y tierra.
3 Diseño de software para conversión de RS-232 a CAN
Bajo el control de un microprocesador, el uso de la recepción del puerto serie y las interrupciones CAN durante el intercambio de datos entre RS-232 y CAN pueden mejorar la eficiencia operativa. El diagrama de flujo del programa principal se muestra en la Figura 2. El SJA1000 solo se puede inicializar en modo de reinicio; esto incluye principalmente configurar el modo de funcionamiento, la división del reloj y los registros del filtro de aceptación, configurar los parámetros de velocidad en baudios y configurar el registro de habilitación de interrupciones.
La transmisión precisa de datos también depende de la velocidad en baudios y del control de flujo, aspectos que no pueden pasarse por alto durante el diseño del software. Por lo tanto, las siguientes secciones se centrarán en la configuración de la velocidad en baudios de CAN, la detección automática de velocidades en baudios del puerto serie y el control del flujo de datos del puerto serie.

3.1 Configuración de la tasa de filtrado CAN
Uno de los elementos clave del protocolo CAN es la velocidad en baudios. Los usuarios pueden establecer la posición de los puntos de muestreo de bits dentro del período de bits y la cantidad de muestras, lo que les permite optimizar libremente el rendimiento de la red para sus aplicaciones. Sin embargo, durante este proceso de optimización, se debe prestar atención a la relación entre la tolerancia del oscilador de referencia utilizado para los parámetros de temporización de bits y los retrasos de propagación de diferentes señales dentro del sistema.
La velocidad de bits del sistema, fBil, representa el número de bits de datos transmitidos por unidad de tiempo, es decir, la velocidad en baudios fBit=1/tBit. La temporización de bits nominal consta de tres segmentos no-superpuestos: SYNC_SEG, TSEG1 y TSEG2. Estos tres segmentos de tiempo se denominan tSYNC_SEG, tTSEG1 y tTSEG2, respectivamente. Por tanto, el período de bit nominal tBit es la suma de estos tres segmentos de tiempo.
tBit=tSYNC_SEG + tTSEG1 + tTSEG2
Dentro del período de bits, estos segmentos se expresan en términos de múltiplos enteros de una unidad de tiempo básica. Esta unidad de tiempo se denomina cuota de tiempo (TQ), y la duración de una cuota de tiempo es un ciclo del reloj del sistema CAN (tSCL), que se deriva del período del reloj del oscilador (tCLK). El reloj del sistema CAN se puede ajustar programando el factor del preescalador (valor preestablecido de velocidad en baudios, BRP). Específicamente:
tSCL=BRP × 2tCLK=2BPR/fCLK
Otro intervalo de tiempo muy importante para los cálculos de temporización de bits CAN es el ancho de salto de sincronización (SJW), que tiene una duración de tSJW. El segmento SJW no forma parte del ciclo de bits; más bien, define el número máximo de TQ mediante los cuales el ciclo de bits se extiende o acorta durante un evento de resincronización. Además, el protocolo CAN permite a los usuarios especificar el modo de muestreo de bits (SAM), que puede ser un modo de muestra única-o un modo de tres-muestra (seleccionando un resultado de tres muestras). En el modo de muestra única-, el punto de muestreo está al final del segmento TSEG1. En el modo de tres-muestra, se toman dos puntos de muestreo adicionales en comparación con el modo de una sola-muestra; estos están ubicados antes del final del segmento TSEG1, separados por un TQ.

El usuario puede definir BPR, SJW, SAM, TESG1 y TESG2 mencionados anteriormente a través de los registros internos BTR0 y BTR1 del controlador CAN. Los detalles se muestran en la Figura 3. Después de configurar BTR0 y BTR1, el rango de velocidad de baudios real es:
Máximo=1/(tBit - tSJW), Mínimo=1/(tBit + tSJW)
3.2 Detección de velocidad en baudios del puerto serie
Cuando un dispositivo serie actúa como host, si necesita detectar la velocidad en baudios del puerto serie del dispositivo de conversión en ese momento, primero puede configurar la velocidad en baudios de recepción del host (9600 baudios, por ejemplo) y enviar un carácter específico (un retorno de carro, por ejemplo) desde el terminal. De esta manera, el host puede determinar la velocidad en baudios de comunicación del dispositivo de conversión en función de la información de caracteres recibida. El valor ASCII del carácter de retorno de carro es 0DH; Los valores recibidos a diferentes velocidades en baudios se enumeran en la Tabla 2.
Bytes recibidos a diferentes velocidades en baudios
Velocidad en baudios (bit/s) Bytes recibidos (hexadecimal) Velocidad en baudios (bit/s) Bytes recibidos (hexadecimal)
1200 80 4800 E6
1800 F0 9600 0D
2400 78 19200 F*
3.3 Control de flujo del puerto serie
El término "flujo" utilizado aquí se refiere al flujo de datos. La pérdida de datos suele ocurrir durante la transmisión entre dos puertos serie. Dado que el búfer del microcontrolador tiene una capacidad limitada, si el búfer está lleno cuando se reciben datos, se perderán todos los datos que se sigan enviando en ese momento. El control de flujo resuelve eficazmente este problema: cuando el extremo receptor no puede procesar los datos a tiempo, el sistema de control de flujo envía una señal de "no recibir", lo que hace que el extremo emisor deje de transmitir hasta que reciba una señal de "reanudar transmisión". Por tanto, el control de flujo gestiona el proceso de transmisión de datos y evita la pérdida de datos. Los dos tipos de control de flujo comúnmente utilizados son el control de flujo de hardware (incluidos RTS/CTS, DTR/CTS, etc.) y el control de flujo de software (XON/XOFF-continuar/detener). La siguiente explicación se centra únicamente en el método de control de flujo de hardware mediante RTS/CTS.
Cuando se utiliza hardware para el control de flujo, los pines RTS y CTS del terminal serie se conectan a los puertos de E/S del microcontrolador, y las señales de inicio/parada se reciben y transmiten configurando los puertos de E/S en 1 o 0. El equipo terminal de datos (como una computadora) usa RTS para iniciar el flujo de datos enviado por el microcontrolador, mientras que el microcontrolador usa CTS para iniciar y pausar el flujo de datos desde la computadora. Para implementar este método de protocolo de enlace de hardware, durante la programación se establece un indicador de nivel alto-y un indicador de nivel bajo- según el tamaño del búfer de recepción. Cuando la cantidad de datos en el búfer alcanza el umbral de nivel alto-, la línea CTS en el extremo receptor se establece en nivel bajo (0 lógico). Cuando el programa en el extremo transmisor detecta que CTS es bajo, deja de transmitir datos hasta que la cantidad de datos en el búfer de recepción cae por debajo del umbral de nivel bajo-y CTS se establece en alto. RTS se utiliza para indicar si el dispositivo receptor está listo para recibir datos.
3.4 PUEDE Recibir Subrutina
El formato PeliCAN admite marcos estándar y ampliados. El modo CAN se puede configurar usando CDR.7 en el registro divisor de reloj (0 para BasicCAN, 1 para PeliCAN). Al recibir datos CAN, el bit FF en la información de la trama se usa para determinar si es una trama estándar o extendida, y el bit RTR se usa para distinguir entre una trama remota y una trama de datos. La siguiente es la subrutina de recepción CAN:
;//////////////////////////////////////////////////////////////////
;//Recepción de datos CAN/Unificado en un formato de trama con un ID de 2 bytes//
;///////////////////////////////////////////////////////////////////////
RECAUDAR:
MOV R0, #C_RE; Dirección de inicio del buffer interno del microcontrolador
MOV DPTR, #RXBUF; Leer y guardar el contenido del buffer de recepción.
MOVX A, @DPTR; Leer el segundo byte del buffer CAN
MOV @R0, A ; Ahorrar
JB ACC.7, EFF_RE; Bit FF: 0=SFF, 1=EFF
MOVIMIENTO R2, #0
SJMP SFF_RE; Dependiendo del número de ID, la posición donde se captura el "byte de datos" varía
EFF_RE: MOV R2, #2
SFF_RE: MOV R2, #2
SFF_RE:
JB ACC.6, SALIR_RECAN; Verifique el bit RTR; si es 1 (cuadro remoto), salta
ANL A, #0FH
MOV R3, A; En este punto, los 4 bits del medio representan la longitud de los datos.
MOV C_NUM, A; Almacene la longitud de la trama recibida en R3 y R5
RDATA0:
INC DPTR ; ID de 2 bytes
INC R0
MOVX A, @DPTR
MOV @R0, A
INC DPTR
MOVX A, @R0, A
INC DPTR
MOVX A, @DPTR
MOV @R0, A
MOV A, R2; Si es EFF, omita el ID de dos-bytes.
JZ DRATA1
INC DPTR
INC DPTR
DATOS1: ; Bytes de datos
INC DPTR
INC R0
MOVX A, @DPTR
MOV @R0, A
DJNZ R3, RDATA1
SALIR_RECAN:
RETIRADO
4 Conclusión
La miniaturización de las computadoras ha proporcionado las condiciones necesarias para el desarrollo inteligente de instrumentos de medición y control, permitiendo que los dispositivos terminales basados en microprocesadores-posean capacidades superiores de comunicación digital. Con la aparición de un número cada vez mayor de terminales inteligentes, se imponen mayores demandas en cuanto a la arquitectura de red, los protocolos, el rendimiento en tiempo real-, así como la aplicabilidad, la flexibilidad, la confiabilidad e incluso el costo. Por lo tanto, la tecnología de bus de campo es muy prometedora para el desarrollo futuro. La estructura de trama del bus CAN incluye un identificador (ID), que hace posible tener múltiples hosts de red dentro de una red de dispositivos; es decir, a través de estos hosts de red, se puede monitorear el estado operativo de toda la red de dispositivos y se pueden tomar las decisiones de control correspondientes. Este dispositivo ahora ha sido completamente desarrollado y ha logrado excelentes resultados en aplicaciones prácticas.




