TIA Probleme mit ADD_REAL

MaurerT

Level-2
Beiträge
122
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen, ich habe ein Problem mit einem Addierglied und stehe da etwas auf dem Schlauch oder sehe den Wald vor lauter Bäumen nicht. Ich bekomme von einem Durchflusszähler Impulse für eine definierte Menge Durchfluss (10L/Puls). Dieser Impuls wird von einem Eingang erfasst und soll die Menge aufsummieren. Jetzt ist aber bei Kontrollen aufgefallen dass die gezählte Menge und die Anzeige auf dem Wasserzähler erheblich von einander abweichen. Als ich jetzt vor Ort mal nachgesehen habe kann ich dies auch bestätigen. An dem Wasserzähler kann ich per Simulation eine feste Anzahl Pulse ausgeben lassen (300 * 10 L)und es das Ergebnis war anstatt 3m³ zu Zählen wurden es fast 5m³.
OK, dachte ich mir vielleicht liegt es an der Flankenauswertung und habe mal das P_TRIG durch ein P ersetzt, keine Veränderung.
Dann habe ich den Eingang und den Flankenmerker mal auf einen Zähler verschaltet und beide haben genau die vorgegeben Anzahl Pulse erfasst (300). Fakt ist aber dass das Ergebnis im DB5.DBD4 alle 6-7 Pulse um 100 Liter ansteigt. (Siehe Anhänge)
Hat da vielleicht jemand einen Ansatz. Die Zählung ist an anderer Stelle genauso programmiert und dort gibt es keine Probleme. Über die Querverweise konnte ich keine Doppelverwendungen finden.
Danke schon mal im Voraus.
 

Anhänge

  • alt.jpg
    alt.jpg
    377,5 KB · Aufrufe: 64
  • neu1.jpg
    neu1.jpg
    378,8 KB · Aufrufe: 56
  • neu2.jpg
    neu2.jpg
    329,6 KB · Aufrufe: 64
Lange Rede wenig Sinn:
Real ist für sowas mathematisch einfach ungeeignet.
DINT ist das Mittel der Wahl.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK, über die Programmierung kann man sicherlich streiten. Ist aber eine Fremdanlage die wir so geliefert bekommen haben. Aber Grundsätzlich gesehen, sollte das doch trotzdem auch auf diesem Weg funktionieren. 100 * 0.01 Impulse sollten 1m³ ergeben und nicht 1,6 oder so.
Wird die Funktion eigentlich nur einmal ausgeführt (bei pos. Flanke) oder wird die Funktion bei jedem Zyklus erneut ausgeführt solange der EN Eingang True ist :?:
 
Ich denke, der Fehler sollte eher an einer anderen stelle gesucht werden, nicht beim o.g. Real-Problem.
Wenn der Gesamt-Realwert eine bestimmt Größe überschreitet, funktioniert das Ganze bei Realzahlen tatsächlich nicht mehr. Aber wenn dieser Fehler auftritt, sollte doch eher weniger angezeigt werden als mehr. Laut TE werden ja 5qm gezählt (errechnet), obwohl es nur 3qm sind.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann habe ich den Eingang und den Flankenmerker
...
Über die Querverweise konnte ich keine Doppelverwendungen finden.
Auch wenn Du über die Querverweise keine Doppelbelegung gefunden hast, würde ich trotzdem mal prüfen, was der Ausgang des P-Triggers wirklich macht.

Denn wenn der Flankenmerker M25.1 irgendwo später im Programm wieder zurück gesetzt wird, bekommt das der P-Trigger mit und stellt eine neue Flanke fest.
Deine beiden Zähler merken aber nichts, weil zum Einen der Eingang sich nicht verändert und und zum Anderen der P-Trigger auch den Flankenmerker wieder auf 1 setzt und somit auch für den 2. Zähler keine Veränderung feststellbar ist.
 
.
Wie schnell läuft denn deine Flüssigkeit (l/s oder cbm/h) ?

Geschieht das ohne Druckschwankungen/stossfrei ? Hast du wirklich einen kontinuierlichen Durchfluss ?

Bei liquiden Medien ist es angebracht, dass du deine Zählflanke etwas verzögerst, um evtl. entstehende Mehrfachimpulse zu vermeiden.

Und das DINT aus Beitrag #2 halte ich auch besser geeignet, das kannst du ja immer noch in REAL umwandeln.



P.S. Um gleich allen Diskussionen zuvorzukommen: Es geht hier wohl um Volumenmessung (cbm oder m³), nicht um Flächen (qm oder m²);)
 
Die Impulse kommen so im 1s Takt, kann das ganz gut hören da der Eingang für eine andere Anlage quasi direkt wieder auf einen Ausgang geschaltet ist an dem ein Relais hängt. Der Durchfluss beträgt ca. 30m³/h und ist relativ konstant.
Bezüglich der Doppelverwendung des Flankenmerkers werde ich diesen bei Gelegenheit mal durch einen anderen Merker ersetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit an Sicherheit grenzender Wahrscheinlichkeit, kommt dein Problem vom prellen des Relais!
Für solche Anwendungen solltest du gleich mit Optokoppler arbeiten.
 
Mit an Sicherheit grenzender Wahrscheinlichkeit, kommt dein Problem vom prellen des Relais!
Für solche Anwendungen solltest du gleich mit Optokoppler arbeiten.
Kann hier eigentlich nicht sein, sofern die Werte der beiden Zähler korrekt sind.

Eigentlich bleiben nur 2 Punkte übrig:
Flankenmerker ist irgendwie nicht korrekt
Real-Problematik

Mfg
Manuel
 
