Störungen Auswerten

Much2k

Level-1
Beiträge
83
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo hab ein kniffliges Problem wo ich schon seit längeren dran bin.

Und zwar Gehts um eine Störungsauswertung.

d.H Habe za 300 Störungen die einfach in eine DI anglegt werden. Manche mit Hi Bit manche mit Lo. Diese sollen auf ein MP370 mit Protool angezeigt werden. Das hab isch auch geschaft.

Zusätzlich gibt es noch meldelampen und Sirenen. Die sollten mit der Störung kommen und Quitierbar sein.

Hab mal das versucht mit einen FC funktioniert leider aber nicht. Da das bit nicht so gesetzt wird wie ich will.

Vieleicht habt ihr eine Idee

Vielen Dank

Michael
 

Anhänge

  • test.pdf
    13,1 KB · Aufrufe: 43
Hallo Michael !
Zunächst ein paar Fragen.
Was verstehst Du unter DI ?
Welches Bit wird nicht so gesetzt wie Du Dir das vorstellst ?
Legst Du die Störbits in einem DB ab ?

BUR
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde einfach mit Eintreten der Meldungen bzw. einer der Meldungen das "Hupe"-Bit setzen und im Terminal dies mittels der ACK-Taste rücksetzen (Vorrausgesetzt du hast kein Touch, ansonsten müsstest du irgendwo einen Button oder sowas einfügen, oder Quittier-Events belegen).
 
Hallo!

Danke mal für die schnellen Antworten

Di Digital Input (Also normaler eingang)

Naja der ausgang A 15.0 bleibt anstehend. Weiss aber nicht warum?

Er ist bei STD 1 beim ansehen, und lässt sich auch nicht mehr zurücksetzen. Logge die Störungen nicht im DB ab. Sende sie nur an das MP370 und schreibe sie ins Archiv.

Das mit dem Rücksetzen ist schon klar. Glaub der FC kommt nicht zurecht damit dass er x mal ufgerufen wird. Irgendwo dort ist das Problem.

Also die Abarbeitung soll so sein

1. Übergebe die Störungen vom Eingang in einen Datenbaustein wo ich sie dann als Datenwort zum MP 370 schicke.

Ist eine Störung aufgetreten soll die Lampe und der Summer angehen.
Wird die Störung mit dem ACK button bestätigt wird der Summer quitiert. Die Lampe geht nach 15 min von alleine aus.

Mfg
Michael
 
Hallo,

ich habe mal den Code angeschaut und mir ist noch folgendes aufgefallen:

Code:
// Alarme aufschalten
U #alarm
L #Prioritaet
L 1
==I
S A 15.0

Meines Wissens nach (und wenn ich das Siemens-Tabellenheft richtig gelesen habe) wird durch ==I das VKE entsprechend dem Vergleich gesetzt (wertet das VKE nicht aus). Das U #alarm hätte dann keine Bedeutung. Wenn dies berücksichtigt werden soll, muss das Ganze folgendermassen geändert werden:

Code:
// Alarme aufschalten
L #Prioritaet
L 1
==I
U #alarm
S A 15.0

Ich hoffe, das hilft etwas.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Michael,

wenn du Variablen setzt, musst du sie auch irgendwo wieder zurücksetzen. Temporäre Variablen wie "Alarm" könntest du am Anfang des Bausteins initialisieren.

CLR
= #Alarm


Gruß, Onkel
 
Hallo!

Dein Flankenmerker wird auch nicht funktionieren, da der Zustand einer Temp-Variable nach Verlassen des FCs nicht gespeichert wird!
Entweder verwendest du einen Merker oder du bastelst alles in einen FB um.

Nur mal nebenbei: Wieviele DI hast du für die 300 Störungen denn gebraucht?

Gruß
 
Guten Morgen!

Hab gestern nochmal gespielt und eure einwende auch eingebracht

Nur wie kann das sein (siehe Bild)

Dass ich 2 Und verknüpfungen mache und trotzdem der Ausgang 1 ist

