TODOPIC

Microcontroladores PIC => - Niple - => Mensaje iniciado por: lucaspalomba en 07 de Noviembre de 2011, 23:46:27

Título: RS485 CON NIPLE
Publicado por: lucaspalomba en 07 de Noviembre de 2011, 23:46:27
BUENAS NOCHES:Hola compañeros foreros, esta noche los molestos a ver si me pueden dar una mano con mi problema ya que hace unas semanas que no logro hacer andar como quiero el proyecto , para eso paso a explicarles las fallas y pruebas que he realizado:

Microcontrolador MASTER:PIC18F4550
Microcontrolador ESCLAVO: PIC16F648A

Falla:Habiendo reparado todas las fallas de programacion y hardware que tuve a lo largo de todo este tiempo con el soft, me encuentro trabado con los siguientes problemas.
No logro hacer entrar en la logica de funcionamiento que se encuentra dentro de la interrupcion por rb0 , configurada por flanco descendente, es decir cuando tomo los valores diferenciales jamas me llegan los valores que envio desde el master es decir el numero de esclavo, no es nunca 1 , casi siempre es 129 , el comando casi siempre es 0 osea nunca toma (recepciona) el valor decimal que envio nunca llega al esclavo.

Pruebas realizadas:He comprobado varias veces el hardware y con osciloscopio medi los valores diferenciales producidos por el sn75176 tanto en el master como en el esclavos y ambos son correctos , bien definidos y sin ruido , excepto con algunos picos de señales.
He comprobado varias veces el firmware y tampoco encuentro problema aparente.Aqui les adjunto algunas imagenes del proyecto para que vean si ven algo anormal en la logica del programa.He comprobado enviar datos con y sin checksum pero no logro el objetivo.

PD:Ya le informe a Jorge Cano un bug que exisitia en el pic16f88 al intentar configurar la interrupcion por RB0 ,esto lo aviso ya que mi idea era trabajar con el micro F88 ya que posee entradas analogicas. Muchas gracias espero que me puedan tender una mano..
Título: Re: RS485 CON NIPLE
Publicado por: lucaspalomba en 08 de Noviembre de 2011, 13:01:39
PUEDE EXISITIR ALGUN PROBLEMA CON EL PIC18F4550 AL COMUNICARLO POR RS485? ALGUN PROBLEMA DE ASSEMBLER?.
Título: Re: RS485 CON NIPLE
Publicado por: lucaspalomba en 08 de Noviembre de 2011, 15:43:13
He realizado simulaciones con el Proteus y llego al mismo problema que en la realidad el dato no llega correctamente.. al esclavo.

Subo el diagrama del que me guie para realizar el hardware.

Título: Re: RS485 CON NIPLE
Publicado por: Fer_TACA en 08 de Noviembre de 2011, 17:01:38
Dentro del programa principal de la parte del master tienes "INTER_B0=Flanco_Desc"". Aqui
configuras si es por flanco ascendente o descendente
Pero en el simbolo siguiente de configurar las interrupciones ¿No deberias de tener habilitado tambien la opcion de ·Interrupcion por deteccion de flanco en RB0". Aqui se habilita la interrupcion por deteccion de flanco en RB0.

F.
Título: Re: RS485 CON NIPLE
Publicado por: andres48 en 11 de Noviembre de 2011, 20:48:02
Hola muchachos
me cuelgo de la charla
Yo arme un master con 16f876A y 30 esclavos con 16f88 con cumincacion rs485 y les aseguro que anda muy bien
eso si, lo unico que me dio resultados fue hacer que el master se comunique por codigo y los esclavos por USART.
solo asi logre que sincronicen la comunicacion.
No se el tema de la interrupcion porque no necesite emplearla. solo tuve algunos problemas con el master pero se trata del sistema de acomodo automatico de bancos que genera Niple
esto se lo comunique a Jorge Cano y ya le envie tambien el NPL.
Respecto al hard, no es complicado, solo que el ultimo esclavo si o si debe llevar la r120 para balancear.
Arme un nodo con estos con cable UTP cat5 a una distancia maxima de 400 mtrs y al presente ni un solo fallo.
Un saludo a todos
Andres
Título: Re: RS485 CON NIPLE
Publicado por: andres48 en 11 de Noviembre de 2011, 20:52:17
Lucas
otra obviedad.
No olvides que los esclavos rececionan su numero a travez de un registro distinto al que tienen como numero fijo ...
es obvio, pero a mi me pasaba lo mismo con el dichoso 129
si el registro donde guardas el nr. del esclavo se llamase ... esclavo, declara un registro distinto en la recepccion para que el programa pueda compararlos.
Saludos
Andres
Título: Re: RS485 CON NIPLE
Publicado por: lucaspalomba en 14 de Noviembre de 2011, 14:47:32
Muchachos muchas gracias por ressponderme , lamentablemente no me llegan los informes de sus respuestas y por ende le pido disculpas por no poder haberle contestado mas rapidamente , aca les adjunto unas simulacione en proteus junto con todos los proyectos y . hex para que puedan simularlo al igual que yo y ver lo que les decia que me pasaba.Las resistencias que se encuentran en el master , con los valores de 560 Ohms , no pasa nada si le subo a 2.2 K cada resitencia excepto la resistencia entre 6 y 7 , el master comienza a enviar valores basura. Voy a analizar detalladamente lo que me explicaron para ver como puedo solucionarlo.

