Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
COMPILADOR C CCS
SISTEMAS EMBEBIDOS
DIGITALES III: 1
PIC18F4550
DIGITALES III: 2
ESTANDAR RS485
Principio de funcionamiento
Qu es el bus RS485?
Se conoce tambin como EIA-485, se utiliza para transmitir datos a grandes y es
utilizado en ambientes elctricamente ruidosos. Su conexin es sencilla: a partir
del puerto serie (COM1) de cualquier computador utilizando dos circuitos
integrados econmicos como el MAX232 y MAX485.
RS485 no es un protocolo, es un estndar y pertenece al nivel uno de modelo OSI,
se encuentra en la capa fsica, requiere para su implementacin de tres lneas ,
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 funcin.
DIGITALES III: 3
ESTANDAR RS485
CARACTERISTICAS
TRANSMICION SERIE ASINCRONICA (usas UART)
Transmisin DIFERENCIAL (sobre par trenzado)
Cantidad De Nodos Receptores/Transmisores: 32
Long Max SEGMENTO(cable): 1200 metros
Velocidad MAX:
10Mb/s a 12 metros
54 ohms
-7 +12
+/- 200mv
DIGITALES III: 4
DIGITALES III: 5
RS485
Qu es el max485?
Es un circuito integrado que permite la conversin TTL/RS485, tiene 8 pines, con
las siguientes caractersticas:
R0 Salida TTL
Pin 1
Re complementada
DE
pin 3
Pin 2
DI Entrada TTl
Pin 4
Pin 8
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
conexin:
DIGITALES III: 7
RS485
Suprimir el ruido
RS485 transmite los datos en forma diferencial. Por los dos cables viaja la
misma informacin, 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
seales se restituyen en polaridad y los picos de ruidos que se haban
introducido con la misma polaridad en ambos cables, al invertirse las seales,
se neutralizan y eliminan entre s, y se recupera la seal til que se desea
transmitir. Observe la siguiente grfica:
DIGITALES III: 8
RS485
Configuracin tpica del MAX485
DIGITALES III: 9
DIGITALES III: 10
DIGITALES III: 13
RS485
COMO 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 comunicacin:
1. Maestro enva un byte con un formato especial que indica a todos los
micros esclavos que permanezcan atentos porque que posteriormente se
mencionara la direccin del esclavo. En este punto los microcontroladores
esclavos mantienen sus lneas como entrada y habilitan al max485 para
esta configuracin.
2. El micro controlador maestro enva la direccin 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 enva el comando correspondiente desde el
maestro al esclavo. Asigna sus lneas como salida y el esclavo como
entradas.
4. Si la operacin 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
APLICACIN BASICA
MAESTRO ENVIA
DATOS A ESCLAVO
- PC - MICROCONTROLADOR
DIGITALES III: 16
DIGITALES III: 17
RS485
Modificacin de libreras en ensamblador
Se puede utilizar la libreras RS232 y modificarla, en ella se debe agregar una
lnea adicional a transmisin y recepcin, a esta le denominar RS485_RW.
Las siguientes son las lneas que encabezan la libreria RS485
#DEFINE RS485_Entrada PORTB,0
; Lnea por la que se reciben los datos.
#DEFINE RS485_Salida
PORTB,1
; Lnea por la que se envan los datos.
#DEFINE RS485_RW
PORTB,2
; Lnea 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:
piensa escribir asigne lo siguiente:
Si
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
RS485 EN CCS
PIC18F4550
DIGITALES III: 19
RS485
RS485 EN CCS
CCS cuenta con una librera que permite el control de dispositivos con
bus RS485, para ello se debe ingresar en el encabezado de la librera
las siguientes instrucciones:
#include <RS485.C>
#include <stdlib.h>
// esta libreria permite convertir datos desde y hacia un valor numrico
//por ejemplo, lee por rs232 una cadena y esta se la debe manejar
como un
//numero
Para su comprensin existe en la carpeta ejemplos de CCS uno
dedicado al envo 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 RS485
Entradas de la funcin:
to - Direccion destino (id)
len - Longitud del mensaje(size)
*data - Puntero del mensaje (s)
La funcin 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 prevenir
que el dispositivo se reinicie, esto funcin no es necesaria si enva
respuesta inmediata.
Valor es una variable que inicialmente se enva 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 false
Su objetivo principal es obtener un mensaje desde el bus RS485.
Para este proceso se requiere la direccin 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 lnea del
programa principal y de la librera RS485.C, el objetivo del programa
es contar con una serie de comandos que se envan por RS232 al
microcontrolador este enva mensajes de texto por bus RS485 al
microcontrolador solicitado.
Esta actividad solo la puede realizar si ejecuta el proceso lgico 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 lneas 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
RS485
DIAGRAMA DE CONEXIONES
La librera 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 librera de CCS:
DIGITALES III: 25
RS485
DIAGRAMA DE CONEXIONES
La siguiente grfica ilustra en detalle el conexionado entre el
microcontrolador y el max485.
DIGITALES III: 26
RS485
DIGITALES III: 27
RS485
PROGRAMA EN EJECUCION
DIGITALES III: 28
29