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

Ergebnis 1 bis 9 von 9

Thema: Daten aus DB auslesen

  1. #1
    Registriert seit
    11.11.2007
    Beiträge
    91
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Ich habe Probleme mit folgendem (TrySim)-Programm.
    Code:
    AUF DB1
    L DBLG
    T MW10
    L 2
    /I
    next: T MW10
    L MW10
    L 2
    *I
    L 2
    -I
    T MD100
    L DBW[MD100]
    L EW10
    ==I
    SPB fert
    L MW10
    LOOP next
    fert: L MW10
    T MW0
    Es soll im DB1 (besteht aus beliebig vielen INT-Einträgen) eine Zahl suchen (diese wird in EW10 vorgegeben). Danach soll die Zeile in der sich die Zahl befindet im MW0 ausgegeben werden.

    Mit dem Step-Into-Modus von TrySim kann man super beobachten dass die Schleife einwandfrei durchläuft. Doch irgendwie wird nichts aus dem DB ausgelesen, obwohl dort Werte gespeichert sind. Nach dem Befehl L DBW[MD100] ist im Akku1 irgend ein Blödsinn gespeichert.

    Könnt ihr mir weiterhelfen?
    Angehängte Grafiken Angehängte Grafiken
    Geändert von netx1 (03.06.2008 um 15:29 Uhr)
    mit freundlichen Grüßen // best regards
    Zitieren Zitieren Daten aus DB auslesen  

  2. #2
    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

    mach doch mal folgendes anders :
    Code:
    L MW10
    L 2
    *I
    L 2
    -I
    ITD
    SLD 3
    T MD100
    Gruß
    LL

  3. #3
    netx1 ist offline Benutzer
    Themenstarter
    Registriert seit
    11.11.2007
    Beiträge
    91
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Achja, bei der indirekten Adressierung muss man ja SLD 3 anwenden um einen Pointer zu erzeugen.
    So funktioniert es, danke!

    Doch kann mir jemand erklären warum das benötigt wird (irgendwie habe ich das noch immer nicht richtig verstanden).
    mit freundlichen Grüßen // best regards

  4. #4
    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

    ... die Adressierung über Pointer funktioniert auf Bit-Basis (1 Byte = 8 Bit // SLD 3 entspricht x . Dementsprechend mußtz du deinen Pointer mit 8 multiplizieren (SLD 3) wenn du ein Byte adressieren willst. Im Prinzip kannst auch (ich will dich jetzt aber nicht verunsichern) einen SLD 4 dahin setzen um auf Wort-Adressierung zu kommen. Dann kannst du dir auch den zusätzlichen multipliziere und dividiere mit/durch 2 Kram in deinem Beispiel sparen.

    Wie auch immer, der ursprüngliche Teil deines Programm hat den Pointer in 2-Bit-Schritten weitergesetzt - deshalb hattest du sinnlose Werte. Da du aber Worte (INT's) einlesen wolltest mußtest du eigentlich in 2-Byte-Schritten weitersetzen. Das macht der SLD3-Befehl ...

    Ich hoffe, ich konnte ein bißchen Licht ins Dunkel bringen ...
    Gruß
    LL

  5. #5
    netx1 ist offline Benutzer
    Themenstarter
    Registriert seit
    11.11.2007
    Beiträge
    91
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Mal sehen ob ich das richtig verstehe.

    Will ich auf Byte zugreifen, brauche ich kein SLD.
    Bei Zugriff auf Words, mal 8 (SLD 3).
    ...und was wenn ich auf DWord zugreifen will, muss man dann um 6 verschieben (SLD 6 bzw. mal 64)?

    Gruß
    mit freundlichen Grüßen // best regards

  6. #6
    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

    Zitat Zitat von netx1 Beitrag anzeigen
    Mal sehen ob ich das richtig verstehe.

    Will ich auf Byte zugreifen, brauche ich kein SLD.
    Bei Zugriff auf Words, mal 8 (SLD 3).
    ...und was wenn ich auf DWord zugreifen will, muss man dann um 6 verschieben (SLD 6 bzw. mal 64)?

    Gruß
    Leider Falsch ...
    Bei Bit-Zugriff brauchst du kein SLD ...
    Bei Byte-Zugriff dann SLD 3
    Bei Wort-Zugriff dann SLD 4
    und bei Doppelwort-Zugriff dann SLD 5

    ... wenn du den Hilfspointer dann in Einerschriitten hoch- oder runterzählst ...

  7. #7
    netx1 ist offline Benutzer
    Themenstarter
    Registriert seit
    11.11.2007
    Beiträge
    91
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Jetzt leuchtet es mir ein.

    Eigentlich werden immer Bits adressiert. Man sucht quasi immer das 1. Bit vom Byte, Word, usw. Und z.B. beim Word 1 ist das halt das 16. Bit.

    Nur 1 Byte sind 8 Bits -> *8 (=SLD 3)
    16 Bits (Word) -> *16 (=SLD 4)
    32 Bits (DWord) -> *32 (=SLD 5)
    Geändert von netx1 (03.06.2008 um 19:06 Uhr)
    mit freundlichen Grüßen // best regards

  8. #8
    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

    Genau ...

    Hast du es jetzt also verstanden ...

  9. #9
    netx1 ist offline Benutzer
    Themenstarter
    Registriert seit
    11.11.2007
    Beiträge
    91
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja, ich danke dir!
    mit freundlichen Grüßen // best regards

Ähnliche Themen

  1. S7 Daten auslesen OPC
    Von Alucard335i im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 29.10.2011, 19:52
  2. OPC Daten in VBA auslesen
    Von steinche im Forum Hochsprachen - OPC
    Antworten: 7
    Letzter Beitrag: 24.04.2008, 21:06
  3. Daten auslesen
    Von PG675 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 13.02.2008, 22:24
  4. Daten speichern und auslesen
    Von PsYchO_LoGiC im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.02.2008, 10:07
  5. Daten auslesen
    Von SSX im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 05.12.2006, 08:47

Lesezeichen

Berechtigungen

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