Wie können wir helfen?
Einstellen und Synchronisieren der ACE PLC-Uhr mit der HMI mithilfe eines Makros
In diesem Beitrag zeigen wir Ihnen, wie Sie die Uhr der HMI mit der Uhr der ACE PLC synchronisieren.
Da die HMI über eine gespeicherte Uhr verfügt, verwenden wir diese zur Aktualisierung der ACE PLC-Uhr.
Die Uhr der HMI ist im BCD-Format. In der ACE PLC ist die Uhr im DEC-Format.
In diesem Lernprogramm wird ein Makro verwendet, um die Uhr der HMI im BCD-Format (Binary-Coded Decimal) in eine Uhr im DEC-Format (DECimal) zu konvertieren.
Mit vBuilderZunächst müssen die UI8-Tags, die vom HMI geschrieben werden sollen, im Modbus-Register definiert werden. Hier verwenden wir zum Beispiel die Adressen 4×900 bis 4×905. Sie können aber jeden beliebigen Bereich verwenden. Vergessen Sie nicht, sie als ‚beschreibbar‘ zu definieren: y‘ (siehe Tag-Liste in vBuilder). Sie erhalten die HMI-Uhr in Ihrem ACE PC (hier, ’sec‘, ‚min‘,..) |
Mit HMI-Tool
Das Makro zur Konvertierung von BCD nach DEC
Fügen Sie im Makro-Editor ein neues Makro hinzu und kopieren Sie es.
Der Skript-Editor:
Sie müssen nicht alle Tags verwenden, wenn Sie z. B. nur die Stunden und Minuten benötigen.
#include "MacroInit.h"
int Convert (int input) // Funktion zur Konvertierung von BCD nach DEC
{
int iFirst = Eingabe &0x000F;
int iSecond = (Eingabe/16) &0x000F;
int iTDrittel = (Eingabe/256) &0x000F;
int iViertens = (Eingabe/4096) &0x000F;
return iFirst iSecond*10 iThird*100 iFourth*1000;
}
void Macro_main(IN *p)
{
MarcoInit // Hauptprogramm
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] nach LocalWord[905] sind die HMI-Register, in denen wir die Taktwerte im DEC-Format abgelegt haben.
Wir hätten auch LocalWord[0] bis LocalWord[5] oder jedes andere HMI-Register verwenden können.
Die Makro-Tag-Liste
Erstellen Sie nun die Liste der im Makro verwendeten Tags.
- BCDSec = LW[60000] = die Sekunden in HMI
- BCDMin = LW[60001] = die Minuten in der HMI
- usw…
Hinweis: Für alle LB- und LW-HMI-Register und um zu verstehen, wie die HMI-Register organisiert sind, siehe„Nützliche reservierte und spezielle HMI-Register“
Nachfolgend das Fensterskript, die Variableneinstellungen und ein Beispiel für eine Variableneinstellung:
Kompilieren Sie das Makro
Das Ergebnis muss ‚Success‘ sein
Das Makro in die Liste „Globales Makro“ aufnehmen
Fügen Sie das Makro in die Liste „Globales Makro“ ein und setzen Sie die Ausführungsfrequenz auf 1000 ms, um die Uhr alle Sekunden zu aktualisieren.
Ab jetzt enthaltendie HMI-Register LocalWord[900] bis LocalWord[905] Uhrwerte im Dezimalformat (DEC)
Weiterleiten LocalWord[900] nach LocalWord[905] in der ACE-SPS
In HMI-Tool, links, „Datenweiterleitung“ > „Wortadresse“, fügen Sie die richtige Wortadresse für das Kopieren des LW900 zu LW905 zur richtigen Netzwerkverbindung und SPS-ID hinzu.
Noch einmal, wir verwenden die 900 Register auf beiden Seiten, HMI und PLC, aber Sie können jeden Bereich verwenden. Wichtig ist, dass die Konfiguration einheitlich ist.
Von nun an empfängt die ACE SPS die HMI-Uhr im DECimal-Format in ihren Registern.
Ersetzen Sie das LocalWord[900] durch LocalWord[905] durch Ihre Variablen, um direkt in den ACE PLC zu schreiben
In einem Makro können Sie die Zeilen “ LocalWord[900] = Convert (BCDSec);
“ usw. durch “ MyPLC_Tag_Sec = Convert (BCDSec);
“ ersetzen, wobei „MyPLC_Tag_Sec“ direkt Ihre SPS-Variable in der Tag-Liste des Makros ist.
Projekt zum Herunterladen
Sie können hier das HMI- und ACE-Projekt herunterladen, wenn Sie es testen möchten.