false IBAE DLISTE DatenIn
Datenlisten-DB Datenlisten-1.DW InDaten-Schnittstelle
Rückmeldung
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) reserviert von Datenliste reserviert von Datenliste reserviert von Datenliste reserviert von Datenliste Anzahl der eingetragenen Datensätze 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 Einzusortierende Daten (DWord) Datenblocklänge in Bytes Rückmeldung SFC-Aufruf An dieser Stelle Datensatz lesen Minimal sinnvolle Lesestelle Maximal sinnvolle Lesestelle An dieser Stelle wird In-Datensatz gespeichert In Tabelle gelesenen Daten Freiraum schaffen: Stelle zum Daten holen Freiraum schaffen: Stelle zum Daten schreiben Freiraum schaffen: Zeiger zum Daten holen Freiraum schaffen: Zeiger zum Daten schreiben Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
Standard DatenInSort 88 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 einsortieren (aufsteigend) 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: Gespeicherte Daten <= 0 (Inhalt ungültig) Bit6: Frei 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 = 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 /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Datenlisten-DB ist zu kurz! Word 16#DBEE Datenliste-Endekennung ? Nein ! Datenblocklänge Int 2 Datenblocklänge in Bytes Anzahl der eingetragenen Datensätze Max.Anzahl von Datenblöcken Nein ! STL de-DE de-DE Zeigerüberprüfung In-DATEN-Pointer übernehmen: 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 de-DE Indaten definiert ? Int 1 Minimal sinnvolle Lesestelle Anzahl der eingetragenen Datensätze Maximal sinnvolle Lesestelle Sonderfall: noch kein Eintrag: Int 0 Eintrag schon vorhanden ? Ja ! Int 1 An 1.Stelle speichern Adresse STL de-DE de-DE Minimale + maximale Lesestelle am Anfang Maximal sinnvolle Lesestelle Int 1 Minimal sinnvolle Lesestelle Int 2 Minimal sinnvolle Lesestelle An dieser Stelle Datensatz lesen STL de-DE de-DE Aktuelle Lesestelle errechnen An dieser Stelle Datensatz lesen Int -1 Datenblocklänge in Bytes Int 20 Offset für 1.Daten Int 3 /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Datenliste-Daten lesen In Tabelle gelesenen Daten DInt 0 Nichts gespeicher oder negativ ? Ja ! STL de-DE de-DE Daten an Lesestelle auslesen Maximal sinnvolle Lesestelle Minimal sinnvolle Lesestelle Int 0 Suche fertig ? Ja ! STL de-DE de-DE Suche fertig ? Einzusortierende Daten In Tabelle gelesenen Daten Sort > Tabelle Einzusortierende Daten Tabelle > Sort An dieser Stelle Datensatz lesen An dieser Stelle wird In-Datensatz gespeichert An dieser Stelle Datensatz lesen Int 1 Minimal sinnvolle Lesestelle Maximal sinnvolle Lesestelle Suche ist fertig An dieser Stelle Datensatz lesen Int -1 Maximal sinnvolle Lesestelle Minimal sinnvolle Lesestelle Suche ist fertig STL de-DE de-DE Gelesene Daten auswerten Einzusortierende Daten In Tabelle gelesenen Daten Sort > Tabelle An dieser Stelle Datensatz lesen An dieser Stelle wird In-Datensatz gespeichert An dieser Stelle Datensatz lesen Int 1 An dieser Stelle wird In-Datensatz gespeichert STL de-DE de-DE Speicherstelle ermitteln An dieser Stelle wird In-Datensatz gespeichert Anzahl der eingetragenen Datensätze Eintrag ans Ende ! Anzahl der eingetragenen Datensätze Datenblocklänge in Bytes Int 20 Offset für 1.Daten Int -2 Letzte Daten letzter Eintrag Freiraum schaffen: Stelle zum Daten holen Freiraum schaffen: Stelle zum Daten holen Datenblocklänge in Bytes Freiraum schaffen: Zeiger zum Daten schreiben Anzahl der eingetragenen Datensätze An dieser Stelle wird In-Datensatz gespeichert Int 1 Datenblocklänge in Bytes Int 2 da DW-Zugriff (2Byte) Freiraum schaffen: Stelle zum Daten holen Int 3 Freiraum schaffen: Zeiger zum Daten holen Freiraum schaffen: Zeiger zum Daten schreiben Int 3 Freiraum schaffen: Zeiger zum Daten schreiben Datenliste-Daten lesen Datenliste-Daten verschieben Int -2 2 Byte wegen DW-Zugriff Freiraum schaffen: Stelle zum Daten holen Int -2 2 Byte wegen DW-Zugriff Freiraum schaffen: Zeiger zum Daten schreiben STL de-DE de-DE Freiraum für Speicherung schaffen Quelle-Pointer erzeugen: 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 -1 Datenblocklänge in Bytes Int 20 Offset für 1.Daten Int 3 DWord 16#8400_0000 Kennung: Daten
Kennung, Adresse Datenliste-Daten speichern Variant Word 2#0000_0000_0000_0000 Int 14 Anzahl der Einträge Int 3 /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Anzahl der Einträge Int 1 Einträge +1 Anzahl der Einträge STL de-DE de-DE Daten in Datenliste schreiben VKE = 1 ohne Fehler !!! Word 2#0000_0000_1000_0000 Daten wurden gespeichert 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 Word 2#0000_0000_0010_0000 Gespeicherte Daten <= 0 (Inhalt ungültig) VKE = 0 bei Fehler !!! VKE in BIE-Bit speichern AR2 zurückspeichern STL de-DE de-DE Fehlerausgabe / RET_VAL de-DE Datensort-Modul