Muchas gracias y espero sus respuestas.. Gracias

PD:En el programa del esclavo no me deja hacer la comunicacion por USART, solamente por codigo, tengo la version de niple 5.6 rv 0
Título: Re: RS485 CON NIPLE
Publicado por: lucaspalomba en 14 de Noviembre de 2011, 14:56:15
Lucas
otra obviedad.
No olvides que los esclavos rececionan su numero a travez de un registro distinto al que tienen como numero fijo ...
es obvio, pero a mi me pasaba lo mismo con el dichoso 129
si el registro donde guardas el nr. del esclavo se llamase ... esclavo, declara un registro distinto en la recepccion para que el programa pueda compararlos.
Saludos
Andres


Andres, no me quedo claro lo que me dijistes de la comparacion de registros del numero de esclavo. Yo le coloco numero de esclavo fijo al "esclavo".Saludos
Título: Re: RS485 CON NIPLE
Publicado por: lucaspalomba en 14 de Noviembre de 2011, 14:59:42
Fer_taca, como siempre te agradesco tu respuesta y te consulto , dentro de la interrupcion por rb0 , que tendria que hacer? , ahi tendria que colocar los bloques de envio y recepcion de datos por rs485?.Saludos
Título: Re: RS485 CON NIPLE
Publicado por: Fer_TACA en 15 de Noviembre de 2011, 16:47:42
Un vez detectada la interrupcion por cambio de estado en RB0 puedes realizar en ella lo que quieras, pero con con la idea de que siempre sean las rutinas lo mas corta posibles y que no se aniden rutinas unas con otras.

F.
Título: Re: RS485 CON NIPLE
Publicado por: djim en 13 de Diciembre de 2011, 05:35:47
Buenas!!! Ahora que ya salude... AYUDAAAA!!!  :D Como es el tema de la comunicacion por RS485? Que tengo que activar para que no me de error de compilacion, me dice:
"Error: El registro _np_rs232_t1 no se encuentra."

el informe de error del MPASM son:
Error[113]   D:\PRUEBAS_485\MASTER\MASTER_00.ASM 664 : Symbol not previously defined (_np_rs232_t1)
Error[113]   D:\PRUEBAS_485\MASTER\MASTER_00.ASM 667 : Symbol not previously defined (_np_rs232_t1)
Error[113]   D:\PRUEBAS_485\MASTER\MASTER_00.ASM 713 : Symbol not previously defined (_np_rs232_t1)
Error[113]   D:\PRUEBAS_485\MASTER\MASTER_00.ASM 716 : Symbol not previously defined (_np_rs232_t1)

-----------------------
1 master (18F4550)
5 Esclavos (16F628A)
-----------------------
El tema es que desde el Master quiero mandar datos para setear los esclavos y que los esclavos me respondan marcando las posiciones en que se encuentran, ahora dispongo de 3 placas entrenadoras con 16F877A, lcd y los modulos de RS485, para visualizar todos los datos y realizar las pruebas necesarias. Espero que alguien me pueda ayudar para armar el programa, por que no entiendo nada jejeje.

P/D: Al generarme error en la compilacion cada vez que guardo me vuelve todo a 0, sino se los mostraria al *.NPL es la primera vez que necesito trabajar esta comunicacion, pido ayuda a aquellos que lo hicieron funcionar. mi Version es 5.5.8 Plus y tengo varias anteriores por si alguien comparte un ejemplito basico  :oops: Muchas gracias amigos!!!

DJIM
Título: Re: RS485 CON NIPLE
Publicado por: Fer_TACA en 13 de Diciembre de 2011, 09:54:37
Por el tipo de nombre, debe ser un registro genera internamente Niple.

Si realizas "control+B" se abre una pantalla con el nombre de los registros declarados. Puedes buscarlos alli. En caso de no encontrarlos puedes crearlos tu mismo "con el mismo nombre que te pide".
Despues debes de volver a compilar y ver si no te da errores.

