false
IBAE
DLISTE
DatenIn
Datenlisten-DB
Datenlisten-1.DW
InDaten-Schnittstelle
Zeiger, wo Rein-Daten sind
Zeiger, FIFO-Stelle
Datenliste-Kennnung (DA)
Datensatzlänge in Word (01 - F0) F0=128
Länge der Datenliste (maximale Anzahl der Datensätze)
Stammdatenlänge in Word (1 - 9)
Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!)
Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
Speicherung des letzten Zugriffs / Schreibzeiger
reserviert von Sort-Datenliste
Reserve
Reserve
Datenlisten-DB
Rückmeldung SFC-Aufruf
Rückmeldung SFC-Aufruf
Ende der Datenliste
Adress-Register 2 zwischenspeichern
Loopzähler
Indaten-DB, falls angegeben
In-Daten-Pointer: Kennung, Adresse
In-Daten-Startpunkt: Adresse
Zeiger für IndDB
1.Datenwort der Indaten
Zeiger für Leerzelle
Datenblocklänge in Bytes
Bei angegebenen Datensatz suchen
Rückmeldung SFC-Aufruf
Indizierung möglich
Indizier-Zeiger angegeben
Sortliste wird durchsucht
Rückmeldung
Standard
DatenIn
85
STL
de-DE
COPYRIGHT by Ingenieurbüro A.Emmert
Ortsstr.33, D-869925 Fuchstal (Germany)
Tel.: 0049(0)8243-1254
Version: ILS2100 / 06.11.2009
Datenblock in Datenliste eintragen
SSDB: Datenlisten-DB
SSDW: Datenlisten-1.DW
INDATEN: Pointer, wo einzutragende Daten stehen (P#DB1.DBX0.0, P#M220.0)
RE_VAL: Rückmeldungen:
Bit0: Kein Datenlistenbereich / falscher Kopfinhalt / Endekennung
Bit1: SFC20-Aufruf mit Fehler
Bit2: Liste ist voll
Bit3: Frei
Bit4: Undefinierte Indaten
Bit5: Frei
Bit6: Daten wurden überschrieben
Bit7: Eintrag ist richtig erfolgt
AR2 zwischenspeichern
CALL TEST_DB
DB_NUMBER :=#DBDatenliste
RET_VAL :=#SFC_RET_VAL
DB_LENGTH :=#SFC_DB_LENGTH
WRITE_PROT :=#SFC_WRITE_PROT
Word
2#0000_0000_0000_0000
kein Datenlisten-Bereich
STL
de-DE
de-DE
Schnittstellen-DB sinnvoll ?
Word
16#1004
Kennung 10 + Word=04
Any-Kennung, Datentyp
Word
16#000A
10 Dw´s holen
Wiederholungen
DB_Nummer
Adresse
Int
3
DWord
16#8400_0000
Kennung: Daten
Kennung, Adresse
1.-10.DW Datenliste holen
Variant
Any
P#L20.0 WORD 10
Word
2#0000_0000_0000_0000
STL
de-DE
Quelle-Pointer erzeugen:
de-DE
Datenlistekopf holen
Datenliste-Kopf
Byte
16#DB
= Sort-Datenlistekennung ?
Ja !
Sortliste wird durchsucht
Byte
16#DA
= Datenlistekennung ?
Nein !
kein Datenlistebereich
Int
1
Datenblocklänge
kein Datenlistebereich
Int
128
kein Datenlistebereich
Int
1
Max.Anzahl von Datenblöcken
kein Datenlistebereich
Int
1
Anzahl der Stammdaten
kein Datenlistebereich
Int
9
kein Datenlistebereich
Anzahl der Stammdaten
Datenblocklänge
kein Datenlistebereich
Länge der Datenliste
Datenblocklänge
Int
2
DB byteorientiert
Int
20
Speichern ab 10.DW
Int
3
Pointer erzeugen
Datenlisten-DB ist zu kurz!
kein Datenlisten-Bereich
Word
16#DAEE
Datenliste-Endekennung ?
Nein !
Word
16#DBEE
Sort-Datenliste-Endekennung ?
Nein !
kein Datenlisten-Bereich
Datenblocklänge
Int
2
Datenblocklänge in Bytes
STL
de-DE
de-DE
Zeigerüberprüfung
Indaten-DB
Indaten-DB
Int
0
Angegeben ?
Nein
CALL TEST_DB
DB_NUMBER :=#DBInDaten
RET_VAL :=#SFC_RET_VAL
DB_LENGTH :=#SFC_DB_LENGTH
WRITE_PROT :=#SFC_WRITE_PROT
Word
2#0000_0000_0000_0000
Fehler vorhanden ?
Ja !
Undefinierte Indaten
Kennung, Adresse
DWord
16#00FF_FFFF
Ohne Kennung
Int
3
Ohne Bit
Datenblocklänge
Int
2
DB byteorientiert
Indaten-DB ist zu kurz
Undefinierte Indaten
Kennung, Adresse
Indaten-DB
Int
0
Angegeben ?
Nein
Indaten überprüfen
1.Indaten speichern
Indaten-DB
Int
0
Angegeben ?
Nein
Indaten überprüfen
Int
0
Etwas angegeben ?
Ja !
Weiter
ARef
P#2.0
Undefinierte Indaten
STL
de-DE
In-DATEN-Pointer übernehmen:
de-DE
Indaten definiert ?
Indizierung möglich
Indizier-Zeiger angegeben
Indizierter DB
Int
0
Angegeben ?
Nein !
Sortliste wird durchsucht
CALL TEST_DB
DB_NUMBER :=#IndDB
RET_VAL :=#SFC_RET_VAL
DB_LENGTH :=#SFC_DB_LENGTH
WRITE_PROT :=#SFC_WRITE_PROT
Word
2#0000_0000_0000_0000
kein Indizier-DB vorhanden
Länge des Indizierten DB überschritten ?
Int
2
DB byteorientiert
Indizier-DB ist zu kurz
Zeiger ausserhalb Ind.DB
Stammdaten
Int
1
1 mal Stammdaten ?
Nein !
ohne Indizierung weiter
Stammdaten
Offset zum Abziehen
Int
-1
1 ab DW0 speichern !
Stelle, wo Zeiger hinterlegt ist
Int
0
negativ
Zeiger = 0
Länge des Indizierten DB überschritten ?
Stelle, wo Zeiger hinterlegt ist
Ja !
Zeiger ausserhalb Ind.DB
Int
2
DB byteorientiert
Int
3
Pointer erzeugen
Pointer, wo Zeiger hinterlegt ist
Indizierter DB
Schreibzeiger
Datenliste DB
Indizierung möglich
Indizier-Zeiger angegeben
STL
de-DE
de-DE
Indiziert speichern ?
Int
0
nicht gespeichert
Zeiger Leerzelle
Schreibzeiger
Int
0
Angegeben ?
Nein !
Suche bei 1.Datensatz beginnen
Schreibzeiger
Int
-20
Zeiger 1.Daten
Datenblocklänge in Bytes
Ermittlung der wievielten Daten -1
Int
16
Rest ermitteln
Int
0
= 0 ?
Schreibzeiger nicht im Raster !
Suche bei 1.Datensatz beginnen
Int
0
Bei angegebener Stelle suchen
Such bei X-ten Datensatz
Int
1
Suche bei 1.Datensatz beginnen
Such bei X-ten Datensatz
Indizier-Zeiger angegeben
Int
20
Offset für 1.Daten
Schreibzeiger
Schreibzeiger
Int
3
Pointer erzeugen
Anzahl der Stammdaten
Indaten-DB
Int
0
Angegeben ?
Nein
Indaten überprüfen mit
Datenliste-Daten lesen
nicht identisch !
ARef
P#2.0
ARef
P#2.0
Word
2#0000_0000_1100_0000
Daten werden gespeichert + überschrieben
Ok-Status
Datensatz ist in Liste enthalten
Int
0
Suche bei 1.Datensatz begonnen
Such bei X-ten Datensatz
Nein !
Zeiger Leerzelle
Int
0
Gespeichert ?
Ja !
Schreibzeiger
Int
3
Pointer erzeugen
Daten lesen
Int
0
Leerzelle ?
Nein !
ARef
P#2.0
Schreibzeiger
Zeiger Leerzelle
Such bei X-ten Datensatz
Int
1
Such bei X-ten Datensatz
Anzahl aller Daten in Datenliste
Alle Datensätze sind durchsucht
Nein !
Int
0
Gefunden ?
Zeiger Leerzelle
Nein !
Datenliste ist voll
Schreibzeiger
Word
2#0000_0000_1000_0000
Daten werden gespeichert
Ok-Status
Datenblocklänge in bytes
Schreibzeiger
Schreibzeiger
STL
de-DE
de-DE
Kontrolle auf gleiche Stammdaten
Word
16#1004
Kennung 10 + Word=04
Any-Kennung, Datentyp
Datenwords speichern
Wiederholungen
DATEN-Pointer übernehmen:
DB_Nummer
Kennung, Adresse
Ziel-Pointer erzeugen:
Kennung + Datenbytes s.o.
DB_Nummer
Adresse
Int
3
DWord
16#8400_0000
Kennung: Daten
Kennung, Adresse
Datenliste-Daten speichern
Variant
Word
2#0000_0000_0000_0000
Sortliste wird durchsucht
Int
12
Int
3
Pointer erzeugen
Schreibzeiger
Speicherung letzter Zugriff
STL
de-DE
Quelle-Pointer erzeugen:
de-DE
Daten in Datenliste schreiben
Indizierung möglich
Indizier-Zeiger angegeben
Indizierter DB
Schreibzeiger
Datenliste DB
STL
de-DE
de-DE
Indizierung ok ?
VKE = 1 ohne Fehler !!!
Ok-Status
Word
2#0000_0000_0000_0001
Kein Datenlistebereich
Word
2#0000_0000_0000_0010
SFC20-Aufruf mit Fehler
Word
2#0000_0000_0000_0100
Datenliste ist voll
Word
2#0000_0000_0001_0000
Undefinierte Indaten
VKE = 0 bei Fehler !!!
VKE in BIE-Bit speichern
AR2 zurückspeichern
STL
de-DE
de-DE
Fehlerausgabe / RET_VAL
STL
de-DE
de-DE
Ausgangsvariablen schreiben
de-DE
Datenlisten-Modul