Hoe kunnen we helpen?

Print

De klok van de ACE PLC instellen en synchroniseren met de HMI met behulp van een macro

In dit bericht laten we zien hoe je de klok van de HMI synchroniseert met de klok van de ACE PLC.

Aangezien de HMI een opgeslagen klok heeft, gebruiken we deze om de klok van de ACE PLC bij te werken.

De HMI-klok is in BCD-formaat. In de ACE PLC is de klok in DEC-formaat.

In deze tutorial wordt een macro gebruikt om de BCD-klok (Binary-Coded Decimal) van de HMI om te zetten in een DEC-klok (DECimal).

Met vBuilder

Allereerst moeten de UI8-tags die door de HMI worden geschreven, worden gedefinieerd in het Modbus-register.

Hier gebruiken we bijvoorbeeld de adressen 4×900 tot 4×905. Maar je kunt elk gebied gebruiken dat je wilt.

Vergeet niet om ze te definiëren als ‘Writable’: ‘Y’ (Zie Tag-lijst in vBuilder).

Je krijgt de HMI-klok in je ACE PC (hier, ‘sec’, ‘min’,..)

Met HMI-tool

De macro om BCD naar DEC te converteren

Voeg in de macro-editor een nieuwe macro toe en kopieer deze.

De Script-editor:

Je hoeft niet alle tags te gebruiken, als je bijvoorbeeld alleen de uren en minuten nodig hebt.

#include "MacroInit.h" 

int Convert (int input) // functie om BCD te converteren naar DEC
{
int iFirst = input &0x000F;
int iSecond = (input/16) &0x000F;
intTIII = (input/256) &0x000F;
int iVierde = (input/4096) &0x000F;
return iEerste iSecond*10 iThird*100 iFourth*1000;
}

void Macro_main(IN *p)
{
MarcoInit // Hoofdprogramma
LocalWord[900] = Convert (BCDSec);
LocalWord[901] = Convert (BCDMin);
LocalWord[902] = Convert (BCDHou);
LocalWord[903] = Convert (BCDDay);
LocalWord[904] = Convert (BCDMon);
LocalWord[905] = Convert (BCDYea)-2000;

}

LocalWord[900] naar LocalWord[905] zijn de HMI-registers waarin we de klokwaarden in DEC-formaat hebben geplaatst.
We hadden ook LocalWord[0] tot LocalWord[5] of een ander HMI-register kunnen gebruiken.

De macrotaglijst

Maak de lijst met tags die in de macro worden gebruikt.

  • BCDSec = LW[60000] = de seconden in HMI
  • BCDMin = LW[60001] = de minuten in de HMI
  • enz…

Opmerking: Voor alle LB en LW HMI-registers en om te begrijpen hoe het HMI-register is georganiseerd, zie“Nuttige gereserveerde en speciale HMI-registers

Hieronder het vensterscript, de instellingen van de variabelen en een voorbeeld van een variabele instelling:

De macro compileren

Het resultaat moet ‘Succes’ zijn

De macro toevoegen aan de lijst “Global Macro

Voeg de macro toe aan de lijst “Global Macro” en stel de uitvoeringsfrequentie in op 1000 ms om de klok elke seconde bij te werken.

Vanaf nu bevattende HMI-registers LocalWord[900] tot LocalWord[905] de klokwaarden in decimaal formaat (DEC)

Vooruit LocalWord[900] naar LocalWord[905] in de PLC ACE

In HMI-Tool, aan de linkerkant, “Data forward” > “Word address”, voeg het juiste woordadres toe voor het kopiëren van de LW900 naar LW905 naar de juiste netwerklink en PLC id.

Nogmaals, we gebruiken de 900 registers aan beide zijden, HMI en PLC, maar u kunt elk gebied gebruiken. Het belangrijkste is om consistent te zijn in de hele configuratie.

Vanaf nu ontvangt de ACE PLC de HMI-klok in DECimal-formaat in zijn registers.

Vervang het LocalWord[900] naar LocalWord[905] door uw variabelen om rechtstreeks in de PLC ACE te schrijven

In een macro kun je de regels ” LocalWord[900] = Convert (BCDSec);” enz. vervangen door ” MyPLC_Tag_Sec = Convert (BCDSec);“, waarbij “MyPLC_Tag_Sec” direct je PLC-variabele is in de taglijst van de macro.

Project downloaden

Je kunt hier het HMI- en ACE-project downloaden als je het wilt testen.