martes, 9 de agosto de 2022

Uso de teclado bluetooth en Inglés o en Español en un dispositivo Android con Español Latinoamericano

En el caso de tener la necesidad de usar un teclado bluetooth para escribir en un dispositivo Android configurado con un teclado Español (US), Español (América Latina) o Español (México), pero dicho teclado físico no es el teclado en español latinoamericano, se deben realizar los siguientes pasos:

1. Identificación del tipo de teclado físico que se posee en comparación con el teclado en Español Latinoamericano.

Figura 1. Teclado con distribución QWERTY para Latinoamérica (Tomado de Wikipedia).

Si el teclado tiene la siguiente distribución de teclas, entonces es uno QWERTY para Estados Unidos:

Figura 2. Teclado con distribución QWERTY para Estados Unidos (Tomado de Wikipedia).

Si el teclado tiene la siguiente distribución de teclas, entonces es uno QWERTY para España:

Figura 3. Teclado con distribución QWERTY para España (Tomado de Wikipedia).

2. El caso más simple es en que el teclado físico posee una distribución QWERTY para España, en ese caso haremos la siguiente configuración (Para los ejemplos usaré una tableta Samsung Tab S3):

Una vez conectado el teclado bluetooth al dispositivo Android, debemos ir a Configuración à Administración General à Idioma y entrada

Figura 4. Pantalla de Idioma y entrada. 

Allí se puede ver que tenemos conectado un teclado bluetooth IMEXX modelo IME-24850.
Figura 5. Distribución de las teclas del teclado IMEXX.

Al pulsar la opción  de Teclado físico llegamos a la pantalla correspondiente:
Figura 6. Pantalla de Teclado físico.

Pulsamos sobre la opción de Teclado Samsung - Español (US) y nos aparecerá la siguiente pantalla:
Figura 7. Pantalla Teclado Samsung - Español (US).
Hay que desplazarse hasta encontrar la opción solo llamada: Español y selecciónela.

De manera de que quede seleccionado ese idioma y diseño en el teclado físico: 
Figura 8. Pantalla de Teclado físico cambiado a Español.

Para escribir la ñ, no hay problema ya que está disponible en el teclado bluetooth. 
Para escribir las letras tildadas se usa la tecla a la derecha de la Ñ:
Figura 9. Tecla de la tilde.
Y para escribir las letras con diéresis se usan las teclas Mayúscula () + Tilde (´) antes de cada vocal.
Figura 10. Tecla de la diéresis.

3. El segundo caso es en el que tenemos un teclado físico que posee una distribución QWERTY para Estados Unidos, en ese caso haremos la siguiente configuración:

Una vez conectado el teclado bluetooth al dispositivo Android, debemos ir a Configuración à Administración General à Idioma y entrada:
Figura 11. Pantalla de Idioma y entrada.

Allí se puede ver que tenemos conectado un teclado bluetooth FINTIE modelo EB030 del cual posee la distribución de teclas que muestra la Figura 12:
Figura 12. Distribución de teclas del teclado FINTIE.

Al pulsar la opción  de Teclado físico llegamos a la pantalla correspondiente:
Figura 13. Pantalla de Teclado físico.

Pulsamos sobre la opción de Teclado Samsung - Español (US) y nos aparecerá la siguiente pantalla:
Figura 14. Pantalla Teclado Samsung - Español (US)

Hay que desplazarse hasta encontrar la opción llamada: Inglés (EE. UU.), internacional y selecciónela.

De manera de que quede seleccionado ese idioma y diseño en el teclado físico: 
Figura 15. Pantalla de Teclado físico cambiado a Inglés (EE. UU.), internacional.

Para escribir las letras del alfabeto castellano se deben usar la combinaciones mostradas en la Figura 16:
Figura 16. Configuración del teclado Inglés de EE. UU. Internacional  (Tomado de Wikipedia).

La letra ñ se obtiene al usar la combinación de teclas Alt Gr + N.
La Ñ se genera usando la combinación de teclas Shift + Alt Gr + N.
Las letras tildadas se obtienen con la combinación Alt Gr + ´ (Tecla a la izquierda de Enter) y luego se presiona la tecla que necesitamos tildar.
Las vocales tildadas se obtienen más rápido con solo presionar Alt Gr junto con la vocal, por ejemplo: Alt Gr + A = á, Alt Gr + E = é, Alt Gr + I = í, etc. 
Las vocales mayúsculas tildadas se generan con la combinación Shift + Alt Gr + vocal, así: Shift + Alt Gr + A =Á, Shift + Alt Gr + E = É, etc.
Las vocales con diéresis se obtienen con la combinación Shift + Alt Gr + ´ (Tecla a la izquierda de Enter) y luego se presiona la vocal que necesitamos tildar. Una manera más directa es usando Alt Gr + Q para ä, Shift + Alt Gr + Q para Ä, Alt Gr + P para ö, Shift + Alt Gr + P para Ö, Alt Gr + Y para ü, Shift + Alt Gr + Y para Ü.
La apertura del signo de interrogación (¿) se genera usando: Alt Gr + /
La apertura del signo de admiración (¡) se genera usando: Alt Gr + 1