F.
Título: Re: RS485 CON NIPLE
Publicado por: djim en 13 de Diciembre de 2011, 16:37:39
Amigo Fer... Podrias decirme de que manera activo el modulo, vi en el ejemplo de arriba que tienen interrupcion por transmicion, que bloques inserto en esa parte, si podrias explicarme un poco mas paso a paso, desde el principio por favor. Desde ya muchas gracias

DJIM
Título: Re: RS485 CON NIPLE
Publicado por: Fer_TACA en 14 de Diciembre de 2011, 02:52:42
Ahora estoy en el curro y no tengo el programa delante, esta tarde te pongo algo.


F.
Título: Re: RS485 CON NIPLE
Publicado por: Fer_TACA en 14 de Diciembre de 2011, 15:02:38
Primero debes de insertar un bloque de una interrupcion, debes ir al explorador de herrramientas, seleccionas primero configuar interrupcion y en la ventana que te sale seleccionas la que quieras.
A continuacion insertas un bloque de activar/deactivar interrupcion y lo mismo que antes seleccionas lo que quieras necesites.
Luego insertas el bloque de insertar interrupcion, para ello eliges la que quieras o vayas a utilizar. Una vez insertado este bloque niple te crea una subrutina que la puedes ver a la derecha en el explorador de proyecto. Te abre una nueva pantalla con el comienzo de la rutina de interrupcion(dependiendo de cual sea, te puede crear algun bloque mas ya conectado) Aqui pones los bloques de lo quieras que haga tu programa y finalizas inseertando un bloque de fin de interrupcion.

De regreso al programa principal, sigues colocando el resto de bloques de tu programa.
Recuerda que dentro de la rutina de interrupcion para que sea efectiva, deberia de tener el menor numero de bloques posibles y sobre todo no anidar/llamar desde esa rutina a otra y despues a otra,....
Espero que sea eso lo que preguntabas.

F.
Título: Re: RS485 CON NIPLE
Publicado por: henryflash en 16 de Diciembre de 2011, 08:27:46
hola: Pregunto , para que trabajar con interrupciones!!!!!!! en el momento que quieras mandar un comando del master insertas el bloque de comunicacion rs485 y le envias un comando al esclavo xxx; cundo queres interrogar a un esclavo es lo mismo vas al modulo rs485 y lo configuras en interrogacion del esclavo xxx .
el master es como dice la palabra el maestro y le dice que hacer a los esclavos, los esclavos no se comunican por propia inciatiba con el master ( si asi fuera si deberiamos tener interrupciones, pero si tienes muchos esclavos como controlas que no transmitan juntos ) si es la comunicacion punto a punto si se podria dar al esclavo la libertad que notifique por su propia voluntad con el master prebia paso por una interrupcion.
Disculpen si no fui lo suficientemente claro o ustedes consideran que estoy equivocado pero con la version 5.4 ya lo habia hecho funcionar al sistema rs485, lamentablemente los archivos se perdieron por un disco rigido que no quiso funcionar mas, en la 5.6 todabia no lo probe pero tendria que funcionar perfectamente.
Saludos Henryflash ;-)
Título: Re: RS485 CON NIPLE
Publicado por: andres48 en 16 de Diciembre de 2011, 15:30:10
Para que funcione correctamente, el maestro se configura Por codigo y el esclavo por USART. (es necesario que el pic tenga esa facultad)
Nunca pude hacerlo de otro modo, ni siquiera por interrupciones, al menos con niple.
Incluso arme las estructuras ignorando la funcion de 485 que tiene niple y haciendolas como si de rs232 se tratase.
Lo unico a tener en cuenta en este caso, es ir cambiando el bit del DX de cero (lectura) a uno (envio) antes de definir que hago.
por ejemplo, pongo ese bit en cero y armo la recepcion rs232 , cambio el bit a 1, espero 10mS (el sn75176 tienen un delay a los cambios de estado) y armo el envio de datos por USart. Finalizo con el bit en 0
Todo esto con el esclavo
el Master lo armo con los bloques rs485 de Niple por codigo ya que es quien define el inicio y fin de las trasmiciones.
Otro tema es armar el hardware acorde a los diagramas y colocar solo una resistencia de 120 ohms al final de la linea, no en cada esclavo.
Hoy tengo una red armada de ese modo y realmente no me da problema alguno, pese a que trasmito a 9600 y a una distancia maxima de 270m
un abrazo
andres
Título: Re: RS485 CON NIPLE
Publicado por: Blaga en 01 de Febrero de 2013, 18:42:02

Un saludi mi pregunta es para andres, yo solo e podido trasnmitir a 1200, mi pregunta es si en verdad si esta transmitiendo 9600bd, y como armaste tu circuito RS485 e visto muchas variaciones de este., oja y me puedas responder.