Come possiamo aiutarti?
Come impostare e sincronizzare l’orologio del PLC ACE con l’HMI utilizzando una macro
In questo post vi mostreremo come sincronizzare l’orologio HMI con l’orologio del PLC ACE.
Poiché l’HMI dispone di un orologio salvato, lo utilizziamo per aggiornare l’orologio del PLC ACE.
L’orologio dell’HMI è in formato BCD. Nel PLC ACE, l’orologio è in formato DEC.
Questa esercitazione utilizza una macro per convertire l’orologio in formato BCD (Binary-Coded Decimal) dell’HMI in un orologio in formato DEC (DECimal).
Con vBuilderInnanzitutto, i tag UI8 che verranno scritti dall’HMI devono essere definiti nel registro Modbus. Ad esempio, qui utilizziamo gli indirizzi da 4×900 a 4×905. Ma è possibile utilizzare qualsiasi area desiderata. Non dimenticare di definirli come ‘scrivibili’: ‘Y’ (vedere l’elenco dei tag in vBuilder). Otterrete l’orologio HMI nel vostro PC ACE (qui, ‘sec’, ‘min’,…) |
![]() |
Con HMI-Tool
La macro per convertire BCD in DEC
Nell’Editor di macro, aggiungere una nuova macro e copiarla.
L’editor di script:

Non è necessario utilizzare tutti i tag, se si ha bisogno, ad esempio, solo delle ore e dei minuti.
#include "MacroInit.h"
int Convert (int input) // funzione per convertire BCD in DEC
{
int iFirst = input &0x000F;
int iSecondo = (input/16) &0x000F;
int iThird = (input/256) &0x000F;
int iFourth = (input/4096) &0x000F;
restituire iFirst iSecond*10 iThird*100 iFourth*1000;
}
void Macro_main(IN *p)
{
MarcoInit // Programma principale
LocalWord[900] = Convert (BCDSec);
LocalWord[901] = Convertire (BCDMin);
LocalWord[902] = Convertire (BCDHou);
Parola locale[903] = Convertire (BCDDay);
Parola locale[904] = Convertire (BCDMon);
LocalWord[905] = Convertire (BCDYea)-2000;
}
Parola locale[900] a LocalWord[905] sono i registri HMI in cui abbiamo inserito i valori di clock in formato DEC.
Avremmo potuto utilizzare da LocalWord[0] a LocalWord[5] o qualsiasi altro registro HMI.
L’elenco dei tag della macro
Creiamo l’elenco dei tag utilizzati nella macro.
- BCDSec = LW[60000] = i secondi in HMI
- BCDMin = LW[60001] = i minuti in HMI
- ecc.
Nota: per tutti i registri HMI LB e LW e per capire come è organizzato il registro HMI, vedere“Registri riservati e speciali HMI utili”
Di seguito lo script della finestra, le impostazioni delle variabili e un esempio di impostazione delle variabili:

Compilazione della macro
Il risultato deve essere “Successo”

Aggiungere la macro nell’elenco “Macro globali”

Aggiungete la macro nell’elenco “Macro globale” e impostate la sua frequenza di esecuzione a 1000 ms per aggiornare l’orologio ogni secondo.
D’ora in poi, i registri HMI da LocalWord[900] a LocalWord[905] contengono i valori dell’orologio in formato decimale (DEC)
Avanti LocalWord[900] a LocalWord[905] nel PLC ACE
In HMI-Tool, a sinistra, “Inoltro dati” > “Indirizzo parola”, aggiungere l’indirizzo parola giusto per copiare l’LW900 in LW905 nel link di rete e nell’id PLC giusto.
Ancora una volta, stiamo utilizzando i registri 900 su entrambi i lati, HMI e PLC, ma è possibile utilizzare qualsiasi area. L’importante è essere coerenti in tutta la configurazione.

D’ora in poi, il PLC ACE riceve l’orologio HMI in formato DECIMALE nei suoi registri.
Sostituire la parola locale[900] a LocalWord[905] con le proprie variabili da scrivere direttamente nel PLC ACE
In una macro, è possibile sostituire le righe ” LocalWord[900] = Convert (BCDSec);” ecc. con ” MyPLC_Tag_Sec = Convert (BCDSec);” dove “MyPLC_Tag_Sec” è direttamente la variabile del PLC nell’elenco dei tag della macro.
Progetto da scaricare
È possibile scaricare qui il progetto HMI e ACE se si desidera testarlo.