4. El tercer caso es en el que tenemos un teclado físico que posee una distribución QWERTY para Estados Unidos, pero el teclado es tan pequeño que no incluye el Alt Gr, sino solo un Alt izquierdo. En ese caso haremos la siguiente configuración:

Una vez conectado el teclado bluetooth al dispositivo Android, debemos ir a Configuración à Administración General à Idioma y entrada:
Figura 17. Pantalla de Idioma y entrada.

Allí se puede ver que tenemos conectado un teclado bluetooth FINTIE el cual posee la distribución de teclas que muestra la Figura 18:
Figura 18. Distribución de teclas del teclado FINTIE.

Notamos que no tiene la tecla Alt Gr que necesitamos, por lo que para solucionar este problema se puede instalar una aplicación de Android llamada External Keyboard Helper Pro ®.
Figura 19. App External Keyboard Helper Pro ya instalada.

Vamos a buscar en el dispositivo Android la App llamada EKH Settings, dentro de las dos instaladas:
Figura 20. App EKH Settings.

Una vez la ejecutamos vamos a la opción: Seleccionar la disposición del teclado:
Figura 21. Menú principal de EKH Settings.

Seleccionamos el idioma English (US-International) que es el que corresponde a nuestro teclado físico.
Figura 22. Opciones para seleccionar la disposición del teclado.

Ahora vamos pulsamos sobre Propiedades avanzadas:
Figura 23. Menú principal de EKH Settings.

Luego seleccionamos la opción de Distribución de teclas:
Figura 24. Menú de Propiedades avanzadas.

Dejamos marcada la opción Anular teclas especiales:
Figura 25. Menú de Distribución de teclas.

Ya con esto queda configurada la App External Keyboard Helper.

En nuestro dispositivo Android vamos de nuevo a Configuración à Administración General à Idioma y entrada. Pulsamos sobre la opción de Teclado predeterminado:
Figura 26. Opciones de Teclado predeterminado.

Vamos a seleccionar el teclado External Keyboard Helpe...
Figura 27. Pantalla de Idioma y entrada con el teclado ya seleccionado.

Ya con esto podemos usar la única tecla Alt del teclado como la tecla Alt Gr y escribir las siguientes combinaciones de teclas para obtener las necesarias del idioma castellano (Refiérase a la Figura 16):

La letra ñ se obtiene al usar la combinación de teclas Alt + N.
La Ñ se genera usando la combinación de teclas Shift + Alt + N.
Las vocales tildadas se obtienen con solo presionar Alt junto con la vocal, por ejemplo: Alt + A = á, Alt + E = é, Alt + I = í, etc. 
Las vocales mayúsculas tildadas se generan con la combinación Shift + Alt + vocal, así: Shift + Alt + A =Á, Shift + Alt + E = É, etc.
Las vocales con diéresis se obtienen con usando Alt + Q para ä, Shift + Alt + Q para Ä, Alt + P para ö, Shift + Alt + P para Ö, Alt + Y para ü, Shift + Alt + Y para Ü.
La apertura del signo de interrogación (¿) se genera usando: Alt + /
La apertura del signo de admiración (¡) se genera usando: Alt + 1

NOTA: En mi caso Ä no apareció con la combinación Shift + Alt + Q dentro de la App de Microsoft® Word, pero sí aparece en todas las otras Apps en que la probé, se resuelve al usar Caps Lock y a continuación Alt + Q y luego volver a presionar Caps Lock para desactivar las mayúsculas.

Conclusiones:

  1. Se debe tratar de comprar el teclado físico que tenga la distribución de teclas igual a la del idioma configurado en el dispositivo móvil.
  2. En el caso que no tengamos un teclado con la misma distribución de teclas que la del idioma configurado en el dispositivo móvil, se debe tratar que el teclado no sea tan pequeño que carezca de la tecla Alt Gr.
  3. En el caso que teclado sea pequeño y no disponga de la tecla Alt Gr, se debe comprar e instalar una App para cambiar la configuración de las teclas y asignar la funcionalidad de Alt Gr a otra tecla, idealmente a la tecla Alt izquierda. 
  4. Esta solución también funciona para los teclados USB.

Bibliografía:

martes, 31 de mayo de 2022

Adaptadores de USB a HDMI

Opciones a 1080p.

Cuando para las presentaciones, se necesita hacer uso de otra pantalla, modernamente se usa la interfaz HDMI que viene integrada en las computadoras, a veces debido a que se daña o que se necesita añadir más pantallas, tenemos la necesidad de usar un adaptador del tipo USB a HDMI.

En esta entrada se examinan dos adaptadores, el adaptador de PC a HDMI Auvio y el adaptador de USB 3.0 a HDMI iMEXX, así como otro genérico y sin marca comercial.

Adaptadores de la marca iMEXX modelo IME-19915. 

Figura 1. Adaptador USB - HDMI IME-19915 iMEXX.

