CONVERSION.
En el contexto de Controladores Lógicos Programables (PLC), las operaciones de conversión son
fundamentales para transformar datos de un formato a otro. A continuación, describiré
algunas de estas operaciones:
Convertir Byte en Entero (B_I): Esta operación convierte un valor de byte en un valor de entero
y almacena el resultado en la dirección especificada. Por ejemplo,
EN (IN): BOOL, POWER
IN (IN): BYTE puedes convertir datos de sensores digitales en valores enteros
ENO (OUT): BOOL, POWER para su procesamiento.
OUT (OUT): INT
Convertir Entero en Byte (I_B): Aquí, se realiza la conversión inversa. Un valor de entero se
EN (IN): BOOL, POWER
convierte en un valor de byte y se almacena en la dirección de
IN (IN): INT salida. Se convierten los valores comprendidos entre 0 y 255. todos
ENO (OUT): BOOL, POWER los demás valores producen un desbordamiento y la salida no se ve
OUT (OUT): BYTE afectada
Convertir Entero en Entero Doble (I_DI): Esta operación convierte un valor de entero en un
EN (IN): BOOL, POWER valor de entero doble y deposita el resultado en la variable de
IN (IN): INT salida. Es útil cuando se necesita mayor precisión o rango para
ENO (OUT): BOOL, POWER
representar números enteros.
OUT (OUT): DINT
Convertir entero en cadena (I_S) x: La operación, convierte un entero (IN) en una cadena ASCII
de 8 caracteres de longitud. El formato (FMT) indica la precisión de la
EN (IN): BOOL, POWER
IN (IN): INT conversión a la derecha del separador decimal, así como si éste debe
FMT (IN): BYTE aparecer en forma de coma o de punto. La cadena resultante se
ENO (OUT): BOOL, POWER
OUT (OUT): STRIN
escribe en 9 bytes consecutivos a partir de OUT.
Convertir Entero Doble en Entero (DI_I): Aquí, se revierte la conversión. Un valor de entero
EN (IN): BOOL, POWER
doble se convierte en un valor de entero y se almacena en la
IN (IN): DINT dirección de salida. Si el valor es demasiado grande para
ENO (OUT): BOOL, POWER representarse como entero, se activa una marca de
OUT (OUT): INT
desbordamiento.
Convertir Entero Doble en Real (DI_R): Esta operación convierte un entero de 32 bits (IN) con
EN (IN): BOOL, POWER signo en un número real de 32
IN (IN): DINT bits y deposita el resultado en la Condiciones de error que ponen
ENO (OUT): BOOL, POWER ENO a 0:
variable de salida (OUT). 0006(dirección indirecta)
OUT (OUT): REAL
Convertir Entero Doble en cadena (DI_S) x: La operación, convierte un entero doble (IN) en una
cadena ASCII de 12 caracteres de longitud. El formato (FMT) indica
EN (IN): BOOL, POWER
IN (IN): DINT la precisión de la conversión a la derecha del separador decimal,
ENO (OUT): BOOL, POWER así como si éste debe aparecer en forma de coma o de punto.
OUT (OUT): STRING
La cadena resultante se escribe en 13 bytes consecutivos a partir de OUT. Para más
información sobre el formato de cadenas, consulte el capítulo 4.
Convertir BCD en Entero (BCD_I): Convierte un valor decimal
Condiciones de error que ponen
EN (IN): BOOL, POWER codificado en binario (IN) en un valor de ENO a 0:
IN (IN): WORD entero y carga el resultado en la variable 0006(dirección indirecta)
ENO (OUT): BOOL, POWER de salida (OUT). El rango válido para el Marcas especiales afectadas:
OUT (OUT): WORD SM1.6 (BCD no válido)
valor IN está entre 0 y 9999 BCD.
Convertir Entero en BCD (I_BCD): Aquí, se realiza la conversión Marcas especiales afectadas:
inversa. Un valor de entero se convierte SM1.6 (BCD no válido)
EN (IN): BOOL, POWER en un valor BCD y se almacena en la
IN (IN): WORD
ENO (OUT): BOOL, POWER
variable de salida.
OUT (OUT): WORD
"ROUND": Redondea al número entero más próximo: La operación Redondear (ROUND)
convierte un número real (IN) en un valor de entero doble y
EN (IN): BOOL, POWER
IN (IN): REAL deposita el resultado en la variable indicada por OUT. Si la fracción
ENO (OUT): BOOL, POWER es 0,5 o superior, el número se redondeará al próximo entero
OUT (OUT): DINT
superior.
"TRUNC": No se redondea. (TRUNCA): La operación Truncar (TRUNC) convierte un número
real (IN) en un entero doble y carga el resultado en la variable
EN (IN): BOOL, POWER indicada por OUT. Sólo se
IN (IN): REAL Condiciones de error que ponen
ENO (OUT): BOOL, POWER
convierte la parte entera del
ENO a 0:
OUT (OUT): DINT número real. La fracción se H SM1.1 (desbordamiento)
pierde. H 0006 (dirección indirecta)
Marcas especiales afectadas:
Si el valor a convertir no es un número real válido o si es H SM1.1 (desbordamiento)
demasiado grande para ser representado en la salida, la
marca de desbordamiento se activará y la salida no se verá afectada.
Convertir real en cadena (R_S) x: La operación, convierte un número real (IN) en una cadena
ASCII. El formato (FMT) indica la precisión de la conversión a la
EN (IN): BOOL, POWER
IN (IN): REAL
derecha del separador decimal, así como si éste debe aparecer en
FMT(IN): BYTE forma de coma o de punto, y también la longitud de la cadena
ENO (OUT): BOOL, POWER resultante.
OUT (OUT): STRING
La conversión resultante se deposita en una cadena que
comienza en OUT. El formato indica la longitud de la cadena resultante, que puede
comprender entre 3 y 15 caracteres. Para más información sobre el formato de cadenas,
consulte el capítulo 4.
El formato de número real utilizado por el S7--200 soporta 7 dígitos significativos como
máximo. Si se intenta visualizar más de estos 7 dígitos, se producirá un error de redondeo.
Convertir entero en ASCII (ITA): La operación Convertir entero en ASCII (ITA) convierte un
entero (IN) en un array de caracteres ASCII. El formato FMT
EN (IN): BOOL, POWER
IN (IN): INT
indica la precisión de la conversión a la derecha del separador
FMT(IN): BYTE decimal, así como si éste debe aparecer en forma de coma o de
ENO (OUT): BOOL, POWER punto. La conversión resultante se deposita en 8 bytes
OUT (OUT): BYTE
consecutivos comenzando en OUT.
El array de caracteres ASCII comprende siempre 8 caracteres.
Convertir entero doble en ASCII (DTA): La operación Convertir entero doble en ASCII (DTA)
convierte un entero de 32 bits (IN) en un array de caracteres ASCII.
EN (IN): BOOL, POWER
IN (IN): DINT El operando de formato FMT indica la precisión de conversión a la
FMT(IN): BYTE derecha del separador decimal. La conversión resultante se
ENO (OUT): BOOL, POWER
OUT (OUT): BYTE
deposita en 12 bytes consecutivos comenzando en OUT.
El tamaño del búfer de salida es siempre de 12 bytes.
Convertir real en ASCII (RTA): La operación Convertir real en ASCII (RTA) convierte un número
EN (IN): BOOL, POWER real IN en caracteres ASCII. El formato FMT indica la precisión de
IN (IN): REAL la conversión a la derecha del separador decimal, así como si éste
FMT(IN): BYTE
ENO (OUT): BOOL, POWER debe aparecer en forma de coma o de punto, y también el
OUT (OUT): BYTE tamaño del búfer de salida.
La conversión resultante se deposita en un búfer de salida que comienza en OUT.
El número (o longitud) de los caracteres ASCII resultantes corresponde al tamaño del búfer de
salida, pudiendo indicarse en un rango comprendido entre 3 y 15 bytes o caracteres.
El formato de número real utilizado por el S7--200 soporta 7 dígitos significativos como
máximo. Si se intenta visualizar más de estos 7 dígitos, se producirá un error de redondeo.
Convertir cadena de caracteres ASCII a número en hexadecimal (ATH): La operación
INSTRUCCIONES
EN (IN): BOOL, POWER Convertir ASCII en hexadecimal (ATH) convierte un número
AVANZADAS
IN (IN): BYTE LEN de caracteres ASCII, a partir del carácter IN, en dígitos
LEN (IN): BYTE
ENO (OUT): BOOL, POWER
hexadecimales, comenzando en OUT.
OUT (OUT): BYTE
Convertir número hexadecimal a cadena de caracteres ASCII (HTA): La operación
EN (IN): BOOL, POWER Convertir hexadecimal en ASCII (HTA) convierte los dígitos
IN (IN): BYTE hexadecimales a partir del byte de entrada IN en
LEN (IN): BYTE
ENO (OUT): BOOL, POWER caracteres ASCII, comenzando en OUT.
OUT (OUT): BYTE
El número de dígitos hexadecimales a convertir es especificado por la longitud LEN.
Es posible convertir como máximo 255 caracteres ASCII, o bien dígitos hexadecimales.
Introducción ASCII válida Los caracteres ASCII válidos son los caracteres alfanuméricos 0 a 9
con un valor de código hexadecimal de 30 a 39, así como las mayúsculas A a F con un valor de
código hexadecimal de 41 a 46.
Las operaciones Convertir cadena en entero (STI), Convertir cadena en entero doble (STD) y
Convertir cadena en real (STR) convierten un valor de cadena (IN), a partir del offset INDX, en
un entero, un entero doble o un número real (OUT).
Convertir cadena en entero (S_I) x:
Las operaciones Convertir cadena en entero y Convertir
EN (IN): BOOL, POWER cadena en entero doble convierten cadenas que tengan
el formato siguiente:
IN (IN): STRING
[espacios] [+ ó --] [dígitos 0 -- 9]
INDX (IN): BYTE
ENO (OUT): BOOL, POWER Por lo general, el valor de INDX se pone a ”1”, lo que inicia
OUT (OUT): INT la conversión del primer carácter de la cadena. INDX se
puede ajustar a otros valores para iniciar la conversión en
Convertir cadena en entero doble (S_DI) x: diferentes puntos de la cadena. Esto se puede utilizar si la
cadena de entrada contiene texto que no pertenezca al
EN (IN): BOOL, POWER número a convertir. Por ejemplo, si la cadena de entrada es
IN (IN): STRING ”Temperatura: 77,8”, el valor de INDX se debe ajustar a 13
INDX (IN): BYTE para omitir la palabra ”Temperatura: ” al comienzo de la
ENO (OUT): BOOL, POWER cadena.
OUT (OUT): DINT
Convertir cadena en real (S_R) x: La operación Convertir cadena en real convierte
cadenas que tengan el formato siguiente:
EN (IN): BOOL, POWER [espacios] [+ ó --] [dígitos 0 -- 9]
IN (IN): STRING [. ó ,] [dígitos 0 -- 9]
INDX (IN): BYTE
ENO (OUT): BOOL, POWER La operación Convertir cadena en real no convierte
OUT (OUT): REAL cadenas que utilicen una notación científica o formas
exponenciales de números reales. La operación no causa
un error de rebase del límite superior (SM1.1), sino que
convierte la cadena en un número real hasta el exponencial
y termina luego la conversión. Por ejemplo, la cadena
‘1.234E6’ se convierte sin errores en el valor real 1.234.
La conversión finaliza al alcanzarse el final de la cadena o cuando se detecte el primer carácter no válido.
Los caracteres no válidos son todos aquellos que no sean dígitos (0 9).
Decodificar (DECO): La operación Decodificar (DECO) activa el bit de la palabra
EN (IN): BOOL, POWER de salida OUT. Este bit corresponde al número de bit
IN (IN): BYTE representado por el medio byte menos significativo (4 bits)
ENO (OUT): BOOL, POWER
OUT (OUT): WORD
del byte de entrada IN.
Codificar (ENCO): La operación Codificar (ENCO) escribe el número del bit
menos significativo de la palabra de entrada IN en el medio
EN (IN): BOOL, POWER
IN (IN): WORD byte menos significativo (4 bits) del byte de salida OUT.
ENO (OUT): BOOL, POWER
OUT (OUT): BYTE
Segmento (SEG): La operación Segmento (SEG) sirve para generar una
EN (IN): BOOL, POWER configuración binaria que ilumina los segmentos de un
IN (IN): BYTE indicador de siete segmentos. La operación convierte el carácter
ENO (OUT): BOOL, POWER
(byte) especificado por IN para generar una configuración
OUT (OUT): BYTE
binaria (byte) en la dirección indicada por OUT.
CADENA.
Longitud de cadena (STR_LEN): Esta operación determina o indica la longitud
de la cadena especificada por IN.
EN (IN): BOOL, POWER
IN (IN): STRING
ENO (OUT): BOOL, POWER
OUT (OUT): BYTE
Copiar cadena (STR_CPY): Esta operación copia la cadena indicada por IN en la cadena
indicada por OUT.
EN (IN): BOOL, POWER
IN (IN): STRING
ENO (OUT): BOOL, POWER
OUT (OUT): STRING
Concatenar cadena (STR_CAT): La concatenación combina dos o más cadenas en una sola. Por
ejemplo, añade la cadena indicada por IN al final de la cadena
EN (IN): BOOL, POWER
indicada por OUT.
IN (IN): STRING
ENO (OUT): BOOL, POWER
OUT (OUT): STRING
Marcas especiales y ENO
Las condiciones siguientes afectan a ENO en las operaciones Longitud de cadena, Copiar
cadena y Concatenar cadena.
Condiciones de error que ponen ENO a 0:
H 0006 (dirección indirecta)
H 0091 (error de rango)
Copiar subcadena (SSTR_CPY): La operación Copiar subcadena de cadena (SSCPY) copia
el número indicado de caracteres N de la cadena indicada
EN (IN): BOOL, POWER
IN (IN): STRING por IN, comenzando en el índice (INDX), a la nueva cadena
INDX (IN): BYTE indicada por OUT.
N (IN): BYTE
Condiciones de error que ponen ENO a 0:
ENO (OUT): BOOL, POWER
H 0006 (dirección indirecta)
OUT (OUT): STRING
H 0091 (error de rango)
H 009B (índice=0)
Buscar subcadena (STR_FIND): La operación, busca la primera aparición de la cadena IN2
dentro de la cadena IN1. La búsqueda comienza en la posición
EN (IN): BOOL, POWER inicial indicada por OUT (que debe estar en el rango 1 en la
IN1 (IN): STRING longitud de la cadena). Si se encuentra una secuencia de caracteres
IN2 (IN): STRING que coincida exactamente con la cadena IN2, la posición del primer
ENO (OUT): BOOL, POWER
carácter de esa secuencia se escribirá en OUT. Si la cadena IN2 no
OUT (OUT): BYTE
se encuentra en la cadena IN1, OUT se pondrá a ”0”.
Condiciones de error que ponen ENO a 0:
H 0006 (dirección indirecta)
H 0091 (error de rango)
H 009B (índice = 0)
Buscar carácter en cadena (CHR_FIND): La operación, busca en la cadena IN1 hasta encontrar
la primera aparición de un carácter cualquiera que pertenezca
EN (IN): BOOL, POWER
al juego de caracteres descrito en la cadena IN2. La búsqueda
IN1 (IN): STRING
IN2 (IN): STRING comienza en la posición inicial OUT (que debe estar en el
ENO (OUT): BOOL, POWER rango 1 en la longitud de la cadena). Si el carácter se
OUT (OUT): BYTE encuentra en N1, la posición del carácter se escribirá en OUT.
Si no se encuentra el carácter, OUT se pondrá a ”0”.
Condiciones de error que ponen ENO a 0:
H 0006 (dirección indirecta)
H 0091 (error de rango)
H 009B (índice = 0)