Beschreibung der einzelnen DP-Funktionen und Daten sowie Fehlercodes
4.3.4
Prüfen der Slaves auf Datenänderung
Nutzen der Änderungsinformation
Im Prozessabbild des CP 5613/CP 5614 gibt es einen Speicherbereich, in dem Sie
feststellen können, welche Slave-Daten sich geändert haben.
Diese Eigenschaft können Sie verwenden, um ohne Benutzung von Semaphore
schnell feststellen zu können, wo sich Daten geändert haben.
Beispiel
Es sei p ein Zeiger auf das Prozessabbild, den Ihr Anwenderprogramm beim
„DP_get_pointer"-Aufruf erhalten hat. Um z. B. zu zählen, bei wie vielen Slaves
geänderte Daten vorliegen, würden Sie etwa folgendes programmieren, wobei
„sum" das Ergebnis enthält:
Unsigned short sum = 0;
Unsigned short i;
for (i = 0; i< DPR_MAX_SLAVE_ADDR; i++)
{
if ( p->ef.input[i].req_mask == DPR_DATA_CHANGE )
{
/* geänderte Daten beim Slave i gefunden */
/* Sperren des Datenbereichs gegen Aktualisierung: */
p->ctr.D_lock_in_slave_adr = i;
/* Maske wieder freigeben: */
p->ef.input[i].req_mask =
/* Daten lesen: */
memcpy(...);
/* Sperren des Datenbereichs aufheben: */
p->ctr.D_lock_in_slave_adr = DPR_DP_UNLOCK;
sum++;
}
}
Programmierschnittstelle DP-Base für CP 5613/CP 5614
C79000-G8900-C139-04
DPR_DATA_INT_CLEAR_AND_UNMASK;
173