Este adaptador puede transportar video con alta calidad y alta definición, lo cual es ideal para que usted conecte su dispositivo compatible con USB 3.0 (por ejemplo, computadora personal, laptop) a un monitor de PC, HDTV o visualizar contenidos de la computadora en una televisión con entrada HDMI o un proyector compatible con HDMI.

Características del adaptador:

Marca:

Imexx

Modelo:

IME-19915

Fuente:

USB 3.0

Salida:

HDMI (FHD 1080 DPI)

Longitud:

15 centímetros

El driver que usa es compatible solo con Windows, para Windows XP y desde Windows 7 a 10 y 11.

Figura 2. Nombre del driver y del editor del iMEXX.

Para que el driver quede funcionando correctamente, es necesario reiniciar la computadora después de la instalación.
Figura 3. Pantalla de reinicio después de instalar el driver.

Adaptadores de marca genérica modelo MS2160. 

Figura 4. Adaptador USB - HDMI MS2160.

Este adaptador USB 3.0 a HDMI se usa para conectar dispositivos habilitados con USB, tales como laptops y computadoras de escritorio, con dispositivos habilitados con HDMI, tales como monitores, proyectores y TVs, para soluciones de múltiples monitores, expandiendo el espacio de trabajo con una pantalla dividida, una pantalla duplicada, etc.

Este convertidor USB a HDMI, teniendo el modo ampliado, le permite a su laptop tener la visibilidad de múltiples tareas al mismo tiempo. El modo duplicado le da a su laptop una gran pantalla para el disfrute visual, Es adecuado para el entretenimiento con juegos, el cine en casa, la videoconferencia, la capacitación corporativa, etc.

Características del adaptador:

Marca:

No disponible

Modelo:

MS2160

Fuente:

USB 3.0 (480P 720P 1080P)

Salida:

HDMI (FHD 1080 DPI)

Longitud:

20 centímetros

Cabe destacar que la construcción de este adaptador, a diferencia de los demás vistos aquí, es en ABS y aluminio.

Figura 5. Características físicas del convertidor,

Este convertidor usa el chip HU93A y los drivers que utiliza son compatibles con Windows, MacOS y Android, ellos se pueden descargar desde el siguiente enlace. Para instalar este controlador, se tuvo que desinstalar antes el del adaptador iMEXX.

(Nota: Debido al problema de la versión móvil y la compatibilidad del sistema, no se nos recomienda usarlo en el teléfono móvil, aunque próximamente lo probaré en dispositivos Samsung con Android 9 y 12 para dar mis valoraciones)

Instrucciones:
  1. Prepare la fuente de señal, el dispositivo de visualización, el cable HDMI-A a HDMI-A (al menos la versión 1.4) y este producto, si el dispositivo de visualización no tiene su propio audio, no escuchará el sonido.
  2. Inserte el enchufe USB-A del producto USB a HDMI en el enchufe USB-A de la fuente de señal. Si se trata de un dispositivo Apple o un dispositivo Android, agregue un adaptador de función OTG (TIPO-C a USB-A ) a la fuente de señal. ), luego inserte el enchufe USB-A del producto USB a HDMI en el enchufe USB-A del adaptador OTG.
  3. Este producto USB a HDMI tiene almacenamiento FLASH incorporado (no necesitará un disco de instalación del driver). Después de completar el paso 2, aparecerá un dispositivo de almacenamiento extraíble en el dispositivo fuente de la señal.
  4. Para el sistema MacOS, instale MSDisplay_MacOS_v1.0.2b_20201125.dmg, para el sistema WINDOWS, instale MSDisplay_MultiDev_v1.0.1.60.exe. Después de instalar el controlador, reinicie el dispositivo. El disco extraíble ya no estará visible hasta que el controlador se desinstale.
  5. Inserte los enchufes HDMI-A a HDMI-A en el producto USB a HDMI y la toma HDMI en el dispositivo de visualización respectivamente, y configure la fuente de señal del dispositivo de visualización en la entrada HDMI.
  6. El sistema WINDOWS puede usar la tecla de acceso directo WIN+P para cambiar la copia de pantalla y las funciones extendidas. Para el sistema MacOS, primero debe seleccionar la opción Permitir grabación de pantalla en la configuración de privacidad y configurar la copia o extensión modo en Preferencias del sistema - Pantalla.

Adaptadores de la marca Auvio USB de computadora a TV HDMI .

Conecte su computadora a un televisor o monitor externo con este accesorio a través de mini USB a HDMI.

  • No se requieren controladores para los siguientes sistemas: Windows 10 y 11, Windows 8.1 , Windows 8, Windows 7 y Mac OS X 10.4 a 10.13. 
  • Admite video de alta definición hasta 1080p. 
  • Incluye disco de controlador de software para la configuración.
  • Cable mini USB de 3 pies incluido. 
  • Se requiere un cable HDMI para su uso (no incluido).


Figura 6. Adaptador USB a HDMI Auvio.

Características del adaptador:

Marca:

Auvio

Número de parte:

1500672

Fuente:

Mini USB 2.0

Salida:

HDMI (Hasta 1080p)

Longitud:

3 pies

