CCS_RS485
-
Upload
mario-andres-caceres-nocera -
Category
Documents
-
view
226 -
download
7
description
Transcript of CCS_RS485
GAMA ALTA DE MICROCONTROLADORES
COMPILADOR C CCS SISTEMAS EMBEBIDOS
DIGITALES III: 1
GAMA ALTA DE MICROCONTROLADORES
PIC18F4550
RS485 ,vomo funciona?
DIGITALES III: 2
ESTANDAR RS485
Principio de funcionamiento
¿Qué es el bus RS485?
Se conoce también como EIA-485, se utiliza para transmitir datos a grandes y es utilizado en ambientes eléctricamente ruidosos. Su conexión es sencilla: a partir del puerto serie (COM1) de cualquier computador utilizando dos circuitos integrados económicos como el MAX232 y MAX485.
RS485 no es un protocolo, es un estándar y pertenece al nivel uno de modelo OSI, se encuentra en la capa física, requiere para su implementación de tres líneas , dos de datos y una de tierra por ello se puede utilizar cable blindado o cable utp . Puede RS-485 utilizar un par de cobre trenzado apantallado, y permite velocidades entre 9.6 kbps y 12 Mbps.
Cuando no se encuentra el MAX485 se remplaza con SN76156, que cumple la misma función.
DIGITALES III: 3
ESTANDAR RS485
CARACTERISTICAS
TRANSMICION SERIE ASINCRONICA (usas UART)
Transmisión DIFERENCIAL (sobre par trenzado)
Cantidad De Nodos Receptores/Transmisores: 32
Long Max SEGMENTO(cable): 1200 metros
Velocidad MAX: 10Mb/s a 12 metros
Carga Por Driver: 54 ohms
Rango de tension de entrada: -7 +12
Sensibilidad: +/- 200mv
DIGITALES III: 4
RED RS485 BASICA
En la actualidad existen versiones de CI que permiten conectar sistemas con 128 y hasta 256 dispositivos
DIGITALES III: 5
RS485
¿Qué es el max485?
Es un circuito integrado que permite la conversión TTL/RS485, tiene 8 pines, con las siguientes características:
R0 Salida TTL Pin 1
Re complementada Pin 2DE pin 3
DI Entrada TTl Pin 4
Vcc alimentación a 5 voltios Pin 8
D0 complementada RS485 Pin 7D0 RS485 Pin 6
Gnd Tierra Pin 5
DIGITALES III: 6
RS485
¿Qué es el max485?
El circuito se habilita colocando RE / y DE en bajo, si lo que se desea es leer.
Si se desea escribir se debe colocar RE / y DE en alto.
Observe la siguiente estructura de conexión:
DIGITALES III: 7
RS485Suprimir el ruidoRS485 transmite los datos en forma diferencial. Por los dos cables viaja la misma información, pero desfasada 180° en un cable respecto al otro. De esa forma, cualquier interferencia que se introduce en el cableado lo hará en ambos hilos por igual, con la misma polaridad y amplitud. En el destino de la terminal, sea en el ordenador o en el dispositivo colocado a la distancia, las señales se restituyen en polaridad y los picos de ruidos que se habían introducido con la misma polaridad en ambos cables, al invertirse las señales, se neutralizan y eliminan entre sí, y se recupera la señal útil que se desea transmitir. Observe la siguiente gráfica:
DIGITALES III: 8
RS485
Configuración típica del MAX485
DIGITALES III: 9
RS485 CONFIGURACION MAX485
DIGITALES III: 10
MAX485 PROVEEDORES NACIONALES
Si no encuentra el CI MAX485 en las tiendas locales de electrónica, este se puede adquirir en Bogotá con el proveedor PLINTEC.
DIGITALES III: 11
RS485 contra RS232
Una de las ventajas de RS485 es el alcance comparado con RS232, RS485 se maneja niveles TTL de tensión, mientras que el RS232 maneja tensiones de dos polaridades con valores absolutos de +12 y -12 Volts. RS232 permite comunicaciones “full-duplex” (ambos terminales transmiten y reciben datos en forma simultánea), pero su distancia de trabajo es de tan sólo 12 metros a 30 metros y para ello se requieren al menos 8 cables para una comunicación full y es muy a ser afectado por el ruido eléctrico. En RS485 la comunicación es Half-duplex. En esta redes se encuentra un micro transmitiendo y los demas se encargan de recibir los datos.
MODULOS CONVERSION RS232 A RS485
Existen en el comercio adaptadores RS232 a RS485, para ello hacen uso de un microcontrolador como el 16f84, en este caso se puede configurar al PC como el maestro quien por medio de software puede administrar los datos de los diferentes esclavos, al igual que ejercer operaciones de control. Su docente Olger Erazo hará entrega de una copias de un articulo publicado hace algunos años por la revista CEKIT.
DIGITALES III: 12
RS485 ejemplo de conexionado
DIGITALES III: 13
RS485COMO TRANSFERIR DATOS
RS485 es un estandar por ello podemos construir un protocolo, recuerde la forma como transfiere los datos X10 o como los hace el bus I2cC. La siguiente puede ser una estructura de comunicación:
1. Maestro envía un byte con un formato especial que indica a todos los micros esclavos que permanezcan atentos porque que posteriormente se mencionara la dirección del esclavo. En este punto los microcontroladores esclavos mantienen sus líneas como entrada y habilitan al max485 para esta configuración.
2. El micro controlador maestro envía la dirección del esclavo en modo escritura, con el cual se quiere comunicar y habilita su max485 como entrada esperando un Ok.
3. Una vez llega el OK, se envía el comando correspondiente desde el maestro al esclavo. Asigna sus líneas como salida y el esclavo como entradas.
4. Si la operación es escribir el esclavo realiza las operaciones del caso.
DIGITALES III: 14
RS485
En Proteus se encuentra el circuito integrado MAX487
DIGITALES III: 15
RS485
- PC - MICROCONTROLADOR
APLICACIÓN BASICA MAESTRO ENVIA DATOS A ESCLAVO
DIGITALES III: 16
RS485 APLICACION BASICA MAESTRO ENVIA DATOS A ESCLAVO
DIGITALES III: 17
RS485
Modificación de librerías en ensamblador
Se puede utilizar la librerías RS232 y modificarla, en ella se debe agregar una línea adicional a transmisión y recepción, a esta le denominará RS485_RW. Las siguientes son las líneas que encabezan la libreria RS485
#DEFINE RS485_Entrada PORTB,0 ; Línea por la que se reciben los datos.#DEFINE RS485_Salida PORTB,1 ; Línea por la que se envían los datos.#DEFINE RS485_RW PORTB,2 ; Línea por la que se habilita escritura o
lectura, 0 es leer y uno es escribir.
Al iniciar el proceso de lectura no se olvide asignar las siguientes instrucciones: Si piensa escribir asigne lo siguiente:
RS485_LeeDato RS485_EnviaNumero BCF RS485_RW BSF RS485_RW movlw d'8' addlw '0' movwf RS485_ContadorBits RS485_EnviaDato
BSF RS485_RW
DIGITALES III: 18
GAMA ALTA DE MICROCONTROLADORES
PIC18F4550
RS485 EN CCS
DIGITALES III: 19
RS485
RS485 EN CCS
CCS cuenta con una librería que permite el control de dispositivos con bus RS485, para ello se debe ingresar en el encabezado de la librería las siguientes instrucciones:
#include <RS485.C>
#include <stdlib.h>// esta libreria permite convertir datos desde y hacia un valor numérico//por ejemplo, lee por rs232 una cadena y esta se la debe manejar como un//numero
Para su comprensión existe en la carpeta ejemplos de CCS uno dedicado al envío de mensajes en una red RS485. Hasta el momento no se puede verificar su funcionamiento
DIGITALES III: 20
RS485
FUNCIONES
Al explorar las diferentes funciones encontramos:
RS485_INIT();Permite inicializar los pines del micro y del bus.
INT1 RS485_SEND_MESSAGE(INT8 TO, INT8 LEN, INT8* DATA)Envia mensaje sobre el bus RS485Entradas de la función: to - Direccion destino (id)len - Longitud del mensaje(size)*data - Puntero del mensaje (s)La función retorna verdadero si se pudo enviar la cadena, en caso contrario retorna falso verdadero es 1, falso es cero,
DIGITALES III: 21
RS485
Ejemplo:DO { envio=rs485_send_message(id, size, s); fputS ("\n\rfuncion de envio ciclo do", PC); }while(!envio);
RS485_WAIT_FOR_BUS(VALOR); void rs485_wait_for_bus(int1 clrwdt) Espera hasta que el bus RS485 este abierto. Normalmente se usa antes de enviar un mensaje para evitar colisiones.Pasa a verdadero al reiniciar el timer del wath dog para prevenirque el dispositivo se reinicie, esto función no es necesaria si envía respuesta inmediata.Valor es una variable que inicialmente se envía como false, para que esta retorne con un true.
DIGITALES III: 22
RS485
RS485_GET_MESSAGE(cadena, FALSE))La funcion int1 rs485_get_message(int* data_ptr, int wait) retorna un int1 con un valor true o falseSu objetivo principal es obtener un mensaje desde el bus RS485. Para este proceso se requiere la dirección la cual puede ser un valor de 1 - 33. Un 1 es retornado si al verificar la paridad existe un error. Ejemplo:
if(rs485_get_message(msg, FALSE)) { printf("\n\r%d: ", msg[0]);
for(i=0; i < msg[1]; ++i) putc(msg[i+2]);
printf("\n\r"); //al final hace salto de linea retorno de carro }
DIGITALES III: 23
RS485
Actividad en clase
Ingrese a la carpeta de ejemplos de CCS y decodifique cada línea del programa principal y de la librería RS485.C, el objetivo del programa es contar con una serie de comandos que se envían por RS232 al microcontrolador este envía mensajes de texto por bus RS485 al microcontrolador solicitado.
Esta actividad solo la puede realizar si ejecuta el proceso lógico del programa, sus conocimientos en C le permiten realizar hasta el diagrama de conexiones. Si observa demasiada complejidad solicite al Docente Olger Erazo que le entregue las líneas decodificadas. Este programa de ejemplo no funciona, pero es interesante el modo como direcciona los datos.
El siguiente diagrama ilustra las conexiones a desarrollar en proteus:
DIGITALES III: 24
RS485DIAGRAMA DE CONEXIONESLa librería indica el diagrama de conexiones, esta depende si cuenta o no con interrupciones. Los pines asignados se encuentran en la siguiente imagen que se extrae de la librería de CCS:
DIGITALES III: 25
RS485DIAGRAMA DE CONEXIONESLa siguiente gráfica ilustra en detalle el conexionado entre el microcontrolador y el max485.
DIGITALES III: 26
RS485
DIAGRAMA DE CONEXIONES GENERAL
DIGITALES III: 27
RS485
PROGRAMA EN EJECUCION
DIGITALES III: 28
29