Está en la página 1de 2

Cómo convierto un entero a punto flotante y viceversa en un

Controlador Rockwell?
Número de artículo: 449 | Puntaje: 4.3 / 5 de 13 votos | Última actualización: jue, 17 de
diciembre de 2015 a las 5:35 PM
Las direcciones de la base de datos de cada tarjeta ProSoft consisten en enteros de 16
bits. Por lo tanto, cuando se trata de valores reales o de coma flotante de 32 bits, se almacenan
como dos enteros de 16 bits consecutivos.

Conversión de enteros a flotantes

En todas las versiones de RSLogix, la función COP (COPY) se usa para convertir datos de
enteros y puntos flotantes. La sintaxis es:

COP <SOURCE> <DESTINATION> <LENGTH>

Tenga en cuenta que el parámetro LEN gth es para la tabla de destino o matriz.

En este ejemplo, un valor flotante de '12 .34 'se representará como' 28836 y 16709 'en la tarjeta
ProSoft. Necesitará crear una declaración COP que copie ambos valores de Integer en una
sola etiqueta / tabla Real.

MCM.DATA.ReadData [x] es un tipo de datos Int (16 bits) Int.


Específicamente, MCM.DATA.ReadData [0] contendrá el valor 28836 y MCM.DATA.ReadData
[1] contendrá 16709.
FloatData [0] es un tipo de datos Real.

Es el tipo de datos del Destino de la declaración COP que dicta el parámetro Longitud. Una
longitud de '1' significa que la lógica utilizará 2 enteros consecutivos que comienzan en
MCM.DATA.ReadData [0] para crear 1 flotante. No todos los pares de valores enteros
comprenderán un valor flotante válido, por lo que es posible que el valor flotante resultante no
sea válido. Puede haber un problema con el orden en el que se colocaron los bytes / palabras
al convertir a un flotador. Es posible que deba probar un parámetro 'Código de intercambio'
diferente para cada comando de MCM. Puede intercambiar las dos palabras, los bytes o
ambos.

Consulte el manual del usuario para obtener más información sobre los códigos de intercambio.

Convertir de flotadores en enteros


Al enviar datos desde la tarjeta ProSoft, el valor de Flotante deberá copiarse en la memoria de
ProSoft (direcciones de enteros de 16 bits). El valor flotante se dividirá en 2 enteros, y debe
enviarse como 2 enteros. Una vez que los dos enteros llegan a su destino, el dispositivo en el
otro extremo será responsable de mostrar estos 32 bits como un número de punto flotante.
La declaración COP aquí tomará el valor de punto flotante 1 "SendFloat [0]" y colocará los
datos en el.
MCM.DATA.WriteData [0] y [1], ya que se especificó una longitud de 2 en la declaración COP.

Consulte http://en.wikipedia.org/wiki/IEEE_754 para obtener detalles del formato flotante IEEE


754.

En nuestro caso usanos u cop y después para swappearlo usamos la instrucción SWPB