El  driver que usa es compatible con dispositivos displaylink y se puede descargar en este enlace y es compatible con Windows, MacOS, Android, Chrome OS y Ubuntu. 

Figura 7. Contenido de la caja del adaptador Auvio.

Conclusiones:

Se presentan tres opciones con resolución de hasta 1080p que son baratas y funcionales en Windows, si se necesita que funcionen en otro sistema operativo, sugiero el adaptador marca Auvio que me ha funcionado muy bien desde hace ya bastante tiempo en Windows, Mac OS y Android. Actualmente hay opciones a 4K que se pueden ver en el siguiente enlace, pero que no he encontrado de venta en El Salvador.

Actualizado: 29 de junio de 2022.

lunes, 30 de mayo de 2022

Programación de Robots Industriales. Parte 2.

 Entorno de programación

La programación de un sistema robótico requiere la definición de un entorno de programación soportado por lenguajes adecuados, lo que permite al operador impartir las instrucciones de la tarea que el robot debe ejecutar. El entorno de programación tiene encomendada no solo la función de traducir los comandos mediante un lenguaje adecuado, sino también la función de comprobar la correcta ejecución de una tarea que está siendo ejecutada por el robot. Por tanto, los entornos de programación de robots, además de tener algunas características en común con los entornos de programación de computadoras, presentan una serie de cuestiones relacionadas con la observación de que la ejecución de programas produce efectos en el mundo físico. En otras palabras, incluso si se dispone de una descripción muy precisa de la realidad física en el entorno de programación, inevitablemente se producirán una serie de situaciones que no han sido predichas o no pueden predecirse.

Como consecuencia, un entorno de programación de robots debe estar dotado de las siguientes características:
  • sistema operativo en tiempo real,
  • modelado del mundo,
  • control de movimiento,
  • lectura de datos sensoriales,
  • interacción con el sistema físico,
  • capacidad de detección de errores,
  • recuperación de las funciones operativas correctas,
  • estructura lingüística específica.
Por lo tanto, los requisitos de un entorno de programación pueden provenir naturalmente de la articulación en modelos, del modelo de referencia anterior de arquitectura funcional. Dicho entorno estará claramente condicionado por el nivel de la arquitectura en el que se permite el acceso del operador. A continuación, se presentan los requisitos impuestos al entorno de programación por las funciones que caracterizan respectivamente los módulos sensoriales, de modelado y de decisión, con referencia a los niveles jerárquicos de la arquitectura funcional.

El manejo de datos sensoriales es el factor determinante que califica un entorno de programación. En el nivel del servo, se requiere el acondicionamiento de datos sensoriales propioceptivos en tiempo real. En el nivel primitivo, los datos sensoriales deben expresarse en los marcos de referencia relevantes. En el nivel de la acción, las características geométricas de los objetos interesados en la acción deben extraerse mediante datos sensoriales de alto nivel. A nivel de tarea, se requieren herramientas que permitan el reconocimiento de los objetos presentes en la escena.

La propiocepción es la capacidad que tiene nuestro cerebro de saber la posición exacta de todas las partes de nuestro cuerpo en cada momento. Dicho de otra manera, a nuestro cerebro le llegan diferentes ordenes desde las articulaciones y los músculos de la posición exacta de los mismos. De esta manera, en el sistema propioceptivo se “procesan” todas estas órdenes y se puede saber en qué posición exacta se encuentra nuestro cuerpo en cada momento.

La capacidad de consultar modelos de conocimiento es un soporte para un entorno de programación. En el nivel del servo, el cálculo numérico en línea de los modelos utilizados por los algoritmos de control debe realizarse sobre la base de datos sensoriales. En el nivel primitivo, deben operarse transformaciones de coordenadas. A nivel de acción, es fundamental contar con herramientas que permitan la simulación del sistema y el modelado CAD de objetos elementales. A nivel de tareas, el entorno de programación debe asumir las funciones de un sistema experto.

Las funciones de decisión juegan un papel fundamental en un entorno de programación, ya que permiten la definición de los diagramas de flujo. En el nivel del servo, se requiere capacidad de cálculo en línea para generar las señales de activación del sistema mecánico. En el nivel primitivo, el condicionamiento lógico debe estar presente. En el nivel de acción, las opciones de sincronización de procesos deben estar disponibles para implementar bucles anidados, cálculo paralelo y sistema de interrupciones. A nivel de tarea, el entorno de programación debe permitir la gestión de procesos concurrentes, y debe estar dotado de herramientas para probar, localizar y eliminar errores de un programa (depuradores) a un alto nivel interactivo.

La evolución de los entornos de programación ha estado condicionada por el desarrollo tecnológico de la informática. Un análisis de esta evolución lleva a encontrar tres generaciones de entornos con respecto a sus características funcionales, a saber, enseñanza-mostrando, programación orientada a robots y programación orientada a objetos. En la evolución de los entornos, la próxima generación suele incorporar las características funcionales de la generación anterior.