Kann hier eigentlich nicht sein, sofern die Werte der beiden Zähler korrekt sind.

Eigentlich bleiben nur 2 Punkte übrig:
Flankenmerker ist irgendwie nicht korrekt
Real-Problematik

Mfg
Manuel

Das kann ich so nicht nachvollziehen. Wenn der Input prellt, zählen beide Zähler im Programm gleich, Hauptsache, die SPS ist schnell genug, um das Prellen mitzubekommen.
Real-Problematik, siehe mein Beitrag oben, glaube ich auch nicht.

Ich würde auf jeden Fall mal den Input entprellen.
Wie hoch ist denn die Maximalfrequenz und wie lang sind die Impulse des Wasserzählers?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das kann ich so nicht nachvollziehen. Wenn der Input prellt, zählen beide Zähler im Programm gleich, Hauptsache, die SPS ist schnell genug, um das Prellen mitzubekommen.
Eben, und deshalb ist es imho ziemlich sinnfrei hier zum entprellen zu raten ...

Und selbst wenn jetzt die Schaltdauer des Impulseingangs eine Rolle spielen würde, dann würde der Zähler aber eindeutig zu wenig zählen, nie aber zu viel.
 
Eben, und deshalb ist es imho ziemlich sinnfrei hier zum entprellen zu raten ...

Und selbst wenn jetzt die Schaltdauer des Impulseingangs eine Rolle spielen würde, dann würde der Zähler aber eindeutig zu wenig zählen, nie aber zu viel.

Ich kann dir leider noch immer nicht folgen!

1. Er zählt im Programm den Input-Impuls und er zählt die Flanke des Input-Impulses. Wenn die SPS schnell genug ist, dann zählt er alle "Preller" mit, bei beiden Zählern, also sind die dann immer gleich.
2. Er schrieb ja die SPS-Zähler zeigen mehr an, als das Hardwaregerät, also kann das mit dem Real-Problem nichts zu tun haben, dann wäre es m.E. anders herum.
3. Schon klar, die Impulsdauer des Wasserzählers würde bei Entprellen u.U. eine Rolle spielen, je nachdem, wie man das ausprogrammiert, daher wollte ich das mal wissen.
 
1. Im Eingangspost steht doch klar, das ausschließlich der REAL-Zähler falsch zählt, d.h. die beiden S5-Zähler scheinen ja richtig zu zählen, ergo kein Prell-Prob.
2. Er schrieb folglich also, das nur der Real-ADD Murks macht = Flankemerker nicht so wie er soll oder Real-Add ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
und er zählt die Flanke des Input-Impulses.
Genau das macht er leider nicht!

Er zählt, wie oft sich der Flankenmerker nach der Auswertung der Flanke gegenüber dem vorigen Zyklus geändert hat!

Wenn aber nur der Flankenmerker im Programm von 1 auf 0 zurück gesetzt wird (warum auch immer), ohne das sich der Eingang ändert, dann hat er im nächsten Zyklus eine neue Flanke, aber der Flankenmerker ist nach dem Trigger wieder auf 1 und somit merkt der Zähler, an dem der Flankenmerker hängt, gar nichts und zählt dementsprechend auch die Flanke nicht.
Und für den Eingangszähler hat sich eh' nichts geändert.
 
Nicht falsch verstehen, das Relais hängt am Ausgang zur Weiterverarbeitung des Signals und macht mir keine Probleme. Der Eingang kommt über einen Transistorschaltausgang vom Durchflussmesser. Also nix mechanisches.
 
@Ralle: Die Max Frequenz weiß ich jetzt nicht aber der Messbereichsendwert liegt bei 50m³/h und die Impulsdauer ist auf 100ms eingestellt.

Daher noch mal meine Frage vom Anfang. Wird die Addierfunktion in jedem Zyklus durchgeführt oder nur einmalig bei Flankenwechsel. Weil wenn der Impuls 100ms ansteht ist ja auch der Enable Eingang solange aktiv und bei jedem Zyklus durchlauf würden die 10 Liter auf addiert werden. Dann wäre das Problem zu erklären in Abhängigkeit der Zykluszeit?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also, zu meiner letzten Frage hab ich jetzt mal getestet. Also mit dem P_TRIG wird die Addition nur einmal ausgeführt mit jedem Puls der über den Eingang kommt. Schalte ich den Eingang direkt auf den EN-Eingang dann wird die Addition in jedem Zyklus ausgeführt solange der Eingang ansteht.
 
Also mit dem P_TRIG wird die Addition nur einmal ausgeführt mit jedem Puls der über den Eingang kommt. Schalte ich den Eingang direkt auf den EN-Eingang dann wird die Addition in jedem Zyklus ausgeführt solange der Eingang ansteht.
Die Addition wird in jedem Zyklus ausgeführt, in dem der EN-Eingang High ist.
Deshalb wäre es wichtig, endlich mal zu wissen, wieviele Flanken Du nun tatsächlich hast, um den Fehler entweder auf die Flankenerzeugung oder auf die Addition einschränken zu können.

Auch wenn ich mittlerweile singe - häng' doch Deinen 2. Zähler mal direkt an den Ausgang des P-Triggers, anstatt den (in diesem Fall überhaupt nicht aussagekräftigen) Flankenmerker zu überwachen!
 
Anstatt zur Kontrolle einen zweiten Zähler zu programmieren, kannst du auch eine zweite Add Box für einen Integer Datentyp hinter dein Real-Add hängen.

Bei einigen Versionen vom TIA-Portal gab es mal Probleme mit Real-Konstanten.
 
Zurück
Oben