ein paar Bemerkungen ...
Extrem kurze Impulslänge
Wie Paul im #24 schon ausgerechnet hat, kommt im worst case alle 15ms ein Impuls.
Das ist aber die
Periodendauer und darf nicht mit der Impulslänge verwechselt werden.
Der Impuls ist nicht 15ms lang, sondern im Idealfall nur 7,5ms Impuls und 7,5ms Pause
(bei Tastverhältnis 1:1).
In der Realität ist die Impulslänge meist noch kürzer, z.B. ~ 5% (Reed-Kontakt-Äquivalent).
Das wären hier im Beispiel
0,75ms !!!
Der SPS-Eingang mit dem Zähler muß nicht nur Prozessalarm auslösen, sondern auch die
Eingangsverzögerung muß auf 0,1ms eingestellt werden. Wir sind nun hart an der Grenze dessen,
was die CPU 314-2 DP an Prozessalarmen verarbeiten kann (OB40 Verzögerung ~ 0,5ms)!
Eventuell müßte nun doch der kompliziertere Weg über den schnellen Zählkanal genommen werden.
Gut wäre es gewesen, wenn chefren_new gleich genauere Angaben gemacht hätte,
Aus 80 Impulsen/Minute im #1 sind nun 4000 Impulse/Minute in #17 geworden. Das ist für die
Realisierung ein erheblicher Unterschied! Die Problematik der sehr kurzen Impulslänge habe
ich in diesem Thread schon mehrmals erwähnt. Zuerst in #6
Nur hat das scheinbar nicht jeder gelesen.
Klarheit kann hier nur ein Blick in das Datenblatt des Wasserzählers schaffen (siehe unten).
Sollte man chefren_new hier mit fertigem "professionellen" Programmcode helfen?
Ich denke, daß diese spezielle Aufgabe NICHT geeignet ist, chefren_new das simple zählen
und addieren schonend beizubringen, wenn vorher schon klar ist, daß das Programm dann nicht
funktionieren wird. chefren_new bekommt vielleicht den richtigen Programmcode hin, wird dann
aber verzweifelt suchen, warum sein Programm zu wenige Impulse zählt und die Welt nicht mehr
verstehen. Übrigens findet man den FUP-Code zum einfachen zählen in #15.
Weil das exakte schnelle Zählen für die Aufgabe essentiell ist und nicht im OB1 möglich ist,
habe ich den eigentlich simplen, für Anfänger aber schwierigen Code des OB40 hier komplett
programmiert veröffentlicht. #16
Im Übrigen hat chefren_new hier nur geschrieben, daß er geradeso FUP LESEN kann. Was er
SCHREIBEN (programmieren) kann, hat er nicht erwähnt. Er hat auch nicht erwähnt, ob er
irgend etwas von den hier gebrachten Programmbeispielen übernommen und ausprobiert hat.
Ich glaube, daß chefren_new das gar nicht selbst programmieren will. Er will sich nicht
Schritt für Schritt zur Lösung ranarbeiten. Er will das fertige Programm.
Deshalb habe ich seine mehrfach geäußerte Frage nach der Speicherung der Tagesverbräuche
nur als Programmentwurf in Pseudocode beantwortet. Da stecken alle wichtigen Informationen
drin für jemanden, der das wirklich programmieren will. #18
Mit wahrscheinlich weniger Zeitaufwand hätte ich das Programm auch gleich in AWL programmieren
und hier reinstellen können. Den AWL-Code hätten aber viel weniger Leser verstanden.
Und in #20 zeigt chefren_new, daß er diesen detaillierten Programmentwurf nicht richtig
liest oder nicht versteht.
chefren_new möchte die 30-Tage-Durchflüsse in WCCflex anzeigen ...
Falls das eine Trendkurve mit Daten aus der SPS werden soll, so sind da noch bestimmte
Anforderungen seitens WCCflex an die Speicherreihenfolge der Daten zu beachten, d.h. die
Daten müssen historisch sortiert werden (ältester Wert zuerst).
Falls es eine einfache Auflistung der Daten sein soll, muß womöglich der eigentlich
überflüssige Datumsstempel mit im Array abgelegt werden. Ich schätze, chefren_new wird
die Datumsangabe nicht nachträglich in WCCflex errechnen können.
Ich finde nicht, daß mein Programmentwurf mit Array und Pointerzugriff besonders kompliziert
oder "profihaft" ist. Da kann man sich doch reindenken und alles dazu relevante in der Step7-
Onlinehilfe und hier im Forum nachlesen. Umständlicher wäre es, kein Array und keine Pointer
zu benutzen (z.B. 31 einzelne Tag-Vergleiche oder Sprungleiste). Der einzige "Trick" in dem
Programmentwurf: ich brauche keine Flanke (Flanken setze ich stets sparsam ein).
Ich helfe gern, auch mit fertigen Programmbausteinen. Der Fragesteller muß aber genau
beschreiben was er braucht, damit ich die freiwillig kostenlose Arbeit nur 1x machen muß.
@chefren_new
Ich werde den AWL-Code zu meinem Programmentwurf noch nicht schreiben. Das ist noch zu früh.
Probiere erstmal aus, ob die Erfassung des Zählimpulses mit dem OB40 zuverlässig funktioniert.
Dann melde Dich wieder und erkläre, wie Du die Tagesdurchflüsse in WCCflex anzeigen willst.
Danach richtet sich dann, wie die Tagesdurchflüsse gespeichert werden. Und erst dann kann man
ein gutes Programm dafür schreiben.
Ich kann mit dem Datenblatt nicht nachvollziehen, wie Du mit dem in #25 genannten Wasserzähler
auf 80 Impulse/Liter kommen willst. Mit Bestellnummer 10424 für DN15...20 kommt man bestenfalls
auf 10 Impulse/Liter (0,1 Liter/Impuls). Das macht dann bei 50 Liter/Minute 500 Impulse/Minute
und die LF-Impulslänge läge bei etwa
6ms. Da wären wir wieder im technisch vernünftigen Bereich.
Warum kommst Du hier immer nur mit ungenauen Angaben, wo das wichtigste stets fehlt?
Mußt Du immer erst jemanden fragen der sich auskennt? Eventuell Deinen Instandhaltungstechniker?
Das ist doch keine Schande. Es wäre aber für uns, die Dir helfen wollen, eine riesige Hilfe,
wenn die Aufgabenstellung klarer wäre und wenn wir Dich und Deine Kenntnisse und Fähigkeiten
besser einschätzen könnten.
Das SPS-Forum mit so vielen idealistischen Mitgliedern ist eine feine Sache, allerdings
funktioniert das Helfen nur bei konstruktiver
Mitarbeit der Fragesteller.
Sorry chefren_new, aber das mußte ich loswerden.
Ach ja: Danke dafür, daß Du den
Button gefunden und benutzt hast.
Sehr viele Fragesteller, deren EP mit "Ich wäre für jede Hilfe dankbar" endet, finden den
Button komischerweise nicht.
"Ich habe fertig!"
Gruß
PN/DP