Esta clasificación se refiere a las características del entorno de programación relativas a la interfaz del operador y, por lo tanto, tiene una correspondencia directa con los niveles jerárquicos del modelo de referencia de la arquitectura funcional. Las funciones asociadas con el nivel de servo conducen a comprender que un problema de entorno de programación realmente no existe para el operador. De hecho, la programación de bajo nivel se refiere al uso de lenguajes de programación tradicionales (Ensamblador, C) para el desarrollo de sistemas en tiempo real. El operador solo tiene la posibilidad de intervenir mediante la activación de un comando simple (punto a punto, reinicio), lectura de datos sensoriales propioceptivos y capacidad de edición limitada.


Figura 1. Entorno de programación de CIROS Robotics V5.0.

Elementos básicos en la programación de robots

La ventaja más grande en la aplicación de robots industriales es su flexibilidad, su habilidad de reprogramación para nuevas producciones y su gran rango de movimientos. Sin embargo, un obstáculo mayor en el uso de manipuladores como máquinas de ensamble universales es la falta de una comunicación adecuada y eficiente entre el usuario y el sistema robótico, de tal modo que el usuario pueda dirigir el manipulador para realizar una determinada tarea. La utilización de la flexibilidad del robot presupone la programación efectiva. 
El sistema de cómputo que controla al manipulador tiene que estar programado para enseñar al robot la secuencia particular de movimientos y otras acciones que tengan que ejecutarse con el fin de lograr su tarea. 
La programación de un robot se puede definir como el proceso mediante el cual se le indica a éste la secuencia de acciones que deberá llevar a cabo durante la realización de su tarea. Estas acciones consisten generalmente en moverse a puntos predefinidos y manipular objetos del entorno.

Objetivo: realizar una tarea, mediante una secuencia de acciones.
  • Movimiento a puntos predefinidos en el espacio de trabajo.
  • Manipulación de objetos.
  • Seguimiento de trayectorias en el espacio. Líneas rectas.
  • Interacción con el entorno. Sincronización con autómatas, máquinas herramienta, cintas transportadoras, etc.
Generalmente, lo que se necesita es situar su punto terminal en una localización determinada del espacio, haciendo además que la dirección de aproximación a la misma esté también definida. Normalmente, es necesario diseñar y programar trayectorias, rectas o curvas arbitrarias en el espacio cartesiano, para lo cual es importante conocer la relación entre la trayectoria cartesiana del punto terminal y la de las articulaciones. 

En el diseño de las trayectorias hay que tener en cuenta factores como:
  • Posibles colisiones con el entorno
  • Si es necesario mantener fija la orientación del extremo
  • La utilización de aceleraciones moderadas, de forma que se eviten fuerzas de inercia elevadas que resulten inadecuadas para los motores.
  • Posibles puntos en los cuales el robot puede ganar o perder Grados de Libertad
Existen determinadas circunstancias que hacen que los lenguajes de programación de robots resulten relativamente diferentes al resto:
  • El entorno en el que actúa el robot no puede describirse normalmente en términos puramente cuantitativos.
  • Se necesitan incluir condiciones no usuales, prevención de colisiones o puntos singulares.
  • Ciertas informaciones de los sensores del sistema pueden ser no solo difíciles de procesar en tiempo real, sino también ambiguas.
Durante la ejecución de un programa se interacciona con la memoria del sistema, leyendo y actualizando el contenido de las variables utilizadas en el programa:
  • Con el sistema de control cinemático y dinámico del robot, encargados de dar la señal de mando a los accionamientos del robot a partir de las especificaciones del movimiento que se les proporciona.
  • Con las entradas-salidas del sistema, logrando la sincronización del robot con el resto de las máquinas y elementos que componen su entorno.
Por lo tanto, el sistema de programación es la herramienta con la cual el usuario puede acceder a las diversas prestaciones del robot.

Programar un robot consiste en indicar, paso por paso, las diferentes acciones (moverse a un punto, abrir o cerrar la pinza, etc.) que éste deberá realizar durante su funcionamiento, la flexibilidad en la aplicación del robot y, por lo tanto, su utilidad van a depender en gran parte de las características de su sistema de programación.

Actualmente no existe normalización en relación a los procedimientos de programación de robots, cada  fabricante desarrolla su método particular, el cual es válido solamente para sus propios robots. Sin embargo, algunos han servido de modelo para el desarrollo de otros, por ejemplo: el lenguaje AL de la Universidad de Stanford.

Bibliografía: 

Siciliano, Bruno & otros. (2010). Robotics. Modelling, Planning and Control. Capítulo 6. Inglaterra: Springer-Verlag London Limited.






viernes, 17 de diciembre de 2021

Programación de Robots Industriales. Parte 1.

Arquitectura de control de los robots industriales.

Se presenta un modelo de referencia para la arquitectura funcional del sistema de control de un robot industrial.
La estructura jerárquica y su articulación en módulos funcionales, permite determinar los requisitos y características del entorno de programación y la arquitectura hardware.

Arquitectura funcional.

