Störmeldungen tauschen von high und low byte

G

Gustel

Guest
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
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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
 
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
 
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
 
Zurück
Oben