1756-PM013B-ES, Cadenas ASCII de controladores Logix5000

Anuncio
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.
Descargar