El sistema de control para supervisar las actividades de un sistema robótico deberá ser dotado de un número de herramientas que ofrecen las siguientes funciones:
  1. La capacidad de mover objetos físicos en el ámbito de trabajo.
  2. La capacidad de obtener información sobre el estado del sistema y el ámbito de trabajo.
  3. La capacidad de explotar la información para modificar el comportamiento del sistema de manera programada.
  4. La capacidad de almacenar, elaborar y proporcionar datos sobre la actividad del sistema.
Una implementación efectiva de estas funciones puede obtenerse por medio de una arquitectura funcional, considerando ésta como la supervisión de varios niveles de actividad dispuestos en una estructura jerárquica. 

Los niveles bajos de la estructura están orientados para la ejecución de movimientos físicos, mientras que los niveles más altos están orientados hacia la planeación lógica de acciones. 
Los niveles están conectados por el flujo de datos; aquéllos dirigidos hacia los niveles más altos se refieren a mediciones o resultados de acciones, mientras que los que están dirigidos hacia los niveles más bajos se enfocan en la transmisión de directrices.

En cuanto a las funciones del sistema de control que implementan el manejo de las actividades de sistema que se enumeraron antes, en general, conviene asignar tres modelos funcionales a cada nivel.
  1. El primer módulo se dedica a la gestión de datos sensoriales (módulo sensorial). 
  2. El segundo se dedica a proporcionar información relevante del entorno (módulo de modelado). 
  3. El tercer módulo se dedica a decidir la política de la acción (módulo de decisión).
Los módulos sensoriales adquieren, elaboran, correlacionan e integran datos sensoriales en tiempo y espacio, con el fin de reconocer y medir los datos del sistema y las características del ambiente.
Queda claro que las funciones de cada módulo están orientadas al manejo de los datos sensoriales relevantes de su nivel.

Los módulos de modelado contienen modelos derivados con base en conocimientos a priori del sistema y el ambiente. 
Estos modelos se actualizan mediante la información que proviene de los módulos sensoriales, mientras que la activación de las funciones requeridas se encarga a los módulos de decisión.

los módulos de decisión realizan la descomposición de tareas de alto nivel en acciones de nivel bajo. 
Esta descomposición de tareas tiene que ver tanto con la descomposición en tiempo de acciones secuenciales como con la descomposición en el espacio de acciones simultáneas.
Cada módulo de decisión queda encargado de las funciones referentes a la gestión de asignaciones de acción elemental, a la planeación y a la ejecución de tareas.
Las funciones de un módulo de decisión caracterizan el nivel de la jerarquía y determinan las funciones necesarias para los módulos de modelado y sensoriales que operan en el mismo nivel.
Esto implica que los contenidos de estos dos módulos no permiten la determinación privilegiada del nivel jerárquico, ya que la misma función podrá estar presente en varios niveles, dependiendo de las necesidades de los módulos de decisión en los niveles relativos.

La arquitectura funcional necesita una interfaz de operario en cada nivel de la jerarquía, de tal modo que se permita que un operario realice funciones de supervisión e intervención en el sistema robótico.
Las instrucciones impartidas al módulo de decisión en un cierto nivel pueden ser proporcionadas por el módulo de decisión en el siguiente nivel superior o por la interfaz de operador, o por una combinación de los dos.

En vista del alto flujo de datos relacionados con el intercambio de información entre los distintos niveles y módulos de la arquitectura funcional, vale la pena asignar una memoria global compartida que contenga las estimaciones actualizadas sobre el estado de todo el sistema y el entorno.

La estructura del modelo de referencia para la arquitectura funcional se representa en la Figura 1, donde se ilustran los cuatro niveles jerárquicos potencialmente relevantes para los sistemas robóticos en aplicaciones industriales.
Figura 1. Modelo para la arquitectura funcional.

Dichos niveles se refieren a la definición de la tarea, su descomposición en acciones elementales, la asignación de primitivas a las acciones y la implementación de acciones de control en el servomanipulador. 

A continuación, se describen las funciones generales de los tres módulos en cada nivel. 
A nivel de tarea, el usuario especifica la tarea que debe ejecutar el sistema robótico; esta especificación se realiza con un alto nivel de abstracción. 
El objetivo de la tarea deseada se analiza y desglosa en una secuencia de acciones que se coordinan en el espacio y el tiempo y permiten la implementación de la tarea. 
La elección de acciones se realiza a partir de modelos de conocimiento, así como del escenario de interés para la tarea.

En el nivel de la acción, los comandos simbólicos provenientes del nivel de la tarea se traducen en secuencias de configuraciones intermedias que caracterizan una trayectoria de movimiento para cada acción elemental. 
La elección de las secuencias se realiza sobre la base de modelos del manipulador y del entorno donde se va a realizar la acción. 

En el nivel primitivo, sobre la base de la secuencia de configuraciones recibidas por el nivel de acción, se calculan las trayectorias de movimiento admisibles y se decide la estrategia de control. 
La trayectoria de movimiento se interpola para generar las referencias para el nivel del servo. 
La elección de las primitivas de movimiento y control está condicionada por las características de la estructura mecánica y su grado de interacción con el entorno. 

