Jump to content

Recommended Posts

Posted

Hi,
What is the best solution for converting two 16 bits registers from modbus device to floating point in UniStream?  2x16 bit registers = 32 int to float. (IEEE754 single pr).  Is there any FB for this kind of conversion?

The device information: 

Quote

0x12345678 , shall be written in two consecutive registers, where the first register is 3499. Therefor the value has to be transmitted in the following way:

                               Reg 3499, high byte  0x34
                               Reg 3499, low byte 0x12
                               Reg 3500, high byte 0x78
                               Reg 3500, low byte 0x56


I don´t believe I have to do this manually with calculation  according to standard IEEE 754. If anybody know any method, it will be appreciated.

  • Like 1
Posted

You can copy the 2 16 bits registers (assuming it is an array of 2 Int16) to a Buffer using "Tag to Buffer". (or use 2 Tag to Buffer" elements, but with an offset of 2 on the second copy).

Then use a "Buffer to Tag", and copy 4 bytes from offset 0 from the buffer into a Real number.

 

Depending on how the value is sent, you might need to swap bytes on the buffer before copying it to Real.
 

 

  • Upvote 1
  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

This site uses cookies. By clicking I accept, you agree to their use.