Störmeldung im Panel drehen.

Katrin1982

Level-1
Beiträge
134
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jungens,

ich hab hier ein Panel (MP377) mit mehreren 100 Störmeldungen, diese müssten alle gedreht werden. Es sind alle davon ausgegangen das bei 0 eine Störung vorliegt und bei 1 alles ok ist. Leider ist dies nicht so.

Das Einlesen aus dem Prozess passiert über das ganze Wort, kann also nicht einfach ein Bit in der SPS tauschen.

Was hab ich für Möglichkeiten?
 
So in etwa:

Code:
   L #Störungsdoppelwort_SPS
   TAD
   T #Störungsdoppelwort_HMI
Nun sind die Byte gedreht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich hab hier ein Panel (MP377) mit mehreren 100 Störmeldungen, diese müssten alle gedreht werden. Es sind alle davon ausgegangen das bei 0 eine Störung vorliegt und bei 1 alles ok ist. Leider ist dies nicht so.

Das Einlesen aus dem Prozess passiert über das ganze Wort, kann also nicht einfach ein Bit in der SPS tauschen.

Du könntest in STEP 7 mit den Anweisungen INVI (Einerkomplemt INT) oder INVD (Einerkomplement DINT) arbeiten.

Einerkomplement INT

Die Anweisung INVI negiert den im rechten Wort des Akkumulators 1 stehenden Wert (die Bits 0 bis 15).
Sie ersetzt die Nullen durch Einsen und umgekehrt. Der Inhalt des linken Worts (die Bits 16 bis 31) bleibt unverändert.

Einerkomplement DINT

Die Anweisung INVD negiert den im Akkumulator 1 stehenden Wert Bit für Bit.
Sie ersetzt die Nullen durch Einsen und umgekehrt.

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie Du geschrieben hast, werden die Bits vom MP wortweise gelesen.
Wenn Du die einzelnen Bits negieren willst, kannst Du das auch über einen Wortzugriff machen.
So wie Kai es geschrieben hat.

Was Du zusätzlich tun musst, ist das Anlegen mehrerer Hilfsvariablen, auf die Du die geänderten Daten schreiben kannst.
 
Das Einlesen aus dem Prozess passiert über das ganze Wort

Aber ich muss nur das Bit drehen !

Hey, wie die anderen Forumteilnehmer schon geschrieben haben: Um ein Bit im MP zu drehen musst du das auf S7-Seite machen. Da du die Variablen Wortweise überträgst(vermutlich benutzt du ein array[word] auf MP-Seite), müsstest du alle Bits eines Wortes auf S7-Seite invertieren. Das geht mit Kai's oder meiner vorgeschlagene Variante, Kai's ist einfacher.

MfG
 
Hi,

erstmal danke für Eure Tipps, doch leider glaube ich reden wir aneinander vorbei.

Ich versuch es mal in einem Beispiel zu erklären:

EB0

E0.0 Teilnehmer vorhanden (1 ok; 0 nicht ok)
E0.1 Sammelstörung (1 ok; 0 nicht ok)
E0.2 Störung PKZ (0 ok; 1 nicht ok)
E0.3 Betrieb (1 Ein; 0 Aus)
E0.4 Endlage Zu (1 Zu; 0 nicht zu)
E0.4 Endlage Auf (1 Auf; 0 nicht auf)
......


Jetzt möchte ich gerne nur das Bit E0.1 drehen, damit in meiner Störmeldung nicht die ganze Zeit die Sammelstörung ansteht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Katrin

Nimmst du im Panel die Eingänge direkt für die Meldung?
Wie machst du das mit dem Quittieren?

Normalerweise werden die Verknüpfungen in der SPS gemacht
und dann im DB gesammelt an das Panel übergeben.

Da hat man dann alle Möglichkeiten die meine Vorredner
angedeutet haben.

Gruß
Bernhard
 
Hi,

erstmal danke für Eure Tipps, doch leider glaube ich reden wir aneinander vorbei.

Ich versuch es mal in einem Beispiel zu erklären:

EB0

E0.0 Teilnehmer vorhanden (1 ok; 0 nicht ok)
E0.1 Sammelstörung (1 ok; 0 nicht ok)
E0.2 Störung PKZ (0 ok; 1 nicht ok)
E0.3 Betrieb (1 Ein; 0 Aus)
E0.4 Endlage Zu (1 Zu; 0 nicht zu)
E0.4 Endlage Auf (1 Auf; 0 nicht auf)
......


Jetzt möchte ich gerne nur das Bit E0.1 drehen, damit in meiner Störmeldung nicht die ganze Zeit die Sammelstörung ansteht.

Code:
L EW0
L 2#0000_0010_0000_0000
XOW
T MW300

Sollte nur das Bit 0.1 drehen.
Bei MW ist Byte 0 und 1 vertauscht, wenn man ein Word lädt, denke, das ist bei EW auch so, ansonsten wäre es 2#0000_0000_0000_0010
 
Hi,

ich geh über DB´s das hab ich wohl vergessen zu erwähnen.

z.B.:

L EB0
T DB1.DBB0

Und dann Frag ich im Panel einfach den ganzen DB ab.
Die Meldungen kommen alle mit richtem Text an, ich hab halt jetzt immer nur 180x Sammelstörung von Pumpe x anstehen.
Und das würde ich halt gerne tauschen, damit mein Störmeldefestern leer ist.
 
hi,

ich geh über db´s das hab ich wohl vergessen zu erwähnen.

Z.b.:

L eb0
t db1.dbb0

und dann frag ich im panel einfach den ganzen db ab.
Die meldungen kommen alle mit richtem text an, ich hab halt jetzt immer nur 180x sammelstörung von pumpe x anstehen.
Und das würde ich halt gerne tauschen, damit mein störmeldefestern leer ist.

Code:
l eb0
l 2#0000_0010
xow
t db1.dbb0
 
Zurück
Oben