En el nivel del servo, sobre la base de las trayectorias de movimiento y las estrategias de control impartidas por el nivel primitivo, se implementan algoritmos de control que proporcionan las señales de activación a los servomotores de las articulaciones. 
El algoritmo de control opera con señales de error entre la referencia y los valores reales de las cantidades controladas, utilizando el conocimiento del modelo dinámico del manipulador y de la cinemática, si es necesario. 

En particular, el módulo de decisión realiza una microinterpolación sobre la trayectoria de referencia para aprovechar plenamente la característica dinámica de los accionamientos; calcula la ley de control y genera las señales (voltaje o corriente) para controlar los accionamientos específicos. 
El módulo de modelado elabora los términos de la ley de control en función de la configuración de corriente del manipulador y los pasa al módulo de decisión; tales términos se calculan sobre la base del conocimiento del modelo dinámico del manipulador. 
Finalmente, el módulo sensorial proporciona medidas de los sensores propioceptivos (posición, velocidad y fuerza de contacto, si es necesario); el módulo de decisión utiliza estas medidas para calcular los errores del servo y, si es necesario, el módulo de modelado para actualizar los términos dependientes de la configuración en el modelo.

Con respecto a este modelo de referencia de arquitectura funcional, los sistemas de control de los robots industriales actuales no están dotados de todas las funciones ilustradas, debido a limitaciones tanto de tecnología como de costos. 
El nivel de tarea se implementa muy poco ya que aún no existen paquetes de software de aplicación efectivos y confiables que permitan soportar las funciones complejas requeridas en este nivel.

Figura 2. Niveles funcionales de los modelos de referencia que se implementan, típicamente, en los sistemas de control de robots industriales avanzados.

Los módulos sensoriales y de modelado están siempre presentes en el nivel más bajo, debido a los exigentes requisitos a nivel de servo para que los robots de alto rendimiento dinámico se empleen incluso en aplicaciones relativamente simples.
En el nivel primitivo, el módulo de modelado suele estar presente, mientras que el módulo sensorial está presente solo en un número reducido de aplicaciones que requieren la interacción del robot con un entorno menos estructurado.
En el nivel de la acción, el módulo de decisión está presente solo como un intérprete de los comandos de alto nivel impartidos por el operador. Todas las funciones de desglose de tareas se confían al operador y, por lo tanto, el módulo de modelado y sensorial está ausente en este nivel. La posible verificación de la viabilidad de la acción se traslada al nivel primitivo donde existe un módulo de modelado.
En vista del modelo de referencia de arquitectura funcional altamente estructurado ilustrado en la Figura 1, es posible la evolución del sistema de control hacia capacidades cada vez más poderosas. 
De hecho, se puede prever que el progreso de la tecnología de la información puede permitir la adición de niveles jerárquicamente más altos que el nivel de la tarea. 
Estos deberían caracterizar funcionalmente las tareas complejas para dividirlas en tareas elementales y, sin embargo, en un nivel aún más alto, las misiones para dividirlas en tareas complejas. 

Bibliografía: 

Siciliano, Bruno & otros. (2010). Robotics. Modelling, Planning and Control. Capítulo 6. Inglaterra: Springer-Verlag London Limited.

martes, 14 de diciembre de 2021

Transceptores de USB a RS422/RS485

Adaptadores de USB a RS422/RS485

Para lograr la comunicación entre una computadora y los dispositivos de campo y de control industriales, que usan la capa física a dos hilos (RS-485) y a 4 hilos (RS-422), necesitamos un convertidor o transceptor de tipo industrial y con aislamiento optoelectrónico entre los dos tipos de segmentos de red. El primer convertidor que veremos es una de USB a RS-485 de la empresa Autonics, modelo SCM-US481:
Figura 1. Adaptador Autonics modelo SCM-US481.

Las características principales de este adaptador son:
  • Disponible para transmitir señales a máx. 1.2 Km al convertir la señal USB en señal RS485.
  • Realización de aislamiento eléctrico (2,500VRMS) entre el puerto USB y el puerto RS485 a través del transceptor RS485.
  • Mayor estabilidad y durabilidad con circuito integrado de protección contra sobretensiones.
  • Conexiones sencillas entre dispositivos con alimentación de bus suministrada desde un controlador host USB sin fuente de alimentación externa.
  • Ofreciendo cable tipo USB 2.0 A/B con núcleo de ferrita incorporado para reducción de ruido.
  • Funciones fáciles de usar gracias a la compatibilidad con USB 1.1 y USB 2.0

