Uso un cable adaptador FTDI USB-RS485 para conectar un dispositivo RS-485 a una computadora.
La comunicación es bastante simple, la computadora envía solicitudes periódicas, el dispositivo las responde.
En una computadora (portátil Dell, Win XP) esto funciona como se esperaba, pero con otra (portátil Fujitsu, Win XP) tengo algunos problemas.
Cada par de solicitudes, el dispositivo no las responde y reclama un error de paridad. Por lo que vemos con PortMon y un osciloscopio, las solicitudes son siempre las mismas, por lo que deben responderse.
La aplicación en las computadoras portátiles es exactamente la misma y todos los controladores (CDM 2.08.24) son iguales. Una diferencia es que la computadora portátil problemática tenía instalada una versión anterior del controlador.
¿Alguna pista de lo que debo revisar?
Editar:
Entonces, investigamos el problema un poco más: 2 computadoras portátiles funcionan bien (HP, Dell, ambas WinXP e Intel Centrino), otras tres no funcionan (2 Fujitsu, Sony, WinXP, Win7, todas Intel i5 o i7).
Medimos las señales con un osciloscopio, que se envían al dispositivo. Las computadoras portátiles que no funcionan envían señales, que oscilan entre 3 y 6 microsegundos. Entonces asumimos que el dispositivo no puede reconocer los bits correctos debido a esa fluctuación. Usamos diferentes cables FTDI USB-RS485, pero siempre con los mismos síntomas. Las computadoras portátiles que funcionan tienen una fluctuación de máx. 1 microseg.
Entonces mi pregunta: ¿por qué tiembla la señal transmitida por el cable en algunas computadoras, en otras no?
También nos pusimos en contacto con el soporte de FTDI, pero todavía no hubo una respuesta suficiente.
Edit2:
Hasta ahora tenemos 2 computadoras portátiles que funcionan y varias que no funcionan. Parece que las computadoras portátiles más antiguas con cosas de Centrino funcionan, hasta ahora ninguna computadora portátil más nueva con CPU Intel i5 / i7 funcionó.
Sospechábamos que no hay un reloj interno en el adaptador y que el adaptador usa un reloj de la computadora portátil, pero el soporte de FTDI confirmó que el adaptador tiene su propio reloj interno. El soporte de FTDI no ha oído hablar de este problema en el pasado y hasta ahora no tiene una solución.
Encontré exactamente el mismo problema: convertidor USB <> RS485 basado en FTDI (la marca es "DIGITUS"), funcionando a 57600 bps, funcionando correctamente en algunas máquinas y en algunas envía grandes cantidades de datos muy, muy poco confiables. Lo que descubrí (después de perder mucho tiempo investigando la conexión a tierra y la terminación del bus) es que en las máquinas rápidas no funcionó, porque el chip del controlador RS485 (no fabricado por FTDI) no liberó el bus RS485 rápido/confiable suficiente en relación con la salida del chip FTDI. FTDI libera el bus después de todos y cada uno de los bytes (justo después del bit de parada) a través del puerto TXEN y lo vuelve a adquirir inmediatamente para el siguiente byte (que en las máquinas rápidas ya está en el búfer). La solución fue poner un retraso entre cada byte enviado y funcionó. Sí, una solución bastante mala. Desearía que FTDI diera una opción, por ejemplo
Hay dos posibilidades como yo lo veo.
1:
No está anulando por completo los ajustes de configuración del FT232 cuando abre la interfaz serial.
He realizado un trabajo bastante extenso con las interfaces seriales de FTDI, y puedo decirles que es muy posible que una interfaz serial basada en uno de sus dispositivos se encuentre en un estado muy extraño al abrirlo por primera vez. Dependiendo de cómo esté hablando con el puerto (¿lo está tratando como un puerto serie o está usando el controlador D2XX de FTDI?), en realidad tenía un puerto abierto en modo 7E1 (7 bits, incluso paridad, 1 bit de parada) en cada inicialización, a pesar de que nunca lo había usado en esa configuración.
Los valores predeterminados se almacenan utilizando un conjunto completo de claves de registro, pero recomendaría configurar manualmente todas las opciones de configuración del puerto cada vez que abra la interfaz, incluso si está seguro de que la computadora en la que se encuentra tiene los valores predeterminados correctos.
2:
La otra posibilidad que veo es más complicada:
Básicamente, FTDI no fabrica dispositivos USB-RS-485. Solo fabrican dispositivos USB-Parallel y USB-RS232. Como tal, para hacer una interfaz USB-RS485 basada en FTDI, necesita un IC de búfer adicional, que generalmente está controlado por algunas de las líneas IO adicionales en uno de los IC serie USB de FTDI.
Supongo que es posible que algunas de las líneas de control auxiliares en su interfaz USB-RS485 estén configuradas de manera diferente en cada computadora.
Por ejemplo, vea este esquema del convertidor USB-485 de demostración de FTDI :
Como puede ver, el estado de CBUS2
y CBUS4
están involucrados en el manejo de transmisión/recepción y habilitación de recepción respectivamente.
Puedo concebir (aunque es bastante improbable), que la línea de habilitación de transmisión o recepción FS485 esté configurada para usar el pin incorrecto por el controlador en una de las computadoras (puede configurar TXEN y RXEN para que sean cualquiera de CBUS0-CBUS4. Esto podría causar problemas interesantes con las líneas de control flotantes/indeterminadas del IC de la interfaz 485. Sin embargo, esto me parece bastante poco probable.
¿Quizás un problema de calidad de energía? Los chips en adaptadores como ese generalmente son alimentados por la PC.
Puede usar un analizador USB (software o hardware) para descartar problemas de software o controladores.
Hicimos algunas pruebas más en diferentes computadoras portátiles (perdón por el formateo, no descubrí cómo formatear una tabla aquí):
Tipo de portátil | Procesador | Comunicaciones en serie
DELL Precisión M6300 | Intel Centrino | DE ACUERDO
HP EliteBook 6930p | Intel Centrino | DE ACUERDO
Panasonic Toughbook CF-18 | Intel Centrino | DE ACUERDO
Roda Rocky RK9 | Intel Core 2 | DE ACUERDO
Serie Fujitsu Lifebook S | Intel Core i5 | FAIL (incluso en puertos USB3)
Sony Vario | Intel Core i5 | FALLAR
caballos de fuerza | Intel Core i5 | FAIL (incluso en puertos USB3)
Entonces parece que las computadoras portátiles con conjuntos de chips USB para procesadores Intel i no funcionan, las más antiguas sí.
Sin embargo, compré una USB-ExpressCard (lo siento, tienda web alemana) con el chipset Renesas USB 3.0 y con eso la computadora portátil Fujitsu funcionó bien.
Entonces, usar ExpressCards es una solución para nosotros, pero todavía no sé cuál es el problema exacto. El soporte de FTDI parecía no estar al tanto de ese problema.
Jim París
chris stratton
Simón
Juan U.