Step 7 Füllstandsüberwachung

Dataworld-EDV

Level-2
Beiträge
81
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich bräuchte eine Idee zur Umsetzung.

Ich habe einen Silo zur Füllstandsmessung. Dieser hat 4 Kontakte (Öffner) zur Füllhöhenbestimmung in einem extra Füllstandsrohr aussen mit einer Schwimmkugel parallel zum Tank.
Diese Kontakte werden nur kurz betätigt, wenn der Füllstand an diesen Kontakten vorbeisteigt.
Somit muss ich die Flanken in einem Bitmuster auswerten und diese speichern.

Leer/25%/50%/75%/100%
1 1 1 1 0
1 1 1 0 1
1 1 0 1 1
1 0 1 1 1

Wie könnte ich aber alle anderen Zustände abfangen, die nicht gültig sind??
z.B.:

1
1
0
0

Diesen Zustand gibt es ja nicht, somit muss dann eine Fehlerauswertung erfolgen.

Danke für Eure Ideen.

Gruss
 
Ich würde nicht nur die ungültigen, sondern auch die unerwarteten Zustände abfangen, z.B. wenn der Behälter halbvoll ist muss als nächstes der Sensor für 25% oder 75% ansprechen eventuell noch der Sensor für 50% nochmals aber alle anderen Sensoren sollten auch einen Fehler auslösen.
Du könntest eine CASE-Anweisung erstellen die immer ausgeführt wird wenn eine fallende Flanke an einem Sensor festgestellt wird. Deren Zweige entsprechen dem letzten Füllstand, hier fragst Du über eine IF-Abfrage die zulässigen Signale ab und in einem ELSIF-Zweig die unerwarteten. Das was dann über bleibt sind alle unzulässigen Kombinationen die Du über ein ELSE "auswertest".
 
Hallo,

liegen die Eingänge alle hintereinander?
Dann würde ich UW bzw OW verwenden zum vergleichen der Zustände und dementsprechen Merkern zuweisen.

MFG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Diese Kontakte werden nur kurz betätigt, wenn der Füllstand an diesen Kontakten vorbeisteigt.
Das ist meiner Meinung nach zum scheitern verurteilt.
Wie willst Du erkennen ob die Schwimmerkugel den Schalter "Von OBEN kommend" oder "Von UNTEN kommend" passiert?
Also: Unterster Schalter -->Flanke ... Ist der Tank jetzt Kurz vor Leer oder Tendenz Steigend??

Wenn der Schwimmer (bzw. die Flüssigkeit) dann noch ein bisschen "schwabbelt" werden die Schalter "wirr" kommen und gehen.
 
@oliver.tonn:
Bzgl. SCL wäre ich schon dabei, aber in diesem älteren Kundenprojekt leider nicht -:)

@Paul:
Das mit dem schwabbeln: Ich hatte jetzt bei einer gültigen Kombination und einer Flankenerkennung den entsprechenden Wert, z.B. 25%, so lange gespeichert, bis eine neue Kombination erkannt wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dein Programm könnte sich einfach nur merken, welchen Kontakt es zuletzt "gesehen" hat (ggf. noch eine Plausibilitätskontrolle, ob mehrere Kontakte gleichzeitig kommen oder eine Stufe übersprungen wird, also von 50 kann es nur zu 25 oder 75 gehen usw.).
Code:
WENN Kontakt_0 DANN Fuellstand:=0
WENN Kontakt_25 DANN Fuellstand:=25
WENN Kontakt_50 DANN Fuellstand:=50
WENN Kontakt_75 DANN Fuellstand:=75
WENN Kontakt_100 DANN Fuellstand:=100
Code:
// AWL
      U    "Kontakt_0"
      SPBN M025
      L    0
      T    "DB1".Fuellstand

M025: U    "Kontakt_25"
      SPBN M050
      L    25
      T    "DB1".Fuellstand
...

M100: U    "Kontakt_100"
      SPBN MEFS
      L    100
      T    "DB1".Fuellstand

MEFS: SET


// KOP
               +--------+
"Kontakt_0"    |  MOVE  |
-----| |-------|EN   ENO|-
             0-|        |-"DB1".Fuellstand
               +--------+
...
               +--------+
"Kontakt_100"  |  MOVE  |
-----| |-------|EN   ENO|-
           100-|        |-"DB1".Fuellstand
               +--------+

Harald
 
@PN/DP
So ähnlich hatte ich mir das auch vorgestellt. Ich würde jetzt nur immer alle 4 Eingänge abfragen, damit das Bitmuster stimmen muss.

-> Fals ungültiges Bitmuster, Fehlermeldung
 
Zurück
Oben