Las especificaciones son (Puede haber algunas diferencias según el entorno de la PC. (Sistema operativo compatible: Microsoft Windows):
  • Modelo: SCM-US SCM-USP/SCM-SFL
  • Fuente de alimentación: 5 VDC = alimentación por bus USB
  • Consumo de energía aprox.: 1 W
  • Máx. velocidad de comunicación: 1,200 a 115,200 bps (recomendado: 9,600 bps)
  • Tipo de comunicación: Tipo semidúplex
  • Disponible distancia de comunicación: 1.5 m (sin extensión)
  • Tipo de conexión USB: USB tipo A (macho)
  • Tipo de aislamiento: sin aislamiento
  • Indicador: A.C.C (verde), O.P.R (rojo)
  • Peso unitario (empaquetado): aprox. 80 g
  • Consumo de energía: alimentación de bus USB de 5 VCC
  • Distancia de comunicación disponible: <= 1.2 km
  • Multi-drop: <= 31 Multi-drop
  • Protocolo: bit de datos: 5 bits, 6 bits, 7 bits, 8 bits / bit de parada: 1 bit, 2 bits / bit de paridad: ninguno, impar, par
  • Tipo de conexión: USB: USB 2.0 tipo B (macho)
        • RS485: terminal de tornillo de 4 hilos (tipo de comunicación de 2 hilos)
  • Circuito de protección: circuito de protección contra sobretensiones
  • Tipo de aislamiento: Aislamiento
  • Rigidez dieléctrica: entre todos los terminales y la carcasa:
        •        2500 VCA 50/60 Hz durante 1 min
        • Entre RS232C y RS485:
        •        2500 VCA 50/60 Hz durante 1 min
  • Resistencia de aislamiento: >= 100 MOhms (megger de 500 VCC)
  • Inmunidad al ruido: ± 500 VCC el ruido de onda cuadrada (ancho de pulso: 1us) por el simulador de ruido
  • Indicador: RUN (rojo)
  • Accesorio: cable USB 2.0 tipo AB (longitud: 1 m, se vende por separado, modelo: CABLE USB AB)
  • Aprobación:
  • Peso unitario (empaquetado): 34.5g (Aprox. 197 g)
  • Vibración: 0.75 mm de doble amplitud a una frecuencia de 10 a 55 Hz (durante 1 min) en cada dirección X, Y, Z durante 1 hora
  • Vibración (mal funcionamiento): 0,5 mm de doble amplitud a una frecuencia de 10 a 55 Hz (durante 1 min) en cada dirección X, Y, Z durante 10 min
  • Choque: 300 m/s^2 (aprox. 30 G) en cada dirección X, Y, Z por 3 veces
  • Choque (mal funcionamiento): 100 m/s^2 (aprox. 10 G) X, Y, Z en cada dirección X, Y, Z por 3 veces
  • Temperatura ambiente: -10 a 55 ° C, almacenamiento: -20 a 60 ° C (sin congelación ni condensación)
Para poderse usar en Windows, necesitamos instalar el driver conocido como UART USB FT232R, ya que el que trae originalmente no corre en Windows 10, el procedimiento para instalarlo está en este enlace


La otra opción que veremos es un adaptador de la marca GearMo modelo USA-482422.

Figura 2. Adaptador GearMo modelo USA-482422.

El convertidor de USB a RS-485/RS-422 contiene un chip FTDI con una interfaz fotoeléctrica hacia los terminales, que pueden convertir la señal USB en una señal diferenciada RS-422 o RS-485. ¡El convertidor incluye tecnología de supresor de voltaje transitorio!

Las características de este adaptador son:
  • Estándares soportados: USB v. 1.0, 1.1, 2.0 y TIA/EIA RS-422, RS485
  • Señales RS-485: T/R+, T/R-, GND
  • Señales RS-422: TX+, TX-, RX+, RX-, GND
  • Modos: asíncrono, punto a punto, punto a multipunto, 2 hilos (semidúplex), 4 hilos (dúplex completo)
  • Tasas de transmisión: 300 a 921,600 bps, detección automática de la tasa de señalización
  • Capacidad de carga: 32 dispositivos en topología punto a multipunto.
  • Distancia de transmisión: RS485/422: 1,2 km (todas las velocidades), USB: 5 metros
  • Protección de interfaz: supresión de sobretensiones y relámpagos de 600 W, protección ESD de +- 15 KV
  • Diagnóstico de señalización: LED para POWER, TX y RX
  • Dimensiones: 62x33x19 mm
  • Entorno de trabajo: -40C a 85C, RH 5% -95%
  • Conjunto de chips: FTDI FT232RL
  • Sistema operativo: Windows 7, 8, & Windows 10, Linux y Mac OS 10.X.
Los drivers del chip FTDI del GearMo vienen en el disco de instalación junto con el transceptor y también están en la página Web de fabricante

Pruebas de los transceptores:
Tras realizar las pruebas de los transceptores comunicando diferentes equipo, tales como un sensor MODBUS triple VOC + temp + rH y medidores de energía eléctrica y usando el protocolo MODBUS RTU con ellos, no tuvimos inconvenientes en lograr la trasferencia de datos en Windows 10.
Figura 3. Comunicación entre MODBUS triple VOC + temp + rH y computadora.


Figura 4. Comunicación entre medidor de potencia VERIS H8437V y computadora.

Conclusiones:
En esta entrada hemos utilizado los transceptores USB a RS422/RS485 para poder comunicar equipo de instrumentación y una computadora, por medio del protocolo ModBus RTU y comprobamos que los dispositivos mencionados aquí, son una buena opción para la realizar la comunicación industrial de los datos sensados de los sistemas.