falseIBAEDLISTEDatenInDatenlisten-DBDatenlisten-1.DWInDaten-SchnittstelleZeiger, wo Rein-Daten sindZeiger, FIFO-StelleDatenliste-Kennnung (DA)Datensatzlänge in Word (01 - F0) F0=128Lä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 !!!)FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)Speicherung des letzten Zugriffs / Schreibzeigerreserviert von Sort-DatenlisteAnzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!)ReserveDatenlisten-DBRückmeldung SFC-AufrufRückmeldung SFC-AufrufEnde der DatenlisteAdress-Register 2 zwischenspeichernLoopzählerIndaten-DB, falls angegebenIn-Daten-Pointer: Kennung, AdresseIn-Daten-Startpunkt: AdresseZeiger für IndDB1.Datenwort der Indaten1+2.Datenwort der Indaten (falls ind.Suchen mit Stammdaten 2)Zeiger für LeerzelleDatenblocklänge in BytesBei angegebenen Datensatz suchenRückmeldung SFC-AufrufIndizierung möglichIndizier-Zeiger angegebenSortliste wird durchsuchtRückmeldungStatt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Wandel-FCStandardDatenIn85STLcs-CZde-DECOPYRIGHT by Ingenieurbüro A.Emmert
Ortsstr.33, D-869925 Fuchstal (Germany)
Tel.: 0049(0)8243-1254
Version: P&O / 10.2024
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
en-USAR2 zwischenspeichernWord2#0000_0000_0000_0000kein Datenlisten-BereichSTLcs-CZde-DEen-UScs-CZde-DESchnittstellen-DB sinnvoll ?en-USWord16#1004Kennung 10 + Word=04Any-Kennung, DatentypWord16#000A10 Dw´s holenWiederholungenDB_NummerAdresseInt3DWord16#8400_0000Kennung: DatenKennung, Adresse1.-10.DW Datenliste holenVariantAnyP#L20.0 WORD 10Word2#0000_0000_0000_0000STLcs-CZde-DEQuelle-Pointer erzeugen:en-UScs-CZde-DEDatenlistekopf holenen-USDatenliste-KopfByte16#DB= Sort-Datenlistekennung ?Ja !Sortliste wird durchsuchtByte16#DA= Datenlistekennung ?Nein !kein DatenlistebereichInt1Datenblocklängekein DatenlistebereichInt128kein DatenlistebereichInt1Max.Anzahl von Datenblöckenkein DatenlistebereichInt1Anzahl der Stammdatenkein DatenlistebereichInt9kein DatenlistebereichAnzahl der StammdatenDatenblocklängekein DatenlistebereichLänge der DatenlisteDatenblocklängeInt2DB byteorientiertInt20Speichern ab 10.DWInt3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Datenlisten-DB ist zu kurz!kein Datenlisten-BereichWord16#DAEEDatenliste-Endekennung ?Nein !Word16#DBEESort-Datenliste-Endekennung ?Nein !kein Datenlisten-BereichDatenblocklängeInt2Datenblocklänge in BytesSTLcs-CZde-DEen-UScs-CZde-DEZeigerüberprüfungen-USIndaten-DBIndaten-DBInt0Angegeben ?Nein Word2#0000_0000_0000_0000Fehler vorhanden ?Ja !Undefinierte IndatenKennung, AdresseDWord16#00FF_FFFFOhne KennungInt3Ohne BitDatenblocklängeInt2DB byteorientiertIndaten-DB ist zu kurzUndefinierte IndatenKennung, AdresseIndaten-DBInt0Angegeben ?Nein Indaten überprüfen1.Indaten speichernSuchdaten überprüfen1.Suchdaten speichernIndaten-DBInt0Angegeben ?Nein Indaten überprüfenInt0Etwas angegeben ?Ja !WeiterARefP#2.0Undefinierte IndatenSTLcs-CZde-DEIn-DATEN-Pointer übernehmen:en-UScs-CZde-DEIndaten definiert ?en-USIndizierung möglichIndizier-Zeiger angegebenIndizierter DBInt0Angegeben ?Nein !Sortliste wird durchsuchtWord2#0000_0000_0000_0000kein Indizier-DB vorhandenLänge des Indizierten DB überschritten ?Int2DB byteorientiertIndizier-DB ist zu kurzZeiger ausserhalb Ind.DBStammdatenInt3zu viele Stammdaten ?Ja !ohne Indizierung weiterOffset zum AbziehenInt0Parameter vorhanden ?NeinBei diesem Schritt weiter Stammdaten (1.DW)übergebenStammdaten (2.DW)übergebenBeeinflussung der WeiterfahrtRückwert von FCStammdatenStelle, wo Zeiger hinterlegt istInt0negativZeiger = 0Länge des Indizierten DB überschritten ?Stelle, wo Zeiger hinterlegt istJa !Zeiger ausserhalb Ind.DBInt2DB byteorientiertInt3Pointer erzeugenPointer, wo Zeiger hinterlegt istIndizierter DBSchreibzeigerDatenliste DBIndizierung möglichIndizier-Zeiger angegebenSTLcs-CZde-DEen-UScs-CZde-DEIndiziert speichern ?en-USInt0nicht gespeichertZeiger LeerzelleSchreibzeigerInt0Angegeben ?Nein !Suche bei 1.Datensatz beginnenSchreibzeigerInt-20Zeiger 1.DatenDatenblocklänge in BytesErmittlung der wievielten Daten -1Int16Rest ermittelnInt0= 0 ?Schreibzeiger nicht im Raster !Suche bei 1.Datensatz beginnenInt0Bei angegebener Stelle suchenSuch bei X-ten DatensatzInt1Suche bei 1.Datensatz beginnenSuch bei X-ten DatensatzIndizier-Zeiger angegebenInt20Offset für 1.DatenSchreibzeigerSchreibzeigerInt3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Anzahl der StammdatenIndaten-DBInt0Angegeben ?Nein Indaten überprüfen mitDatenliste-Daten lesennicht identisch !Int3DINT#2Int3ARefP#2.0Word2#0000_0000_1100_0000Daten werden gespeichert + überschriebenOk-StatusDatensatz ist in Liste enthaltenInt0Suche bei 1.Datensatz begonnenSuch bei X-ten DatensatzNein !Zeiger LeerzelleInt0Gespeichert ?Ja !SchreibzeigerInt3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Daten lesenInt0Leerzelle ?Nein !Int3DINT#2Int3SchreibzeigerZeiger LeerzelleSuch bei X-ten DatensatzInt1Such bei X-ten DatensatzAnzahl aller Daten in DatenlisteAlle Datensätze sind durchsuchtNein !Int0Gefunden ?Zeiger LeerzelleNein !Datenliste ist vollSchreibzeigerWord2#0000_0000_1000_0000Daten werden gespeichert Ok-StatusDatenblocklänge in bytesSchreibzeigerSchreibzeigerSTLcs-CZde-DEen-UScs-CZde-DEKontrolle auf gleiche Stammdatenen-USWord16#1004Kennung 10 + Word=04Any-Kennung, DatentypDatenwords speichernWiederholungenDATEN-Pointer übernehmen:DB_NummerKennung, AdresseZiel-Pointer erzeugen:Kennung + Datenbytes s.o.DB_NummerAdresseInt3DWord16#8400_0000Kennung: DatenKennung, AdresseDatenliste-Daten speichernVariantWord2#0000_0000_0000_0000Sortliste wird durchsuchtInt12Int3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)SchreibzeigerSpeicherung letzter ZugriffOk-StatusWord2#0000_0000_1100_0000Daten werden gespeichert + überschrieben ?Ja !Indizierung möglich ((Dann nicht!)Kein Neueintrag !Int16Offset Anzahl EinträgeInt3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Anzahl der EinträgeInt1Einträge +1Anzahl der EinträgeSTLcs-CZde-DEQuelle-Pointer erzeugen:en-UScs-CZde-DEDaten in Datenliste schreibenen-USIndizierung möglichIndizier-Zeiger angegebenIndizierter DBSchreibzeigerDatenliste DBSTLcs-CZde-DEen-UScs-CZde-DEIndizierung ok ?en-USVKE = 1 ohne Fehler !!!Ok-StatusWord2#0000_0000_0000_0001Kein DatenlistebereichWord2#0000_0000_0000_0010SFC20-Aufruf mit FehlerWord2#0000_0000_0000_0100Datenliste ist vollWord2#0000_0000_0001_0000Undefinierte IndatenVKE = 0 bei Fehler !!!VKE in BIE-Bit speichern AR2 zurückspeichernSTLcs-CZde-DEen-UScs-CZde-DEFehlerausgabe / RET_VALen-USSTLcs-CZde-DEen-UScs-CZde-DEAusgangsvariablen schreibenen-UScs-CZde-DEDatenlisten-Modulen-US