Rangos memoria pantalla

  • 4 Respuestas
  • 3862 Vistas

Mariano Mazza

  • Aprendiz
  • **
  • Mensajes: 20
Rangos memoria pantalla
« : agosto 19, 2016, 09:00:46 am »
Que tal, al intentar mostrar el valor de una variable para editarla (SET) con el HMI no me guarda el registro en la memoria a la que apunta el HMI

Por ejemlo PLC variablex la guardo en 42100 la leo y muestro en el hmi tildando set y la devuelvo al mismo registro
Como el hmi sigue leyendo esa memoria veo que se pone en cero asi que no fue actualizada

Entiendo que puede ser que esté guardando en una ubicacion de memoria incorrecta pero no termino de entender los rangos de la tabla que trae la pantalla


Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re:Rangos memoria pantalla
« Respuesta #1 : agosto 19, 2016, 11:36:24 am »
Claro, la dirección ModBus 42100 no existe en el PLC.

En la nota de apliacion AN023, la tabla 3, te explica cuales son los rangos validos para el modelo de PLC. Adjunto imagen.

En el caso de los registros holding, tenes 32 disponibles en las direcciones 42001 a 42032.
También tenes 128 bits de propósito general desde 6001 a 6128.
También hay para control y acceso directo de las DIN/DOUT.

Por otro lado, la tabla de la pagina 11 de la nota AN024, te explica la relación entre código de funciones ModBus y tipo de registros del panel HMI.


Saludos
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.

Mariano Mazza

  • Aprendiz
  • **
  • Mensajes: 20
Re:Rangos memoria pantalla
« Respuesta #2 : agosto 19, 2016, 14:23:10 pm »

Entonces para poder controlar la pantalla hmi que quiero visualizar puedo cargar en 42032 = nro pantalla
y la info del programa que quiero modificar ej variable1,2....x  en 42001  42002.... hasta 42031 ?

Si necesitase modificar 100 valores de variables o parametros desde el hmi no hay suficientes memorias no?

Por ultimo, he probado que en el ejemplo que está en la web activa y desactiva un motor (6002) y cambia el texto en la pantalla, como puedo capturar ese valor?,
me serviría para generar una pantalla con diferentes alarmas y al oprimir numeros del teclado ir desactivandolas. El tema es que en el programa se refleje esa acción cambiando una variable de 1 a 0

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re:Rangos memoria pantalla
« Respuesta #3 : agosto 19, 2016, 19:27:00 pm »
Citar
Entonces para poder controlar la pantalla hmi que quiero visualizar puedo cargar en 42032 = nro pantalla
y la info del programa que quiero modificar ej variable1,2....x  en 42001  42002.... hasta 42031 ?

Exacto.

Citar
Si necesitase modificar 100 valores de variables o parametros desde el hmi no hay suficientes memorias no?


Así es en primera instancia.

También podes hacer que un registro sea un indice. Por ejemplo, haces que el 42001 almacene un
entero que representa un grupo. Luego cuando leas los registros 42002, 42003, etc, sabes que si el registro 42001=1,
almacenas los valores de los otros registros en X array, si 42001=2, almacenas los registros en Y array, etc.
Podría ser una alternativa.

Citar
Por ultimo, he probado que en el ejemplo que está en la web activa y desactiva un motor (6002) y cambia el texto en la pantalla, como puedo capturar ese valor?, me serviría para generar una pantalla con diferentes alarmas y al oprimir numeros del teclado ir desactivandolas. El tema es que en el programa se refleje esa acción cambiando una variable de 1 a 0

¿Queres capturar el valor "1" o "0" del ejemplo ?.

Bien. Primero debes entender que el "1" o "0" que cambia el ejemplo de la AN024 esta dentro de la posición de memoria de las GP-COIL (bit de propósito general, en el rango 6001 a 6128).

Entonces para leerlos debes usar los componentes ladder para leer GP-COILS como MbRtuServGetGpCoil (para leer) y MbRtuServGetGpCoil (para escribir).

Fijate la imagen 01 que adjunto. En la network N003 el componente MbRtuServGetGpCoil lee la dirección 6002 (un bit) y lo almacena en la variable bool "GpCoil".

Luego esa variable "GpCoil" la utiliza para activar el led DEBUG. Pero podes usarla para activar un rele u otra lógica.

Debes notar que desde el HMI, se escribe periódicamente la dirección 6002 con el valor ingresado con la tecla "1".
Ver imagen 02 adjunta.



Si necesitas leer registros con valores enteros de 16-bits (se llaman Holding Registers), para el rango de direcciones 42001 a 42032, usas los componentes MbRtuServGetRegister (para leer) y MbRtuServLoadRegister (para escribir).

Recorda que vos escribís y lees en la memoria del PLC. Luego el HMI los busca periódicamente (de acuerdo a como lo programes y en la pantalla que se encuentre) leyendo la memoria del PLC. Pero no actuas sobre el HMI en si.



Te recomiendo leer detenidamente los ejemplos de las notas de aplicacion:

HMI

http://slicetex.com/docs/an/an024/

http://slicetex.com/docs/an/an024/files/an024-example1.zip

PLC

http://slicetex.com/docs/an/an023

http://slicetex.com/docs/an/an023/ModBusRtuServer1.zip

Saludos







« Última Modificación: agosto 19, 2016, 19:50:57 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.

Mariano Mazza

  • Aprendiz
  • **
  • Mensajes: 20
Re:Rangos memoria pantalla
« Respuesta #4 : agosto 19, 2016, 19:54:15 pm »
 Excelente me quedo claro. Ya me funciona bien!