false IBAE DLISTE DatenIn
Datenlisten-DB Datenlisten-1.DW Aufrufparameter (Auftrag / Anzahl Zusatzdaten) Such-Daten-Schnittstelle
Rückmeldung OutDaten-Schnittstelle Daten stehen an angegebener Position in Datenbank
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 / Suchzeiger reserviert von Sort-Datenliste Reserve Reserve 1.Aufrufparameter 2.Aufrufparameter Datenlisten-DB Stammdaten beginnen ab hier Rückmeldung SFC-Aufruf Rückmeldung SFC-Aufruf Ende der Datenliste Adress-Register 2 zwischenspeichern Loopzähler Such-Daten-DB, falls angegeben Such-Daten-Pointer: Kennung, Adresse Such-Daten-Startpunkt: Adresse Out-Daten-DB, falls angegeben Out-Daten-Pointer: Kennung, Adresse Out-Daten-Startpunkt: Adresse Zeiger für IndDB 1.Datenwort der Indaten Datenblocklänge in Bytes Bei angegebenen Datensatz suchen Rückmeldung SFC-Aufruf Indizierung möglich Indizier-Zeiger angegeben Weitersuchen ist aktiv Offsetsuchen ist aktiv Sortliste wird durchsucht Rückmeldung
Standard DatenOut 86 STL de-DE FCOPYRIGHT by Ingenieurbüro A.Emmert Ortsstr.33, D-869925 Fuchstal (Germany) Tel.: 0049(0)8243-1254 Version: ILS2100 / 06.11.2009 Datenblock in Datenliste suchen / löschen SSDB: Datenlisten-DB SSDW: Datenlisten-1.DW SEARCHDATEN: Pointer, wo einzutragende Daten stehen (P#DB1.DBX0.0, P#M220.0) AUFTRAG: XXYY XX: 00 = angegebenen Datensatz suchen 02 - 80 = Stammdaten beginnen ab angegebenen Datenwort E1 = angegebenen Datensatz suchen + austragen! F1 = 1.Datensatz lesen FF = nächsten vorhandenen Eintrag lesen (ab letzten Zugriff) YY: 01 - 09 = Anzahl der Stammdaten (falls abweichend vom Datenlistenkopf!) OUTDATEN: Pointer, wohin ausgelesene Daten übergeben werden (P#DB1.DBX0.0, P#M220.0) RE_VAL: Rückmeldungen: Bit0: Kein Datenlistenbereich / falscher Kopfinhalt / Endekennung Bit1: SFC20-Aufruf mit Fehler Bit2: Listenende ist erreicht Bit3: Falscher Parameter bei Aufruf Bit4: Undefinierte Stammdaten Bit5: Undefinierte OUT-Daten Bit6: Datensatz ist nicht vorhanden Bit7: Datensatz ist vorhanden 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 schreibgeschützt 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 ! Int 1 Datenblocklänge Int 128 Int 1 Max.Anzahl von Datenblöcken Int 1 Anzahl der Stammdaten Int 9 Anzahl der Stammdaten Datenblocklänge 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! Word 16#DAEE Datenliste-Endekennung ? Nein ! Word 16#DBEE Sort-Datenliste-Endekennung ? Nein ! Datenblocklänge Int 2 Datenblocklänge in Bytes STL de-DE de-DE Zeigerüberprüfung Indizierung möglich Indizier-Zeiger angegeben Weitersuchen ist aktiv Offsetsuchen ist aktiv Int 0 Vorerst kein Offset
Aufrufparameter zwischenspeichern Byte 16#00 XX = 00 ? Ja! Byte 16#E1 XX = E1 ? Ja! Sortliste wird durchsucht Byte 16#E1 XX = E1 ? Ja! Byte 16#F1 XX = F1 ? Nein ! Byte 16#00 Sortliste wird durchsucht Int 20 Byte 16#FF XX = FF ? Nein ! Byte 16#00 Sortliste wird durchsucht Alter Suchzeiger Datenblocklänge in bytes Nächsten Datensatz suchen Neuer Suchzeiger Datenblocklänge in bytes Alle möglichen Einträge Gesamtlänge Startpunkt Int 20 Offset 1.Daten Schreibzeiger Noch nicht am Ende ! Byte 16#02 XX < 02 ? Ja! Byte 16#80 XX > 80 ? Ja! XX > Datensatzlänge Ja! Int -1 Angegebener Offset -1 Int 2 DB byteorientiert Richtiger Offset der 1.Stammdaten Int 0 Suche ab Anfang Byte 16#00 =0 ? 2.Aufrufparameter Ja ! Anzahl der Stammdaten Datenblocklänge Int 1 Anzahl der Stammdaten Int 9 Offset Int -1 Letzte Stammdaten zu groß ? Ja! STL de-DE de-DE Auftrag kontrollieren Int 0 Suchzeiger Suchdaten-DB Kennung, Adresse Suchdaten-DB Int 0 Angegeben ? Nein CALL TEST_DB DB_NUMBER :=#DBSuchDaten RET_VAL :=#SFC_RET_VAL DB_LENGTH :=#SFC_DB_LENGTH WRITE_PROT :=#SFC_WRITE_PROT Word 2#0000_0000_0000_0000 Fehler vorhanden ? Ja ! Kennung, Adresse DWord 16#00FF_FFFF Ohne Kennung Int 3 Ohne Bit Datenblocklänge Int 2 DB byteorientiert Suchdaten-DB ist zu kurz Suchdaten-DB Int 0 Angegeben ? Nein Suchdaten überprüfen 1.Suchdaten speichern Suchdaten-DB Int 0 Angegeben ? Nein Suchdaten überprüfen Int 0 Etwas angegeben ? Ja ! ARef P#2.0 STL de-DE Such-DATEN-Pointer übernehmen: de-DE Suchdaten definiert ? Indizierter DB Int 0 =0 ? Kein indizierter DB ! 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 Länge des Indizierten DB überschritten ? Int 2 DB byteorientiert Indizier-DB ist zu kurz Stammdaten Int 1 1 mal Stammdaten ? Nein ! Stammdaten Offset zum Abziehen Int -1 1 ab DW0 speichern ! Stelle, wo Zeiger hinterlegt ist Int 0 negativ Länge des Indizierten DB überschritten ? Stelle, wo Zeiger hinterlegt ist Ja ! Int 2 DB byteorientiert Int 3 Pointer erzeugen Pointer, wo Zeiger hinterlegt ist Indizierter DB Suchzeiger Datenliste DB Indizierung möglich Indizier-Zeiger angegeben STL de-DE de-DE Indiziert suchen ? Suchzeiger Int 0 Angegeben ? Nein ! Suchzeiger Int -20 Zeiger 1.Daten Datenblocklänge in Bytes Ermittlung der wievielten Daten -1 Int 16 Rest ermitteln Int 0 = 0 ? Suchzeiger nicht im Raster ! 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 Suchzeiger Suchzeiger Richtiger Offset der 1.Stammdaten Int 3 Pointer erzeugen Anzahl der Stammdaten Suchdaten-DB Int 0 Angegeben ? Nein Suchdaten überprüfen mit Datenliste-Daten lesen nicht identisch ! ARef P#2.0 ARef P#2.0 Word 2#0000_0000_1000_0000 Daten sind vorhanden Ok-Status Int 0 Suche bei 1.Datensatz begonnen Such bei X-ten Datensatz Nein ! Such bei X-ten Datensatz Int 1 Such bei X-ten Datensatz Anzahl aller Daten in Datenliste Alle Datensätze sind durchsucht Datenblocklänge in bytes Suchzeiger Suchzeiger STL de-DE de-DE Kontrolle auf gleiche Stammdaten Outdaten-DB Kennung, Adresse Outdaten-DB Int 0 Angegeben ? Nein CALL TEST_DB DB_NUMBER :=#DBOutDaten RET_VAL :=#SFC_RET_VAL DB_LENGTH :=#SFC_DB_LENGTH WRITE_PROT :=#SFC_WRITE_PROT Word 2#0000_0000_0000_0000 Fehler vorhanden ? Ja ! Kennung, Adresse DWord 16#00FF_FFFF Ohne Kennung Int 3 Ohne Bit Outdaten-DB ist zu kurz STL de-DE Out-DATEN-Pointer übernehmen: de-DE Outdaten ok ? Word 16#1004 Kennung 10 + Word=04
Any-Kennung, Datentyp Datenwords speichern
Wiederholungen DATEN-Pointer übernehmen:
DB_Nummer Adresse Int 3 DWord 16#8400_0000 Kennung: Daten
Kennung, Adresse Ziel-Pointer erzeugen: Kennung + Datenbytes s.o.
DB_Nummer
Kennung, Adresse Datenliste-Daten speichern Variant Word 2#0000_0000_0000_0000 Int 12 im 12.DW speichern Int 3 Pointer erzeugen Suchzeiger Speicherung letzter Zugriff Suchzeiger Int -20 Offeset 1.DS Datenblocklänge in Bytes Int 1 Position errechnen Daten stehen an angegebener Position in Datenbank STL de-DE Quelle-Pointer erzeugen: de-DE Daten aus Datenliste lesen (in OUTDaten übergeben) Byte 16#E1 Daten löschen ? 1.Aufrufparameter Nein ! Suchzeiger Int 3 Pointer erzeugen Int 0 ARef P#2.0 Int 12 Int 3 Pointer erzeugen Int 0 Löschen Suchzeiger Speicherung letzter Zugriff Indizier-Zeiger angegeben STL de-DE de-DE Daten aus Datenliste löschen ? Outdaten-DB Int 0 Angegeben ? Nein Outdaten überprüfen Int 0 Etwas angegeben ? Ja ! ARef P#2.0 Word 2#0000_0000_0100_0000 Daten sind nicht vorhanden Ok-Status Word 2#0000_0000_1000_0000 Daten sind vorhanden Ok-Status STL de-DE de-DE Weitersuchen aktiv ? Datensatz vorhanden oder 0 ? Indizierung möglich Indizier-Zeiger angegeben Indizierter DB Suchzeiger 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 Listenende ist erreicht Word 2#0000_0000_0000_1000 Falscher Parameter bei Aufruf Word 2#0000_0000_0001_0000 Undefinierte Suchdaten Word 2#0000_0000_0010_0000 Undefinierte OUTDaten Word 2#0000_0000_0100_0000 Datensatz nicht vorhanden 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 de-DE Datenlisten-Modul