el 02-28-2015 03:27 AM
Hola os comento tengo varias dudas:
tengo una red de equipos en rs485 comunicandose por puerto serie.
El tema esta en que estoy haciendo pruebas con varios equipos para luego colocarlo,en la red resulta que tengo que ir llamando a cada dispositivo uno a uno y yo recibo una respuesta de cada uno de ellos.
Estos equipos lo que le hago que le mando una trama por el puerto serie y espero la respuesta y es esa la que yo interpreto en mi codigo.
Esto lo he solucionado con flat secuence pero resulta que tengo un problema cuando el equipo no esta activo o no responde los valores del primer equipo se pasan al tercero y me gustaria que cuando ese equipo no este activo se paasara al siguientee y asi susecivamente.
os dejo el codigo a ver si alguien a hecho algo de esto.
el 03-01-2015 12:49 AM
Hola, no estoy en al oficina por lo que no puedo mirar a tu código, pero te comento que probablemente no tienes puesto un valor de timeout en lectura adeguato y/u no miras al timeout, y por esto las respuestas se mezclan entre los equipos. Igualmente creo que la sequence se podría evitar puesto que los hilos de la comunicación ya ponen los vi en sucesión (write-read) sin necesidad de algo más.
Empieza poniendo como timeout el doble del tiempo de respuesta de tus equipos, y al salir del visa read mira al error out: si es timeout marcas el equipo como absente y reseteas el error. Además podrías añadir un visa read inmediato antes del write para limpiar la cola cuando empiezas a tratar cada equipos, así estas seguro de que no hay mensajes pendientes no leídos que pueden ser interpretados como respuestas.