Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

ModBus - Como unir 4 números de 16 bits cada uno para formar un número de 64 bits

¡Resuelto!
Ir a solución

Cordial Saludo queridos Expertos,

 

Estoy trabajando en una aplicación con ModBus TCP IP, estoy leyendo las variables de energía eléctrica de un medidor de Siemens, he leído la mayoría de las variables que constan de 2 registros es decir 4 bytes como por ejemplo, el voltaje, la corriente, la potencia, etc. Necesito leer la energía activa que el medidor reporta, para leer este dato debo acceder a 4 registros a través de modbus es decir  a 8 bytes, puedo acceder a los 4 registros cada uno de 16 bits, pero no he logrado unir los número para formar el número real doble de 64 bits.

 

Agradezco si alguien puede brindarme una orientación para no seguir intetando sin resultado.

 

En el adjunto pueden evidenciar la información.

 

Saludos!

Descargar todos
0 kudos
Mensaje 1 de 9
6.937 Vistas

hola afar, quizas puedes trasformar los numeros de los registros a string, usar la funcion concatenate strings y luego que tienes la palabra completa, trasnformar el string a numero y ahi te quedan los numeros de los registros juntos, subi un vi, y ve si es eso lo que tratas de hacer.

 

 

 

0 kudos
Mensaje 2 de 9
6.912 Vistas

AFAR_MECATRONICA escribió:

Cordial Saludo queridos Expertos,

 

Estoy trabajando en una aplicación con ModBus TCP IP, estoy leyendo las variables de energía eléctrica de un medidor de Siemens, he leído la mayoría de las variables que constan de 2 registros es decir 4 bytes como por ejemplo, el voltaje, la corriente, la potencia, etc. Necesito leer la energía activa que el medidor reporta, para leer este dato debo acceder a 4 registros a través de modbus es decir  a 8 bytes, puedo acceder a los 4 registros cada uno de 16 bits, pero no he logrado unir los número para formar el número real doble de 64 bits.

 

Agradezco si alguien puede brindarme una orientación para no seguir intetando sin resultado.

 

En el adjunto pueden evidenciar la información.

 

Saludos!


 

Te adjunto figura para unir 4 registros en 64 bits. Observa que entran elementos de 16 bits y sale un elemento de 64 bits.

Saludos...4 a 64.png

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 3 de 9
6.885 Vistas

Hola Mr Moisan,

 

He intentado lo que me propones y no he conseguido ver la variable relacionada a la Energía Activa consumida.

 

Saludos!

0 kudos
Mensaje 4 de 9
6.745 Vistas

AFAR_MECATRONICA escribió:

Hola Mr Moisan,

 

He intentado lo que me propones y no he conseguido ver la variable relacionada a la Energía Activa consumida.

 

Saludos!


Hola:

 

Sería bueno que indicases los 4 bytes que obtienes en la lectura, y el resultado de energía Activa que tendrías que obtener, para poder ayudarte.

Saludos..

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 5 de 9
6.741 Vistas

Hola Mr Moisan,

 

Recibe de mi parte un cordial saludo, agradezco tu valiosa colaboración, voy a poner un ejemplo para relacionar la forma en la que lo estoy haciendo, cuando saco el valor del voltaje entre linea y neutro, una variable que es de tipo float según la tabla de direcciones Modbus del mi medidor de energía Siemens, la dirección de acceso es la 1 dentro de los Holding Registers, accedí entonces a dos registros cada uno de 16 bits para hacer la lectura del voltaje linea - neutro puse la punta de prueba de labview y lo que obtuve  en el primer registro fue 17153 y en el segundo registro 5811, esos valores los pasé por un bloque llamado Join Numbers y la salida de este bloque la pase por un bloque llamado Type Cast, de esta forma obtuve a la salida 129,098 que es evidentemente el voltaje al que se encuentra conectado el medidor, como adjunto te comparto el diagrama de bloques de como realicé dicha operación y la tabla Modbus donde está la respectiva dirección.

 

Para acceder al valor de la energía activa, es necesario acceder a la dirección 801 de la tabla Modbus del medidor y tomar 4 registros para formar un único número de 64 bits, los valores que obtengo son 16730, 1235, 62762 y 43968, con estos 4 valores debo encontrar un 6820690 W.H que es el valor de energía consumida que reporta el medidor, adjunto relaciono la tabla Modbus donde se encuentra la dirección a la que accedo para leer los registros.

 

Gracias por tu ayuda, me ha costado trabajo encontrar la forma de ver el valor en Labview.

 

Saludos

0 kudos
Mensaje 6 de 9
6.726 Vistas
Solución
Aceptado por el autor del tema AFAR_MECATRONICA

AFAR_MECATRONICA escribió:

Hola Mr Moisan,

 

Recibe de mi parte un cordial saludo, agradezco tu valiosa colaboración, voy a poner un ejemplo para relacionar la forma en la que lo estoy haciendo, cuando saco el valor del voltaje entre linea y neutro, una variable que es de tipo float según la tabla de direcciones Modbus del mi medidor de energía Siemens, la dirección de acceso es la 1 dentro de los Holding Registers, accedí entonces a dos registros cada uno de 16 bits para hacer la lectura del voltaje linea - neutro puse la punta de prueba de labview y lo que obtuve  en el primer registro fue 17153 y en el segundo registro 5811, esos valores los pasé por un bloque llamado Join Numbers y la salida de este bloque la pase por un bloque llamado Type Cast, de esta forma obtuve a la salida 129,098 que es evidentemente el voltaje al que se encuentra conectado el medidor, como adjunto te comparto el diagrama de bloques de como realicé dicha operación y la tabla Modbus donde está la respectiva dirección.

 

Para acceder al valor de la energía activa, es necesario acceder a la dirección 801 de la tabla Modbus del medidor y tomar 4 registros para formar un único número de 64 bits, los valores que obtengo son 16730, 1235, 62762 y 43968, con estos 4 valores debo encontrar un 6820690 W.H que es el valor de energía consumida que reporta el medidor, adjunto relaciono la tabla Modbus donde se encuentra la dirección a la que accedo para leer los registros.

 

Gracias por tu ayuda, me ha costado trabajo encontrar la forma de ver el valor en Labview.

 

Saludos


Hola:

 

He estado intentando reproducir los datos obtenidos y:

1.- Para obtener el valor de la tensión (figura parte derecha), se debe utilizar en el Type Cast un número real de precisión simple (SGL).

2.- Siguiendo el mismo razonamiento, para el valor de la energía (figura parte izquierda) se unen los 4 registros y debes utilizar en el Type Cast un número real de Doble Precisión (DBL).

 

De esta manera se obtienen los valores deseados.

 

Saludos y suerte.

 

Join.png

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 7 de 9
6.713 Vistas

Hola Mr Moisan,

 

Agradezco tu colaboración y preciada ayuda con la solución, he probado y efectivamente he logrado obtener el valor de la energía activa consumida que reporta el medidor, me has salavado, ahora puedo continuar con mi plataforma de energía.

 

Muchas gracias.

 

Saludos!

0 kudos
Mensaje 8 de 9
6.696 Vistas

Hola, de nuevo:

 

Me alegro de que vayas resolviendo los problemas.

 

Haz el favor de marcar el problema como SOLUCIONADO para ayudar al resto de usuarios del foro.

 

Saludos.

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 9 de 9
6.692 Vistas