32 Eingänge mit wenig Aufwand auswerten

sob

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

bin gerade eine Störmeldeanzeige zu realisieren. D. h. Eingänge einlesen, werden diese zu 0 so soll eine Störmeldung am TP277 angezeigt werden und eine Hupe /externer Ausgang aktiv werden.
Nun meine eigentliche Frage wie kann man auf schnellsten Wege 32 Eingänge einlesen und auswerten d. h. wird ein Eingang 0 so soll ein Ausgang aktiv werden (Hupe etc.)
Ich dachte z. B. EW0 in Integer wandeln und mit einem Vergleicher auswerten.:)
Weiss jedoch nicht wie ich das machen soll.:confused:

Wäre toll wenn mir jemand helfen könnte.
 
Hi,

also wenn deine 32 Bit's alle hintereinander liegen (beginnend bei .0) dann ist das auch kein Problem

Code:
L ED0             //Deine 32 Bit's zusammengefasst als ein Doppelwort
L L#0             //Es soll mit einer 0 verglichen werden
<>D               //Vergleicher auf ungleich
=#Störung      //Ausgang z.B. für deine Hupe

... so und ab jetzt werden die Hausaufgaben wieder selber gelöst *ROFL*
 
Also wenn ich dich richtig verstehe willst du die Eingänge auf Null abfragen. Wenn du dann deine Störungshupe bei jeder neu hinzugekommenen Meldung neu antriggern möchtest musst du einen Alt-Neu-Vergleich machen.
Probier das mal aus:

L MD 300 // Altwert
L ED 0 // 32 Störungseingänge
UW
L MD 300 // Altwert
<>I
= #Hupe // Hupe
L ED 0 // Störungseingänge
T MD 300 // im MD speichern

das Signal #Hupe ist dann für einen Zyklus gesetzt.
 
@PhilippL

Die Aufgabe war:
Wird ein Eingang 0 so soll ein Ausgang aktiv werden (Hupe etc.)


Ich denke NICHT, dass deine Lösung richtig ist.
Ich kann mich jedoch täuschen. :ROFLMAO:
Aber fast richtig
Code:
L  ED0              //Deine 32 Bit's zusammengefasst als ein Doppelwort
L  L#-1            //alle 32 Bit's sind '1'
<>D                //Vergleicher auf ungleich
= #Störung        //Ausgang z.B. für deine Hupe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber fast richtig
Code:
L  ED0              //Deine 32 Bit's zusammengefasst als ein Doppelwort
L  L#-1            //alle 32 Bit's sind '1'
<>D                //Vergleicher auf ungleich
= #Störung        //Ausgang z.B. für deine Hupe

Leider immer noch falsch, was machste denn wenn nach dem 32.Bit das 31.Bit auf null fällt? :rolleyes: Dann funktioniert deine Abfrage nicht mehr.
 
Also wenn ich dich richtig verstehe willst du die Eingänge auf Null abfragen. Wenn du dann deine Störungshupe bei jeder neu hinzugekommenen Meldung neu antriggern möchtest musst du einen Alt-Neu-Vergleich machen.
Probier das mal aus:

L MD 300 // Altwert
L ED 0 // 32 Störungseingänge
UW
L MD 300 // Altwert
<>I
= #Hupe // Hupe
L ED 0 // Störungseingänge
T MD 300 // im MD speichern

das Signal #Hupe ist dann für einen Zyklus gesetzt.

UW und <>I verwenden nur 16 Bits der gewünschten 32. UD und <>D verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wieso? Der Ausgang wird angesteuert, solange ein Bit der 32 Bits den Wert 0 hat. Wenn dies die Aufgabe war, dann ist es doch ok.

Jo dat, nur man erkennt keine neue Störung. Die erste Störung löst aus, wir unter Umständen quittiert die Hupe soll ausgehen, die Lampe leuchtet vom Blinken in Dauerlicht, so die gängige Praxis. Eine weitere kommende Störung wird jetzt nicht mehr erkannt, nur immer die erste.
Gruß
 
Jo dat, nur man erkennt keine neue Störung. Die erste Störung löst aus, wir unter Umständen quittiert die Hupe soll ausgehen, die Lampe leuchtet vom Blinken in Dauerlicht, so die gängige Praxis. Eine weitere kommende Störung wird jetzt nicht mehr erkannt, nur immer die erste.
Gruß

Das mit der Quittierung habe ich in der Aufgabenstellung nicht gesehen :confused:
 
Leider immer noch falsch, was machste denn wenn nach dem 32.Bit das 31.Bit auf null fällt? :rolleyes: Dann funktioniert deine Abfrage nicht mehr.
Falsch würde ich das nicht nennen, dazu war die Eingangsfrage auch nicht konkret genug gestellt.

Mein Code bewirkt das Erzeugen einer Sammelstörmeldung wenn der Zustand eines oder mehrerer Eingänge '0' wird. Was ist daran falsch?:rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich würde OHGN zustimmen.
Er hat eine Lösung für das GENANNTE Problem geliefert.

Evt. sollte sob sein Problem mit den Randanforderungen schildern.

Gruß Jan
 
Noch ein Lösungsvorschlag :)

Code:
      L     ED     0
      L     2#11111111111111111111111111111111
      XOD   
      L     0
      <>D   
      =     A      0.0

Gruss aus 100 km nördlich von Weiden.

Gruss Daniel
 
@gravieren
Die Aufgabe war:
Wird ein Eingang 0 so soll ein Ausgang aktiv werden (Hupe etc.)


Ich denke NICHT, dass deine Lösung richtig ist.
Ich kann mich jedoch täuschen. :ROFLMAO:
Hast ja recht, ich bin eigentlich vom Standardfall ausgegangen und der sieht bei uns so aus, dass wenn ein Bit auf 1 ist eine Störung ansteht und nicht umgekehrt.

und jetzt @Fragesteller wie siehts aus mit Hausaufgaben :ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank

Vielen Dank für die HILFE!!!:):):)

habe es nun mal so gamcht.
Frage alle Eingänge ab. Wird einer zu 0 so soll der Ausgang A0.0+A10.0 aktiv werden. Zurücksetzen durch den Eingang E14.7 (Hupe)

Habs aber noch nicht testen können.

U( //Deine 32 Bit's zusammengefasst
O( //alle 32 Bit's sind '1'
L ED 0 //Vergleicher auf ungleich
L L#-1 //Ausgang z.B. für deine Hupe
<>D
)
O(
L ED 4
L L#-1
<>D
)
O(
L ED 8
L L#-1
<>D
)
O(
L ED 12
L L#-1
<>D
)
O(
L ED 16
L L#-1
<>D
)
O(
L ED 30
L L#-1
<>D
)
O(
L ED 34
L L#-1
<>D
)
)
FP M 0.0
S M 0.1
U E 14.7
R M 0.1
U M 0.1
= A 0.0
= A 10.0
 
Hi,

naja übersichtlich ist was anderes... an dieser Stelle find ich dann FUP doch schöner. Bzw. die ersten 5 Vergleiche könntest du auch in einer Schleife mittels Zeiger lösen. Wäre eventuell etwas übersichtlicher und imho auch schöner.

Gruß

PhilippL
 
habs auch mit FUP gemacht und dann übersetzen lassen damit ichs hier einstellen kann.
Wie war das mochmals mit dem Zeiger?
Habe sowas noch nie gemacht.
 
Zurück
Oben