Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Durchsuchen eines DB’s

  1. #1
    Registriert seit
    08.12.2008
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ein DB mit verschiedensten Datentypen soll durchsucht werden.
    Die Suchkriterien sollten dabei sein:
    a)Datentype: BYTE
    b)Wert (z.B. 0010)
    Wie kann das in einer Funktion realisiert werden?
    Zitieren Zitieren Durchsuchen eines DB’s  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    mit einer auswertung des datentyps mit hilfe eines ANY zeigers, danach ist nur noch ein vergleich auf w#16#2 nötig ...

    das problem ist wohl die länge des DBs und der einzelnen speicherbereiche ... das sinnvoll zu implementieren bedarf einiges an hirnschmalz ...

    gibt es denn einen grundsätzlichen aufbau, der DBs oder sind die einfach nur wild durcheinander gewürfelt...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Rich ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.12.2008
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    das Problem besteht meiner Meinung darin den Datentype zu erkennen.
    Oder funktioniert einfach in dem der ANY Zeiger die Datentypecodierung 02 (für BYTE) bekommt?
    Ansonsten ist der DB etwas wild aufgebaut, zuerst ein paar BOOL’s, dann ein Paar REAL’s um anschließend verschiedene UDT Strukturen an zu hängen.

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    den datentyp bekommst du mit dem ANY ... das wird ne ziemlich verschachtelte sache, weil du jedes element, dass du prüfen willst, irgendwie zur überprüfung übergeben mußt ... eieiei ...

    ... das wird doch so alles nichts, also ich will dir jetzt nicht den wind aus den segeln nehmen, was denkbar ist, ist meist auch machbar ...

    ich hatte die ANY-auswertung bisher immer nur für eine feststehende variable gemacht ... deins muß dynamisch sein, also die einzelnen bereiche deines DBs durchlaufen ... schleife? aber wie adressieren? hmmm ... kannst du SCL einsetzen? ANY und SCL ist zwar etwas komplizierter als in AWL aber du könntest einen indizierten zugriff bauen ...

    oh man ... ihr immer mit euren sonderwünschen

    sind die DBs wirklich so unterschiedlich aufgebaut?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Hallo,
    ich kann mir nicht vorstellen, dass da etwas sinnvolles dabei herauskommt.
    Der Any kann zwar den Datentyp usw. übergeben, aber auch nur. wenn man es ihm vorher mitgeteilt hat.
    Beui der "freien Adressierung" einer Speicherstelle in einem DB wird man dieses ja immer über BYTE, WORD oder DWORD tun und auf diesem Weg nichts sinnvolles zurückbekommen. Ich denke hier auch (und im speziellen) an die entsprechenden (nicht-)Fähigkeiten von SCL (an gleicher Stelle).

    Gruß
    LL

  6. #6
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Bei der "freien Adressierung" einer Speicherstelle in einem DB wird man dieses ja immer über BYTE, WORD oder DWORD tun und auf diesem Weg nichts sinnvolles zurückbekommen
    das selbe problem hat man auch in allen anderen speicherbereichen ... also volle kraft zurück und in larrys kanon eingestimmt: das wird wohl nichts, auch wenn mir da ein paar hochsprachenkonstrukte vorschweben, aber dafür sollteste dir vielleicht die S7-mEC RTX besorgen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #7
    Rich ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.12.2008
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo…

    So wie ich das sehe habe ich zwei Möglichkeiten.

    Die Einfache: Schreibe alle relevanten Daten in einen separaten DB der ein ARRY vom Type BYTE hat um anschließend einen Wert zu suchen.
    Nachteil: Ich habe einen weiteren DB und löse mich von einer „Philosophie der Typicals“.
    Vorteil: Der Code wurde bereits von Dir in einem anderen Beitrag beschrieben.

    Die Aufwendige: Der DB wird Adresse für Adresse nach dem projektierten Datentype gefragt um bei einer Übereinstimmung mit dem Suchkriterium (BYTE) den Wert zu vergleichen (z.B.0100). Dabei würde ich die Adresse in der Schleife laufen lassen.
    Nachteil: Ich habe nicht den Hauch einer Ahnung wie eine Adresse eines DB’s angesprochen wird um einen Datentypvergleich durch zu führen!

  8. #8
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo Rich,

    Zitat Zitat von Rich Beitrag anzeigen
    Der DB wird Adresse für Adresse nach dem projektierten Datentype gefragt
    ich denke, Du wirst keine Change haben den Datentyp abzufragen, denn die Formate etc.
    werden im Ladespeicher der CPU abgelegt. Soweit ich weiß kann man auf den Ladespeicher
    vom Programm aus nicht zugreifen.

    Grüße
    Gebs

  9. #9
    Registriert seit
    16.12.2008
    Ort
    Fürth
    Beiträge
    146
    Danke
    32
    Erhielt 21 Danke für 19 Beiträge

    Standard

    wie wäre es wenn du dir einfach ne nen FB schreibst an dem du angeben kannst welcher DB durchsucht werden soll, wieviele bytes er absuchen soll und nach welchem Wert er suchen soll.

    Im FB öffnest du den angegebenen DB und inizialisierst eine Schleife die so oft läuft wie du bytes absuchen möchtest. Zusätzlich lädst du den pointer P#0.0 in eine Zeigervariable.

    In der Schleife vergleichst du lediglich den Wert mit dem DBB [#Zeiger] und addierst den pointer P#1.0 in jeder schleife zu #Zeiger.

    Bin aber noch neu xD

    Meinungen erwünscht

  10. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Na - ja ...
    auf diese Weise kannst du einen DB scannen - es geht aber darum, herauszufinden welchen Typs der Eintrag im DB ist - als INT , REAL , DINT usw.
    Das erfährst du auf diese Weise nicht ...

    Gruß
    LL

Ähnliche Themen

  1. Bausteine durchsuchen
    Von Dr.Plato im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 17.06.2011, 01:44
  2. DB aus FB herraus durchsuchen
    Von Gerri im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 02.12.2009, 10:43
  3. Antworten: 6
    Letzter Beitrag: 12.08.2009, 17:26
  4. DB durchsuchen, FB vereinfachen
    Von martinmd2 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 11.02.2009, 13:34
  5. DB durchsuchen
    Von puehri im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 05.12.2005, 14:46

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •