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

Ergebnis 1 bis 6 von 6

Thema: Störmeldungen tauschen von high und low byte

  1. #1
    Gustel Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo zusammen,
    das op (7,17,27usw) vertauscht doch high mit low byte im bezug auf die störmeldenummer. d.h. meldenummer 001 ist dann bit 1.0 und nicht 0.0. wenn ich jetzt in meinem s7 programm mich an die nummer halten möchte, müste ich doch dann high mit low tauschen, sonst ist alles verdreht. nur haut das mit einem dauerhaften "taw" nicht hin.
    bin für jede idee dankbar.
    mfg
    mark
    Zitieren Zitieren Gelöst: Störmeldungen tauschen von high und low byte  

  2. "Ich würde folgende Änderung machen:

    Code:
    L  DIW 0      
    TAW            
    T  DIW 20      //Als Beispiel DIW20 - auf jeden Fall ein anderes DIW als DIW0
    Du solltest das Ergebnis nach dem Tausch der Bytes im Akku nicht in dem selben DIW0 abspeichern, sondern in einem anderen DIW (als Beispiel DIW20). Den Bereichszeiger des OP legst Du dann auf das neue DIW (als Beispiel DIW20).

    Das Problem bei Deiner Lösung ist wahrscheinlich folgendes: Das OP holt sich bei Deiner Lösung seine Daten aus dem DIW0. Du weißt nun aber nicht, zu welchem Zeitpunkt sich das OP seine Daten holt. Holt sich das OP seine Daten vor dem TAW-Befehl, stehen im DIW0 andere Daten drin als wenn sich das OP seine Daten nach dem TAW-Befehl holt. Holt sich das OP nun in jedem Programmzyklus zu einem anderen Zeitpunkt seine Daten, bekommst Du immer eine andere Anzeige in Deinem OP.

    Dieses Problem kann man vermeiden, wenn man das Ergebnis in einem anderen DIW (hier DIW20) abspeichert und den Bereichszeiger des OP auf das neue DIW (hier DIW20) legt. Dann ist es egal, wann das OP sich seine Daten holt, im neuen DIW (hier DIW20) steht immer das endgültige Ergebnis drin.

    Gruß Kai"


  3. #2
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Wie sieht denn Dein Programmcode aus

    Beispiel:

    Code:
    L  MW 10      //Lade den Wert von MW10 in AKKU 1
    TAW           //Kehre die Reihenfolge der Bytes in AKKU1-LOW um
    T  MW 20      //Transferiere das Ergebnis nach MW20
    Gruß Kai

  4. #3
    Anonymous Gast

    Standard

    na ja, da muss ich etwas ausholen
    haben einen fb und stat die störmeldungen im kopf zugewisen. die stehen dann ja im instanz db vom fb. den inst. db hab ich dann in den bereichszeiger vom op angegeben.
    die störmeldungen werden nur gesetzt aber mit über den fill sfc wird der inst db dann mit nullen aufgefüllt.
    sieht dan folgender massen aus:

    un ack taste op
    spb go
    //hier der fill aufruf
    go: nop 0
    u e 0.0 //Not-Aus
    s #stoermeldung0001
    usw..
    l diw 0
    taw
    t diw0

    bei den lauer touchpanels (micro inovation) hat es bausteine von microinovation dazu gegeben die das ganze gemacht haben. das tauschen von high und low byte wurde dort aber über div kom bits vom panel her für eine zyklus ausgelöst. hab das ganze dann auch mal probiert, nur zu tauschen wenn eine neue störmeldung dazu kommt haut aber auch nicht hin. bei dem vertauschen werden bits von störmeldungen ausgelöst die vorher 0 waren.
    mfg
    mark

  5. #4
    Anonymous Gast

    Standard

    Ich würde folgende Änderung machen:

    Code:
    L  DIW 0      
    TAW           
    T  DIW 20      //Als Beispiel DIW20 - auf jeden Fall ein anderes DIW als DIW0
    Du solltest das Ergebnis nach dem Tausch der Bytes im Akku nicht in dem selben DIW0 abspeichern, sondern in einem anderen DIW (als Beispiel DIW20). Den Bereichszeiger des OP legst Du dann auf das neue DIW.

    Das Problem bei Deiner Lösung ist wahrscheinlich folgendes: Das OP holt sich bei Deiner Lösung seine Daten aus dem DIW0. Du weist nun aber nicht, zu welchem Zeitpunkt sich das OP seine Daten holt. Holt sich das OP seine Daten vor dem TAW-Befehl, stehen im DIW0 andere Daten drin als wenn sich das OP seine Daten nach dem TAW-Befehl holt. Holt sich das OP nun in jedem Programmzyklus zu einem anderen Zeitpunkt seine Daten, bekommst Du immer eine andere Anzeige in Deinem OP.

    Dieses Problem kann man vermeiden, wenn man das Ergebnis in einem anderen DIW (hier DIW20) abspeichert und den Bereichszeiger des OP auf das neue DIW (hier DIW20) legt. Dann ist es egal, wann das OP sich seine Daten holt, im neuen DIW (hier DIW20) steht immer das endgültige Ergebnis drin.

    Gruß Kai

  6. #5
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Ich würde folgende Änderung machen:

    Code:
    L  DIW 0      
    TAW            
    T  DIW 20      //Als Beispiel DIW20 - auf jeden Fall ein anderes DIW als DIW0
    Du solltest das Ergebnis nach dem Tausch der Bytes im Akku nicht in dem selben DIW0 abspeichern, sondern in einem anderen DIW (als Beispiel DIW20). Den Bereichszeiger des OP legst Du dann auf das neue DIW (als Beispiel DIW20).

    Das Problem bei Deiner Lösung ist wahrscheinlich folgendes: Das OP holt sich bei Deiner Lösung seine Daten aus dem DIW0. Du weißt nun aber nicht, zu welchem Zeitpunkt sich das OP seine Daten holt. Holt sich das OP seine Daten vor dem TAW-Befehl, stehen im DIW0 andere Daten drin als wenn sich das OP seine Daten nach dem TAW-Befehl holt. Holt sich das OP nun in jedem Programmzyklus zu einem anderen Zeitpunkt seine Daten, bekommst Du immer eine andere Anzeige in Deinem OP.

    Dieses Problem kann man vermeiden, wenn man das Ergebnis in einem anderen DIW (hier DIW20) abspeichert und den Bereichszeiger des OP auf das neue DIW (hier DIW20) legt. Dann ist es egal, wann das OP sich seine Daten holt, im neuen DIW (hier DIW20) steht immer das endgültige Ergebnis drin.

    Gruß Kai

  7. #6
    Gustel Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    danke kai,
    stimmt, das op holt sich ja die daten assynchron zum sps zyklus. das lauer panel konnte man in dieser hinsicht etwas anpassen.
    werd ich am di gleich mal ausprobieren.
    mfg
    mark

Ähnliche Themen

  1. Wie kann man Hi-Byte Low-Byte spiegeln?
    Von Klärmolch im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 11.12.2010, 20:58
  2. Umwandeln von INT nach Byte u Byte + n
    Von Gerold im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.04.2009, 10:07
  3. High-Low Byte tauschen
    Von kilic im Forum Programmierstrategien
    Antworten: 24
    Letzter Beitrag: 30.10.2008, 15:08
  4. Antworten: 4
    Letzter Beitrag: 08.07.2008, 08:52
  5. s5 Digitalausgang high
    Von akb im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 02.02.2007, 20:03

Lesezeichen

Berechtigungen

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