# Störmeldungen tauschen von high und low byte



## Gustel (30 September 2005)

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


----------



## Kai (30 September 2005)

Wie sieht denn Dein Programmcode aus  :?: 

Beispiel:


```
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


----------



## Anonymous (30 September 2005)

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


----------



## Anonymous (1 Oktober 2005)

Ich würde folgende Änderung machen:


```
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


----------



## Kai (1 Oktober 2005)

Ich würde folgende Änderung machen: 


```
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


----------



## Gustel (2 Oktober 2005)

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


----------

