¿Cómo podemos ayudar?
Cómo configurar y sincronizar el reloj del PLC ACE con la HMI mediante una macro
En este post, le mostraremos cómo sincronizar el reloj de la HMI con el reloj del PLC ACE.
Como la HMI tiene un reloj guardado, lo usamos para actualizar el reloj del ACE PLC.
El reloj de la HMI está en formato BCD. En el ACE PLC , el reloj está en formato DEC.
Este tutorial utiliza una macro para convertir el reloj en formato BCD (Binary-Coded Decimal) de la HMI en un reloj en formato DEC (DECimal).
Con vBuilderEn primer lugar, las etiquetas UI8 que serán escritas por el HMI deben definirse en el registro Modbus. Por ejemplo, aquí estamos utilizando las direcciones 4×900 a 4×905. Pero puede utilizar cualquier área que desee. No olvide definirlas como ‘Writable’: ‘Y’ (Ver lista de etiquetas en vBuilder). Obtendrá el reloj HMI en su PC ACE (aquí, ‘seg’, ‘min»,..) |
![]() |
Con la Herramienta HMI
La macro para convertir BCD a DEC
En el Editor de macros, añada una nueva macro y cópiela.
El editor de Script:

No tienes que usar todas las etiquetas, si necesitas, por ejemplo, sólo las horas y los minutos.
#include "MacroInit.h"
int Convert (int input) // función para convertir BCD a DEC
{
int iFirst = entrada &0x000F;
int iSegundo = (entrada/16) &0x000F;
int iTTercero = (entrada/256) &0x000F;
int iCuarto = (entrada/4096) &0x000F;
return iFirst iSecond*10 iThird*100 iFourth*1000;
}
void Macro_main(IN *p)
{
MarcoInit // Programa principal
LocalWord[900] = Convertir (BCDSec);
LocalWord[901] = Convertir (BCDMin);
LocalWord[902] = Convertir (BCDHou);
LocalWord[903] = Convertir (BCDDía);
LocalWord[904] = Convertir (BCDMon);
LocalWord[905] = Convertir (BCDYea)-2000;
}
LocalWord[900] to LocalWord[905] son los registros HMI donde hemos colocado los valores de reloj en formato DEC.
Podríamos haber utilizado LocalWord[0] a LocalWord[5] o cualquier otro registro HMI.
La lista de etiquetas de macro
Y crear la lista de los tags utilizados en la macro.
- BCDSec = LW[60000] = los segundos en HMI
- BCDMin = LW[60001] = los minutos en HMI
- etc…
Nota: Para conocer todos los registros HMI LB y LW y entender cómo está organizado el registro HMI, consulte«Registros reservados y especiales HMI útiles»
A continuación el script de la ventana, la configuración de las variables y un ejemplo de configuración de variables :

Compilar la macro
El resultado debe ser ‘Success

Añadir la macro en la lista «Macro global

Añade la macro en la lista «Macro global» Y establece su frecuencia de ejecución en 1000 ms para actualizar el reloj cada segundos.
A partir de ahora, los registros HMI LocalWord[900] a LocalWord[905] contienen los valores del reloj en formato decimal (DEC)
Adelante LocalWord[900] a LocalWord[905] en el PLC ACE
En la HMI-Tool, a la izquierda, «Data forward» > «Word address», añada la dirección word forward correcta para copiar el LW900 al LW905 al enlace de red y al id de PLC correctos.
Una vez más, estamos utilizando los registros 900 en ambos lados, HMI y PLC, pero usted puede utilizar cualquier área. La clave es ser consistente en toda la configuración.

A partir de ahora, el PLC ACE recibe el reloj de la HMI en formato DECimal en sus registros.
Sustituir el LocalWord[900] a LocalWord[905] por sus variables para escribir directamente en el ACE PLC
En una macro, puede reemplazar las líneas » LocalWord[900] = Convert (BCDSec);» etc.. por » MyPLC_Tag_Sec = Convert (BCDSec);» donde «MyPLC_Tag_Sec» es directamente su variable PLC en la lista de etiquetas de la macro.
Proyecto para descargar
Puede descargar aquí el proyecto HMI y ACE si desea probarlo.
