SINT o INT a DINT

Para las instrucciones que convierten valores SINT o INT en valores DINT, las secciones Operandos identifican el método de conversión.
Este método de conversión:
Convierte datos colocando:
Extensión de signo
El valor del bit que está más a la izquierda (el signo del valor) en cada posición de bit a la izquierda de los bits existentes hasta que haya 32 bits.
Relleno de ceros
ceros a la izquierda de los bits existentes hasta que haya 32 bits.
El siguiente ejemplo muestra los resultados de convertir un valor usando la extensión de signo y el relleno de ceros.
Este valor:
2#1111_1111_1111_1111
(-1)
Se convierte en este valor mediante la extensión de signo
2#1111_1111_1111_1111_1111_1111_1111_1111
(-1)
Se convierte en este valor mediante el relleno de ceros
2#0000_0000_0000_0000_1111_1111_1111_1111
(65535)
Puesto que los valores inmediatos siempre se rellenan con ceros, la conversión de un valor SINT o INT puede producir resultados inesperados. En el ejemplo siguiente, la comparación es falsa porque el Origen A, un INT, realiza la conversión mediante extensión de signo, mientras que el Origen B, un valor inmediato, se rellena con ceros.
EQU_append_ex1
Si se utilizan una etiqueta SINT o INT y un valor inmediato en una instrucción que convierta datos con extensión de signo, utilice uno de estos métodos para gestionar los valores inmediatos:
Especifique cualquier valor inmediato en base decimal
Si introduce el valor en una base que no sea decimal, especifique los 32 bits del valor inmediato. Para hacerlo, introduzca el valor del bit que está más a la izquierda en cada posición, a su izquierda, hasta que haya 32 bits.
Cree una etiqueta para cada operando y utilice el mismo tipo de datos en toda la instrucción. Para asignar un valor constante, use una de las siguientes opciones:
  • Introducirlo en una de las etiquetas
  • Añadir una instrucción MOV para mover el valor a una de las etiquetas.
Utilizar una instrucción MEQ para comprobar solo los bits necesarios
Los siguientes ejemplos muestran dos maneras de mezclar un valor inmediato con una etiqueta INT. Ambos ejemplos comprueban los bits de un módulo E/S 1771 para determinar si todos los bits están activados. Como la palabra de datos de entrada de un módulo E/S (I/O) 1771 es una etiqueta INT, es más fácil usar un valor constante de 16 bits
Ejemplo 1
Mezcla de una etiqueta INT con un valor inmediato.
Como remote_rack_1:I.Data[0] es una etiqueta INT, el valor con el que se debe comparar también se introduce como una etiqueta INT.
EQU_append_ex2
Ejemplo 2
Mezcla de una etiqueta INT con un valor inmediato.
Como remote_rack_1:I.Data[0] es una etiqueta INT, el valor con el que se debe comparar se coloca primero en int_0 y también es una etiqueta INT. A continuación, la instrucción EQU compara ambas etiquetas.
EQU_append_ex3
Entregue su opinión
¿Tiene dudas o comentarios acerca de esta documentación? Por favor deje su opinión aquí.
Normal