Cadenas ASCII de controladores Logix5000 Manual de programación (Números de catálogo 1756-L1, 1756-L55, 1756-L61, 1756-L62, 1756-L63, 1769-L31, 1769-L32C, 1769L32E, 1769-L35CR, 1769-L35E, 1789-L60, 1794-L34, PowerFlex 700S/SE) Información importante para el usuario Las características de funcionamiento de los equipos de estado sólido son distintas a las de los equipos electromecánicos. En la publicación “Safety Guidelines for the Application, Installation and Maintenance of Solid State Controls” (publicación SGI-1.1 que podrá obtener en su oficina local de ventas de Rockwell Automation o en línea en la dirección http://literature.rockwellautomation.com) se describen algunas diferencias importantes entre los equipos de estado sólido y los dispositivos electromecánicos de lógica cableada. Debido a estas diferencias y a la gran diversidad de usos que se puede dar a los equipos de estado sólido, las personas responsables de la utilización de este equipo deberán asegurarse de la idoneidad de cada aplicación. Rockwell Automation, Inc. no será responsable en ningún caso de daños directos o indirectos que resulten del uso o aplicación de este equipo. Los ejemplos y diagramas incluidos en este manual tienen exclusivamente un fin ilustrativo. Debido a la gran cantidad de variables y de requisitos de cualquier instalación en particular, Rockwell Automation, Inc. no puede asumir ninguna responsabilidad u obligación por el uso que se dé siguiendo los ejemplos y los diagramas. Rockwell Automation, Inc. no asume ninguna obligación de patente relativa al uso de la información, circuitos, equipo o software descritos en este manual. Se prohíbe la reproducción total o parcial del contenido de este manual sin la autorización por escrito de Rockwell Automation, Inc. En este manual se utilizan notas para advertirle sobre consideraciones de seguridad siempre que sea necesario. ADVERTENCIA IMPORTANTE ATENCIÓN PELIGRO DE CHOQUE PELIGRO DE QUEMADURA Identifica información sobre prácticas o circunstancias que entrañan peligro de explosión según la peligrosidad del ambiente y que pueden provocar lesiones personales o la muerte, daños materiales o pérdidas económicas. Identifica información crítica para emplear correctamente y entender el producto. Tenga en cuenta que en esta publicación se usa el punto decimal para separar los decimales del número entero. Identifica información sobre prácticas o circunstancias que pueden provocar lesiones personales, la muerte, daños materiales o pérdidas económicas. Los mensajes de atención le ayudan a identificar un peligro, a evitarlo y a reconocer las consecuencias. En el equipo o dentro del mismo puede haber etiquetas (por ejemplo, en el variador o en el motor) para advertir sobre la posibilidad de un alto voltaje. En el equipo o dentro del mismo puede haber etiquetas (por ejemplo, en el variador o en el motor) para advertir que determinadas superficies pueden alcanzar temperaturas peligrosas. Allen-Bradley, Rockwell Automation y TechConnect son marcas comerciales de Rockwell Automation, Inc. Todas las marcas comerciales que no pertenecen a Rockwell Automation son propiedad de sus respectivas empresas. Tabla de contenido Prefacio Finalidad de este manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Cómo usar este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Capítulo 1 Comunicación con un dispositivo ASCII Introducción . . . . . . . . . . . . . . . . . . . . . . Conexión del dispositivo ASCII . . . . . . . . Configuración del puerto serie. . . . . . . . . Configuración del protocolo de usuario . . Creación de tipos de datos de cadena . . . Lectura de caracteres desde el dispositivo Envío de caracteres al dispositivo . . . . . . Introducción de caracteres ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 . 8 . 9 10 11 12 15 17 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extracción de una parte de un código de barras. . . Búsqueda de un código de barras . . . . . . . . . . . . . Creación del tipo de datos PRODUCT_INFO . . . Búsqueda de caracteres . . . . . . . . . . . . . . . . . . Identificación del número de carril . . . . . . . . . . Rechazo de caracteres incorrectos. . . . . . . . . . . Introducción de números de ID de productos y números de carril. . . . . . . . . . . . . . . . . . . . . . . Verificación de los caracteres de código de barras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conversión de un valor . . . . . . . . . . . . . . . . . . . . . Decodificación de un mensaje ASCII . . . . . . . . . . . Creación de una cadena . . . . . . . . . . . . . . . . . . . . Códigos de caracteres ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 20 21 21 22 22 Capítulo 2 Procesamiento de caracteres ASCII Publicación 1756-PM013B-ES-P – Julio 2008 . . . . . . . 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 24 25 26 31 3 Tabla de contenido 4 Publicación 1756-PM013B-ES-P – Julio 2008 Prefacio Finalidad de este manual En este manual se muestra cómo manejar las cadenas ASCII en los controladores Logix5000. Este manual forma parte de un conjunto de manuales relacionados que describen los procedimientos habituales para programar y operar controladores Logix5000. Para obtener una lista completa de manuales de procedimientos comunes, consulte el documento Logix 5000 Controllers Common Procedures Programming Manual, publicación 1756-PM001. El término controlador Logix5000 usa para referirse a cualquier controlador basado en el sistema operativo Logix5000 como, por ejemplo: • Controladores CompactLogix • Controladores ControlLogix • Controladores DriveLogix • Controladores FlexLogix • Controladores SoftLogix5800 Cómo usar este manual Algunas frases tienen un formato de texto distinto al resto. El texto Identifica Por ejemplo Significa En letra cursiva el nombre real de un elemento que aparece en la pantalla o en un ejemplo Haga clic con el botón derecho del ratón en User-Defined … Haga clic con el botón derecho del ratón en el elemento denominado User-Defined. en courier información que debe proporcionar según su aplicación (una variable) Haga clic con el botón derecho del ratón en name_of_program … Debe identificar el programa adecuado en su aplicación. Habitualmente, se tratará de un nombre o variable que haya definido. entre corchetes un tecla del teclado Presione [Enter]. Presione la tecla Enter. Publicación 1756-PM013B-ES-P – Julio 2008 5 Notas: 6 Publicación 1756-PM013B-ES-P – Julio 2008 Capítulo 1 Comunicación con un dispositivo ASCII Introducción Usted puede intercambiar datos ASCII con un dispositivo a través del puerto serie del controlador. Por ejemplo, puede usar el puerto serie para: • leer caracteres ASCII de un módulo de báscula o lector de código de barras. • enviar y recibir mensajes desde un dispositivo ASCII disparado, tal como un terminal MessageView. Conexión del puerto serie del controlador al dispositivo ASCII 42237 Además del puerto serie del controlador, las revisiones de firmware 3.1 y posteriores del módulo servidor de web 1756-EWEB EtherNet/IP es compatible con una interface de socket que permite a los controladores Logix5000 intercambiar datos ASCII usando servicios de socket TCP o UDP. Consulte el documento EtherNet/IP Web Server User Manual, publicación ENET-UM0527, revisión C o posterior. Publicación 1756-PM013B-ES-P – Julio 2008 7 Capítulo 1 Comunicación con un dispositivo ASCII Conexión del dispositivo ASCII 1. En el puerto serie del dispositivo ASCII, determine cuáles pines envían señales y cuáles reciben señales. 2. Conecte los pines de envío a los pines de recepción correspondientes y conecte los puentes. Si las comunicaciones Cablee los conectores Tienen handshake Dispositivo ASCII Controlador 1 CD 1 CD 2 RDX 2 RDX 3 TXD 3 TXD 4 DTR 4 DTR COMMON COMMON 6 DSR 6 DSR 7 RTS 7 RTS 8 CTS 8 CTS 9 9 42231 No tienen handshake Dispositivo ASCII Controlador 1 CD 1 CD 2 RDX 2 RDX 3 TXD 3 TXD 4 DTR 4 DTR COMMON COMMON 6 DSR 6 DSR 7 RTS 7 RTS 8 CTS 8 CTS 9 9 42232 3. Conecte el blindaje del cable a los dos conectores. 4. Conecte el cable al controlador y al dispositivo ASCII. 8 Publicación 1756-PM013B-ES-P – Julio 2008 Comunicación con un dispositivo ASCII Configuración del puerto serie Capítulo 1 1. En la barra de herramientas en línea, en el proyecto del controlador, haga clic en el botón del controlador. 2. Seleccione la ficha Serial Port. 3. Seleccione User mode e introduzca los ajustes de configuración para el puerto serie. • Seleccione la velocidad de transmisión, los bits de datos, la paridad y los bits de parada. • Seleccione la opción Control Line: Si Y Y éste es el No está usando un módem Está usando un módem Seleccione Entonces No Handshaking Ambos módems en un vínculo punto a punto son full-duplex El módem maestro es full-duplex mientras que el módem esclavo es half-duplex Full Duplex controlador maestro. Full Duplex controlador esclavo Half Duplex Marque la casilla de selección Continuous Carrier Half Duplex Desmarque la casilla de selección Continuous Carrier (opción predeterminada). Todos los módems en el sistema son half-duplex • En RTS Send Delay, introduzca el retardo (en unidades de 20 ms) entre el momento en que se activa la señal RTS (nivel alto) y el momento en que se envían los datos. Por ejemplo, un valor de 4 produce un retardo de 80 ms. • En RTS Off Delay, introduzca el retardo (en unidades de 20 ms) entre el momento en que se envía el último carácter y el momento en que se activa la señal RTS (nivel bajo). 4. Haga clic en Apply. Publicación 1756-PM013B-ES-P – Julio 2008 9 Capítulo 1 Comunicación con un dispositivo ASCII Configuración del protocolo de usuario 1. Seleccione la ficha User Protocol. 42252 • Introduzca un tamaño de búfer mayor o igual que la cantidad máxima de caracteres en una transmisión. (Una buena pauta es usar dos veces el número de caracteres). • Para las instrucciones ABL o ARL, introduzca caracteres de terminación para marcar el final de los datos. Para los códigos ASCII, consulte la contraportada de este manual. Si el dispositivo envía Un carácter de terminación Entonces Notas • En el cuadro de texto Termination Character 1, escriba el código ASCII hexadecimal del primer carácter. • En el cuadro de texto Termination Character 2, escriba $FF. Dos caracteres de terminación Para caracteres imprimibles, tales como 1 o A, escriba el carácter. En los cuadros de texto Termination Character 1 y 2, escriba el código ASCII hexadecimal de cada carácter. • Para la instrucción AWA, introduzca los caracteres añadidos. Para los códigos ASCII, consulte la contraportada de este manual. Para añadir Un carácter Entonces Notas • En el cuadro de texto Append Character 1, escriba el código ASCII hexadecimal del primer carácter. • En el cuadro de texto Append Character 2, escriba $FF. Dos caracteres Para caracteres imprimibles, tales como 1 o A, escriba el carácter. En los cuadros de texto Append Character 1 y 2, escriba el código ASCII hexadecimal de cada carácter. • Si el dispositivo ASCII se configura para control de flujo XON/XOFF, marque la casilla de selección XON/XOFF. 10 Publicación 1756-PM013B-ES-P – Julio 2008 Comunicación con un dispositivo ASCII Capítulo 1 • Si el dispositivo ASCII es un CRT o está preconfigurado para transmisión half-duplex, marque la casilla de selección Echo Mode. • Seleccione Delete Mode: Si el dispositivo ASCII es Seleccione CRT CRT Notas • El carácter DEL ($7F) y el carácter que precede al carácter DEL no se envían al destino. • Si se selecciona el modo de eco y una instrucción ASCII lee el carácter DEL, el eco devuelve tres caracteres: BACKSPACE SPACE BACKSPACE ( $08 $20 $08). Impresora • El carácter DEL ($7F) y el carácter que precede al carácter DEL no se envían al destino. Impresora • Si se selecciona el modo de eco y una instrucción ASCII lee el carácter DEL, el eco devuelve dos caracteres: / ($2F) seguido por el carácter que fue eliminado. Ninguno de los anteriores El carácter DEL ($7F) se trata como cualquier otro carácter. Ignorar 2. Haga clic en OK. Creación de tipos de datos de cadena Los caracteres ASCII se almacenan en tags que usan un tipo de datos de cadena. 42811 42812 Puede usar el tipo de datos STRING predeterminado. Almacena hasta 82 caracteres. IMPORTANTE o bien Puede crear un nuevo tipo de datos de cadena para almacenar el número de caracteres que usted haya definido. Tenga cuidado cuando cree un nuevo tipo de datos de cadena. Si posteriormente decide cambiar el tamaño del tipo de datos de cadena, puede perder datos en cualquier tag que actualmente use ese tipo de datos. Si usted Hace un tipo de datos de cadena más pequeño Hace un tipo de datos de cadena más grande Publicación 1756-PM013B-ES-P – Julio 2008 Entonces • Los datos se truncan. • LEN no se cambia. Los datos y LEN se ponen en cero. 11 Capítulo 1 Comunicación con un dispositivo ASCII 1. En el Controller Organizer, haga clic con el botón derecho del mouse en Strings y seleccione New String Type... 2. Escriba un nombre para el tipo de datos. 3. Escriba el número máximo de caracteres que almacenará este tipo de datos de cadena. 4. Haga clic en OK. 42233 Lectura de caracteres desde el dispositivo Como regla general, antes de leer el búfer use una instrucción ACB o ABL para verificar que el búfer contiene los caracteres requeridos. • Una instrucción ARD o ARL continúa leyendo el búfer hasta que la instrucción lee los caracteres requeridos. • Mientras una instrucción ARD o ARL está leyendo el búfer, no puede ejecutarse ninguna otra instrucción de puerto serie ASCII, excepto ACL. • Al verificar que el búfer contiene los caracteres requeridos, se evita que ARD o ARL retenga la ejecución de otras instrucciones de puerto serie ASCII mientras que el dispositivo de entrada envía sus datos. Para obtener información adicional sobre las instrucciones de puerto serie ASCII, consulte el documento Logix5000 Controllers General Instruction Set Reference Manual, publicación 1756-RM003. Por ejemplo, el dispositivo envía un número fijo de caracteres, tal como un lector de código de barras: 12 Publicación 1756-PM013B-ES-P – Julio 2008 Comunicación con un dispositivo ASCII EJEMPLO Capítulo 1 Un lector de códigos de barras envía códigos de barras al puerto serie (canal 0) del controlador. Cada código de barras contiene 24 caracteres. Para determinar cuándo el controlador recibe un código de barras, la instrucción ACB cuenta continuamente los caracteres en el búfer. bar_code_count.EN / ACB ASCII Chars in Buffer Channel 0 SerialPort Control bar_code_count Character Count 0 EN DN ER Cuando el búfer contiene por lo menos 24 caracteres, el controlador ha recibido un código de barras. La instrucción ARD mueve el código de barras al tag bag_bar_code. GEQ Grtr Than or Eql (A>=B) Source A bar_code_count.pos 0 Source B 24 ARD ASCII Read Channel Destination SerialPort Control String Length Characters Read EN 0 bag_bar_code '' bar_code_read 24 0 DN ER 42227 Publicación 1756-PM013B-ES-P – Julio 2008 13 Capítulo 1 Comunicación con un dispositivo ASCII Por ejemplo, el dispositivo envía un número variable de caracteres, tal como un terminal de pantalla o de mensajes. EJEMPLO Pruebe continuamente el búfer para determinar si tiene un mensaje. • Puesto que cada mensaje termina en un retorno de carro ($0D), el retorno de carro se configura como el carácter de terminación en el cuadro de diálogo Controller Properties, ficha User Protocol. • Cuando ABL encuentra un retorno de carro, establece el bit FD. MV_line.EN / ABL ASCII Test For Buffer Line Channel 0 SerialPort Control MV_line Character Count 0 EN DN ER Cuando la instrucción ABL encuentra el retorno de carro (MV_line.FD se establece), el controlador retira los caracteres del búfer, hasta el retorno de carro inclusive, y los coloca en el tag MV_msg. MV_line.FD ARL ASCII Read Line Channel Destination SerialPort Control String Length Characters Read EN 0 MV_msg '' MV_read 12 0 DN ER 42226 14 Publicación 1756-PM013B-ES-P – Julio 2008 Comunicación con un dispositivo ASCII Envío de caracteres al dispositivo Capítulo 1 Cuando usted envía caracteres al dispositivo, necesita especificar si siempre enviará el mismo número de caracteres o si desea añadir caracteres de terminación a los datos. Por ejemplo, usted siempre envía el mismo número de caracteres y desea añadir automáticamente uno o dos caracteres al final de los datos. EJEMPLO Cuando la temperatura excede el límite alto (temp_high está activado) la instrucción AWA envía cinco caracteres desde el tag string[1] al terminal MessageView. • $14 se cuenta como un carácter. Es el código hexadecimal del carácter Ctrl-T. • La instrucción también envía (añade) los caracteres definidos en el protocolo de usuario. En este ejemplo, la instrucción AWA envía un retorno de carro ($0D), que marca el final del mensaje. temp_high AWA ASCII Write Append Channel Source SerialPort Control String Length Characters Sent EN 0 string[1] '$1425\1' temp_high_write 5 6 DN ER 42229 Y para enviar siempre el mismo número de caracteres: EJEMPLO Cuando la temperatura llega al límite bajo (temp_low está activado) la instrucción AWT envía nueve caracteres desde el tag string[2] al terminal MessageView. ($14 se cuenta como un carácter. Es el código hexadecimal del carácter Ctrl-T). temp_low AWT ASCII Write Channel Source SerialPort Control String Length Characters Sent EN 0 string[2] '$142224\01$r' temp_low_write 9 9 DN ER 42229 Publicación 1756-PM013B-ES-P – Julio 2008 15 Capítulo 1 Comunicación con un dispositivo ASCII Por ejemplo, usted envía un número diferente de caracteres cada vez y desea añadir automáticamente uno o dos caracteres al final de los datos. EJEMPLO Cuando se activa la alarma, la instrucción AWA envía los caracteres en alarm_msg y añade un carácter de terminación. • Puesto que el número de caracteres en alarm_msg varía, el renglón primero mueve la longitud de alarm_msg (alarm_msg.LEN) a la longitud de la instrucción AWA (alarm_write.LEN). • En alarm_msg, $14 se cuenta como un carácter. Es el código hexadecimal del carácter Ctrl-T. alarm MOV Move Source alarm_msg.LEN 5 Dest alarm_write.LEN 5 AWA ASCII Write Append Channel Source SerialPort Control String Length Characters Sent EN 0 alarm_msg '$1425\1' alarm_write 5 6 DN ER 42229 Y para enviar un número diferente de caracteres cada vez: EJEMPLO Cuando se activa MV_update, la instrucción AWT envía los caracteres en MV_msg. • Puesto que el número de caracteres en MV_msg varía, el renglón primero mueve la longitud de MV_msg (MV_msg.LEN) a la longitud de la instrucción AWT (MV_write.LEN). • En MV_msg, $16 se cuenta como un carácter. Es el código hexadecimal del carácter Ctrl-V. MV_update MOV Move Source MV_msg.LEN 10 Dest MV_write.LEN 10 AWT ASCII Write Channel Source 0 MV_msg '$161365\8\1$r' SerialPort Control MV_write String Length 10 Characters Sent 10 EN DN ER 42229 16 Publicación 1756-PM013B-ES-P – Julio 2008 Comunicación con un dispositivo ASCII Introducción de caracteres ASCII IMPORTANTE Capítulo 1 Esta ventana String Browser muestra los caracteres hasta el valor del miembro LEN del tag de cadena. El tag de cadena puede contener datos adicionales, que la ventana String Browser no muestra. 1. Haga doble clic en el área de valor de Source. 42616 Aparece un cuadro de entrada de texto. Signo de dólar ($24) Comillas sencillas ($27) Salto de línea ($0A) Nueva línea ($0D$0A) Avance de página ($0C) Retorno de carro ($0D) Tab ($09) 42615 El número de caracteres que usted ve en la ventana. Es igual que el miembro LEN del tag de cadena. El número máximo de caracteres que puede contener el tag de cadena. 2. Introduzca los caracteres para la cadena. 3. Haga clic en OK. Publicación 1756-PM013B-ES-P – Julio 2008 17 Capítulo 1 Comunicación con un dispositivo ASCII Notas: 18 Publicación 1756-PM013B-ES-P – Julio 2008 Capítulo 2 Procesamiento de caracteres ASCII Introducción Usted puede procesar caracteres ASCII para: • interpretar un código de barras y tomar acción con base en el código de barras. • usar el peso indicado por una báscula cuando el peso se envía como caracteres ASCII. • decodificar un mensaje proveniente de un dispositivo ASCII activado, tal como un terminal de operador. • construir una cadena para un dispositivo ASCII activado usando variables de su aplicación. Extracción de una parte de un código de barras Por ejemplo, un código de barras puede contener información acerca de una maleta en un transportador en un aeropuerto. Para verificar el número de vuelo y el destino de la maleta, usted extrae los caracteres 10 – 18. Línea aérea Código de barras N W A Número de caracteres 1 2 3 4 Origen 5 H O P 6 7 8 N.º de vuelo 5 9 0 5 8 Destino A m S Fecha 0 2 2 2 0 1 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 5 0 5 8 A m S 9 caracteres EJEMPLO En el transportador de maletas de un aeropuerto, cada equipaje tiene un código de barras Los caracteres 10 a 18 del código de barras indican el número del vuelo y el aeropuerto de destino de la maleta. Después de que se lee el código de barras (bag_read.EM se activa) la instrucción MID copia el número de vuelo y el aeropuerto de destino en el tag bag_flt_and_dest. 42808 Publicación 1756-PM013B-ES-P – Julio 2008 19 Capítulo 2 Procesamiento de caracteres ASCII Búsqueda de un código de barras Por ejemplo, en una operación de clasificación, una matriz de un tipo de datos definido por el usuario crea una tabla que muestra el número de carril de cada tipo de producto. Para determinar por cuál carril hay que encaminar un producto, el controlador busca en la tabla el ID del productos (los caracteres de código de barras que identifican el producto). Nombre del tag Valor − sort_table product_id ’GHI’ − sort_table[0] + sort_table[0].Product_ID ’ABC’ + sort_table[0].Lane 1 − sort_table[1] + sort_table[1].Product_ID ’DEF’ + sort_table[1].Lane 2 − sort_table[2] + sort_table[2].Product_ID ’GHI’ + sort_table[2].Lane 3 carril 3 Para buscar un código de barras: • Creación del tipo de datos PRODUCT_INFO. • Búsqueda de caracteres. • Identificación del número de carril. • Rechazo de caracteres incorrectos. • Introducción de números de ID de productos y números de carril. SUGERENCIA Para copiar los componentes anteriores desde un proyecto de muestra, abra la carpeta …\RSLogix 5000\Projects\Samples. Abra este proyecto. 43039 20 Publicación 1756-PM013B-ES-P – Julio 2008 Procesamiento de caracteres ASCII Capítulo 2 Creación del tipo de datos PRODUCT_INFO Para crear un nuevo tipo de datos: Cree este tipo de datos definido por el usuario. + Controller Your_Project Tipo de datos: PRODUCT_INFO + Tasks Nombre PRODUCT_INFO + Motion Groups Descripción Identifica el destino de un ítem con base en una cadena ASCII de caracteres que identifica el ítem. Trends Data − Types User Defined Haga clic con el botón derecho del mouse y seleccione New Data Type. Miembros Nombre Tipo de datos + Product_ID Cadena Carril DINT Estilo Descripción Caracteres ASCII que identifican el ítem Decimal Destino del ítem según su ID Búsqueda de caracteres 43038 La instrucción SIZE: • cuenta el número de elementos en la matriz sort_table (tipo PRODUCT_INFO). Esta matriz contiene el ID de producto de cada ítem y el número de carril correspondiente al ítem. • cuenta el número de elementos en la dimensión 0 de la matriz. En este caso, ésta es la única dimensión. • establece la longitud de la instrucción FSC subsiguiente igual al tamaño de la matriz sort_table. La instrucción FSC busca cada miembro Product_ID en la matriz sort_table hasta que la instrucción encuentra una coincidencia con el tag product_id. • El tag sort_table_search controla la instrucción FSC. • Si bien la instrucción previa establece la longitud de esta instrucción, usted introduce un valor inicial para verificar el proyecto. • El tag product_id contiene los caracteres del código de barras que usted desea encontrar. Publicación 1756-PM013B-ES-P – Julio 2008 21 Capítulo 2 Procesamiento de caracteres ASCII Identificación del número de carril 43038 Cuando la instrucción FSC encuentra el ID de producto dentro de la matriz sort_table, la instrucción establece el bit FD. El miembro POS indica el número de elemento dentro de la matriz sort_table de la coincidencia. El miembro LANE correspondiente indica el número de carril de la coincidencia. Con base en el valor POS, la instrucción MOV mueve el número de carril correspondiente al tag de carril. El controlador usa el valor de este tag para encaminar el ítem. Después de que la instrucción MOV establece el valor del tag de carril, la instrucción RES restablece la instrucción FSC para que pueda buscar la siguiente ID de producto. Rechazo de caracteres incorrectos 43038 Si la instrucción FSC no encuentra la ID de producto dentro de la matriz sort_table, la instrucción establece el bit DN. La instrucción MOV mueve 999 al tag de carril para notificar al controlador que rechace o reencamine el ítem. Después de que la instrucción MOV establece el valor del tag de carril, la instrucción RES restablece la instrucción FSC para que pueda buscar la siguiente ID de producto. 22 Publicación 1756-PM013B-ES-P – Julio 2008 Procesamiento de caracteres ASCII Capítulo 2 Introducción de números de ID de productos y números de carril En la matriz sort_table, introduzca los caracteres ASCII para identificar cada ítem y el número de carril correspondiente al ítem. Nombre del tag Valor − sort_table {…} − sort_table[0] {…} + sort_table[0].Product_ID Caracteres ASCII que identifican el primer ítem + sort_table[0].Lane Número de carril del ítem − sort_table[1] Verificación de los caracteres de código de barras {…} + sort_table[1].Product_ID Caracteres ASCII que identifican el siguiente ítem + sort_table[1].Lane Número de carril del ítem Use una instrucción de comparación (EQU, GEQ, GRT, LEQ, LES, NEQ) para verificar los caracteres específicos. • Los valores hexadecimales de los caracteres determinan si una cadena es menor o mayor que otra cadena. • Cuando las dos cadenas están clasificadas, como en un directorio telefónico, el orden de las cadenas determina cuál es mayor. m e n o r m a y o r Caracteres ASCII Códigos hexadecimales 1ab $31$61$62 1b $31$62 A $41 AB $41$42 B $42 a $61 ab $61$62 AB < B a>B Use una de estas instrucciones de comparación: Publicación 1756-PM013B-ES-P – Julio 2008 Para ver si esta cadena es: Introduzca esta instrucción: Igual a caracteres específicos EQU Diferente a caracteres específicos NEQ Mayor que caracteres específicos GRT Mayor o igual que caracteres específicos GEQ Menor que caracteres específicos LES Menor o igual que caracteres específicos LEQ 23 Capítulo 2 Procesamiento de caracteres ASCII Por ejemplo: EJEMPLO Cuando bag_flt_and_dest es igual a gate[1], xfer[1] se activa. Esto hace que la maleta se encamine a la compuerta requerida. 42808 Conversión de un valor EJEMPLO Usted puede convertir la representación ASCII de un valor en un valor DINT o REAL que se puede usar en su aplicación. • Las instrucciones STOD y STOR saltan cualquier control inicial o caracteres no numéricos (excepto el signo menos frente a un número). • Si la cadena contiene múltiples grupos de números separados por delimitadores (por ej., / ), las instrucciones STOD y STOR convierten solamente el primer grupo de números. Por ejemplo, para convertir caracteres ASCII en un valor con punto flotante (coma flotante): Después de leer el peso de la báscula (weight_read.EM se activa) la instrucción STOR convierte los caracteres numéricos en weight_asco en un valor REAL y almacena el resultado en el peso. 42810 Por ejemplo, para convertir caracteres ASCII en un valor entero: EJEMPLO Cuando MV_read.EM se activa, la instrucción STOD convierte el primer conjunto de caracteres numéricos en MV_mg en un valor entero. La instrucción salta el carácter de control inicial ($06) y se detiene en el delimitador ( \ ). 42620 24 Publicación 1756-PM013B-ES-P – Julio 2008 Procesamiento de caracteres ASCII Decodificación de un mensaje ASCII Capítulo 2 Usted puede extraer y convertir un valor de un mensaje ASCII que contiene múltiples valores. Por ejemplo, un mensaje puede ser similar a éste: Primer valor Segundo valor [Ctrl-F] número de \ Tecla F mensaje Carácter de control Tercer valor \ Acción de la tecla F Delimitador Delimitador [CR] Carácter de terminación Renglón A: Búsqueda y conversión de un valor con punto flotante (coma flotante) 42810 Renglón B: Búsqueda y conversión de un valor entero 42810 La instrucción FIND ubica caracteres dentro de una cadena. • Source contiene el tag de cadena que se va a buscar. • Result contiene la ubicación donde la instrucción FIND ubica el valor de búsqueda que usted especifica. La instrucción MID identifica un grupo de caracteres dentro de una cadena y los coloca en su propio tag de cadena. • Source es el mismo tag de cadena que para la instrucción FIND. • Los valores Qty indican a la instrucción MID cuántos caracteres hay que extraer de Source. • El valor Start es igual que el valor Result proveniente de la instrucción FIND. Esto indica a la instrucción MID dónde debe comenzar a extraer caracteres de Source. • Destination contiene los caracteres que usted ubicó. Publicación 1756-PM013B-ES-P – Julio 2008 25 Capítulo 2 Procesamiento de caracteres ASCII Creación de una cadena Este ejemplo crea una cadena que contiene dos variables. Por ejemplo, un terminal de operador puede requerir una cadena similar a esta: [Ctrl-F] número de \ dirección [CR] mensaje Carácter de control Delimitador Carácter de terminación • Para incluir más variables, use instrucciones adicionales INSERT o CONCAT. • Si usted necesita un valor con punto flotante (coma flotante), use una instrucción RTOS en lugar de la instrucción DTOS. • La cadena final no incluye el carácter de terminación. Cuando envíe la cadena use una instrucción AWA para añadir automáticamente el carácter de terminación. EJEMPLO Para activar un mensaje en un terminal MessageView, el controlador envía al terminal un mensaje en este formato: [Ctrl-T] número de mensaje \ dirección [CR] Cuando send_msg está activado, el renglón hace lo siguiente: • La primera instrucción DTOS convierte el número de mensaje en caracteres ASCII. • La instrucción INSERT inserta el número de mensaje (en ASCII) después del carácter de control [Ctrl-T]. (El código hexadecimal de Ctrl-T es $14.) • La segunda instrucción DTOS convierte el número de nodo del terminal en caracteres ASCII. • La instrucción CONCAT coloca el número de nodo (en ASCII) después del signo diagonal [ \ ] y almacena la cadena final en msg. Para enviar el mensaje, una instrucción AWA envía el tag msg y añade el retorno de carro [CR]. 42813 26 Publicación 1756-PM013B-ES-P – Julio 2008 Procesamiento de caracteres ASCII Capítulo 2 Notas: Publicación 1756-PM013B-ES-P – Julio 2008 27 Códigos de caracteres ASCII Carácter Dec. Hex. Carácter Dec. Hex. Carácter Dec. Hex. Carácter Dec. Hex. [ctrl-@] NUL 0 $00 SPACE 32 $20 @ 64 $40 ‘ 96 $60 [ctrl-A] SOH 1 $01 ! 33 $21 A 65 $41 a 97 $61 [ctrl-B] STX 2 $02 “ 34 $22 B 66 $42 b 98 $62 [ctrl-C] ETX 3 $03 # 35 $23 C 67 $43 c 99 $63 [ctrl-D] EOT 4 $04 $ 36 $24 D 68 $44 d 100 $64 [ctrl-E] ENQ 5 $05 % 37 $25 E 69 $45 e 101 $65 [ctrl-F] ACK 6 $06 & 38 $26 F 70 $46 f 102 $66 [ctrl-G] BEL 7 $07 ‘ 39 $27 G 71 $47 g 103 $67 [ctrl-H] BS 8 $08 ( 40 $28 H 72 $48 h 104 $68 [ctrl-I] HT 9 $09 ) 41 $29 I 73 $49 i 105 $69 [ctrl-J] LF 10 $l ($0A) * 42 $2A J 74 $4A j 106 $6A [ctrl-K] VT 11 $0B + 43 $2B K 75 $4B k 107 $6B [ctrl-L] FF 12 $0C , 44 $2C L 76 $4C l 108 $6C [ctrl-M] CR 13 $r ($0D) - 45 $2D M 77 $4D m 109 $6D [ctrl-N] SO 14 $0E . 46 $2E N 78 $4E n 110 $6E [ctrl-O] SI 15 $0F / 47 $2F O 79 $4F o 111 $6F [ctrl-P] DLE 16 $10 0 48 $30 P 80 $50 p 112 $70 [ctrl-Q] DC1 17 $11 1 49 $31 Q 81 $51 q 113 $71 [ctrl-R] DC2 18 $12 2 50 $32 R 82 $52 r 114 $72 [ctrl-S] DC3 19 $13 3 51 $33 S 83 $53 s 115 $73 [ctrl-T] DC4 20 $14 4 52 $34 T 84 $54 t 116 $74 [ctrl-U] NAK 21 $15 5 53 $35 U 85 $55 u 117 $75 [ctrl-V] SYN 22 $16 6 54 $36 V 86 $56 v 118 $76 [ctrl-W] ETB 23 $17 7 55 $37 W 87 $57 w 119 $77 [ctrl-X] CAN 24 $18 8 56 $38 X 88 $58 x 120 $78 [ctrl-Y] EM 25 $19 9 57 $39 Y 89 $59 y 121 $79 [ctrl-Z] SUB 26 $1A : 58 $3A Z 90 $5A z 122 $7A ctrl-[ ESC 27 $1B ; 59 $3B [ 91 $5B { 123 $7B [ctrl-\] FS 28 $1C < 60 $3C \ 92 $5C | 124 $7C ctrl-] GS 29 $1D = 61 $3D ] 93 $5D } 125 $7D [ctrl-^] RS 30 $1E > 62 $3E ^ 94 $5E ~ 126 $7E [ctrl-_] US 31 $1F ? 63 $3F _ 95 $5F DEL 127 $7F 29 Servicio de asistencia técnica de Rockwell Automation Rockwell Automation proporciona información técnica en la web para ayudarle a usar sus productos. En http://support.rockwellautomation.com, encontrará manuales técnicos, respuestas a preguntas formuladas frecuentemente, notas técnicas y de aplicación, ejemplo de códigos y vínculos a paquetes de servicio de software, además de la función MySupport, que podrá personalizar para aprovechar al máximo estas herramientas. Con el fin de brindarle un nivel adicional de asistencia técnica por teléfono para la instalación, configuración y resolución de problemas, ofrecemos los programas TechConnect Support. Para obtener más información, comuníquese con el distribuidor local o con el representante de Rockwell Automation, o visite http://support.rockwellautomation.com. Asistencia para la instalación Si tiene algún problema durante las primeras 24 horas tras la instalación, revise la información contenida en este manual. También puede comunicarse con un número especial de asistencia al cliente y obtener ayuda inicial para la puesta en marcha de su producto. Estados Unidos +1.440.646.3434 Lunes a viernes, de 08:00 a 17:00, hora oficial del Este de los EE.UU. Fuera de Estados Unidos Para la resolución de dudas técnicas, comuníquese con su representante local de Rockwell Automation. Procedimiento de devolución de productos nuevos Rockwell prueba todos sus productos para asegurar que estén en perfecto estado de funcionamiento cuando se envían de la fábrica. Sin embargo, si el producto no funciona y necesita devolverlo: Estados Unidos Comuníquese con el distribuidor. Deberá proporcionar al distribuidor un número de caso de asistencia al cliente (llame al número de teléfono anterior para obtener uno) a fin de completar el proceso de devolución. Fuera de Estados Unidos Comuníquese con el representante local de Rockwell Automation para obtener información sobre el procedimiento de devolución. Publicación 1756-PM013B-ES-P - Julio 2008 32 Sustituye la publicación 1756-PM013A-ES-P - Julio 2007 Copyright © 2008 Rockwell Automation, Inc. Todos los derechos reservados. Impreso en EE.UU.