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 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 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 ! Kennung, Adresse DWord 16#00FF_FFFF Ohne Kennung Int 3 Ohne Bit Datenblocklänge Int 2 DB byteorientiert Indaten-DB ist zu kurz 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 ! ARef P#2.0 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 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 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 ! 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 ! 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 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 Int 0 Gefunden ? Zeiger Leerzelle Nein ! 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