Lässt sich auch nicht mehr zurücksetzen

Habe für 300 Störungen ca 250 Eingänge. Gewisse sind Bitgesteuert.

Also
000 Keine Störung
001 Störung 1
010 Störung 2
011 Störung 3 usw.
 

Anhänge

  • unbenannt_112.jpg
    unbenannt_112.jpg
    116,5 KB · Aufrufe: 131
Zuviel Werbung?
-> Hier kostenlos registrieren
Much2k schrieb:
Nur wie kann das sein (siehe Bild)
Dass ich 2 Und verknüpfungen mache und trotzdem der Ausgang 1 ist
Lässt sich auch nicht mehr zurücksetzen
Code ist soweit "logisch" in Ordnung. Prio ist 2, Vergleich ergibt wahr, Freigabe fehlt (in diesem Zyklus), Setzen erfolgt nicht (in diesem Zyklus).
Aber wo wird A 15.2 rückgesetzt? In dieser Sequenz wird er nur gesetzt.
 
Hab den Gnazen FC mal online gestelllt.

Gib langsam auf werd das nie zusammenbekommen.

Warum belibt mir der A 15.2 und A 15.3 immer auf Hi

(nicht erschrecken beim Programm hab jede möglichkeit ausprobiert dass es geht)
 

Anhänge

  • fc23.pdf
    14,4 KB · Aufrufe: 14
Zuviel Werbung?
-> Hier kostenlos registrieren
bei mir funktioniert das

aber

du setzt den a 15.2. weiter unten willst du den zurücksetzen. aber dort sehe ich, das du m15.2 zurücksetzt. das soll wohl nicht klappen.

Code:
      U(    
      L     #prio
      L     1000
      ==I   
      )     
      U     M     23.1
      S     M     15.2 //hier hast du A 15.2


      U     M     23.0                  //Quitieren 
      FP    M     23.2
      R     M     15.0
      R     M     15.1
      R     M     15.2 //wenn oben A 15.2, dann auch hier
      R     M     15.3

das letzte pdf hab ich mir nicht angeschaut
 
Hallo voljker!


Naja schaut eher aus dass er nicht zurecht kommt dass er 20 mal aufgerufen wird hintereinander.

Versuchs grad so.

Schreibe die Werte in eine DB

u #in1
s l 0.0

danach kontrollier ich sie ob sie sich verändert haben. Geht das dass ich ein Datenbyte so kontrolliere ob sich es ändert

l #datentmp
l # datenbyte
>I
fp m23.0
= m23.1

(also wenn ich zum beispiel 00000000 habe (also keine Störung und sie ändert siech auf 000000001 dann geht m23.0 auf 1

vielen dank

,ichael
 
eine frage.

soll die hupe wieder angehen, wenn eine neue störung dazukommt?
oder
reicht es auch die hupe wieder angehen zu lassen, wenn sich was an dem störstatus geändert hat?
oder braucht die gar nicht wieder angehen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo habs jetzt geschaft, habs jetzt über dan datenbaustein abgeregelt, wens interessiert kann sich das programm ansehen.

Vieln dank nochmal

Mfg
Michael
 

Anhänge

  • fc23_219.pdf
    12,2 KB · Aufrufe: 22
na also. geht doch. :wink:

das einlesen der #in kannst du kürzer machen wenn es sich immer um ganze bytes,wörter oder doppelwörter handelt

Code:
      L     #in                         //var_in typ:byte 
      UN    #neg                        //var_in typ:bool
      SPB   pos
      INVI                              //bitmuster invertieren
pos:  T     #in_temp                    //var_temp typ:byte; bits erreichbar über L0.0-L0.7, wenn dies die ertste tempvar ist
 
naja bin darufgekommen dass es nichts bringt einfach den fehler zu suchen. Oft ist besser wenn man neu und mit einem anderen konzept anfängt

Vielen Dank nochmal allen

Mfg
Schönes Wochenende

Michael
 
Zurück
Oben