Baumer GK473 Benutzerhandbuch
Seite 27

Handbuch_GK473_S7_Profibus_DE.doc 27/32
Baumer IVO GmbH & Co. KG
04.05.11
Villingen-Schwenningen,
Germany
Um jetzt die Ziffer 4 zu erhalten, muss man die Bits um 4 Stellen nach rechts verschieben, damit die 5
herausfällt. Die nachrückenden Bits werden mit Nullen gefüllt.
0 4
000
0
010
0
Um die Ziffer 5 zu erhalten werden die ersten 4 Bits ausmaskiert. Dies geschieht mit einer UND-
Verknüpfung. 1111 wird in den Akku geladen und mit 0100 0101 UND verknüpft.
010
0
010
1
UND-
Verknüpft mit
000
0
111
1
Ergebnis 000
0
010
1
Auf beide Ziffern wird jetzt noch der ASCII Versatz addiert und man erhält 0x34 und 0x35, die in den
DB geschrieben werden.
5.6 FC 10 – Istwert lesen
Die Funktion Istwert lesen liest den Istwert einer adressierten SPA. Als Übergabeparameter für die
Funktion ist nur die SPA Adresse im Integerformat anzugeben (1,2,3,...99). Die Funktion selbst
konvertiert die Adresse in das vom Gateway benötigte Format. Als Rückgabewert liefert die Funktion
den aktuellen Istwert der SPA im Realformat. Weiterhin gibt die Funktion ein Busybit, ein Timeoutbit
und ein Fehlerbit aus.
Funktionsaufruf:
CALL FC 10
Spa_Adr:
INT;
Time_Out:
BOOL;
Fehler:
BOOL;
Busy:
BOOL;
Istwert_Real: REAL;
Zuerst ruft die Funktion die SFC14 auf, um das aktuelle Zählbyte einzulesen und im MW1
abzuspeichern. Danach wird der an das Gateway zu sendende Befehl konstruiert, dazu wird das MW1
inkrementiert und die SPA-Adresse ins ASCII konvertiert. MW1, SPA-Adresse und Befehlsbyte werden
dann auf den DB96 geschrieben, der zusätzlich noch mit nachstehenden Nullen gefüllt wird.
Über die SFC15 wird der Befehl an das Gateway gesendet und anschließend ein Timer gestartet.
Ebenso wird das Busybit gesetzt, damit bei einem erneutem Aufrufen der Funktion der Befehl an das
Gateway nicht wieder gesendet wird, sondern nur noch die Einleseroutine der Funktion abgearbeitet
wird.
Vor dem Einlesen wird gleich abgefragt, ob der Timer abgelaufen ist, wenn dies der Fall ist, springt das
Programm direkt zum Label / zur Einsprungmarke Timeout, wo das Timeoutbit gesetzt und das Busybit
zurückgesetzt wird.
Bei nicht abgelaufenem Timer erfolgt das Einlesen wiederum über die SFC14. Zur Erkennung, ob
neue Daten vorliegen, werden die Zählerbytes verglichen. Das „alte“ Zählerbyte wurde vor dem
Senden des Befehls in den DB99 gespeichert und mit dem neuen im DB95 vorliegendem Zählerbyte
verglichen. Bei unterschiedlichen Zählerbytes hat das Gateway von der SPA die Antwort erhalten und
die Funktion setzt das Busybit wieder zurück.
Die neuen Daten werden mit Hilfe der FC1 aufbereitet, die aus dem DB95 den im ASCII-Format
vorliegenden Istwert in eine Gleitkommazahl wandelt und der FC10 wieder zurückgibt. Das Busyflag
wird wieder zurückgesetzt und abgefragt, ob die Systemfunktionen SFC14 und SFC 15 Fehler
gemeldet haben, was im Fehlerbit vermerkt wird.